張昊鵬,郭 宇,湯鵬洲,黃少華,劉道元,李 晗
(南京航空航天大學(xué) 機(jī)電學(xué)院,江蘇 南京 210016)
增強(qiáng)現(xiàn)實(shí)技術(shù)通過在準(zhǔn)確的位置疊加虛擬裝配信息為用戶提供引導(dǎo),來提高產(chǎn)品裝配效率,減少裝配錯(cuò)誤[1]。增強(qiáng)現(xiàn)實(shí)系統(tǒng)需要實(shí)時(shí)獲取高精度魯棒的頭部或相機(jī)位姿信息才能將虛擬的裝配信息注冊(cè)到準(zhǔn)確的位置[2]。增強(qiáng)現(xiàn)實(shí)中的跟蹤注冊(cè)方法主要分為基于跟蹤器的跟蹤注冊(cè)方法和基于視覺的跟蹤注冊(cè)方法,其中基于視覺的跟蹤注冊(cè)方法通用性強(qiáng)、硬件構(gòu)造簡單、系統(tǒng)誤差小,在裝配環(huán)境中使用方便且能得到較好的跟蹤注冊(cè)效果。
基于視覺的增強(qiáng)現(xiàn)實(shí)跟蹤注冊(cè)方法中,基于標(biāo)識(shí)物[3]和基于自然特征點(diǎn)[4]的跟蹤注冊(cè)方法已經(jīng)比較成熟,具有較好的精度和實(shí)時(shí)性。然而在實(shí)際裝配任務(wù)中,基于標(biāo)識(shí)物的方法操作過程復(fù)雜[5],基于局部特征的方法對(duì)典型的弱紋理零件,如機(jī)械制造業(yè)中的發(fā)動(dòng)機(jī)外殼、蒙皮、框、肋、梁等的跟蹤注冊(cè)效果較差。目前,增強(qiáng)現(xiàn)實(shí)領(lǐng)域中存在針對(duì)無標(biāo)識(shí)物進(jìn)行的弱紋理零件跟蹤注冊(cè)方法。例如:基于特征線[6]、特征圓[7]等邊緣輪廓特征的跟蹤注冊(cè)算法可以避免提取特征點(diǎn),通過識(shí)別和定位零件特有的輪廓特征來確定相機(jī)位姿,快速準(zhǔn)確地進(jìn)行跟蹤注冊(cè),但是不適用于包含多種不同零部件的雜亂環(huán)境;基于點(diǎn)云[8-9]的方法借助迭代最近點(diǎn)(Iterative Closest Point,ICP)算法進(jìn)行迭代運(yùn)算,實(shí)現(xiàn)點(diǎn)云間的配準(zhǔn),從而完成跟蹤注冊(cè),這類方法對(duì)弱紋理零件進(jìn)行跟蹤注冊(cè)具有較好的魯棒性,但是在連續(xù)跟蹤時(shí)會(huì)出現(xiàn)陷入局部最優(yōu)、產(chǎn)生累計(jì)誤差等情況;基于模型[10-11]的方法同樣適用于跟蹤弱紋理零件,這類方法的缺點(diǎn)是計(jì)算量大且搜索空間巨大。王月等[5]采用Linemod算法粗略估計(jì)位姿,減小了搜索空間,其還要采用特征點(diǎn)估計(jì)精確位姿,然而采用特征點(diǎn)進(jìn)行跟蹤注冊(cè)的方法在點(diǎn)選圖像中標(biāo)定點(diǎn)時(shí)會(huì)引入誤差[12],影響注冊(cè)精度。Han等[13]利用物體質(zhì)心與圖像投影間的對(duì)應(yīng)關(guān)系以及移動(dòng)設(shè)備提供的傾角信息縮小算法搜索空間,再借助Hu矩計(jì)算圖像模板與場(chǎng)景圖像間的匹配度,以匹配度最高的模板生成時(shí)的相機(jī)位姿作為零部件的位姿,然而該方法借助過多的約束條件來縮小搜索空間,導(dǎo)致對(duì)雜亂環(huán)境的魯棒性較差。
為了能夠在不借助特征點(diǎn)且不縮小搜索空間的前提下對(duì)弱紋理零件進(jìn)行快速跟蹤注冊(cè),提出一種基于圖像匹配的跟蹤注冊(cè)方法,該方法利用單目相機(jī)獲取場(chǎng)景圖像,借助改進(jìn)的遺傳算法和禁忌搜索算法搜索相對(duì)于場(chǎng)景圖像匹配度最高的虛擬零件圖像,以該虛擬零件圖像生成時(shí)的相機(jī)坐標(biāo)系相對(duì)于世界坐標(biāo)系的位姿作為拍攝該幀圖像時(shí)的相機(jī)位姿。該方法能夠以較少的計(jì)算量準(zhǔn)確求解最優(yōu)相機(jī)位姿值。
基于圖像匹配的跟蹤注冊(cè)方法分為離線和在線兩個(gè)階段:①離線階段,根據(jù)零件的標(biāo)準(zhǔn)模板庫(Standard Template Library, STL)模型提取零件邊緣,在零件邊緣上均勻取點(diǎn),以合適的觀察距離在不同的觀察方位下對(duì)邊緣采樣點(diǎn)進(jìn)行消隱,并將未被消隱的可見邊緣點(diǎn)保存到觀察方位模板集以備在線階段調(diào)用。②在線階段,首先對(duì)單目相機(jī)獲取的場(chǎng)景圖像進(jìn)行處理,得到距離圖像;其次根據(jù)最優(yōu)相機(jī)位姿搜索算法搜索到的相機(jī)位姿,借助距離圖像計(jì)算該相機(jī)位姿對(duì)應(yīng)的虛擬零件圖像與場(chǎng)景圖像的匹配度,并在未達(dá)到算法終止條件的情況下,根據(jù)匹配度搜索新的相機(jī)位姿,循環(huán)迭代此步直至滿足終止條件;最后系統(tǒng)輸出最優(yōu)相機(jī)位姿,渲染虛擬模型。跟蹤注冊(cè)流程如圖1所示。
為了節(jié)省在線階段生成虛擬零件圖像的時(shí)間,本文在離線階段建立觀察方位模板集。觀察方位模板集中包含不同觀察方位下的可見邊緣點(diǎn)坐標(biāo)及其所在邊緣的方向矢量。文中觀察點(diǎn)分布在如圖2所示的球面上,球面的圓心與零件坐標(biāo)系的原點(diǎn)重合,選取合適的觀察距離作為球面半徑。觀察點(diǎn)在經(jīng)度上的分布區(qū)間為0°~360°,分布間隔為1°;緯度上的分布區(qū)間為0°~180°,分布間隔為1°。觀察方位模板生成過程如圖3所示,具體步驟如下:
(1)提取模型邊緣線 零件CAD模型的STL格式文件如圖3a所示。將該文件中兩個(gè)法矢量呈一定夾角的相鄰三角面片的共邊線段作為模型邊緣,模型邊緣如圖3b所示。
(2)邊緣點(diǎn)采樣 從模型邊緣的某一端點(diǎn)開始,沿該邊緣方向以等步長采集邊緣點(diǎn),當(dāng)該邊緣上最后一個(gè)采樣點(diǎn)距離另一端點(diǎn)的距離值小于步長時(shí),沿另一條與該邊緣首尾相連且方向相近的邊緣繼續(xù)采樣,邊緣采樣點(diǎn)如圖3c所示。
(3)邊緣點(diǎn)消隱 在不同的觀察方位下,判斷觀察點(diǎn)與邊緣點(diǎn)組成的線段是否與模型表面的三角面片相交,如果相交,則去掉該邊緣點(diǎn),如圖3d所示。
選取步長時(shí)考慮由模型邊緣組成的最小閉合曲線的長度應(yīng)大于步長取值,保證每條邊緣閉合曲線至少有一個(gè)邊緣點(diǎn)被采樣。在觀察距離取值時(shí)可以借助OpenGL庫生成不同觀察距離下的模型圖像,根據(jù)零件模型經(jīng)投影后在圖像中所占的大小對(duì)實(shí)際使用時(shí)的觀察距離區(qū)間進(jìn)行粗略估計(jì),并取區(qū)間中點(diǎn)值作為觀察方位模板生成時(shí)的觀察距離。最終生成的觀察方位模板集應(yīng)由兩個(gè)矩陣構(gòu)成,其中一個(gè)矩陣用于記錄所有邊緣采樣點(diǎn)的信息,該矩陣的行數(shù)即為邊緣采樣點(diǎn)的個(gè)數(shù),列數(shù)為6,每行中記錄某個(gè)邊緣采樣點(diǎn)的三維位置信息和其所在線段的三維方向矢量;另一個(gè)矩陣記錄邊緣采樣點(diǎn)的消隱情況,該矩陣的行數(shù)為181×360,即共有181×360種觀察方位,列數(shù)為邊緣采樣點(diǎn)的個(gè)數(shù),每行中用0和1分別表示某個(gè)邊緣采樣點(diǎn)消隱和未消隱的狀態(tài)。
相機(jī)CZ軸在零件坐標(biāo)系中可以表示為
CZ=(sinθcosφ,sinθsinφ,cosθ),
θ∈[0,π],φ∈[0,2π]。
(1)
使相機(jī)坐標(biāo)系CX軸與零件坐標(biāo)系XM軸沿相機(jī)坐標(biāo)系CZ軸方向的投影重合,相機(jī)坐標(biāo)系CX軸可以表示為
(2)
零件坐標(biāo)系到相機(jī)坐標(biāo)系的旋轉(zhuǎn)矩陣
(3)
由于零件坐標(biāo)系XM軸沿相機(jī)坐標(biāo)系CZ軸方向的投影與相機(jī)坐標(biāo)系CX軸的夾角為ω,還需繞相機(jī)坐標(biāo)系CZ軸旋轉(zhuǎn)ω,至此旋轉(zhuǎn)矩陣R可寫為
(4)
平移向量
(5)
式中(fx,fy,cx,cy)為相機(jī)內(nèi)參。
由該相機(jī)位姿對(duì)應(yīng)的旋轉(zhuǎn)矩陣R和平移向量T,根據(jù)式(6)求得相機(jī)坐標(biāo)系原點(diǎn)在零件坐標(biāo)系中的坐標(biāo)(xc,yc,zc)以及該相機(jī)位姿對(duì)應(yīng)的觀察方位參數(shù)Φ和Ψ:
(6)
根據(jù)觀察方位參數(shù)Φ和Ψ調(diào)用觀察方位模板,由于生成觀察方位模板集時(shí),觀察方位是離散的,僅有少量觀察方位參數(shù)有對(duì)應(yīng)的觀察方位模板集。為了使任意觀察方位參數(shù)都能有對(duì)應(yīng)的觀察方位模板,考慮到觀察方位的離散程度較高,未建立觀察方位模板的觀察方位可以使用相近觀察方位下生成的模板。如圖5所示,生成觀察方位模板時(shí),該觀察方位鄰域內(nèi)的觀察方位共用一個(gè)模板。
(7)
(8)
式中(udi,vdi)為第i個(gè)可見邊緣點(diǎn)所在線段在成像平面中方向矢量,該向量是虛擬零件圖像中計(jì)算邊緣點(diǎn)傾角值的依據(jù)。因?yàn)樘摂M零件圖像在后續(xù)算法中進(jìn)行匹配時(shí)僅關(guān)注邊緣點(diǎn)在該圖像中的像素位置信息,而虛擬場(chǎng)景中的光照、顏色等因素并不會(huì)影響位置信息,所以未對(duì)這些因素進(jìn)行考慮。
最優(yōu)相機(jī)位姿搜索算法需要根據(jù)搜索過的相機(jī)位姿對(duì)應(yīng)的適應(yīng)度值進(jìn)行下一步搜索,適應(yīng)度值為虛擬零件圖像與場(chǎng)景圖像間的匹配度值。匹配度值以虛擬零件圖像邊緣像素點(diǎn)到最近場(chǎng)景圖像邊緣像素點(diǎn)的平均距離值定義,表示為
(9)
式中:U為場(chǎng)景圖像;V為虛擬零件圖像;N為虛擬零件圖像中可見邊緣點(diǎn)的數(shù)量;(ui,vi)為虛擬零件圖像中第i個(gè)邊緣點(diǎn)的像素坐標(biāo);DT(ui,vi)為場(chǎng)景距離圖像中(ui,vi)像素坐標(biāo)處的像素值,場(chǎng)景距離圖像由場(chǎng)景圖像進(jìn)行距離變換[14]而獲得。匹配度值越小說明虛擬零件圖像與場(chǎng)景圖像間的匹配度越高。虛擬零件圖像與場(chǎng)景距離圖像匹配時(shí)的原理圖如圖6所示。
虛擬零件圖像中的黑點(diǎn)表示零件邊緣;場(chǎng)景距離圖像中像素值為0表示該像素點(diǎn)為場(chǎng)景圖像中所有物體的邊緣輪廓,其余像素值表示各個(gè)像素位置距離場(chǎng)景圖像邊緣的最小距離值,加粗像素值表示圖像匹配時(shí)虛擬零件圖像中邊緣點(diǎn)相對(duì)于場(chǎng)景圖像邊緣的距離值,經(jīng)式(8)計(jì)算圖中平均距離值為1。
為了能夠在雜亂的裝配環(huán)境中保證匹配度值計(jì)算的準(zhǔn)確性,采用場(chǎng)景圖像的邊緣傾角參數(shù)對(duì)場(chǎng)景距離圖像中的像素值進(jìn)行加權(quán),即當(dāng)虛擬零件圖像中的邊緣點(diǎn)與場(chǎng)景圖象中的邊緣正確匹配時(shí),距離值為零且邊緣傾角相近。借助Sobel算子不僅可以計(jì)算出場(chǎng)景圖像的邊緣傾角值,還可以在提取場(chǎng)景圖像邊緣時(shí)替代Canny算子中的高斯濾波和差分求邊緣[15],避免了多余的計(jì)算時(shí)間開銷并降低了計(jì)算復(fù)雜度。邊緣傾角值計(jì)算如下:
fγ(u,v)=
(10)
其中:
(11)
(u,v)為場(chǎng)景圖像中邊緣點(diǎn)的像素坐標(biāo);G(i,j)為場(chǎng)景灰度圖像中像素坐標(biāo)為(i,j)(i,j)處的像素點(diǎn)灰度值;Gx(u,v)和Gy(u,v)分別為場(chǎng)景圖像中像素坐標(biāo)為(i,j)(i,j)處的像素點(diǎn)x方向和y方向的梯度值;sxji和syji分別為Sobel算子x方向模板sx和y方向模板sy中的第j行第i列的元素,
(12)
獲得場(chǎng)景圖像邊緣傾角信息后,參考文獻(xiàn)[16]的方法對(duì)場(chǎng)景距離圖像的像素值進(jìn)行加權(quán):
(1)對(duì)場(chǎng)景邊緣圖像進(jìn)行分層,將場(chǎng)景邊緣圖像按其邊緣傾角分為4層圖像,包括傾角范圍為[0,π/8)∪[7π/8,π][0,π/8)∪[7π/8,π],[π/8,3π/8),[3π/8,5π/8),[5π/8,7π/8)的邊緣點(diǎn),對(duì)場(chǎng)景邊緣圖像7a分層的效果如圖7b~圖7e所示。
(2)對(duì)每層圖像采用標(biāo)準(zhǔn)距離變換算法[15]進(jìn)行距離變換。
(3)采用式(13)循環(huán)更新分層距離圖像1~分層距離圖像4的像素值,直到像素值不再發(fā)生改變,然后采用式(14)循環(huán)更新分層距離圖像4~分層距離圖像1的像素值,直到像素值不再發(fā)生改變。對(duì)圖7b~圖7e中的分層圖像進(jìn)行距離變換,并采用邊緣傾角加權(quán)后的圖像,其各分層圖像正中心8×8個(gè)像素的像素值所組成的矩陣如圖8a~圖8d所示。該8×8個(gè)像素僅用于說明圖像間的不同,實(shí)際應(yīng)用中需要用到全部像素的像素值。圖8a~圖8d分別對(duì)應(yīng)圖7b~圖7e經(jīng)加權(quán)后的距離圖像。
DT3(ui,vi,fi(fγ(ui,vi)))=
DT3(ui,vi,fi(fγ(ui,vi)))=
(14)
其中
(15)
fi(fγ(ui,vi))為fγ(ui,vi)對(duì)應(yīng)的分層圖像序號(hào);DT3(ui,vi,fi(fγ(ui,vi)))為第fi(fγ(ui,vi))層場(chǎng)景距離圖像中(ui,vi)像素坐標(biāo)處的距離值;λ為加權(quán)系數(shù);Δγ為每層分層圖像所包含邊緣的邊緣傾角范圍。
考慮到圖像邊緣提取步驟和邊緣傾角信息對(duì)距離值加權(quán)步驟都屬于任務(wù)簡單計(jì)算密集型操作,可以將每個(gè)像素點(diǎn)的像素值計(jì)算過程映射為一個(gè)線程,并置于一個(gè)GPU(graphic processing unit)流處理器中處理,利用GPU中流處理器數(shù)量眾多的優(yōu)勢(shì)進(jìn)行并行處理,從而有效減少每幀場(chǎng)景圖像的處理時(shí)間,保證算法的實(shí)時(shí)性。
虛擬零件圖像與場(chǎng)景圖像間的匹配度值計(jì)算公式為
fi(arctan(vdi/udi)))。
(16)
式中arctan(vdi/udi)為虛擬零件圖像中邊緣點(diǎn)的邊緣傾角值,采用式(15)確定要使用的加權(quán)圖像序號(hào)。fdγ(U,V)值越小,說明虛擬零件圖像與場(chǎng)景圖像間的匹配度越高。
對(duì)初始幀圖像搜索最優(yōu)相機(jī)位姿時(shí)需要在全局解空間內(nèi)搜索最優(yōu)解,而對(duì)后續(xù)幀搜索最優(yōu)相機(jī)位姿時(shí),由于相對(duì)于前一幀圖像,相機(jī)位姿變化較小,僅需要在局部解空間進(jìn)行搜索。當(dāng)已知上一幀圖像的相機(jī)位姿后,可以采用局部搜索能力較強(qiáng)的禁忌搜索算法[17]進(jìn)行相機(jī)位姿跟蹤??紤]到禁忌搜索算法結(jié)果的優(yōu)劣受初始解影響,為了保證后續(xù)幀連續(xù)跟蹤注冊(cè)的效果,需要提供準(zhǔn)確性較高的初始幀相機(jī)位姿。采用遺傳算法搜索初始幀圖像的最優(yōu)相機(jī)位姿時(shí),由于其局部搜索能力較差[18],導(dǎo)致搜索效率低、結(jié)果準(zhǔn)確性差。為彌補(bǔ)上述遺傳算法的不足,采用差分進(jìn)化算法[19]改進(jìn)遺傳算法中的交叉算子,豐富個(gè)體的多樣性,增大搜索到優(yōu)質(zhì)解的概率,并采用禁忌搜索算法對(duì)變異算子進(jìn)行改進(jìn),來提高算法的局部搜索能力;引入禁忌表使交叉算子具有記憶功能,避免迂回搜索,從而提高搜索效率。改進(jìn)后的遺傳算法流程圖如圖9所示,具體步驟如下:
步驟1初始化虛擬零件圖像種群。在解空間內(nèi)隨機(jī)生成第0代虛擬零件圖像種群
X(0)={X1(0),X2(0),…,XNP(0)}。
(17)
其中
Xi(0)=(umi(0),vmi(0),dmi(0),
θi(0),φi(0),ωi(0))。
(18)
每個(gè)虛擬零件圖像個(gè)體可以根據(jù)第3章中的方法生成一張?zhí)摂M零件圖像,將虛擬零件圖像種群中的虛擬零件圖像個(gè)體記入禁忌表TR。
步驟2編碼。采用實(shí)數(shù)編碼法對(duì)初始虛擬零件圖像種群X(0)進(jìn)行編碼。
步驟3適應(yīng)度值計(jì)算。適應(yīng)度函數(shù)可根據(jù)3.1節(jié)的內(nèi)容表示為
F(U,V(Xi(0)))=fdγ(U,V(Xi(0)))
(19)
式中V(Xi(0))為由Xi(0)生成的虛擬零件圖像。
步驟4選擇操作。采用輪盤賭選擇策略生成第G代虛擬零件圖像種群Xi(G),生成0~1間均勻分布的隨機(jī)數(shù)φ,采用式(20)保留父代虛擬零件圖像個(gè)體,重復(fù)選擇直到子代達(dá)到虛擬零件圖像種群規(guī)模NP。
(20)
步驟5交叉操作。采用差分進(jìn)化算法并融入禁忌算法的記憶功能改進(jìn)交叉操作,具體步驟如下:
(1)隨機(jī)生成3個(gè)值φ1,φ2,φ3∈1,2,3,…,NP,且φ1≠φ2≠φ3≠i,對(duì)X(G)中的虛擬零件圖像個(gè)體采用式(21)進(jìn)行變換,生成新虛擬零件圖像個(gè)體,并放入與X(G-1)相同規(guī)模的虛擬零件圖像種群V(G)中,μ為縮放因子。
Vi(G)=Xφ1(G)+μ(Xφ2(G)-Xφ3(G))。
(21)
(2)生成與X(G)相同規(guī)模的虛擬零件圖像種群U(G),采用式(22)確定U(G)中每個(gè)虛擬零件圖像個(gè)體的基因。
(22)
式中:Ui(G)[j]為虛擬零件圖像種群Ui(G)第i個(gè)虛擬零件圖像個(gè)體中的第j個(gè)基因;φ為0~1間均勻分布的隨機(jī)數(shù);jr為1~6的隨機(jī)整數(shù)。
(3)計(jì)算U(G)中每個(gè)虛擬零件圖像個(gè)體的適應(yīng)度值,結(jié)合禁忌表,采用式(23)更新本代虛擬零件圖像種群X(G),并將未被禁忌的虛擬零件圖像個(gè)體記入禁忌表TR。
Xi(G)=
(23)
步驟6變異操作。當(dāng)待變異虛擬零件圖像的個(gè)體適應(yīng)度值高于閾值FH時(shí),采用傳統(tǒng)變異算子;當(dāng)待變異虛擬零件圖像個(gè)體適應(yīng)度值低于閾值FH時(shí),將待變異的虛擬零件圖像個(gè)體作為初始解,借助禁忌搜索算法搜索局部最優(yōu)值,禁忌搜索算法步驟如下:
(4)判斷迭代次數(shù)g是否到達(dá)最大迭代次數(shù)gmax,如果沒有達(dá)到,則被禁忌的虛擬零件圖像個(gè)體禁忌長度Tl減1,并重復(fù)執(zhí)行(2)~(4).
步驟7判斷迭代次數(shù)G是否到達(dá)最大迭代次數(shù)Gmax,或者最優(yōu)虛擬零件圖像個(gè)體的適應(yīng)度值是否低于閾值FE,如果沒有,則重復(fù)執(zhí)行步驟4~步驟7。
分別采用遺傳算法和改進(jìn)的遺傳算法對(duì)圖10中的弱紋理零件進(jìn)行初始幀相機(jī)最優(yōu)位姿搜索,記錄適應(yīng)度值隨迭代次數(shù)變化的情況,結(jié)果如圖11所示,圖中縱坐標(biāo)為最優(yōu)虛擬零件圖像個(gè)體的適應(yīng)度值,橫坐標(biāo)為算法迭代次數(shù)??梢钥闯?,改進(jìn)的遺傳算法能夠快速搜索到全局最優(yōu)解,而遺傳算法經(jīng)過100次迭代仍未搜索到最優(yōu)值。采用遺傳算法與改進(jìn)的遺傳算法對(duì)初始幀進(jìn)行跟蹤注冊(cè)的效果分別如圖12a和圖12b所示。
經(jīng)過實(shí)驗(yàn)測(cè)試,改進(jìn)的遺傳算法經(jīng)過100次迭代需要6.25 s。由于初始幀相機(jī)位姿的計(jì)算時(shí)間較長,實(shí)際應(yīng)用中可以借助相機(jī)支架固定相機(jī)在零件坐標(biāo)系中的位姿,當(dāng)視頻圖像中出現(xiàn)虛實(shí)融合效果時(shí),說明已經(jīng)獲得較好的初始幀相機(jī)位姿,之后便可以移動(dòng)相機(jī),從任意視角觀察虛實(shí)融合場(chǎng)景。
采用禁忌搜索算法作為后續(xù)幀的最優(yōu)相機(jī)位姿搜索算法,同時(shí)逐步縮小搜索鄰域,在保證搜索結(jié)果準(zhǔn)確度的前提下提高搜索效率。適應(yīng)度函數(shù)與初始幀最優(yōu)相機(jī)位姿搜索算法中的適應(yīng)度函數(shù)相同,以上一幀圖像生成時(shí)的相機(jī)位姿作為禁忌搜索算法的初始解,并執(zhí)行步驟6(1)~步驟6(4)進(jìn)行局部搜索,經(jīng)過25次迭代收斂,得到準(zhǔn)確的相機(jī)位姿參數(shù)。同時(shí)為了保證跟蹤注冊(cè)的實(shí)時(shí)性,采用GPU加速的方法并行對(duì)虛擬零件圖像種群中的虛擬零件圖像個(gè)體進(jìn)行禁忌判斷和適應(yīng)度計(jì)算。
基于圖像匹配的增強(qiáng)現(xiàn)實(shí)跟蹤注冊(cè)算法使用DELL筆記本,處理器為因特爾酷睿i7-8750H處理器,主頻為2.20 GHz,運(yùn)行內(nèi)存為8 GB,顯卡為NVIDIA Geforce GTX 1060。實(shí)驗(yàn)中的彩色圖像分辨率為640×480。為了驗(yàn)證算法的有效性,分別在正常環(huán)境和雜亂環(huán)境對(duì)圖8中的目標(biāo)零件進(jìn)行連續(xù)跟蹤注冊(cè),跟蹤注冊(cè)效果如圖13所示。
圖13a~圖13c為正常環(huán)境下連續(xù)跟蹤注冊(cè)的結(jié)果,分別為該段視頻流中的第2幀、第300幀和第600幀圖像;圖13d~圖13f分別為雜亂環(huán)境下連續(xù)跟蹤注冊(cè)的結(jié)果,分別為該段視頻流中的第2幀、第300幀和第600幀圖像。獲取這兩段視頻流時(shí)相機(jī)的運(yùn)行速度大致為0.02 m/s,且不存在遮擋或目標(biāo)在圖像中不完整的情況,本文不考慮此類情況??梢钥闯?,連續(xù)跟蹤階段僅使用禁忌搜索算法可以獲得準(zhǔn)確的相機(jī)位姿,具有良好的跟蹤注冊(cè)效果。
為了衡量基于圖像匹配的跟蹤注冊(cè)算法對(duì)不同應(yīng)用對(duì)象的跟蹤注冊(cè)精度,選取形狀、尺度不同的應(yīng)用對(duì)象進(jìn)行實(shí)驗(yàn)。采用ARToolKit中基于標(biāo)識(shí)物的跟蹤注冊(cè)算法還原相機(jī)移動(dòng)的真實(shí)軌跡,并將基于圖像匹配的跟蹤注冊(cè)算法獲取的相機(jī)位姿與真實(shí)軌跡進(jìn)行比較,標(biāo)識(shí)物與零件的位置關(guān)系如圖12所示。實(shí)驗(yàn)時(shí),對(duì)圖14中的3種場(chǎng)景進(jìn)行視頻錄制,對(duì)場(chǎng)景視頻中的每幀圖像分別采用基于圖像匹配的方法和文獻(xiàn)[20]中基于ORB(oriented FAST and rotated BRIEF)方法計(jì)算相機(jī)位姿,并與基于二維標(biāo)識(shí)物的跟蹤注冊(cè)方法還原的相機(jī)位姿進(jìn)行比較,在參數(shù)設(shè)置相同的情況下,平均誤差結(jié)果如表1所示??梢钥闯?,基于圖像匹配的方法在x,y,z方向上的跟蹤誤差可以控制在2 mm左右,而繞x,y,z軸的旋轉(zhuǎn)角度誤差可以控制在1°左右;基于圖像匹配的方法在對(duì)零件1和零件3進(jìn)行跟蹤注冊(cè)時(shí),精度優(yōu)于基于ORB的方法,然而對(duì)于零件2,由于可提取的特征點(diǎn)較少,基于ORB的方法無法獲得有效的相機(jī)位姿參數(shù),本文方法則可以獲得準(zhǔn)確的相機(jī)參數(shù)。
表1 算法精度對(duì)比表
對(duì)圖14中的3種零件進(jìn)行跟蹤注冊(cè)時(shí),每幀圖像的平均處理時(shí)間分別為25.65 ms,23.59 ms,23.61 ms,能夠滿足增強(qiáng)現(xiàn)實(shí)系統(tǒng)的實(shí)時(shí)性要求。將每幀圖像的平均處理時(shí)間分為邊緣提取、生成分層加權(quán)距離圖像和啟發(fā)式算法3部分,各部分耗時(shí)如表2所示。
表2 算法的各部分耗時(shí) ms
通過上述實(shí)驗(yàn)可以證明,本文基于圖像匹配的跟蹤注冊(cè)方法對(duì)弱紋理零件具有較好的跟蹤注冊(cè)效果,能夠?qū)崟r(shí)滿足增強(qiáng)現(xiàn)實(shí)系統(tǒng)的要求,并對(duì)雜亂環(huán)境具有一定的魯棒性。
本文提出一種基于圖像匹配的跟蹤注冊(cè)方法,能夠在不縮小搜索空間的前提下,以較少的計(jì)算量搜素到最優(yōu)相機(jī)位姿。該方法通過在場(chǎng)景圖像距離變換過程中引入邊緣原傾角對(duì)距離值進(jìn)行加權(quán),提高了圖像匹配度計(jì)算的準(zhǔn)確性,并結(jié)合改進(jìn)的遺傳禁忌算法和禁忌搜索算法,保證了跟蹤注冊(cè)的準(zhǔn)確性與實(shí)時(shí)性。為驗(yàn)證該方法的跟蹤注冊(cè)效果并分析其跟蹤精度和實(shí)時(shí)性,進(jìn)行了相關(guān)實(shí)驗(yàn)。實(shí)驗(yàn)表明,基于圖像匹配的跟蹤注冊(cè)算法精度與基于標(biāo)識(shí)物的跟蹤注冊(cè)算法接近,能夠滿足增強(qiáng)現(xiàn)實(shí)系統(tǒng)的實(shí)時(shí)性要求,對(duì)雜亂環(huán)境具有一定的魯棒性,可以用于弱紋理零件的跟蹤注冊(cè)。然而,雖然本文方法不考慮遮擋或目標(biāo)在圖像中不完整的情況,但是在實(shí)際使用過程中有可能會(huì)出現(xiàn)這種情況,從而影響跟蹤注冊(cè)效果,未來將對(duì)其進(jìn)行進(jìn)一步研究,以提高跟蹤注冊(cè)算法針對(duì)遮擋或目標(biāo)不完整情況的魯棒性。