田少兵 范加利 王 正 段金升
(1.海軍航空大學(xué)(青島校區(qū))艦面航空保障與場站管理系 青島 266041)(2.92941部隊 葫蘆島 125000)
機(jī)器視覺作為實現(xiàn)智能制造的重要技術(shù),近些年來獲得了快速的發(fā)展及廣泛應(yīng)用,單目視覺測量技術(shù)是機(jī)器視覺的一個重要分支,是指將單目相機(jī)中獲取到目標(biāo)圖像轉(zhuǎn)化為實際世界坐標(biāo)系中的信息,常用于距離測量、目標(biāo)定位等方面。相機(jī)標(biāo)定是進(jìn)行單目視覺測量和定位的先前步驟,是指利用優(yōu)化方法獲取從圖像像素坐標(biāo)系到三維世界坐標(biāo)系的映射關(guān)系,相機(jī)標(biāo)定精度往往影響視覺測量的準(zhǔn)確度,因此研究如何準(zhǔn)確地標(biāo)定相機(jī)具有重要的意義。
文獻(xiàn)[1]提出了一種基于全參數(shù)自適應(yīng)調(diào)節(jié)和變異機(jī)制的粒子群單目相機(jī)內(nèi)參優(yōu)化算法,分別給出了基于粒距的自適應(yīng)學(xué)習(xí)因子調(diào)節(jié)策略和設(shè)計了基于粒子群平均粒距的自適應(yīng)變異率,實驗結(jié)果表明,該方法具有較好的標(biāo)定精度和收斂速度。文獻(xiàn)[2]提出了一種利用遺傳算法對相機(jī)內(nèi)外參數(shù)進(jìn)行優(yōu)化求解的相機(jī)標(biāo)定算法,將張正友標(biāo)定法得到的參數(shù)作為初始值,通過遺傳算法對初始化參數(shù)迭代優(yōu)化求解,實驗結(jié)果表明,改進(jìn)后的標(biāo)定算法提高了相機(jī)的標(biāo)定精度。
本文提出了一種基于改進(jìn)粒子群算法的相機(jī)標(biāo)定算法,首先采用張正友相機(jī)標(biāo)定法得到相機(jī)內(nèi)參的初始值,再結(jié)合基于動態(tài)慣性權(quán)重系數(shù)的粒子群算法對得到的初始值進(jìn)行迭代優(yōu)化,得到最終的相機(jī)內(nèi)參,實驗表明,本文算法優(yōu)化后的相機(jī)內(nèi)參準(zhǔn)確性更高,算法收斂速度更快。
相機(jī)模型成像始于三維世界,止于圖像像素點。相機(jī)成像模型是由像素坐標(biāo)系、圖像坐標(biāo)系、相機(jī)坐標(biāo)系、世界坐標(biāo)系等四個坐標(biāo)系之間相互轉(zhuǎn)換建立的,具體是指圖像像素坐標(biāo)點與三維世界空間點的一種映射關(guān)系[3~8]。
圖1 相機(jī)成像模型
其中,(u0,v0)是像素坐標(biāo)系中的原點,γ為傾斜因子,一般可取值為0。dx、dy分別表示像素在圖像坐標(biāo)系x軸和 y軸方向上的物理尺寸,α=f/dx、β=f/dy分別表示像素坐標(biāo)系中的u軸和v軸上的尺度因子,R和t分別表示相機(jī)外參的旋轉(zhuǎn)矩陣和平移矩陣。
上述的相機(jī)成像模型是在沒有受到外界干擾情況下的理想狀態(tài)的成像模型,實際當(dāng)中,相機(jī)制造、安裝等過程中會造成各種各樣的誤差,導(dǎo)致相機(jī)通常會存在多種非線性畸變,為了使相機(jī)能夠獲得更加準(zhǔn)確的標(biāo)定結(jié)果,在相機(jī)標(biāo)定時應(yīng)該考慮加入相機(jī)的非線性畸變因素,以修正理想的相機(jī)成像模型。相機(jī)鏡頭畸變主要分為徑向畸變和切向畸變,則考慮加入徑向畸變和切向畸變的影響后的相機(jī)成像表達(dá)式為
其中,(x,y)表示圖像畸變點的位置,(xcorrected,ycorrected)表示矯正后的新位置,式中r=x2+y2。k1、k2、k3為徑向畸變系數(shù),p1、p2為切向畸變系數(shù)。
由于H中含有八個未知數(shù),因此需要八個方程聯(lián)合對H矩陣進(jìn)行求解[9]。棋盤標(biāo)定板上面每個角點能提供兩個等式方程,則需要四個角點就可以計算圖像像素坐標(biāo)系到世界坐標(biāo)系的單應(yīng)映射關(guān)系H。
由于式(3)中的單應(yīng)性矩陣H是一個齊次矩陣,因此與真實的H之間相差一個比例因子λ,則有
其中r1、r2為單位正交向量,則有以下約束:
式6可進(jìn)一步轉(zhuǎn)換為
可利用最小二乘算法求解矩陣b,進(jìn)而求解相機(jī)內(nèi)參矩陣A的初始值。
粒子群算法(Particle Swarm Optimization,PSO)模擬鳥群隨機(jī)搜索食物的社會行為,其本質(zhì)是一種全局搜索算法,對非線性、多目標(biāo)等優(yōu)化問題具有較強的全局搜索能力。PSO初始化為一群隨機(jī)粒子(隨機(jī)解),然后通過迭代找到最優(yōu)解,在每次迭代期間,粒子通過跟蹤兩個“極值”來更新自身。一種稱為粒子個體極值,是自身找到的最優(yōu)解,另一種稱為粒子全局極值,是全局粒子群的最優(yōu)解[10~12]。
然而在上述過程中,如果某個粒子發(fā)現(xiàn)當(dāng)前搜索區(qū)域的最優(yōu)位置,則其他粒子會向這個位置快速靠攏,如果這個位置為局部最優(yōu)解的位置,則迭代算法容易陷入早熟。在粒子群算法中,慣性權(quán)重是最重要的參數(shù),增大其值可以提高算法的全局搜索能力,減小其值可以提高算法的局部搜索能力,因此設(shè)置合理的慣性權(quán)重,是避免陷入局部最優(yōu)并高效的搜索的關(guān)鍵。
本文在原PSO算法的基礎(chǔ)上,根據(jù)算法運行時粒子目標(biāo)值的分散程度來調(diào)整慣性權(quán)重,設(shè)置的動態(tài)慣性權(quán)重系數(shù)如式(10)所示
其中,f表示當(dāng)前粒子實時的目標(biāo)函數(shù)值,favg和fmin分別表示當(dāng)前所有粒子目標(biāo)函數(shù)值的平均值和最小值,最小慣性權(quán)重wmin設(shè)置為0.4,最大慣性權(quán)重wmax設(shè)置為1.0。
設(shè)置適應(yīng)度函數(shù)如下:
基于動態(tài)慣性權(quán)重系數(shù)的粒子群優(yōu)化算法優(yōu)化相機(jī)內(nèi)參的總體步驟如下。
2)計算每個粒子的適應(yīng)度值,并將每個粒子的當(dāng)前位置作為個體最優(yōu)位置,將其對應(yīng)的適應(yīng)度值作為當(dāng)前粒子的個體最優(yōu)值;對所有粒子的適應(yīng)度值取最小值,作為全局最優(yōu)值,并將其對應(yīng)的粒子位置作為全局最優(yōu)位置。
3)更新粒子的位置和速度:
4)計算各粒子更新后的適應(yīng)度值,并計算所有粒子的平均適應(yīng)度值 favg,按照式(10)所示方法更新慣性權(quán)重w。
5)將每個粒子當(dāng)前的適應(yīng)度值與其個體最優(yōu)值進(jìn)行比較,若小于個體最優(yōu)值,則將當(dāng)前適應(yīng)度值和對應(yīng)的粒子位置作為該粒子更新后的個體最優(yōu)值;計算所有粒子個體最優(yōu)值的最小值,并與全局最優(yōu)值進(jìn)行比較,若小于全局最優(yōu)值,則更新全局最優(yōu)值。
6)判斷算法是否達(dá)到迭代完成條件,若未完成,返回執(zhí)行步驟3),若完成,執(zhí)行步驟7)。
7)算法執(zhí)行結(jié)束,輸出結(jié)果。
將棋盤標(biāo)定板放置在平面上進(jìn)行圖像采集,對采集到的棋盤標(biāo)定圖像依次進(jìn)行角點檢測、相機(jī)內(nèi)參初始值計算、誤差分析等步驟。誤差分析是指利用計算出來的相機(jī)內(nèi)參將實際世界平面坐標(biāo)系中的坐標(biāo)映射為棋盤上的角點像素坐標(biāo),然后與角點檢測算法檢測出的真實角點像素坐標(biāo)求誤差。圖2展示了棋盤方格角點檢測的結(jié)果。
圖2 角點檢測結(jié)果
相機(jī)內(nèi)參初始值確定之后,采用本文改進(jìn)的粒子群算法對內(nèi)參值進(jìn)行優(yōu)化,最終確定出準(zhǔn)確的內(nèi)參值。
表1 粒子取值范圍
算法迭代500次之后,得到優(yōu)化后的內(nèi)參結(jié)果,分別與張正友相機(jī)標(biāo)定法標(biāo)定的投影誤差、原粒子群算法優(yōu)化后的投影誤差進(jìn)行比較。圖3為張正友標(biāo)定算法的投影誤差,圖4為原粒子群算法優(yōu)化后的投影誤差,圖5為本文改進(jìn)粒子群算法優(yōu)化后的投影誤差。
圖3 張正友相機(jī)標(biāo)定法投影誤差
圖4 原粒子群算法優(yōu)化后投影誤差
圖5 本文改進(jìn)粒子群算法優(yōu)化后投影誤差
結(jié)合圖3、4、5可知,相比于張正友相機(jī)標(biāo)定法的投影誤差和原粒子群優(yōu)化后的相機(jī)內(nèi)參投影誤差,本文算法的投影誤差得到了很大的改善,表明本文算法的標(biāo)定精度更高。
圖6和圖7分別反映了原粒子群算法迭代優(yōu)化曲線和本文改進(jìn)粒子群優(yōu)化曲線,即適應(yīng)度值隨著迭代次數(shù)變化的趨勢。
圖6 原粒子群算法迭代優(yōu)化
圖7 本文改進(jìn)粒子群算法迭代優(yōu)化
結(jié)合圖6、7可知,本文改進(jìn)后的粒子群算法相對于原算法優(yōu)化后的適應(yīng)度值更低,比原算法的結(jié)果更優(yōu),同時,算法的收斂速度也更快。
針對單目相機(jī)內(nèi)參標(biāo)定問題,本文在張正友相機(jī)標(biāo)定算法計算出相機(jī)內(nèi)參值的基礎(chǔ)上,加入基于動態(tài)慣性權(quán)重系數(shù)的粒子群優(yōu)化算法進(jìn)行進(jìn)一步優(yōu)化。實驗結(jié)果表明,本文提出的算法標(biāo)定準(zhǔn)確度更高,算法進(jìn)行優(yōu)化時收斂速度更快,有效地克服了陷入局部最優(yōu)解的問題。