楊少東 覃琴
【摘要】給出了一種嵌入式機器視覺軟硬件設(shè)計方案,該裝置以FPGA為核心,使用EDA工具設(shè)計了相應(yīng)電路板及其軟件。硬件上重點介紹了系統(tǒng)硬件設(shè)計方案、布線工具及其技巧;軟件上重點介紹了視頻的解碼處理和Sobel算法在FPGA上的實現(xiàn)及其顯示。測試結(jié)果表明,該平臺足以實現(xiàn)特定的機器視覺算法,具有精簡、小體積、低成本、高性能和兼容性等優(yōu)點。
【關(guān)鍵詞】FPGA;布局布線;邊緣檢測算法;機器視覺
1.引言
隨著圖像處理技術(shù)的不斷發(fā)展,機器通過視覺感知外界信息并進行決策、判斷的機器視覺應(yīng)用已經(jīng)在我們的生活中越來越普遍。然而,傳統(tǒng)PC平臺的便攜性以及成本的問題嚴(yán)重的制約了其在生活中的應(yīng)用。著眼于此,探討實現(xiàn)一個緊湊型嵌入式的機器視覺解決方案,設(shè)計了小型的FPGA的圖像處理的硬件平臺,并將機器視覺中的邊緣識別算法在其中實現(xiàn),通過攝像機對外界的邊緣信息進行感知。
2.系統(tǒng)硬件設(shè)計
系統(tǒng)硬件結(jié)構(gòu)圖如圖1所示,圖中所示為本文所設(shè)計的嵌入式邊緣檢測系統(tǒng)的硬件結(jié)構(gòu)圖。FPGA芯片選用了altera 公司的EP4CE6E 22C8N,其具有6272個邏輯資源、276280Bit內(nèi)置SRAM、30個9bit嵌入式乘法器,為高速并行數(shù)字信號處理打下了基礎(chǔ)。另外,EP4CE6E22C8N芯片具有92個用戶IO,可自由分配其功能及其與外部電路的連接,具有較好的I/O能力。
圖1 系統(tǒng)硬件結(jié)構(gòu)圖
2.1 視頻解碼電路
由于PAL信號為模擬信號,F(xiàn)PGA無法獨立完成PAL制式視頻的解調(diào),但是可以依托于專用的PAL解碼芯片。本設(shè)計中選取了ADI的ADV7180,其可通過I2C借口支持NTSC/PAL/SECAM制式的視頻輸入,并將其解碼為8-bit ITU-R BT.656 YCrCb 4:2:2 格式的輸出與相應(yīng)的數(shù)據(jù)同步時鐘,并且有水平同步(HS)和垂直同步(VS)信號輸出。
2.2 顯示器控制電路
顯示控制電路的VGA驅(qū)動芯片選用了ADV7123,其中包含了3個10bit 240MSPS DAC,其以高阻差分恒流源形式進行輸出,能有效的抵抗傳輸路徑中的干擾。
2.3 圖形緩沖電路設(shè)計
圖形緩沖電路的內(nèi)存使用了Hynix的HY57V561620 其為4 Banks x 4M x 16bit的SDRAM,為圖像緩沖提供了高速、大容量的空間;在其設(shè)計過程中的主要問題點在于對其布線過程中要考慮到時序問題。
該部分的PCB布局布線使用Altium Designer,該軟件具有特意為FPGA Layout 設(shè)計的交互式布線工具Pin Swap,簡化了FPGA硬件電路的設(shè)計。由于本設(shè)計中SDRAM運行于108MHz的時鐘頻率,需要在布局布線中對SDRAM的走線進行時序的優(yōu)化,在布線時需根據(jù)走線的長度、過孔個數(shù)、次序需求重新分配FPGA IO口與SDRAM的IO口的連接,然后反向更新到原理圖中,從而達(dá)到滿足時序要求的SDRAM硬件電路的設(shè)計。同樣,Pin Swap工具也可以用于其種類它內(nèi)存的布線優(yōu)化,比如SRAM以及DDR內(nèi)存系統(tǒng)的布線。
在完成了電路板設(shè)計與制作之后,針對該部分,要進行一個獨立的測試,測試SDRAM是否能夠滿足與FPGA進行通信的時序要求。該測試?yán)肍PGA芯片內(nèi)置的PLL,主要對SDRAM的工作時鐘以及FPGA內(nèi)部數(shù)據(jù)同步時鐘的相位關(guān)系是否能保證數(shù)據(jù)的完整性進行測試及微調(diào)。本部分中的SDRAM的工作時鐘超前于FPGA的工作時鐘75度。
3.軟件設(shè)計
本文所設(shè)計系統(tǒng)的軟件方案如圖2框圖所示,系統(tǒng)呈流水線結(jié)構(gòu)。其中,視頻采集部分采集外部輸入的8-bit ITU-R BT.656 YCrCb 4:2:2 格式視頻數(shù)據(jù);去隔行模塊對隔行掃描的圖像進行還原;色域轉(zhuǎn)換模塊將圖像從YUV色彩空間轉(zhuǎn)換到RGB色彩空間;Sobel算法選取G分量進行運算(也可選取R或者B分量)。最終的結(jié)果交于輸出顯示模塊,由輸出顯示模塊控制外部VGA電路對邊緣檢測的結(jié)果進行顯示。
圖2 軟件結(jié)構(gòu)圖
3.1 PAL視頻采集及其去隔行
PAL制式標(biāo)準(zhǔn)為我國的電視標(biāo)準(zhǔn),每秒25幀,掃描線為625線,其中幀正程為575行,幀逆程為50行;掃描方式為隔行掃描,每場掃描312.5行,場正程287.5行,逆程25行。兩場合成一幀,奇數(shù)場在前偶數(shù)場在后;場頻為每秒50場,幀頻為每秒25幀。
BT.656 YCrCb 4:2:2即為YUV 4:2:2,其中YUV 4:2:2 數(shù)據(jù)格式通過每兩個像素傳遞一個完整的UV分量(交替省略V/U分量)的方式,從而達(dá)到減小數(shù)據(jù)傳輸對帶寬的需求量的目標(biāo)。YUV4:2:2格式與YUV4:4:4格式的對比如表1所示:
表1 YUV4:4:4格式與YUV4:2:2對比
完整YUV數(shù)據(jù) Y0 U0 V0 Y1 U1 V1
YUV4:2:2 Y0 U0 壓縮 Y1 壓縮 V1
從表1中可以觀察到Y(jié)UV4:2:2相對于YUV4:4:4有66.7%的壓縮率。
YUV向RGB轉(zhuǎn)換的公式為:
RGB轉(zhuǎn)YUV:
綜上,在FPGA中對圖像進行還原的流程如圖3所示。
圖3 YUV4:2:2轉(zhuǎn)RGB流程圖
3.2 邊緣檢測算法
Sobel算法是在二維平面上研究亮度信息的突變。對突變信息的篩選性獲取在數(shù)學(xué)上一般分為在時域法和頻域法。時域法的典型方法即為微分,微分即可求得量化的突變量的大小。而在頻域上,則展現(xiàn)為使用傅里葉后獲得各個頻段的能量分布,然后使用傅里葉逆變換,對數(shù)據(jù)進行還原。在頻域上的分析,其操作較時域方法具有較高的效率。頻域上的操作還原到時域,則體現(xiàn)為時域的卷積,即兩函數(shù)的傅里葉變換的乘積等于它們卷積后的傅里葉變換,能使傅里葉分析中許多問題的處理得到簡化,從而大大簡化了計算量。
3.3 Sobel邊緣識別算法在FPGA上的實現(xiàn)
Sobel算法需要以圖像的每個數(shù)據(jù)為中心,取出3x3像素矩陣,并且橫向和縱向進行卷積,僅保留結(jié)果矩陣的中心元素,然后通過均值方根進行矢量的合成。在FPGA硬件描述語言實現(xiàn)上,將其劃分為圖像緩沖部分、乘加部分、均值方根部分。其中圖像緩沖部分為3行的行緩沖FIFO內(nèi)存組,在其中緩沖保存圖像的3行的像素點。乘加模塊使用了FPGA芯片內(nèi)置的9bit嵌入式乘法器。由于僅取卷積中心元素,故在每個方向上的卷積僅需進行3次乘法操作,最后使用加法器相加。由于整體設(shè)計乘法操作過多,在綜合時出現(xiàn)FPGA內(nèi)置嵌入式乘法器不足情況,通過使用邏輯資源構(gòu)建乘法器并進行時序優(yōu)化解決了該問題。均值方根模塊使用了Quartus自帶的宏模塊進行生成。卷積的操作完成后,要對結(jié)果進行二值化,設(shè)定一個邊緣閾值,當(dāng)相應(yīng)像素點的梯度高于閾值則認(rèn)為改點是邊緣點。
3.4 VGA驅(qū)動
VGA驅(qū)動用于驅(qū)動外部的ADV7123,并發(fā)送行、場同步信號與顯示器。由于Sobel算法生成的數(shù)據(jù)需存放在SDRAM中而同時SDRAM也要作為VGA驅(qū)動器的顯存,故構(gòu)建了兩個FIFO,分別對應(yīng)于Sobel生成的圖像寫入和VGA控制器從SDRAM中讀出圖像數(shù)據(jù)。
使用Verilog語言設(shè)計符合時序要求VGA控制器,令FPGA相應(yīng)IO口輸出符合VGA控制時序的行、場同步信號,同時從FIFO中讀出像素數(shù)據(jù)輸出并輸出ADV7123的工作所需的時鐘,進行數(shù)模轉(zhuǎn)換,最終達(dá)到顯示器上能夠顯示輸入圖像的邊緣信息的目的。
圖4 系統(tǒng)運行效果圖
4.結(jié)果及其分析
系統(tǒng)運行效果圖如圖4所示,將手放置于監(jiān)控攝像機前對邊緣識別的效果進行觀測。通過觀測發(fā)現(xiàn)該系統(tǒng)良好的識別了手掌的邊緣信息(輪廓),并且揮動手掌對輸出延時進行了初步的對比觀測,輸出與動作基本同步,使用人眼觀測,感覺不到明顯的延時。但是通過仔細(xì)測試,發(fā)現(xiàn)在手掌與攝像機呈現(xiàn)不同角度時,檢測得到的輪廓部分缺失。這種現(xiàn)象和光線條件有關(guān),因為Sobel算法是對亮度信息的突變進行檢測,通常情況下,兩種因素對其影響較大:一是Sobel算法中邊緣的閾值的設(shè)定,在較低照度下邊緣檢測算法的結(jié)果可能較小,此時閾值過大會導(dǎo)致邊緣信息缺失;二是光照環(huán)境復(fù)雜圖像中的亮度突變來自干擾光線時便錯誤的識別到了不存在的邊緣。圖4中屏幕內(nèi)顯示邊緣部分缺失是低照度下邊緣檢測的閾值設(shè)置過低導(dǎo)致的。
5.結(jié)束語
本文探討了如何使用FPGA及相關(guān)外設(shè)芯片實現(xiàn)一個緊湊型嵌入式的機器視覺解決方案,設(shè)計了小型的FPGA的圖像處理的硬件平臺,并將機器視覺中的邊緣識別算法在其中實現(xiàn)。該系統(tǒng)能夠進行基本的機器視覺實現(xiàn),具有較低軟硬件成本,較小體積,較好的兼容性,符合其嵌入式視覺方案應(yīng)用的定位。
參考文獻
[1]陳軍.基于DSP的高速公路車道偏離報警系統(tǒng)研究[D].天津大學(xué),2010.
[2]余錦華,范宏波,鄭智捷.紅外視頻圖像實時二維增強算法與實現(xiàn)[J].紅外技術(shù),2005,27(3):227-231.
[3]陳洪.圖像預(yù)處理算法研究與硬件化設(shè)計[D].國防科技大學(xué),2003:47-48.
[4]張為公.基于視覺的車道偏離報警系統(tǒng)的研究[J].儀器儀表學(xué)報,2008(7):1554-1558.
注:2013年國家級創(chuàng)新創(chuàng)業(yè)項目“嵌入式圖監(jiān)測系統(tǒng)”研究成果(項目編號:201313644003)。
作者簡介:楊少東(1989—),男,大學(xué)本科,現(xiàn)就讀于桂林電子科技大學(xué)信息科技學(xué)院,研究方向:自動化。
通信作者:覃琴,女,實驗師,現(xiàn)供職于桂林電子科技大學(xué)信息科技學(xué)院,主要從事測控技術(shù)與儀器方面的教學(xué)和科研工作。