張峰峰 張 欣 陳 龍 孫立寧 詹 蔚
1.蘇州大學(xué)機(jī)電工程學(xué)院,蘇州,215006 2.蘇州大學(xué)蘇州納米科技協(xié)同創(chuàng)新中心,蘇州,215123 3.蘇州大學(xué)附屬第一醫(yī)院放療科,蘇州,215000
物體三維重建是計算機(jī)視覺、計算機(jī)輔助幾何設(shè)計等領(lǐng)域的核心問題[1]。雙目視覺三維重建技術(shù)已經(jīng)成為計算機(jī)視覺的重要研究方向,該技術(shù)在智能化自動生產(chǎn)、機(jī)器人導(dǎo)航、醫(yī)療輔助等領(lǐng)域均有應(yīng)用[2]。雙目視覺技術(shù)的重點(diǎn)研究領(lǐng)域之一便是雙目相機(jī)的標(biāo)定[3-5]。雙目相機(jī)的標(biāo)定精度直接影響三維重建的精度。在實際的應(yīng)用過程中,標(biāo)定的精度和所需時間是首要的研究目標(biāo)[6]。
雙目相機(jī)的標(biāo)定通常建立在理想的針孔相機(jī)模型中, 通過對一系列的空間物點(diǎn)和對應(yīng)的映射像點(diǎn)進(jìn)行約束集求解得到相機(jī)的內(nèi)外參數(shù)[7-10]。神經(jīng)網(wǎng)絡(luò)是人工智能領(lǐng)域近年來發(fā)展起來的一種新技術(shù),許多學(xué)者提出利用BP神經(jīng)網(wǎng)絡(luò)來進(jìn)行雙目相機(jī)標(biāo)定,即將左右相機(jī)圖像的二維像素值和三維坐標(biāo)值分別作為BP神經(jīng)網(wǎng)絡(luò)的輸入和輸出,利用BP神經(jīng)網(wǎng)絡(luò)不斷訓(xùn)練,直接建立兩者之間的關(guān)系。這種方法作為一種隱式標(biāo)定,不依賴傳統(tǒng)的相機(jī)成像模型,并且將許多非線性因素包含在內(nèi)[11-13]。相比傳統(tǒng)的雙目相機(jī)標(biāo)定的方法,該方法更加簡便、易操作。潘曉[14]在分析相機(jī)標(biāo)定原理的基礎(chǔ)上提出基于神經(jīng)網(wǎng)絡(luò)的相機(jī)標(biāo)定技術(shù),通過實驗驗證其標(biāo)定的誤差在允許范圍內(nèi),能滿足實際應(yīng)用的需要。劉小娟等[15]針對大視場雙目相機(jī)標(biāo)定中的精度低和非線性畸變問題,提出了一種結(jié)合BP神經(jīng)網(wǎng)絡(luò)的大尺寸虛擬靶標(biāo)標(biāo)定技術(shù),該技術(shù)進(jìn)一步驗證了BP神經(jīng)網(wǎng)絡(luò)在雙目相機(jī)標(biāo)定實際應(yīng)用中的可行性。從眾多實驗研究結(jié)果中可以看出,基于BP神經(jīng)網(wǎng)絡(luò)的雙目相機(jī)標(biāo)定方法雖然簡便、易操作,但存在迭代時間較長、精度低等缺點(diǎn),因此,如何優(yōu)化BP神經(jīng)網(wǎng)絡(luò),從而提高雙目相機(jī)的標(biāo)定精度及標(biāo)定時間是目前研究的重點(diǎn)。
本文提出了融合多格算法的Trajkovic算子進(jìn)行角點(diǎn)檢測,同時利用一種改進(jìn)遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)來對雙目相機(jī)進(jìn)行標(biāo)定,克服了BP神經(jīng)網(wǎng)絡(luò)迭代時間較長、精度低的缺點(diǎn)。
雙目相機(jī)標(biāo)定的實驗硬件平臺主要由圖1所示的顯示器、工作站、雙目相機(jī)以及標(biāo)定塊組成。以標(biāo)定塊的三條棱邊分別建立X、Y、Z軸,三坐標(biāo)軸交于原點(diǎn)O,以此來構(gòu)建物體真實的三維世界坐標(biāo)系。根據(jù)此世界坐標(biāo)系可以計算出立方體每個面上棋盤角點(diǎn)的真實三維空間坐標(biāo)。雙目相機(jī)主要由兩個型號為MER-130-30Ux(-L)的攝像機(jī)組成,分辨率為1280 pixel×1024 pixel。標(biāo)定目標(biāo)是一個邊長9 cm的正方體標(biāo)定塊,在其六個面上均勻布滿邊長1 cm的黑白相間的正方形棋盤格。
圖1 雙目相機(jī)標(biāo)定系統(tǒng)的硬件組成
角點(diǎn)檢測是雙目相機(jī)標(biāo)定的重要環(huán)節(jié)之一,其對應(yīng)的像素精度直接影響相機(jī)最終的標(biāo)定精度[16]。Trajkovic特征點(diǎn)檢測算法常被用于實時性和精度要求均較高的系統(tǒng)中,本研究采用Trajkovic特征點(diǎn)檢測算子來進(jìn)行棋盤格角點(diǎn)的檢測。與傳統(tǒng)的Moravec角點(diǎn)檢測算法[17]相比,Trajkovic檢測算法的性能更好,因為Trajkovic檢測算法通過使用像素插值的方法比較每一個方向上的灰度值變化程度,而Moravec檢測算法只有有限個方向的比較。與常用的Harris角點(diǎn)檢測算法相比,兩者在角點(diǎn)檢測的效果方面差不多,但是Trajkovic檢測算法的速度遠(yuǎn)快于Harris角點(diǎn)檢測算法。為了消除噪聲對角點(diǎn)檢測的影響,在角點(diǎn)檢測之前采用高斯平滑方法對圖像進(jìn)行降噪。在圖像高斯平滑中,對圖像進(jìn)行平均時,不同位置的像素被賦予了不同的權(quán)重。高斯平滑與簡單平滑不同,它在對鄰域內(nèi)像素進(jìn)行平均時,不同位置的像素給予不同的權(quán)值。
將Trajkovic特征點(diǎn)檢測算子用于棋盤角點(diǎn)的檢測,主要依據(jù)如下:棋盤格角點(diǎn)可以看成兩條邊的交點(diǎn),Trajkovic算子通過設(shè)定一個圓形窗口,考慮在這個圓形窗口內(nèi)所有通過圓心的直線,以此來計算圓形窗口內(nèi)過圓心的每一個可能的方向上的灰度值變化程度。灰度值的變化最小,并且這個最小值也大于某個設(shè)定的閾值,那么認(rèn)為這個點(diǎn)就是一個角點(diǎn)。假設(shè)通過圓心的一條直線與圓相交于點(diǎn)p和p′,則具體的Trajkovic算子對角點(diǎn)的定義如下:
c(x,y)=min((Ip-Ic)2+(I′p-Ic)2)
(1)
其中,c(x,y)表示圖像I上任意一點(diǎn)(x,y)處的灰度值,Ic表示圓心處的圖像的灰度值,Ip表示交點(diǎn)p處的圖像的灰度值,I′p表示交點(diǎn)p′處圖像的灰度值。為了進(jìn)一步提高Trajkovic算子的角點(diǎn)檢測精度并加快角點(diǎn)檢測的速度,引入多格算法與之融合,對拍攝的原始棋盤圖像進(jìn)行優(yōu)化,優(yōu)化之后再進(jìn)行Trajkovic算子的角點(diǎn)檢測。角點(diǎn)一般可以分為兩類:幾何角點(diǎn)和紋理角點(diǎn)。幾何角點(diǎn)是由圖像中物體邊緣的交點(diǎn),而紋理角點(diǎn)是由物體表面的紋理產(chǎn)生的角點(diǎn),棋盤圖像的角點(diǎn)明顯屬于幾何角點(diǎn)。在Trajkovic算子中引入多格算法的目的是希望能多檢測到幾何角點(diǎn),少檢測到紋理點(diǎn),以此來提高角點(diǎn)檢測的精度和速度。通常情況下一幅圖像中的紋理角點(diǎn)都是非常密集的,并且灰度值是在一個很小區(qū)域內(nèi)發(fā)生變化,所以多格算法采用平均值的方法將原圖縮小,通過縮小圖像可以消除區(qū)域內(nèi)灰度值的變換。采用融合多格算法的Trajkovic算子角點(diǎn)檢測的主要步驟如下:
(1)為了防止Trajkovic算子受噪聲的影響,對拍攝的棋盤圖像先進(jìn)行高斯平滑去噪。
(2)利用多格算法對高斯平滑后的圖像進(jìn)行縮小處理,減少檢測到紋理角點(diǎn)的數(shù)目,加快角點(diǎn)檢測速度。
(3)利用Trajkovic算子在縮小版的棋盤圖像上進(jìn)行角點(diǎn)檢測,使用角點(diǎn)計算公式初步判斷是否為候選角點(diǎn)。
(4)如果步驟(3)中判定為角點(diǎn),則再到原始圖像上進(jìn)一步判定,從而提高角點(diǎn)檢測的精度。
同名角點(diǎn)即雙目相機(jī)拍攝的左右棋盤格圖像中一一對應(yīng)的棋盤格角點(diǎn)。同名角點(diǎn)匹配需要將左右相機(jī)圖像上的同名角點(diǎn)一一匹配,并將它們在左右相機(jī)中對應(yīng)的像素坐標(biāo)記錄下來。只有匹配正確的棋盤格角點(diǎn)的像素坐標(biāo)才能作為雙目相機(jī)標(biāo)定時BP神經(jīng)網(wǎng)絡(luò)的輸入,因此,同名角點(diǎn)匹配是使用BP神經(jīng)網(wǎng)絡(luò)進(jìn)行雙目相機(jī)標(biāo)定必不可少的步驟。傳統(tǒng)的同名角點(diǎn)匹配主要在Opencv中通過Harris、Trajkovic等特征算子進(jìn)行角點(diǎn)檢測[18-19],再使用BruteForceMatcher匹配方法進(jìn)行匹配,然后將誤匹配去除,獲取優(yōu)質(zhì)的匹配結(jié)果。由于棋盤的圖案太相似,因此傳統(tǒng)方法在同名角點(diǎn)匹配的時候往往誤匹配率較高、匹配效果較差。
本研究提出一種將點(diǎn)對點(diǎn)空間映射算法和網(wǎng)格運(yùn)動統(tǒng)計相結(jié)合的方法來克服同名角點(diǎn)誤匹配率高的缺點(diǎn)。本方法主要分為兩個部分:基于點(diǎn)對點(diǎn)空間映射算法的同名角點(diǎn)粗匹配以及網(wǎng)格運(yùn)動統(tǒng)計算法對匹配結(jié)果的優(yōu)化。
2.2.1同名角點(diǎn)的粗匹配
在檢測好的棋盤格角點(diǎn)基礎(chǔ)之上進(jìn)行同名角點(diǎn)的粗匹配。將左右相機(jī)圖像中角點(diǎn)的相關(guān)性用一個相關(guān)性系數(shù)矩陣Q來描述。假設(shè)左相機(jī)圖像有α個角點(diǎn),右相機(jī)有β個角點(diǎn),則Q的元素個數(shù)為
N(Q)=αβ
(2)
N(Q)值越大,則角點(diǎn)的相關(guān)性越大。將角點(diǎn)的相關(guān)性、距離和距離比率閾值分別設(shè)為T、p和d,兩角點(diǎn)間實際的距離為D,整個粗匹配的算法步驟如下:
(1)尋找Q中最大值的位置Sij(即第i行第j列),同時將這個最大值存儲為Nmax。
(2)將Q中(i,j)的值設(shè)置為-1。
(3)分別搜尋當(dāng)前Q中第i行和第j列中的最大值mai和maj。
(4)若同時滿足以下三個條件:1-Nmax<(1-mai)d,1-Nmax<(1-maj)d,D
(5)重復(fù)上述過程,直到Nmax≤T為止。
2.2.2基于網(wǎng)格運(yùn)動統(tǒng)計算法的角點(diǎn)匹配優(yōu)化
經(jīng)過角點(diǎn)粗匹配步驟后存在一定的誤匹配的角點(diǎn),需要引入網(wǎng)格運(yùn)動統(tǒng)計的優(yōu)化方法迅速剔除錯誤的匹配,從而提高角點(diǎn)匹配的正確率和穩(wěn)定性。整個優(yōu)化步驟如下:
首先,找到粗匹配后的左邊相機(jī)圖像中的每個角點(diǎn)對應(yīng)的右相機(jī)圖像中最鄰近的角點(diǎn);其次,將左右相機(jī)圖像進(jìn)行網(wǎng)格劃分,將每個網(wǎng)格看成一個小鄰域,若相應(yīng)的兩個角點(diǎn)匹配正確,則將兩個角點(diǎn)附近的小區(qū)域看作對應(yīng)同一個3D位置,每個網(wǎng)格內(nèi)所有的匹配點(diǎn)只需統(tǒng)計一次;再次,對網(wǎng)格內(nèi)角點(diǎn)個數(shù)設(shè)置閾值t,依據(jù)運(yùn)動的平滑性(即匹配正確的角點(diǎn)附近的正確匹配點(diǎn)的對數(shù)應(yīng)該大于錯誤匹配的角點(diǎn)附近的正確匹配點(diǎn)的對數(shù)[20]);最后計算粗匹配好的角點(diǎn)附近的正確匹配的個數(shù)k與閾值t來判斷該點(diǎn)是否被正確匹配,若k≥t,則認(rèn)為正確匹配,否則,認(rèn)定為誤匹配并同時剔除。
采用BP神經(jīng)網(wǎng)絡(luò)進(jìn)行雙目相機(jī)標(biāo)定的主要原理如下:以左右相機(jī)棋盤圖像的角點(diǎn)實際像素坐標(biāo)作為BP神經(jīng)網(wǎng)絡(luò)的輸入,先正向計算輸出標(biāo)定塊的預(yù)測三維坐標(biāo),再通過標(biāo)定塊的實際和預(yù)測三維坐標(biāo)的差值來反向優(yōu)化網(wǎng)絡(luò)的權(quán)值,循環(huán)往復(fù),最終建立二維像素坐標(biāo)和角點(diǎn)的三維世界坐標(biāo)之間的隱式映射關(guān)系。本文采用的BP神經(jīng)網(wǎng)絡(luò)的相機(jī)標(biāo)定設(shè)計如圖2所示。BP網(wǎng)絡(luò)設(shè)置為三層,分別為輸入層、輸出層以及隱含層。將左右相機(jī)拍攝的棋盤格角點(diǎn)圖像的橫縱像素坐標(biāo)作為BP網(wǎng)絡(luò)的4個輸入神經(jīng)元,與之對應(yīng)地將角點(diǎn)實際三維坐標(biāo)作為BP網(wǎng)絡(luò)的3個輸出神經(jīng)元。隱含層神經(jīng)元個數(shù)設(shè)置為9(一般隱含層神經(jīng)元個數(shù)是輸入層神經(jīng)元個數(shù)的2倍加1)。輸入層與隱含層及輸出層與隱含層之間的權(quán)值分別設(shè)為wij和wki。本研究設(shè)置訓(xùn)練樣本個數(shù)為1000,目標(biāo)精度為0.0001,最大迭代次數(shù)為10 000。
圖2 基于BP神經(jīng)網(wǎng)絡(luò)的雙目相機(jī)標(biāo)定結(jié)構(gòu)設(shè)計
傳統(tǒng)的遺傳算法在相機(jī)標(biāo)定過程中一定程度上提高了BP神經(jīng)網(wǎng)絡(luò)的初始閾值和權(quán)值的尋優(yōu)能力,但與此同時該算法陷入局部極值的危險性也增加了。本研究從對遺傳算法在相機(jī)標(biāo)定過程中存在的缺點(diǎn)入手,對遺傳算法進(jìn)行改進(jìn)以提高其收斂性全局尋優(yōu)的能力,進(jìn)而提高BP神經(jīng)網(wǎng)絡(luò)的性能,即最終提高相機(jī)標(biāo)定的精度和速度。
3.2.1遺傳算法選擇算子的改進(jìn)
傳統(tǒng)的遺傳算法采用的選擇算子在實際選擇過程中存在較大的誤差。針對該問題,本研究利用排序法對其進(jìn)行改進(jìn),重新定義第i個個體在排序后被選擇的概率Pnew如下:
(3)
Pnew=b(1-q0)β-1
(4)
式中,α為種群的數(shù)量;q0為最優(yōu)個體被選擇的概率;b為q0標(biāo)準(zhǔn)化后的值;β為第i個個體在整個種群排序后的位置。
3.2.2遺傳算法交叉和變異概率的改進(jìn)
相機(jī)標(biāo)定的數(shù)據(jù)種群的多樣性主要依賴交叉概率,同時遺傳算法的全局尋優(yōu)能力也受交叉概率的直接影響。遺傳算法能否避開局部極值主要由變異概率決定,兩者是遺傳算法的核心因素。在改進(jìn)遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)進(jìn)行雙目相機(jī)的標(biāo)定過程中,將神經(jīng)網(wǎng)絡(luò)預(yù)測的棋盤圖像的三維空間坐標(biāo)(xy,yy,zy)與實際的棋盤圖像的三維空間坐標(biāo)(xs,ys,zs)相減,以此來構(gòu)建誤差函數(shù)E:
(5)
通過誤差函數(shù)E的倒數(shù)來定義個體適應(yīng)度F,則第i個個體的適應(yīng)度表示為
F(i)=1/E(i)
(6)
在傳統(tǒng)的遺傳算法中,交叉概率Pj的值為一個常數(shù),一般設(shè)定0.3≤Pj≤0.8。若選取的交叉概率的值過大,將會導(dǎo)致遺傳算法的全局搜索能力變強(qiáng),但同時其染色體原有的高適應(yīng)能力將遭到破壞。相反,若選取的交叉概率值過小,則遺傳算法的全局搜索能力和收斂速度將下降。因此在遺傳算法的進(jìn)化過程中,需要根據(jù)當(dāng)前個體適應(yīng)度和進(jìn)化迭代次數(shù),對交叉概率不斷地進(jìn)行自適應(yīng)調(diào)整。在遺傳算法進(jìn)化的初期,個體適應(yīng)環(huán)境的能力較差,而且適應(yīng)度的值小于平均的適應(yīng)度值,此時需要較大的交叉概率值來擴(kuò)大遺傳算法的全局搜索范圍。在遺傳算法進(jìn)化的后期,個體適應(yīng)度值大于平均的適應(yīng)度值,此時需要減小交叉概率的值,降低全局搜索能力。改進(jìn)后的交叉概率為
(7)
式中,F(xiàn)max為要進(jìn)行交叉的兩個個體的最大適應(yīng)度值;Fmean為種群個體的平均適應(yīng)度值;n為遺傳算法當(dāng)前的迭代次數(shù);nmax為最大的迭代次數(shù);將初始值Pjmax設(shè)定為0.8,Pjmin設(shè)定為0.3。
在傳統(tǒng)的遺傳算法中,變異概率Pb的值默認(rèn)為0.001≤Pb≤0.1。在遺傳算法進(jìn)化的初期,由于個體的適應(yīng)度值低于平均的適應(yīng)度值,此時需要選擇較小的變異概率來保存染色體中的優(yōu)良基因。在遺傳算法的后期,個體的適應(yīng)度值高于平均適應(yīng)度值,此時需要增加變異概率來增強(qiáng)遺傳算法的局部搜索能力,因此,自適應(yīng)的變異概率為
(8)
其中,F(xiàn)為種群中父代染色體的適應(yīng)度值,將初始值Pbmax設(shè)定為0.1,Pbmin設(shè)定為0.001。
3.2.3改進(jìn)遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的相機(jī)標(biāo)定算法流程
改進(jìn)遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的雙目相機(jī)標(biāo)定主要分五部分:遺傳算法的參數(shù)初始化模塊、確定BP神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)模塊、遺傳算法的改進(jìn)模塊、BP神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值優(yōu)化模塊、基于相機(jī)圖像的BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練和測試模塊。整個改進(jìn)遺傳神經(jīng)網(wǎng)絡(luò)算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的相機(jī)標(biāo)定的算法流程如圖3所示。其中g(shù)表示計算出的適應(yīng)度值,gmax表示人為設(shè)置的適應(yīng)度值的閾值,ε表示訓(xùn)練誤差的閾值。最終遺傳算法可以通過種群和遺傳算子實現(xiàn)優(yōu)勝劣汰,找到BP網(wǎng)絡(luò)最優(yōu)的閾值和權(quán)值,從而克服在雙目相機(jī)標(biāo)定過程中BP神經(jīng)網(wǎng)絡(luò)收斂速度慢、標(biāo)定結(jié)果精度低、不穩(wěn)定等缺點(diǎn)。
圖3 改進(jìn)遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的相機(jī)標(biāo)定算法流程圖
利用圖1所示的雙目相機(jī)標(biāo)定的硬件平臺,拍攝多張標(biāo)定塊的圖片。將左右相機(jī)圖像對應(yīng)保存,通過雙目相機(jī)獲取棋盤圖像,部分棋盤圖像如圖4所示。
圖4 雙目相機(jī)拍攝的棋盤圖像
常見的用于角點(diǎn)的檢測算法主要有Moravec、Harris及Trajkovic算子。不同的算法在實際的實驗中效果并不相同。從不同特征檢測算子檢測棋盤圖像角點(diǎn)的精度出發(fā),采用傳統(tǒng)的Harris算子對棋盤圖像的角點(diǎn)進(jìn)行檢測。圖5a中有少數(shù)角點(diǎn)存在重復(fù)檢測并且在小范圍內(nèi)也存在少部分角點(diǎn)漏檢的現(xiàn)象。如表1所示,整個棋盤圖像角點(diǎn)檢測正確率可以達(dá)到90%。Harris算子可以看成對Moravec算子的改進(jìn),與Harris算子相比,Moravec算子只在有限個方向進(jìn)行角點(diǎn)檢測,因此其檢測的正確率低于Harris算子檢測的正確率。如圖5b所示,采用Moravec算子進(jìn)行角點(diǎn)檢測存在大量的漏檢與誤檢的情況,其棋盤圖像的角點(diǎn)檢測效果較差,其角點(diǎn)的檢測正確率僅為55%左右(表1),相比Harris算子,其檢測正確率降低了35%。傳統(tǒng)的Trajkovic算子的檢測正確率和Harris算子角點(diǎn)檢測正確率相差較小。本研究在傳統(tǒng)的Trajkovic算子中融入多格算法,對原始拍攝的棋盤圖像進(jìn)行優(yōu)化,最終的檢測效果如圖5c所示,其檢測正確率接近100%。
(a)Harris算子檢測效果 (b)Moravec算子檢測結(jié)果
從角點(diǎn)檢測的速度方面考慮,Harris算子是從各個方向上對棋盤圖像角點(diǎn)進(jìn)行檢測,相比Moravec算子的兩個方向的檢測,其花費(fèi)的時間為1.5 s(表1),多花費(fèi)了0.3 s。Trajkovic算子與Harris算子一樣,采用多方向搜尋角點(diǎn),但在本研究中Trajkovic算子融合了多格算法,減少了非幾何角點(diǎn)的檢測,因此,相比Harris算子,融合多格算法的Trajkovic算子的檢測速度有了較大的提高,提高了1倍左右。
表1 不同算子的角點(diǎn)檢測的時間和正確率
本研究采用兩步法,在棋盤圖像角點(diǎn)檢測結(jié)果的基礎(chǔ)之上,首先采用點(diǎn)與點(diǎn)的空間映射粗匹配算法,最終獲得的粗匹配結(jié)果如圖6a所示,可以清晰地看出部分角點(diǎn)出現(xiàn)了誤匹配的情況。針對該問題,采用網(wǎng)格運(yùn)動統(tǒng)計算法對誤匹配點(diǎn)進(jìn)行剔除并重新二次匹配,最終獲得的匹配結(jié)果如圖6b所示,匹配成功率接近100%。
(a)粗匹配效果
經(jīng)過同名角點(diǎn)的檢測和匹配,最終提取的部分同名角點(diǎn)的像素坐標(biāo)和三維坐標(biāo)見表2。其中,(u,v)是像素坐標(biāo),u、v分別表示水平方向和垂直方向。
表2 同名角點(diǎn)的像素坐標(biāo)和三維坐標(biāo)(部分?jǐn)?shù)據(jù))
4.3.1雙目相機(jī)標(biāo)定精度測試
選取1000組相機(jī)拍攝的同名角點(diǎn)像素坐標(biāo)
和實際三維坐標(biāo)作為BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練集,分別對BP神經(jīng)網(wǎng)絡(luò)和改進(jìn)遺傳算法優(yōu)化后的BP神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,再將6組數(shù)據(jù)導(dǎo)入作為測試集進(jìn)行相機(jī)標(biāo)定測試。采用優(yōu)化前的BP神經(jīng)網(wǎng)絡(luò)獲得的角點(diǎn)三維坐標(biāo)預(yù)測值和實際值如圖7a所示,可以看出兩條曲線的走勢基本保持一致,但兩者之間明顯有區(qū)別,存在一定的誤差。改進(jìn)遺傳算法優(yōu)化后的BP神經(jīng)網(wǎng)絡(luò)獲得的角點(diǎn)的三維坐標(biāo)預(yù)測值和實際值如圖7b所示,可以看出兩者曲線基本完美貼合,二維像素坐標(biāo)和三維真實坐標(biāo)之間的隱式映射關(guān)系更加精準(zhǔn),雙目相機(jī)標(biāo)定的誤差進(jìn)一步減小。
(a)優(yōu)化前的BP網(wǎng)絡(luò)標(biāo)定精度
針對6組測試數(shù)據(jù)的X、Y、Z三坐標(biāo)的誤差進(jìn)行分析,對BP神經(jīng)網(wǎng)絡(luò)優(yōu)化前后的雙目相機(jī)標(biāo)定的三維坐標(biāo)誤差見表3??梢钥闯觯瑑?yōu)化后各坐標(biāo)的誤差明顯要比優(yōu)化前的誤差小。優(yōu)化前三維坐標(biāo)預(yù)測值的總平均誤差為0.66 mm,優(yōu)化后三維坐標(biāo)的總平均誤差為0.08 mm,相比優(yōu)化前,其標(biāo)定測試誤差降低了88%。
表3 三維坐標(biāo)的標(biāo)定預(yù)測誤差
對1000組訓(xùn)練集X、Y、Z三坐標(biāo)的標(biāo)定誤差進(jìn)行曲面擬合。如圖8a所示,在X、Y、Z坐標(biāo)方向,優(yōu)化前的相機(jī)標(biāo)定預(yù)測結(jié)果中60%左右的誤差集中在藍(lán)色區(qū)域,誤差范圍在0.2~0.6 mm之間。圖8b中優(yōu)化后的標(biāo)定結(jié)果的誤差范圍更加集中,而且誤差更小,在0.04~0.09 mm之間。
(a)優(yōu)化前的三坐標(biāo)誤差
為了驗證改進(jìn)后神經(jīng)網(wǎng)絡(luò)的實際標(biāo)定效果,利用改進(jìn)的神經(jīng)網(wǎng)絡(luò)獲得的二維和三維空間的映射關(guān)系,將二維圖像中角點(diǎn)的二維坐標(biāo)輸入1000次訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)中。反向記錄此時輸出的二維圖像中角點(diǎn)對應(yīng)的三維空間的坐標(biāo),并將它與標(biāo)定塊上實際對應(yīng)的三維坐標(biāo)進(jìn)行對比并作差,見表4,最終獲得的差值即實際的標(biāo)定精度。通過表4可以計算出采用改進(jìn)后的神經(jīng)網(wǎng)絡(luò)的雙目相機(jī)的實際標(biāo)定的平均精度為0.09 mm,比預(yù)測的平均標(biāo)定誤差減小了0.01 mm左右。
表4 基于不同標(biāo)定方法獲得的三維坐標(biāo)的實際誤差
為了進(jìn)一步驗證基于神經(jīng)網(wǎng)絡(luò)雙目相機(jī)標(biāo)定的可靠性,通過實際的基于OpenCV的雙目相機(jī)標(biāo)定實驗來與之進(jìn)行標(biāo)定結(jié)果的對比。主要利用基于OpenCV的傳統(tǒng)相機(jī)的標(biāo)定方法標(biāo)定出雙目相機(jī)的內(nèi)外參數(shù),根據(jù)標(biāo)定獲得參數(shù)來反向求取與二維圖像平面中的角點(diǎn)相對應(yīng)的三維空間中角點(diǎn)的坐標(biāo)。將求取的三維空間中的角點(diǎn)坐標(biāo)與實際的三維空間中的角點(diǎn)的坐標(biāo)作差,該值即實際的標(biāo)定精度。具體的標(biāo)定精度見表4,可以看出采用神經(jīng)網(wǎng)絡(luò)進(jìn)行雙目相機(jī)標(biāo)定的實際平均精度為0.09 mm,采用OpenCV進(jìn)行標(biāo)定的實際的平均精度為0.10 mm。對比后發(fā)現(xiàn),采用神經(jīng)網(wǎng)絡(luò)的雙目相機(jī)標(biāo)定的精度符合雙目相機(jī)標(biāo)定的基本要求。
4.3.2雙目相機(jī)標(biāo)定速度測試
如圖9a所示,優(yōu)化前的雙目相機(jī)標(biāo)定測試迭代次數(shù)為736。采用普通遺傳算法優(yōu)化后的標(biāo)定測試的迭代次數(shù)(圖9b)為287,標(biāo)定測試過程的收斂速度提高了1.6倍。采用改進(jìn)遺傳算法優(yōu)化后的相機(jī)標(biāo)定的迭代次數(shù)(圖9c)為169,相比圖9b,迭代次數(shù)減少了42%。改進(jìn)遺傳算法優(yōu)化后的標(biāo)定速度比優(yōu)化前的標(biāo)定速度提高了3.4倍。在標(biāo)定測試過程中,改進(jìn)遺傳算法相對于普通遺傳算法優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)取得的效果更好,加快了收斂速度,提高了全局尋優(yōu)能力,證明在相機(jī)標(biāo)定測試過程中改進(jìn)遺傳算法對BP神經(jīng)網(wǎng)絡(luò)優(yōu)化的必要性和可行性。
(a)優(yōu)化前的迭代次數(shù)
本文針對BP 神經(jīng)網(wǎng)絡(luò)在雙目相機(jī)標(biāo)定應(yīng)用中收斂速度慢、精度低、易陷入局部極值等問題,提出一種改進(jìn)的遺傳算法來優(yōu)化BP 神經(jīng)網(wǎng)絡(luò),從而更快、更高精度地完成雙目相機(jī)標(biāo)定。實驗結(jié)果表明:優(yōu)化前的平均標(biāo)定預(yù)測精度為0.66 mm,優(yōu)化后的平均標(biāo)定預(yù)測精度為0.08 mm,比優(yōu)化前提高了88%。與此同時,優(yōu)化前的標(biāo)定測試迭代次數(shù)為736,普通遺傳算法及改進(jìn)遺傳算法優(yōu)化后的迭代次數(shù)分別為287和169,相比優(yōu)化前,改進(jìn)遺傳算法優(yōu)化后的迭代速度提高了3.4倍。說明改進(jìn)遺傳算法優(yōu)化BP網(wǎng)絡(luò)在雙目相機(jī)標(biāo)定過程中取得了較好的效果,基本滿足雙目相機(jī)標(biāo)定的要求。