楊少東 覃琴



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