熊顯名,任娟娟
(桂林電子科技大學 電子工程與自動化學院,廣西 桂林 541004)
角點是圖像亮度變化與鄰點變化程度相差很大的點。Harris角點檢測算法[1]是由HARRIS C等人提出的,是基于圖像灰度的角點提取算法,即對圖像中像素點的灰度值進行處理,避免了基于邊緣輪廓的角點提取算法中提取輪廓的誤差。
攝像機標定是三維計算機視覺[2]的重要組成部分。要獲得三維物體的形狀和位置等信息,需從攝像機獲取該三維物體圖像信息。圖像上每個點的亮度反映了空間物體表面某點反射光的強度,而這些點在圖像上的位置與相應點空間物體表面的幾何位置有關。這些位置的相互關系,由攝相機成像的幾何模型決定,這種幾何模型的參數稱為攝像機參數。攝像機參數必須通過實驗計算確定,該過程稱為攝像機標定。因此,為了獲得空間物體的三維信息,必須對攝像機進行標定,獲取攝像機的內外參數。
平面標定法是傳統攝像機標定法的一種,是借助已知的標定物,即標定物的尺寸和形狀已知,利用標定物上的點與拍攝其所獲得圖像上對應點之間的對應關系建立數學模型,用此數學模型來標定攝像機內外參數[3]。對于利用黑白棋盤進行平面標定,提取圖像的角點是實現該方法的關鍵。本文首先對Harris角點檢測算法進行分析,針對其在黑白棋盤格角點檢測中的應用,提出了一種改進Harris角點檢測算法,并通過實驗,驗證了該算法的可行性。
Harris角點檢測算法:圖像的灰度梯度在角點的臨近區域有兩個或者兩個以上不連續的值。根據這種情況,Harris角點檢測可通過如下矩陣[4]來實現。
在一定大小的圖像窗口中:


其中,Ix和Iy為圖像沿x和y方向的灰度梯度;k值一般取0.04。
為避免噪聲的影響,首先對Ix和Iy進行高斯濾波,然后通過式(2)計算某個像素的R值,當該值大于預先設定的閾值時,標定該像素點為所求角點。其中閾值大小為 k×Rmax,Rmax是整幅圖像中 R 的最大值,0<k<1。
Harris角點檢測算法是一種簡單的角點提取算法,能夠在圖像旋轉、灰度變化以及噪聲干擾等情況下準確地提取角點,具有很高的穩定性。但Harris角點檢測算法依賴于系數k的設置,降低了算法的實時性與檢測精度;且需要設置像素R值的閾值。本文改進的Harris角點檢測算法既避免了k值和閾值的反復設置,也避免了角點聚簇現象的產生。
黑白棋盤格角點提取算法是基于平面標定法的傳統攝像機標定研究的重要部分。首先,應該對攝像機標定圖像中的黑白棋盤格進行區域提取。其方法是對除黑白棋盤格以外部分進行弱化處理,以屏蔽不需要角點提取的背景部分,突出需要提取角點的黑白棋盤格部分;降低了在角點檢測中角點提取的檢測時間。圖1為左目攝像機拍攝的圖像,圖2為圖1進行區域提取后獲得的圖像。可以看出,圖像在進行區域提取后,背景圖像被弱化,不再對角點提取產生影響,減小了角點提取的范圍。

圖1 未處理的圖像

圖2 區域提取后的圖像
(1)角點響應函數提出
由式(2)可知 k值不同獲得的 R值就會不同,提取角點的效果也就會不同。為獲得更好的角點提取效果,應選擇合適的k值和設置恰當的閾值,這需要通過多次調試,花費大量的時間。本文采用參考文獻[5]所提到的響應函數:

其中,ε為任意小的正數;式(3)與式(2)相比,消去了系數k,以此避免了k值的隨機選擇。
(2)角點提取及角點剔除
本文通過響應函數獲得響應函數矩陣,再對該矩陣中元素的8連通鄰域進行分塊處理[6-7]。在每塊區域中,按照從左到右,從上到下的順序依次遍歷[8],獲取區域最大值。首先,設置二值圖像中區域最大的像素點為1,其他像素點為0,在整個圖像檢測完后,返回二值圖像。然后,將二值圖像BW為1的R值進行從大到小排序[9],取前N個對應點作為角點,將剩余的非角點對應的像素點BW改為0。為了避免產生鄰近角點聚簇現象,對整幅圖像采用圖像分塊[10](如a×a的模板)算法進行處理。然而,受到光照等外界因素影響,導致仍存在分散的錯誤角點。對這些角點,再次采用圖像分塊算法(如b×b的模板)進行角點剔除,以降低角點誤檢率。
(3)角點精度提高
角點附近的灰度變化是漸變的,但此算法檢測到的角點精度為1個像素。為獲得角點的亞像素級坐標,本文采用二次曲面擬合法[11]。方法是利用式(4)所示的二次多項式來逼近角點響應函數R,以此來找到角點的亞像素級精確位置。

利用最小二乘法可以求解角點坐標(x,y)周圍的 9個像素點建立的含有a~f的6個未知量組成的超定方程組。 對式(4)求導數等于 0,可得到式(5)和式(6)。 亞像素級角點對應的坐標值為((x+xx),(y+yy))。
其中,xx,yy 的值為:


