劉寶龍,張 薇,陳 樺,姚慧敏
(1.西安工業(yè)大學(xué) 計算機科學(xué)與工程學(xué)院,西安 710021;2.中國石油 長慶油田分公司第八采油廠,西安 710021)
一般立體視覺系統(tǒng)分為軟件部分和硬件部分,硬件包括CCD相機采集部分,軟件包括相機標定,立體匹配以及三維重建這三部分。相機標定簡單來說就是通過相機成像規(guī)律得到相機組的內(nèi)外參數(shù),利用參數(shù)進行圖像矯正,立體匹配和三維重建均是在經(jīng)過校正后的圖像基礎(chǔ)上進行。因此相機標定部分決定了整個立體視覺系統(tǒng)最終重建模型的準確度和精度。雙目立體視覺是通過兩個不同的視角對同一場景模擬人類左右眼進行觀察拍攝,由此獲得具有視差的左右圖像,通過信息補償計算還原出原始三維場景。一般的雙目立體視覺直接通過相機進行數(shù)據(jù)采集,顯微立體視覺系統(tǒng)中在CCD相機前面增加顯微鏡充當相機鏡頭進行數(shù)據(jù)采集。因為加入了顯微鏡所以導(dǎo)致成像光路更復(fù)雜,產(chǎn)生更大的畸變,并且加入顯微鏡后會導(dǎo)致視野的縮小,這些都會直接導(dǎo)致相機標定時使用的相機模型變復(fù)雜以及三維成像時的景深計算難度加大。
20世紀90年代文獻[1]深入研究并且建立了雙目顯微視覺系統(tǒng),并將系統(tǒng)應(yīng)用在研究細胞和微小零件三維立體形狀重構(gòu)問題上;文獻[2]在對細胞進行雙目顯微立體視覺操作實驗過程中提出了一種針對CMO型體視顯微鏡的成像模型,并且指出了體視顯微鏡自身所存在的各種畸變參數(shù),以Tsai立體顯微鏡為基礎(chǔ),最終建立了可以進行有效三維測量的顯微立體視覺系統(tǒng);文獻[3]在體視顯微鏡基礎(chǔ)上構(gòu)建了顯微立體視覺系統(tǒng),用來觀察物體的三維表面形貌和三維位移場;文獻[4-6]提及并制造出用于細胞操作的機器人樣機;這些系統(tǒng)都是在2D顯微鏡下工作的。
針對顯微相機的標定,文獻[7]提出了一種通過多次轉(zhuǎn)動標定板來估計成像系統(tǒng)參數(shù)和成像畸變的方法;文獻[8]基于Tsai兩步法提出了利用正交柵格消除鏡頭畸變的改進方法;文獻[9]提出了基于平移的顯微鏡標定方法。文獻[10]設(shè)計了點陣標定板和精密平動平臺,實現(xiàn)了在多種放大倍數(shù)下的基于Tsai顯微鏡的標定方法;文獻[11]結(jié)合建立的平面模板,利用消失點和圓環(huán)點的約束關(guān)系求得相機參數(shù);文獻[12]提出了一種基于彌散圓的光學(xué)顯微鏡景深自動標定方法。
在實際的標定過程中,因為不可避免的人為等因素的干擾,會導(dǎo)致采集到的標定圖像質(zhì)量不一致,這些質(zhì)量不一致的圖像會導(dǎo)致整體的標定產(chǎn)生誤差,由于顯微成像系統(tǒng)為放大系統(tǒng),所以會進一步加大外界信息的干擾。因此為了最大程度的減少人為等因素的干擾,本文在文獻[13]提出的標定方法基礎(chǔ)上通過每組圖像標定的標準差進行原始數(shù)據(jù)篩選,通過減少外界干擾降低最終累計的標定誤差,利用得到的標定結(jié)果進行圖像矯正,并在三種常用顯微倍率環(huán)境下進行上述相機標定,通過對比標定結(jié)果得到顯微環(huán)境下倍率和標定焦距相關(guān)關(guān)系。
相機拍攝是將物體的三維信息轉(zhuǎn)存為二維信息,在此過程中必定會丟失大量信息,立體視覺是通過兩個相機拍攝的信息互相補償還原出物體的三維信息。其中相機標定就是通過相機原理以及系列合適數(shù)據(jù)圖像求解得到物體三維到二維的變換關(guān)系。對于理想的單個相機模型而言,物體的三維信息僅經(jīng)過旋轉(zhuǎn)平移縮放等變換即可得到其對應(yīng)的二維圖像信息,這個過程也就是世界坐標系與圖像坐標系的轉(zhuǎn)換[14-15]。
相機標定常用的相機模型為針孔模型,模型簡易圖如圖1所示,其中長方體代表相機。假設(shè)世界坐標系原點為相機光心,Z軸指向相機外,坐標系遵守右手坐標系。圖像坐標系是以相機的成像面為基準,圖像中心為坐標系原點,同樣遵守右手坐標系。
圖1 針孔成像模型Fig.1 Pinhole imaging moel
這時假定物體點P在世界坐標系OWCS中坐標為M=[X,Y,Z,1]T,其在圖像坐標系OCCS中對應(yīng)的點坐標為m=[u,v,1]T,則這兩點有如下映射關(guān)系:
sm=ARtM
(1)
式中:A為相機內(nèi)參矩陣;R為旋轉(zhuǎn)矩陣;t為平移矩陣;s為縮放因子。令H=A[R,t],H也被稱為單應(yīng)性矩陣。每拍一張標定板的照片就可以得到一個單應(yīng)性矩陣。相機平面中點的坐標通過上面提到的歐拉角點處理得到,空間平面中三維點的坐標可由標準標定板的規(guī)格得到。也就是說每得到一張標定板的圖片就可以得出空間三維點和相機平面二維點之間的關(guān)系,因為未知參數(shù)數(shù)量以及s縮放因子標量的關(guān)系至少需要3組以上才可以完成最基本的標定求解。
上述為一般理想相機模型但在顯微立體視覺系統(tǒng)中又有不同。顯微立體視覺系統(tǒng)(SLM系統(tǒng))不同于一般宏觀的立體視覺系統(tǒng)之處在于借助顯微鏡等工具對合成對象的放大部分,也就是說顯微鏡是實現(xiàn)顯微立體視覺系統(tǒng)中最重要的一部分[16-17]。體視顯微鏡的工作空間大,便于操作微觀對象,而且由于觀測方法是非接觸式測量,所以對觀測物品的表面沒有任何損傷,其還可以通過和電腦連接實時觀察到動態(tài)場景。但由于體視顯微鏡的成像原理屬于光學(xué)成像,容易引起圖像的畸變,導(dǎo)致后續(xù)的顯微立體視覺系統(tǒng)的準確度降低,所以對體視顯微鏡進行顯微標定是十分有必要的。
體視顯微鏡由于光路結(jié)構(gòu)的不同,分為兩條光路共用一個物鏡鏡片的CMO型和兩條光路各自擁有不同物鏡鏡片的G型。
兩種顯微鏡光路結(jié)構(gòu)如圖2所示,受實物限制選擇G型體視顯微鏡,光路經(jīng)過分光鏡分給CCD相機和目鏡。顯微鏡下的標定和普通相機環(huán)境下的標定主要差異在于光路不同以及視場不同。具體來說常規(guī)的相機標定一般是將針孔模型當作理想相機模型,但由于顯微鏡的特殊性,普通的針孔模型并不適用。例如顯微鏡中的校準平面和圖像平行或者接近平行,導(dǎo)致世界坐標平面與圖像坐標共面或是接近共面,而宏觀下相機標定基本都是非共面標定,且由于體視顯微鏡的視場要比一般的相機小的多,顯微鏡下的景深也同樣比一般相機小,所以一般相機標定方法并不適用于顯微鏡環(huán)境。
圖2 體視顯微鏡光路結(jié)構(gòu)示意圖Fig.2 Optical puth structure of stereoscopic microscope
根據(jù)文獻[13]提出的標定方法在實際的試驗中將世界坐標系的原點定為標定板的中心,Z軸指向標定板,切角對面符合右手坐標系。假定存在任一點PW=(XW,YW,ZW)T,則從世界坐標中轉(zhuǎn)換為圖像像素坐標qi=(r,c)T需經(jīng)過如下過程:
(2)
① 利用一般相機模型進行簡單坐標系的變換,即把世界坐標系中PW轉(zhuǎn)為相機坐標系中得到pC,此時的pC坐標位置為理想條件下的世界環(huán)境點P的相機映射點;
② 利用所選面陣相機拍攝特點,進行相機數(shù)學(xué)模型的平面投影映射計算,得到理想的二維點也就是點qc,到此都是在理想計算環(huán)境下的結(jié)果;
④ 通過投影傾斜圖像平面進行畸變點的校正得到最終的實際像素坐標點qi。
具體過程中使用到的數(shù)學(xué)模型為
(3)
(4)
(5)
(6)
式中:f、k、Cx、Cy、Sx、Sy分別為焦距、畸變量、畸變中心坐標、傳感器相鄰單元尺寸;R和t分別為相機的旋轉(zhuǎn)、平移矩陣;I為單位矩陣。在進行雙目標定時增加了計算兩相機坐標系之間的變換關(guān)系,此時假定任一坐標系為上述世界坐標系,用類似方法就可以得到兩相機之間的位置關(guān)系。
由于顯微鏡的放大光路系統(tǒng),導(dǎo)致微小的環(huán)境變化都會對數(shù)據(jù)采集造成干擾,所以簡單的進行過曝,降低對比度和對焦等,以對直觀圖像進行刪減是遠遠不夠的。為了進一步降低外界因素對相機系統(tǒng)的干擾,本文提出誤差篩選方法,通過數(shù)據(jù)的均方誤差對采集數(shù)據(jù)進行數(shù)據(jù)清洗,誤差計算方法為
(7)
誤差篩選需要對所有數(shù)據(jù)進行重投影誤差計算,找到不足以對相機系統(tǒng)描述的數(shù)據(jù)進行剔除。當相機系統(tǒng)的數(shù)字模擬模型確定時,一定會與實際的相機系統(tǒng)存在一定誤差,這個誤差就是采集數(shù)據(jù)是否可以描述相機系統(tǒng)的判斷標準。因為需要剔除的誤差數(shù)據(jù)表現(xiàn)為偏離標準誤差過高或是過低,所以對相機系統(tǒng)的標準誤差用截尾平均數(shù)表示。
設(shè)同一時刻同一對象的左右圖像為一組。對一組圖像而言n=7×7即一組圖像有49個需要計算重投影的特征點,設(shè)Xi={x1,x2,…,x49},其中xj表示單幅中第j個特征點的重投影偏差值,Xi表示第i幅圖像重投影誤差集合,利用截尾平均數(shù)來表示整體各組誤差值:
(8)
a=m/n
(9)
式中:a為截尾系數(shù),a=m/n;m為截掉個數(shù);n為數(shù)據(jù)個數(shù);X(na+1),…,X(n-na)為截尾數(shù)據(jù)。具體步驟為
① 根據(jù)圖像中標定板位置將圖像分類。標定板位置靠近圖像中心的為一類,四周為另一類,這么做是因為相機成像時視野中心和四周會存在不同的畸變程度;
② 單獨對每一組圖像進行立體標定,然后計算每一組的重投影誤差;
③ 根據(jù)步驟①中的圖像分類方式,對步驟②中的重投影誤差進行分類,得到兩個重投影誤差集合Xi,Yi;
④ 根據(jù)重投影誤差集合計算誤差數(shù)據(jù)的偏離程度,通過偏離程度選擇對應(yīng)的m值和剔除對象;
⑥ 利用截尾平均數(shù)再次檢測所有數(shù)據(jù)的偏離情況;
⑦ 對剩余的圖像數(shù)據(jù)組進行整體標定,得到最終的相機模型重投影誤差值Err。
剔除誤差值偏離主體(該主體是指實際相機模型和數(shù)學(xué)表示相機模型之間的誤差)的原因:若重投影誤差偏離主體且遠高于主體水平,則說明該組數(shù)據(jù)的實際點與重投影點之間偏差過大,即該組數(shù)據(jù)異常,遠離數(shù)學(xué)相機模型和實際相機模型,該組數(shù)據(jù)標定失敗。若重投影誤差偏離主體且遠低于主體水平,則說明該組數(shù)據(jù)的實際點與重投影點之間誤差極小,即該組數(shù)據(jù)異常,逼近實際相機模型但遠離數(shù)學(xué)相機模型,該組數(shù)據(jù)同樣標定失敗。
這樣的數(shù)據(jù)既不能用來描述計算使用的數(shù)學(xué)相機模型也不能用來描述實際的相機模型,所以不應(yīng)納入整體標定數(shù)據(jù)。這樣進行篩選后可以很大程度的減少肉眼看不出的外界因素對圖像的干擾,達到降低標定誤差提高標定精度的目的。
根據(jù)實際情況顯微立體視覺系統(tǒng)中體視顯微鏡使用Semorr DOM3000,該顯微鏡共有0.204X、0.306X、0.510X、0.816X和1.275X五種倍率,結(jié)合后期使用環(huán)境以及標定板大小最后選擇在0.510X、0.306X、0.204X這三個常用倍率下進行標定實驗,圖像采集部分由兩個Basler CCD工業(yè)相機組成,標定板規(guī)格依據(jù)倍率選擇10 mm點陣型,由于顯微鏡自帶打光為直射,容易造成標定板過曝,因此選擇側(cè)面被動打光避免過曝和反射點情況發(fā)生。
通常來說相機的畸變影響在視野中心最小,四周最大,所以在標定圖像的采集時應(yīng)該要注意標定板應(yīng)覆蓋到視野的各個角落。并且應(yīng)該在相機的工作范圍內(nèi)盡量在x,y,z三個方向進行標定板的旋轉(zhuǎn)。在所有的圖像采集過程中顯微鏡的觀測部分和CCD相機部分不可以有位置的變化,CCD相機也應(yīng)該保持光圈、焦距等參數(shù)的一致,采集的所有圖片都要保證清晰避免標定板反光或是過曝等不良情況。在另外兩個倍率下重復(fù)采集操作,共得到三組不同倍率下的標定圖像。
得到合適的標定板采集圖像后,對圖像進行高斯平滑濾波、邊緣提取以及模型匹配等操作,找到并定位圖像中每個圓的圓心坐標,再根據(jù)標定板規(guī)格即世界坐標系中的參數(shù),利用上述數(shù)學(xué)計算過程進行相機的內(nèi)外參數(shù)求解計算。
實際使用的顯微鏡放大倍率分別為0.204X,0.306X,0.510X,0.816X,1.275X這5種,結(jié)合實際的標定板大小(10 mm×10 mm)以及顯微鏡的實際放大倍率,選擇只在三組常用倍率下進行雙目標定。標定校正后得到的相機外參數(shù)見表1,其中clpcr為標定得到的左相機相對右相機的位姿,位姿的6個參數(shù)分別為世界坐標系中的X、Y、Z軸向距離和平面的余弦角ω、δ、θ,rectposeR代表在校正后光軸平行的理想雙目相機模型中,左相機相對于右相機的位姿,位姿參數(shù)含義同上。
相機內(nèi)參的標定數(shù)據(jù)見表2,參數(shù)分別為焦距f,畸變量k,水平及垂直像素尺寸(dx,dy)即像元尺寸大小,畸變中心橫縱坐標(lx,ly)即主點坐標。
表1 相機外參標定數(shù)據(jù)Tab.1 Calibration data of camera external fererence
表2 相機內(nèi)參標定數(shù)據(jù)Tab.2 Calibration data of camera internal reference
注:R為右相機;L為左相機。
綜合考慮數(shù)據(jù)和標定板在圖像中的尺寸,最終選擇在0.306X倍率下完成后續(xù)的工作。因此在0.306X倍率下進行誤差篩選重標定。對所有數(shù)據(jù)進行整體標定,得到累計的重投影誤差如圖3所示。
圖3 標定累計誤差
圖3中橫坐標為累計圖像數(shù)量,縱坐標為標定累計得到的重投影誤差,最終得到相機標定誤差為0.411 968 pixel。進一步進行對比實驗,用同樣的數(shù)據(jù)進行誤差篩選標定。對采集到的數(shù)據(jù)進行分組,中心組(圖像1、2、7、8、10、11、14、15、20~24)和四周組(包括圖像3~6、9、12、13、16~19),部分圖像數(shù)據(jù)如圖4~5所示。
圖4 中心組Fig.4 Central groop
圖5 四周組Fig.5 Periphery group
分別對單組數(shù)據(jù)進行標定誤差計算和累計標定誤差計算,得到圖6和圖7兩幅圖像誤差分布圖。其中圖6為單獨每一幅圖像的標定重投影誤差,圖7為剔除部分數(shù)據(jù)后順序累計到某張時相機標定的重投影誤差。
圖6 單幅標定誤差Fig.6 Single calibration error
圖7 單幅標定累計誤差Fig.7 Single calibration cumulation error
通過兩個誤差集合分別計算各自集合數(shù)據(jù)的偏離程度,中心組誤差偏離不超過0.01 pixel,四周組誤差偏離不超過0.02 pixel,得到各自對應(yīng)的m值。在確定截取個數(shù)m時遵守寧少勿多,盡量不影響到數(shù)據(jù)整體水平的原則。
兩個誤差集合分別剔除的數(shù)據(jù)為圖像2和圖像9。從圖6中也不難看出第2幅和第9幅的重投影誤差與整體數(shù)據(jù)相較偏差過大。雖然第19幅和第20幅均方誤差出現(xiàn)斷層分布,但他們在整體數(shù)據(jù)中分布正常,所以不予刪除,有斷層出現(xiàn)是由于在拍攝時的角度位置變化引起。
對剩余圖像進行整體的相機標定,得到累計的平均均方誤差如圖7所示。
未經(jīng)過誤差篩選的標定誤差為
Error = 0.411 968 pixel。
經(jīng)過誤差篩選后的標定誤差為
Error = 0.385 889 pixel。
從結(jié)果看到,經(jīng)過誤差篩選后的標定誤差比未經(jīng)過誤差篩選的標定誤差降低了6.5%。由上述結(jié)果可以得出,對標定素材圖像進行誤差篩選,可以避免一定的外在因素干擾,減少對相機系統(tǒng)的偏差描述數(shù)據(jù),降低相機的標定誤差。
圖8 累計標定焦距Fig.8 Accumulated calibration focal lenth
利用誤差篩選后的數(shù)據(jù)進行標定,得到了標定焦距和圖像數(shù)關(guān)系如圖8所示,其中縱坐標為累計標定焦距,從圖8可以看出,隨著圖像數(shù)據(jù)的增多,標定焦距和誤差在18幅后20幅左右開始趨于穩(wěn)定(其他相機參數(shù)也有同樣規(guī)律)。雖然圖像越多標定數(shù)據(jù)越穩(wěn)定,但同時由于圖像數(shù)據(jù)的增多,標定過程計算量會大幅增加,導(dǎo)致計算速度變慢,所以相機標定圖像數(shù)據(jù)選擇20幅左右最為合適。
文中針對顯微環(huán)境的雙目相機立體標定問題,通過一般的立體相機模型進行坐標系的轉(zhuǎn)換,利用面陣相機特點進行點的投影計算得到理想映射點的二維坐標,通過設(shè)定的畸變模型進行畸變點計算,利用投影傾斜進行畸變校正并得到實際點坐標,在這一系列過程中得到圖像點的變換矩陣即相機內(nèi)外參。
由于實際的采集環(huán)境和操作等問題導(dǎo)致采集到的所有圖像數(shù)據(jù)并不一定適合進行相機標定計算,因此要先對所有圖像數(shù)據(jù)進行誤差篩選,通過計算每對圖像數(shù)據(jù)的標定重投影誤差,根據(jù)重投影誤差的分布篩選掉不具有相機系統(tǒng)代表的圖像對,以提高最終整體相機標定精度。通過誤差篩選后的數(shù)據(jù)進行相機立體標定,為基于顯微立體視覺的三維重建提供基礎(chǔ)。利用該方法對多組常用顯微鏡倍率進行標定,發(fā)現(xiàn)在顯微鏡環(huán)境下放大倍率和標定焦距成正相關(guān)關(guān)系,驗證工作計劃在后續(xù)工作中進行。