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