王道累, 柴萍萍*, 孫 昊, 胡 松, 韓 洋
(1.上海電力大學(xué)能源與機械工程學(xué)院, 上海 200090; 2.中國電建集團江西省電力設(shè)計院有限公司, 南昌 330096)
日新月異的計算機技術(shù)和傳感器技術(shù)也推動了無人駕駛、機器人定位導(dǎo)航、三維重建等相關(guān)領(lǐng)域的發(fā)展[1-3]。其中,標(biāo)定是一個基礎(chǔ)而重要的環(huán)節(jié),提高標(biāo)定的精度是非常有必要的。目前,廣泛應(yīng)用并接受的標(biāo)定方法有兩種:傳統(tǒng)校準(zhǔn)法和自校準(zhǔn)方法。根據(jù)計算方法不同,傳統(tǒng)標(biāo)定法主要包括直接線性方法[4]、基于徑向排列約束(radial alignment constraint, RAC)的兩步標(biāo)定法[5]和張正友標(biāo)定法[6]等。直接線性變換法是將攝像機模型看作是線性的,這和實際情況不符,后經(jīng)過改進(jìn)引入非線性畸變因素。基于RAC 的兩步標(biāo)定法利用相機成像模型中的一部分內(nèi)在性質(zhì)和關(guān)系先求解出一些參數(shù), 然后利用這些已求出的參數(shù)增加相機非線性畸變等因素對模型進(jìn)行優(yōu)化,這使得求解過程中大多是線性方程,計算簡單,結(jié)果準(zhǔn)確。在2000年,一種里程碑式的方法由張正友提出,基于二維的棋盤格進(jìn)行標(biāo)定。該方法在兩步標(biāo)定法的基礎(chǔ)上改進(jìn)標(biāo)定物,用最大似然法求解各個參數(shù)。由于借助的外物成本低廉、易操作、標(biāo)定精度較高等優(yōu)點,這種方法被廣泛使用,但對精度的提高仍有局限性。
為了彌補這些方法的不足,中外學(xué)者在優(yōu)化求解算法和標(biāo)定物改進(jìn)兩個方向做了各種研究。傅思勇等[7]提出一種新的兩步標(biāo)定法,首先求解初始參數(shù),后綜合考慮前二階徑向畸變、前二階切向畸變和薄棱鏡畸變,建立多畸變模型后迭代逼近求解,在噪聲的情況下仍能保持較小的誤差。向鵬等[8]提出基于深度學(xué)習(xí)的標(biāo)定方法,利用改進(jìn)DNN網(wǎng)絡(luò)逼近能力,輸入原始圖像的坐標(biāo)即能實現(xiàn)標(biāo)定,在大范圍、多拍攝角度等復(fù)雜環(huán)境都適用,但深度學(xué)習(xí)網(wǎng)絡(luò)訓(xùn)練需要GPU加速,對電腦配置要求高,且訓(xùn)練需要時間,不能快速標(biāo)定。雷陽等[9]將粒子群算法和模擬退火算法結(jié)合得到混合算法,先用最小二乘法求得初始參數(shù),再用混合算法優(yōu)化,此法有提高標(biāo)定的精度。Jiang等[10]改進(jìn)標(biāo)定物,利用液晶板進(jìn)行操作,在液晶板上生成一系列不同角度的標(biāo)定圖像,無需人工操作,結(jié)果精度高,但相對于棋盤格而言,液晶板增加了成本。
沿用棋盤格標(biāo)定,改進(jìn)優(yōu)化算法,提出一種基于灰狼和粒子群優(yōu)化的混合算法,改善粒子群算法易早熟的缺點,將該方法首次應(yīng)用到攝像機標(biāo)定上,與幾種方法比較后明顯看出提高了標(biāo)定的精度,且標(biāo)定的結(jié)果穩(wěn)定可靠。
攝像機成像模型主要反映相機把真實3D世界拍攝成圖片的過程,其可簡單看作是小孔成像模型[11]。即其是一個線性模型,如圖1所示。成像涉及4個坐標(biāo)系,即世界、相機、圖像和像素坐標(biāo)系之間按一定規(guī)律進(jìn)行變換。
(XW,YW,ZW)為世界坐標(biāo)系;(XC,YC,ZW)為相機坐標(biāo)系;(x,y)為圖像坐標(biāo)系;(u,v)為像素坐標(biāo)圖1 單目攝像機模型Fig. 1 Monocular camera model
(1)世界坐標(biāo)系(XW,YW,ZW):或者可以稱作測量坐標(biāo)系,是一個正交的三維3D直角坐標(biāo)系,以現(xiàn)實中存在的某一物體為標(biāo)準(zhǔn)建立。
(2)相機坐標(biāo)系(XC,YC,ZC):同樣是一個3D直角正交坐標(biāo)系,原點在鏡頭光心,鏡頭光軸即是Z軸。
假設(shè)現(xiàn)實中三維空間中有一點A,其在世界坐標(biāo)系中坐標(biāo)為(XWA,YWA,ZWA),那通過式(1)可以得到點A在相機坐標(biāo)系中的坐標(biāo)(XCA,YCA,ZCA):
(1)
式(1)中:R和T分別為旋轉(zhuǎn)矩陣和平移向量。
(3)圖像坐標(biāo)系(x,y):建立在成像平面上的一個2D直角坐標(biāo)系,和上一個坐標(biāo)系之間的轉(zhuǎn)換被叫作透視變換,用幾何中的相似三角形知識就能求解,求解公式為
(2)
式(2)中:f為相機的焦距;XCA、YCA、ZCA分別為相機坐標(biāo)系下點A的X、Y、Z軸方向上的坐標(biāo)。
(4)像素坐標(biāo)系(u,v):和圖像坐標(biāo)系建立在同一平面上,但區(qū)別在兩者的原點位置不一樣。之間的變換關(guān)系,可以描述為
(3)
式(3)中:(u0,v0)為兩坐標(biāo)軸交點即原點O的坐標(biāo);dx、dy表示兩坐標(biāo)軸上單位像素的物理大小。
實際的應(yīng)用場景中,由于生產(chǎn)制造技術(shù)限制、安裝位置不理想等因素影響,硬件攝像機拍攝結(jié)果會存在非線性的畸變,這也是誤差的主要來源[12]。文獻(xiàn)[13]指出主要畸變分為偏心、徑向、薄棱鏡畸變3種。綜合作用下,在徑向和切向兩個方向上都會存在誤差,誤差計算公式為
(4)
式(4)中:k1、k2、p1、p2、k35個變量就是在兩個方向上與誤差相關(guān)的因數(shù)。
粒子群算法(particle swarm optimization,PSO)是1995年提出的一種仿生算法,來源于鳥群捕食[14]。每個粒子在尋優(yōu)過程中如同鳥群中的一只鳥,既可互相交換信息,又有記憶。從每個粒子位置中選出pbest(個體最優(yōu)位置),并將每次搜索出的pbest作為gbest(全局最優(yōu)位置)更新的基礎(chǔ)。假設(shè)粒子i在dim維空間內(nèi)搜索求解,它的飛行位置xi=(xi,1,xi,2,…,xi,dim),速度vi=(vi,1,vi,2,…,vi,dim)。 該算法的位置和速度計算公式為
(5)
式(5)中:k表示目前是第k次迭代;w為慣性因數(shù);c1、c2分別為個人和社會學(xué)習(xí)系數(shù);r1、r2為一對(0,1)范圍內(nèi)互不干擾的隨機數(shù)。
灰狼優(yōu)化(grey wolf optimization,GWO)算法是一種新的仿生算法,提出時間較晚,由Mirjalili在2014年給出,靈感來自狼群捕食活動。狼群中的社會支配關(guān)系猶如金字塔形,被劃分成4個等級。在金字塔頂端的是α狼,擁有絕對的領(lǐng)導(dǎo)權(quán),次之是β狼,在β狼下面的是δ狼,最低的是ω狼。其中,β狼服從α狼,δ狼服從于α狼和β狼,在金字塔底端的ω狼受其余3種狼的支配。在頭狼α的領(lǐng)導(dǎo)下,狼群分工合作,搜尋、圍捕和攻擊獵物[15]。類似于灰狼的社會形態(tài)組成,將求解得到的最優(yōu)解、次優(yōu)解、季優(yōu)解和一般解看作狼群中的4個等級。尋優(yōu)過程可看作是狼群追捕獵物過程。
包圍的具體公式為
(6)
式(6)中:Xp(k)、X(k)分別表示在第k次尋優(yōu)后獵物和灰狼的位置;a為控制系數(shù);A、B、D為系數(shù)因子;r1、r2為(0,1)范圍內(nèi)互不干擾的隨機數(shù)。
包圍獵物后,狼群在頭狼帶領(lǐng)下追捕獵物,獵物的位置隨著逃跑也會改變,此時,狼群的位置隨之改變,計算公式為
(7)
(8)
(9)
(10)
式中:Bα、Bβ、Bδ分別表示α狼、β狼、δ狼和其余狼之間的距離。
粒子群收斂快但魯棒性弱,而灰狼算法正好相反,將兩個算法的優(yōu)點融合到一起即為灰狼粒子群混合算法[16]?;依橇W尤夯旌纤惴ㄖ饕莾蓚€算法嵌套使用,主循環(huán)為粒子群算法,次循環(huán)為灰狼算法,在每次主循環(huán)完成一次,將得到的gbest引導(dǎo)次循環(huán)中的頭狼追捕獵物,公式為
Xα(k+1)=gbest(k)
(11)
為了防止主循環(huán)中的粒子群陷入局部收斂,對其速度公式進(jìn)行優(yōu)化,將次循環(huán)后得到的頭狼位置Xi,dim(α)也參與速度的計算,速度公式更新為
(12)
式(12)中:w采用的非線性變化策略,初始的階段w值大,搜索能力強,到接近最優(yōu)解附近,w值縮小,開啟細(xì)致小步長搜索,w的更新公式為
(13)
式(13)中:w1、w2分別為慣性因數(shù)最大和小值;k為當(dāng)前迭代系數(shù);itermax為最大迭代次數(shù)。
具體描述如下:
(1)在上下限范圍內(nèi)隨機生成種群位置X,初始化速度v,并給定最大迭代次數(shù)itermax,種群維度dim,種群數(shù)量n,學(xué)習(xí)率c1、c2、c3和慣性因數(shù)等參數(shù)。
(2)為了使適應(yīng)度函數(shù)最小(或最大),根據(jù)灰狼算法產(chǎn)生最優(yōu)解、次優(yōu)解和季優(yōu)解,迭代L次后,返回最優(yōu)解的位置并跳出該循環(huán)。
(3)使適應(yīng)度函數(shù)最小(或最大),分別根據(jù)式(13)、式(12)和式(5)重新計算速度和位置,每次循環(huán)后更新pbest和gbest的值,最后返回gbest的相關(guān)參數(shù)。
(4)如果在沒達(dá)到迭代停止條件的情況下,根據(jù)式(11)更新頭狼位置,然后從第2步開始計算,完成次循環(huán)后進(jìn)行第3步。直到達(dá)到終止條件,此時,輸出內(nèi)外參數(shù)和最小誤差值。
實驗的硬件平臺是一臺采用索尼ICX445傳感器的數(shù)字?jǐn)z像機,來自德國AVT公司。在全分辨率1 624×1 234下,該Manta工業(yè)數(shù)字?jǐn)z像機幀率可達(dá)30 fps。采用8行11列的激光打印的標(biāo)定板,單個格子的尺寸為20 mm×20 mm,以棋盤格角點作為標(biāo)定點,共計88個角點。軟件平臺是在PYTHON上進(jìn)行數(shù)據(jù)處理。一共拍攝16張照片,部分圖片如圖2所示。
圖2 攝像機標(biāo)定拍攝的部分圖片F(xiàn)ig.2 Pictures of camera calibration
具體步驟如下:
步驟1用PYTHON-OPENCV可以得到圖像中的實際的像素坐標(biāo)(x,y)。
步驟2根據(jù)張正友方法得到的參數(shù)為基礎(chǔ),確定迭代上下界。為了避免尋優(yōu)范圍太大造成收斂慢,將得到的內(nèi)參數(shù)(fx,fy,u0,v0)±80,畸變系數(shù)(k1,k2,p1,p2,k3)±10作為尋優(yōu)的上界和下界。設(shè)置粒子群粒子數(shù)量為80,w1為1.4,w2為0.3,學(xué)習(xí)率c1、c2、c3分別為1.9、1.3、0.3,次循環(huán)的灰狼算法中灰狼數(shù)量是25,運行20次,主循環(huán)是運行400次。建立目標(biāo)函數(shù)δ,即實際坐標(biāo)(x,y),與優(yōu)化后反投影得到的(x′,y′)之間誤差的平均值,公式為
(14)
式(14)中;N表示標(biāo)定的角點個數(shù);pj代表角點j的實際像素坐標(biāo);p′j代表角點j的反投影坐標(biāo);A表示攝像機內(nèi)參矩陣。
步驟3在上下界之間隨機生成初始值,初始值為9維。
步驟4先在次循環(huán)中用灰狼算法尋優(yōu),經(jīng)過20次迭代以獲得頭狼的最佳位置,緊接著更新粒子群粒子的速度和位置,計算pbest_δ。
步驟5更新pbest_δ,判斷當(dāng)前得到的pbest_δ是否小于上一次迭代得到的pbest_δ,若是,就更新pbest_δ。否則,保留上一次迭代結(jié)果。
步驟6更新gbest,使得gbest_δ=min(pbest_δ),并回到步驟3繼續(xù)執(zhí)行,直到迭代結(jié)束。
步驟7輸出全局最優(yōu)解。
圖3給出了基于灰狼粒子群混合算法在400次循環(huán)迭代過程中目標(biāo)函數(shù)的變化情況。從圖3可知,初始目標(biāo)函數(shù)值達(dá)到1.38左右。這是因為初始位置是在給定的上下界隨機生成的,所以此時誤差會較大。在開始到50次,曲線肉眼可見地下降很快。這是由于大的慣性因數(shù)帶來非常強的尋優(yōu)能力,收斂非??臁T?0~150次,下降變得非常平緩,目標(biāo)函數(shù)值仍在減小。這個階段是在前期已獲得較優(yōu)解附近,更細(xì)致小范圍地尋找最優(yōu)解,即局部尋優(yōu)。在約200次后圖像基本不動,說明此時已經(jīng)求解到最優(yōu)目標(biāo)值。進(jìn)一步提取詳細(xì)參數(shù)和結(jié)果進(jìn)行分析。
圖3 目標(biāo)函數(shù)曲線Fig.3 Curve graph of objective function value
表1所示為基于混合算法求解出的相機標(biāo)定內(nèi)部參數(shù)和畸變系數(shù)以及目標(biāo)函數(shù)值,分別給出了迭代50、100、150、200、300、400次后的結(jié)果。從表1可知,在初始階段,算法快速收斂,目標(biāo)函數(shù)值從剛開始的1.378像素值下降到了0.073像素值,下降了1.305像素值。在50次到150次時,下降了0.054像素值。在循環(huán)了150次但未到達(dá)200次時,反投影平均誤差略有減小。達(dá)到200次后,目標(biāo)函數(shù)值穩(wěn)定不變。
表1 基于混合粒子群算法標(biāo)定算法的結(jié)果
為了驗證混合算法的精準(zhǔn)性,分別計算了張正友方法、標(biāo)準(zhǔn)粒子群算法、標(biāo)準(zhǔn)灰狼算法和本文算法標(biāo)定后的各參數(shù)和重投影平均誤差。表2給出來了4種計算方法的標(biāo)定結(jié)果。其中,本文算法攝像機標(biāo)定的平均誤差是0.017 86像素值,優(yōu)于張正友方法的0.211 34像素值,同樣小于粒子群算法的0.085 15像素值和灰狼算法的0.062 12像素值。
通過兩個試驗對比,來檢驗本文算法是否穩(wěn)定。每個試驗會采用不一樣的標(biāo)定板,除此之外,其他條件都相同。第1個試驗使用前文的標(biāo)定板(board1)采集圖片,分為3組,每組圖片數(shù)量依次為10、20、30張。第2個試驗換規(guī)格為11×8,格子大小為15 mm×15 mm的標(biāo)定板(board2)重復(fù)上述操作。采用前面提到的4種方法進(jìn)行實驗,即每個標(biāo)定方法都會進(jìn)行標(biāo)定板1(board1)和標(biāo)定板2(board2)的共計6組標(biāo)定試驗。記錄每組的反投影平均誤差,最后計算3組實驗反投影誤差的平均值,試驗結(jié)果如表3所示。
從表3可看出,在第1個實驗中,即標(biāo)定板用的是前文提到的board1的情況下,張正友標(biāo)定法得到誤差的平均值是0.210 88像素值,標(biāo)準(zhǔn)粒子群算法得到誤差的平均值是0.081 42像素值,灰狼算法得到誤差的平均值是0.061 19像素值,本文算法得到誤差的平均值是0.017 75像素值,優(yōu)于其他3種方法。在第2個試驗中,將標(biāo)定板換為board2,同樣每種方法進(jìn)行3組試驗。張正友標(biāo)定法得到誤差的平均值是0.163 12像素值,標(biāo)定標(biāo)準(zhǔn)粒子群和灰狼算法的誤差平均值分別為0.031 24像素值和0.059 73像素值,本文算法是0.015 90像素值,本文算法得到的誤差更小。綜合兩個試驗來看,本文算法不管是在標(biāo)定板改變的情況下還是圖片數(shù)量改變的情況下,目標(biāo)函數(shù)值依然是4種方法里面最小,且數(shù)值波動不大。綜上可看出,本文算法魯棒性強,可重復(fù)使用。
表2 不同算法結(jié)果
表3 可重復(fù)性試驗結(jié)果
以粒子群和灰狼算法為基礎(chǔ)進(jìn)行研究,將標(biāo)準(zhǔn)粒子群算法部分進(jìn)行改進(jìn),引入非線性慣性系數(shù),再與標(biāo)準(zhǔn)灰狼算法按一定機制融合兩者到一個框架中,有效提高標(biāo)定的精確度。將本文算法與其他同類方法比較,經(jīng)試驗驗證,該標(biāo)定方法可重復(fù)使用,具有良好的穩(wěn)定性和準(zhǔn)確性。在求解過程中,首先建立非線性標(biāo)定模型,通過張正友方法獲得標(biāo)定的上下限范圍,初始迭代時在上下限范圍內(nèi)隨機生成粒子位置,以目標(biāo)函數(shù)最小為目的進(jìn)行迭代計算。該算法可以與實際工程案例結(jié)合,能準(zhǔn)確、有效地用于多維非線性問題優(yōu)化求解。