潘 聰,黃 魯
(中國科學技術大學 信息科學技術學院,安徽 合肥 230026)
?
基于FPGA的自適應閾值Harris角點檢測硬件實現
潘 聰,黃 魯
(中國科學技術大學 信息科學技術學院,安徽 合肥 230026)
基于FPGA實現了一種自適應閾值Harris角點檢測,用于解決低成本ARM處理器無法實時檢測到目標角點的問題。該算法首先對整幀像素點進行預篩選,將篩選通過的點進行Harris角點檢測,通過設置容忍距離剔除偽角點,得到最終角點并通過LCD屏實時顯示。采用自適應閾值方法來解決單一閾值不適應于多樣化環境的問題,使每幀(分辨率為480×272)都能檢測到大約120個角點,在低成本FPGA芯片Spartan6 XC6SLX45上驗證實現。實驗結果表明,該實現方法處理速度為115 f/s,能高效準確地檢測到目標角點,滿足精度、穩定性和實時性要求。
角點檢測;預篩選;自適應閾值;FPGA
圖像處理中角點有多種定義,如圖像邊界上曲率足夠大的點[1]、圖像邊界上曲率變化明顯的點[2]、圖像邊界方向變化不連續的點[3]、圖像中梯度值和梯度變化率都很高的點[4]等。
Harris角點檢測算法在計算機視覺領域中應用廣泛,是很關鍵的前期步驟,如果角點檢測的精度或者速度達不到要求,將直接導致后期處理無法正常進行。低成本的ARM處理器很難達到實時角點檢測的效果,綜合考慮,低成本FPGA芯片實現Harris角點檢測是最佳方案。本文設計的基于FPGA的Harris角點檢測實現方案相比于傳統方法,增加了角點預篩選步驟和自適應閾值的步驟,在XC6SLX45芯片為主的硬件平臺上得到了驗證。實驗結果證明,檢測到角點的精度和實時效果都能達到工程要求。
Harris算子步驟[5]如下:
(1)利用水平、豎直相鄰像素值之差求得Ix、Iy,進而求得M矩陣中4個元素的值。
(2)對M的4個元素進行高斯濾波,得到新的矩陣N。



(3)計算每個像素的角點響應值R,公式如下:
R=det(N)-k·trace(N)2
選取k為0.04。
(4)R大于閾值且滿足容忍距離的點認為是角點。
2.1 硬件環境
FPGA芯片通過I2C接口對攝像頭的寄存器進行配置,采集30 f/s幀頻、分辨率為480×272的灰度圖像。由于光照對角點檢測影響很大,需要先對采集進來的圖像做直方圖均衡,將均衡后的圖像通過DPRAM進行4行緩存后進行Harris角點檢測邏輯運算,將檢測到的角點在原圖上以黑色點的形式實時顯示在LCD上,如圖1所示。

圖1 系統硬件環境
2.2 硬件實現
本文的實現思路如下:(1)對直方圖均衡后的圖像進行預篩選;(2)對篩選通過的像素點進行角點檢測運算,將R大于閾值的像素點記為角點;(3)采用容忍距離剔除偽角點,得到最終角點。自適應閾值的思路是:第一幀圖像的閾值人為設定,從第二幀開始閾值由其前一幀的最大R值和角點數目得到。
硬件實現方法分為4個模塊:角點預篩選模塊、高斯濾波模塊、角點剔除模塊、自適應閾值模塊。具體實現電路如圖2所示。

圖2 Harris角點檢測自適應閾值實現電路
2.2.1 角點預篩選模塊

圖3 4×4窗口生成邏輯
角點預篩選模塊包括窗口生成邏輯,x/y方向導數計算邏輯,角點預篩選邏輯。窗口生成邏輯利用16個8 bit寄存器和3個深度為476、寬度為8的DPRAM構成,如圖3所示。
x/y方向導數邏輯分別計算x、y方向上的導數,計算方法是分別將4×4方形窗口的相鄰兩個像素相減(如圖4所示)。
對圖像進行預篩選能有效提高算法的處理速度。預篩選邏輯的思想為:如果中心點像素的灰度值之差的絕對值小于閾值t,則判定中心點與周邊像素點相似,否則認為與周邊像素點差異較大。一般情況下當兩個黑白圖像中的點的像素灰度差值小于像素灰度最大值的10%~15%時,人眼難以分辨[6]。本文選取閾值為35,預篩選實現電路如圖5所示。

圖4 x/y方向導數計算方法

圖5 角點預篩選邏輯實現電路
2.2.2 高斯濾波模塊
乘2、乘4利用簡單的移位操作,除16則直接去掉低4位作為計算結果。避免使用乘法器和除法器,節省了大量的硬件資源。對這3個系數同時進行高斯濾波(如圖6)能最大程度地發揮并行優勢,提高運算速度。
2.2.3 角點剔除模塊
角點剔除模塊包括角點響應值計算邏輯,R值比較邏輯,偽角點篩選邏輯。

圖6 高斯濾波卷積模塊的并行處理流程
為了方便實現,現將k值取5/128,乘以5的計算邏輯可以轉化為左移兩位的移位寄存器和一個加法器,除以128可以直接去掉低7位作為計算結果。
R值比較邏輯是為了得到每幀圖像計算得到的最大R值,實現電路如圖7所示。

圖7 R值比較邏輯實現電路
如果大于閾值則認為該像素點是角點(其中包含很多偽角點)。在一定區域范圍內只允許有一個角點,本文利用寄存器和linebuffer設置25個像素點的容忍距離,當feature信號的25 bit按位或非取值為1時表示該像素點為最終角點。圖8為角點剔除邏輯實現電路。

圖8 角點剔除邏輯實現電路
2.2.4 自適應閾值模塊
傳統方法設置單一的常量閾值,無法滿足多樣化環境,本文采用自適應閾值的方法來解決這個問題。只有第一幀圖像的閾值是人為設置,其余幀的閾值則是由前一幀的最大角點響應值Rmax和檢測到的角點數目來得到(如表1)。

表1 上一幀角點數目與下一幀的閾值關系
選取一系列多種環境下的圖像進行實驗,不斷調整設定的p值[7]來適應絕大多數圖像,經數據統計發現p取1.5×10-7~2.5×10-7時,基本上能檢測到所有角點,且錯誤角點和漏檢角點都較少。本文最終選取的p值為2.3×10-7,約為2-22。
硬件平臺角點檢測實時效果見圖9,局部放大效果見圖10。

圖9 LCD顯示屏顯示角點

圖10 將圖9局部放大效果
3.1 資源占用分析
FPGA資源消耗如表2。

表2 FPGA資源消耗
3.2 實時性分析
本文提出了采用50 MHz時鐘頻率作為系統時鐘,Harris角點檢測算法處理每幀圖像(檢測大約120個角點)消耗時間為8.7 ms左右。經過測試,在檢測相同角點數目的情況下,PC耗時大約是15 ms,ARM系統上耗時大約是120 ms。相比較可以知道,本文提出的實現方案能夠很好地滿足后續處理的實時性要求。
本文提出了一種基于FPGA的自適應Harris角點檢測實現方法,試驗結果表明此方法能檢測到足夠數目的有效角點,充分發揮FPGA硬件平臺的并行優勢,相比于傳統的算法運算速度有大幅度提高,能很好地滿足實時性要求。因此,此硬件實現方案,在精度和速度上都可滿足實際工程應用需要。
[1] SMITH S M,BRADY J M.SU SAN—a new approach to low-level image processing [ J].International Journal of Computer Vision,1997,23(1): 45-78.
[2] ZUNIGA O A,HARALICK R M.Corner detection using the facet model[C].Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition.Piscataway ,USA: IEEE,1983: 30-37.
[3] SHEU H T,HU W C.A rotationally invariant two-phase scheme for corner detection [J].Pattern Recognition,1996,29(5): 819-828.
[4] WU Z Q,ROSENFELD A.Filtered projections as an aid in corner detection[J].Pattern Recognition,1983,16(1):31-38.
[5] 李博.圖像的不變特征檢測與描述研究[D].重慶:重慶大學,2007.
[6] 周大偉,耿金玲,鄭繼明,等.一種基于人眼視覺特性的ROI漸進圖像傳輸算法[J].計算機應用,2007,27(7):1654-1656,1673.
[7] 沈士喆,張小龍,衡偉,等.一種自適應閾值的預篩選Harris角點檢測方法[J].數據采集與處理,2011,26(2):207-213.
Hardware implementation of adaptive threshold Harris corner detection based on FPGA
Pan Cong,Huang Lu
(School of Information Science and Technology,University of Science and Technology of China,Hefei 230026,China)
Based on FPGA an adaptive threshold Harris corner detection method is proposed to handle the problem that low cost ARM processors cannot do real-time detection of the target angular points.Firstly,the entire frame pixels pre-screening ,qualified pixels will be conducted by Harris corner point detection,by setting the tolerance distance to reject false corners and get the final corners,then real-time display through the LCD screen.In this paper,using an adaptive threshold method to solve the problem that a single threshold is not suitable to diverse environment.About 120 corners can be detected on each frame (with a resolution of 480×272).Using low-cost FPGA chip Spartan6 XC6SLX45 to verify and implement.Final results show that the processing speed of the method can up to 115 f/s,can efficiently and accurately detect the target corners,meet the requirements of accuracy,stability and real-time.
corner detection; pre-screening; adaptive threshold; FPGA
TN911.73
A DOI:10.19358/j.issn.1674-7720.2016.19.013
潘聰,黃魯.基于FPGA的自適應閾值Harris角點檢測硬件實現[J].微型機與應用,2016,35(19):44-46,49.
2016-06-15)
潘聰(1991-),女,碩士研究生,主要研究方向:數字圖像處理硬件實現研究。
黃魯(1961-),男,碩士,副教授,主要研究方向:數模混合高速接口集成電路設計。