張小玉,宮 賀,齊 琦
(北方工業(yè)大學(xué) 信息工程學(xué)院,北京 100144)
計算機視覺的基本任務(wù)之一是從攝像機拍攝到的圖像信息來還原空間中物體的幾何信息。而空間物體表面某點的三維幾何位置與其在圖像中對應(yīng)點之間的關(guān)系是由攝像機成像的幾何模型決定的。攝像機標(biāo)定的目的就是確定幾何模型參數(shù)即攝像機參數(shù)[1]。攝像機標(biāo)定技術(shù)在立體視覺研究中占有非常重要的地位。一個完整的計算機視覺系統(tǒng)通常可以分為圖像獲取、攝像機標(biāo)定、特征提取、立體匹配、深度確定及內(nèi)插等6個部分[2]。精確標(biāo)定攝像機內(nèi)外參數(shù)不僅可以直接提高測量精度,而且可以為后繼的立體圖像匹配與三維重建奠定良好的基礎(chǔ)[3-4]。
目前通常使用的標(biāo)定方法是以“兩步法”[5-8]為基礎(chǔ)的傳統(tǒng)攝像機標(biāo)定方法,與其他標(biāo)定方法相比(如主動視覺攝像機標(biāo)定方法、攝像機自標(biāo)定方法等),該標(biāo)定方法標(biāo)定精度高,而且標(biāo)定過程簡單,經(jīng)過多年的研究,已發(fā)展的比較成熟,魯棒性高。 OpenCV(Intel open source computer vision)是Intel開放計算機視覺函數(shù)庫,它由一系列C函數(shù)和少量C++類構(gòu)成,對圖像處理和計算機視覺方面的很多通用算法進行了實現(xiàn),具有強大的圖像和矩陣運算能力。該函數(shù)庫中實現(xiàn)的攝像機標(biāo)定方法采用的是張正友提出的標(biāo)定方法。
在攝像機標(biāo)定中通常使用已知形狀和尺寸大小的標(biāo)定模板來進行標(biāo)定,如棋盤格、十字架等。但由于長波紅外攝像機不能像可見光像機那樣,直接獲取普通光學(xué)系統(tǒng)標(biāo)定板的紋理,因而無法用普通攝像機的標(biāo)定板對長波紅外攝像機進行標(biāo)定。所以,需要對長波紅外攝像機設(shè)計特定的標(biāo)定裝置。
長波紅外攝像機只能感受到溫度信息,而不能獲取普通光學(xué)系統(tǒng)標(biāo)定板的紋理,因此必須設(shè)計一個適用于長波紅外攝像機標(biāo)定的標(biāo)定裝置。
本標(biāo)定裝置是基于前板帶有標(biāo)志圓孔的標(biāo)定箱,其結(jié)構(gòu)示意圖如下圖1(a)。圖1(a)中1是標(biāo)定箱的前板,作為標(biāo)定箱標(biāo)定數(shù)據(jù)的靶面,一般為熱的良導(dǎo)體,其上設(shè)有若干個直徑大小一致,形狀規(guī)則的標(biāo)志圓孔,且標(biāo)志圓孔在靶面上以矩形陣列分布。為了區(qū)分方向性及標(biāo)定的準(zhǔn)確性,圓孔陣列的行列數(shù)不相等。圖1(a)中3,4分別為標(biāo)定箱的箱體和后板,是熱的不良導(dǎo)體且具有隔斷長波紅外線的功能。一般情況下,可以用紙質(zhì)、木質(zhì)或則塑料材質(zhì)的密封箱體,在前板用打孔機打上圓孔矩形陣列,可根據(jù)研究的需要對圓孔數(shù)量進行設(shè)定。使用時,只要將標(biāo)定箱放入長波紅外攝像機視場后,用加熱器對標(biāo)定箱前板進行均勻加熱,然后拍攝標(biāo)定箱前板圖像即可。為了增強對比性,前板要均勻的加熱一段時間,確保靶面和后板的有一定的溫差,從而使標(biāo)靶圖像中圓孔特征更容易提取,使標(biāo)定數(shù)據(jù)更準(zhǔn)確。對于精度較高的應(yīng)用場合,則點間距需要事先精確測定。
圖1 標(biāo)定裝置原理圖及紅外像機拍攝的標(biāo)定板效果圖Fig.1 The schematic diagram of calibration device and the calibration board effect chart of infrared cameras
本研究中,使用的是紙質(zhì)的標(biāo)定箱,在其前板設(shè)有8行6列的標(biāo)志圓孔矩形陣列,圖1(b)為紅外像機實際拍攝的前板靶面的效果圖??梢钥闯觯河捎跇?biāo)靶表面加熱,溫度比標(biāo)志圓孔區(qū)域高,標(biāo)志圓孔區(qū)域灰度值較小,標(biāo)靶表面灰度值較大。
紅外像機拍攝的標(biāo)定板圖像中,以標(biāo)志圓孔重心坐標(biāo)作為特征點像素坐標(biāo)。特征點坐標(biāo)提取算法的流程圖如圖2。
圖2 特征點坐標(biāo)提取流程圖Fig.2 The flow chart of coordinate extraction from Feature points
先對長波紅外相機拍攝到的標(biāo)定板圖像進行感興趣區(qū)提取,中值濾波,Retinex圖像增強以及二值化等處理,以便對標(biāo)定板圖像標(biāo)志圓孔坐標(biāo)的準(zhǔn)確求取。然后對二值化標(biāo)定板圖像中標(biāo)志圓孔進行重心坐標(biāo)計算,作為紅外相機標(biāo)定的特征點坐標(biāo)。圖3是按照圖2流程圖對紅外像機拍攝到的標(biāo)靶圖像進行圖像處理后的結(jié)果圖。
中值濾波的基本原理是把數(shù)字圖像或數(shù)字序列中某一點的值用該點的周圍一個鄰域中各點值的中間值代替,讓周圍的像素值接近的真實值,從而消除孤立的噪聲點。
圖3 對紅外像機拍攝到的標(biāo)定板圖像進行特征點提取Fig.3 The extraction of feature point on the calibration plate image through the infrared cameras
Retinex圖像增強的原理是利用原始圖像估計背景噪聲圖像,再用原始圖像減去背景噪聲,得到不受光照影響的圖像(噪聲圖像),利于對圖像特征的提取。
二值化:將256個亮度等級的灰度圖像通過適當(dāng)?shù)拈撝颠x取而獲得仍然可以反映圖像整體和局部特征的二值化圖像。圖像的二值化有利于圖像的進一步處理,使圖像變得簡單,而且數(shù)據(jù)量減小,能凸顯出感興趣的目標(biāo)的輪廓。
灰度重心法:用圖像的灰度值作為權(quán)值的加權(quán)形心法?;叶葓D像 I(x,y)中目標(biāo) S 的灰度重心坐標(biāo)(x0,y0)為:
圖3中,(a)是原始標(biāo)定板圖像的感興趣區(qū)域,(b)是采用8*8模板中值濾波之后的背景圖像,(c)是原始圖像(a)減去背景圖像(b)之后的差值圖像,(d)是差值圖像(c)的二值化圖像,(e)是對(d)進行重心求取并標(biāo)出重心坐標(biāo)的圖像。
攝像機標(biāo)定首先要選擇合適的攝像機模型,確定內(nèi)外部參數(shù)。內(nèi)部參數(shù)是用來描述攝像機的幾何特性與內(nèi)部光學(xué)的參數(shù),包括圖像中心、焦距、鏡頭畸變和比例因子等;而外部參數(shù)就是相對于世界坐標(biāo)系的攝像機坐標(biāo)的三維位置和方向。OpenCV標(biāo)定算法中的攝像機模型是在針孔模型的基礎(chǔ)上,考慮了透鏡的徑向畸變和切向畸變的影響。相比于只引入一階徑向畸變的Tasi模型和針孔模型,該模型更能真實的反映透鏡實際的畸變情況。
將三維空間點 P在世界坐標(biāo)系中的坐標(biāo)值 Pw(Xw,Yw,Zw)變換為圖像平面上像素坐標(biāo)系中坐標(biāo)值P(u,v)的過程可分為下述的4步變換[5]。
1)世界坐標(biāo)系中坐標(biāo) Pw(Xw,Yw,Zw)轉(zhuǎn)換為攝像機坐標(biāo)系中坐標(biāo) Pc(Xc,Yc,Zc)
式中:R是一個3x3的旋轉(zhuǎn)矩陣,t是一個平移向量。
2)將坐標(biāo)值 Pc(Xc,Yc,Zc)在針孔模型中進行規(guī)范化投影,得到圖像平面坐標(biāo)系中物理坐標(biāo)P(x,y)為
3)引入透鏡的徑向畸變,和切向畸變,P(x,y)轉(zhuǎn)換為P(xd,yd)
算式中 k1和k2是徑向畸變系數(shù),k3和k4是切向畸變系數(shù)。
4)圖像平面坐標(biāo)系中物理坐標(biāo)P(xd,yd)轉(zhuǎn)換為像素坐標(biāo)P(u,v)
式中f是攝像機的有效焦距;s是比例因子,用來適應(yīng)在計算機圖像(幀存)水平方向上取樣帶來的種種不確定因素;Δx是計算機圖像在水平方向(x方向上)相鄰兩像素之間的有效距離(mm/pixel),Δy是計算機圖像在垂直方向(y方向)上相鄰兩像素之間的有效距離(mm/pixel);(u0,v0)是基準(zhǔn)點,通常在圖像的中心。綜合上述公式可得到如下等價表達式:
式(5)中 P=(u,v,1)T為圖像像素點的齊次坐標(biāo),P=(X,Y,Z,1)T是空間點2的齊次坐標(biāo),A是攝像機內(nèi)參矩陣,(R|t)為外參矩陣,(5)式給出了一個圖像點和空間點之間的映射關(guān)系。
標(biāo)定過程分為線性計算和非線性計算優(yōu)化兩個步驟:1)不考慮畸變,直接在針孔模型的基礎(chǔ)上利用直接線性變換(DLT變換)方法計算出攝像機的內(nèi)部和外部參數(shù)的初值[6]。該步驟的計算過程都是求解線性方程,求解速度快。但是因為沒有考慮透鏡畸變的影響,得到的參數(shù)值并不準(zhǔn)確。2)考慮畸變的情況,以步驟。3)中求得的參數(shù)為初始值,利用Levenberg-Marquardt算法對圖像點與投影點間的距離之和進行非線性最小優(yōu)化,得到一組精度更高的值。
基于OpenCV的標(biāo)定流程模塊如圖4所示。
圖4 標(biāo)定流程模塊圖Fig.4 The block diagram of calibration procedures
1)讀取標(biāo)定用的一組標(biāo)靶圖像(如圖5所示)。
圖5 輸入的3張紅外像機拍攝的標(biāo)靶圖像Fig.5 Three inputted target image from the infrared camera
2)按照本文2中方法,對標(biāo)靶圖像進行標(biāo)志圓孔重心坐標(biāo)提取,此坐標(biāo)即為特征點在圖像坐標(biāo)系中的坐標(biāo)。
3)初始化所有的輸入?yún)?shù)之后,將特征點在世界坐標(biāo)系中的坐標(biāo)值以及在圖像坐標(biāo)系中的坐標(biāo)值代入cv Cali brate Camera2,最后得到攝像機的內(nèi)參數(shù)矩陣,畸變系數(shù)向量、圖像的旋轉(zhuǎn)向量、圖像的平移向量。
4)計算外參矩陣:利用c)中得到的內(nèi)參數(shù)矩陣和畸變系數(shù)向量,用函數(shù)cvFindExtrinsicCameraParams計算各幅圖像的外參數(shù)(旋轉(zhuǎn)向量和平移向量)。
5)分析實驗結(jié)果:先用cvProjectPoints2計算出三維特征點坐標(biāo)的投影坐標(biāo),再用函數(shù)cvNorm比較計算出的投影坐標(biāo)與通過特征點提取到的投影坐標(biāo),從而得到一個誤差值。最后注意要用cvReleaseMat函數(shù)釋放掉cvCreateMat函數(shù)分配的內(nèi)存空間,防止內(nèi)存泄露。
根據(jù)上述步驟和原理,本文在Windows XP系統(tǒng)下用VS2008編寫了一個基于OpenCV1.0的紅外攝像機標(biāo)定程序,程序界面如圖6所示。程序輸入三張或多張標(biāo)靶圖像,輸出是長波紅外像機的內(nèi)外參數(shù)、畸變系數(shù),以及畸變矯正后的圖像。程序較好的實現(xiàn)了長波紅外像機的幾何標(biāo)定,已被應(yīng)用到某銅廠的紅外像機溫度變化檢測項目中。
研究中,采用紅外像機拍攝到3張不同角度的標(biāo)靶圖像,該圖像為640*320像素。程序通過計算特征點像素坐標(biāo),從而計算出紅外攝像機內(nèi)外參數(shù),畸變系數(shù)。利用紅外像機內(nèi)外參數(shù),可求得紅外像機的畸變映射,從而實現(xiàn)對畸變圖像進行畸變恢復(fù)。圖7是用紅外像機拍攝的銅電解槽的畸變圖像和畸變恢復(fù)后的對比圖。由對比圖可以看出,畸變恢復(fù)效果較好,表明利用本文中的紅外像機標(biāo)定軟件標(biāo)定能很好的實現(xiàn)紅外攝像機的幾何標(biāo)定。
圖6 標(biāo)定程序界面Fig.6 The interface of calibration procedures
圖7 銅廠電解槽熱紅外圖像畸變恢復(fù)對比圖Fig.7 The comparison chart of distortion restoration from thermal infrared image in the electrolytic tank
標(biāo)定出的紅外攝像機參數(shù)如下:內(nèi)參矩陣:畸變系數(shù):[-0.389 570 0.003 941-0.001 758-0.003 108]誤差 err:0.162 705
本研究設(shè)計了一個能用于標(biāo)定紅外攝像機的標(biāo)定板,并利用圖像處理算法實現(xiàn)了標(biāo)定板特征點坐標(biāo)的提取。在標(biāo)定時,利用紅外像機拍攝3張或多張標(biāo)定板圖像,輸入基于OpenCV的紅外像機標(biāo)定程序,計算出紅外像機的內(nèi)外參數(shù),同時利用求得的畸變系數(shù),對畸變圖像進行了較好的恢復(fù)。
OpenCV中的攝像機標(biāo)定模塊為用戶提供了良好的接口,有效的提高了開發(fā)效率,并且執(zhí)行速度快,具有良好的跨平臺移植性,因此被廣泛應(yīng)用于攝像機標(biāo)定程序的開發(fā)中。OpenCV開發(fā)的攝像機標(biāo)定程序可以有效地應(yīng)用于需要計算機視覺系統(tǒng)的各個領(lǐng)域。
[1]邱茂林,馬頌德,李毅.計算機視覺中攝像機定標(biāo)綜述[J].自動化學(xué)報,2000,26(1):43-55.QIU Mao-lin,MA Song-de,LI Yi.Overview of camera calibration for computer vision[J].Journal of Automation,2000,26(1):43-55.
[2]David A Forsyth,Jean Ponce.計算機視覺—一種現(xiàn)代方法[M].北京:電子工業(yè)出版社,2004.
[3]Rashmi Sundareswara,Schrater P R.Bayesian modeling of camera calibration and reconstruction[C].Processings Fifth International Conferenceon3-DDigital Imagingand Modeling,2005:394-401.
[4]Rodriguez T,Sturm P,Wilczkowiak M,et al.VISIRE:Photorealistic 3D reconstruction from video sequences[C].Proceedings International Conference on Image Processing(03CH37429),2003.
[5]Jean-Yves Bouguet.Camera calibration toolbox for Matlab[DB/OL].(2004).http://www.vision.caltech.edu/Bouguetj/calibdoc.
[6]ZHANGZ.A flexible new technique for camera calibration[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2000,22(11):1330-1334.
[7]趙小松.攝像機標(biāo)定技術(shù)的研究[J].機械工程學(xué)報,2002,38(3):149-151.ZHAO Xiao-song.Study on camera calibration technology[J].Chinese Journal of Me-chanical Engineeri-ng,2002,38(3):149-151.
[8]毛劍飛,鄒細勇,諸靜.改進的平面模板兩步法標(biāo)定攝像機[J].中國圖像圖形學(xué)報,2004,9(7):846-852.MAO Jian-fei,ZOU Xi-yong,ZHU Jing.Planar template improved twostep cameracalibration[J].China Journal of image and graphics,2004,9(7):846-852.