劉 嵩,葉玉堂,孫 強(qiáng),宋昀岑
(電子科技大學(xué) 光電信息學(xué)院,四川 成都 610054)
現(xiàn)代光電測(cè)控儀器經(jīng)常需要對(duì)工業(yè)相機(jī)進(jìn)行標(biāo)定[1],尤其是需要對(duì)物體三維信息和表面幾何形狀重建的機(jī)器視覺儀器。相機(jī)標(biāo)定是確定三維空間立體坐標(biāo)與相機(jī)CCD二維圖像坐標(biāo)系之間坐標(biāo)變換的過程,也是機(jī)器視覺領(lǐng)域里的基本問題[2],而相機(jī)標(biāo)定的精度在很大程度上取決于標(biāo)定模式特征點(diǎn)的圖像定位精度。在相機(jī)標(biāo)定算法中,基于棋盤格的相機(jī)標(biāo)定由于標(biāo)定模板制作簡(jiǎn)單,并且標(biāo)定精度可以滿足要求,因此得到了廣泛的應(yīng)用。
在使用棋盤格進(jìn)行標(biāo)定的過程中,對(duì)棋盤格角點(diǎn)的檢測(cè)是至關(guān)重要的一步,現(xiàn)在也有很多角點(diǎn)檢測(cè)方法。但是,由于棋盤格背景復(fù)雜,為了提高在復(fù)雜背景環(huán)境下對(duì)棋盤格角點(diǎn)檢測(cè)的精度,采用參考文獻(xiàn)[3]中的算法思想,將單應(yīng)性矩陣應(yīng)用在棋盤格角點(diǎn)的檢測(cè)中,提高了角點(diǎn)的檢測(cè)精度。單應(yīng)性矩陣在視頻圖像分析、視覺測(cè)量和視覺伺服中都得到廣泛的應(yīng)用[4-5]。
在已知初始化角點(diǎn)坐標(biāo)的前提下,文中采用了一種簡(jiǎn)單有效的角點(diǎn)檢測(cè)方法[3-4,6],該算法采用由粗到精的多層策略,綜合運(yùn)用了內(nèi)插值法、Harris算子、Forstner算子、SVD方法。
1)設(shè)定角點(diǎn)所在的窗口大小為winx和winy,已知待檢測(cè)的一個(gè)角點(diǎn)的初始圖像坐標(biāo)為(ui,vi),這里一般初始坐標(biāo)不是整數(shù)。首先使用內(nèi)插值法將包含初始角點(diǎn)的矩形窗口圖像矩陣變換成以亞像素角點(diǎn)位置為中心的圖像矩陣。這里,采用雙線性插值對(duì)一個(gè)目標(biāo)像素設(shè)置坐標(biāo),通過反向變換得到浮點(diǎn)坐標(biāo)為(u+Δu,v+Δv),其中 u,v 均為非負(fù)整數(shù),Δu,Δv為[0,1)區(qū)間的浮點(diǎn)數(shù),則這個(gè)像素的灰度值為:
2)對(duì)得到的以角點(diǎn)浮點(diǎn)坐標(biāo)(ui,vi)為中心的窗口浮點(diǎn)圖像矩陣 S,根據(jù) Harris角點(diǎn)檢測(cè)算子原理,可以求得以(ui,vi)為中心進(jìn)行展開的自相關(guān)函數(shù)E(ui,vi)所對(duì)應(yīng)的 Hessian矩陣[7-8]。
3) 使用 Forstner算子對(duì)初始角(ui,vi)點(diǎn)進(jìn)行更新
Forstner算子[6,9]是攝影測(cè)量學(xué)中著名的點(diǎn)定位算子?;舅枷胧牵簩?duì)于角點(diǎn),將窗口內(nèi)通過每個(gè)像素的邊緣直線(垂直于梯度方向)進(jìn)行加權(quán)平均化,得到角點(diǎn)定位坐標(biāo)。
其中,u′,v′表示更新后角點(diǎn)的定位坐標(biāo),a~f的定義如式(4)表達(dá)。
其中,ui,vi表示更新前的角點(diǎn)坐標(biāo)。
經(jīng)過上述方法檢測(cè)后得到的角點(diǎn)可能存在誤檢、多檢的情況,需要采用SVD方法去除奇異角點(diǎn)[3]。因?yàn)镠essian矩陣M包含窗口方向梯度信息,所以對(duì)矩陣M進(jìn)行奇異值分解:
其中Sλ為相應(yīng)特征值組成的對(duì)角矩陣,U、V為特征向量組成的酉矩陣。若M只是包含獨(dú)立角點(diǎn)或者邊緣,則ΣSu2、SuSv、ΣSv2的值,要么相差很大,要么相差很小,在這兩種情況下進(jìn)行奇異值分解后,Sλ的兩個(gè)特征值λ1,λ2相差很大,當(dāng)滿足|λ1/λ2|≥θ時(shí),則該角點(diǎn)為誤檢或多檢。這里取閾值 θ=50[3,6],通過該方法可以有效的去除非角點(diǎn)。
為了達(dá)到更高的角點(diǎn)檢測(cè)精度,這里使用迭代方法。
算法1
Step1: 初始化待測(cè)角點(diǎn)坐標(biāo)(ui,vi),處理窗口大小 winx,winy,得到此窗口圖像矩陣Si。設(shè)迭代距離誤差為EPS,迭代次數(shù)為N,并令更新后的角點(diǎn)和上一次角點(diǎn)的二范數(shù)距離dist=EPS+1,執(zhí)行 Step2。
Step2:如果dist大于EPS并且此時(shí)迭代次數(shù)n小于N,對(duì)Si進(jìn)行雙線性插值,得到以(ui,vi)為中心的浮點(diǎn)窗口矩陣S,否則跳轉(zhuǎn)到 Step5。
Step3:計(jì)算(ui,vi)對(duì)應(yīng)的 Hessian 矩陣 M。
Step4:根據(jù)式(3)計(jì)算更新后的角點(diǎn)坐標(biāo) ui,vi。 如果 M的特征值滿足|λ1/λ2|≥θ,則該點(diǎn)為歧義角點(diǎn),跳轉(zhuǎn)到 Step2,令n=n+1并更新dist的值。
Step5:輸出最終的角點(diǎn)(u′,v′)。
記標(biāo)定板上標(biāo)定點(diǎn)的圖像齊次坐標(biāo)為 Xf=(u,v,1),對(duì)應(yīng)的齊次世界坐標(biāo)為 Xw=(xw,yw,1)(zw=0)。 尋找單應(yīng)性矩陣就是找到圖像2D平面上點(diǎn)Xf和2D標(biāo)定板上標(biāo)定點(diǎn)的世界坐標(biāo)Xw的對(duì)應(yīng)關(guān)系。這種變換關(guān)系[10]可以表示為:
由于式(6)包含齊次坐標(biāo),這樣三維向量Xf和HXw不相等,它們有相同的方向但模之間有不為零的比例因子。因此可將方程改寫為向量差乘的形式:
這樣,式(7)可以通過簡(jiǎn)單的線性求解出H。
現(xiàn)記H的第j行為hjT,那么可以得到:
設(shè) Xf=(u,v,w)T,那么式(7)中的差乘可以寫成:
式(10)即為 Aih=0。其中 Ai是 3×9 的矩陣,h 是 1×9 矩陣并組成H。
hi為h的第i個(gè)元素。
Aih=0為h的線性方程,其中Ai是給定角點(diǎn)的二次型。盡管式(10)有3個(gè)方程,但是第3個(gè)方程可以通過第1個(gè)方程的ui倍和第2個(gè)方程的vi倍再乘以一個(gè)比例因子得到,因此只有2個(gè)方程線性相關(guān)。這樣每個(gè)角點(diǎn)可以得到關(guān)于H的2個(gè)方程,在求解時(shí)通常忽略第3個(gè)方程。
式(10)可以等價(jià)地寫成如下形式:
又可寫成Aih=0,其中 Ai為一個(gè) 2×9的矩陣。 式(12)對(duì)任意的齊次坐標(biāo) Xi=(ui,vi,wi)T都適用。 在這里我們?nèi)?wi=1,表示(ui,vi)為圖像上點(diǎn)的坐標(biāo)。
在Ai中,有些元素是1,有些元素的單位是像素,有些元素的單位是毫米,還有些元素的單位是像素和毫米的混合體。這樣使得Ai的數(shù)值條件很差,需要將圖像坐標(biāo)數(shù)據(jù)和世界坐標(biāo)數(shù)據(jù)進(jìn)行歸一化變換。
在使用直接線性變換之前必須對(duì)數(shù)據(jù)進(jìn)行歸一化變換,包括圖像坐標(biāo)和世界坐標(biāo)的平移和尺度縮放,進(jìn)行歸一化變換后再對(duì)結(jié)果進(jìn)行適當(dāng)?shù)男U湍艿玫皆鴺?biāo)系的單應(yīng)性矩陣。
數(shù)據(jù)歸一化可以提高結(jié)果的精度,還對(duì)任何尺度縮放和坐標(biāo)原點(diǎn)具有選擇不變性,通過歸一化可以為測(cè)量數(shù)據(jù)選擇有效的標(biāo)準(zhǔn)坐標(biāo)系,預(yù)先消除了坐標(biāo)變換的影響。因此,由于代數(shù)最小化在一個(gè)固定的標(biāo)準(zhǔn)坐標(biāo)系中進(jìn)行,因而使DLT算法實(shí)際上關(guān)于相似變換不變。
1)對(duì)點(diǎn)進(jìn)行平移使其形心位于原點(diǎn);
3)對(duì)圖像坐標(biāo)和世界坐標(biāo)上的數(shù)據(jù)對(duì)立進(jìn)行上述變換。
算法2
由于采集到的棋盤格背景可能極為復(fù)雜,為了準(zhǔn)確可靠地檢測(cè)到棋盤格上的角點(diǎn)。參考Jean-Yves Bouguet提供的Camera Calibration Toolbox[3]中角點(diǎn)檢測(cè)的思想進(jìn)行棋盤格標(biāo)定板的角點(diǎn)檢測(cè)。首先導(dǎo)入包含棋盤格的待測(cè)圖像,然后輸入棋盤格世界坐標(biāo)兩個(gè)方向上的格子數(shù)目。
具體步驟如下:
1)將待測(cè)角點(diǎn)包含在由手動(dòng)選擇的4個(gè)角點(diǎn)連成的4邊形內(nèi),并將這4個(gè)角點(diǎn)的初始圖像坐標(biāo)作為算法1的輸入,通過迭代得到4個(gè)更精確的角點(diǎn)圖像坐標(biāo)。
2)將迭代處理后的4個(gè)角點(diǎn)的圖像坐標(biāo)和其對(duì)應(yīng)的世界坐標(biāo)代入算法2得到單應(yīng)性矩陣H。
3)利用單應(yīng)性矩陣H對(duì)四邊形包含的角點(diǎn)的世界坐標(biāo)進(jìn)行反變換,得到所有角點(diǎn)的初始化圖像坐標(biāo)。
4)將上一步得到的角點(diǎn)圖像坐標(biāo)代入算法1,最終得到所有角點(diǎn)的圖像坐標(biāo)。
文中采用Matlab GUI進(jìn)行界面編程,相機(jī)選用德國(guó)Basler公司的scA-1400-gm相機(jī),相機(jī)分辨率為1 392×1 040,CCD尺寸為2/3″。鏡頭選用日本VS Technology公司的SVM3520鏡頭。棋盤格標(biāo)定板中一個(gè)格子的邊長(zhǎng)設(shè)計(jì)為4 mm。
圖1 角點(diǎn)檢測(cè)結(jié)果Fig.1 Corner detection results
操作界面如圖1所示,根據(jù)半自動(dòng)角點(diǎn)檢測(cè)步驟,選定棋盤格角點(diǎn)外接矩形中兩個(gè)方向的格子數(shù)分別為6和5,將算法1中迭代次數(shù)N設(shè)定為100,誤差EPS[3]為0.005。圖1為采集到的棋盤格圖像角點(diǎn)的檢測(cè)結(jié)果??梢钥闯觯瑱z測(cè)結(jié)果非常接近實(shí)際角點(diǎn)位置。
圖2 檢測(cè)的角點(diǎn)局部放大圖Fig.2 Partial enlargement figure of detected corners
圖2為9號(hào)和29號(hào)角點(diǎn)局部放大圖,其中圓圈內(nèi)十字交點(diǎn)位置為根據(jù)4個(gè)單應(yīng)性矩陣定位的初始角點(diǎn)位置,非圓圈內(nèi)十字交點(diǎn)位置為經(jīng)過算法1迭代優(yōu)化后的最終角點(diǎn)位置??梢钥闯?,優(yōu)化后的結(jié)果更接近實(shí)際角點(diǎn)的位置。
圖3 單應(yīng)性矩陣反變換和迭代優(yōu)化后的角點(diǎn)變化Fig.3 Homography inverse transform and corner changes after iterative optimization
將外接四邊形包含的角點(diǎn)經(jīng)過單應(yīng)性矩陣逆變換后得到的坐標(biāo)信息和經(jīng)過算法1迭代優(yōu)化后的角點(diǎn)坐標(biāo)進(jìn)行對(duì)比,得到的位置變化如圖3所示??梢钥闯?,42個(gè)角點(diǎn)經(jīng)過優(yōu)化后的坐標(biāo)與優(yōu)化前的坐標(biāo)變化不超過一個(gè)像素,說明通過單應(yīng)性矩陣映射得到的角點(diǎn)位置非常接近實(shí)際角點(diǎn)位置,對(duì)棋盤格標(biāo)定板的角點(diǎn)位置檢測(cè)精度較高。
文中使用半自動(dòng)角點(diǎn)檢測(cè)方法,手動(dòng)框選角點(diǎn)范圍,應(yīng)用單應(yīng)性矩陣映射的方法將所有角點(diǎn)的初始位置進(jìn)行定位,再利用算法1對(duì)角點(diǎn)位置進(jìn)行迭代優(yōu)化,最終得到優(yōu)化后的角點(diǎn)位置。實(shí)驗(yàn)表明,將單應(yīng)性矩陣應(yīng)用在棋盤格角點(diǎn)檢測(cè)中,對(duì)棋盤格標(biāo)定板上的角點(diǎn)位置得到比較好的檢測(cè)效果,檢測(cè)精度較高,滿足實(shí)際應(yīng)用的需求。
[1]YANG Xing-fang,HUANG Yu-mei,GAO Feng.A simple camera calibration method based on sub-pixelcorner extraction of the chessboard image[C]//IEEE International Conference,2010(3):688-692.
[2]鄒鳳嬌,蘇顯渝,李美菊.基于共面點(diǎn)的攝像機(jī)線性標(biāo)定法[J].光電工程,2005(14):70-74.
ZOU Feng-jiao,SU Xian-yu,LiMei-ju.Camera linear calibration method with a coplanar target[J].Opto-Electronic Engineering,2005(14):70-74.
[3]Jean-Yves Bouguet.Camera Calibration Toolbox for Matlab[EB/OL].(2010-07-09) [2011-12-20].http://www.vision.caltech.edu/bouguetj/calib_doc/
[4]孫鳳梅,胡占義.平面單應(yīng)性矩陣對(duì)攝像機(jī)內(nèi)外參數(shù)約束的一些性質(zhì)[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2007,19(5):647-650.
SUN Feng-mei,HU Zhan-yi.Some properties about the constraints on the camera’s intrinsic parameters from a homography[J].Journal of Computer-Aided Design&Computer Graphics,2007,19(5):647-650.
[5]Arrospide J,Salgado L,Nieto M,Vehicle detection and tracking using homography-based plane rectification and particle filtering[R].San Diego:Intelligent Vehicles Symposium(IV),2010:150-155.
[6]黃宣達(dá).攝像機(jī)標(biāo)定中亞像素級(jí)角點(diǎn)檢測(cè)算法[J].計(jì)算機(jī)與數(shù)字工程,2008,36(4):137-139.
HUANG Xuan-da.Sub-pixel corner detection algorithm in camera calibration[J].Computer&Digital Engineering,2008,36(4):137-139.
[7]Harris C,Stephens M.A combined corner and edge detector[C]//Manchester:Pro Fourth Alvey Vision Conference,1988.
[8]張廣軍.視覺測(cè)量[M].北京:科學(xué)出版社,2008.
[9]Forsrner W A.Feature extraction in digital photogrammetry[J].The Photogrammetric Record,1993,82(14):595-611.
[10]Hartley R,Zisserman A.計(jì)算機(jī)視覺中的多視圖幾何[M].韋穗,楊尚駿,章權(quán)兵,等譯.安徽:安徽大學(xué)出版社,2002.