潘聰,,黃魯
?。ㄖ袊茖W技術大學 信息科學技術學院,安徽 合肥 230026)
摘要:基于FPGA實現(xiàn)了一種自適應閾值Harris角點檢測,,用于解決低成本ARM處理器無法實時檢測到目標角點的問題,。該算法首先對整幀像素點進行預篩選,將篩選通過的點進行Harris角點檢測,,通過設置容忍距離剔除偽角點,,得到最終角點并通過LCD屏實時顯示。采用自適應閾值方法來解決單一閾值不適應于多樣化環(huán)境的問題,,使每幀(分辨率為480×272)都能檢測到大約120個角點,,在低成本FPGA芯片Spartan6 XC6SLX45上驗證實現(xiàn)。實驗結(jié)果表明,,該實現(xiàn)方法處理速度為115 f/s,,能高效準確地檢測到目標角點,滿足精度,、穩(wěn)定性和實時性要求,。
關鍵詞:角點檢測;預篩選,;自適應閾值,;FPGA
0引言
圖像處理中角點有多種定義,如圖像邊界上曲率足夠大的點[1],、圖像邊界上曲率變化明顯的點[2],、圖像邊界方向變化不連續(xù)的點[3]、圖像中梯度值和梯度變化率都很高的點[4]等,。
Harris角點檢測算法在計算機視覺領域中應用廣泛,,是很關鍵的前期步驟,如果角點檢測的精度或者速度達不到要求,將直接導致后期處理無法正常進行,。低成本的ARM處理器很難達到實時角點檢測的效果,,綜合考慮,低成本FPGA芯片實現(xiàn)Harris角點檢測是最佳方案,。本文設計的基于FPGA的Harris角點檢測實現(xiàn)方案相比于傳統(tǒng)方法,,增加了角點預篩選步驟和自適應閾值的步驟,在XC6SLX45芯片為主的硬件平臺上得到了驗證,。實驗結(jié)果證明,檢測到角點的精度和實時效果都能達到工程要求,。
1Harris角點檢測原理
Harris算子步驟[5]如下:
?。?)利用水平、豎直相鄰像素值之差求得Ix,、Iy,,進而求得M矩陣中4個元素的值。
?。?)對M的4個元素進行高斯濾波,,得到新的矩陣N。
(3)計算每個像素的角點響應值R,,公式如下:
選取k為0.04,。
(4)R大于閾值且滿足容忍距離的點認為是角點,。
2系統(tǒng)設計方案
2.1硬件環(huán)境
FPGA芯片通過I2C接口對攝像頭的寄存器進行配置,,采集30 f/s幀頻、分辨率為480×272的灰度圖像,。由于光照對角點檢測影響很大,,需要先對采集進來的圖像做直方圖均衡,將均衡后的圖像通過DPRAM進行4行緩存后進行Harris角點檢測邏輯運算,,將檢測到的角點在原圖上以黑色點的形式實時顯示在LCD上,,如圖1所示。
2.2硬件實現(xiàn)
本文的實現(xiàn)思路如下:(1)對直方圖均衡后的圖像進行預篩選,;(2)對篩選通過的像素點進行角點檢測運算,,將R大于閾值的像素點記為角點;(3)采用容忍距離剔除偽角點,,得到最終角點,。自適應閾值的思路是:第一幀圖像的閾值人為設定,從第二幀開始閾值由其前一幀的最大R值和角點數(shù)目得到,。
硬件實現(xiàn)方法分為4個模塊:角點預篩選模塊,、高斯濾波模塊、角點剔除模塊、自適應閾值模塊,。具體實現(xiàn)電路如圖2所示,。
2.2.1角點預篩選模塊
角點預篩選模塊包括窗口生成邏輯,x/y方向?qū)?shù)計算邏輯,,角點預篩選邏輯,。窗口生成邏輯利用16個8 bit寄存器和3個深度為476、寬度為8的DPRAM構(gòu)成,,如圖3所示,。
x/y方向?qū)?shù)邏輯分別計算x、y方向上的導數(shù),,計算方法是分別將4×4方形窗口的相鄰兩個像素相減(如圖4所示),。
對圖像進行預篩選能有效提高算法的處理速度。預篩選邏輯的思想為:如果中心點像素的灰度值之差的絕對值小于閾值t,,則判定中心點與周邊像素點相似,,否則認為與周邊像素點差異較大。一般情況下當兩個黑白圖像中的點的像素灰度差值小于像素灰度最大值的10%~15%時,,人眼難以分辨[6],。本文選取閾值為35,預篩選實現(xiàn)電路如圖5所示,。
2.2.2高斯濾波模塊
乘2,、乘4利用簡單的移位操作,除16則直接去掉低4位作為計算結(jié)果,。避免使用乘法器和除法器,,節(jié)省了大量的硬件資源。對這3個系數(shù)同時進行高斯濾波(如圖6)能最大程度地發(fā)揮并行優(yōu)勢,,提高運算速度,。
2.2.3角點剔除模塊
角點剔除模塊包括角點響應值計算邏輯,R值比較邏輯,,偽角點篩選邏輯,。
為了方便實現(xiàn),現(xiàn)將k值取5/128,,乘以5的計算邏輯可以轉(zhuǎn)化為左移兩位的移位寄存器和一個加法器,,除以128可以直接去掉低7位作為計算結(jié)果。
R值比較邏輯是為了得到每幀圖像計算得到的最大R值,,實現(xiàn)電路如圖7所示,。
如果大于閾值則認為該像素點是角點(其中包含很多偽角點)。在一定區(qū)域范圍內(nèi)只允許有一個角點,,本文利用寄存器和linebuffer設置25個像素點的容忍距離,,當feature信號的25 bit按位或非取值為1時表示該像素點為最終角點,。圖8為角點剔除邏輯實現(xiàn)電路。
2.2.4自適應閾值模塊
傳統(tǒng)方法設置單一的常量閾值,,無法滿足多樣化環(huán)境,,本文采用自適應閾值的方法來解決這個問題。只有第一幀圖像的閾值是人為設置,,其余幀的閾值則是由前一幀的最大角點響應值Rmax和檢測到的角點數(shù)目來得到(如表1),。
選取一系列多種環(huán)境下的圖像進行實驗,不斷調(diào)整設定的p值[7]來適應絕大多數(shù)圖像,,經(jīng)數(shù)據(jù)統(tǒng)計發(fā)現(xiàn)p取1.5×10-7~2.5×10-7時,,基本上能檢測到所有角點,且錯誤角點和漏檢角點都較少,。本文最終選取的p值為2.3×10-7,,約為2-22。
3實驗結(jié)果
硬件平臺角點檢測實時效果見圖9,,局部放大效果見圖10。
3.1資源占用分析
FPGA資源消耗如表2,。
3.2實時性分析
本文提出了采用50 MHz時鐘頻率作為系統(tǒng)時鐘,,Harris角點檢測算法處理每幀圖像(檢測大約120個角點)消耗時間為8.7 ms左右。經(jīng)過測試,,在檢測相同角點數(shù)目的情況下,,PC耗時大約是15 ms,ARM系統(tǒng)上耗時大約是120 ms,。相比較可以知道,,本文提出的實現(xiàn)方案能夠很好地滿足后續(xù)處理的實時性要求。
4結(jié)論
本文提出了一種基于FPGA的自適應Harris角點檢測實現(xiàn)方法,,試驗結(jié)果表明此方法能檢測到足夠數(shù)目的有效角點,,充分發(fā)揮FPGA硬件平臺的并行優(yōu)勢,相比于傳統(tǒng)的算法運算速度有大幅度提高,,能很好地滿足實時性要求,。因此,此硬件實現(xiàn)方案,,在精度和速度上都可滿足實際工程應用需要,。
參考文獻
[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.
?。?] 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.
?。?] 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.
?。?] 李博. 圖像的不變特征檢測與描述研究[D]. 重慶:重慶大學,2007.
?。?] 周大偉,耿金玲,鄭繼明,,等.一種基于人眼視覺特性的ROI漸進圖像傳輸算法[J].計算機應用,2007,27(7):1654 1656,1673.
[7] 沈士喆,張小龍,衡偉,,等.一種自適應閾值的預篩選Harris角點檢測方法[J].數(shù)據(jù)采集與處理,2011,26(2):207-213.