羅曉賀,賈克斌,熊道權(quán),田秀臣,劉鵬宇
(1.北京工業(yè)大學(xué)信息與通信工程學(xué)院,北京 100022;2.北京世紀(jì)東方國鐵科技股份有限公司,北京 100070)
很多細(xì)小特征的測量需要高精度的圖像,實(shí)際應(yīng)用中的相機(jī)不可避免地存在畸變現(xiàn)象,直接影響圖像的質(zhì)量和測量的精度。線陣相機(jī)因其分辨率高、抗干擾性強(qiáng)等優(yōu)勢,現(xiàn)廣泛應(yīng)用于各領(lǐng)域的無接觸實(shí)時測量系統(tǒng)中[1-3],因此,線陣相機(jī)的畸變標(biāo)定和校正方法研究成為目前測量領(lǐng)域的一個熱點(diǎn)。
目前,現(xiàn)有的線陣相機(jī)畸變標(biāo)定的方法主要是利用特定結(jié)構(gòu)的靶標(biāo)實(shí)現(xiàn)測量[4-8]。例如,Horaud等人[4-5]提出基于特定形狀平面靶標(biāo)的標(biāo)定方法,通過靶標(biāo)特征點(diǎn)相對位置的變化,再借助精密位移平臺對平面靶標(biāo)進(jìn)行特定方向的移動,實(shí)現(xiàn)所有特征信息的提取,進(jìn)而實(shí)現(xiàn)線陣相機(jī)畸變的標(biāo)定。Luna等[6]在Horaud標(biāo)定方法的基礎(chǔ)上進(jìn)行了改進(jìn),將2D平面靶標(biāo)改為了3D靶標(biāo),避免了精密位移平臺的使用,但是3D靶標(biāo)制作比較困難,成本高。孫博等[7]在傳統(tǒng)平面靶標(biāo)的基礎(chǔ)上提出一種利用激光跟蹤儀輔助的線陣相機(jī)標(biāo)定方法,通過激光跟蹤儀測量靶標(biāo)上的6個標(biāo)記點(diǎn)獲得靶標(biāo)的位姿和姿態(tài),再結(jié)合平面靶標(biāo)特征點(diǎn)的特征變化完成了線陣相機(jī)的標(biāo)定。上述方法的相機(jī)標(biāo)定參數(shù)全面:均可獲取相機(jī)和被測物之間的全部相對位姿,而且后面兩種方法還在此基礎(chǔ)上實(shí)現(xiàn)了鏡頭的非線性畸變標(biāo)定。但是,這些方法,一方面無法保證標(biāo)定時和工作時鏡頭參數(shù)和使用場景的一致性;另一方面,其標(biāo)定過程都比較復(fù)雜且耗時;因此,無法實(shí)現(xiàn)線陣相機(jī)的在線實(shí)時標(biāo)定和校正。
隨著激光技術(shù)的迅速發(fā)展,激光結(jié)構(gòu)光因其高亮性、形式多樣性和結(jié)構(gòu)穩(wěn)定性在測量領(lǐng)域的應(yīng)用越來越廣泛[9-10]。其思想主要為基于結(jié)構(gòu)光的物像形狀的變化實(shí)現(xiàn)目標(biāo)的在線測量。此外,在很多特定應(yīng)用領(lǐng)域,相機(jī)和成像物之間的相對位置固定。例如,軌道交通測量中,相機(jī)放置在軌檢車上,相機(jī)和軌道之間的距離、夾角等都不發(fā)生變化。此時,相機(jī)需要標(biāo)定的參數(shù)比較少。本文針對該應(yīng)用場景,結(jié)合激光結(jié)構(gòu)光的應(yīng)用,提出一種基于激光線陣的線陣相機(jī)在線畸變標(biāo)定和校正方法。一方面,該方法畸變標(biāo)定場景和標(biāo)定結(jié)果的使用場景是統(tǒng)一的,無差別的,這在一定程度上可以提高標(biāo)定精度;另一方面,無需放置靶標(biāo),一切都以開關(guān)的形式、而非人工的形式實(shí)現(xiàn)標(biāo)定過程、以及標(biāo)定和測量的轉(zhuǎn)換過程,在一定程度上提高了測量的效率及自動化的程度。
如圖1所示,為線陣相機(jī)的畸變校正原理圖。圖1(a)為激光器發(fā)射出的激光線陣圖樣,其中圖示豎向激光線組成相互平行的“基準(zhǔn)線陣”;橫向的兩條激光線稱為“范圍標(biāo)志線”,這兩線相互平行且位于基準(zhǔn)線陣的近中心位置。范圍標(biāo)志線內(nèi)的基準(zhǔn)線陣的相對位置固定,且可以通過預(yù)先測定而已知。
具體的畸變標(biāo)定和校正過程為:首先,激光線陣被投影在圖1(b)所示的被測物體上,形成圖1(c)所示的場景;然后將線陣相機(jī)對準(zhǔn)圖1(c)中范圍標(biāo)志線內(nèi)的任意一行,并保持相機(jī)和被測物體都不動,線陣相機(jī)利用時鐘觸發(fā),形成多行重復(fù)的圖像,并輸出,如圖1(d)所示;通過圖像處理獲取圖1(d)中亮線的位置,再對比于圖1(a)中線陣相對位置的測定值(測定值看作為各激光線相對位置的真值),即可獲取此時(相機(jī)和成像物)相對位姿下的相機(jī)畸變系數(shù),完成標(biāo)定;關(guān)掉激光器,保持相機(jī)和被測物距離不變,移動相機(jī)或被測物,使二者相對運(yùn)動而成像(如圖1(e)所示),根據(jù)標(biāo)定得到的畸變系數(shù)即可實(shí)現(xiàn)圖像畸變的實(shí)時校正。
圖1 畸變標(biāo)定和校正原理圖
在上述過程中,①激光線陣中設(shè)置“范圍標(biāo)志線”的目的為:確?;鶞?zhǔn)線陣相對間隔的不變性;這是因?yàn)?基準(zhǔn)線陣不可避免地存在一定的不平行度,這會使得不同位置的相鄰線之間的間隔不同;在設(shè)置了間距較小的“范圍標(biāo)志線”后,會大大縮小基準(zhǔn)線陣的使用范圍,而該范圍內(nèi)激光線的相對間隔可以看作是不變的。②基準(zhǔn)線陣的投射位置和被測物體的成像位置是重合的,根據(jù)基準(zhǔn)線陣相對位置的變化計(jì)算得到的畸變系數(shù)進(jìn)行畸變校正的話,相當(dāng)于對被測物進(jìn)行了實(shí)時的畸變標(biāo)定和校正,而無需已知此時相機(jī)的視場大小,也無需知道相機(jī)和被測物體之間的角度、距離等,準(zhǔn)確高效。③靜止線陣相機(jī)的成像目標(biāo)為一條線,采用時鐘觸發(fā)會形成同一線目標(biāo)不斷重復(fù)的圖像,此時的亮線在圖像中是絕對豎直的,便于計(jì)算。
線陣相機(jī)成像模型示意圖如圖2所示。圖中,O2x2y2為被測物面;O1x1為線陣相機(jī)的線性傳感器的長度方向;O1x1f為平行于物面的輔助線;O1x1f與O1x1的夾角為θ。相機(jī)和物面的相對運(yùn)動方向平行于物面(保證了物距不變);在相對運(yùn)動過程中,物面上的線性物視場依次成像在線性傳感器上,此時線性傳感器的軌跡形成一個平面,稱為像面;像面和物面成θ角,且相對位置不變(即物距和θ角保持不變)。
圖2 相機(jī)成像模型示意圖
在上述運(yùn)動情況下,只需要考慮鏡頭本身的非線性畸變和θ角所形成線性畸變即可。這兩種畸變在像面上的表現(xiàn)都是各點(diǎn)在O1x1軸上的一維位置變化。此時,線陣相機(jī)畸變的數(shù)學(xué)模型可以表示為:
Δf=k0+k1f+k2f2+k3f3+…+knfn+…
(1)
式中,f表示目標(biāo)在O1x1軸上的實(shí)際歸一化線性視場大小;Δf表示目標(biāo)在O1x1軸上的實(shí)際歸一化線性視場和理想歸一化線性視場的差值;kn(n=0,1,2,…)表示畸變系數(shù);f0=f-Δf,表示目標(biāo)的理想歸一化線性視場位置;畸變標(biāo)定和校正的核心內(nèi)容為獲取畸變系數(shù)kn。
2.2.1 基準(zhǔn)線陣相對間隔zm和歸一化線性視場fm
基準(zhǔn)線陣相對間隔是求解公式(1)中歸一化線性視場的關(guān)鍵,而歸一化線性視場為計(jì)算畸變系數(shù)的參數(shù)。因此,首先應(yīng)該明確基準(zhǔn)線陣相對間隔和歸一化線性視場的概念?,F(xiàn)以圖1(d)為例進(jìn)行概念的說明。
(1)基準(zhǔn)線陣定位
將圖1(d)重新顯示為圖3(a)。對圖3(a)中基準(zhǔn)線陣的各激光線進(jìn)行編號,序號以m表示(m從1開始,從左到右依次增加)。理論上講,圖3(a)各行的光強(qiáng)分布完全相同;取圖像中的任意一行,光強(qiáng)分布如圖3(b)所示。對光強(qiáng)進(jìn)行去背景、加權(quán)求平均等操作后,求得各激光線列坐標(biāo)。激光線列坐標(biāo),由符號xm表示。
(2)基準(zhǔn)線陣相對間隔zm
以序號為1和2的激光線間隔為標(biāo)準(zhǔn),計(jì)算基準(zhǔn)線陣相對間隔zm為:
(2)
很顯然,z1=0,z2=1。
(3)基準(zhǔn)線陣歸一化線性視場大小fm
以圖3(a)為例,圖像的最小列號為xmin=0,且對應(yīng)于-1視場;最大列號為xmax=2048,對應(yīng)于1視場;中心列號xmedian=(2048+0)/2=1024對應(yīng)于0視場。則基準(zhǔn)線陣列號xm對應(yīng)的歸一化線性視場為:
圖3 基準(zhǔn)線陣定位示意圖
(3)
2.2.2 畸變系數(shù)計(jì)算
假設(shè)已知基準(zhǔn)線陣相對間隔的測定值(即真值)zm0和激光線陣的實(shí)際歸一化線性視場fm,對畸變系數(shù)進(jìn)行計(jì)算。
(1)初始計(jì)算過程
① 尋找位于圖像0視場兩側(cè)的激光線。如圖3(b)所示,假設(shè)序號為mA和mB(=mA+1)的激光線位于0視場的兩側(cè),其實(shí)際歸一化線性視場分別為fmA和fmB。因?yàn)榛冎行囊话阄挥趫D像中心列位置附近,所以現(xiàn)假設(shè)[fmA,fmB]范圍內(nèi)的位置沒有畸變。
② 以fmA和fmB的視場間距為標(biāo)準(zhǔn)間距;zm0中序號為mA和mB的數(shù)分別為zmA0和zmB0;則各激光線的理想歸一化線性視場fm0為:
(4)
③ 則激光線陣的實(shí)際歸一化線性視場和理想歸一化線性視場的差值為:
Δfm=fm0-fm
(5)
④ 以公式(1)為依據(jù),采用最小二乘法擬合Δfm和fm之間的關(guān)系式,其系數(shù)kn(n=1,2,…)即為所求的畸變系數(shù)。
(2)優(yōu)化過程
在上述過程中存在一個假設(shè):[fmA,fmB]范圍內(nèi)的位置沒有畸變,而且所有的計(jì)算都是以fmA,fmB的數(shù)值為基準(zhǔn)進(jìn)行的。但是,實(shí)際上該范圍肯定存在一個小的畸變,因此,fmA,fmB的數(shù)值存在一定誤差;為了減小該誤差的影響,需要對其進(jìn)行優(yōu)化。
優(yōu)化過程為:
① 將初始計(jì)算過程求得的kn和fm代入公式1,重新擬合出一個新的歸一化線性視場差值,記為Δfm_1;此時Δfm_1中序號為mA和mB的數(shù)(分別記為ΔfmA_1和ΔfmB_1),對比于Δfm中相應(yīng)位置的數(shù)據(jù)(分別記為ΔfmA和ΔfmB)是有一定的差值的;
② 計(jì)算bA=|(ΔfmA_1-ΔfmA)/ΔfmA|和bB=|(ΔfmB_1-ΔfmB)/ΔfmB|;如果bA<0.05,bB<0.05,則跳轉(zhuǎn)至過程⑤,否則繼續(xù)過程③;(注:0.05為自己定義的數(shù)值,數(shù)越小,精度越高,計(jì)算量越大)
③ 選擇Δfm_1中的序號為mA和mB的數(shù),并替換掉Δfm中相應(yīng)位置的數(shù)據(jù),得到新的Δfm;
④ 然后根據(jù)最小二乘法擬合新的Δfm和fm之間的關(guān)系式,得到新的畸變系數(shù)kn;然后回到過程①。
⑤ 根據(jù)最新擬合到的Δfm_1中的序號為mA和mB的數(shù)(ΔfmA_1和ΔfmB_1)來補(bǔ)償序號為mA和mB的激光線的理論歸一化線性視場。即,公式(4)中的fmA和fmB被優(yōu)化補(bǔ)償為fmA+ΔfmA_1和fmB+ΔfmB_1;然后重新計(jì)算公式(4),(5),再根據(jù)公式(1)進(jìn)行多項(xiàng)式擬合,得到最終的畸變系數(shù)kn。
在整個測量過程中,很多環(huán)節(jié)都會產(chǎn)生誤差,如:經(jīng)過優(yōu)化,fmA,fmB的數(shù)值存在的誤差會大大減小,但是依舊會有殘留;去背景和加權(quán)求平均的激光線定位算法會存在一定誤差;基準(zhǔn)線陣相對間隔的真值zm0是由測定得到的,會存在一定的測定誤差,等等。其中,由zm0的測定誤差造成的畸變校正誤差稱為“基準(zhǔn)誤差”,其余原因造成的畸變校正誤差稱為“原理誤差”。
為了分析原理誤差和基準(zhǔn)誤差的變化規(guī)律及大小,現(xiàn)設(shè)定仿真參數(shù)如下:
(1)假設(shè)在一定的物距下,相機(jī)的目標(biāo)線視場為[-130,130]mm,目標(biāo)采集點(diǎn)為一組間隔為1 mm的點(diǎn);則目標(biāo)歸一化線視場的理論數(shù)值為f0=-1∶(1/130)∶1(即以1/130為間隔,從-1到1的序列值)。
(2)激光線陣(激光線數(shù)量記為num≥3)以一定的距離照射到目標(biāo)上時,且邊緣的兩條激光線分別對應(yīng)線視場-130 mm和130 mm。激光線陣的相對間隔的測定值(即真值)zm0,如圖4(a)所示。圖中,橫坐標(biāo)為激光線的序號m,縱坐標(biāo)為zm0-m+1。
圖4 誤差分析
(3)相機(jī)的分辨率為1×2048,鏡頭畸變曲線如圖4(b)所示。圖中,橫坐標(biāo)為歸一化的線性視場;縱坐標(biāo)為畸變量,由符號d表示,單位為(%)。很顯然,該鏡頭的最大畸變發(fā)生在最大視場處,為1.8 %,即max(|d|)=1.8 %。
(4)像面和物面的夾角為θ(可設(shè)定為不同的數(shù)值)。
選擇num=41,θ=5°。首先,根據(jù)圖4(b)顯示的鏡頭畸變和θ=5°,結(jié)合公式(1)~(3),仿真得到激光束的實(shí)際歸一化線性視場fm;然后,根據(jù)2.2.2的過程即可求得畸變系數(shù)kn(n=0,1,2,…);最后,根據(jù)kn對fm進(jìn)行校正,得到校正后的數(shù)據(jù)fz。δf=fz-f0,即為原理誤差,曲線f0-δf如圖4(c)所示。
由圖4(c)可知,當(dāng)num=41,θ=5°時,原理誤差的最大相對值為2.0632×10-5,對應(yīng)的畸變校正的絕對誤差為2.0632×10-5×1024=0.0211 pixel。
改變鏡頭的最大畸變量(即圖4(b)中各數(shù)同時除以某個數(shù)值)、θ和num,可得到其余原理誤差曲線?,F(xiàn)將各曲線中|δf|的最大值提取出來,并轉(zhuǎn)化為絕對誤差,列于表1中。
表1 原理誤差最大值
根據(jù)表1中數(shù)據(jù)可知:(1)當(dāng)相機(jī)的畸變量(包括d和θ)固定時,原理誤差會隨著激光線數(shù)量的增加而減小,達(dá)到最小值后再隨著激光線數(shù)量的增加而增加;很顯然,在上述仿真條件下,激光線數(shù)量大約為41時達(dá)到最優(yōu);因此,為減小測量誤差,實(shí)際測量中激光線數(shù)量盡量選擇最優(yōu)值。(2)當(dāng)激光線數(shù)量固定時,原理誤差會隨著鏡頭畸變量d的增加而增加,而θ的影響不太大。
在3.1描述的仿真過程中,給zm0加上一定量的測定誤差(符合以σerr為方差的高斯分布),得到基準(zhǔn)誤差。類似于表1,不同參數(shù)下對應(yīng)的基準(zhǔn)誤差最大值如表2所示。
根據(jù)表2中數(shù)據(jù)可知:(1)當(dāng)相機(jī)畸變量固定時,基準(zhǔn)誤差會隨著測定誤差的增加而增加;當(dāng)num=41,max(|d|)為1.8 %,測定誤差σerr<3×10-4時,基準(zhǔn)誤差<0.1 pixel;(2)當(dāng)測定誤差σerr固定,且鏡頭最大畸變量max(|d|)<3.6 %,像面和物面夾角θ<10°時,相機(jī)畸變量的大小對基準(zhǔn)誤差的影響不靈敏。
表2 基準(zhǔn)誤差最大值(num=41)
為了驗(yàn)證上述算法的有效性,在實(shí)驗(yàn)室中進(jìn)行了一系列的實(shí)驗(yàn)。
實(shí)驗(yàn)裝置如圖5所示,由兩個系統(tǒng)組成:
圖5 實(shí)驗(yàn)裝置示意圖
系統(tǒng)1:圖像采集系統(tǒng)
(1)線陣相機(jī)。相機(jī)采用的是DALSA線陣相機(jī),其分辨率為1×2048,像素尺寸為7.04 μm,行頻最高可達(dá)52 kHz;相機(jī)鏡頭焦距為12.5 mm,最小物距為0.1 m,畸變曲線如圖4(b)所示。
(2)激光線陣。定制的激光線陣,輸出波長為650 nm,基準(zhǔn)線陣數(shù)為41條,范圍標(biāo)志線為2條;在0.25 m正投影下,基準(zhǔn)線距約為6.5 mm,線長約為190 mm;范圍標(biāo)志線線距約為8 mm,線長約為260 mm。經(jīng)測定,激光線陣相對間隔如圖4(a)所示,測定誤差<1.6×10-4。
(3)光源。采用了24 V的線陣光源,其尺寸為20×500 mm。
(4)電動移動平臺。相機(jī)、激光線陣和光源位置相對固定,被安裝在一個電動平移臺上,該平移臺的有效運(yùn)動距離為1.5 m,運(yùn)動速度可以在0.01~0.5 m/s之間連續(xù)轉(zhuǎn)換。電動平臺運(yùn)行,線陣相機(jī)和被測物之間實(shí)現(xiàn)了相對移動,進(jìn)而拍攝到一系列的圖像。
(5)旋轉(zhuǎn)編碼器。采用的歐姆龍編碼器,分辨率為1024 P/R。編碼器安裝在移動平臺的電機(jī)轉(zhuǎn)軸上,用于保證圖像的分辨率不受移動速度變化的影響。
系統(tǒng)2:被測件
(1)標(biāo)定板。被測物采用標(biāo)準(zhǔn)網(wǎng)格標(biāo)定板。根據(jù)標(biāo)定板圖像校正后的角點(diǎn)位置,實(shí)現(xiàn)畸變校正精度的定量分析。標(biāo)定板有12×9個網(wǎng)格,網(wǎng)格的邊長為20 mm×20 mm。
(2)三維旋轉(zhuǎn)臺。三維旋轉(zhuǎn)臺用于支撐并調(diào)整標(biāo)定板的位姿,采用大恒GCM-1123M三維旋轉(zhuǎn)臺,調(diào)節(jié)范圍為±4°,分辨率為2′。在實(shí)驗(yàn)之前,應(yīng)將標(biāo)定板和相機(jī)的距離調(diào)至0.25 m(使得線陣投影寬度剛好能夠包含被測物的寬度),標(biāo)定板和移動平臺的移動面調(diào)至平行,且標(biāo)定板的豎向直線與相機(jī)傳感器平行(便于數(shù)據(jù)處理)。
4.2.1 畸變標(biāo)定
啟動激光線陣,將線陣投影在標(biāo)定板上;關(guān)閉條形光源,并保持所有器件不動,啟動相機(jī)時鐘觸發(fā),連續(xù)采集10幅2048×2048的圖像,得到其均值圖如圖6(a)所示。提取其中的一行,計(jì)算得到各激光線的位置,并帶入公式(2)和(3),得到各激光線的實(shí)際歸一化線視場fm,如圖6(b)所示。將圖4(a)的數(shù)據(jù)和fm采用2.2.2的數(shù)據(jù)處理過程,即可得到相機(jī)的畸變系數(shù)kn,如表3所示。其中,中間參數(shù):激光束的歸一化線視場差Δfm,如圖6(c)所示。
圖6 基準(zhǔn)線陣均值圖像和相關(guān)數(shù)據(jù)
表3 畸變系數(shù)
4.2.2 畸變校正及誤差分析
關(guān)閉激光線陣、開啟條形光源和移動平臺,采集到1幅1500×2048的標(biāo)定板圖像,如圖7(a)所示,根據(jù)表3中的畸變系數(shù)kn,對圖7(a)進(jìn)行畸變校正,校正后圖像如圖7(b)所示。
圖7 單次測量的標(biāo)定板圖像及相應(yīng)數(shù)據(jù)
對圖7(b)中各角進(jìn)行編號,記為N。N以1為起始,從上往下,從左到右依次增加。各角點(diǎn)在從圖7(a)到圖7(b)的校正過程中的位移量如圖7(c)所示。
以圖7(b)中N=1和2的角點(diǎn)位置為基準(zhǔn),結(jié)合標(biāo)定板各角點(diǎn)的理想相對位置關(guān)系,反推出其余各角點(diǎn)的理想位置;而圖7(b)中各角點(diǎn)的實(shí)際位置和理想位置的距離記為各角點(diǎn)的校正誤差,如圖7(d)所示。圖7(d)中各角點(diǎn)校正誤差的均方根為σ=0.5685 pixel。
綜上,本文提出了一種線陣相機(jī)在線畸變標(biāo)定和校正方法。該方法適用于物距不變的場景,標(biāo)定時只需一組相對間隔已知的激光線陣即可。當(dāng)相機(jī)被放置在工作位置之后,將激光線陣投射到被測物體上,在靜止?fàn)顟B(tài)下對激光線陣成像;根據(jù)像中激光線陣的位置,并結(jié)合激光線陣的理論相對間隔,即可以實(shí)現(xiàn)相機(jī)工作位置的畸變標(biāo)定;然后,保持相機(jī)和被測物相對位姿不變,相機(jī)開始工作,此時可以利用標(biāo)定結(jié)果對相機(jī)工作過程中采集到的圖像進(jìn)行實(shí)時校正。標(biāo)定和校正過程簡單、快捷,而且標(biāo)定場景和相機(jī)的工作場景是相同的,結(jié)果比較可靠。此外,激光線陣的數(shù)量會影響最終的標(biāo)定和校正精度,經(jīng)分析發(fā)現(xiàn),當(dāng)物距為0.25 mm,物視場為±130 mm時,激光線陣的數(shù)量存在一個最優(yōu)值,約為41。實(shí)驗(yàn)證明,在激光線陣數(shù)量為41,物距為0.25 m時,校正后影像點(diǎn)的位置偏差均方根為0.5685 pixel。