熊顯名,任娟娟
(桂林電子科技大學(xué) 電子工程與自動(dòng)化學(xué)院,廣西 桂林 541004)
角點(diǎn)是圖像亮度變化與鄰點(diǎn)變化程度相差很大的點(diǎn)。Harris角點(diǎn)檢測(cè)算法[1]是由HARRIS C等人提出的,是基于圖像灰度的角點(diǎn)提取算法,即對(duì)圖像中像素點(diǎn)的灰度值進(jìn)行處理,避免了基于邊緣輪廓的角點(diǎn)提取算法中提取輪廓的誤差。
攝像機(jī)標(biāo)定是三維計(jì)算機(jī)視覺[2]的重要組成部分。要獲得三維物體的形狀和位置等信息,需從攝像機(jī)獲取該三維物體圖像信息。圖像上每個(gè)點(diǎn)的亮度反映了空間物體表面某點(diǎn)反射光的強(qiáng)度,而這些點(diǎn)在圖像上的位置與相應(yīng)點(diǎn)空間物體表面的幾何位置有關(guān)。這些位置的相互關(guān)系,由攝相機(jī)成像的幾何模型決定,這種幾何模型的參數(shù)稱為攝像機(jī)參數(shù)。攝像機(jī)參數(shù)必須通過實(shí)驗(yàn)計(jì)算確定,該過程稱為攝像機(jī)標(biāo)定。因此,為了獲得空間物體的三維信息,必須對(duì)攝像機(jī)進(jìn)行標(biāo)定,獲取攝像機(jī)的內(nèi)外參數(shù)。
平面標(biāo)定法是傳統(tǒng)攝像機(jī)標(biāo)定法的一種,是借助已知的標(biāo)定物,即標(biāo)定物的尺寸和形狀已知,利用標(biāo)定物上的點(diǎn)與拍攝其所獲得圖像上對(duì)應(yīng)點(diǎn)之間的對(duì)應(yīng)關(guān)系建立數(shù)學(xué)模型,用此數(shù)學(xué)模型來標(biāo)定攝像機(jī)內(nèi)外參數(shù)[3]。對(duì)于利用黑白棋盤進(jìn)行平面標(biāo)定,提取圖像的角點(diǎn)是實(shí)現(xiàn)該方法的關(guān)鍵。本文首先對(duì)Harris角點(diǎn)檢測(cè)算法進(jìn)行分析,針對(duì)其在黑白棋盤格角點(diǎn)檢測(cè)中的應(yīng)用,提出了一種改進(jìn)Harris角點(diǎn)檢測(cè)算法,并通過實(shí)驗(yàn),驗(yàn)證了該算法的可行性。
Harris角點(diǎn)檢測(cè)算法:圖像的灰度梯度在角點(diǎn)的臨近區(qū)域有兩個(gè)或者兩個(gè)以上不連續(xù)的值。根據(jù)這種情況,Harris角點(diǎn)檢測(cè)可通過如下矩陣[4]來實(shí)現(xiàn)。
在一定大小的圖像窗口中:
其中,Ix和Iy為圖像沿x和y方向的灰度梯度;k值一般取0.04。
為避免噪聲的影響,首先對(duì)Ix和Iy進(jìn)行高斯濾波,然后通過式(2)計(jì)算某個(gè)像素的R值,當(dāng)該值大于預(yù)先設(shè)定的閾值時(shí),標(biāo)定該像素點(diǎn)為所求角點(diǎn)。其中閾值大小為 k×Rmax,Rmax是整幅圖像中 R 的最大值,0<k<1。
Harris角點(diǎn)檢測(cè)算法是一種簡單的角點(diǎn)提取算法,能夠在圖像旋轉(zhuǎn)、灰度變化以及噪聲干擾等情況下準(zhǔn)確地提取角點(diǎn),具有很高的穩(wěn)定性。但Harris角點(diǎn)檢測(cè)算法依賴于系數(shù)k的設(shè)置,降低了算法的實(shí)時(shí)性與檢測(cè)精度;且需要設(shè)置像素R值的閾值。本文改進(jìn)的Harris角點(diǎn)檢測(cè)算法既避免了k值和閾值的反復(fù)設(shè)置,也避免了角點(diǎn)聚簇現(xiàn)象的產(chǎn)生。
黑白棋盤格角點(diǎn)提取算法是基于平面標(biāo)定法的傳統(tǒng)攝像機(jī)標(biāo)定研究的重要部分。首先,應(yīng)該對(duì)攝像機(jī)標(biāo)定圖像中的黑白棋盤格進(jìn)行區(qū)域提取。其方法是對(duì)除黑白棋盤格以外部分進(jìn)行弱化處理,以屏蔽不需要角點(diǎn)提取的背景部分,突出需要提取角點(diǎn)的黑白棋盤格部分;降低了在角點(diǎn)檢測(cè)中角點(diǎn)提取的檢測(cè)時(shí)間。圖1為左目攝像機(jī)拍攝的圖像,圖2為圖1進(jìn)行區(qū)域提取后獲得的圖像??梢钥闯觯瑘D像在進(jìn)行區(qū)域提取后,背景圖像被弱化,不再對(duì)角點(diǎn)提取產(chǎn)生影響,減小了角點(diǎn)提取的范圍。
圖1 未處理的圖像
圖2 區(qū)域提取后的圖像
(1)角點(diǎn)響應(yīng)函數(shù)提出
由式(2)可知 k值不同獲得的 R值就會(huì)不同,提取角點(diǎn)的效果也就會(huì)不同。為獲得更好的角點(diǎn)提取效果,應(yīng)選擇合適的k值和設(shè)置恰當(dāng)?shù)拈撝?,這需要通過多次調(diào)試,花費(fèi)大量的時(shí)間。本文采用參考文獻(xiàn)[5]所提到的響應(yīng)函數(shù):
其中,ε為任意小的正數(shù);式(3)與式(2)相比,消去了系數(shù)k,以此避免了k值的隨機(jī)選擇。
(2)角點(diǎn)提取及角點(diǎn)剔除
本文通過響應(yīng)函數(shù)獲得響應(yīng)函數(shù)矩陣,再對(duì)該矩陣中元素的8連通鄰域進(jìn)行分塊處理[6-7]。在每塊區(qū)域中,按照從左到右,從上到下的順序依次遍歷[8],獲取區(qū)域最大值。首先,設(shè)置二值圖像中區(qū)域最大的像素點(diǎn)為1,其他像素點(diǎn)為0,在整個(gè)圖像檢測(cè)完后,返回二值圖像。然后,將二值圖像BW為1的R值進(jìn)行從大到小排序[9],取前N個(gè)對(duì)應(yīng)點(diǎn)作為角點(diǎn),將剩余的非角點(diǎn)對(duì)應(yīng)的像素點(diǎn)BW改為0。為了避免產(chǎn)生鄰近角點(diǎn)聚簇現(xiàn)象,對(duì)整幅圖像采用圖像分塊[10](如a×a的模板)算法進(jìn)行處理。然而,受到光照等外界因素影響,導(dǎo)致仍存在分散的錯(cuò)誤角點(diǎn)。對(duì)這些角點(diǎn),再次采用圖像分塊算法(如b×b的模板)進(jìn)行角點(diǎn)剔除,以降低角點(diǎn)誤檢率。
(3)角點(diǎn)精度提高
角點(diǎn)附近的灰度變化是漸變的,但此算法檢測(cè)到的角點(diǎn)精度為1個(gè)像素。為獲得角點(diǎn)的亞像素級(jí)坐標(biāo),本文采用二次曲面擬合法[11]。方法是利用式(4)所示的二次多項(xiàng)式來逼近角點(diǎn)響應(yīng)函數(shù)R,以此來找到角點(diǎn)的亞像素級(jí)精確位置。
利用最小二乘法可以求解角點(diǎn)坐標(biāo)(x,y)周圍的 9個(gè)像素點(diǎn)建立的含有a~f的6個(gè)未知量組成的超定方程組。 對(duì)式(4)求導(dǎo)數(shù)等于 0,可得到式(5)和式(6)。 亞像素級(jí)角點(diǎn)對(duì)應(yīng)的坐標(biāo)值為((x+xx),(y+yy))。
其中,xx,yy 的值為:
由以上分析可得,本文提出的改進(jìn)Harris角點(diǎn)檢測(cè)算法實(shí)施過程如下。
對(duì)圖像中的每個(gè)像素點(diǎn)進(jìn)行以下操作:(1)利用式(1)得到響應(yīng)函數(shù)矩陣M,利用高斯濾波求出新的M值,再利用式(3)計(jì)算 R值;(2)利用編寫的響應(yīng)函數(shù)文件生成響應(yīng)函數(shù)矩陣C,再計(jì)算矩陣C中元素的8連通鄰域內(nèi)區(qū)域最大值,提取角點(diǎn),并生成二值圖像 BW;(3)用BW為1的坐標(biāo)得出R值,按R值從大到小排列,取前N個(gè)作為被檢測(cè)的角點(diǎn),并將前N個(gè)的角點(diǎn)坐標(biāo)對(duì)應(yīng)的二值圖像 BW 設(shè)置為 1,其余為 0;(4)找到二值圖像 BW為1的像素點(diǎn)對(duì)應(yīng)的角點(diǎn)坐標(biāo),并剔除和角點(diǎn)相鄰近角點(diǎn)。方法是:先從N×2的矩陣空間提取BW=1的角點(diǎn)坐標(biāo),再在a×a范圍內(nèi)尋找下一個(gè) BW=1的角點(diǎn)坐標(biāo)。若角點(diǎn)存在,則將兩個(gè)坐標(biāo)的坐標(biāo)值取平均,并將該值存入設(shè)定的矩陣中;若不存在,則將坐標(biāo)值直接存入設(shè)定的矩陣中。采用以上4個(gè)步驟對(duì)整幅圖像進(jìn)行處理,可以獲得角點(diǎn)坐標(biāo),并在圖像中顯示角點(diǎn)。對(duì)仍存在著分散的錯(cuò)誤角點(diǎn),需再次采用圖像分塊算法(如 b×b的模板)進(jìn)行角點(diǎn)剔除,以降低誤檢率。最后,利用二次曲面擬合法將坐標(biāo)精度達(dá)到亞像素級(jí)。
實(shí)驗(yàn)中采用的攝像機(jī)是大恒圖像公司的HV1300FM,分辨率為 1 280×1 024,光學(xué)鏡頭采用日本 Computar公司的 M2514-MP百萬像素鏡頭,焦距為 25 mm,標(biāo)定板大小為26 mm×20 mm,黑白棋盤格為11×8,精度為0.05 mm的棋盤格標(biāo)定板。軟件采用MATLAB R2011b完成算法仿真驗(yàn)證。一般情況下設(shè)定 N=160,a=5,b=25。圖3為未進(jìn)行鄰近角點(diǎn)剔除的角點(diǎn)狀態(tài)(用+表示),圖4為進(jìn)行鄰近角點(diǎn)剔除的角點(diǎn)狀態(tài) (用*表示)。由圖4可看出,角點(diǎn)提取不存在聚簇現(xiàn)象。圖5為鄰近角點(diǎn)剔除前、后角點(diǎn)位置對(duì)比顯示。此外,圖6是當(dāng)攝像機(jī)的分辨率為2 603×1 977時(shí)角點(diǎn)檢測(cè)情況??梢钥闯?,當(dāng)攝像機(jī)分辨率為2 603×1 977時(shí),角點(diǎn)仍可以清晰的檢測(cè)出來,驗(yàn)證了該算法在不同分辨率下的可行性。
圖3 未進(jìn)行鄰近角點(diǎn)剔除的角點(diǎn)狀態(tài)
圖4 進(jìn)行鄰近角點(diǎn)剔除的角點(diǎn)狀態(tài)
圖5 鄰近角點(diǎn)剔除前、后角點(diǎn)位置對(duì)比顯示
圖6 分辨率為2 063×1 977時(shí)的角點(diǎn)顯示
由于光照等外界因素影響,提取角點(diǎn)時(shí),根據(jù)圖像顯示,N值需要進(jìn)行相應(yīng)的修改以避免角點(diǎn)漏檢。經(jīng)實(shí)驗(yàn)驗(yàn)證,一般 N取值在 160~300范圍內(nèi),a取值 5,b取值在25~60范圍內(nèi)。此算法的仿真過程中,對(duì)于仍被錯(cuò)檢的角點(diǎn),一般采用縮小N值進(jìn)行提取角點(diǎn),而非放大b值;對(duì)于縮小N值進(jìn)行提取角點(diǎn)會(huì)造成角點(diǎn)丟失的,則采取調(diào)整b值大小。表1為不同圖像檢測(cè)到的角點(diǎn)情況(8幅)。一般情況下,如選擇合適的N值是不會(huì)產(chǎn)生角點(diǎn)丟失的。由表1可以看出,合理地選擇N值和b值可提高角點(diǎn)提取準(zhǔn)確度。表2為角點(diǎn)坐標(biāo)用二次曲面擬合法前后的角點(diǎn)像素級(jí)坐標(biāo)與亞像素級(jí)坐標(biāo)的對(duì)比值(隨機(jī)選出的10個(gè)角點(diǎn)坐標(biāo))。
表1 不同圖像檢測(cè)到的角點(diǎn)情況(8幅)
表2 用二次曲面擬合法前后角點(diǎn)坐標(biāo)值對(duì)比
本文改進(jìn)了Harris角點(diǎn)檢測(cè)算法。在不影響Harris角點(diǎn)檢測(cè)算法計(jì)算簡便性和穩(wěn)定性的前提下,優(yōu)化了角點(diǎn)提取算法的響應(yīng)函數(shù),同時(shí)采用區(qū)域最大值抑制和鄰近角點(diǎn)策略的方法,對(duì)角點(diǎn)進(jìn)行剔除處理,改善了角點(diǎn)聚簇現(xiàn)象,使角點(diǎn)分布更加均勻。最后,利用二次曲面擬合法提高已獲得角點(diǎn)的精度。通過MATLAB軟件仿真,驗(yàn)證了此算法在不同分辨率下的可行性。
[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.計(jì)算機(jī)視覺算法與應(yīng)用[M].北京:清華大學(xué)出版社,2012.
[3]曾令虎,劉鵬.攝像機(jī)標(biāo)定的研究[J].武漢工業(yè)學(xué)院學(xué)報(bào),2011,30(3):47-53.
[4]梁志敏,高洪明,王志江,等.攝像機(jī)標(biāo)定中亞像素級(jí)角點(diǎn)檢測(cè)算法[J].焊接學(xué)報(bào),2006,27(2):102-104.
[5]屈喜文.一種改進(jìn)的Harris角點(diǎn)檢測(cè)方法[J].機(jī)電技術(shù),2012(4):40-42.
[6]RAFAEL C G,RICHARD E W,STEVEN L E.Digital image processing using MATLAB[M].北京:電子工業(yè)出版社,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]周龍萍.基于改進(jìn)的Harris算法檢測(cè)角點(diǎn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2013,23(2):11-14.
[9]常麗萍,冀小平,趙梁.分塊的基于 Harris角點(diǎn)檢測(cè)的圖像配準(zhǔn)方法[J].電視技術(shù),2013,37(1):45-47.
[10]趙萬金,龔聲蓉,劉純平,等.一種自適應(yīng)的 Harris角點(diǎn)檢測(cè)算法[J].計(jì)算機(jī)工程,2008,34(10):212-217.
[11]張?jiān)#娇盗?,劉永?基于harris算法的黑白棋盤格角點(diǎn)檢測(cè)[J].計(jì)算機(jī)應(yīng)用與軟件,2010,27(8):251-254.