楊 麒,李天偉,黃 謙,李 偉
(海軍大連艦艇學院航海系,遼寧大連 116018)
由于攝像機光學成像并不是理想的小孔成像,使得空間點在成像平面上實際成像點與理想成像點并不是同一點,兩者之間存在復雜的非線性關(guān)系,即鏡頭畸變[1]。鏡頭畸變的存在使得空間點在圖像投影點位置與理想投影位置產(chǎn)生偏差,直接影響了攝像機標定精度,從而影響了對三維空間測量和重建的精度。所以,在攝像機標定的過程中,鏡頭畸變校正是不可忽視的一環(huán)。
目前畸變校正大致分為三種。一是利用精密幾何標定物的傳統(tǒng)標定方法,二是基于透視不變性的校正方法,三是基于主動視覺的校正方法。在傳統(tǒng)的畸變參數(shù)標定中,一般采用精密標定物,利用空間點與圖像點對應關(guān)系,先標定出部分參數(shù),再考慮畸變因素,通過優(yōu)化計算得到內(nèi)外參數(shù)和畸變參數(shù)。例如經(jīng)典的Tsai[2]方法,先線性標定出部分攝像機外參數(shù),并得到非線性參數(shù)初始值,再考慮徑向畸變影響,通過優(yōu)化得到內(nèi)外參數(shù)和畸變參數(shù)。Martins[3]的雙平面標定法中,將非線性和線性參數(shù)進行轉(zhuǎn)化,通過求解新構(gòu)設(shè)的參數(shù)完成標定。經(jīng)典的張正友標定法[4]利用對平面標定板獲取的不同位置上的圖片來標定出畸變參數(shù),降低了對精密標定物的依賴。葉峰[5]等改進了Tsai的兩步法,先利用圖像中心附近畸變較小的性質(zhì)計算出初始參數(shù),再將焦距和平移向量設(shè)為變量進行迭代計算逼近精確值。傳統(tǒng)的畸變校正方法需要有專門的標定物,不利于某些參數(shù)變化頻繁,標定物設(shè)置極為困難的應用場合,并且標定過程較為繁瑣,參數(shù)多,計算量大,不利于在線實時標定?;谕敢暡蛔冃涡U椒ㄊ抢每臻g幾何圖形在圖像上投影的一些性質(zhì)進行標定。周富強[6]等利用直線的透視不變性,將畸變參數(shù)單獨進行標定。賀俊吉[7]等利用透視投影中共線4點交比不變性標定出一階徑向畸變參數(shù)。曲學軍等[8]改進了文獻 [7]的方法,通過分析徑向畸變和離心畸變的幾何意義,構(gòu)建出新的畸變數(shù)學模型,分兩步分別求解出了一階離心畸變和一階徑向畸變。汪貴平等[9]通過獲取一組平行線圖像,分步校正非線性徑向畸變、透視畸變參量來校正透視畸變,可以實現(xiàn)對多種畸變的現(xiàn)場校正。由于該種方法不需要精密標定物,往往算法也比傳統(tǒng)方法簡便,已成為畸變校正研究的熱點問題。基于透視不變性的畸變校正方法大多數(shù)只能求取一階徑向畸變,有部分已在改進算法和標定步驟上實現(xiàn)對二階徑向畸變以及偏心畸變的標定;這類方法也需要幾何圖形有一定的幾何特征,如共線點,平行線等,在現(xiàn)場攝像機工作中,多數(shù)情況下無法滿足對諸如此類標定物的需求,不利于在線實時校正。基于主動視覺的標定方法[1011]通過攝像機或是標定物在平臺上做精密相對運動實現(xiàn)標定,該方法精度較高,但必須精密的運動平臺,實驗條件要求苛刻,成本高,不利于部分場合實時在線校正。
空間中的直線投影在理想情況下是直線,由于畸變存在使得直線投影成像是曲線,若能找出直線的理想投影的像與實際投影像的關(guān)系,就能確定鏡頭的畸變。本文基于直線投影特征,利用遺傳算法求解出畸變系數(shù)組的最優(yōu)解。該方法只需場景內(nèi)存在直線即可實現(xiàn)畸變校正,實驗條件要求簡單,程序簡便,利于現(xiàn)場攝像機在線標定。
常用的理想攝像機成像模型為經(jīng)典的針孔模型。若有點P為三維空間中的一點,該點在世界坐標定Rw下的坐標表示為(xw,yw,zw),在攝像機坐標系Rc下的坐標表示為(xc,yc,zc);點p為點P投影到攝像機成像平面上的一點,在圖像坐標系下的坐標為(u,v)。則有:
式 (1)為理想針孔模型的數(shù)學表達式,其中攝像機標定為焦距f,旋轉(zhuǎn)矩陣為R、平移向量為t,圖像坐標(u0,v0)為主點坐標。由于數(shù)字攝像機制造越來越精密,許多研究中將比例因子μ值近似為0,該近似對標定精度影響極小。但是,實際成像過程中,由于鏡頭畸變存在,使得空間點P與其投影點p并非理想的線性關(guān)系。若需要得到更為精確的投影關(guān)系,需加入鏡頭畸變的數(shù)學模型。
鏡頭畸變一般分為三類:徑向畸變、偏心畸變和薄棱鏡畸變。在像平面上,可設(shè)理想成像點坐標為(x,y),實際成像點坐標為(珋x,珋y),并討論三種畸變的數(shù)學模型以及對成像精度的影響大小。
徑向畸變是由于鏡頭的曲率非標準變化而導致的徑向位置誤差,在三種畸變形式中對成像精度影響最大。分為枕形畸變和桶形畸變,前者是帶有畸變的成像點沿徑向向內(nèi)偏移,后者是帶有畸變的成像點沿徑向向外偏移。設(shè)ki(i∈N+)為i階徑向畸變系數(shù),Δkx表示為投影點在像平面坐標系中x軸上的徑向畸變量,Δky表示為投影點在像平面坐標系中y軸上的徑向畸變量,則徑向畸變的數(shù)學表達式為:
偏心畸變是由于組成成像系統(tǒng)的各鏡頭光軸不重合造成的。偏心畸變包括徑向畸變因素和切向畸變因素,若忽略高次項,設(shè)偏心畸變系數(shù)p1、p2,ΔpxΔpy分別表示為投影點在像平面坐標系中x軸、y軸上的偏心畸變量,則數(shù)學模型為:
薄棱鏡畸變是由于光學鏡頭在制造過程中,光學鏡片和圖像傳感器在加工和組裝過程中產(chǎn)生排列偏差,造成相對位置平移或傾斜而產(chǎn)生的誤差。同樣忽略高次項,設(shè)薄棱鏡畸變系數(shù)為s1、s2,ΔsxΔsy分別表示為投影點在像平面坐標系中x軸、y軸上的薄棱鏡畸變量,則數(shù)學模型為:
將以上數(shù)學模型式 (2)、(3)、(4)連立,則有:
則式 (5)即表示理想成像點和實際成像點之間的關(guān)系。
加入畸變模型,能夠更為準確的描述空間點與其投影點的投影關(guān)系,使得圖像更為接近物體和場景實際,計算機視覺測量、三維恢復等更為精確。所以,進行鏡頭畸變校正是十分重要的環(huán)節(jié)。
一般的應用中,加入一階或是一、二階徑向畸變已足夠準確的描述成像過程。Tsai在其研究中指出,過多的考慮鏡頭畸變的影響,需要在成像過程的描述中加入更多的畸變參數(shù),會使得計算的解不穩(wěn)定,對提高攝像機標定精度也不能產(chǎn)生足夠的幫助[12]。隨著攝像機制造工藝水平的提升和計算機視覺技術(shù)應用的領(lǐng)域越來越廣泛,在一些情況下,僅考慮徑向畸變已無法滿足實際需求[13]?;谥本€投影特征的畸變校正方法能夠?qū)崿F(xiàn)多個畸變參數(shù)組合解的求取,且標定條件簡單,標定方法簡便。
空間中一條不平行成像平面的直線在理想情況下,其投影成像仍是一條直線。由于鏡頭畸變的存在,實際所成的像是一條曲線。若有空間直線L,在成像面π上投影成一條曲線l,取直線l上任意兩點a1(x1,y1)、a3(x3,y3),并取線段a1a3上一點a2(x2,y2),點坐標為像平面坐標系坐標。在像平面上,向量與向量為同一直線的方向向量。理想情況 (無畸變)下則有將式(5)代入可得:
函數(shù) f中含有未知數(shù) k1、k2、k3……ki(i∈ N+)、p1、p2、s1、s2,即f=0為(i+4)元二次方程。在具體的應用中,可根據(jù)鏡頭類型和精度要求,確定畸變系數(shù)的數(shù)量和類型,建立所需的二次方程。
遺傳算法是模擬自然界生物遺傳過程、進化選擇而形成的一種過程搜索最優(yōu)解的算法,適用于解決復雜的非線性和多維空間尋優(yōu)問題[14]。遺傳算法的優(yōu)勢在于自組織、自適應和智能性,魯棒性強,不受函數(shù)連續(xù)性和可導性約束,易于并行等。廣泛應用于自動控制、計算科學、模式識別、工程設(shè)計、智能故障診斷、管理科學和社會科學等領(lǐng)域。有研究表明當參數(shù)大于10個時,標準遺傳算法的尋優(yōu)能力開始變差,且隨著搜索空間維數(shù)的增加,算法性能會急劇退化[15],故而在確定染色體基因數(shù)量和類型時,需結(jié)合實際精度要求和參數(shù)影響大小確定。文中遺傳算法流程如圖1,根據(jù)所需求解的畸變系數(shù)組成染色體,即系數(shù)組合成的解;以正態(tài)分布生成初始種群;根據(jù)式 (6)建立數(shù)值評價標準,即適應度函數(shù);每一代染色體種群均進行變異和交叉運算,生成下一代種群;設(shè)置計算終止條件,對每一代染色體種群的適應度函數(shù)值進行計算后,判斷是否符合終止運算條件;遺傳計算最多循環(huán)500代。
圖1 遺傳計算流程圖
1)適應度函數(shù)。根據(jù)直線投影特征的關(guān)系式 (6),設(shè)目標函數(shù)為:
適應度函數(shù)是用來評價生物對生存環(huán)境的適應能力,是區(qū)分個體 (問題解)適應能力優(yōu)劣的評價標準,以保證適應能力強的個體能夠產(chǎn)生更多的子個體。遺傳算法以適應度函數(shù)作為選擇機制,只能朝著適應度增大的方向進化。如何建立適應度函數(shù)對遺傳算法收斂性和收斂速度的有較大影響,需根據(jù)經(jīng)驗或者具體問題中的算法合理設(shè)計適應度函數(shù)。因目標函數(shù)理想值為0,則可設(shè)適應度函數(shù)定義為:
其中:j表示第j條直線樣本,m表示直線的樣本總量;k表示某一直線上,第k組共線三點,適應度函數(shù)理想值為1,且目標函數(shù)越接近理想值0,適應度函數(shù)值則越接近理想值1。
2)染色體矢量及初始化種群。將各個待算參數(shù)組合成一個染色體 α =(k1,k2,p1,p2,s1,s2)=(α1,α2,α3,α4,α5,α6),由N條染色體組成初始種群,其中每個基因從均值為0,方差為0.1的正態(tài)分布中隨機產(chǎn)生。
3)編碼方式。本文采用浮點數(shù)編碼方法,該方法較二進制方法便于在較大空間進行遺傳搜素、適合于表示范圍較大的數(shù),對精度要求較高的計算,同時能夠改善運算的復雜性,提升運算效率。
4)選擇算子。選擇運算體現(xiàn)了“優(yōu)勝劣汰”的自然法則,即適應度函數(shù)值高的個體參與生成下一代個體的概率將會更大,通過選擇運算使得優(yōu)質(zhì)個體得以保存,劣質(zhì)個體則被淘汰。設(shè)選擇運算的公式:
將某一代個體的適應度函數(shù)值按大小排序,可得各個個體的選擇概率,則pt為第t個體的選擇概率,q為排序第1的個體的選擇概率。
5)交叉算子。交叉運算是由兩個父體按照特定的組合方式產(chǎn)生出兩個新的個體。交叉運算是遺傳計算中產(chǎn)生新一代個體的主要方法,保證和影響算法的全局搜索能力。在浮點數(shù)編碼中一般使用算數(shù)交叉。假設(shè)兩個父體為β1,β2,所產(chǎn)生的新個體為β'1,β'2,則算子表示為:
r∈(0,1),是一個隨機數(shù),交叉概率設(shè)為Pc。Pc值大小對新生個體生存能力產(chǎn)生影響,當Pc值較大時,產(chǎn)生新生個體的能力較強,但可能會破壞較優(yōu)的基因;當Pc值較小時,產(chǎn)生新個體的能力較弱,使得運算的解準確度不足。
6)變異算子。變異是偶然因素影響下,導致生物基因發(fā)生微小變化,使得生物能夠表現(xiàn)出新的性狀,變異是生成新物種的一個方法,雖然變異概率較小,但也是產(chǎn)生新物種不可或缺的一步。遺傳算法中的變異算子能夠?qū)獾亩鄻有赃M行補充,可對搜索空間中的局部細節(jié)進行搜索,避免信息丟失,改善局部搜索能力,防止過快收斂到局部最優(yōu)解。在計算中,變異操作將個體染色體中的某些基因以一定概率進行等位替換,從而產(chǎn)生新的個體。這里采用非均勻變異算子,若父體為 α =(α1,α2,α3,α4,α5,α6),設(shè)其中某個基因αi變異后的子代為α'i,設(shè)變異概率為Pm。
7)終止條件。滿足以下任意一條即終止遺傳算法的計算[16]:
(1)當D>Dmax,即當前代數(shù)大于最大運行代數(shù)。
(2)若目前運行代數(shù)并沒有超過最大運行代數(shù),當γ>εstop,停止計算。
其中:εstop為最優(yōu)個體適應函數(shù)值與平均適應度之差的算數(shù)平方根,γ為運行終止的最小值,N為第D代的個體總數(shù)。
如圖2,利用獲取到的單幅棋盤網(wǎng)格標定板圖像進行實驗驗證。棋盤網(wǎng)格為10×10格,則可形成橫、縱、斜四個方向的多條直線。根據(jù)畸變數(shù)學模型,隨著成像點與主點的距離增大,畸變值越大。此外,一條直線投影成的曲線上的兩條線段斜率之差受到曲線位置影響,曲線位置不同,各畸變系數(shù)對曲線的彎曲程度,即兩線段的斜率之差的影響不同,例如若空間直線的投影過主點或離主點很近時,則徑向畸變對投影曲線的彎曲程度影響較小,若選取的直線數(shù)量不足,或分布不均勻,會使得解的穩(wěn)定性或準確性不高。因此,為保證涵蓋的直線信息全面,選擇用于實驗的直線需在圖像中心周圍均勻分布,按照此原則取28條直線。考慮兩點距離過近可能使得直線斜率誤差較大,取直線上可見的最長線段端點及中點坐標作為式 (6)的所需坐標點。使用matlab軟件編寫程序。實驗中分染色體α1=(k1,k2,p1,p2,s1,s2) 和染色體 α2=(k1,k2,p1,p2)兩種情況。表1為染色體α1的實驗數(shù)據(jù),表2為染色體α2的實驗數(shù)據(jù)。每種情況進行20組實驗。
圖2 用于畸變校正的圖像
從實驗的數(shù)據(jù)分析,一階徑向系數(shù)k1比二階徑向畸變系數(shù)k2約大兩個數(shù)量級,這是因為一階徑向畸變對圖像的影響要遠大于二階徑向畸變,在實驗數(shù)據(jù)中明顯體現(xiàn)出這一點。在部分應用領(lǐng)域的畸變校正中,僅考慮一階徑向畸變就能夠滿足精度需要。遺傳算法求取的解是單個染色體的最優(yōu)解,各個基因之間的數(shù)值大小相互影響,畸變系數(shù)p1、p2、s1、s2本身也包含了一階徑向畸變成分,所以其數(shù)值也比二階徑向畸變系數(shù)k2要大。各畸變系數(shù)并不是固定不變,而是在一定范圍內(nèi)有浮動,即使改變?nèi)旧w的基因數(shù)目也是如此。這是因為遺傳算法求取的解是使得適應度函數(shù)值最大的組合解,每一條染色體中的基因值不代表單個畸變系數(shù)的最優(yōu)值。若要進行圖像畸變的校正,應將最優(yōu)解作為一組整體使用。從適應度函數(shù)值分析,可見每組解均能夠使得適應度函數(shù)值趨近于1,也就是將每條直線投影成的曲線上三點確定的兩條線段的斜率校正成趨近相等。對帶有畸變的圖像進行畸變系數(shù)組合最優(yōu)解的求取,然后利用該畸變系數(shù)組合最優(yōu)解對其進行校正。圖3(a)為校正前圖像,圖3(b)為校正后圖像,可見校正效果較好。
本文介紹了攝像機鏡頭的理想成像模型,分析了鏡頭畸變產(chǎn)生的原因、各類型畸變對圖像的影響程度和畸變的數(shù)學模型?;谥本€投影特征,利用存在于直線投影成的曲線上的兩條線段,在理想情況下斜率相等,而在帶有畸變的情況下不相等的特點,運用遺傳算法求解出畸變系數(shù)組的最優(yōu)解,并實現(xiàn)了畸變的校正。從實驗結(jié)果來看本方法雖不能求出單個畸變系數(shù)的最優(yōu)解,但使用畸變系數(shù)組的最優(yōu)解能夠較好的實現(xiàn)圖像畸變校正。基于直線投影特征的鏡頭畸變校正方法,只需在攝像機視場內(nèi)存在直線,并獲取直線的投影圖像即可實現(xiàn)標定。該方法對標定條件要求簡單,程序簡便,能夠?qū)崿F(xiàn)現(xiàn)場鏡頭校正。
表1 染色體為α1的畸變參數(shù)與適應度函數(shù)值
表2 染色體為α2的畸變參數(shù)與適應度函數(shù)值
圖3 校正前后圖像對比