(安徽大學(xué) 計算智能與信號處理教育部重點實驗室,合肥 230039)
光學(xué)器件由于在實際的生產(chǎn)過程中的失誤導(dǎo)致成像原理無法滿足小孔成像模型,因此采集得到的圖像往往存在畸變現(xiàn)象[1]。鏡頭畸變對相機的標定精度存在直接的影響,從而影響著后續(xù)的測量與三維重建的精度。
現(xiàn)如今,為了得到更好的校正效果,國內(nèi)外的學(xué)者們在該方面做了很多研究。Tsai兩步法中首先通過線性標定求解出初始參數(shù),在通過非線性優(yōu)化求得最終的標定參數(shù)與畸變系數(shù)[2]。張正友標定法[3]首先通過建立畸變的數(shù)學(xué)模型,在利用多幅不同位姿的標定板圖像完成對畸變參數(shù)的標定,但該算法需要通過考慮畸變的種類來建立數(shù)學(xué)模型。葉峰等對Tsai兩步法進行改進,首先選取畸變較小的圖像中心位置進行參數(shù)的求解,再將焦距和平移分量作為變量,采用迭代的方法逼近精確值。該算法計算較為繁瑣,求解過程較為復(fù)雜[4]。楊麟等人基于直線的投影還是直線的特性提出利用直線投影特征來對圖像進行校正,但該算法需要保證實際場景中必須存在直線[5]。文獻[6]提出將圖像中的畸變曲線提取出來,通過優(yōu)化畸變參數(shù)來將曲線轉(zhuǎn)化為直線,但該算法模型建立較為困難。以上的這些算法都需要建立數(shù)學(xué)模型,但由于畸變種類較多,無法建立準確的數(shù)學(xué)模型,因此本文提出改進的遺傳模擬退火的BP神經(jīng)網(wǎng)絡(luò)算法來進行畸變校正。該算法無需考慮畸變的數(shù)學(xué)模型,通過理想點與畸變點作為網(wǎng)絡(luò)的輸入與輸出,通過訓(xùn)練得到畸變模型,同時本文采用改進的遺傳模擬退火算法對BP神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值進行優(yōu)化,與傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)相比,加快了網(wǎng)絡(luò)的訓(xùn)練速度。
由于實際生產(chǎn)的光學(xué)器件成像原理并不滿足小孔成像,導(dǎo)致實際投影點與理想像點并不在同一點上,即鏡頭存在畸變[7]。為了提高圖像校正的精度,不僅僅只考慮徑向畸變,同時也要考慮切向畸變[8]。因此理想像點(u,v)與實際投影點(Xd,Yd)滿足關(guān)系如下:
(1)
其中:
(2)
傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)采用梯度下降法進行反向傳遞來對權(quán)值和閾值進行修正,但該算法收斂速度較慢,同時精度不高,而LM算法既保留了梯度下降法的優(yōu)點[9],同時收斂精度較高,因而采用LM算法對BP神經(jīng)網(wǎng)絡(luò)進行改進。
BP神經(jīng)網(wǎng)絡(luò)的目標誤差函數(shù)為:
(3)
其中:n代表輸出層的節(jié)點總數(shù),yi表示第i個輸出節(jié)點的期望輸出,ci代表第i個輸出節(jié)點的實際輸出,w是一個包含了BP神經(jīng)網(wǎng)絡(luò)中所有的權(quán)值與閾值的向量。
在神經(jīng)網(wǎng)絡(luò)反向傳播中,LM算法對網(wǎng)絡(luò)中權(quán)值和閾值的修正量記為Δx,可表示為:
Δx=-[JT(w)J(w)+μI]-1JT(w)e(w)
(4)
其中:J(w)為雅克比矩陣。
利用BP神經(jīng)網(wǎng)絡(luò)進行畸變校正,無需考慮畸變數(shù)學(xué)模型,過程簡單,但BP神經(jīng)網(wǎng)絡(luò)在應(yīng)用過程中存在收斂速率較慢,易收斂到局部最優(yōu)解的弊端,難以滿足精度上的要求[10]。因而本文采用改進的遺傳模擬退火算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的權(quán)值與閾值,提高BP神經(jīng)網(wǎng)絡(luò)的性能。
改進的GA-SA算法優(yōu)化操作關(guān)鍵性步驟如下。
2.2.1 初始化操作
根據(jù)所要優(yōu)化的參數(shù)構(gòu)成一個向量,然后根據(jù)該個體向量隨機生成初始種群,因GA-SA算法是對網(wǎng)絡(luò)的閾值和權(quán)值進行優(yōu)化,因而按照網(wǎng)絡(luò)的誤差構(gòu)造適應(yīng)度函數(shù)。
(5)
2.2.2 選擇操作
傳統(tǒng)的遺傳算法在選擇操作中常采用輪盤選法,但該方法選擇隨意性太大,在滿足既考慮下代種群多樣性,也考慮盡可能多的選擇好的個體的同時,本文采用分段選擇策略與隨機抽樣相結(jié)合的選擇操作,設(shè)計選擇方法如下:
①計算種群的適應(yīng)度值,同時對其按由小到大進行排序構(gòu)成新的種群,由適應(yīng)度函數(shù)式(5)所示,適應(yīng)度值越小,個體基因越好,因而新種群中的個體是按從好到差進行排序的。
②將新種群平均分成好中差3個子種群,在分別從3個子種群中按隨機抽樣的方法選擇一定數(shù)量的個體,構(gòu)成選擇操作后的種群,在本文算法中,好中差3個子種群抽取數(shù)量的比例按照5:3:2進行選擇操作,其目的是為了在保證下代種群多樣性的同時盡可能保留好的個體。
2.2.3 自適應(yīng)交叉和變異操作
自適應(yīng)交叉操作是以一定的概率Pc來對個體進行重組,生成新的個體,通過調(diào)整的值來保證在后代種群進化過程中盡可能保留好的個體基因。
(6)
其中:Pc1,Pc2分別表示初始交叉概率中較大值與較小值,fmin,fave,f分別表示當前種群中的最小適應(yīng)值,平均適應(yīng)值及交叉?zhèn)€體中較小的適應(yīng)度值。
種群中兩個個體的交叉方式如下[11]:
(7)
其中:x1,x2為交叉操作前選中的個體,x'1,x'2為交叉操作后產(chǎn)生的新個體,r為[0,1]上的隨機數(shù)。
自適應(yīng)變異操作是通過一定概率Pm來對選中的個體進行變異操作,保存種群的多樣性,同時通過自適應(yīng)概率Pm來防止優(yōu)質(zhì)個體發(fā)生基因突變。
(8)
其中:Pm1,Pm2分別表示初始變異概率中較大值與較小值,fmin,fave,f分別表示當前種群中的最小適應(yīng)值,平均適應(yīng)值及變異個體的適應(yīng)度值。
在變異操作中,對個體采用隨機抽樣的方法確定個體X中需要變異的基因:xi,然后采用非均勻變異算子[12]對該基因進行變異。
(9)
其中:x'i為基因xi變異后得到的基因,G,Gmax分別為當前進化代數(shù)和算法中總的迭代次數(shù);r1為(0,1)上的隨機數(shù),ai,bi為該變異基因取值范圍的最小和最大值。
2.2.4 模擬退火局部優(yōu)化操作
為了避免遺傳算法易于收斂到局部最優(yōu)的情況,在種群趨于穩(wěn)定時,進行模擬退火[13]再優(yōu)化操作。判斷種群是否趨于穩(wěn)定的條件如下: