Matlab與FPGA圖像處理系列——基於FPGA的實時邊緣檢測系統設計,sobel邊緣檢測流水線實現

注:下載鏈接的資源是圖片存 ROM 後讀取進行 Sobel 檢測顯示在 VGA上,可供參考。

摘要:本文設計了一種基於 FPGA 的實時邊緣檢測系統,使用OV5640 攝像頭模塊獲取實時的視頻圖像數據,提取圖像邊緣信息並通過 VGA顯示。FPGA 內部使用流水線設計和並行運算加速算法,利用乒乓操作和 SDRAM 緩存圖像,可以實時提取視頻圖像的邊緣特徵。文中對比了 MATLAB 和 FPGA 的處理效果,由於 FPGA 對算法採取了硬件加速,所以相較於 MATLAB 等計算機軟件實現方式有更快的處理速度。經驗證,系統工作穩定,滿足實時性要求。

關鍵詞:現場可編程門陣列;Sobel邊緣檢測;乒乓緩存;VGA顯示;

1 系統方案與設計
本系統基於 Altera 公司 Cyclone IV 系列的 EP4CE6F17C8 型號的 FPGA ,系統整體框圖如圖1所示,主要包括 FPGA 並行運算平臺、攝像頭採集模塊、存儲模塊和顯示模塊,設計時採用自頂向下的設計模式,使用全局復位和跨時鐘域處理。
系統運行時, FPGA 並行運算平臺首先完成對攝像頭的初始化和寄存器配置,配置完成之後讀取實時的圖像數據存入 SDRAM 存儲器中,在 FPGA 芯片內部並行實現圖像處理算法,對從 SDRAM 中讀出的數據進行 Sobel 邊緣檢測並送入 VGA 顯示,通過獨立按鍵可以切換顯示模式和設定邊緣檢測閾值。
在這裏插入圖片描述
圖1 系統整體框圖

在這裏插入圖片描述
圖2 基於FPGA的Sobel邊緣檢測算法實現結構框圖

2 圖像預處理
由於 Sobel 算子是針對灰度圖像的邊緣檢測,所以先把彩色圖像轉爲灰度圖像。將 RGB565 轉化爲 RGB888,再將 RGB888 轉爲 YCbCr 格式,最後提取其中的 Y 分量即可得到灰度圖像。RGB888與 YCbCr 轉換公式如下:
Y=0.299×R+0.587×G+0.114×B (1)
由於 FPGA 無法直接運算浮點數,所以先擴大系數近似爲整數再運算。此處擴大256 倍後取整,將運算結果右移 8 位,提取 Y 分量即可得到灰度圖像,即
Y=(77×R+150×G+29×B) ≫8 (2)
從 RGB888 圖像中得到 YCbCr 圖像的 Y 分量的並行運算示意圖如圖3所示。
在這裏插入圖片描述
圖3 RGB888 轉 YCbCr 並行運算示意圖(Y分量)
3 邊緣檢測算法設計
如圖4所示爲待處理的3×3 像素點,使用 Sobel 算子處理中心像素點 P5,則使用 X、Y 方向的算子處理可得X、Y方向的梯度值 GX1、GY1 分別爲:
GX1= (1×P3+2×P6+1×P9)-(1×P1+2×P4+1×P7) (3)
GY1= (1×P1+2×P2+1×P3)-(1×P7+2×P8+1×P9) (4)
整體梯度值 G 爲:

由上式可知 GX11、GX12、GY11、GY12 均爲正值,因此簡化絕對值:

由上可計算 GX11、GX12、GY11、GY12,|GX1| 和 |GY1|,繼而求 G。當 G 大於設定的閾值時判定爲圖像的邊緣。
如圖5 所示爲Sobel 算子並行實現示意圖,使用3個 Shift_ram 實現移位操作,使用三級流水線計算邊緣檢測值 G。判斷 G 是否大於閾值,若大於閾值則輸出0(8位數據0X00)否則輸出 255(8位數據0XFF),即邊緣處爲黑色其餘位置爲白色。
在這裏插入圖片描述
圖4 待處理的3×3像素
在這裏插入圖片描述
圖5 Sobel算子並行實現示意圖

4 邊緣檢測算法性能
在MATLAB使用本文所述的 Sobel 邊緣檢測算法,提取一張1024720分辨率的灰度圖像的邊緣,經過計時發現僅實現 Sobel 邊緣檢測需要597.451 ms(使用 MATLAB 2016a,CPU主頻1.8GHz),即每秒鐘僅能處理約 1.67 張圖片。
使用 FPGA運行本文所述的 Sobel邊緣檢測算法,使用50 MHz時鐘(週期20 us),在1024個時鐘週期後得到 LineBuffer 緩衝出的第一行數據,4個時鐘週期後開始輸出邊緣檢測後的數據,處理完一副1024
720分辨率的圖片需要的時間 T 爲
T= (1024×720+1024+4)×20 us=14.76616 ms
由以上對比可知,FPGA並行運算在算法加速上面有着非常好的性能,處理速度遠超 MATLAB 這種串行處理方式,使用FPGA方式每秒鐘大約可以處理67張圖片,滿足實時性的要求。

檢測效果如下:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
總結
本文在 FPGA 平臺上中並行實現了實時圖像的 Sobel 邊緣檢測算法,從公式上進行化簡近似得到本系統所用的Sobel實現方式;通過對比MATLAB和FPGA的計算用時,可以看出FPGA的並行運算將速度提升了40倍以上,實現了算法的硬件加速,處理效果也能夠滿足系統的實時性要求。使用該算法處理攝像頭獲取的實時圖像,能夠達到良好的檢測效果。

參考文獻
[1]郝銳敏. 基於FPGA的視頻採集與邊緣檢測系統設計與實現 [D]. 中北大學碩士論文, 2018.
[2]喬磊. 基於基於FPGA的圖像邊緣檢測系統研究與設計 [D]. 安徽理工大學碩士論文, 2017.
[3]胡紅偉. 基於FPGA的圖像邊緣檢測系統研究 [D]. 哈爾濱工業大學碩士論文, 2014.
[4]杜建寶, 董恩增, 張祖鋒. 基於形態學的邊緣檢測系統與FPGA實現 [J]. 天津理工大學學報, 2018(34):26-29.
[5]陳倫海, 黃君凱, 楊帆等. 基於FPGA的實時邊緣檢測系統 [J]. 液晶與顯示, 2011(26):200-204.
[6]焦淑紅, 關晨輝. 實時視頻信號的Sobel邊緣檢測的FPGA實現 [J]. 電子科技, 2014(27):62-64.
[7]金大超. 基於FPGA的實時監測系統和邊緣檢測的研究與實現 [D]. 天津理工大學碩士論文, 2017.
[8]王海彥. 基於FPGA的實時彩色圖像邊緣檢測系統設計 [D]. 哈爾濱工程大學碩士論文, 2017.
[9]石嶽東. 基於SOPC的圖像邊緣特徵檢測的研究 [D]. 內蒙古大學碩士論文, 2016.
[10]譚豔, 王宇俊, 李飛龍等. 幾種典型的圖像邊緣檢測算法的分析比較 [J]. 電腦知識與技術, 2012(7):1604-1608.
[11]馬俊. 基於FPGA的實時圖像採集與預處理系統研究 [D]. 西南交通大學, 2015.
[12]Ming L I, Zhao X,Mao W. Implementation of Sobel Edge Detection Based on FPGA [J]. Modern Electronics Technique, 2009.
[13]Yi Zhang. Edge Detection Algorithm of Image Fusion Based on Improved Sobel Operator [A]. Proceedings of 2017 IEEE 3rd Information Technology and Mechatronics Engineering Conference (ITOEC 2017)[C]. 2017:5.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章