羅智文, 林建龍, 于修洪
(北京工商大學(xué) 機(jī)械工程學(xué)院, 北京 100048)
攝像機(jī)標(biāo)定是指在三維機(jī)器視覺(jué)領(lǐng)域中,確定攝像機(jī)內(nèi)外參數(shù)的過(guò)程. 攝像機(jī)內(nèi)參數(shù)包括攝像機(jī)畸變系數(shù)及有效焦距,外參數(shù)包括攝像機(jī)坐標(biāo)系和世界坐標(biāo)系之間的旋轉(zhuǎn)矩陣和平移矩陣. 本文采用Tsai兩步標(biāo)定法,以Matlab語(yǔ)言為工具編寫(xiě)主要程序,完成標(biāo)定過(guò)程[1].
LabVIEW是一種基于圖形編程語(yǔ)言的開(kāi)發(fā)軟件,具有開(kāi)發(fā)方便、效率高等優(yōu)點(diǎn);對(duì)于底層的軟件驅(qū)動(dòng)及復(fù)雜運(yùn)算,其他高級(jí)語(yǔ)言如Matlab具有更大優(yōu)勢(shì)[2]. 因此,本文利用LabVIEW提供的對(duì)Matlab程序接口,充分發(fā)揮Matlab語(yǔ)言的數(shù)學(xué)運(yùn)算功能,使得以LabVIEW開(kāi)發(fā)的火車輪緣動(dòng)態(tài)檢測(cè)系統(tǒng)[3-4]界面簡(jiǎn)潔,易操作,且具有快速的執(zhí)行和計(jì)算能力.
攝像機(jī)模型包括以下幾個(gè)坐標(biāo)系:攝像機(jī)坐標(biāo)系oxyz,以像素為單位的圖像坐標(biāo)系ouv,毫米為單位的圖像坐標(biāo)系oxy和世界坐標(biāo)系owxwywzw.
攝像機(jī)模型采用小孔成像模型,如圖1. 圖像平面上的點(diǎn)(u,v)與世界坐標(biāo)系中的點(diǎn)(xw,yw,zw)對(duì)應(yīng)關(guān)系如式(1):
圖1 攝像機(jī)模型透視投影關(guān)系Fig.1 Perspective projection of pinhole model
(1)
式(1)中,s為標(biāo)量,α為u軸上的尺度因子,β為v軸上的尺度因子,γ為u軸和v軸的不垂直因子,(u0,v0)為攝像機(jī)光軸與圖像平面的交點(diǎn),這些參數(shù)只與攝像機(jī)內(nèi)部參數(shù)有關(guān),稱為攝像機(jī)內(nèi)部參數(shù). [RT]由攝像機(jī)相對(duì)于世界坐標(biāo)系的方位決定,稱為攝像機(jī)外部參數(shù).
實(shí)際上,由于實(shí)際的鏡頭并不是理想的透視成像,而是帶有不同程度的畸變,使得空間點(diǎn)所成的像并不在線性模型所描述的位置(xu,yu),實(shí)際成像點(diǎn)的坐標(biāo)應(yīng)由下面考慮了位置誤差的模型取代:
(2)
式(2)中,δx、δy是畸變值,與點(diǎn)在圖像中的位置有關(guān).
理論上鏡頭會(huì)同時(shí)存在徑向畸變、切向畸變等兩種畸變.
徑向畸變由距圖像中心的徑向距離的偶次冪多項(xiàng)式模型來(lái)表示,即:
(3)
式(3)表明,x方向和y方向的畸變相對(duì)值與徑向半徑的平方成正比,即在圖像邊緣處的畸變較大. 對(duì)一般計(jì)算機(jī)視覺(jué),一階徑向畸變已足夠描述非線性畸變,此時(shí)可寫(xiě)成:
(4)
圖2 圖片讀取模塊程序Fig.2 Program layout of image reading module
切向畸變是指由于透鏡復(fù)合鏡頭中光學(xué)鏡片組合裝配時(shí)各鏡片的節(jié)點(diǎn)不嚴(yán)格在一直線上所產(chǎn)生的像點(diǎn)差異,其在圖像坐標(biāo)系中表達(dá)式為:
(5)
由于透鏡切向畸變通常可以忽略,因此,我們通常只考慮徑向畸變.
(6)
解由式(6)組成的超定方程組即可求得焦距f.
令畸變系數(shù)k初始值為0,解式(7)非線性方程組,進(jìn)行優(yōu)化搜索即可得到畸變系數(shù)k,焦距f的精確解.
(7)
兩步標(biāo)定法簡(jiǎn)潔明了,易于Matlab語(yǔ)言實(shí)現(xiàn).
LabVIEW實(shí)現(xiàn)的攝像機(jī)標(biāo)定,分三個(gè)模塊. 第一模塊,實(shí)現(xiàn)對(duì)標(biāo)定圖片,火車輪緣圖片的讀?。坏诙K,利用Harriss算法實(shí)現(xiàn)對(duì)標(biāo)定圖片角點(diǎn)的提??;第三模塊,根據(jù)提取到角點(diǎn)相應(yīng)的像素坐標(biāo),在世界坐標(biāo)系中計(jì)算攝像機(jī)內(nèi)外參數(shù).
圖片讀取模塊程序[1-2]如圖2.
主要節(jié)點(diǎn)說(shuō)明如下:
1)“path to BMP file”:讀取BMP圖片路徑.
2)“BMP”:創(chuàng)建必要的數(shù)據(jù)文件.
3)“圖片”:由接收得到的數(shù)據(jù)在窗口顯示圖片.
4)“DrawAreaSize”:控制顯示圖片窗口的大小.
角點(diǎn)提取模塊程序如圖3.
圖3 角點(diǎn)提取模塊程序Fig.3 Program layout of corner extraction module
Harris角點(diǎn)提取算法[5-7]由Matlab語(yǔ)言編制完成,利用LabVIEW提供的Matlab腳本節(jié)點(diǎn)(Matlab Script Node)來(lái)調(diào)用Matlab語(yǔ)言程序,實(shí)現(xiàn)Labview與Matlab的接口,通過(guò)這種方式在LabVIEW中使用Matlab強(qiáng)大的數(shù)值計(jì)算功能.
圖3中BMP文件路徑通過(guò)“路徑至字符串轉(zhuǎn)換”節(jié)點(diǎn),把路徑值賦予字符節(jié)點(diǎn)“path”,由Harris角點(diǎn)算法調(diào)取待處理標(biāo)定圖片,提取后的角點(diǎn)像素坐標(biāo)(u,v)及世界坐標(biāo)(x,y)值賦予“uvxy”顯示節(jié)點(diǎn)給予顯示.
攝像機(jī)內(nèi)外參數(shù)模塊程序如圖4.
圖4 攝像機(jī)內(nèi)外參數(shù)計(jì)算模塊程序Fig.4 Program layout of CCD parametric computation module
基于徑向約束的兩步標(biāo)定法,由Matlab語(yǔ)言編寫(xiě)完成,調(diào)用LabVIEW與Matlab接口,將其嵌入程序模塊中.
模塊以“uvxy”節(jié)點(diǎn)作為輸入變量,其值為角點(diǎn)提取模塊中角點(diǎn)像素坐標(biāo)及世界坐標(biāo)矩陣. 定義4個(gè)顯示節(jié)點(diǎn),分別顯示求解后的旋轉(zhuǎn)矩陣R,平移矩陣T,畸變系數(shù)K,焦距f.
攝像機(jī)標(biāo)定軟件界面如圖5,圖中顯示圖片為現(xiàn)場(chǎng)拍攝的火車輪緣照片.
圖5 攝像機(jī)標(biāo)定軟件界面Fig.5 Program interface of camera calibration
實(shí)驗(yàn)采用DH-HV1303UM-T CCD相機(jī),輸出分辨率為656×494,像素間距為7.4 μm,清晰度為750線,幀率為15幀/s,采用標(biāo)準(zhǔn)階梯形5×5標(biāo)定塊.
通過(guò)Harris角點(diǎn)提取,得出一組角點(diǎn)相關(guān)數(shù)據(jù),如表1.
表1 一組Harris提取角點(diǎn)后相關(guān)數(shù)據(jù)
實(shí)驗(yàn)求得攝像機(jī)旋轉(zhuǎn)矩陣為:
平移矩陣為:
畸變系數(shù):k=0.013 7,有效焦距f=8.177 5 mm.
攝像機(jī)標(biāo)定界面顯示結(jié)果如圖6.
利用LabVIEW開(kāi)發(fā)的攝像機(jī)標(biāo)定技術(shù),其主要程序由Matlab語(yǔ)言編寫(xiě),利用LabVIEW提供的Matlab腳本節(jié)點(diǎn)來(lái)調(diào)用,實(shí)現(xiàn)Labview與Matlab之間的通信. 充分利用了LabVIEW圖形化設(shè)計(jì)語(yǔ)言的優(yōu)點(diǎn)和Matlab的強(qiáng)大數(shù)據(jù)處理能力,使其開(kāi)發(fā)的攝像機(jī)標(biāo)定技術(shù)具有更強(qiáng)的數(shù)據(jù)處理能力.
實(shí)驗(yàn)現(xiàn)場(chǎng)及結(jié)果表明,以此開(kāi)發(fā)的攝像機(jī)標(biāo)定技術(shù)具有原理清晰,過(guò)程簡(jiǎn)便,響應(yīng)速度、計(jì)算速度快等優(yōu)點(diǎn),檢測(cè)精度0.1 mm,能夠達(dá)到鐵路客車輪對(duì)檢修規(guī)則標(biāo)準(zhǔn).
圖6 攝像機(jī)標(biāo)定界面顯示結(jié)果Fig.6 Result of camera calibration