王穎 李鋒
(江蘇科技大學(xué)電子信息學(xué)院 鎮(zhèn)江 212003)
在光柵投影三維結(jié)構(gòu)光成像系統(tǒng)中,由于投影儀投影角度、相機(jī)拍攝角度等因素的影響,使得相機(jī)獲取的結(jié)構(gòu)光圖像發(fā)生不同程度的透視畸變[1]。但在結(jié)構(gòu)光后續(xù)處理中,如結(jié)構(gòu)光相位誤差補(bǔ)償?shù)龋ǔP枰Y(jié)構(gòu)光圖像的無畸變正視圖圖像,因此在進(jìn)行后續(xù)處理之前需要對畸變結(jié)構(gòu)光圖像進(jìn)行校正[2]。
常用的圖像校正方法主要有角度檢測法[3]和透視變換法[4]。角度檢測校正方法依據(jù)檢測的圖像中的直線角度,進(jìn)行旋轉(zhuǎn)校正,忽視圖像透視畸變,存在一定局限性;透視變換校正方法從投影儀和相機(jī)的成像原理出發(fā),對圖像透視畸變進(jìn)行校正,效果較好,但透視變換校正方法首先需要精確獲取控制點(diǎn)坐標(biāo),常用的基于Hough變換檢測方法[5],精度不高且穩(wěn)定性差。
文章提出一種改進(jìn)的透視變換方法,用于畸變結(jié)構(gòu)光圖像的自校正。采用高斯梯度方向亞像素擬合曲線的方法更加精確地檢測到投影結(jié)構(gòu)光圖像邊緣,使透視變換矩陣更加準(zhǔn)確。
透視投影也稱作投影映射,是將圖像投影到一個新的視平面。利用透視中心、像點(diǎn)、目標(biāo)點(diǎn)三點(diǎn)共線的條件,按透視旋轉(zhuǎn)定律使透視面繞透視軸旋轉(zhuǎn)某一角度,破壞原有投影光線束,仍保持透視面上投影幾何圖形不變的變換[6]。
由于觀察視角的不同,可以看到一個物體的一個或多個側(cè)面,按照透視中空間坐標(biāo)系劃分,可以分為單點(diǎn)透視投影、雙點(diǎn)透視投影和三點(diǎn)透視投影[7]。文中討論的是單點(diǎn)透視投影,即投影儀投射圖像到投射面,投射面的圖像發(fā)生透視畸變,利用透視變換的相關(guān)算法對其進(jìn)行矯正。
以點(diǎn)S為視點(diǎn),由于視線與矩形ABCD所在的平面存在一定的夾角,使得投影面上的圖像發(fā)生透視畸變,形成新的四邊形,如圖1所示。
圖1 透視變換
以圖中的四個角點(diǎn)為例,經(jīng)過透視變換后,A點(diǎn)對應(yīng) A′點(diǎn),B點(diǎn)對應(yīng) B′點(diǎn),C點(diǎn)對應(yīng)C′點(diǎn),D點(diǎn)對應(yīng)D′點(diǎn),原四邊形的形狀發(fā)生改變。透視投影是矩形ABCD平面上的每一個點(diǎn)在視角的作用下投影到 A′B′C′D′平面的過程。若矩形 ABCD 為無畸變正視圖,則透視變換是畸變圖形 A′B′C′D′上的每一個像素點(diǎn)對應(yīng)到正視圖上對應(yīng)的像素點(diǎn)的過程[8]。而實(shí)現(xiàn)透視畸變的矯正,就是要找到A′B′C′D′平面上的點(diǎn)與正視圖上的點(diǎn)的一一對應(yīng)關(guān)系。
通用的變換公式為
式中,u,v是原始圖像的某點(diǎn)坐標(biāo),經(jīng)透視變換后得到的對應(yīng)圖像坐標(biāo)為 x,y,其中 x=x′/w′,透視變換矩陣,可拆分成四部分,其中,表示線性變換用于平移產(chǎn)生透視變換。重新整理公式可以得到:
其中,(x,y)是正視圖的像素坐標(biāo),(u,v)是畸變圖像的像素坐標(biāo),a11,a12,a13,a21,a22,a23,a31,a32,a33是透視變換的參數(shù)。
由式(2)、(3)可以推出,只要得到四對畸變圖像與正視圖像相對應(yīng)的坐標(biāo)對就可以解出透視變換參數(shù),從而求得透視變換矩陣。四對坐標(biāo)點(diǎn)的選取對實(shí)現(xiàn)高精度透視畸變校正有很大的影響。一般選取畸變圖像的四個角點(diǎn)的坐標(biāo),角點(diǎn)較于其他點(diǎn)更容易獲取且分布均勻。然后需要確定角點(diǎn)對應(yīng)在正視圖中的位置坐標(biāo),對應(yīng)不同的正視圖角點(diǎn)的坐標(biāo),其校正結(jié)果也不同。通常的算法是將圖像實(shí)際的尺寸轉(zhuǎn)換為相應(yīng)的坐標(biāo)值,但這樣會導(dǎo)致校正之后的圖像邊緣不連續(xù),出現(xiàn)斷層現(xiàn)象,需使用灰度插值法來保證圖像的連續(xù)性和平滑性[9]。
在結(jié)構(gòu)光圖像的實(shí)際應(yīng)用中,按照同樣的準(zhǔn)則選取圖像中結(jié)構(gòu)光投影區(qū)域四個邊角點(diǎn),作為透視變換控制點(diǎn)和確定相應(yīng)的正視圖控制點(diǎn)。希望校正后的圖像還能保持結(jié)構(gòu)光的正弦特性,周期要與系統(tǒng)拍攝的正視圖的結(jié)構(gòu)光周期一致,也將以此來判斷校正的效果。
由透視變換理論分析可知,角點(diǎn)坐標(biāo)是影響透視變換的一個主要因素,對于一個結(jié)構(gòu)光圖像而言,需要對投影圖像的邊緣曲線進(jìn)行解析,從而獲得四條邊緣曲線的交點(diǎn),即為所求的角點(diǎn)。
文章采用一種高精度亞像素邊緣檢測算法,目前研究的亞像素級邊緣曲線檢測算法,可以歸納為3種類型:矩方法[10]、插值法[11]和擬合法[12]。矩方法對圖像噪聲敏感,如果考慮模糊后的邊緣模型,就會增加模型參數(shù),使得解析解的確定變得十分困難。插值法的特點(diǎn)同基于矩的方法類似,計算過程簡單,但是容易受噪聲的影響。
插值法和擬合法求邊緣,易受噪聲影響。若考慮在求邊緣前進(jìn)行圖像的濾波去噪處理,容易造成部分邊緣信息的丟失[13~14]。針對這種情況,文章采用一種新的擬合算法用于邊緣曲線的檢測和提取。首先在邊緣附近選取一系列的點(diǎn),獲取這些點(diǎn)的灰度值,進(jìn)而求得灰度梯度值,然后利用高斯曲線對這些點(diǎn)的梯度值進(jìn)行擬合,最后通過擬合曲線求得高斯曲線的對稱軸位置即為亞像素位置。該方法去掉離群點(diǎn)的干擾,故對噪聲不敏感。
首先在圖像邊緣選取某一領(lǐng)域U,設(shè)H是在該領(lǐng)域內(nèi)的矩陣,表示在領(lǐng)域內(nèi)(i,j)點(diǎn)的灰度值,求得灰度矩陣H。
若灰度分布函數(shù)為y=f(x),則梯度函數(shù)為t=f(x)′。再根據(jù)梯度值進(jìn)行高斯擬合。由梯度值得到的是離散的點(diǎn),必須將這些離散的點(diǎn)擬合成一條連續(xù)的曲線,高斯分布的中心為該梯度方向上的灰度變換最大的地方,也就是邊緣,以此來確定亞像素邊緣坐標(biāo)[15]。
高斯曲線的表達(dá)式為
式中u為高斯分布均值,σ為標(biāo)準(zhǔn)差,對式(4)兩邊取對數(shù)得
變化后得到的式(5)為典型的二次曲線,計算得到簡化。
用于擬合邊緣的曲線方程為y=ax2+bx+c,由最小二乘法原理求取參數(shù)a,b,c,誤差平方和用字母S表示:
將S分別對a,b,c求偏微分,并分別令其偏微分為零,得:
其中:
進(jìn)而求得u和σ:
u值即為邊緣曲線亞像素值。
然后求得擬合的四條邊緣曲線的交點(diǎn)作為結(jié)構(gòu)光畸變圖像的角點(diǎn)進(jìn)行透視校正。
實(shí)驗(yàn)系統(tǒng)結(jié)構(gòu)如圖2所示,將正弦性結(jié)構(gòu)光經(jīng)投影儀投射到投射面,投影儀與投射面存在一定角度,相機(jī)拍攝得到的結(jié)構(gòu)光圖像如圖3(a)所示。
圖2 試驗(yàn)系統(tǒng)
對圖3(a)發(fā)生畸變的結(jié)構(gòu)光圖像用文中所述方法進(jìn)行校正,如圖3(b)所示。
圖3 (a)畸變結(jié)構(gòu)光圖像
圖3 (b)校正后的結(jié)構(gòu)光正視圖
再調(diào)整投影儀的位置,使投影儀、相機(jī)和投射面平行,拍攝得到正視圖,如圖4所示。
將圖4的結(jié)構(gòu)光正視圖圖像取行像素灰度,如圖5(a)所示;取圖3(b)經(jīng)過透射變換校正后的結(jié)構(gòu)光圖像的行像素灰度,如圖5(b)所示。
圖4 拍攝得到的正視圖
圖5 (a)拍攝的正視圖的行像素灰度
圖5 (b)校正后的正視圖的行像素灰度
通過對比圖5(a)和圖5(b)可知,將畸變圖校正后得到的正視圖仍具有正弦性,且頻率與正常情況下拍攝得到的正視圖相同。
為實(shí)現(xiàn)圖像的透視校正,通常要對圖像的角點(diǎn)進(jìn)行精準(zhǔn)定位,也就是對圖像邊緣的精確測量。文章提出一種新的邊緣檢測算法——梯度方向亞像素邊緣擬合,先在邊緣附近取點(diǎn),求這些點(diǎn)的梯度,再用高斯模型對其梯度進(jìn)行擬合得到亞像素位置,求取直線邊緣,得到角點(diǎn)。
通過對結(jié)構(gòu)光圖像的畸變校正,可以看出該算法速度快、效率高、實(shí)用性強(qiáng),維持了圖像原有的特性,有較好的應(yīng)用前景。