王穎 李鋒
(江蘇科技大學電子信息學院 鎮江 212003)
在光柵投影三維結構光成像系統中,由于投影儀投影角度、相機拍攝角度等因素的影響,使得相機獲取的結構光圖像發生不同程度的透視畸變[1]。但在結構光后續處理中,如結構光相位誤差補償等,通常需要結構光圖像的無畸變正視圖圖像,因此在進行后續處理之前需要對畸變結構光圖像進行校正[2]。
常用的圖像校正方法主要有角度檢測法[3]和透視變換法[4]。角度檢測校正方法依據檢測的圖像中的直線角度,進行旋轉校正,忽視圖像透視畸變,存在一定局限性;透視變換校正方法從投影儀和相機的成像原理出發,對圖像透視畸變進行校正,效果較好,但透視變換校正方法首先需要精確獲取控制點坐標,常用的基于Hough變換檢測方法[5],精度不高且穩定性差。
文章提出一種改進的透視變換方法,用于畸變結構光圖像的自校正。采用高斯梯度方向亞像素擬合曲線的方法更加精確地檢測到投影結構光圖像邊緣,使透視變換矩陣更加準確。
透視投影也稱作投影映射,是將圖像投影到一個新的視平面。利用透視中心、像點、目標點三點共線的條件,按透視旋轉定律使透視面繞透視軸旋轉某一角度,破壞原有投影光線束,仍保持透視面上投影幾何圖形不變的變換[6]。
由于觀察視角的不同,可以看到一個物體的一個或多個側面,按照透視中空間坐標系劃分,可以分為單點透視投影、雙點透視投影和三點透視投影[7]。文中討論的是單點透視投影,即投影儀投射圖像到投射面,投射面的圖像發生透視畸變,利用透視變換的相關算法對其進行矯正。
以點S為視點,由于視線與矩形ABCD所在的平面存在一定的夾角,使得投影面上的圖像發生透視畸變,形成新的四邊形,如圖1所示。

圖1 透視變換
以圖中的四個角點為例,經過透視變換后,A點對應 A′點,B點對應 B′點,C點對應C′點,D點對應D′點,原四邊形的形狀發生改變。透視投影是矩形ABCD平面上的每一個點在視角的作用下投影到 A′B′C′D′平面的過程。若矩形 ABCD 為無畸變正視圖,則透視變換是畸變圖形 A′B′C′D′上的每一個像素點對應到正視圖上對應的像素點的過程[8]。而實現透視畸變的矯正,就是要找到A′B′C′D′平面上的點與正視圖上的點的一一對應關系。
通用的變換公式為

式中,u,v是原始圖像的某點坐標,經透視變換后得到的對應圖像坐標為 x,y,其中 x=x′/w′,透視變換矩陣,可拆分成四部分,其中,表示線性變換用于平移產生透視變換。重新整理公式可以得到:

