劉 堅(jiān) 王媛媛
湖南大學(xué)汽車車身先進(jìn)設(shè)計(jì)制造國(guó)家重點(diǎn)實(shí)驗(yàn)室,長(zhǎng)沙,410082
由于相機(jī)成像模型自身的局限性會(huì)使圖像產(chǎn)生“近大遠(yuǎn)小”的透視畸變,在對(duì)物體進(jìn)行幾何尺寸和空間位置的視覺(jué)測(cè)量時(shí)嚴(yán)重影響測(cè)量精度,因此校正圖像的透視畸變對(duì)于提高視覺(jué)測(cè)量精度至關(guān)重要。目前校正圖像“近大遠(yuǎn)小”透視畸變的方法主要分為兩類:通過(guò)得到物體的理想正視圖圖像的校正方法和透視誤差補(bǔ)償?shù)男U椒?。其中通過(guò)得到物體的理想正視圖圖像的校正方法是使物體目標(biāo)平面上的點(diǎn)與相機(jī)平面的距離相等來(lái)實(shí)現(xiàn)的[1],主要有角度檢測(cè)法、控制點(diǎn)變換法和射影幾何方法[2]三類,這些方法都基于旋轉(zhuǎn)角度檢測(cè)和直線檢測(cè)技術(shù),算法比較復(fù)雜[3]且應(yīng)用范圍有限,僅對(duì)平面物體的圖像具有較好的校正效果,對(duì)于曲面物體其理想正視圖中物體上的點(diǎn)與相機(jī)平面的距離并不相等,仍然存在“近大遠(yuǎn)小”的透視畸變,因此無(wú)法應(yīng)用到曲面物體的圖像透視畸變校正中。透視誤差補(bǔ)償?shù)男U椒╗4]直接對(duì)待測(cè)物體的像在標(biāo)定平面逆映射的等效物理尺寸進(jìn)行誤差補(bǔ)償,但需要已知待測(cè)物體與標(biāo)定平面的準(zhǔn)確距離。
在機(jī)械制造領(lǐng)域,圓形或球形特征的物體十分常見(jiàn),對(duì)于這類物體,一般需采用雙目視覺(jué)方法,借助多個(gè)視圖獲取三維實(shí)體的參數(shù)。當(dāng)物體的特征模型已知時(shí),通過(guò)物體的單視圖也能檢測(cè)物體的三維位置和姿態(tài),其中最常見(jiàn)的是利用物體與其投影圖像之間存在的特定的點(diǎn)、線對(duì)應(yīng)關(guān)系求解其三維位置[5]。本文的檢測(cè)目標(biāo)是實(shí)現(xiàn)對(duì)一帶有圓形特征的球體的空間姿態(tài)測(cè)量,環(huán)繞該球體球面大圓處有一條凹槽,該凹槽構(gòu)成了一個(gè)空間圓環(huán),而空間圓在攝像機(jī)像平面上所成的像是橢圓形[6],因此該凹槽在像平面上所成的像是半個(gè)橢圓,若球體及凹槽的形狀參數(shù)是已知的,則可以通過(guò)球體的單視圖圖像中橢圓的參數(shù)檢測(cè)其當(dāng)前姿態(tài)[7]。但是由于透視畸變的存在,球體凹槽上的點(diǎn)離相機(jī)平面的距離均不相同,導(dǎo)致其在圖像平面的橢圓的投影中心誤差[8]、長(zhǎng)軸誤差和短軸誤差很大,大大降低球體姿態(tài)的檢測(cè)精度。
針對(duì)上述問(wèn)題,本文基于逆透視畸變[9-10]和攝像機(jī)標(biāo)定技術(shù)[11-12]提出了一種面向球姿態(tài)檢測(cè)的圖像透視畸變校正方法。
理想的相機(jī)成像模型為平面透視投影模型,即小孔成像模型,該模型是目前攝像機(jī)標(biāo)定和機(jī)器視覺(jué)中應(yīng)用最廣泛的模型[13]。其成像原理如圖1所示,其中坐標(biāo)系OwXwYwZw為世界坐標(biāo)系,用來(lái)表示被拍攝物體和相機(jī)在空間中的位置;坐標(biāo)系OcXcYcZc為相機(jī)坐標(biāo)系,Oc為相機(jī)的光心,Zc坐標(biāo)軸與相機(jī)的光軸重合;坐標(biāo)系Oixy為圖像坐標(biāo)系,原點(diǎn)Oi為光軸OcZc與圖像平面的交點(diǎn),稱為圖像主點(diǎn),x軸平行于Xc軸,y軸平行于Yc軸;OtUV為像素坐標(biāo)系,以像素為單位。
空間中任意一點(diǎn)M(xw,yw,zw),在相機(jī)坐標(biāo)系中的坐標(biāo)可以通過(guò)旋轉(zhuǎn)矩陣R和平移矩陣T變換得到,即世界坐標(biāo)系和相機(jī)坐標(biāo)系之間的變換關(guān)系為
(1)
建立相機(jī)坐標(biāo)系和圖像坐標(biāo)系之間的變換關(guān)系:
(2)
其中,K為相機(jī)的內(nèi)參數(shù)矩陣;(u0,v0)為圖像主點(diǎn)的像素坐標(biāo);f為相機(jī)透鏡的焦距;dx、dy分別為x軸、y軸方向單位像素的物理大小。內(nèi)參數(shù)矩陣K、旋轉(zhuǎn)矩陣R、平移矩陣T都可通過(guò)相機(jī)標(biāo)定獲得。
但這種相機(jī)成像模型存在不可避免的缺點(diǎn),在同一張圖像中,物體“近大遠(yuǎn)小”的現(xiàn)象造成的畸變直接影響視覺(jué)測(cè)量精度,圖1中線段MN和線段PQ實(shí)際長(zhǎng)度相等,且平行于圖像平面,根據(jù)透視投影原理可得,物距較小的線段PQ在相平面上的投影大小明顯大于物距較大的線段MN的投影,這就是本文中主要研究的透視畸變,而這種透視畸變?cè)诠庑母浇^小,遠(yuǎn)離光心處逐漸變大。
圖1 相機(jī)成像模型Fig.1 Camera imaging model
圖2 待檢測(cè)球體模型Fig.2 Tested sphere model
逆透視變換為上述透視變換的逆過(guò)程,是為了找到圖像上點(diǎn)的像素坐標(biāo)與其世界坐標(biāo)之間的對(duì)應(yīng)關(guān)系,從而可以恢復(fù)空間中某一平面的部分信息。
由式(1)、式(2)可知,若已知K、R、T的值,可由物體上的點(diǎn)的空間坐標(biāo)(xw,yw,zw)得到圖像上對(duì)應(yīng)的像素坐標(biāo),但由現(xiàn)實(shí)三維空間的點(diǎn)轉(zhuǎn)換為二維圖像坐標(biāo)后,丟失了深度信息,若能夠已知物體上點(diǎn)的三維坐標(biāo)中的某一維,則可完成圖像上點(diǎn)的像素坐標(biāo)(u,v)到空間三維坐標(biāo)(xw,yw,zw)的轉(zhuǎn)換。因此可將要恢復(fù)的空間平面的z坐標(biāo)均設(shè)為0,從而得到空間平面x、y坐標(biāo)信息,這就是逆透視變換的過(guò)程[14]。
由此可知P平面上點(diǎn)的世界坐標(biāo)(xwP,ywP,0)與像素坐標(biāo)(uP,vP)之間的關(guān)系為
(3)
(4)
由于球心在P平面上,由上式可得球心的世界坐標(biāo)。
Qi平面上點(diǎn)的世界坐標(biāo)(xwQ,ywQ,zwQ)與像素坐標(biāo)(uQ,vQ)之間的關(guān)系為:
(5)
(6)
其中(a,b,c)是由式(4)計(jì)算得到的球心的世界坐標(biāo),zwQ的值等于di,OR為球體半徑。
實(shí)驗(yàn)方案如圖3所示,旋轉(zhuǎn)臺(tái)和旋轉(zhuǎn)擺角器連接共同完成繞Z軸方向和繞Y軸方向的轉(zhuǎn)動(dòng),將球體放置于旋轉(zhuǎn)臺(tái)中心,使球心與擺角器的擺角中心重合,且球心位于相機(jī)光軸附近,相機(jī)和旋轉(zhuǎn)臺(tái)的初始位置均與水平面平行,光源采用平行背光源和兩個(gè)條形光源,保證球體外輪廓和球面細(xì)節(jié)清晰,通過(guò)光源控制器調(diào)節(jié)光源的亮度,為避免環(huán)境光的干擾,實(shí)驗(yàn)在暗箱中進(jìn)行。實(shí)驗(yàn)開(kāi)始后,相機(jī)和光源的位置均保持不變。
圖3 實(shí)驗(yàn)?zāi)P虵ig.3 Experimental model
完成不同角度的球體圖像采集后,將球體從旋轉(zhuǎn)臺(tái)上取下,并將擺角器的角度恢復(fù)到初始位置,相機(jī)焦距和位置均不改變,然后用精密標(biāo)定板對(duì)相機(jī)進(jìn)行標(biāo)定實(shí)驗(yàn),并對(duì)過(guò)球心且垂直于相機(jī)光軸的平面位置進(jìn)行標(biāo)定。
圖4為依據(jù)實(shí)驗(yàn)方案搭建的實(shí)驗(yàn)平臺(tái),實(shí)驗(yàn)裝置包括精密光學(xué)平臺(tái)、型號(hào)為piA2400-17gc的Basler彩色CCD相機(jī)、GCM-730402M型旋轉(zhuǎn)擺角器、GCM-1101M型旋轉(zhuǎn)臺(tái)、OPT-FAT50型平行背光源、OPT-LXT402221型條形光源、OPT-DPA1024E-4型光源控制器、Win7 64位系統(tǒng)工控機(jī)、帶有水平儀的相機(jī)支架、棋盤(pán)格邊長(zhǎng)為5 mm且圖案陣列為12×9的標(biāo)定板,以及3D打印的球體,該球體打印精度達(dá)到0.1 mm,球體直徑60 mm,在球體最大圓處有一個(gè)深度為1 mm、寬度為0.5 mm的凹槽,球下方為定位結(jié)構(gòu),保證球心位于轉(zhuǎn)臺(tái)中心且凹槽所在的平面初始位置垂直于旋轉(zhuǎn)平臺(tái)。
(1)利用SolidWorks設(shè)計(jì)球體模型,并將模型導(dǎo)入3D打印機(jī)中,調(diào)節(jié)打印參數(shù),打印出符合精度要求的球體。
(2)調(diào)整實(shí)驗(yàn)平臺(tái),首先利用相機(jī)支架上與相機(jī)相連接的水平儀將相機(jī)調(diào)平,使相機(jī)平行于水平面,然后將旋轉(zhuǎn)臺(tái)和擺角器均調(diào)至0°,將球體放置于旋轉(zhuǎn)臺(tái)并固定,使球心與擺角器的擺角中心重合,且球心位于相機(jī)光軸附近,此時(shí)α和β都等于0°。
(3)采集球體不同α和β的圖像,在拍照過(guò)程中保持光源不變,相機(jī)焦距不變,通過(guò)調(diào)整旋轉(zhuǎn)臺(tái)和擺角器的角度獲取球體不同姿態(tài)。
(4)完成球體圖像采集后,取下球體,進(jìn)行標(biāo)定實(shí)驗(yàn)。將旋轉(zhuǎn)臺(tái)和擺角器均調(diào)至0°,然后將標(biāo)定板放置于過(guò)球心且垂直于相機(jī)光軸的平面位置,對(duì)標(biāo)定板進(jìn)行拍照,以便得到相機(jī)相對(duì)P平面的外部參數(shù);最后調(diào)整標(biāo)定板的姿態(tài),得到15~20張不同角度的標(biāo)定板的圖像,完成標(biāo)定實(shí)驗(yàn)。
本文算法流程如圖5所示,首先由采集的標(biāo)定板不同角度的圖像計(jì)算得到相機(jī)的內(nèi)部參數(shù)、外部參數(shù)和畸變系數(shù),然后對(duì)采集的球在不同姿態(tài)的每張圖像進(jìn)行如下操作:
(1)根據(jù)求得的相機(jī)畸變系數(shù)對(duì)采集的球的圖像進(jìn)行幾何畸變校正。
(2)利用圖像預(yù)處理、邊緣提取和Hough變換[15]等方法擬合球的外圓并求得球心的像素坐標(biāo),再根據(jù)相機(jī)內(nèi)部參數(shù)和相對(duì)P平面的外部參數(shù)計(jì)算得到球心的世界坐標(biāo)。
(3)提取球面上凹槽所形成的弧線,為了提高透視畸變校正算法的效率,選取弧線上部分像素點(diǎn)進(jìn)行透視畸變校正,得到其校正后的像素坐標(biāo)。
(4)利用透視畸變校正后的像素點(diǎn)進(jìn)行橢圓擬合,得到α、β的值。
圖5 本文算法流程圖Fig.5 Flow chart of the method
文獻(xiàn)[4]中通過(guò)建立透視投影誤差模型對(duì)齒輪廓圓的“近大遠(yuǎn)小”透視畸變進(jìn)行了校正,其透視投影誤差的非線性數(shù)學(xué)模型如下:
(7)
其中,L0為待測(cè)物體在標(biāo)定平面內(nèi)的實(shí)際長(zhǎng)度;S0為標(biāo)定平面到相機(jī)鏡頭的工作距離;ΔS為待測(cè)物體離標(biāo)定平面的距離;f為相機(jī)的焦距。
應(yīng)用該算法的流程如下:首先對(duì)原始圖像中提取的球面凹槽形成的弧線進(jìn)行橢圓擬合,計(jì)算出短軸逆映射到標(biāo)定平面后的等效長(zhǎng)度;然后根據(jù)逆透視變換計(jì)算得到球面弧線上與短軸相交的點(diǎn)離標(biāo)定平面的距離,以此代表短軸離標(biāo)定平面的距離;最后應(yīng)用式(7)中的誤差補(bǔ)償模型對(duì)橢圓短軸進(jìn)行誤差補(bǔ)償。由于該算法是直接對(duì)橢圓短軸長(zhǎng)度進(jìn)行誤差補(bǔ)償,因此只能校正α,而β的值與校正前相等。
圖6 采集的原始圖像Fig.6 Collected original image
圖7 弧線校正的圖像Fig.7 Arc correction image
圖8 未校正和校正后橢圓擬合結(jié)果圖Fig.8 Pre-correction and post-correction ellipse fitting results
圖6為α=40°、β=-1°時(shí)采集的原始圖像。圖7為應(yīng)用本文算法對(duì)弧線進(jìn)行透視畸變校正的圖像,圖中弧線是直接提取的凹槽所形成的弧線,標(biāo)記點(diǎn)是對(duì)弧線上的部分像素點(diǎn)進(jìn)行透視畸變校正后的像素點(diǎn)位置,圖8所示為應(yīng)用本文算法前后對(duì)弧線進(jìn)行橢圓擬合的結(jié)果,圖中外側(cè)橢圓為校正前的擬合結(jié)果,內(nèi)側(cè)橢圓為校正后的擬合結(jié)果,從圖中可以看出校正后的橢圓短軸長(zhǎng)度明顯小于校正前的橢圓短軸長(zhǎng)度,正是由于球體的外輪廓圓所在的平面距離相機(jī)較遠(yuǎn),凹槽形成的弧線距離相機(jī)較近,將弧線上的點(diǎn)全部平移到外輪廓圓所在平面后再次透視投影,短軸長(zhǎng)度會(huì)變短。
表1為β理論值為-1°、α理論值為5°~50°時(shí)未進(jìn)行透視畸變校正、應(yīng)用本文算法和文獻(xiàn)[4]的算法進(jìn)行透視畸變校正計(jì)算得到的α和β值的對(duì)比。從表中可以看出,在未進(jìn)行透視畸變校正時(shí)計(jì)算得到的α誤差很大,最小誤差為1.499°,最大誤差達(dá)到了9.210°,平均誤差為5.912°,且誤差隨著其角度的增大也逐漸增大,這正是由于“近大遠(yuǎn)小”透視畸變?cè)斐傻?,位于光軸附近的圖像透視畸變較小,而離光軸較遠(yuǎn)的圖像透視畸變較大,實(shí)驗(yàn)數(shù)據(jù)驗(yàn)證了透視畸變這一特點(diǎn)。未進(jìn)行透視畸變校正時(shí)β的最小誤差為0°,最大誤差為4.642°,平均誤差為1.019°,由此可見(jiàn)
表1 透視畸變校正前和透視畸變校正后計(jì)算的角度(β=-1°)Tab.1 Angle before and after perspective distortion correction (β=-1°)(°)
透視畸變對(duì)α的影響最大,而對(duì)β的影響較小,這是由于β是由橢圓長(zhǎng)軸的傾角決定,而橢圓長(zhǎng)軸兩端始終在同一平面上。
圖9為根據(jù)表1數(shù)據(jù)得到的應(yīng)用本文算法校正后α的絕對(duì)誤差趨勢(shì)圖,平均誤差為0.563°,與校正之前相比精度有了很大提升,并且誤差值隨α的變化隨機(jī)波動(dòng),但當(dāng)α=50°時(shí),誤差明顯較大,這是由于相機(jī)景深是一定的,此時(shí)橢圓弧線距離初始對(duì)焦的位置遠(yuǎn)大于景深,導(dǎo)致獲取的圖像模糊,弧線位置提取不準(zhǔn)確,使得誤差明顯增大。應(yīng)用本文算法校正后β的平均誤差為0.372°,精度有了明顯提高。
圖9 本文算法校正后α的絕對(duì)誤差趨勢(shì)圖(β=-1°)Fig.9 The absolute error trend of alpha angle after correction by the method (β=-1°)
應(yīng)用文獻(xiàn)[4]的算法校正后α的平均誤差為1.143°,與校正前相比精度有很大提升,但與本文算法相比,α理論值為10°~50°時(shí)其校正精度均低于本文算法的校正精度,只有在α理論值為5°時(shí)其精度略高于本文算法的校正精度,這是由于應(yīng)用文獻(xiàn)[4]的算法時(shí),誤差補(bǔ)償值主要由短軸在標(biāo)定平面的等效長(zhǎng)度及短軸到標(biāo)定平面的距離決定,因此由球的圖像擬合的橢圓短軸的精度和β的精度嚴(yán)重影響其最終的校正精度,而在α較小時(shí),透視畸變也較小,由球的圖像擬合得到的橢圓短軸長(zhǎng)度和β誤差都很小,導(dǎo)致α較小時(shí)其精度較高。而當(dāng)α較大時(shí),擬合的橢圓誤差也較大,其校正精度較低。由于該算法只能對(duì)視覺(jué)測(cè)量中待測(cè)物體的長(zhǎng)度進(jìn)行透視畸變校正,因此并不能對(duì)β進(jìn)行校正,適用范圍較小。
為了進(jìn)一步驗(yàn)證算法的穩(wěn)定性和有效性,分別計(jì)算了不同β值時(shí)的球的不同姿態(tài)。表2、表3、表4分別對(duì)應(yīng)β理論值為1°、5°、-5°,α理論值為5°~50°時(shí)的數(shù)據(jù)。從表中可以看出,應(yīng)用本文算法校正后α的平均誤差均在0.6°以下,其精度高于應(yīng)用文獻(xiàn)[4]算法校正后的精度,證明了本文算法的先進(jìn)性。圖10、圖11、圖12分別為根據(jù)表2、表3、表4數(shù)據(jù)得到的應(yīng)用本文算法校正后α的絕對(duì)誤差趨勢(shì)圖。
應(yīng)用本文算法校正后的角度檢測(cè)誤差主要來(lái)源是由實(shí)驗(yàn)裝置帶來(lái)的系統(tǒng)誤差和圖像處理過(guò)程中弧線提取不準(zhǔn)確帶來(lái)的隨機(jī)誤差。光學(xué)平臺(tái)表面的加工誤差和安裝誤差可能導(dǎo)致其平面并不水平,相機(jī)和實(shí)驗(yàn)球體安裝過(guò)程中的誤差可能導(dǎo)致初始位置球心、擺角器的擺角中心和相機(jī)光軸沒(méi)有在同一直線上等,這些由于實(shí)驗(yàn)裝置制造和安裝過(guò)程中引入的誤差都是系統(tǒng)誤差;球體最大圓處的圓形凹槽寬度為0.5 mm,深度為1 mm,采集的圖像中凹槽所形成的弧線具有一定的寬度,因此在圖像處理過(guò)程中提取弧線的中心位置的像素點(diǎn)時(shí)會(huì)帶來(lái)隨機(jī)誤差。
表2 透視畸變校正前和透視畸變校正后計(jì)算的角度 (β=1°)Tab.2 Angle before and after perspective distortion correction (β=1°)(°)
表3 透視畸變校正前和透視畸變校正后計(jì)算的角度(β=5°)Tab.3 Angle before and after perspective distortion correction(β=5°)(°)
表4 透視畸變校正前和透視畸變校正后計(jì)算的角度(β=-5°)Tab.4 Angle before and after perspective distortion correction (β=-5°)(°)
圖10 本文算法校正后α的絕對(duì)誤差趨勢(shì)圖(β=1°)Fig.10 The absolute error trend of alpha angle after correction by the method (β=1°)
圖11 本文算法校正后α的絕對(duì)誤差趨勢(shì)圖(β=5°)Fig.11 The absolute error trend of alpha angle after correction by the method (β=5°)
圖12 本文算法校正后α的絕對(duì)誤差趨勢(shì)圖(β=-5°)Fig.12 The absolute error trend of alpha angle after correction by the method (β=-5°)
(1)本文基于逆透視變換理論提出了一種面向球姿態(tài)檢測(cè)的圖像透視畸變校正方法并從理論上分析了其可行性,詳細(xì)介紹了圖像透視畸變校正方法的步驟;與現(xiàn)有的透視畸變校正算法進(jìn)行對(duì)比,本文提出的圖像透視畸變校正方法在球姿態(tài)檢測(cè)中對(duì)α和β的測(cè)量精度更高,能夠滿足工業(yè)生產(chǎn)中對(duì)球姿態(tài)的測(cè)量需求。
(2)本文提出的圖像透視畸變校正方法應(yīng)用范圍廣泛,可以應(yīng)用在具有圓形特征或球形特征物體的視覺(jué)檢測(cè)中,為視覺(jué)測(cè)量領(lǐng)域提供了一種更高精度的圖像透視畸變校正方法。