【信息科學(xué)與控制工程】
相機(jī)標(biāo)定中角點(diǎn)檢測(cè)與定位算法研究
戴憲策,劉昌錦
(新星技術(shù)研究所,合肥230031)
摘要:平面標(biāo)定法是傳統(tǒng)相機(jī)標(biāo)定方法中較為常用的方法,標(biāo)定板角點(diǎn)的準(zhǔn)確檢測(cè)和精確定位是平面標(biāo)定法的關(guān)鍵;針對(duì)當(dāng)前標(biāo)定板角點(diǎn)檢測(cè)算法中存在的需要人工參與、適用性弱或引入偽角點(diǎn)的問題,提出了基于形態(tài)學(xué)處理的角點(diǎn)檢測(cè)和定位算法,主要通過形態(tài)學(xué)處理的方法檢測(cè)棋盤的角點(diǎn)位置,然后經(jīng)過擬合得到角點(diǎn)的亞像素級(jí)位置;實(shí)驗(yàn)驗(yàn)證本文算法在角點(diǎn)檢測(cè)上具有較高的成功率,并且提高了相機(jī)標(biāo)定的精度。
關(guān)鍵詞:相機(jī)標(biāo)定;角點(diǎn)檢測(cè);形態(tài)學(xué)處理
收稿日期:2015-02-20
作者簡介:戴憲策(1990—),男,碩士研究生,主要從事立體視覺研究。
doi:10.11809/scbgxb2015.09.031
中圖分類號(hào):TP391.4
文章編號(hào):1006-0707(2015)09-0122-04
本文引用格式:戴憲策,劉昌錦.相機(jī)標(biāo)定中角點(diǎn)檢測(cè)與定位算法研究[J].四川兵工學(xué)報(bào),2015(9):122-125.
Citationformat:DAIXian-ce,LIUChang-jin.ResearchofCornersDetectionandLocationAlgorithmforCameraCalibration[J].JournalofSichuanOrdnance,2015(9):122-125.
ResearchofCornersDetectionandLocationAlgorithmfor
CameraCalibration
DAIXian-ce,LIUChang-jin
(NewStarInstituteofAppliedTechnology,Hefei230031,China)
Abstract:Camera calibration based on planar chessboard is commonly used in traditional camera calibration methods. The detection and accurate location of chessboard corners is the key of this method. Aiming to solve the problems of artificial participation, weak feasibility or importing fake corners, a novel corners detection and location algorithm based on morphological processing was introduced. Firstly, initial location of corners was found mainly by morphological processing. Then the sub-pixel location was acquired by curve fitting. Experiments shows that this method not only has a high successful rate, but also improves the accuracy of camera calibration.
Keywords:cameracalibration;cornerdetection;morphologicalprocessing
相機(jī)標(biāo)定的目的是獲取相機(jī)的內(nèi)外參數(shù),當(dāng)前相機(jī)標(biāo)定的方法有傳統(tǒng)標(biāo)定方法,自標(biāo)定方法和基于主動(dòng)視覺的標(biāo)定方法[1]。其中基于黑白棋盤標(biāo)定板的傳統(tǒng)標(biāo)定方法是應(yīng)用較為廣泛并且精度較高的方法,該方法是由張正友在2000年提出的[2]。黑白棋盤標(biāo)定法的關(guān)鍵步驟是角點(diǎn)位置的精確獲取。典型的黑白棋盤標(biāo)定板角點(diǎn)檢測(cè)算法有基于Matlab工具箱的角點(diǎn)檢測(cè)算法、基于OpenCV的角點(diǎn)檢測(cè)算法和張廣軍角點(diǎn)檢測(cè)算法[3]。但是基于Matlab工具箱的角點(diǎn)檢測(cè)需要人工選擇標(biāo)定板的4個(gè)極限角點(diǎn),基于OpenCV的角點(diǎn)檢測(cè)在相機(jī)畸變較大、分辨率較低和模糊時(shí)失敗率很高,張廣軍的角點(diǎn)檢測(cè)算法容易引入非棋盤角點(diǎn)。針對(duì)以上問題,本文提出了基于形態(tài)學(xué)的角點(diǎn)檢測(cè)與定位算法。
1數(shù)學(xué)形態(tài)學(xué)
數(shù)學(xué)形態(tài)學(xué)是幾何形態(tài)學(xué)分析和描述的有力工具。1964年,法國的Matheron和Serra將數(shù)學(xué)形態(tài)學(xué)引入圖像處理。數(shù)學(xué)形態(tài)學(xué)具有并行快速、易于硬件實(shí)現(xiàn)的優(yōu)點(diǎn),發(fā)展迅速,廣泛應(yīng)用于計(jì)算機(jī)視覺、模式識(shí)別、圖像分析等領(lǐng)域。數(shù)學(xué)形態(tài)學(xué)使用結(jié)構(gòu)元素對(duì)圖像中的對(duì)應(yīng)形狀作運(yùn)算來實(shí)現(xiàn)圖像分析和識(shí)別,在保持圖像基本形狀的同時(shí)簡化了圖像數(shù)據(jù)[4]。
數(shù)學(xué)形態(tài)學(xué)的基本運(yùn)算有4種:膨脹、腐蝕、開運(yùn)算和閉運(yùn)算[5],4種基本運(yùn)算還可以推導(dǎo)和組合出不同的形態(tài)學(xué)處理算法。
1.1膨脹
膨脹是在圖像中“加長”或“變粗”的操作,程度由結(jié)構(gòu)元素的形狀控制。圖像A用結(jié)構(gòu)元素B膨脹定義:
(1)
1.2腐蝕
腐蝕與膨脹互為對(duì)偶操作,腐蝕的一般效果是將圖像中的對(duì)象“收縮”或“細(xì)化”。腐蝕的運(yùn)算符號(hào)為?,圖像A用結(jié)構(gòu)元素B腐蝕定義為
(2)
上述公式表明腐蝕的結(jié)果是B平移z后仍在A中的所有z的集合,也即所有結(jié)構(gòu)元素的的原點(diǎn)位置的集合[4]。
1.3開運(yùn)算和閉運(yùn)算
開運(yùn)算和閉運(yùn)算是膨脹和腐蝕的不同組合操作,結(jié)構(gòu)元素B對(duì)圖像A進(jìn)行開運(yùn)算或閉運(yùn)算,其定義分別為[6]:
開運(yùn)算
A ° B=(A!B)⊕B
(3)
閉運(yùn)算
A·B=(A⊕B)!B
(4)
開運(yùn)算和閉運(yùn)算都會(huì)使圖像輪廓光滑。開運(yùn)算通常用于斷開對(duì)象中狹窄的斷裂和消除細(xì)的突出;閉運(yùn)算與開運(yùn)算的作用相反,通常用于消除狹窄的斷裂,并填充比結(jié)構(gòu)元素小的空洞。
2角點(diǎn)自動(dòng)檢測(cè)與定位算法
2.1角點(diǎn)檢測(cè)算法
黑白棋盤標(biāo)定板具有以下特征:標(biāo)定板區(qū)域的梯度變化劇烈;標(biāo)定板區(qū)域的梯度分布連續(xù);角點(diǎn)位于梯度線的交點(diǎn)鄰域內(nèi)。
根據(jù)以上特征,本文提出了基于形態(tài)學(xué)的角點(diǎn)檢測(cè)算法,算法的流程如圖1所示。
1) 梯度計(jì)算。梯度計(jì)算使用的算子是Scharr算子[7],分為x方向和y方向,分別為:
(5)
(6)
分別計(jì)算出每個(gè)像素點(diǎn)x方向和y方向上的梯度并進(jìn)行矢量疊加,以疊加后的矢量的模作為該像素點(diǎn)的最終梯度值,設(shè)(x,y)處像素點(diǎn)x方向和y方向上的梯度分別為gx(x,y)和gy(x,y),則其最終梯度值g(i,j)為
(7)
通過梯度計(jì)算得到梯度圖,用G表示。
圖1 角點(diǎn)檢測(cè)流程
2) 局部閾值二值化。二值化的方法是局部閾值二值化,采用9×9的窗口。設(shè)窗口中心像素的梯度值為g(x,y),若g(x,y)滿足
(8)
其中,β為比例系數(shù)。那么該點(diǎn)二值化的結(jié)果為1。局部閾值二值化使用腐蝕膨脹簡化計(jì)算。腐蝕膨脹使用如下的結(jié)構(gòu)元素
即9階全1方陣,原點(diǎn)在方陣中心位置。設(shè)腐蝕后的梯度圖為Gmin,膨脹后的梯度圖為Gmax,二值化后的圖像為B,則有
(9)
其中,b(x,y)表示二值化圖像B中(x,y)位置處的值。
3) 條件膨脹。圖像中邊緣的寬度并非理想的1個(gè)像素寬度,加上噪聲的影響,導(dǎo)致邊緣上的梯度值并非處處相等,在二值化過程中會(huì)產(chǎn)生“空洞”。因此對(duì)二值化圖像進(jìn)行條件膨脹,以填補(bǔ)空洞。膨脹使用的窗口是3×3的窗口,判斷條件如下
(10)
膨脹填補(bǔ)了二值化梯度圖中邊緣上小的空洞,有利于下一步的處理。
4) 骨架收縮。骨架收縮的目的是將邊緣的寬度縮小為1個(gè)像素,并保持其連續(xù)性。首先使用形態(tài)學(xué)中的細(xì)化算法,定義為
A?B=A-(A#B)
(11)
其中A#B表示擊中或擊不中變換。通過細(xì)化后的骨架包含了很多非標(biāo)定板邊緣的結(jié)構(gòu),可以分為連通結(jié)構(gòu)和非連通結(jié)構(gòu)。通過判定結(jié)構(gòu)是否具有連通性去除非連通結(jié)構(gòu),同時(shí)剔除連通結(jié)構(gòu)中邊緣包含的像素點(diǎn)的個(gè)數(shù)小于一定閾值的部分。
5) 鞍點(diǎn)提取。通過骨架收縮,得到的是梯度連通區(qū)域1個(gè)像素寬度的邊緣,因此,鞍點(diǎn)提取等價(jià)于邊緣交點(diǎn)的提取。設(shè)收縮后的梯度圖像為G′,由值為1的點(diǎn)和連通區(qū)域的邊緣組成,分別為N和E,其數(shù)學(xué)描述為
(12)
其中,d(ni,nj)表示兩點(diǎn)之間的歐式距離。則鞍點(diǎn)S的數(shù)學(xué)描述為
(13)
6) 鞍點(diǎn)聚攏。點(diǎn)簇的聚攏由距離決定,因而需要設(shè)置合適的距離值。距離值小,會(huì)導(dǎo)致原本屬于一個(gè)角點(diǎn)的點(diǎn)簇錯(cuò)誤地聚攏成兩個(gè)點(diǎn);距離值過大,會(huì)造成相鄰的兩個(gè)角點(diǎn)點(diǎn)簇聚攏成一個(gè)角點(diǎn)。因此,從距離2開始,結(jié)合步驟7的角點(diǎn)驗(yàn)證,逐步增加距離值,并設(shè)置距離值的最大閾值為6。當(dāng)提取出符合條件的角點(diǎn)時(shí)或者達(dá)到最大距離值截止。
7)角點(diǎn)驗(yàn)證。角點(diǎn)驗(yàn)證使用骨架收縮后的邊緣和聚攏后的角點(diǎn)。首先計(jì)算一個(gè)連通結(jié)構(gòu)中角點(diǎn)的個(gè)數(shù),當(dāng)與實(shí)際個(gè)數(shù)一致時(shí),對(duì)角點(diǎn)進(jìn)行驗(yàn)證。黑白棋盤的角點(diǎn)類型有3種:邊緣位置角點(diǎn),即在3個(gè)方向上有相鄰角點(diǎn)的角點(diǎn);角點(diǎn)位置角點(diǎn),在兩個(gè)方向上有相鄰角點(diǎn)的角點(diǎn),且兩個(gè)相鄰角點(diǎn)均為邊緣位置角點(diǎn);內(nèi)部角點(diǎn),即在4個(gè)方向上均有相鄰角點(diǎn)的角點(diǎn)。設(shè)黑白棋盤角點(diǎn)的個(gè)數(shù)為m×n個(gè),則3個(gè)類型的角點(diǎn)個(gè)數(shù)分別為:邊緣位置角點(diǎn)2(m+n-4)個(gè),角點(diǎn)位置角點(diǎn)4個(gè),內(nèi)部角點(diǎn)(m-2)×(n-2)個(gè)。角點(diǎn)驗(yàn)證正確后,以角點(diǎn)點(diǎn)簇坐標(biāo)的平均值作為角點(diǎn)的初始位置。角點(diǎn)自動(dòng)提取過程中的圖像如圖2所示。
從圖2中可以得出,通過以上流程,能夠準(zhǔn)確自動(dòng)地提取出標(biāo)定板區(qū)域,并確定出角點(diǎn)的初始位置。
2.2角點(diǎn)定位算法
通過上一節(jié)中的角點(diǎn)提取算法提取到角點(diǎn)的初始位置后,必須將角點(diǎn)的定位精度提高到亞像素級(jí)別才能使標(biāo)定的結(jié)果準(zhǔn)確可靠。本文將角點(diǎn)視作圖像中的鞍點(diǎn),因此通過計(jì)算鞍點(diǎn)的方法來確定角點(diǎn)的準(zhǔn)確位置。角點(diǎn)定位算法分為圖像濾波和擬合兩步。首先利用錐形低通濾波器對(duì)角點(diǎn)的鄰域進(jìn)行濾波處理,濾波器核c的表達(dá)式為
(14)
其中,r表示濾波器核c的半徑。r的大小設(shè)置需大于擬合所用的鄰域窗口的大小,否則會(huì)出現(xiàn)擬合失敗的情況。
擬合使用的是二元二次多項(xiàng)式,表達(dá)式為
(15)
其中,aij表示多項(xiàng)式的系數(shù)。
圖2 提取過程中間圖像
3實(shí)驗(yàn)驗(yàn)證
為驗(yàn)證算法的可靠性和精度,本文設(shè)計(jì)兩個(gè)實(shí)驗(yàn)對(duì)基于OpenCV的標(biāo)定算法和本文算法進(jìn)行對(duì)比。為了驗(yàn)證本文算法的魯棒性,本文選取了3種不同的相機(jī)鏡頭來進(jìn)行實(shí)驗(yàn)。第1種是普通的網(wǎng)絡(luò)攝像頭,第2種選用的是BalseracA1600-20gc工業(yè)相機(jī),鏡頭采用ComputarM3Z1228C-MP變焦鏡頭,第3種選擇的相機(jī)是BalseracA640-120gm工業(yè)相機(jī),鏡頭采用JapanTVlens定焦鏡頭,焦距為16mm。
3.1成功率對(duì)比實(shí)驗(yàn)
第1個(gè)實(shí)驗(yàn)是成功率對(duì)比實(shí)驗(yàn),本文拍攝了不同角度和距離下的100張標(biāo)定板圖像進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果見表1。
表1 成功率對(duì)比實(shí)驗(yàn)結(jié)果
從表1中可以得出,本文算法在成功率方面高于OpenCV:對(duì)于網(wǎng)絡(luò)攝像頭,OpenCV和本文算法均能夠?qū)⑷繄D像中的標(biāo)定板檢測(cè)出來;對(duì)于兩個(gè)工業(yè)相機(jī)和鏡頭,OpenCV不能將全部標(biāo)定板區(qū)域檢測(cè)出來,而本文算法則表現(xiàn)出了很好的魯棒性,能夠全部檢測(cè)出來。
3.2精度對(duì)比實(shí)驗(yàn)
本文設(shè)計(jì)的第2個(gè)實(shí)驗(yàn)是精度對(duì)比實(shí)驗(yàn),將本文的角點(diǎn)定位算法得到的角點(diǎn)坐標(biāo)進(jìn)行標(biāo)定,與OpenCV中的標(biāo)定結(jié)果進(jìn)行比較,比較采用的指標(biāo)是平均重投影誤差,表達(dá)式為
(16)
其中,mij表示第i張圖像中第j個(gè)角點(diǎn)的坐標(biāo),k表示標(biāo)定板上角點(diǎn)總個(gè)數(shù),n表示拍攝到的圖像的總個(gè)數(shù)。標(biāo)定采用的圖像個(gè)數(shù)以此從5個(gè)到21個(gè),實(shí)驗(yàn)得到的結(jié)果如圖3所示。
從圖3中可以看出,本文算法在3種條件下較OpenCV的標(biāo)定精度都有很大的提高。
圖3 算法對(duì)比結(jié)果
4結(jié)束語
本文提出了角點(diǎn)檢測(cè)和定位算法,通過形態(tài)學(xué)處理和角點(diǎn)驗(yàn)證,能夠準(zhǔn)確檢測(cè)到黑白棋盤標(biāo)定板的角點(diǎn)位置,在角點(diǎn)初始位置的基礎(chǔ)上,通過擬合算法將角點(diǎn)定位到亞像素級(jí)別精度。實(shí)驗(yàn)驗(yàn)證表明本文算法具有較高的魯棒性,相對(duì)于OpenCV具有較高的成功率,并且提高了標(biāo)定的精度。下一步的研究方向是提高角點(diǎn)檢測(cè)算法的速度,并進(jìn)一步提高角點(diǎn)檢測(cè)算法的魯棒性。
參考文獻(xiàn):
[1]JunhuaSun,QianzheLiu,ZhenLiu,etal.ACalibrationMethodforStereoVisionSensorwithLargeFovBasedon1DTargets[J].OpticsandLasersinEngineering,2011,49(11):1245-1250.
[2]ZhengyouZhang.AFlexibleNewTechniqueforCameraCalibration[J].IEEETransactionsonPatternAnalysisandMachineIntelligence,2000,22(11):1330-1334.
[3]何娟.攝像機(jī)標(biāo)定中角點(diǎn)快速提取算法研究[D].長沙:國防科技大學(xué),2011.
[4]岡薩雷斯.數(shù)字圖像處理[M].2版.北京:電子工業(yè)出版社,2010.
[5]余文勇,石會(huì).機(jī)器視覺自動(dòng)檢測(cè)技術(shù)[M].北京:化學(xué)工業(yè)出版社,2013.
[6]王洋,謝權(quán)威.基于相機(jī)響應(yīng)函數(shù)的圖像盲檢測(cè)技術(shù)研究[J].重慶工商大學(xué)學(xué)報(bào):自然科學(xué)版,2014,31(3):55-61.
[7]陳兵旗.機(jī)器視覺技術(shù)及應(yīng)用實(shí)例詳解[M].北京:化學(xué)工業(yè)出版社,2014.
[8]GaryBradski,AdrianKaehler.學(xué)習(xí)OpenCV(中文版)[M].于仕琪,劉瑞楨,譯.北京:清華大學(xué)出版社,2009.
(責(zé)任編輯楊繼森)