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