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