其中,(x,y)是正視圖的像素坐標,(u,v)是畸變圖像的像素坐標,a11,a12,a13,a21,a22,a23,a31,a32,a33是透視變換的參數。
由式(2)、(3)可以推出,只要得到四對畸變圖像與正視圖像相對應的坐標對就可以解出透視變換參數,從而求得透視變換矩陣。四對坐標點的選取對實現高精度透視畸變校正有很大的影響。一般選取畸變圖像的四個角點的坐標,角點較于其他點更容易獲取且分布均勻。然后需要確定角點對應在正視圖中的位置坐標,對應不同的正視圖角點的坐標,其校正結果也不同。通常的算法是將圖像實際的尺寸轉換為相應的坐標值,但這樣會導致校正之后的圖像邊緣不連續,出現斷層現象,需使用灰度插值法來保證圖像的連續性和平滑性[9]。
在結構光圖像的實際應用中,按照同樣的準則選取圖像中結構光投影區域四個邊角點,作為透視變換控制點和確定相應的正視圖控制點。希望校正后的圖像還能保持結構光的正弦特性,周期要與系統拍攝的正視圖的結構光周期一致,也將以此來判斷校正的效果。
由透視變換理論分析可知,角點坐標是影響透視變換的一個主要因素,對于一個結構光圖像而言,需要對投影圖像的邊緣曲線進行解析,從而獲得四條邊緣曲線的交點,即為所求的角點。
文章采用一種高精度亞像素邊緣檢測算法,目前研究的亞像素級邊緣曲線檢測算法,可以歸納為3種類型:矩方法[10]、插值法[11]和擬合法[12]。矩方法對圖像噪聲敏感,如果考慮模糊后的邊緣模型,就會增加模型參數,使得解析解的確定變得十分困難。插值法的特點同基于矩的方法類似,計算過程簡單,但是容易受噪聲的影響。
插值法和擬合法求邊緣,易受噪聲影響。若考慮在求邊緣前進行圖像的濾波去噪處理,容易造成部分邊緣信息的丟失[13~14]。針對這種情況,文章采用一種新的擬合算法用于邊緣曲線的檢測和提取。首先在邊緣附近選取一系列的點,獲取這些點的灰度值,進而求得灰度梯度值,然后利用高斯曲線對這些點的梯度值進行擬合,最后通過擬合曲線求得高斯曲線的對稱軸位置即為亞像素位置。該方法去掉離群點的干擾,故對噪聲不敏感。
首先在圖像邊緣選取某一領域U,設H是在該領域內的矩陣,表示在領域內(i,j)點的灰度值,求得灰度矩陣H。

若灰度分布函數為y=f(x),則梯度函數為t=f(x)′。再根據梯度值進行高斯擬合。由梯度值得到的是離散的點,必須將這些離散的點擬合成一條連續的曲線,高斯分布的中心為該梯度方向上的灰度變換最大的地方,也就是邊緣,以此來確定亞像素邊緣坐標[15]。
高斯曲線的表達式為

式中u為高斯分布均值,σ為標準差,對式(4)兩邊取對數得

變化后得到的式(5)為典型的二次曲線,計算得到簡化。
用于擬合邊緣的曲線方程為y=ax2+bx+c,由最小二乘法原理求取參數a,b,c,誤差平方和用字母S表示:

將S分別對a,b,c求偏微分,并分別令其偏微分為零,得:

其中:

進而求得u和σ:

u值即為邊緣曲線亞像素值。
然后求得擬合的四條邊緣曲線的交點作為結構光畸變圖像的角點進行透視校正。
實驗系統結構如圖2所示,將正弦性結構光經投影儀投射到投射面,投影儀與投射面存在一定角度,相機拍攝得到的結構光圖像如圖3(a)所示。

圖2 試驗系統
對圖3(a)發生畸變的結構光圖像用文中所述方法進行校正,如圖3(b)所示。

圖3 (a)畸變結構光圖像

圖3 (b)校正后的結構光正視圖
再調整投影儀的位置,使投影儀、相機和投射面平行,拍攝得到正視圖,如圖4所示。
將圖4的結構光正視圖圖像取行像素灰度,如圖5(a)所示;取圖3(b)經過透射變換校正后的結構光圖像的行像素灰度,如圖5(b)所示。

圖4 拍攝得到的正視圖

圖5 (a)拍攝的正視圖的行像素灰度

圖5 (b)校正后的正視圖的行像素灰度
通過對比圖5(a)和圖5(b)可知,將畸變圖校正后得到的正視圖仍具有正弦性,且頻率與正常情況下拍攝得到的正視圖相同。
為實現圖像的透視校正,通常要對圖像的角點進行精準定位,也就是對圖像邊緣的精確測量。文章提出一種新的邊緣檢測算法——梯度方向亞像素邊緣擬合,先在邊緣附近取點,求這些點的梯度,再用高斯模型對其梯度進行擬合得到亞像素位置,求取直線邊緣,得到角點。
通過對結構光圖像的畸變校正,可以看出該算法速度快、效率高、實用性強,維持了圖像原有的特性,有較好的應用前景。