羅珍茜,薛 雷,孫峰杰,陸士清,李長遠(yuǎn)
(上海大學(xué) 通信與信息工程學(xué)院,上海 200072)
近年來,主動視覺在動態(tài)目標(biāo)監(jiān)控與跟蹤、合作目標(biāo)與非合作目標(biāo)位置測量,以及工業(yè)生產(chǎn)線監(jiān)測中有著廣泛的應(yīng)用。在主動視覺中,攝像機(jī)焦距、光學(xué)中心以及外參數(shù)是可變的,這些參數(shù)的動態(tài)在線標(biāo)定在主動視覺中有重要作用。要利用攝像機(jī)進(jìn)行視覺感知獲取目標(biāo)的三維信息,就必須進(jìn)行攝像機(jī)標(biāo)定,以確定攝像機(jī)的參數(shù)[1]。攝像機(jī)標(biāo)定是指建立攝像機(jī)圖像像素位置和場景點位置之間的關(guān)系,其途徑是根據(jù)攝像機(jī)模型,由已知特征點的圖像坐標(biāo)和世界坐標(biāo)求解攝像機(jī)的模型參數(shù)[2]。精確標(biāo)定攝像機(jī)內(nèi)外參數(shù)不僅可以直接提高測量精度,而且可以為后續(xù)的立體圖像匹配與三維重建奠定良好的基礎(chǔ)。
國內(nèi)外許多學(xué)者提出了攝像機(jī)標(biāo)定的方法,并得到廣泛應(yīng)用。傳統(tǒng)的攝像機(jī)標(biāo)定方法采用的是基于3D立體靶標(biāo)的攝像機(jī)標(biāo)定,但是3D立體靶標(biāo)制作成本高,制作方法復(fù)雜。Roger Tsai[3]提出基于徑向約束的兩步法,該方法計算量適中,精度較高。張正友提出基于2D平面靶標(biāo)的攝像機(jī)標(biāo)定法,該方法克服了3D靶標(biāo)的缺點,且標(biāo)定過程中攝像機(jī)拍攝角度改變對標(biāo)定結(jié)果無影響。HALCON是德國MVtec公司開發(fā)的圖像處理軟件,它具有完善的綜合標(biāo)準(zhǔn)軟件庫和機(jī)器視覺集成開發(fā)環(huán)境。HALCON提供了豐富的函數(shù)庫,包括blob分析、形態(tài)學(xué)、模式匹配、測量、三維目標(biāo)識別和立體視覺等。它支持Windows,Linux和Solaris操作環(huán)境,整個函數(shù)庫可以用C,C++,C#,Visual Basic 和 Delphi等多種普通編程語言開發(fā),有效提高了開發(fā)效率,并且執(zhí)行速度快,具有良好的跨平臺移植性。
為了標(biāo)定攝像機(jī),首先需要建立一個模型將世界坐標(biāo)系中三維空間點投影到二維圖像中,該模型由攝像機(jī)和鏡頭組成。在機(jī)器視覺應(yīng)用中常用到的兩種攝像機(jī)模型為面陣攝像機(jī)模型和線陣攝像機(jī)模型。線陣攝像機(jī)模型相對面陣攝像機(jī)模型要復(fù)雜許多,筆者介紹的是常用的面陣攝像機(jī)模型。在實際應(yīng)用中,通常使用針孔攝像機(jī),它的面陣攝像機(jī)模型如圖1所示。其中,圖像坐標(biāo)系(r,c),成像平面坐標(biāo)系(u,v),攝像機(jī)坐標(biāo)系(xc,yc,zc),世界坐標(biāo)系(xw,yw,zw),Sx和 Sy是縮放比例因子,它們表示圖像傳感器上水平和垂直方向上相鄰像素之間的距離。f表示的并不是鏡頭的焦距,而是攝像機(jī)主距。點P是世界坐標(biāo)系中點Pw在成像平面上的投影。
世界坐標(biāo)系中的點 Pw=(xw,yw,zw)T變換到它在成像平面坐標(biāo)系上的投影點P,需要經(jīng)歷以下4個步驟:
1)點 Pw=(xw,yw,變換到攝像機(jī)坐標(biāo)系中的點Pc=(xc,yc,, 關(guān)系為 Pc=RPw+T。 T=(tx,ty,是一個平移向量,R=R(α,β,γ)是一個旋轉(zhuǎn)矩陣,α,β,γ 是分別繞攝像機(jī)坐標(biāo)系 x,y,z軸的旋轉(zhuǎn)角度。在R和T中6個參數(shù)(α,β,γ,tx,ty,tz)稱為攝像機(jī)外參、外方位參數(shù)或攝像機(jī)位置,它們決定了攝像機(jī)坐標(biāo)系與世界坐標(biāo)系之間的相對位置。
2)攝像機(jī)坐標(biāo)系中點Pc變換到成像平面坐標(biāo)系,它們之間是透視投影關(guān)系
圖1 針孔攝像機(jī)模型
圖2 鏡頭畸變
3)在不考慮鏡頭畸變的情況下,世界坐標(biāo)系中的點Pw與成像平面中的投影點P之間的直線過攝像機(jī)光學(xué)中心,如圖2所示。
大部分情況下,鏡頭的畸變可以近似為徑向畸變,即
其中,參數(shù)k決定了徑向畸變的程度,如圖3所示。
圖3 3種情況下的鏡頭畸變
式中:(Cx,Cy)T是光心在成像坐標(biāo)系中的投影點。
由以上可知,攝像機(jī)標(biāo)定的實質(zhì)就是確定內(nèi)部參數(shù)(f,k,Cx,Cy,Sx,Sy)和外部參數(shù)(α,β,γ,tx,ty,tz)的過程。
為了進(jìn)行攝像機(jī)標(biāo)定,必須已知世界坐標(biāo)系中足夠多的三維空間點的坐標(biāo),找到這些空間點在圖像中的投影點的二維圖像坐標(biāo),并建立對應(yīng)關(guān)系[4]。這就要求標(biāo)定過程必須滿足兩個要求:1)放置在已知位置上的容易提取特征的目標(biāo)物體或標(biāo)志(標(biāo)定板);2)確定世界坐標(biāo)系中已知點與它們在投影圖像中的對應(yīng)關(guān)系。
標(biāo)定板的選擇決定了標(biāo)定的精度,為了達(dá)到較高精度,可以從以下方面考慮標(biāo)定板的選擇:
1)標(biāo)定板的材質(zhì):光源在標(biāo)定板前方,選擇陶瓷標(biāo)定板;光源在后方,選擇玻璃標(biāo)定板。
2)標(biāo)定板的尺寸:標(biāo)定板的形狀通常為正方形,寬度應(yīng)接近圖像寬度的1/3。例如,圖像大小為100 mm×80 mm,標(biāo)定板尺寸選擇30 mm×30 mm較為合適。
HALCON提供了標(biāo)準(zhǔn)的標(biāo)定板模板,如圖3b所示,該標(biāo)定板的特點是:標(biāo)定板周圍的黑色矩形框使得標(biāo)定對象的中心容易被提取;矩形邊界框角落的方向標(biāo)記使得標(biāo)定板的方向唯一。每塊標(biāo)定板都應(yīng)該有一個對應(yīng)的描述文件CalTabDescrFile,它描述了標(biāo)定板的行數(shù)和列數(shù)、標(biāo)定板外框的幾何尺寸、方向標(biāo)記、標(biāo)定板圓形標(biāo)志的半徑等信息。選擇到合適的標(biāo)定板后,用gen_caltab函數(shù)生成對應(yīng)的標(biāo)定板描述文件。
利用標(biāo)定板的特點,提取目標(biāo)板特征,其過程如下:攝像機(jī)提取標(biāo)定板的一幀圖像后,首先通過簡單的閾值分割算法就能將標(biāo)定板的內(nèi)部區(qū)域與背景分離;其次利用Canny濾波器提取標(biāo)定板各圓形標(biāo)志的邊緣;再次采用Fitzgibbon[5]提出的通過線性方法來最小化代數(shù)誤差以得到擬合橢圓,該算法具有很好的穩(wěn)健性,可以抑制邊緣中孤立點對邊緣擬合的影響;最后提取出橢圓的最小外接四邊形,可以很容易確定標(biāo)志點及其與圖像中的投影之間的關(guān)系。
進(jìn)行攝像機(jī)標(biāo)定時,標(biāo)定精度與圖像數(shù)量有關(guān),至少選擇10~15幅。所選圖像中標(biāo)定板的位置應(yīng)該能覆蓋圖像的4個角,因為角落處的鏡頭畸變最大,這樣能得到較準(zhǔn)確的畸變系數(shù)k。
標(biāo)定過程中,由于使用的是平面標(biāo)定對象,還會存在這樣的問題:如果標(biāo)定對象平行于成像平面,f和tz的解不唯一。解決方法是在最優(yōu)化過程中保持Sy不變。
基于HALCON的標(biāo)定過程如圖4所示,read_image(∶Image∶FileName∶)讀取名稱為 FileName 的圖像 Image;find_caltab(Image∶Caltab∶CalTabDescrFile,SizeGauss,Mark Thresh,MinDiamMarks∶)通過 3.2節(jié)介紹的算法提取圖像Images中標(biāo)定板上的圓形標(biāo)志來確定標(biāo)定板的有效區(qū)域, 效果如圖 5a所示;find_marks_and_pose(Image,CalTabRegion∶∶CalTabDescrFile,StartCamParam,StartTh resh,DeltaThresh,MinThresh,Alpha,MinContLength,Max DiamMarks∶Rcoord,Ccoord,StartPose)確定標(biāo)定板上圓形標(biāo)志點的二維坐標(biāo),并得到攝像機(jī)外部參數(shù)的初始值,效果如圖 5b 所示;camera_calibration(∶∶NX,NY,NZ,Nrow,Ncol,StartCamParam,NstartPose,EstimateParams∶CamParam,Nfinal Pose,Errors)計算出攝像機(jī)的所有參數(shù),它是通過提供的初始參數(shù)為初始值,進(jìn)行優(yōu)化搜索獲得誤差最小化的過程;write_cam_par( ∶∶CamParam,CamParFile∶)將標(biāo)定結(jié)果寫入CamParFile文件。
圖4 程序流程圖
圖5 標(biāo)定效果
HALCON強(qiáng)大的圖像處理能力,為攝像機(jī)自主標(biāo)定提供了簡單有效的方法。
根據(jù)上述標(biāo)定原理和開發(fā)步驟,在Windows XP平臺下利用VC++6.0開發(fā)了一個基于HALCON8.2的攝像頭標(biāo)定程序,程序經(jīng)過嚴(yán)格測試,運行穩(wěn)定,在黑背景下截取3組數(shù)量不同的320×240的標(biāo)定板圖像用于標(biāo)定,并通過重投影法分析標(biāo)定結(jié)果的平均誤差。
式中:e表示均方誤差;Io(i)表示原始圖像上第i點的向量,Ip(i)表示重投影圖像上第 i點的向量,i∈(0,N);N 表示標(biāo)志點總數(shù),例如利用10幅標(biāo)定板圖像進(jìn)行標(biāo)定,則N=10×7×7;平均均方誤差Err等于均方誤差與標(biāo)志點總數(shù)的比值。
結(jié)果如表1所示,效果較好,可以達(dá)到使用要求。
表1 標(biāo)定結(jié)果比較
基于HALCON開發(fā)的攝像機(jī)標(biāo)定程序在實際運用中取得了很好的效果,標(biāo)定結(jié)果精確、運算效率高、跨平臺移植性好,操作簡單,縮減了開發(fā)周期,可以有效地應(yīng)用于各種計算機(jī)視覺系統(tǒng)中。
[1]李良福,陳衛(wèi)東,馮祖仁,等.目標(biāo)跟蹤與定位中的視覺標(biāo)定算法研究[J].應(yīng)用光學(xué),2008,29(4):481-486.
[2]張廣軍.機(jī)器視覺[M].北京∶科學(xué)出版社,2005.
[3]TSAI R Y.An efficient and accurate camera calibration technique for 3D machine vision[EB/OL].[2009-12-20].http∶//research.microsoft.com/apps/pubs/default.aspx?id=66690.
[4]STEGER C,ULRICH M,WIEDEMANN C.Machine vision algorithms and applications[EB/OL].[2009-12-20].http∶//www.amazon.com/Machine-Vision-Algorithms-Applications-Carsten/dp/3527407340#noop.
[5]FITZGIBBON A,PILU M,F(xiàn)ISHER R B.Direct least square fitting of ellipses[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,1999,21(5):475-480.