由以上分析可得,本文提出的改進Harris角點檢測算法實施過程如下。
對圖像中的每個像素點進行以下操作:(1)利用式(1)得到響應函數矩陣M,利用高斯濾波求出新的M值,再利用式(3)計算 R值;(2)利用編寫的響應函數文件生成響應函數矩陣C,再計算矩陣C中元素的8連通鄰域內區域最大值,提取角點,并生成二值圖像 BW;(3)用BW為1的坐標得出R值,按R值從大到小排列,取前N個作為被檢測的角點,并將前N個的角點坐標對應的二值圖像 BW 設置為 1,其余為 0;(4)找到二值圖像 BW為1的像素點對應的角點坐標,并剔除和角點相鄰近角點。方法是:先從N×2的矩陣空間提取BW=1的角點坐標,再在a×a范圍內尋找下一個 BW=1的角點坐標。若角點存在,則將兩個坐標的坐標值取平均,并將該值存入設定的矩陣中;若不存在,則將坐標值直接存入設定的矩陣中。采用以上4個步驟對整幅圖像進行處理,可以獲得角點坐標,并在圖像中顯示角點。對仍存在著分散的錯誤角點,需再次采用圖像分塊算法(如 b×b的模板)進行角點剔除,以降低誤檢率。最后,利用二次曲面擬合法將坐標精度達到亞像素級。
實驗中采用的攝像機是大恒圖像公司的HV1300FM,分辨率為 1 280×1 024,光學鏡頭采用日本 Computar公司的 M2514-MP百萬像素鏡頭,焦距為 25 mm,標定板大小為26 mm×20 mm,黑白棋盤格為11×8,精度為0.05 mm的棋盤格標定板。軟件采用MATLAB R2011b完成算法仿真驗證。一般情況下設定 N=160,a=5,b=25。圖3為未進行鄰近角點剔除的角點狀態(用+表示),圖4為進行鄰近角點剔除的角點狀態 (用*表示)。由圖4可看出,角點提取不存在聚簇現象。圖5為鄰近角點剔除前、后角點位置對比顯示。此外,圖6是當攝像機的分辨率為2 603×1 977時角點檢測情況。可以看出,當攝像機分辨率為2 603×1 977時,角點仍可以清晰的檢測出來,驗證了該算法在不同分辨率下的可行性。

圖3 未進行鄰近角點剔除的角點狀態

圖4 進行鄰近角點剔除的角點狀態

圖5 鄰近角點剔除前、后角點位置對比顯示

圖6 分辨率為2 063×1 977時的角點顯示
由于光照等外界因素影響,提取角點時,根據圖像顯示,N值需要進行相應的修改以避免角點漏檢。經實驗驗證,一般 N取值在 160~300范圍內,a取值 5,b取值在25~60范圍內。此算法的仿真過程中,對于仍被錯檢的角點,一般采用縮小N值進行提取角點,而非放大b值;對于縮小N值進行提取角點會造成角點丟失的,則采取調整b值大小。表1為不同圖像檢測到的角點情況(8幅)。一般情況下,如選擇合適的N值是不會產生角點丟失的。由表1可以看出,合理地選擇N值和b值可提高角點提取準確度。表2為角點坐標用二次曲面擬合法前后的角點像素級坐標與亞像素級坐標的對比值(隨機選出的10個角點坐標)。

表1 不同圖像檢測到的角點情況(8幅)

表2 用二次曲面擬合法前后角點坐標值對比
本文改進了Harris角點檢測算法。在不影響Harris角點檢測算法計算簡便性和穩定性的前提下,優化了角點提取算法的響應函數,同時采用區域最大值抑制和鄰近角點策略的方法,對角點進行剔除處理,改善了角點聚簇現象,使角點分布更加均勻。最后,利用二次曲面擬合法提高已獲得角點的精度。通過MATLAB軟件仿真,驗證了此算法在不同分辨率下的可行性。
[1]HARRIS C,STEPHENS M.A combined corner and edge detector[C].Proceedings of the 4th Alvey Vision Conference.August, 1988:147-151.
[2]SZELISKI R.計算機視覺算法與應用[M].北京:清華大學出版社,2012.
[3]曾令虎,劉鵬.攝像機標定的研究[J].武漢工業學院學報,2011,30(3):47-53.
[4]梁志敏,高洪明,王志江,等.攝像機標定中亞像素級角點檢測算法[J].焊接學報,2006,27(2):102-104.
[5]屈喜文.一種改進的Harris角點檢測方法[J].機電技術,2012(4):40-42.
[6]RAFAEL C G,RICHARD E W,STEVEN L E.Digital image processing using MATLAB[M].北京:電子工業出版社,2009.
[7]ZHU JX,YANG K.Fast harris corner detector algorithm based on image compression and block[C].Proceedings of the 10th International Conference on Electronic Measurement&Instruments (ICEMI),2011:143-146.
[8]周龍萍.基于改進的Harris算法檢測角點[J].計算機技術與發展,2013,23(2):11-14.
[9]常麗萍,冀小平,趙梁.分塊的基于 Harris角點檢測的圖像配準方法[J].電視技術,2013,37(1):45-47.
[10]趙萬金,龔聲蓉,劉純平,等.一種自適應的 Harris角點檢測算法[J].計算機工程,2008,34(10):212-217.
[11]張裕,方康玲,劉永祥.基于harris算法的黑白棋盤格角點檢測[J].計算機應用與軟件,2010,27(8):251-254.