邊后琴,譚葉
(上海電力學(xué)院計(jì)算機(jī)與信息工程學(xué)院,上海 200090)
攝像機(jī)標(biāo)定是計(jì)算機(jī)視覺研究領(lǐng)域中的一個(gè)重要課題,其主要任務(wù)是確定攝像機(jī)的內(nèi)外參數(shù),其內(nèi)部參數(shù)包括幾何和光學(xué)特性,外部參數(shù)包括相對(duì)世界坐標(biāo)系的攝像機(jī)坐標(biāo)的一個(gè)三維位置和方向.現(xiàn)有的攝像機(jī)標(biāo)定方法主要可以分為傳統(tǒng)的標(biāo)定方法[1]、自標(biāo)定方法[2]和基于主動(dòng)視覺的標(biāo)定方法[3]3類.傳統(tǒng)的標(biāo)定方法是基于一個(gè)精確測(cè)定的物體作為空間參照物的攝像機(jī)內(nèi)標(biāo)定方法[4];自標(biāo)定方法不需要借助任何外在的信息,僅利用圖像之間的點(diǎn)對(duì)應(yīng)信息就可以獲得攝像機(jī)的內(nèi)部參數(shù)[5];基于主動(dòng)視覺的標(biāo)定方法是通過控制攝像機(jī)的運(yùn)動(dòng)來標(biāo)定攝像機(jī)的內(nèi)部參數(shù)[6].本文研究了基于平面板標(biāo)定的傳統(tǒng)的攝像機(jī)標(biāo)定方法,利用MATLAB編程語言實(shí)現(xiàn)了這一標(biāo)定方法,并給出了實(shí)驗(yàn)過程和結(jié)果,以期為標(biāo)定方法在工程中的實(shí)際應(yīng)用提供參考.
攝像機(jī)在拍攝圖像的過程中,涉及3個(gè)坐標(biāo)系,即圖像坐標(biāo)系、攝像機(jī)坐標(biāo)系和世界坐標(biāo)系.圖像坐標(biāo)系有兩個(gè):一是以像素為單位的圖像坐標(biāo)系(u,v);二是以物理單位(例如毫米)表示的圖像坐標(biāo)系(x,y).在(x,y)坐標(biāo)系中,原點(diǎn)O1定義在攝像機(jī)光軸與圖像平面的交點(diǎn),該點(diǎn)一般位于圖像中心處,但由于攝像機(jī)制作的原因,也會(huì)有些偏離,若原點(diǎn)O1在(x,y)坐標(biāo)系中的坐標(biāo)為(u0,v0),每一個(gè)像素在x軸與y軸方向上的物理尺寸為ku=1/dx,kv=1/dy,x軸與y軸方向的夾角為θ,則圖像中任意一個(gè)像素在兩個(gè)坐標(biāo)系中的關(guān)系為:
一般取θ=π/2,圖像坐標(biāo)系關(guān)系如圖1所示.在這一情況下,式(1)可以簡(jiǎn)單地表示為:
圖1 圖像坐標(biāo)系示意
定義攝像機(jī)坐標(biāo)系為(Xc,Yc,Zc),其坐標(biāo)原點(diǎn)O稱為攝像機(jī)的光心,Xc軸和Yc軸與圖像的x軸與y軸平行,Zc軸為攝像機(jī)的光軸,它與圖像平面垂直.光軸與圖像平面的交點(diǎn),即為圖像坐標(biāo)系的原點(diǎn)O1,O1為攝像機(jī)焦距.攝像機(jī)可安放在環(huán)境中的任何位置,在環(huán)境中選擇一個(gè)基準(zhǔn)坐標(biāo)系來描述攝像機(jī)的位置,用以描述環(huán)境中任何物體的位置,該坐標(biāo)系稱為世界坐標(biāo)系,它由Xw,Yw,Zw軸組成.用R和t分別表示攝像機(jī)坐標(biāo)系和世界坐標(biāo)系之間的旋轉(zhuǎn)關(guān)系和平移關(guān)系.因此,空間中某一點(diǎn)X在世界坐標(biāo)系與攝像機(jī)坐標(biāo)系下的齊次坐標(biāo)如果分別是(Xw,Yw,Zw,1)T與(Xc,Yc,Zc,1)T,則存在的關(guān)系為:
空間的任何一點(diǎn)X在圖像上的成像位置可以用針孔模型近似表示,如圖2所示,即任何點(diǎn)X在圖像上的投影位置x為光心O與X點(diǎn)的連線OX和圖像平面的交點(diǎn).此種關(guān)系稱為中心射影或透視投影.(x,y)為x點(diǎn)的圖像坐標(biāo);(Xc,Yc,Zc)為空間點(diǎn)X在攝像機(jī)坐標(biāo)系下的坐標(biāo).
圖2 針孔攝像機(jī)模型
成立,所以:
那么,攝像機(jī)坐標(biāo)和圖像坐標(biāo)間的變換關(guān)系為:
根據(jù)比例關(guān)系,則:
由此可見,在成像的過程中丟失了深度信息.此透視投影關(guān)系用齊次坐標(biāo)與矩陣可以表示為:
代入式(7),得到以世界坐標(biāo)系表示的X點(diǎn)坐標(biāo)與其投影點(diǎn)x的坐標(biāo)(u,v)的關(guān)系為:
式中:P——攝像機(jī)的投影矩陣,為3×4矩陣;
K——由坐標(biāo)尺度k u和k v,中心u 0和v 0,焦距f,x和y方向的夾角θ確定,這5個(gè)參數(shù)稱為攝像機(jī)的內(nèi)部參數(shù); Pt——由攝像機(jī)相對(duì)于世界坐標(biāo)系的方位,即旋轉(zhuǎn)矩陣R和平移向量t所對(duì)應(yīng)的6個(gè)參數(shù)確定,這6個(gè)參數(shù)稱為攝像機(jī)的外參數(shù).
確定攝像機(jī)內(nèi)外參數(shù)的過程,稱為攝像機(jī)的標(biāo)定.雙目視覺中攝像機(jī)定標(biāo)的基本方法是,在固定的攝像機(jī)模型下,基于特定的參照物,通過對(duì)左右兩幅圖像進(jìn)行圖像處理和數(shù)學(xué)變換計(jì)算,可以得到攝像機(jī)模型的內(nèi)部和外部參數(shù).對(duì)于使用日益廣泛的非測(cè)量攝像機(jī)來說,標(biāo)定是從二維圖像中獲取三維信息必不可少的步驟.
平面模板標(biāo)定方法的基本原理為:
需要注意的是,這里我們假設(shè)模板平面是在世界坐標(biāo)系中Z=0的平面上.由于攝像機(jī)有5個(gè)未知內(nèi)參數(shù),所以當(dāng)所攝取的圖像數(shù)目大于等于3時(shí),就可以線性唯一求解出K.
基于Matlab的立體視覺系統(tǒng)的參數(shù)標(biāo)定分為兩個(gè)階段:一是根據(jù)給定的圖像標(biāo)定每一臺(tái)攝像機(jī)的內(nèi)部參數(shù);二是根據(jù)內(nèi)標(biāo)定的結(jié)果標(biāo)定立體視覺系統(tǒng)的外部參數(shù).平面標(biāo)定方法包括以下5個(gè)步驟:
(1)打印一張黑白相間的格子紙,貼在一個(gè)平面板上;
(2)從不同角度拍攝若干張模板圖像;
(3)檢測(cè)出圖像中的特征點(diǎn);
(4)求出攝像機(jī)的內(nèi)部和外部參數(shù);
(5)求出畸變系數(shù);
(6)優(yōu)化求精.
實(shí)驗(yàn)平臺(tái)如下:5×8的黑白相間的棋盤狀標(biāo)定塊,每個(gè)柵格的規(guī)格為30 mm×30 mm,打印后固定于塑料泡沫板上.安裝兩臺(tái)位置固定的CCD攝像機(jī),從不同角度拍攝若干張模板的圖像,然后用Matlab讀入圖像,提取標(biāo)定模板的網(wǎng)格角點(diǎn),標(biāo)定參數(shù),計(jì)算誤差,最后將左右攝像機(jī)的標(biāo)定結(jié)果聯(lián)立得到外部參數(shù)矩陣.
整個(gè)標(biāo)定系統(tǒng)的第一個(gè)運(yùn)行界面見圖3.
圖3 運(yùn)行界面
圖像是標(biāo)定方法的直接對(duì)象,讀入圖像按鈕用于讀入需要標(biāo)定的圖像,可以選擇圖像格式、文件名等,通過調(diào)用子函數(shù)ima_read_calib實(shí)現(xiàn),該函數(shù)可以將目標(biāo)文件夾下的所有文件列出并讀入.運(yùn)行時(shí)先選擇文件名,以左邊攝像機(jī)文件名為例(左邊攝像機(jī)所拍攝圖片共有14幅,將其依次命名為left01,left02,left03,…,left14),輸入left,在Image format一欄可以發(fā)現(xiàn)有不同可供選擇的圖片格式.若所用圖片是jpg格式,就輸入j.其他不同格式的圖像對(duì)應(yīng)的字母如下:
讀入圖像后,程序顯示結(jié)果如圖4所示.圖4顯示了由左邊攝像機(jī)拍攝的14幅jpg格式的圖像的縮略圖.一般來說,圖片越多,標(biāo)定精度越高,可以根據(jù)實(shí)際需要的標(biāo)定精度選擇要標(biāo)定的圖像數(shù)量,如果不對(duì)數(shù)量進(jìn)行選擇,系統(tǒng)會(huì)默認(rèn)是該文件名序列的全部圖像(按照標(biāo)定方法原理,用于標(biāo)定的圖像數(shù)量不能小于3).
圖4 用于標(biāo)定的圖像
提取網(wǎng)格頂點(diǎn)按鈕的操作要調(diào)用的子函數(shù)是click_calib,此時(shí),默認(rèn)平行于水平面方向?yàn)閄軸,而垂直方向?yàn)閅軸.如果在上一個(gè)過程中圖像未被正確讀入,則此時(shí)會(huì)先提示:Cannot extract cornerswithout images!如果圖像被正確讀入,則提示需要設(shè)置操作界面的坐標(biāo)系大小,并要求設(shè)置柵格的邊長(zhǎng).用戶在標(biāo)定模板上用鼠標(biāo)依次點(diǎn)擊圖像的4個(gè)頂點(diǎn),次序?yàn)樽笊?、右上、右下、左?根據(jù)提示輸入每一個(gè)方格的長(zhǎng)(30 mm)與寬(30 mm).在選取4個(gè)頂點(diǎn)時(shí),如果偏移過大,需要輸入X軸和Y軸的柵格數(shù)量時(shí),只需要按照實(shí)際操作輸入即可.選擇完畢以后,就可以依次提取網(wǎng)格角點(diǎn).
網(wǎng)格網(wǎng)點(diǎn)提取過程如下.
標(biāo)定左攝像機(jī)的參數(shù),在標(biāo)定前,一定要確定有多于3幅圖片進(jìn)行提取角點(diǎn)等操作,因?yàn)槠矫婺0宓臉?biāo)定方法規(guī)定必須要多于3幅圖片,如果小于3幅,則會(huì)因?yàn)榍蠼夥匠踢^少而無法得到結(jié)果.輸出的內(nèi)部參數(shù)有:有效焦距fc=f,主點(diǎn)(投影中心)cc=(u0,v0),偏斜角alpha_c=θ,畸變系數(shù)kc=[kukv],經(jīng)過優(yōu)化后可以得到計(jì)算的像素誤差(Pixel error,單位是像素).
提取網(wǎng)格角點(diǎn)后,就可以計(jì)算出攝像機(jī)的內(nèi)部參數(shù),結(jié)果如下:
得到兩個(gè)攝像機(jī)的內(nèi)部參數(shù)后,就可以進(jìn)行由這兩個(gè)攝像機(jī)構(gòu)成的立體視覺系統(tǒng)的標(biāo)定,即得到兩個(gè)攝像機(jī)的外部參數(shù).立體視覺系統(tǒng)標(biāo)定的界面如圖5所示.
圖5 立體視覺系統(tǒng)標(biāo)定運(yùn)行界面
首先需要載入左右攝像機(jī)的標(biāo)定結(jié)果,單擊該按鈕,出現(xiàn)如下提示:
在原先得到左右攝像機(jī)內(nèi)部參數(shù)的基礎(chǔ)上,我們得到了該立體視覺系統(tǒng)的外部參數(shù),即右攝像機(jī)相對(duì)于左攝像機(jī)的旋轉(zhuǎn)矩陣R和平移矩陣T:
左右攝像機(jī)外部參數(shù)示意見圖6和圖7.
圖6 左攝像機(jī)外部參數(shù)示意
圖7 右攝像機(jī)外部參數(shù)示意
得到結(jié)果后,選擇保存.該操作調(diào)用了saving _calib這一函數(shù),目的是生成mat文件,為了后面操作方便,將得到的結(jié)果Calib_Results.mat重命名為后Calib_Results_left.mat,以區(qū)分隨后對(duì)右攝像機(jī)參數(shù)標(biāo)定的結(jié)果.
通過實(shí)驗(yàn)可以發(fā)現(xiàn),這種基于Matlab的攝像機(jī)標(biāo)定方法的優(yōu)缺點(diǎn)很明顯:一方面,友好的界面以及簡(jiǎn)易的操作方法能夠被廣泛應(yīng)用到實(shí)際工程中;另一方面這種標(biāo)定方法的精確性仍有待提高,在測(cè)量左攝像機(jī)的內(nèi)部參數(shù)時(shí),其誤差約為0.6%,而右攝像機(jī)的內(nèi)部參數(shù)誤差也有0.2%,因此不合適運(yùn)用于高精度的場(chǎng)合.
本文通過Matlab編程實(shí)現(xiàn)了一種較為方便的立體視覺系統(tǒng)的標(biāo)定方法.采用自標(biāo)定方法實(shí)現(xiàn)攝像機(jī)的自標(biāo)定,通過編寫程序調(diào)用Matlab的子函數(shù),可以很方便地實(shí)現(xiàn)標(biāo)定的計(jì)算過程.由于已知模板的每一個(gè)柵格大小,對(duì)14對(duì)圖像進(jìn)行角點(diǎn)提取,反復(fù)迭代,可以較為精確地得到攝像機(jī)的有效焦距等參數(shù).使用Matlab設(shè)計(jì)的標(biāo)定程序的操作界面具有更好的交互性和實(shí)時(shí)性,我們所需要做的只是將左右攝像機(jī)標(biāo)定完的結(jié)果作為初始數(shù)據(jù),使用特定的程序計(jì)算得到外部參數(shù),即旋轉(zhuǎn)矩陣和平移矩陣.
通過實(shí)驗(yàn)充分證明,該方法有效且方便,具有良好的人機(jī)交互功能,便于操作,能夠?qū)崟r(shí)得到結(jié)果.
[1]ZHANG Z Y.Flexible camera calibration by viewing a plane from unknown orientations[C]//Proceedings of the International Conference on Computer Vision,Kerkyra,Corfu,Greece,1999:666-673.
[2]HARTLEY R.Estimation of relative camera positions for uncalibrated cameras[C]//Proceedings of the European Conference on Computer Vision,Santa Margherita Ligure,Italy,1992: 579-587.
[3]MA S D.A self-calibration technique for active vision system[J].IEEE Transactions on Robot Automation,1996,12(1): 114-120.
[4]祝海江,吳福朝,胡占義.基于兩條平行線段的攝像機(jī)標(biāo)定[J].自動(dòng)化學(xué)報(bào),2005,31(6):853-864.
[5]傅丹,周劍,邱志強(qiáng),等.基于直線的幾何不變性標(biāo)定攝像機(jī)內(nèi)參數(shù)[J].中國(guó)圖象圖形學(xué)報(bào),2009,14(6):1 058-1 063.
[6]夏艷,蘇中,吳細(xì)寶.雙目視覺測(cè)量系統(tǒng)的標(biāo)定及三維測(cè)量[J].中國(guó)圖象圖形學(xué)報(bào),2008,13(7):1 298-1 302.
(編輯胡小萍)