李 哲,項輝宇,韓寶安,黃佳軍
(北京工商大學(xué) 材料與機械工程學(xué)院,北京 100048)
根據(jù)標(biāo)定方式的不同,現(xiàn)有的相機標(biāo)定方法可以分為傳統(tǒng)標(biāo)定方法、自標(biāo)定方法和基于主動視覺的標(biāo)定方法。傳統(tǒng)標(biāo)定方法是指利用一個尺寸已知的高精度標(biāo)定物作為空間參照,通過建立標(biāo)定物某點與其圖像點的對應(yīng)關(guān)系,利用相關(guān)算法獲得相機的內(nèi)外參數(shù)。此方法的不足在于標(biāo)定物的制造成本高,其精度直接影響標(biāo)定結(jié)果,而且某些場合下不適合放置標(biāo)定物。自標(biāo)定方法是指不需要標(biāo)定物,僅利用場景約束或相機運動約束,依靠多幅圖像對應(yīng)點之間的關(guān)系進行標(biāo)定。但此方法標(biāo)定精度不高,不合適在精確測量的場合下使用?;谥鲃右曈X的標(biāo)定方法是指在己知相機的某些運動信息下標(biāo)定相機的方法。雖然此算法簡單,魯棒性較高,但是該方法需要使用高精度主動視覺平臺進行相機標(biāo)定,實驗設(shè)備昂貴,實驗條件要求高,且不適合運動參數(shù)未知或無法控制的場合。因此,在以上標(biāo)定方法的基礎(chǔ)上,本文介紹一種利用HALCON軟件的平面圓靶標(biāo)雙目視覺標(biāo)定方法。實驗證明此方法測量精度高,魯棒性強,適用范圍廣。
雙目立體視覺是立體視覺的一種重要形式,它是基于雙目視差理論并利用成像設(shè)備從不同的位置獲取被測物體的幅圖像,通過計算圖像對應(yīng)點間的位置偏差,從而獲取物體三維幾何信息的方法。圖1是雙目視覺系統(tǒng)的原理圖,其中,b是兩個相機光心的距離,f是相機的主距。相機坐標(biāo)系的原點位于光心處,成像平面本應(yīng)該位于相機坐標(biāo)系之后,但是為了簡化計算過程,假想的使成像平面位于相機坐標(biāo)系之前。圖像坐標(biāo)系建立在成像平面上,其坐標(biāo)軸用u、r表示。P是空間中一點,它在圖像坐標(biāo)系的投影分別是P',P",像P這樣的點被稱為共軛點。
在圖像測量過程以及機器視覺應(yīng)用中,為確定空間物體表面某點的三維幾何位置與其圖像對應(yīng)點之間的相互關(guān)系,必須建立相機成像的幾何模型,這些幾何模型參數(shù)就是相機參數(shù)。在大多數(shù)條件下這些參數(shù)必須通過實驗與計算才能得到,這個求解參數(shù)的過程就稱之為相機標(biāo)定,這里的參數(shù)主要是指相機的內(nèi)、外參數(shù)。在雙目視覺標(biāo)定中,內(nèi)參數(shù)是指左、右相機鏡頭主距f,鏡頭畸變k,像元大小Sx、Sy等。外參數(shù)主要是指左、右相機各自的相機坐標(biāo)系相對于世界坐標(biāo)系的關(guān)系,用旋轉(zhuǎn)矩陣R1和平移矢量T1表示左相機的相機坐標(biāo)系與世界坐標(biāo)系的關(guān)系,同理,R2,T2表示右相機的相機坐標(biāo)系到世界坐標(biāo)系的關(guān)系,以及右相機相對于左相機的位置關(guān)系,用一個旋轉(zhuǎn)矩陣R和一個平移矢量T表示。確定這些參數(shù)需要4個步驟。
圖1 雙目系統(tǒng)原理圖Fig.1 Binocular System Schematic Diagram
(1)將世界坐標(biāo)系中一點Pw=(xw,yw,zw)T轉(zhuǎn)換到相機坐標(biāo)系中Pc=(wc,yc,zc)T,此變換為剛性變換,它們之間的變換關(guān)系是Pc=R'*Pw+T'。其中T'=(tx,ty,tz)是一個平移矢量,R'=(α,β,γ)是一個旋轉(zhuǎn)矩陣,α,β,γ表示物體分別繞攝像機坐標(biāo)系x,y,z軸的旋轉(zhuǎn)角度。在R'和T'中6個參數(shù) (α,β,γ,tx,ty,tz)稱為相機外參,它們決定了相機坐標(biāo)系與世界坐標(biāo)系之間的相對位置。
(2)將三維空間點Pc從相機坐標(biāo)系投影到成像平面坐標(biāo)系??杀硎緸椋旱窃趯嶋H投影過程中,由于鏡頭的畸變會導(dǎo)致坐標(biāo)(u,v)T的值發(fā)生改變。對于大多數(shù)鏡頭而言,都可以認(rèn)為是徑向畸變。此時,對應(yīng)的關(guān)系式為:
(4)通過以上三步即可以獲得左、右相機各自的內(nèi)外參數(shù)。假定空間中任意一點在世界坐標(biāo)系,左、右相機坐標(biāo)系下的非齊次坐標(biāo)分別是 xw,x1,x2,則消去xw,得到:X2=R2R1-1x1+T2-R2R1-1T2,于是兩個相機間的位置關(guān)系可表示為:
HALCON是一套完善的標(biāo)準(zhǔn)的機器視覺算法包,擁有應(yīng)用廣泛的機器視覺集成開發(fā)環(huán)境。它節(jié)約了產(chǎn)品成本,縮短了軟件開發(fā)周期,在工業(yè)界已經(jīng)是公認(rèn)具有最佳效能的Machine Vision軟件。
本文采用實時的方法對雙目視覺系統(tǒng)進行標(biāo)定,使用的是HV-1302型工業(yè)相機。雙目標(biāo)定與單目標(biāo)定類似,不同的地方在于雙目標(biāo)定必須保證標(biāo)定板能夠同時出現(xiàn)在兩幅圖像中。圖2為實驗場景圖。
標(biāo)定主要分四個步驟:①建立雙目相機的標(biāo)定數(shù)據(jù)模型;②獲取合適的圖片;③把雙目相機的測試數(shù)據(jù)添加到標(biāo)定數(shù)據(jù)模型中;④執(zhí)行標(biāo)定。
圖2 實驗場景Fig.2 Experiment scene
在建立標(biāo)定數(shù)據(jù)模型之前, 應(yīng)該先調(diào)用算子Open_ Framegrabber和Grab_Image保證同時打開左右相機,然后調(diào)用算子Create_Calib_Data產(chǎn)生一個標(biāo)定數(shù)據(jù)模型,在這個算子中輸入值是所使用的相機的個數(shù)以及標(biāo)定板的個數(shù),返回值是標(biāo)定數(shù)據(jù)模型句柄CalibDataID。產(chǎn)生了這個標(biāo)定數(shù)據(jù)模型句柄之后,需要向模型中添加相機的初始內(nèi)部參數(shù)以及相機類型,此時用到算子Set_Calib_Data_Cam_Param,在HALCON中,初始內(nèi)部參數(shù)的鏡頭畸變應(yīng)該設(shè)置為零,相機類型是面陣相機。把關(guān)于標(biāo)定板的描述文件輸入到數(shù)據(jù)模型當(dāng)中,此時用到算子Set_Calib_Data_Calib_Object,模型句柄的初始化完成。
同時打開相機進行采集,在雙目視覺系統(tǒng)中,每個相機都要拍攝多張標(biāo)定板在不同位置的圖片。本文中,拍攝了15張不同位置的圖片,標(biāo)定板的表面不能有污點,并且需要保證每幅圖片中都應(yīng)該能包含標(biāo)定板,所使用的標(biāo)定板大小是(100×100)mm,每個提取的圓的像素都應(yīng)該大于10個像素。在采集圖像的過程中相機的相對位置絕對不能改變,還要保證每幅圖像有合適的曝光,不能過曝或者曝光不足。圖3為實時采集圖。
在采集圖像的同時,為確保每幅圖像都能夠滿足要求,需要實時的對采集圖像進行處理,此時就要用到Find_Caltab和Find_Marks_And_ Pose。算子Find_Caltab能夠找到找到標(biāo)定板上黑框里面的部分,F(xiàn)ind_Marks_And_Pose找到每個圓點的中心并確定它們相應(yīng)的世界坐標(biāo)。當(dāng)無法定位標(biāo)定板區(qū)域時,則會提示重新移動標(biāo)定板的位置再進行采集,當(dāng)算子都成功的執(zhí)行之后,表示此時采集到的圖像滿足要求。把采集到的參數(shù)通過算子 Set_Calib_Data_Observ_Points輸入到標(biāo)定數(shù)據(jù)模型句柄中。
最后根據(jù)標(biāo)定數(shù)據(jù)模型中的數(shù)據(jù),調(diào)用算子Calibrate_Cameras,就可以執(zhí)行標(biāo)定。當(dāng)執(zhí)行完這個算子后就可以獲取糾正后的相機的主距、鏡頭畸變、圖像中心點的坐標(biāo)值、以及兩個相機的相對位置,并且這些值仍返回在模型句柄中,可以通過算子Get_Calib_Data對相關(guān)參數(shù)進行調(diào)用。通過以上操作,得到的結(jié)果如表1,表2所示。
從標(biāo)定結(jié)果中可以看出,左、右相機的徑向畸變值均為負(fù)值,說明它們都成桶形畸變,左、右相機的主距相差較??;相機的結(jié)構(gòu)參數(shù)中旋轉(zhuǎn)矩陣R為 [1.4837 330.699 359.313],說明右相機相對于左相機的X軸旋轉(zhuǎn)1.483°、Y軸的反方向29.301°、Z軸的反方向0.687°,可以判斷出右相機幾乎只繞左相機的Y軸旋,即兩個相機向內(nèi)傾斜了29.301°;平移矢量T為 [25.884 0.2303.139],說明右相機在左相機右方 25.884cm、上方0.230cm、前方3.319cm的位置。標(biāo)定結(jié)果與相機的實際擺放位置吻合,說明標(biāo)定結(jié)果準(zhǔn)確。
表1 左、右相機的內(nèi)部參數(shù)Tab.1 Internal parameters of left and right camera
表2 左、右相機的結(jié)構(gòu)參數(shù)Tab.2 Structural parameters of left and right camera
本文介紹了一種基于HALCON的雙目視覺標(biāo)定方法。先說明雙目視覺系統(tǒng)的原理,然后介紹標(biāo)定原理,以及如何使用HALCON進行標(biāo)定,通過實驗證明,此方法精度高,操作簡單,可以有效的應(yīng)用于機器視覺系統(tǒng)中。
[1]馬頌德,張正友.計算機視覺:計算理論與算法基礎(chǔ)[M].北京:科學(xué)出版社,1998.
[2]劉金頌,原思聰,張慶陽,等.雙目立體視覺中的攝像機標(biāo)定技術(shù)研究[J].計算機工程與應(yīng)用,2008,6.
[3]成小龍,徐友春,李華,賈鵬.基于Halcon軟件的雙目立體視覺系統(tǒng)標(biāo)定[J].軍事交通學(xué)院學(xué)報,2011,9.
[4]李鵬,王軍寧.攝像機標(biāo)定方法簡述[J].傳感器世界,2007,3.
[5]楊少榮,吳迪靖,段德山(譯).機器視覺算法與應(yīng)用[M].北京:清華大學(xué)出版社,2008.