孫 東,鞏 雪
(哈爾濱商業(yè)大學 輕工學院,哈爾濱 150028)
機器視覺技術是系統(tǒng)工程,通過對大型組件進行分類,機器視覺技術可以分為與機器相關的機器部分和與視覺技術相關的視覺部分[1].視覺部分由子系統(tǒng)組成,如工業(yè)攝像機、合適的鏡頭、光源、及相應的處理所需要被處理的圖像軟件等子系統(tǒng)構成.基于行業(yè)應急需求,國內(nèi)外研究人員在機械視覺方面取得了巨大的成就.自20世紀80年代以來,機械視覺一直處于高科技領域的前沿,研究方法也逐漸從實驗室的理論研究轉(zhuǎn)向?qū)嶋H應用研究.近年來,機械視覺迅猛發(fā)展并被運用到各個領域.例如,Giuseppe Di Leo開發(fā)了電機零部件視覺系統(tǒng),并且其利用攝像機對發(fā)動機零件進行檢查.國內(nèi)的周文舉博士利用機器的視覺觀察技術,實現(xiàn)了瓶蓋的高速檢測和精確控制,并且完成了86個/s的高效檢測速度.機器視覺系統(tǒng)相機的標定尤為重要,標定所得出的最后的結果的準確性和算法的是否能夠不平穩(wěn)運行的穩(wěn)定的性能的好壞將直接影響到攝像機最后輸入與輸出的結論精準程度的精準性,因此相機的標定是后面的將要做的工作的根本,提升所研究的標定精準度是科學研究的重中之重.本文主要研究機器人視覺系統(tǒng)的簡易模型以運用Matlab Camera Calibrator來實現(xiàn)相機的標定,使標定擁有方便、簡單、且易于交互等優(yōu)點,從而保證了標定的效率[2].
根據(jù)所應用的成像系統(tǒng)所使用的攝像頭數(shù)量不同,成像系統(tǒng)可分為單目、雙目和多目視覺系統(tǒng)[3].
利用單臺攝像機對被測量物進行測量的系統(tǒng)被稱為單目視覺系統(tǒng),在面視覺中經(jīng)常使用,例如工業(yè)機器人和移動機器人的測距系統(tǒng).一般來說,單目視覺所用的系統(tǒng)檢索深度其所包含的信息的技能能力較差,但當攝像機目標中存在一些已知點且前提已經(jīng)知道內(nèi)部參數(shù)時,則可以使用單目成像系統(tǒng)測量目標的姿態(tài)以及位置.
使用兩臺攝像頭來測量被檢測物的系統(tǒng)被稱為雙目視覺系統(tǒng).雙目視覺系統(tǒng)在機器人領域中較為常用.當雙目的視覺所需要的系統(tǒng)統(tǒng)測量目標的三維信息時,需要對兩個攝像機的內(nèi)外參數(shù)進行標定[4].雙目的視覺所需要的系統(tǒng)具有不弱的三維世界的信息恢復能力,但其測量所需要的精度與所使用的攝像機進行的標定所需要的精度密切相關[5].
在對相機要進行的標定流程中,第一步需要精準地放置相機的一般模型和它的坐標系,精準地創(chuàng)建坐標系,并思考各坐標系之間的變換關系以及相互聯(lián)系.
根據(jù)需求設置了三個坐標系:三維世界的坐標系、相機坐標系和圖像坐標系[6].(根據(jù)相機模型成像原理,圖像所處的坐標系又分為像素坐標系以及物理坐標系).其相互關系如圖1所示.
圖1 攝像機模型及其坐標系Figure 1 Camera model and its coordinate system
三維世界的坐標系OWXWYWZW是在外部所處的環(huán)境中被需要的坐標系,被用在形容機器人要捕獲的工作內(nèi)容的部分方位.在校準機器人的視覺所需要的用到系統(tǒng)時,把世界的三維世界中所用遇到的坐標系作為機器人坐標的基礎系統(tǒng)[7].每個點都由坐標(xw,yW,zW)表示.根據(jù)選定的相機模型,所選機器人的基本坐標系成為相機校準的全局坐標系,這可以很大程度的簡化其表達式,以及其相關的操作.
所要研究的相關相機坐標系OCXCYCZC是把坐標原點設置相機鏡頭光學中心的坐標原點OC上,兩軸XC、YC與圖像平面圖平行,另一個軸ZC軸則與圖像平面圖垂直.ZC和圖像平面圖有一個交點,其在圖像坐標系中的坐標設置為(u0,v0),即為相機主點.通常主攝影機點位于圖像所在的平面的位置的正中心,但是,由于相機的制作等原因,有時會有輕微的偏差,因此當需要更準確地校準相機時,相機坐標主要點處的兩個重要參數(shù)也應進行校準[8].距離f代表相機中心的光學鏡頭到相機主要點的距離.圖片中的任何一個點都可以由坐標(u,v)表示.
圖像中所用到的坐標系(u,v)是在二維世界中的圖片里定義的直角坐標系,可以把它分成兩種不是很相像的表達式,分別取坐標中的 (U,V) 和 (x,y) 來呈現(xiàn),把像素作為所要使用的單位,其中的物理長度則選用毫米為單位.在圖形的坐標系當中,把像素作為所使用的單位,其原點所要使用定義是圖形左上方的坐標系,以所要使用的物理長度作為要使用的單位,其原點所在位置被定義為圖像的整體中心.
小孔成像模型常用在所有場景都通過相機光軸的中心點投影到相機模型的圖像平面上. 相機中使用的鏡頭的光學中心被稱為相機中光軸的焦點,如圖2所示.
圖2 小孔成像模型Figure 2 Model of small hole imaging
從小孔成像的原理得知,像平面內(nèi)物體所呈現(xiàn)出的的像不是正像是倒實像.與原始對象相比,對象的縱橫比減小,左右方向與上下方向相反.當相機像平面中的實際倒置圖像轉(zhuǎn)換為數(shù)字圖像時, 將圖像放大并轉(zhuǎn)換圖像方向, 使其與原始物體的左、 右和幅度方向相同.我們可以認為圖像的平面相當于一個虛像平面,將成像所使用到的平面的正像轉(zhuǎn)變成數(shù)字圖像相當于一個經(jīng)過放大的過程[9].
坐標系位于相機所擁有的光軸其中的中心,Z軸所指的方向與所使用的相機光軸處于平行位置,圖形坐標沿水平所處的方位的位置放大方位為X軸所指向,取相機到場景的方向為正方向.在攝像機的所使用的笛卡爾空間中,讓是場景點的坐標P為(x1,y1,z1),P在虛擬成像平面中的成像點的坐標為(x2,y2,z2),則
(1)
其中:f是相機的焦距,f=z2.
標定實驗通過對相機的標定,準確獲取相機的內(nèi)外參數(shù),以確定機器人眼手所要使用到的系統(tǒng)之間的協(xié)調(diào)轉(zhuǎn)換過程的關系.目前被認可的校準方法有很多:Zhang手眼標定法、Malm手眼標定法、Ma手眼標定法等.使用的標定所需要的參照物適用對象也不盡相同,常用的參照物有棋盤參照物、圓孔參照物等[10].
本文使用正友標定法,校準參考對象選用棋盤格,在 Matlab Camera Calibrator的軟件基礎上,原理如下:
創(chuàng)建下面的攝像機線性無畸變成像模型:
(2)
其中:(x,y,w) 是圖像上所擁有的點的其次坐標, 圖像上所擁有的點 (x,y)對應的物體的世界坐標為(X,Y,Z).fx,fy分別為圖像(x,y)方向的焦距,(cx,cy)是整個圖像的中心,列出的4個參數(shù)是相機要使用的內(nèi)部參數(shù).
因此可以進行假定攝像機應服從以下的畸變模型:
(3)
我們知道所研究物體的世界坐標與圖像點所對應的坐標的單應關系[11]:假設模型平面所處在的世界坐標系中Z=0的這個平面上,則:
(4)
既:
(5)
其中:(X,Y,1)為圖像上點(x,y,1)世界坐標在標定板中所被對應的,并且均是次坐標.其中s是所被用到的尺度因子,r1r2r3和t分別是攝像機所在的坐標系所相對于世界坐標系的相應的旋轉(zhuǎn)矩陣和相應的平移向量[12].
如果說H是所要分析的目標點和要研究的圖像點的單應矩陣, 則:
(6)
由于相機有5個未知參數(shù),當圖像數(shù)量超過3時, 可以線性地、唯一地求出內(nèi)部和外部相機設置以完成相機校準.
本文創(chuàng)建一件類似棋盤格的標定參照物,將棋盤放置在不同的角度,好用來方便將標定所需要的參照物在不相同的方位的圖像組裝起來,既方便又提高了標定精度[13-14].
實驗用到的棋盤格子大小為20×20 mm,長寬個數(shù)為10×7的黑白棋盤,將此用作此實驗的相機校準參考模型.運行 Matlab 中的Camera Calibrator,校準工具箱的主窗口,如圖3所示.
圖3 Camera Calibrator主窗口Figure 3 Camera Calibrator main window
導入之前拍攝的單目相機拍攝的所有照片(雙面時,使用相機的一側),按shift鍵執(zhí)行多選圖像,出現(xiàn)設置其寬度的對話框,如圖4所示,輸入棋盤格的寬度,點擊確定按鈕.此使用為20 mm的單元格.
圖4 輸入單元格的寬度Figure 4 Camera Calibrator main window
對不相同放置角度下的十二幅所需要的圖像進行相應的采集,之后進行讀取,讀取成功后,對十二幅圖片分別進行角點提取.
點擊圖標Export camera parameters開始進行計算.Matlab會自動剔除一些不合格的圖像,所有的圖像并沒有變成最后的標定實驗所需要的圖像[15].Camera Calibrator 不會接收類似角點沒有能夠完全檢測的到的圖片,并因此來進一步保證標定實驗的準確性.計算完成后,觀察重新設計的投影相關的誤差是否比較小.重投影誤差輸出的結果比較小,可以把校正結果導出.利用校正得到的結果對圖像進行反投影, 得到反投影誤差的結果如圖5所示.
圖5 反投影誤差柱狀圖Figure 5 Histogram of the back-projection error
保存實驗結果,并將實驗結果導出至空間站,得到攝像機參數(shù)如下:
cameraParams =cameraParameters:
Camera Intrinsics
IntrinsicMatrix: [3x3 double]
Lens Distortion
RadialDistortion: [0.0413 -0.1595]
TangentialDistortion: [0 0]
Camera Extrinsics
RotationMatrices:[3×3×12 double]
TranslationVectors: [12×3 double]
Accuracy of Estimation
MeanReprojectionError: 0.3399
ReprojectionErrors: [54×2×12 double]
由此可以獲得到相機的所擁有得內(nèi)外參數(shù)以及相應畸變參數(shù),從而實現(xiàn)了攝像機的標定.
以相機和標靶為中心的空間模型圖,如圖6、7 所示.
圖6 攝像機與標定板關系Figure 6 Camera vs. calibration plate
圖7 攝像機與世界坐標的關系Figure 7 The relationship between the camera and the coordinates of the world
本文主要介紹視覺系統(tǒng)和視覺系統(tǒng)標定研究.利用Matlab Camera Calibrator對相機的內(nèi)外參數(shù)進行標定實驗,使用張正友的標定方法,為將工件的質(zhì)心坐標轉(zhuǎn)換到坐標系中提供了依據(jù),最終得到該位置的圖像,為機器人在世界坐標系中提供了依據(jù). 基于Matlab Camera Calibrator 的校準方法易于應用、易于使用且易于交互. 同時,該方法還可以通過生成校準碼來改進算法本身,具有很強的靈活性.