基于Zedboard的視頻圖像處理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
基于Zedboard的視頻圖像處理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
基于Zedboard的視頻圖像處理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
基于Zedboard的視頻圖像處理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
基于Zedboard的視頻圖像處理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩45頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

本科畢業(yè)設(shè)計(jì)題目基于Zedboard的視頻圖像處理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)英文題目DesignandImplementationofZedboardBasedVideoImageProcessingSystem2021年4月

2021年4月

中文摘要隨著計(jì)算機(jī)技術(shù)和人工智能技術(shù)的發(fā)展,視頻處理的應(yīng)用領(lǐng)域和應(yīng)用需求愈發(fā)增長(zhǎng),高清海量的數(shù)據(jù)對(duì)末端處理器和智能算法提出更高要求,利用FPGA或者ARM技術(shù)完成實(shí)時(shí)圖像處理是研究的熱點(diǎn),本文以Xilinx(賽靈思)公司的zynq-7000芯片作為主控芯片,展開了圖像處理的實(shí)時(shí)性研究。本文主要分為兩個(gè)部分,第一個(gè)部分是是針對(duì)軟硬件協(xié)同設(shè)計(jì)對(duì)視頻直通系統(tǒng)進(jìn)行實(shí)現(xiàn);第二個(gè)部分主要是在系統(tǒng)實(shí)現(xiàn)的基礎(chǔ)上增加新的算法,實(shí)現(xiàn)視頻處理的多種不同功能。對(duì)于第一部分本文協(xié)調(diào)分配軟硬件內(nèi)容,對(duì)于硬件部分,其主要負(fù)責(zé)視頻的采集,視頻的處理,視頻的顯示。對(duì)于軟件部分則主要是對(duì)整個(gè)系統(tǒng)各個(gè)ip核進(jìn)行初始化操作以及調(diào)度,并且通過(guò)設(shè)計(jì)使系統(tǒng)錯(cuò)誤信息通過(guò)uart串口進(jìn)行輸出。第二部分主要是針對(duì)硬件的視頻處理部分進(jìn)行改進(jìn),本文在實(shí)現(xiàn)的基礎(chǔ)上添加了邊緣檢測(cè)模塊以及濾波模塊。最終本次實(shí)驗(yàn)通過(guò)vivado作為開發(fā)軟件,進(jìn)行硬件電路的搭建,通過(guò)SDK進(jìn)行軟件算法的編寫,完成了基于zedboard的視頻圖像采集系統(tǒng)。并且在實(shí)現(xiàn)的基礎(chǔ)上進(jìn)行進(jìn)一步的開發(fā),通過(guò)systemgenerator搭建邊緣檢測(cè)模塊,生成ip核對(duì)系統(tǒng)進(jìn)行改進(jìn),實(shí)現(xiàn)了基于zedboard的視頻圖像邊緣檢測(cè)。關(guān)鍵詞:systemgenerator;軟硬件協(xié)同設(shè)計(jì);邊緣檢測(cè);zedboard

AbstractWiththedevelopmentofcomputertechnologyandartificialintelligencetechnology,theapplicationfieldandapplicationdemandofvideoprocessingisgrowingincreasingly,thehighdemandforthemassofhigh-definitiondataonterminalprocessorsandintelligentalgorithmsisincreasing.TheapplicationofFPGAorARMtechnologyonreal-timeimageprocessingisahottopicofresearch.ThisarticlebasedonXilinxcompany'szynq-7000chipasthemaincontrolchip,developsthestudyonreal-timeofimageprocessing.Thispaperisdividedintotwoparts.Thefirstpartisthehardwareandsoftwareco-designofthevideopass-throughsystem,andthesecondpartismainlybasedontheimplementedsystemtoaddnewalgorithmsthentoachieveavarietyofdifferentfunctionsofvideoprocessing.Forthefirstpartofthisarticle,itistocoordinatetheallocationofhardwareandsoftwarecontent.Forthehardwarepart,itmainlyincludesvideocapture,videoprocessing,videodisplay.Forthesoftwarepart,theinitializationoperationandschedulingofeachipcoreofthewholesystemismainlycarriedout,andthesystemerrormessageisoutputthroughtheuartserialportifdesignedwell.Thesecondpartismainlyforthehardwarevideoprocessingpart.Thispaperaddstheedgedetectionmoduleandfilteringmoduleintothissystem.Finally,theexperimentusedVivadoasadevelopmentsoftwarewherethehardwarecircuitisconstructed.AndthesoftwarealgorithmiswrittenbySDK.Thenthevideoimageacquisitionsystembasedonzedboardiscompleted.Onthebasisoftherealization,furtherdevelopmentiscarriedout.Theedgedetectionmoduleisbuiltbysystemgenerator,whoseipcorecanbeaddedintothissystemtoimprove.Finally,theedgedetectionofvideoimagebasedonzedboardisrealized.Keywords:systemgenerator,hardwareandsoftwareco-design,edgedetection,zedboard目錄TOC\o"1-2"\h\u304301緒論 緒論課題研究意義在人們?nèi)粘I钪?,視覺(jué)是我們得到與外界交互最最要的方式,且大腦對(duì)視覺(jué)信息吸收和敏感程度也是最高。而由于科技的不斷發(fā)展,電力行業(yè)、監(jiān)測(cè)行業(yè)、交通行業(yè)等,對(duì)安全監(jiān)控的要求也隨之增加。視頻能否有效的傳輸,傳輸?shù)馁|(zhì)量是否能夠有效的還原,傳輸距離是否足夠遠(yuǎn),傳輸?shù)难舆t是否能足夠小等因素都需要解決。并且目前圖像處理,人臉識(shí)別,模式識(shí)別,雙目算法等的流行,以及在國(guó)防,科學(xué)等高精尖領(lǐng)域?qū)σ曨l處理技術(shù)的要求也變得更高,因此以往采用CCD捕捉圖像的方法越來(lái)越無(wú)法滿足目前的需要。對(duì)于實(shí)時(shí)高速的采集,以及結(jié)果采集的處理有了更高一步的要求。在超大規(guī)?;A(chǔ)電路問(wèn)世以后,嵌入式的視頻圖像采集系統(tǒng)可以較好地滿足以上要求。除此以外,因?yàn)榍度胧较到y(tǒng)所具有的特性,使其具有體量小,易交互,成本低,穩(wěn)定性強(qiáng)等優(yōu)點(diǎn)。因此本實(shí)驗(yàn)將采用基于FPGA的zynq-7000芯片對(duì)視頻進(jìn)行采集。由于FPGA具有靈活易操作的特點(diǎn),并且可以在不改變硬件平臺(tái)的情況下,針對(duì)不同的要求對(duì)系統(tǒng)進(jìn)行修改,因此具有非常強(qiáng)大的適應(yīng)性。且zynq-7000芯片具有相當(dāng)高的集成度,一定程度上使軟件的開發(fā)難度下降,即軟硬件同時(shí)可編程,并且該芯片是ARM+FPGA結(jié)構(gòu)組成的,充分發(fā)揮了兩者的優(yōu)勢(shì),即兼容性能和低功耗于一體,并且擴(kuò)展和開發(fā)升級(jí)較為方便,節(jié)省掉了主機(jī)與從機(jī)之間的通訊總線,加快了通訊速度。對(duì)于人們對(duì)高清甚至超清視頻的追求、分辨率成為一個(gè)優(yōu)秀視頻采集系統(tǒng)的關(guān)鍵性能指標(biāo),分辨率越高一個(gè)視頻就越清晰。目前在市面上流通的相機(jī)分辨率大概從640*480到2592*1944不等。相機(jī)的分辨率越高那么相應(yīng)的傳輸數(shù)據(jù)的量就會(huì)越大,這些數(shù)據(jù)量的變化對(duì)硬件要求將變得異常巨大,對(duì)于整個(gè)系統(tǒng)的要求的更為嚴(yán)苛。Zedboard具有多種視頻輸出方式,如:1080pHDMI,8-bitVGA,128x32OLED,因此可以應(yīng)用在很多型號(hào)的智能相機(jī)開發(fā)中。國(guó)內(nèi)外研究現(xiàn)狀國(guó)外發(fā)展?fàn)顩r對(duì)于視頻采集技術(shù),主要由攝像管,CCD,CMOS等獲取。攝像管通過(guò)內(nèi)部的光敏元件接收輸入的圖像的光信號(hào)進(jìn)而通過(guò)光電轉(zhuǎn)換,將光信號(hào)變?yōu)殡娦盘?hào);通過(guò)電信號(hào)的形式將光信息存儲(chǔ)在系統(tǒng)存儲(chǔ)器中;最終通過(guò)電子槍產(chǎn)生的電子束全面掃描該儲(chǔ)存的電荷完成電荷轉(zhuǎn)移。CCD這種半導(dǎo)體器件,它可以接收光信號(hào),轉(zhuǎn)換成模擬信號(hào),模擬信號(hào)放大后經(jīng)過(guò)A/D轉(zhuǎn)換,成為數(shù)字信號(hào)。而CMOS是將外界信號(hào)轉(zhuǎn)換成電能通過(guò)邏輯運(yùn)算核A/D轉(zhuǎn)換最終輸出。而對(duì)于圖像實(shí)時(shí)處理主要的硬件平臺(tái)主要是從一開始的計(jì)算機(jī),isp和pci等,隨著數(shù)字電路的發(fā)展DSP技術(shù)開始興起。如今的處理芯片主要為單核處理器;同構(gòu)多核處理器;異構(gòu)多核處理器,詳見(jiàn)表1-1,在如今視頻圖像處理最具有代表性的應(yīng)用可以說(shuō)是智能相機(jī)了。在國(guó)外,該技術(shù)發(fā)展較早,且由于智能相機(jī),智能攝像頭等產(chǎn)品的大量需要。美國(guó)康耐視公司(Cognex)的智能相機(jī)在工業(yè)應(yīng)用場(chǎng)合也享有很高的國(guó)際知名度,在生產(chǎn)車間的流水線中,由于其良好的抗噪和防塵能力,且較高的靈活性,無(wú)論生產(chǎn)速度多塊,測(cè)量精度多高,配備無(wú)接縫式的應(yīng)用框架和網(wǎng)絡(luò)環(huán)境,都可以實(shí)現(xiàn)。表1-1處理芯片的分類單核處理器ARM、PowerPC、DSP以及純FPGA硬件同構(gòu)多核處理器Inteli3、i5、i7以及ARMCortex-A9等異構(gòu)多核處理器ARM+DSP、ARM+FPGA等國(guó)內(nèi)發(fā)展?fàn)顩r在國(guó)內(nèi),改革開放以來(lái),我工業(yè)化不斷進(jìn)步,資源和人力成本也不斷增加,同時(shí)科技也正在飛速發(fā)展,由于這些原因,不斷促使著工業(yè)自動(dòng)化進(jìn)程的加快,急需有較好性能的自動(dòng)化系統(tǒng),智能化系統(tǒng)出現(xiàn)在工業(yè)生產(chǎn)以及生活領(lǐng)域。因此,近些年圖像處理,機(jī)器人視覺(jué)以及模式識(shí)別等在國(guó)內(nèi)有較高的人氣,并且國(guó)家,企業(yè)和相關(guān)科研院所在有關(guān)領(lǐng)域投入了大量的人力、物力,以確保盡快研發(fā)適應(yīng)當(dāng)前需要的機(jī)器視覺(jué)產(chǎn)品。但由于國(guó)內(nèi)該領(lǐng)域起步較晚,底子較薄,目前發(fā)展水平仍距國(guó)外相關(guān)產(chǎn)業(yè)有一定差距,有較大的進(jìn)步空間。因此,國(guó)內(nèi)工業(yè)智能相機(jī)的發(fā)展仍需要時(shí)間,仍需要大家的不懈努力,這樣才能真正從低端逐步轉(zhuǎn)向高端。本課題的研究?jī)?nèi)容、方法、手段及預(yù)期成果課題研究?jī)?nèi)容本實(shí)驗(yàn)主要包括視頻圖像采集,視頻圖像的處理以及視頻圖像實(shí)時(shí)顯示。其中視頻采集部分主要是將采集到的視頻數(shù)據(jù)信號(hào)轉(zhuǎn)變成可以被fpga處理的信號(hào)類型以方便后續(xù)操作;視頻處理部分主要是一些算法的設(shè)計(jì),其中可以包括伽馬矯正或者邊緣檢測(cè)等等;顯示部分主要是對(duì)數(shù)據(jù)輸出做輸出與處理后直接驅(qū)動(dòng)顯示器顯示..本研究?jī)?nèi)容使用的是Xilinx開發(fā)的全可編程SoC系列。主要是使用zynq-7000的開發(fā)板,在zedbaord上進(jìn)行視頻圖像采集系統(tǒng)設(shè)計(jì)開發(fā)。在zynq的邏輯可編程硬件部分,需要先設(shè)計(jì)和配置攝像頭的ip核,之后對(duì)采集得到的數(shù)據(jù)進(jìn)行預(yù)處理和存取功能的實(shí)現(xiàn),并且在需要的情況下可以設(shè)計(jì)視頻處理通道的IP核設(shè)計(jì),最后通過(guò)VGA接口連接到顯示屏上進(jìn)行顯示。而對(duì)于軟件部分,主要是對(duì)硬件部分進(jìn)行控制和初始化。最后在實(shí)現(xiàn)圖像視頻采集的基礎(chǔ)上可以對(duì)得到的圖像進(jìn)行二次圖像處理通過(guò)調(diào)整圖像的各項(xiàng)系數(shù),實(shí)現(xiàn)圖像的曝光,改變對(duì)比色等使得到的圖像更為美觀,甚至可以添加去霧算法,紅外檢測(cè)裝置等實(shí)現(xiàn)更加復(fù)雜,多樣的要求,以實(shí)現(xiàn)美顏,智能識(shí)別,攝像頭去霧等任務(wù)。課題研究方法及手段為了實(shí)現(xiàn)以上要求需要對(duì)硬件部分和軟件部分分別進(jìn)行設(shè)計(jì)。為進(jìn)行該系統(tǒng)的設(shè)計(jì),我們使用賽靈思針對(duì)Zynq系列芯片推出的Vivado軟件來(lái)設(shè)計(jì),可以設(shè)計(jì)通過(guò)MATLAB輸入,轉(zhuǎn)化為verilog語(yǔ)言,分別作為HDL硬件描述語(yǔ)言和SDK軟件描述語(yǔ)言。對(duì)于視頻信息的讀取我們采用Pcam-5C圖像傳感器,該傳感器主要是由OV5640組成。對(duì)于視頻輸出部分我們采用zedboard上自帶的VGA模塊,連接到VGA顯示器上。課題預(yù)期成果通過(guò)合理的設(shè)計(jì)使該系統(tǒng)能夠成功地在zedboard上搭建相應(yīng)的軟硬件系統(tǒng)以實(shí)現(xiàn)圖像信息采集,并且以較快的速度完成信息的處理、顯示。并且可以通過(guò)uart得到一些程序運(yùn)行過(guò)程中的錯(cuò)誤信息?;趜edboard的軟硬件協(xié)同設(shè)計(jì)開發(fā)平臺(tái)的介紹zynq芯片由于目前的處理器對(duì)信號(hào)處理的能力還不達(dá)不到我們所需求的程度,且多芯片方案搭建出來(lái)的處理器系統(tǒng)成本高、功耗大、占用空間較多、不利于縮小外形、且更新?lián)Q代的能力也會(huì)受到一定的限制、在面臨技術(shù)快速革新的時(shí)代,這樣子的方案很難提供更高的優(yōu)勢(shì)。最終賽靈思公司開發(fā)出了zynq-7000芯片,以應(yīng)對(duì)這些所面臨的問(wèn)題。Zynq-7000內(nèi)部具有fpga部分和arm部分,其中的arm是一個(gè)完整的系統(tǒng),內(nèi)部包含雙核Cortex-TM-A9處理器,并且內(nèi)部還集成了存儲(chǔ)器和DDR等外設(shè)。而Fpga的部分能對(duì)系統(tǒng)進(jìn)行外擴(kuò),使該處理器有良好的擴(kuò)展性和較高的處理速度,最高達(dá)100Gb/s。并且為了開發(fā)方便Xinlink公司為zynq系列芯片定義了大量的IP核,工程師可以通過(guò)Vivado軟件對(duì)他們進(jìn)行調(diào)用。為了實(shí)現(xiàn)本實(shí)驗(yàn)的內(nèi)容,zynq-7000自然就成為這個(gè)實(shí)驗(yàn)最重要的一個(gè)器件。我們可以在其pl部分設(shè)計(jì)視頻的輸入通道,視頻處理模塊,視頻的顯示通道等,并且再ps部分實(shí)現(xiàn)各個(gè)模塊的初始化并提供相應(yīng)的時(shí)序。ZedBoard開發(fā)板面向高校和大眾,賽靈思公司開發(fā)了一個(gè)低成本的zynq開發(fā)板zedboard。其高性價(jià)比使得其再高校實(shí)驗(yàn)學(xué)習(xí)中備受青睞。Zedboard板載外設(shè)主要包括:(1)8個(gè)LED燈。(2)7個(gè)GPIO接口按鍵。(3)8個(gè)DIP封裝的用戶開關(guān)。(4)OLED。(5)3個(gè)MicroUSB接口。(6)4個(gè)3.5mm的標(biāo)準(zhǔn)音頻接口。(7)VGA接口,zedboard使用了標(biāo)準(zhǔn)的15洞VGA接口,其中14根線為12位彩色信號(hào)線和兩根同步信號(hào)線。(8)HDMI接口,可以提供高清的數(shù)字視頻/音頻。(9)10/100/1000兆網(wǎng)口Zedboard擴(kuò)展外設(shè)主要包括:(1)外擴(kuò)FMC插槽(2)外擴(kuò)AMS插座(3)5個(gè)Pmod兼容插座,其中四個(gè)連接到zynq-7000的PL部分,另外一個(gè)連接到zynq-7000的PS部分。軟硬件協(xié)同設(shè)計(jì)軟硬件協(xié)同設(shè)計(jì)的概念在傳統(tǒng)的系統(tǒng)開放方法上,由于各種的限制,使工程師在設(shè)計(jì)系統(tǒng)時(shí)一般將硬件電路和軟件部分分為兩部分分別開發(fā)設(shè)計(jì),最后再將系統(tǒng)集成。這樣設(shè)計(jì)雖然系統(tǒng)簡(jiǎn)單,但是由于電子集成電路發(fā)展迅速,傳統(tǒng)的開發(fā)方法很快便面臨著難以擴(kuò)展、難以設(shè)計(jì)、快速性較差、集成性較低等缺點(diǎn)。因此為了突破傳統(tǒng)設(shè)計(jì)方法的局限性,人們開始探索軟硬件協(xié)同設(shè)計(jì)方法。軟硬件協(xié)同的設(shè)計(jì)與以硬件優(yōu)先的傳統(tǒng)方法不同,它是以系統(tǒng)為目標(biāo),這樣可以很大限度的利用現(xiàn)有資源得到系統(tǒng)的最大開發(fā)效用,如果設(shè)計(jì)合理,這種方法可以使系統(tǒng)工作在最理想的狀態(tài)以最大化的利用資源。軟硬件設(shè)計(jì)方法流程如圖2-1所示,一般是先考慮硬件,自上而下的方式進(jìn)行設(shè)計(jì)的,設(shè)計(jì)的過(guò)程中我們應(yīng)以模塊為單位優(yōu)先設(shè)計(jì)。由于在設(shè)計(jì)時(shí)先考慮硬件其次再估計(jì)軟件的設(shè)計(jì),這樣子的設(shè)計(jì)會(huì)使設(shè)計(jì)的過(guò)程中受到空間的約束,要么對(duì)硬件進(jìn)行優(yōu)化,要么對(duì)軟件進(jìn)行優(yōu)化,這樣做很難使軟硬件的資源得到最高效率的應(yīng)用。在圖2-2中可以看到,相比傳統(tǒng)設(shè)計(jì)方法,軟硬件協(xié)同設(shè)計(jì)的亮點(diǎn)集中于設(shè)計(jì)的流程,在劃分軟硬件任務(wù)后,對(duì)軟件和硬件以及軟硬件接口進(jìn)行設(shè)計(jì)和分配,從而能夠更好的協(xié)調(diào)軟硬設(shè)備。從而極大的提高資源利用效率。圖2-1傳統(tǒng)設(shè)計(jì)方法流程圖圖2-2軟硬件協(xié)同設(shè)計(jì)流程圖軟硬件協(xié)同設(shè)計(jì)方法可以分為以下幾個(gè)步驟:分割:首先由系統(tǒng)的要求出發(fā),完成對(duì)硬件和軟件之間的分工。軟件部分交給ARM完成,硬件部分交給FPGA完成。這兩種實(shí)現(xiàn)方式各有優(yōu)劣:軟件實(shí)現(xiàn)的開發(fā)難度小,但是性能較低,運(yùn)算速度較慢;由硬件實(shí)現(xiàn)部分軟件設(shè)計(jì)的功能則可以很大程度上的降低CPU負(fù)荷、提高運(yùn)算速度,但是,F(xiàn)PGA的設(shè)計(jì)相對(duì)ARM的實(shí)現(xiàn)難度更大、設(shè)計(jì)周期較長(zhǎng)等。因此在完成分割任務(wù)時(shí)應(yīng)該綜合考慮這兩部分的優(yōu)劣。定位:其次在實(shí)現(xiàn)這個(gè)系統(tǒng)是,由于實(shí)際過(guò)程中,可能會(huì)發(fā)現(xiàn)軟件實(shí)現(xiàn)的部分性能可能不夠好,我們可以考慮由FPGA實(shí)現(xiàn)進(jìn)行代替,并且如果原先由硬件電路實(shí)現(xiàn)的部分可移植性較差,且開發(fā)時(shí)間較長(zhǎng),我們可以考慮將其改為由ARM執(zhí)行這部分程序。調(diào)度:由于軟硬件協(xié)同設(shè)計(jì)使硬件和軟件之間應(yīng)該有一個(gè)合理的通信,使整個(gè)系統(tǒng)可以達(dá)到同步且可以得到合理的調(diào)度,此時(shí)若對(duì)整個(gè)系統(tǒng)調(diào)度,主要是由AXI接口對(duì)其進(jìn)行配置。映射:主要分為硬件和軟件部分,硬件部分對(duì)應(yīng)為系統(tǒng)的pl,軟件部分對(duì)應(yīng)系統(tǒng)的ps。Pl由fpga完成,ps由arm完成。硬件邏輯設(shè)計(jì)該實(shí)驗(yàn)的目標(biāo)為基于Xilink開發(fā)的全可編程SoC系列的Zynq-7000芯片,在zedboard上進(jìn)行視頻圖像采集系統(tǒng)的設(shè)計(jì)和開發(fā)。利用兩個(gè)Pcam5C攝像頭采集兩路高清視頻,之后通過(guò)FMC-Pcam適配器連接到FMC擴(kuò)展接口上,之后通過(guò)板載VGA對(duì)視頻進(jìn)行輸出。高清攝像頭采集和處理的過(guò)程在本實(shí)驗(yàn)中主要分為以下幾個(gè)部分,視頻圖像的實(shí)時(shí)獲取、視頻圖像的處理以及視頻圖像的實(shí)時(shí)顯示。下面將分別介紹這幾部分的設(shè)計(jì)。視頻圖像的采集模塊由于本實(shí)驗(yàn)為四目攝像頭的視頻采集技術(shù),而zedboard上只有一路VGA接口,要想連接四個(gè)攝像頭則需要對(duì)其進(jìn)行擴(kuò)展,在本實(shí)驗(yàn)中采用FMCPcam適配器在FMC插槽中進(jìn)行外設(shè)的擴(kuò)展。FMCPcam適配器有兩種版本,分別為雙接口和四接口相機(jī)連接接口,在內(nèi)部有對(duì)MIPI到LVDSd電平轉(zhuǎn)換器,可以使攝像頭的傳來(lái)的高速視頻信號(hào)轉(zhuǎn)化為開發(fā)板能夠處理的電平信號(hào)。其應(yīng)用主要為將低成本的相機(jī)連接至高速開發(fā)板上,對(duì)多個(gè)相機(jī)同時(shí)進(jìn)行配置。為開發(fā)人員在視頻處理方面帶來(lái)了很大程度的便利。圖像傳感器本實(shí)驗(yàn)在攝像頭的選取上選用Pcam5C彩色攝像頭,其內(nèi)部包括OV5640彩色圖像傳感器和MIPI圖像傳感器接口,可以高速傳輸視頻信號(hào)并與zynq兼容。在開發(fā)過(guò)程中只需要建立相應(yīng)的MIPI的ip核便可以將圖像信息轉(zhuǎn)換成可以在fpga內(nèi)部進(jìn)行處理的高速視頻流信號(hào)。圖像傳感器正是通過(guò)對(duì)外部光信號(hào)在感光面上的接收,并按照一定的比例轉(zhuǎn)換成電信號(hào),并傳輸?shù)较到y(tǒng)中。通過(guò)圖像傳感器可以非常方便的得到外部的圖像信息,但是與此同時(shí)由于得到的光信號(hào)和電信號(hào)是呈線性比例轉(zhuǎn)換的,然而人眼對(duì)于亮度的觀測(cè)并不是成比例的這就需要在系統(tǒng)的設(shè)計(jì)過(guò)程中對(duì)其進(jìn)行一定程度的調(diào)整,該部分將在3.2.2節(jié)詳細(xì)說(shuō)明。FMC擴(kuò)展插槽以及FMCPcam適配器由于本實(shí)驗(yàn)在需要4個(gè)攝像頭進(jìn)行數(shù)據(jù)采集,而zedboard的只有1個(gè)VGA和1和HDMI接口,因此我們嘗試對(duì)zedboard擴(kuò)展外設(shè)。在此我們通過(guò)外擴(kuò)FMC插槽進(jìn)行出入的擴(kuò)展。在本實(shí)驗(yàn)中采用FMCPcam適配器進(jìn)行對(duì)zedboaed的擴(kuò)展。FMC-Pcam適配器其接口為CSI-2,將相機(jī)添加到zedboard。FMC-Pcam適配器可以和Pcam-5C兼容,目前發(fā)布的有兩種版本,一種是連接兩個(gè)攝像機(jī),另一種是連接四個(gè)攝像機(jī)。FMCPcam適配器為了得到LVDS電壓需要MIPI協(xié)議。兼容各種VADJ電壓。MIPI接口圖3-1視頻采集結(jié)構(gòu)由圖3-1可知通過(guò)Pcam-5c的高速視頻接口要可以在zynq內(nèi)進(jìn)行處理需要對(duì)其進(jìn)行數(shù)據(jù)轉(zhuǎn)換,將高速視頻數(shù)據(jù)通過(guò)MIPI_CSI進(jìn)行處理使其轉(zhuǎn)化為可以在處理器中進(jìn)行處理的電平信號(hào)。MIPI是專為移動(dòng)應(yīng)用定制的開發(fā)標(biāo)準(zhǔn),可以應(yīng)用在多種移動(dòng)設(shè)備的視頻接受、顯示以及音頻的處理,將其接口標(biāo)準(zhǔn)化,從而減少設(shè)計(jì)的復(fù)雜性。MIPI有一套協(xié)議和標(biāo)準(zhǔn),其中用于視頻的接受所用到的協(xié)議為CSI協(xié)議,CSI定義了處理器和攝像頭之間的高速串口。CSI協(xié)議分為三層,分別為應(yīng)用層、協(xié)議層、物理層。在應(yīng)用層方面,主要是各種算法模塊。協(xié)議層又包括組包層、協(xié)議層、通道管理層,其中組包層主要是將上層的數(shù)據(jù)進(jìn)行打包、將其切割成8比特?cái)?shù)據(jù)流。協(xié)議層是在該數(shù)據(jù)流上加入包頭包尾、將生成的數(shù)據(jù)流按照一定的方式來(lái)統(tǒng)一管理。物理層定義了傳輸介質(zhì)、電路信號(hào)電氣特征和時(shí)序。整個(gè)協(xié)議的傳輸過(guò)程如圖3-2所示。圖3-2MIPI協(xié)議結(jié)構(gòu)視頻圖像的處理模塊在視頻數(shù)據(jù)流傳入之后,為了達(dá)到各種視頻效果需要對(duì)其進(jìn)行視頻處理,視頻處理包括濾波、伽馬矯正、邊緣檢測(cè)等等。并且通過(guò)攝像頭得到的視頻數(shù)據(jù)一般是BayerRGB,因此需要對(duì)其格式進(jìn)行轉(zhuǎn)換變?yōu)镽GB格式。在本實(shí)驗(yàn)中由于需要在一個(gè)輸出顯示上輸出4個(gè)采集到的視頻圖像,因此需要對(duì)得到的視頻數(shù)據(jù)進(jìn)行分割,使其分別占據(jù)顯示器的一部分。在視頻處理模塊上,本是要主要解決一下幾個(gè)問(wèn)題:圖像格式轉(zhuǎn)換、伽馬矯正、圖像縮放。整個(gè)流程如圖3-3所示。圖3-3視頻圖像處理模塊流程圖圖像格式轉(zhuǎn)換在Pcam-5c中得到的圖像格式為BayerRGB這種圖像格式一般不能直接輸出,需要進(jìn)行濾波和伽馬矯正后才能最后得到理想的輸出。在此首先對(duì)其進(jìn)行視頻格式轉(zhuǎn)換,將BayerRGB轉(zhuǎn)化為RGB格式。和我們所認(rèn)識(shí)到的圖像不同,通過(guò)OV5640得到的圖像每個(gè)像素點(diǎn)只有一個(gè)顏色通道,該顏色通道代表紅、綠、藍(lán)中的一種,但是彩色圖像都是由這三種顏色進(jìn)行疊加產(chǎn)生的,即一個(gè)像素點(diǎn)包含三個(gè)顏色取值為0-255。在Bayer格式的圖像中由于這樣的圖像缺少一定程度的顏色信息,每個(gè)位置只有一個(gè)顏色可以獲取,這就需要我們?nèi)?fù)原另外兩種顏色,即需要通過(guò)相鄰像素點(diǎn)之間插值來(lái)估算。表3-1Bayer格式示意RGRGRGGBGBGBRGRGRGGBGBGBRGRGRGGBGBGB在表3-2中可以看到該圖像格式為奇數(shù)行只有R,G分量,偶數(shù)行只有R,G分量,奇數(shù)列只有G,R分量,偶數(shù)列只有B,G分量。在Bayer格式中G顏色分量為其他兩種顏色分量的兩倍,這是人眼對(duì)綠色更為敏感,并且如果G分量采用較好的插值方式,也可以一定程度上改善R,B顏色分量的效果。為了將表3-2的Bayer格式圖像轉(zhuǎn)化為RGN格式,我們采用雙線性插值法。其原理為,將每個(gè)像素點(diǎn)所缺少的顏色信息由其旁邊鄰域內(nèi)的像素顏色信息補(bǔ)全。其插值具體分為兩種情況,即對(duì)G的插值和對(duì)B或R的插值。表3-2對(duì)B進(jìn)行插值R1G1R2G2BG3R3G4R4表3-3對(duì)G進(jìn)行插值G1B1G2R1GR2G3B2G4對(duì)B進(jìn)行插值則需要對(duì)其鄰域內(nèi)其他顏色分量取平均值。即:對(duì)G進(jìn)行插值公式為:經(jīng)過(guò)這種插值方法的處理一個(gè)像素塊的顏色信息就變?yōu)榱薘’,G’,B’,即實(shí)現(xiàn)了顏色格式的轉(zhuǎn)變。這種插值方式較為簡(jiǎn)單,但是由于圖像邊界的像素的鄰域缺少一定的像素,這部分像素的需要另外進(jìn)行處理,在算法設(shè)計(jì)時(shí)可以進(jìn)行改進(jìn)。伽馬矯正對(duì)于硬件設(shè)備而言,傳感器對(duì)光的感應(yīng)是呈線性關(guān)系的,有多少倍的光子被傳感器接收,就會(huì)產(chǎn)生多少倍的電子信號(hào)。但是,人對(duì)光的感知并不是呈線性的關(guān)系,人眼對(duì)于暗色調(diào)的反應(yīng)更為靈敏。這是由于對(duì)于純黑物體反射率定位0,而純白物體反射率定位1,則中灰物體的反射率應(yīng)為0.5,但是實(shí)際上并不是這樣,經(jīng)過(guò)測(cè)試中灰的反射率大概在0.2左右。伽馬矯正的公式為:上式中,分別為輸入光照和輸出光照,根據(jù)經(jīng)驗(yàn)式可以得到gamma值一般取為2.2。圖3-4伽馬矯正示意圖如下圖3-5所示,可以看到經(jīng)過(guò)伽馬矯正之后的圖像將表現(xiàn)的更亮。圖3-5伽馬矯正效果對(duì)比圖圖像縮放由于四目攝像頭要在同一塊顯示屏上進(jìn)行顯示,所以對(duì)攝像頭得到的圖像數(shù)據(jù)要進(jìn)行一定程度上的縮放,以方便輸出顯示。圖像縮放算法的實(shí)現(xiàn)主要是通過(guò)原來(lái)的像素值,通過(guò)和鄰域內(nèi)其他像素的線性變化得到輸出的像素值,縮放的大小和所選鄰域的大小有關(guān)。我們一般選用雙線性插值法來(lái)得到待求像素。圖3-6線性插值原理由圖3-6可得,假設(shè)Q11,Q12,Q21,Q22四個(gè)像素點(diǎn)為已知像素點(diǎn),為求得R1像素點(diǎn)數(shù)據(jù),可以將Q11和Q21通過(guò)插值來(lái)求得,同理求得R2數(shù)據(jù),再通過(guò)R1,R2數(shù)據(jù)線性插值得到P的像素?cái)?shù)據(jù)。綜上所述,可以得到雙線性插值的公式為:這種方法是在圖像縮放中較普遍的方法,效果比臨近插值好,計(jì)算量和運(yùn)算速度也相對(duì)較小。但是缺點(diǎn)是,由于考慮到該方法為線性插值,在圖像顏色變化較大的邊界,縮放后將會(huì)變得平滑。VDMA模塊VDMA可以為內(nèi)部zynq與外部?jī)?nèi)存之間提供一條高速的數(shù)據(jù)存取通道。在本例中通過(guò)VDMA構(gòu)建硬件部分的視頻流到DDR存儲(chǔ)器之間的數(shù)據(jù)緩存通道。VDMA的存在可以使得雙緩沖或多緩沖機(jī)制的實(shí)現(xiàn)變得相對(duì)簡(jiǎn)單,并且VDMA自身也可以進(jìn)行數(shù)據(jù)的存取功能,因此在基于各種FPGA的圖像處理、視頻處理等問(wèn)題上常常出現(xiàn)。VDMA有兩種接口模式,一種是寫通道,它可以將高速視頻流數(shù)據(jù)流寫入PS中,另一種是讀通道,它可以從ps中讀取數(shù)據(jù),并將數(shù)據(jù)格式改為AXI-Stream輸出。在本實(shí)驗(yàn)中考慮到視頻圖像地撕裂,我們選用5緩沖機(jī)制進(jìn)行設(shè)計(jì)。VDMA模塊的主要寄存器如表3-4所示:表3-4VDMA主要配置寄存器地址偏移(十六進(jìn)制)名稱備注00MM2S_DMACRMM2SDMA控制寄存器04MM2S_DMASRMM2SDMA狀態(tài)寄存器50MM2S_VSIZEMM2S傳輸幀豎直大小54MM2S_HSIZEMM2S傳輸幀水平大小58MM2S_FRMDLY_STRIDEMM2S傳輸幀延時(shí)5C~98MM2S_START_ADDRESSMM2S傳輸起始地址AC~E8S2MM_START_ADDRESSS2MM傳輸起始地址A0S2MM_VSIZES2MM傳輸幀豎直大小A4S2MM_HSIZES2MM傳輸幀水平大小A8S2MM_FRMDLY_STRIDES2MM傳輸幀延時(shí)在該實(shí)驗(yàn)中,為了節(jié)省硬件空間我們可以設(shè)計(jì)一個(gè)雙端口VDMA和一個(gè)單端口VDMA,將VDMA_A設(shè)置為雙端口,用來(lái)完成軟件和硬件之間的通訊,以及PL之間的通訊,將VDMA_B設(shè)置為單端口,只用來(lái)完成硬件和軟件之間的數(shù)據(jù)交換。具體數(shù)據(jù)交換框圖如圖3-7所示:圖3-7VDMA數(shù)據(jù)交換框圖AXI總線AXI是一種協(xié)議,該協(xié)議最初是AXI3,是由ARM公司提出,是當(dāng)時(shí)AMBA3.0的其中一部分。而AXI4作為AXI協(xié)議的第二版,是2010年該公司發(fā)布的AMB4.0協(xié)議中的一部分。AXI4包含3種類型的接口如下表所示:表3-5AXI4類型接口類型名稱功能AXI4主要面向高性能地址映射通信的需求AXI4-Lite是一個(gè)輕量級(jí)的,適用于吞吐量較小的地址映射通信總線AXI4-Stream面向高速數(shù)據(jù)流傳輸通道類型寫地址通道主設(shè)備向從設(shè)備傳輸寫入地址的通道寫數(shù)據(jù)通道主設(shè)備向從設(shè)備傳輸數(shù)據(jù)的通道寫響應(yīng)通道傳輸完成的信號(hào)傳遞通道讀地址通道主設(shè)備讀取從設(shè)備數(shù)據(jù)的地址通道讀數(shù)據(jù)通道主設(shè)備讀取從設(shè)備數(shù)據(jù)的通道AXI模型寫模型主設(shè)備將地址信息傳輸?shù)綇脑O(shè)備內(nèi),之后開始寫入數(shù)據(jù),當(dāng)數(shù)據(jù)完成之后,從設(shè)備通過(guò)寫響應(yīng)通道向主設(shè)備發(fā)送信號(hào)表示傳輸完成。讀模型主設(shè)備現(xiàn)象從設(shè)備發(fā)送地址信號(hào),之后從設(shè)備再將數(shù)據(jù)寫入主設(shè)備。AXI協(xié)議其實(shí)是一個(gè)可以點(diǎn)對(duì)點(diǎn)的主/從接口技術(shù)協(xié)議,但是當(dāng)多個(gè)硬件ip需要進(jìn)行數(shù)據(jù)間的傳輸時(shí),我們可以使用AXIInterconnect模塊,這個(gè)系統(tǒng)模塊也叫AXI互聯(lián)網(wǎng)絡(luò)矩陣,AXIInterconnect可以實(shí)現(xiàn)多個(gè)主從設(shè)備間的連接。本例中的AXI傳輸就是這種傳輸方式。表3-6Zynq的AXI接口接口類型特點(diǎn)AXI_HP主要是用于PL訪問(wèn)PS上的存儲(chǔ)器。內(nèi)部有讀緩沖和寫緩沖AXI_ACP適合做專業(yè)指令加速器的模塊數(shù)據(jù)接口AXI_GP用于獲取傳感器信號(hào)信息視頻圖像的顯示通過(guò)VDMA中傳出的AXI4-Stream數(shù)據(jù)對(duì)其進(jìn)行處理,先轉(zhuǎn)化為通用視頻格式,之后再轉(zhuǎn)化成VGA可以識(shí)別的數(shù)據(jù),最后通過(guò)zedboard上的VGA接口傳送到顯示器上,以達(dá)到最終視頻顯示的效果??傮w設(shè)計(jì)如圖3-8,VTC提供時(shí)序信息。圖3-8視頻顯示流程圖視頻流數(shù)據(jù)轉(zhuǎn)換在zynq中,由于為了快速且容易的處理視頻數(shù)據(jù)流,VDMA讀取DDR中的數(shù)據(jù)后,由于在zynq中各個(gè)ip核之間的通訊是依靠AXI4-Stream協(xié)議的,因此直接輸出的視頻數(shù)據(jù)格式為AXI4-Stream,這種格式并不能用于直接顯示,、為了得到帶有視頻有效數(shù)據(jù)和視頻時(shí)序信息的數(shù)據(jù)流,我們要對(duì)其進(jìn)行一定的轉(zhuǎn)換,及將其轉(zhuǎn)化為通用視頻模式。在此我們使用AXI4-Streamtovideoout視頻數(shù)據(jù)轉(zhuǎn)換模塊,得到相應(yīng)的信號(hào)會(huì)向VTC提供相應(yīng)的時(shí)序信號(hào),當(dāng)VTC識(shí)別到正確的時(shí)序信號(hào)后,會(huì)對(duì)AXI4-Streamtovideoout進(jìn)行反饋。通過(guò)VTCIP核提供的時(shí)序信號(hào),在AXI4-Streamtovideoout的視頻流接口中將AXI4-Stream格式轉(zhuǎn)化為帶有行場(chǎng)同步信號(hào)與數(shù)據(jù)有效標(biāo)志信號(hào)的數(shù)據(jù)格式。視頻時(shí)序信號(hào)控制器一個(gè)視頻采集處理系統(tǒng),需要相應(yīng)的時(shí)序信號(hào)來(lái)保證視頻信息的同步。視頻時(shí)序信號(hào)控制器(VTC),該IP核可以為VGA,HDMI顯示IP核提供時(shí)序信號(hào),以保證視頻信息的正常輸出。VTC的主要作用是通過(guò)檢測(cè)到的視頻流的Hsync,Vsync以及消隱信號(hào),并生成相應(yīng)的信號(hào)以保證視頻輸出的時(shí)序不會(huì)出錯(cuò),總的來(lái)說(shuō)VTC的作用就在于監(jiān)測(cè)和產(chǎn)生視頻時(shí)序信號(hào),以保證收發(fā)兩端的電子束在掃描過(guò)程中的步調(diào)保持一致。視頻顯示本實(shí)驗(yàn)是通過(guò)VGA進(jìn)行顯示,VGA也叫視頻圖形陣列,是使用類比訊號(hào)的電腦顯示標(biāo)準(zhǔn)。VGA在掃描過(guò)程中主要是通過(guò)逐行掃描的形式,及從第一行開始自左向右開始進(jìn)行掃面,每掃描完一行從最后一個(gè)像素點(diǎn)跳回到下一行的第一個(gè)像素帶你從新開始掃描,當(dāng)掃描完最后一行的最后一個(gè)像素點(diǎn)時(shí),及完成了一幀的掃描。當(dāng)然在傳輸?shù)倪^(guò)程中為了保持視頻數(shù)據(jù)的同步我們一般需要場(chǎng)同步信號(hào)和行同步信號(hào),行同步信號(hào)是在每一行傳輸?shù)倪^(guò)程中為高電平,場(chǎng)同步信號(hào)為在每一幀傳輸?shù)倪^(guò)程中為高電平。但是在實(shí)際應(yīng)用的過(guò)程中會(huì)發(fā)生一個(gè)問(wèn)題:電子束掃描的過(guò)程中在每一行的最后一個(gè)元素跳向下一行的第一個(gè)元素的過(guò)程中,或者是每一幀的最后一個(gè)元素跳向下一幀第一個(gè)元素的過(guò)程中,這個(gè)過(guò)程并不是瞬間完成的在這個(gè)過(guò)程中依然有可能會(huì)發(fā)射電子投射到電子屏幕上,這是我們不希望的結(jié)果,因此我們需要施加消隱信號(hào),消隱信號(hào)高電平時(shí)電子束不再作用,因此我們可以將消隱信號(hào)添加在每行掃描結(jié)束到下一行開始,和每一幀結(jié)束到下一幀開始的過(guò)程中,以保證視頻信息的有效傳輸。因此可以得知,有效的顯示區(qū)域只有在VS和HS同時(shí)有效,且沒(méi)有消隱信號(hào)時(shí)。實(shí)現(xiàn)流程介紹圖3-9系統(tǒng)流程圖根據(jù)本章內(nèi)容在此總體實(shí)現(xiàn)流程,由圖3-9可知,將攝像頭所得視頻數(shù)據(jù)通過(guò)FMCPcam適配器接入FMC擴(kuò)展上得到高速視頻流信息,通過(guò)MIPI協(xié)議將其轉(zhuǎn)化為zedboard能夠處理的視頻流信息,經(jīng)過(guò)一定的視頻處理,如視頻格式轉(zhuǎn)換,伽馬矯正,圖像縮放。最終將視頻數(shù)據(jù)存入VDMA中,通過(guò)AXI4總線將VDMA中的數(shù)據(jù)傳入PS中,進(jìn)而存入DDR3內(nèi),PS可以直接訪問(wèn)DDR3因此,可以在其內(nèi)部對(duì)視頻數(shù)據(jù)進(jìn)行一定的處理,最終通過(guò)AXI4傳送至VDMA中,以AXI-Stream信號(hào)形式傳出,最后對(duì)視頻數(shù)據(jù)格式進(jìn)行轉(zhuǎn)換,并在VGA上顯示。PS部分則是控制各個(gè)IP核的初始化、對(duì)視頻進(jìn)行處理并提供視頻顯示的時(shí)序信號(hào)。系統(tǒng)軟件設(shè)計(jì)軟件開發(fā)工具與FPGA不同,我們?yōu)榱藢?shí)現(xiàn)原硬件之間的交互,除了使用vivado進(jìn)行PL部分的設(shè)計(jì)還需要對(duì)PS端進(jìn)行設(shè)計(jì),以保證其可以控制PL中的各個(gè)IP可以正常運(yùn)行實(shí)現(xiàn)其相應(yīng)的功能。在zynq的設(shè)計(jì)中,對(duì)于ps的編寫主要是基于ARM的,我們可以使用賽靈思的SDK工具對(duì)其進(jìn)行開發(fā),SDK上面集成了一些xilinx開發(fā)過(guò)程中所需要的一部分工具。SDK的功能非常強(qiáng)大也非常方便,在vivado設(shè)計(jì)完成PL部分之后,到處硬件文件之后,SDK會(huì)自動(dòng)分析硬件的結(jié)構(gòu)并且生成相應(yīng)的BSP工具包以方便我們?cè)O(shè)計(jì)。為了方便開發(fā)人員,SDK會(huì)自動(dòng)生成一些相應(yīng)的BSP進(jìn)行輔助設(shè)計(jì),BSP包含了大部分賽靈思提供的IP核驅(qū)動(dòng),這些驅(qū)動(dòng)可以方便我們進(jìn)行系統(tǒng)設(shè)計(jì)。通過(guò)SDK編寫軟件程序分別實(shí)現(xiàn)對(duì)視頻的采集和顯示等功能。軟件設(shè)計(jì)流程圖4-1雙目攝像頭軟件運(yùn)行流程對(duì)于整個(gè)系統(tǒng)的軟件設(shè)計(jì),主要的設(shè)計(jì)流程框圖如圖4-1所示:由上圖可以看到,在該系統(tǒng)一開始,首先是對(duì)其CPU初始化、ARM初始化、重置PL、并判斷是否需要uart,若來(lái)連接uart則對(duì)其進(jìn)行初始化。之后清空VDMA緩存,并將其空間設(shè)置為1920*1080*3*2,以保證能夠容納4個(gè)1920*1080的彩色攝像頭輸入數(shù)據(jù)。之后配置攝像頭的IP核,主要是配置ps層面的通用IO口和IIC,使其完成對(duì)PL中的AXI-IIC控制器的初始化以及使用AXI-IIC控制器對(duì)OV5640寄存器進(jìn)行讀寫操作。之后對(duì)AXI-VDMA模塊進(jìn)行配置,使得VDMA-a模塊既有雙通道,既可以保證和ps間的通訊也可以保證pl之間的數(shù)據(jù)傳輸。之后對(duì)輸出通道進(jìn)行配置,主要是通過(guò)對(duì)VTCIP核進(jìn)行控制,即對(duì)VTC進(jìn)行初始化,并且配置VTC產(chǎn)生所需要的視頻時(shí)序信號(hào)。對(duì)于輸入通道的配置需要判斷D-PHYIP的個(gè)數(shù),如果大于2再配置B攝像頭的輸入通道,否則只需要單獨(dú)配置A攝像頭輸入通道即可。至此整個(gè)系統(tǒng)板的初始換完成。在進(jìn)行攝像頭的初始化時(shí),我們向攝像頭分配動(dòng)態(tài)存儲(chǔ)器核自動(dòng)存儲(chǔ)器,因此若OV5640未能成功連接也可以忽略并顯示其余攝像頭輸出信號(hào),在配置時(shí)只需要將A攝像頭配置到通用IO端口即可,并且為其余攝像頭分配虛擬的通用IO口,這樣可以避免在構(gòu)建OV5640時(shí)丟失所有板間數(shù)據(jù)。打印錯(cuò)誤報(bào)告UART介紹為了在程序操作過(guò)程中將整個(gè)系統(tǒng)各個(gè)地方發(fā)生的錯(cuò)誤信息發(fā)送出去,我們需要zynq內(nèi)部自帶的通用異步收發(fā)傳輸器(UART)接口。UART內(nèi)部有兩個(gè)FIFO,一個(gè)是發(fā)送FIFO,一個(gè)是接收FIFO。發(fā)送FIFO內(nèi)部有我們需要發(fā)送的信息,每當(dāng)向外提取數(shù)據(jù)之后,內(nèi)部移位寄存器就對(duì)數(shù)據(jù)進(jìn)行一次操作。FIFO有三個(gè)標(biāo)志位,分別為空標(biāo)志位、滿標(biāo)志位和溢出標(biāo)志位。空標(biāo)志位表示FIFO內(nèi)部沒(méi)有數(shù)據(jù),滿標(biāo)志位表示FIFO內(nèi)部數(shù)據(jù)已經(jīng)達(dá)到最大,溢出標(biāo)志位表示,當(dāng)FIFO內(nèi)部已滿時(shí)依然有數(shù)據(jù)寫進(jìn)來(lái)。接收FIFO緩存了接收模塊的寄存器接收到的數(shù)據(jù),最大數(shù)據(jù)寬度為8位,由于我們不用到接收器的內(nèi)容,因此在此不再贅述。UART有4中工作模式,見(jiàn)表4-1:表4-1UART工作模式工作模式解釋普通模式通過(guò)接受并發(fā)出FIFO的數(shù)據(jù)。自動(dòng)響應(yīng)模式RXT接收到的數(shù)據(jù)立即從TXD發(fā)送出去,同時(shí)處理器也可以讀到數(shù)據(jù),但是UART此時(shí)不能發(fā)送FIFO里的數(shù)據(jù)。本地循環(huán)模式UART自己接收自己所發(fā)送的數(shù)據(jù)。與外部數(shù)據(jù)傳輸隔離。遠(yuǎn)程循環(huán)模式UART作為一個(gè)平臺(tái),接收的數(shù)據(jù)從發(fā)送端發(fā)送出去UART初始配置在UART程序設(shè)計(jì)中主要分為UART初始化、UART發(fā)送設(shè)置和UART接收設(shè)置三個(gè)部分。在本實(shí)驗(yàn)中我們只需要進(jìn)行UART的初始化和UART的發(fā)送設(shè)置即可。圖4-2UART初始化配置框圖UART配置首先通過(guò)XUartPs_LookupConfig函數(shù)進(jìn)行配置,該函數(shù)根據(jù)唯一的設(shè)備ID來(lái)查找設(shè)備配置,并返回XUartPs_Config指針,如果沒(méi)有找到則返回NULL。之后使用XUartPs_CfgInitialize函數(shù)進(jìn)行初始化配置將傳送波特率預(yù)設(shè)為19200bps,8數(shù)據(jù)位,1停止位,不設(shè)置奇偶校驗(yàn)位。配置波特率我們使用XUartPs_SetBaudRate函數(shù)將默認(rèn)波特率重新配置為之前預(yù)設(shè)的波特率,如果波特率不能與可接受的波特率結(jié)合,那么這種錯(cuò)誤屬于XST_uart_BAUD_ERROR,并返回。UART自檢最后,我們使用XUartPsSelfTest函數(shù)對(duì)UART進(jìn)行檢查。此函數(shù)運(yùn)行一次,令UART工作在本地循環(huán)模式,即將自己發(fā)送的數(shù)據(jù)自己接收,以檢測(cè)UART設(shè)備是否可以正常工作。如果不能正常工作則返回XSTUARTTESTFAIL,如果能夠正常工作則顯示XSTSUCCESS。最終來(lái)確保UART硬件設(shè)備無(wú)故障。UART數(shù)據(jù)發(fā)送在程序中使用XUartPsSend進(jìn)行數(shù)據(jù)的傳出。該命令可以將數(shù)據(jù)寫入FIFO中并且發(fā)送出去。返回值為實(shí)際發(fā)送出去的字節(jié)數(shù),如果該返回值為0,則表示沒(méi)有發(fā)送任何字節(jié)。錯(cuò)誤信息通過(guò)VERBOSE標(biāo)志位表示程序中的出現(xiàn)錯(cuò)誤。其中錯(cuò)誤類型主要包括一下幾個(gè)方面。表4-2錯(cuò)誤信息類型錯(cuò)誤信息名稱錯(cuò)誤信息返回值攝像頭A初始化失敗CameraonportAdidnotinitializecorrectly攝像頭B初始化失敗CameraonportBdidnotinitializecorrectly攝像頭A輸入通道出錯(cuò)AnexceptionoccurredinInputpipelineforcam_a攝像頭B輸入通道出錯(cuò)AnexceptionoccurredinInputpipelineforcam_b其余未知錯(cuò)誤Exceptionthatcouldnotbehandled邊緣檢測(cè)算法為了在本實(shí)驗(yàn)的基礎(chǔ)上加入一個(gè)邊緣檢測(cè)的算法,通過(guò)simulink軟件進(jìn)行邊緣檢測(cè)模塊的設(shè)計(jì),并生成IP核,以供在vivado內(nèi)部使用。對(duì)于圖像處理,邊緣檢測(cè)算法有著非常重要的作用,邊緣檢測(cè)可以通過(guò)圖像的顯著變化識(shí)別圖像的邊緣輪廓,以提取圖像的重要信息。圖像邊緣一幅圖像中兩個(gè)或多個(gè)明顯界限的圖形信息,代表著一個(gè)區(qū)域的結(jié)束和一個(gè)區(qū)域的初始。因此,圖像邊緣可以說(shuō)是某一像素點(diǎn)與其鄰域內(nèi)其他像素點(diǎn)差量較大的點(diǎn)的合集。圖像的邊緣信息有兩個(gè)最重要因素,一個(gè)是幅值,另一個(gè)方向。順著邊界方向變化的像素點(diǎn)的變化之較小,相反垂直其邊界方向變化的像素點(diǎn)變化較大。因此,特點(diǎn),我們可采用一階導(dǎo)數(shù)或者二階導(dǎo)數(shù)其邊界點(diǎn)的確定。邊緣檢測(cè)的算法很多,其中應(yīng)用較廣,效率較高的算法為帶有Sobel算子的邊緣檢測(cè)算法。通過(guò)對(duì)邊緣檢測(cè)的介紹可以知道,相鄰像素的灰度變化程度,可以通過(guò)導(dǎo)數(shù)求得,而導(dǎo)數(shù)可以通過(guò)微分算子得到,在數(shù)字圖像處理的過(guò)程中,由于很難實(shí)現(xiàn)數(shù)字信號(hào)導(dǎo)數(shù)的計(jì)算,因此我們一般通過(guò)差分計(jì)算來(lái)做近似處理。Sobel邊緣檢測(cè)邊緣檢測(cè)原理邊緣檢測(cè)主要是講一個(gè)圖像中的信息進(jìn)行分析,找到圖像的邊緣,可以簡(jiǎn)單的理解為在實(shí)際生活中的摳圖,我們可以通過(guò)邊緣檢測(cè)算法,檢測(cè)出一個(gè)圖像中變化顯著的點(diǎn),而這些點(diǎn)往往是一幅圖像中的邊緣,從而可以找到圖像的輪廓。圖像的邊緣檢測(cè)可以很大程度的減少圖像的數(shù)據(jù)量,如果算法設(shè)置的較好,可以很好的剔除不需要的無(wú)關(guān)信息,只保留我們需要的圖像信息,將圖像和背景區(qū)分開。為了計(jì)算一個(gè)像素點(diǎn)是否為一個(gè)圖像的邊緣點(diǎn),我們通過(guò)計(jì)算該點(diǎn)的梯度值或經(jīng)過(guò)濾波后的灰度值是否超過(guò)某一給定值,若超過(guò)給定值則將該點(diǎn)的灰度設(shè)置為0否則設(shè)為255。這樣就可以達(dá)到在圖形的邊界輸出白色輪廓,其余部分輸出為黑色。為了計(jì)算一個(gè)像素點(diǎn)處的導(dǎo)數(shù)指,我們?cè)趫D像處理的過(guò)程中一般通過(guò)計(jì)算相鄰像素點(diǎn)的差值。如以一維圖像信號(hào)為例,一階導(dǎo)數(shù)是通過(guò)原始數(shù)據(jù)與圖像數(shù)據(jù)卷積得到。如。該卷積的模板為:-1/201/2可以看出,通過(guò)卷積模板可以一定程度上的加快運(yùn)算效率。經(jīng)過(guò)算法計(jì)算出導(dǎo)數(shù)值后,我們需要給定一個(gè)閾值,使其能過(guò)確定該圖像的邊緣位置在哪里,閾值給定的越小,則能夠檢測(cè)出來(lái)的邊緣信息越多,可以使檢測(cè)的結(jié)果的細(xì)節(jié)增多,但是另一方面,在圖像處理的過(guò)程中由于噪聲的在圖像中的變化量也較大因此可能無(wú)法剔除,從而得到一些與圖像不相關(guān)的信息。與之相反,若將閾值定的過(guò)高,則會(huì)損失一些較細(xì)或較短的線段,使圖像的邊界信息變得不明顯。因此需要給定一個(gè)適中的閾值已達(dá)到一個(gè)較好的輸出圖形。因此我們可以得出邊緣檢測(cè)實(shí)現(xiàn)的步驟如下:1.濾波,由上文可知在邊緣檢測(cè)的過(guò)程中我們往往需要對(duì)圖像進(jìn)行求導(dǎo)操作,但是往往實(shí)際的應(yīng)用過(guò)程中,很難避免噪聲信號(hào)的加入,而高頻噪聲往往容易使求導(dǎo)后產(chǎn)生一個(gè)較大的數(shù)值,從而邊緣檢測(cè)會(huì)將該數(shù)值檢測(cè)成為邊緣點(diǎn),所以我們需要對(duì)其進(jìn)行濾波操作以改善由于現(xiàn)實(shí)實(shí)現(xiàn)中加入噪聲后的邊緣檢測(cè)器的能效,但是相反的是過(guò)強(qiáng)的濾波也會(huì)對(duì)圖像的邊緣信息造成一定程度的損害使其變得更加平滑,所以需要在增強(qiáng)邊緣信息和降低噪聲信號(hào)之間做一個(gè)這種選擇。2.為了增強(qiáng)圖像邊緣信息,我們可以通過(guò)計(jì)算出來(lái)的橫向?qū)?shù)和縱向?qū)?shù),求其平方和,即梯度的平方值來(lái)擴(kuò)大邊緣信號(hào),使其更加明顯,并且由于直接求梯度的平方可以在實(shí)現(xiàn)的過(guò)程中省去開放操作,在fpga內(nèi)部的實(shí)現(xiàn)將變得更為簡(jiǎn)單。3.檢測(cè)及閾值的比較,通過(guò)計(jì)算出來(lái)的梯度值與之前所設(shè)定的閾值相比較,從而篩選出相應(yīng)的圖像邊緣信息,并且剔除出無(wú)用信息。Sobel算子邊緣檢測(cè)的算法有很多,在本實(shí)驗(yàn)中我們選用Sobel算子。Sobel算子是帶有方向性的,既有X方向也有Y方向??梢詥为?dú)計(jì)算X方向或者單獨(dú)計(jì)Y方向,也可以兩個(gè)都計(jì)算。其計(jì)算的公式如下所示:其中f(x,y)為圖像像素點(diǎn)(a,b)處的灰度值。當(dāng)然,像5.1.1所述,可以構(gòu)建卷積算子,使其計(jì)算更加有效,其中構(gòu)建的卷積算子為:橫向Sobel卷積因子:縱向Sobel卷積因子:通過(guò)卷積運(yùn)算可以得到橫向和縱向邊緣檢測(cè)的圖像灰度值:其中Gx為圖像的橫向微分值,Gy為圖像的縱向微分值,A為原始圖像。得到橫向和縱向的微分值后,可以求得某一像素點(diǎn)處的梯度值大小,計(jì)算公式如下:為了在系統(tǒng)實(shí)現(xiàn)過(guò)程中,提高系統(tǒng)的運(yùn)算效率,我們通常取絕對(duì)值的和來(lái)省去開方運(yùn)算以簡(jiǎn)化運(yùn)算。因此在經(jīng)過(guò)以上的計(jì)算之后,得到梯度值G之后,和之前所設(shè)定的閾值比較最終來(lái)確定該像素點(diǎn)是否為圖像的邊緣點(diǎn)。并且在一些其他的邊緣檢測(cè)算法中可以通過(guò)計(jì)算梯度的方向來(lái)使邊緣信息更加明確,梯度方向通過(guò)下式得到:systemgenerator的實(shí)現(xiàn)邊緣檢測(cè)systemgenerator的實(shí)現(xiàn)賽靈思公司為了方便在simulink上進(jìn)行數(shù)字信號(hào)處理,設(shè)計(jì)出systemgenerator這種開發(fā)工具,其可以在simulink中將賽靈思開發(fā)的模塊嵌入進(jìn)去,使所需要進(jìn)行設(shè)計(jì)的部分在simulink中進(jìn)行仿真并生成相應(yīng)的HDL文件與Vivado實(shí)現(xiàn)交互,但是在simulink中進(jìn)行的仿真必須使用XilinxBlock內(nèi)的相關(guān)模塊才能進(jìn)行仿真。也可以生成比特流文件,加快數(shù)字信號(hào)系統(tǒng)的開發(fā)進(jìn)程。由邊緣檢測(cè)的原理我們可以得知,要在systemgenerator上實(shí)現(xiàn)邊緣檢測(cè)我們需要完成一下幾個(gè)步驟:像素流的輸入和圖像的輸出、緩沖器、X濾波器、Y濾波器以及閾值比較。下面我們將按照上述幾個(gè)模塊分別在simulink中實(shí)現(xiàn)。像素流的輸入和圖像的輸出由于在matlab中進(jìn)行圖像處理時(shí),內(nèi)部是可以進(jìn)行矩陣運(yùn)算的,這種運(yùn)算使圖像處理變得非常方便,但是在實(shí)際應(yīng)用的過(guò)程中我們很難實(shí)現(xiàn)這么多并口同時(shí)輸入,一來(lái)沒(méi)有這么多的io口進(jìn)行設(shè)計(jì),二來(lái)這樣的設(shè)計(jì)對(duì)于硬件運(yùn)算負(fù)荷太大設(shè)計(jì)困難,因此我們?cè)赑L上實(shí)現(xiàn)數(shù)字圖像處理時(shí),我們應(yīng)該將matlab中的矩陣信息變?yōu)閿?shù)據(jù)流的形式輸入并且處理。因此本實(shí)驗(yàn)在simulink內(nèi)部進(jìn)行仿真的時(shí)候選擇使用回調(diào)函數(shù)的方法分別在仿真開始前和仿真結(jié)束前添加圖像提取和圖像輸出的回調(diào)函數(shù)。函數(shù)的具體思路如下:圖5-1圖像輸入的回調(diào)函數(shù)由圖5-1可知,在matlab界面使用imread函數(shù)將某一圖像進(jìn)行提取,但是由于直接讀取的圖像信息是unit8格式并且是矩陣形式,這樣的圖像信息并不能用于圖像處理,因此使用double語(yǔ)句改變其格式,并且在得到圖像大小信息之后,用reshape函數(shù)將圖像矩陣變成一個(gè)一維向量,這個(gè)過(guò)程應(yīng)注意reshape的格式。為了使其能夠在systemgenerator中進(jìn)行仿真,我們?cè)谇懊嬖偌尤胍粋€(gè)時(shí)針信號(hào),信號(hào)范圍是像素點(diǎn)總數(shù)。圖5-2圖像顯示的回調(diào)函數(shù)圖像顯示的回調(diào)函數(shù)如圖5-2所示。從上圖可以看出在此處我們依然使用reshape函數(shù)將經(jīng)過(guò)simulink處理的圖像信息轉(zhuǎn)換為矩陣形式,方便在matlab中輸出。緩沖器圖像處理一般是根據(jù)一個(gè)鄰域內(nèi)進(jìn)行運(yùn)算,因此在硬件中進(jìn)行數(shù)字圖像處理時(shí),需要緩沖器使一個(gè)像素的領(lǐng)域內(nèi)的數(shù)據(jù)可以進(jìn)行運(yùn)算。其中包括行緩存器和列緩存器。1.行緩存器在simulink中的行緩存器非常簡(jiǎn)單,由于圖像數(shù)據(jù)是自上而下,從左向右進(jìn)行處理的,因此3行緩存器只需要加入兩個(gè)延遲環(huán)節(jié)即可。如圖5-3所示:圖5-3行緩存器內(nèi)部結(jié)構(gòu)通過(guò)行緩存器就可以實(shí)現(xiàn)將f(x+1,y),f(x,y),f(x-1,y)進(jìn)行并行輸入。將設(shè)計(jì)好的行緩存器封裝,如圖5-4圖5-4行緩存器2.列緩存器當(dāng)然與行緩存器類似,我們可以按照其原理進(jìn)行如圖5-5所示設(shè)計(jì)。這種設(shè)計(jì)的輸出延遲為輸入圖形的寬度。使得輸出通道為一列相鄰像素?cái)?shù)據(jù)的并行輸出,但是顯而易見(jiàn)的是,這種輸出模式會(huì)向后延遲1280拍,使得整個(gè)系統(tǒng)的延遲增大非常多,因此我們需要另一種列緩存模式。圖5-5列緩存器與行緩存器目的一致,為了使圖像數(shù)據(jù)的f(x,y+1),f(x,y),f(x,y-1)并行輸入。在simulink中進(jìn)行列緩存器的設(shè)計(jì),可以仿照行緩存器,設(shè)置兩個(gè)延遲環(huán)節(jié)。但是在列緩存器的設(shè)計(jì)過(guò)程中,其延時(shí)拍數(shù)將設(shè)計(jì)為圖像的長(zhǎng)度,這樣就會(huì)使整個(gè)系統(tǒng)的延時(shí)加大,整個(gè)系統(tǒng)的效率就會(huì)大大降低。因此我們選用雙口RAM模塊進(jìn)行緩存器的設(shè)置。圖5-6DualportRAM模塊該模塊可以將直接將數(shù)據(jù)存放在相應(yīng)地址,addra是A存儲(chǔ)器的地址入口,dina是A存儲(chǔ)器的數(shù)據(jù)入口,wea是a的寫入使能端。我們可以通過(guò)對(duì)于地址信息的設(shè)計(jì),使用較少的延遲來(lái)實(shí)現(xiàn)列緩存器。圖5-7列緩存器的內(nèi)部結(jié)構(gòu)圖可以看到通道一直接輸出,通道二通過(guò)concat模塊將兩個(gè)數(shù)組連接起來(lái)作為其存儲(chǔ)地址。通道三的實(shí)現(xiàn)是通過(guò)RAM的A口輸出數(shù)據(jù)連接到RAM的B口輸入,并增加地址最高位,使其延遲一個(gè)圖像寬度的拍數(shù)。但是在此處設(shè)計(jì)的時(shí)候應(yīng)該注意DualPortRAM內(nèi)部的延遲為2拍,所以要使其列緩存器輸出正確,我們將該模塊的總延遲設(shè)計(jì)為5拍,因此需要在相應(yīng)的位置加入延遲環(huán)節(jié)驚醒校對(duì)。校對(duì)結(jié)果如圖5-8所示:圖5-8加入延遲環(huán)節(jié)的列緩存器內(nèi)部結(jié)構(gòu)圖最后將其封裝,如圖5-9所示:圖5-9列緩存器X,Y濾波器以及梯度計(jì)算X,Y濾波器的原理在6.1節(jié)已經(jīng)涉及到,在此不再進(jìn)行過(guò)多描述,主要是將卷積公式,轉(zhuǎn)換成simulink的模塊實(shí)現(xiàn)。實(shí)現(xiàn)過(guò)程主要是依靠乘法器和加法器實(shí)現(xiàn):如圖5-10,5-11所示:圖5-10X濾波器內(nèi)部結(jié)構(gòu)圖5-11Y濾波器內(nèi)部結(jié)構(gòu)可以看到simulink中通過(guò)行緩存器和列緩存器之后,將得到某一像素點(diǎn)鄰域內(nèi)的各個(gè)像素信息,通過(guò)計(jì)算可以得出Sobel算子卷積后的Gx和Gy。正如5.1節(jié)所述,計(jì)算其梯度的數(shù)值,經(jīng)過(guò)比較便可得到最終的結(jié)果,及該店是否為邊緣點(diǎn)。將X,Y濾波器打包如圖5-12所示:圖5-12X,Y濾波器由于前文所說(shuō),為求得梯度的數(shù)值,開方的操作實(shí)現(xiàn)起來(lái)較為麻煩,可以選擇絕對(duì)值的和的方式進(jìn)行實(shí)現(xiàn),或者如本實(shí)驗(yàn)所選用的計(jì)算平方和的方法和閾值的平方進(jìn)行比較。及:最后由和閾值比較。Simulink的梯度計(jì)算如圖5-13所示圖5-13梯度值的計(jì)算閾值比較閾值比較在閾值比較的simulink實(shí)現(xiàn)中我們選用比較模塊和二選一Mux模塊共同實(shí)現(xiàn),Mux模塊如圖5-14所示:圖5-14Mux模塊可以看到sel口輸入0時(shí),Mux模塊輸出d0值,當(dāng)sel口輸入1時(shí),Mux模塊輸出d1的值。因此可以將邊緣點(diǎn)檢測(cè)模塊設(shè)置為:圖5-15閾值比較模塊若比40000大則判斷該點(diǎn)處的像素變化較大,該像素點(diǎn)為圖像的邊緣點(diǎn),之后令sel輸入為0,Mux的輸出為255,即亮度強(qiáng)度最強(qiáng)為白色。整體實(shí)現(xiàn)通過(guò)上述在simulink中構(gòu)建相應(yīng)的模塊,將其組裝成為邊緣檢測(cè)的系統(tǒng)實(shí)現(xiàn),因?yàn)樵趕ystemgenerator的實(shí)現(xiàn)過(guò)程中,有一些其他的模塊需要添加,在本節(jié)我們做出一些必要的說(shuō)明。1.systemgenerator模塊為了使simulink的仿真可以正常運(yùn)行,在整個(gè)系統(tǒng)的內(nèi)部需要加入一個(gè)systemgenerator模塊,如圖5-15所示圖5-16systemgenerator模塊該模塊可以驅(qū)動(dòng)整個(gè)fpga的運(yùn)行和實(shí)現(xiàn),只有systemgenerator模塊存在,XilinxBlock中的模塊才能正常運(yùn)行,該模塊在simulink中不和其他的元件連接,獨(dú)立存在。我們?cè)谑褂脮r(shí)雙擊進(jìn)入內(nèi)部對(duì)其進(jìn)行配置,我們可以在其內(nèi)部選擇仿真的芯片,時(shí)鐘頻率,仿真頻率等等,并且最終生成ip核或者是將整個(gè)系統(tǒng)通過(guò)HDL語(yǔ)言描述出來(lái)。在本次實(shí)驗(yàn)中我們需要systemgenerator為我們生成相應(yīng)的ip核,systemgenerator可以通過(guò)系統(tǒng)內(nèi)部的構(gòu)成來(lái)自動(dòng)生成ip核的數(shù)據(jù)輸入接口和時(shí)序輸入接口。2.FPGA邊界模塊Systemgenertor可以實(shí)現(xiàn)fpga開發(fā)和matlab算法的交互,但是我們不難想到,matlab有著優(yōu)秀的矩陣運(yùn)算,但是在fpga中并沒(méi)有矩陣運(yùn)算的概念,因此為了進(jìn)行fpga式的開發(fā),我們需要在simulink中規(guī)定數(shù)據(jù)的輸入形式,即數(shù)據(jù)流的輸入形式,以方便在后續(xù)的處理過(guò)程中可以根據(jù)fpga的開發(fā)思想來(lái)進(jìn)行相應(yīng)的操作,XilinxBlock為我們提供了兩個(gè)模塊,分別為gatewayin和gatewayout,這兩個(gè)模塊使系統(tǒng)在simlink內(nèi)部仿真的時(shí)候可以確定生成的ip核的邊界在哪里,在整個(gè)系統(tǒng)的內(nèi)部必須使用XilinxBlock中的模塊,在系統(tǒng)外部可以使用simulink中的其他模塊。而為了仿真fpga的數(shù)據(jù)類型,gatewayin的功能是可以將傳入matlab中的浮點(diǎn)型數(shù)據(jù)變?yōu)閒pga可以接收的定點(diǎn)型數(shù)據(jù)。GatewayIn和GatewayOut結(jié)構(gòu)如圖6-17所示:圖5-17FPGA的邊界定義對(duì)于整個(gè)FPGA在simulink中的仿真參數(shù)的設(shè)置可以在GatewayIn中設(shè)置,如圖6-18所示:圖5-18GatewayIn模塊設(shè)置這里可以設(shè)置轉(zhuǎn)換成定點(diǎn)數(shù)的數(shù)據(jù)格式,可以設(shè)置成有符號(hào)數(shù)或無(wú)符號(hào)數(shù),以及數(shù)據(jù)位寬和小數(shù)點(diǎn)的位置。需要注意的是這里的采樣時(shí)間應(yīng)該與simulink系統(tǒng)的仿真時(shí)間保持一致或更小。自此整個(gè)系統(tǒng)構(gòu)建所需要的模塊已經(jīng)介紹完畢。3.系統(tǒng)實(shí)現(xiàn)通過(guò)上述所講,將所有模塊串聯(lián)成整個(gè)邊緣檢測(cè)的系統(tǒng),如圖5-19所示圖5-19邊緣檢測(cè)simulink實(shí)現(xiàn)為了檢驗(yàn)該系統(tǒng)的可靠性,我們可以構(gòu)建一個(gè)基于matlab矩陣運(yùn)算的邊緣檢測(cè)模型,如圖5-20所示:圖5-20基于矩陣運(yùn)算的邊緣檢測(cè)模型可以對(duì)比兩個(gè)模型的運(yùn)算結(jié)果運(yùn)行結(jié)果如圖5-22和圖5-23所示,原圖如5-21所示:圖5-21原始圖像圖5-22基于矩陣運(yùn)算的邊緣檢測(cè)圖5-23基于FPGA的邊緣檢測(cè)可以看到該實(shí)驗(yàn)的實(shí)現(xiàn)效果較好。若要進(jìn)行調(diào)整只需要適當(dāng)改變閾值參數(shù)即可。以下為改變閾值參數(shù)后的輸出圖像效果圖。(A)(B)(C)(D)圖5-24閾值改變時(shí)的結(jié)果由圖5-24可以看出a,b,c,d四張圖的閾值參數(shù)設(shè)置分別為,60000、40000、10000、5000。當(dāng)閾值設(shè)置越小時(shí),圖像信息就越明顯,線條也越鮮明。這是對(duì)于一幅沒(méi)有高頻干擾的圖像,但是在現(xiàn)實(shí)的圖像處理設(shè)備中,難免的會(huì)有一些高頻噪聲的干擾。如圖5-25所示,將圖像加入一些高頻噪聲后,不同的邊緣檢測(cè)參數(shù)對(duì)其影響。(B)(C)圖5-25帶有高頻噪聲的邊緣檢測(cè)上圖中A圖將閾值改為20000,B圖將閾值改為80000,C圖將閾值設(shè)定為11000??梢钥闯觯绻撝翟O(shè)置過(guò)小,雖然圖像較為完整但是將有大量的高頻噪聲保留在圖像上,如果加大閾值參數(shù)使盡量少的噪聲保留,這樣會(huì)一定程度上損壞原圖像的信息。因此閾值的選取應(yīng)該適當(dāng)。vivado的整體實(shí)現(xiàn)通過(guò)systemgenerator模塊選取zedboard開發(fā)板,生成相應(yīng)的IP核,在vivado內(nèi)部加入邊緣檢測(cè)模塊,之后整個(gè)系統(tǒng)實(shí)現(xiàn)原理圖如圖5-26所示:圖5-26加入邊緣檢測(cè)后的vivado系統(tǒng)框圖通過(guò)systemgenerator模塊生成ip核文件,并將生成的ip核配置到vivado內(nèi)。生成的ip核如圖5-27所示。圖5-27邊緣檢測(cè)ip核將生成的ip核嵌入到vivado建立的工程中,進(jìn)行總體的實(shí)現(xiàn)。邊緣檢測(cè)的優(yōu)化通過(guò)第五章可以發(fā)現(xiàn),在現(xiàn)實(shí)生活中有很多的硬件設(shè)備里總是存在多多少少的高頻噪聲干擾,因此在實(shí)現(xiàn)邊緣檢測(cè)時(shí)總會(huì)發(fā)生圖5-25所示內(nèi)容,為了使邊緣檢測(cè)不受到高頻噪聲的影響,我們可以在邊緣檢測(cè)ip核前加入一個(gè)濾波ip核,使輸入進(jìn)的視頻數(shù)據(jù)先經(jīng)過(guò)濾波去除一定的高頻噪聲,之后在此基礎(chǔ)上再將濾波后的圖像進(jìn)行其他的圖像處理,可以很大程度上的減少高頻噪聲對(duì)系統(tǒng)的影響。由于ip核的建立在第五章已經(jīng)有所設(shè)計(jì),因此本章不再做過(guò)多說(shuō)明,只將重心放在系統(tǒng)在systemgenerator的搭建上。濾波裝置的systemgenerator實(shí)現(xiàn)濾波裝置的實(shí)現(xiàn)有很多種,其中我們可以通過(guò)FDAtool進(jìn)行降噪,F(xiàn)DAtool是systemgenerator的一個(gè)濾波模塊,可以通過(guò)它對(duì)進(jìn)行數(shù)字濾波的配置,可以通過(guò)伯德圖的形式直觀的表現(xiàn)出我們所需要的濾波器信息。如圖6-1所示6-1FDAtool內(nèi)部配置通過(guò)FDAtool和數(shù)字濾波模塊的配合可以將圖像流信息進(jìn)行濾波操作。總體systemgenerator實(shí)現(xiàn)圖如圖6-2所示:6-2FDAtool濾波流程圖從上圖可以看出,F(xiàn)DAtool的濾波流程較為簡(jiǎn)單,設(shè)計(jì)起來(lái)也非常方便,參數(shù)調(diào)整可以根據(jù)FDAtool內(nèi)部進(jìn)行調(diào)整,較為靈活。但是對(duì)于數(shù)字圖像的處理過(guò)程中,參數(shù)的確定就顯得尤為麻煩,并且濾波的效果也不是很理想,往往會(huì)使整個(gè)圖像變得非常模糊。因此我們?cè)诖诉x取另一種圖像濾波方式,即中值濾波。中值濾波的原理非簡(jiǎn)單,即再每一個(gè)像素點(diǎn)周圍3×3的鄰域內(nèi)共計(jì)9個(gè)像素信息,將這9個(gè)像素信息,進(jìn)行排序之后選取中位數(shù)作為該像素點(diǎn)的輸出。這種濾波方法可以很大程度的減小圖像中的噪聲,并且也不會(huì)對(duì)邊緣信息造成像均值濾波一樣的損壞。因此我們?cè)诒纠惺褂弥兄禐V波的實(shí)現(xiàn)方法。圖6-3中值濾波的systemgenerator實(shí)現(xiàn)在圖6-3中可以看到,主要系統(tǒng)包括橫向和縱向的緩存器,以及MUX模塊,和Mcode模塊。對(duì)于視頻的輸入輸出,和緩存器部分在第五章已經(jīng)做了詳細(xì)的介紹,在此我們不再進(jìn)行說(shuō)明。對(duì)于MUX模塊主要是將緩存器的9個(gè)像素信息,逐個(gè)輸出。而Mcode的主要功能是將輸入的9個(gè)像素信息進(jìn)行排序之后再選取中間值作為輸出,具體的Mcode函數(shù)見(jiàn)附錄。建立好的中值濾波systemgenerator模塊可以通過(guò)第五章的方法進(jìn)行ip核的建立,建立好的ip核加入整個(gè)系統(tǒng)后,可以觀察,優(yōu)化后的邊緣檢測(cè)模型的圖像效果。(A)(B)(C)圖6-4中值濾波的邊緣檢測(cè)可以看出再圖6-4中,(A)為原圖,(B)為帶中值濾波的邊緣檢測(cè),(C)為不帶中值濾波的邊緣檢測(cè)。對(duì)比5.2.6節(jié)中的結(jié)果可以看出,帶有中值濾波的邊緣檢測(cè)很好的剔除了高頻噪聲,可以使邊緣檢測(cè)的結(jié)果得到一定程度的改善。其他實(shí)現(xiàn)當(dāng)然邊緣檢測(cè)的優(yōu)化方式有很多,我們可以對(duì)邊緣檢測(cè)算法本身進(jìn)行一定程度的改進(jìn),我們只研究了邊緣檢測(cè)處理過(guò)程中的梯度的大小,但是并沒(méi)有根據(jù)梯度的方向?qū)吘壭畔⑦M(jìn)行分析,并且由于sobel算法對(duì)圖像邊緣的處理時(shí),只考慮圖像邊緣是一段很小的像素鄰域,因此當(dāng)某個(gè)圖像邊緣較厚時(shí),可能會(huì)出現(xiàn)其他情況的錯(cuò)誤。并且如果莫伊圖像的邊緣顏色和背景顏色較為接近時(shí),可能會(huì)發(fā)生無(wú)法檢測(cè)到的情況,因此我們可以在算法上進(jìn)行改進(jìn),可以設(shè)置雙閾值檢測(cè),大于高閾值時(shí)則為邊緣點(diǎn),大于低閾值時(shí)則為弱邊緣點(diǎn),通過(guò)統(tǒng)計(jì)觀察不難發(fā)現(xiàn),軟邊緣點(diǎn)總是在強(qiáng)邊緣點(diǎn)附近延伸出來(lái),因此我們可以通過(guò)這種方法對(duì)邊緣檢測(cè)進(jìn)行一定程度的改進(jìn)。除了這些以外,我們也可以考慮不同

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論