陳 炎,楊麗麗,王振鵬
(中國農(nóng)業(yè)大學(xué)信息與電氣工程學(xué)院,北京 100083)
立體視覺是機器認(rèn)識世界的重要手段。利用2幅圖像形成的視差可以計算得到像素點的深度,從而獲得三維的立體感知[1-2]。其工作流程主要包含4步:雙目標(biāo)定、圖像校正、立體匹配和三維重建,而立體匹配是關(guān)鍵的步驟[3]。
立體匹配算法可以實現(xiàn)2幅圖像像素級的匹配,在該過程中,由于存在光照不均勻、遮擋、模糊以及噪聲等的影響,給提升匹配精度帶來了巨大的挑戰(zhàn)[4]。在雙目視覺的應(yīng)用中,如自動駕駛、機器人等領(lǐng)域[5-6],需要具備實時、準(zhǔn)確的深度估計,因此對于系統(tǒng)的處理速度和精度提出了很高的要求。在以往的綜述性文章中[3,7-9],研究者們對基于人工特征算法的原理及性能進行了總結(jié),近年出現(xiàn)了許多基于深度學(xué)習(xí)的優(yōu)秀算法,其在實時性和準(zhǔn)確性上都有很大的提升。為了給相關(guān)研究人員提供參考,本文討論了各種立體匹配算法的發(fā)展,對基于深度學(xué)習(xí)和人工特征的算法特點加以分析,并給出了立體匹配算法的發(fā)展方向。
立體匹配算法實現(xiàn)流程主要分為4步:代價計算、代價聚合、視差計算和視差求精[7],流程如圖1所示。代價計算是對匹配區(qū)域像素點和參考區(qū)域進行相似度計算。由雙目相機的成像原理可知,人們只需要計算處于同一水平線上的左右圖像的像素相似值[10],這一要求基于對極約束[11]來實現(xiàn)。極約束在立體匹配中起重要作用,其將對應(yīng)關(guān)系的搜索限制為一行而不是整個圖像空間,從而減少了所需的時間和搜索范圍。代價聚合階段通過設(shè)置能量函數(shù),將中心像素點的相似度值用某個范圍內(nèi)的像素點代價計算結(jié)果替代。常用的相似性評價方法包括絕對差之和(sum of absolute difference, SAD)、平方差之和(sum of squared differences, SSD)、歸一化互相關(guān)(normalized cross correlation, NCC)、秩變換(rank transform, RT)和普查變換(census transform,CT)[9]。視差計算階段,可選取參考區(qū)域內(nèi)相似度最高的像素點來計算。視差求精的目的是減少錯誤匹配的像素點,優(yōu)化視差圖。優(yōu)化步驟包括正則化和遮擋填充或插值[12]。
圖1 立體匹配算法流程Fig. 1 The framework of stereo matching algorithm
按照代價函數(shù)約束范圍的差別,立體匹配算法可分為全局匹配法和局部匹配法[8]。
全局匹配法的能量函數(shù)整合了圖像中的所有像素,以盡可能多地獲取全局信息。函數(shù)的表達式為
其中,Edata(D)為數(shù)據(jù)項,表示全部像素的匹配代價;Esmooth(D)為平滑項,表示相鄰像素對視差值的一致性;λ為權(quán)值參數(shù),取正值;Ed為全局能量函數(shù)。根據(jù)Ed優(yōu)化方法的不同,全局匹配法又可分為動態(tài)規(guī)劃法(dynamic programming, DP)、置信度傳播法(belief propagation, BP)和圖割法(graph cut, GC)[10]。
SUNG等[13]在求解Ed的過程中,應(yīng)用極線間的相關(guān)性,構(gòu)建了多路徑自適應(yīng)的動態(tài)規(guī)劃求解方法。LI等[14]為了緩解動態(tài)規(guī)劃法引起的橫條紋效應(yīng),從左側(cè)和右側(cè)圖像分別提取改進的SIFT算法描述作為特征點完成匹配,有效地減少了這一現(xiàn)象。LEUNG等[15]使用四叉樹對動態(tài)規(guī)劃進行快速迭代,提高了算法的運行速度。BLEYER和GELAUTZ[16]使用圖割法,假設(shè)深度均勻變化,且深度變化邊界與圖像特征邊界重合,在初始視差段聚集形成一組視差層,通過全局成本函數(shù)的最小化選取最佳視差層,在大規(guī)模無紋理區(qū)域取得了良好的匹配效果。LEMPITSKY等[17]設(shè)計了多重標(biāo)記的馬爾科夫隨機域圖形分割,提高了運行速度。WANG等[18]將圖形分割后的點分為可靠和不可靠點,在遮擋和無紋理區(qū)域的不可靠區(qū)域,使用可靠區(qū)域的迭代信息進行優(yōu)化,結(jié)果比經(jīng)典圖割法效率提高了90%。
局部匹配法將參考圖像分為若干圖像塊,再求取匹配圖像內(nèi)預(yù)期相似度最高的圖像塊,生成深度圖[19]。局部匹配法與全局匹配法相比,能量函數(shù)只有數(shù)據(jù)項,而沒有平滑項,因此只能求取局部最優(yōu)解[20]。算法原理如圖2所示,隨機選取左圖像中m×n的待匹配圖像塊,搜索右圖像視差(-d,d)的范圍,選取相似度最大的區(qū)域作為匹配單元。
圖2 局部立體匹配算法Fig. 2 Local stereo matching algorithm
局部匹配法帶來了效率上的提升,但由于缺乏全局參數(shù),生成的視差圖不甚理想。為了提升匹配效果,在代價計算階段可以使用更優(yōu)的方法。HIRSCHMULLER[21]提出了半全局匹配方法,主要包含2點:一是基于互信息匹配的分層計算,二是使用一維最優(yōu)求解全局能量函數(shù),半全局匹配在保證算法運行效率的同時大大提升了匹配效果。WANG和ZHENG[22]在構(gòu)建局部能量函數(shù)的過程中引入?yún)^(qū)域間的合作競爭機制,獲得了良好的視差效果。HOSNI等[23]提出在局部匹配時采用分割算法選取待匹配區(qū)域,可以提升視差圖的質(zhì)量,在分割選取待匹配區(qū)域時,以距離中心像素的遠近分配不同的權(quán)重,改善了分割效果。YOON等[24]針對各分割區(qū)域,提出了一個非線性的基于擴散的權(quán)重聚合方法,有效改善了遮擋區(qū)域匹配效果。ZHANG等[25]提出自適應(yīng)匹配的概念,并開發(fā)了具有任意自適應(yīng)形狀的支撐區(qū)域,實現(xiàn)了很高的匹配精度。
局部匹配算法在提升效果的同時,不可避免的會帶來效率上的降低。為此,DI等[26]在匹配中引入特征點選擇,為了進一步提高運算效率,匹配圖像中的特征點進行WTA匹配,非特征點只進行簡單驗證,提高了邊緣的匹配效果。MATSUO等[27]在匹配成本計算階段使用基于AD算法和Sobel算子的局部方法,通過多次迭代和JBF固定窗口生成了精確的視差圖。
手工設(shè)計的人工特征,缺乏對上下文信息的獲取,經(jīng)驗參數(shù)的選擇對匹配效果影響很大,不適合在復(fù)雜環(huán)境下應(yīng)用。深度學(xué)習(xí)通過卷積、池化、全連接等操作,對圖像進行非線性變換,可以提取圖像的多層特征用于代價計算,對提取的圖像特征進行上采樣過程中設(shè)置代價聚合和圖像增強方法,從而實現(xiàn)端到端的圖像匹配。深度學(xué)習(xí)的方法更多地利用了圖像的全局信息,通過預(yù)訓(xùn)練獲得模型參數(shù),提高了算法的魯棒性。用于立體匹配的圖像網(wǎng)絡(luò)主要可分為金字塔網(wǎng)絡(luò)、孿生網(wǎng)絡(luò)(siamese network)和生成對抗網(wǎng)絡(luò)。
為了保證輸入圖片尺寸的一致性,常常需要對圖片進行裁剪、縮放等操作。為了解決這個問題,HE等[28]在卷積層和全連接層之間設(shè)置空間金字塔池化層,將不同尺寸的圖片特征轉(zhuǎn)化為固定長度的表示,避免了卷積的重復(fù)計算,在圖像分割、圖像匹配等領(lǐng)域獲得了極大的提升效果。?BONTAR和LECUN[29]首次提出使用卷積神經(jīng)網(wǎng)絡(luò)提取圖像特征用于代價計算,設(shè)置跨成本交叉的代價聚合,運用左右一致性檢查消除錯誤的匹配區(qū)域,其標(biāo)志著深度學(xué)習(xí)開始成為立體匹配的重要手段。CHANG和CHEN[30]將金字塔池化模塊引入到特征提取中,使用多尺度分析和3D-CNN結(jié)構(gòu),有效地解決了梯度消失和梯度爆炸的問題,在弱紋理、遮擋、光照不均勻等條件下獲得了良好的效果。DUGGAL等[31]提出一種全新可微的Patch Match算法。首先獲得稀疏的視差圖,以減少代價計算的復(fù)雜度,再推算出剩余像素點的匹配范圍,并在KITTI和SceneFlow數(shù)據(jù)集上實現(xiàn)了每對圖片62 ms的匹配速度。TONIONI等[32]構(gòu)建了模塊化、輕量化的神經(jīng)網(wǎng)絡(luò),網(wǎng)絡(luò)子部分可獨立訓(xùn)練,使用無監(jiān)督算法模型,使網(wǎng)絡(luò)可以不斷更新,在不降低質(zhì)量的前提下,達到了每秒40幀的處理速度。GUO等[33]構(gòu)建了分組代價計算,ZHANG等[34]設(shè)計了半全局聚合層和局部引導(dǎo)聚合層,都可以代替3D卷積層,提高計算效率。
孿生網(wǎng)絡(luò)的概念最早由BROMLEY等[35]提出,其基本結(jié)構(gòu)如圖3所示。通過設(shè)置2個權(quán)重共享的卷積神經(jīng)網(wǎng)絡(luò),分別輸入左、右圖像,通過映射函數(shù)將卷積得到的特征轉(zhuǎn)化為特征向量,衡量2個特征向量間的L1距離就可以擬合2張圖片的相似度。文獻[36]對原有的孿生網(wǎng)絡(luò)進行了改進,使用RELU函數(shù)和小卷積核加深卷積層,提高了匹配精度。文獻[37]使用孿生網(wǎng)絡(luò)從左右圖像提取特征,首先在低分辨率的代價卷積中計算視差圖,再使用分層細化網(wǎng)絡(luò)引入高頻細節(jié),利用顏色輸入作為指導(dǎo),可以生成高質(zhì)量的邊界。LIU等[38]提出通過連接2個子網(wǎng)絡(luò)獲取多尺度特征。第1個子網(wǎng)絡(luò)由孿生網(wǎng)絡(luò)和3D卷積網(wǎng)絡(luò)構(gòu)成,可以生成低精度的視差圖;第2個子網(wǎng)絡(luò)是全卷積網(wǎng)絡(luò),將初始視差圖恢復(fù)成原始分辨率,2個網(wǎng)絡(luò)用金字塔池化進行連接。文獻[39]在低分辨率的視差圖上對深度不連續(xù)區(qū)域進行改進,在視差求精階段恢復(fù)成原始分辨率,取得了良好的效果。
圖3 孿生網(wǎng)絡(luò)結(jié)構(gòu)Fig. 3 Siamese network structure
在博弈論的基礎(chǔ)上,文獻[40]構(gòu)建了生成式對抗網(wǎng)絡(luò)(generative adversarial networks, GAN)。網(wǎng)絡(luò)由生成模型和判別模型構(gòu)成。生成模型學(xué)習(xí)樣本特征,生成圖像與原圖像相似,而判別模型則用來分辨“生成”圖片與真實圖片。這個過程不斷迭代運行,最終判別結(jié)果達到納什均衡,即真假概念均為0.5。PILZER等[41]提出了基于雙目視覺的GAN框架,其由2個生成子網(wǎng)絡(luò)和1個判別網(wǎng)絡(luò)構(gòu)成。2個生成網(wǎng)絡(luò)在對抗學(xué)習(xí)中分別被用來訓(xùn)練重建視差圖,通過相互制約和監(jiān)督,生成2個不同視角的視差圖,融合后輸出最終數(shù)據(jù)。實驗表明,這種無監(jiān)督模型在光照不均勻的條件下可以得到良好的效果。文獻[42]使用生成模型對遮擋區(qū)域進行處理,恢復(fù)得到了良好的視差效果。文獻[43]提出了深卷積生成對抗模型,可以通過相鄰幀獲得多幅深度圖,進一步改進了遮擋區(qū)域的深度圖效果。文獻[44]通過左右相機拍攝的2幅圖像,生成一幅全新的圖像,用于改進視差圖中匹配效果較差的部分,實驗表明,該方法對于光照強度較差的區(qū)域視差圖提升效果明顯。
目前,立體匹配算法主要有Middlebury和KITTI 2個測評數(shù)據(jù)集,主要對算法的誤匹配率和運行時間進行準(zhǔn)確的測評,并提供算法的排名。這2個數(shù)據(jù)集都構(gòu)建了標(biāo)準(zhǔn)的視差圖,可用于計算誤匹配率。KITTI提供了統(tǒng)一的云平臺運行算法,保證了算法運行時間測評的硬件一致性。
Middlebury[7,45-48]由卡內(nèi)基梅隆大學(xué)雙目實驗室創(chuàng)建,評價系統(tǒng)可以求取整張圖片、遮蔽和深度不連續(xù)區(qū)域的誤匹配率,并對提交的算法進行橫向?qū)Ρ扰琶?/p>
2011年,德國的卡爾斯魯厄理工學(xué)院和芝加哥豐田技術(shù)研究所聯(lián)合創(chuàng)立了Kitti立體匹配測試平臺,并在2015年進行了更新[49-50]。數(shù)據(jù)集包含車載相機采集的市區(qū)、鄉(xiāng)村和高速公路圖像,旨在為自動駕駛提供技術(shù)準(zhǔn)備和評估。
目前,立體匹配算法的主要評價標(biāo)準(zhǔn)為視差圖精度和時間復(fù)雜度。視差圖精度的評價指標(biāo)有誤匹配率,平均絕對誤差和均方誤差。誤匹配率的計算式為
其中,dc(x,y),dGT(x,y)分別為生成視差圖和真實視差圖的像素值;δd為評價閾值需設(shè)置,當(dāng)差值大于δd時,此像素記為誤匹配像素;N為視差圖的像素總數(shù)。平均絕對誤差式為
均方誤差的計算式為
其中,N為所有像素的總數(shù)和非遮擋區(qū)域的像素數(shù)量。
部分算法的評價結(jié)果見表1。
表1 部分立體匹配算法評價結(jié)果Table 1 Some stereo matching algorithm evaluating results
基于人工特征的立體匹配算法,將數(shù)學(xué)原理的發(fā)展廣泛應(yīng)用于實際需求,推動了雙目視覺系統(tǒng)在各行各業(yè)的應(yīng)用。其擁有完整的數(shù)學(xué)模型和方便可調(diào)的參數(shù),模型的可調(diào)整性和堆疊性較好,在魯棒性要求不高的應(yīng)用場景中,通過多次實驗,可以得到良好的視差效果[8,51-52]。
基于深度學(xué)習(xí)的立體匹配算法,可以提取更多的圖像特征用于代價計算。相比于人工特征,深度學(xué)習(xí)可以獲取更多的上下文信息,提高算法的魯棒性,使用GPU加速技術(shù),得到更快的處理速度[30]。在自動駕駛、機器人等領(lǐng)域,深度學(xué)習(xí)通過大量數(shù)據(jù)對網(wǎng)絡(luò)進行訓(xùn)練,可以獲得高精度的視差圖,滿足了精度和實時性的要求[32]。
人工特征中的局部匹配算法誤匹配率較高,一般在10%~30%之間[7],運行時間上最快的BM算法處理一對1432×1004大小的RGB圖片只需0.05 s,誤匹配率為32.45%[23],精度和速度平衡性較好的SGBM算法處理一對相同大小圖片用時大約為0.53 s,誤匹配率為18.36%[21]。全局匹配算法的精度比局部匹配法要高,誤匹配率一般在10%左右[7],但運行速度較低,處理圖像的時間較長。KITTI平臺中的精度排名最高的全局匹配算法誤匹配率為5.12%,運行時間達到65 s?;谏疃葘W(xué)習(xí)的匹配算法通過大量數(shù)據(jù)訓(xùn)練可以達到很高的精度,KITTI平臺中精度排名最高的深度學(xué)習(xí)算法誤匹配率只有1.41%,在僅使用單核CPU運算的條件下運行速度為0.52 s,表現(xiàn)出深度學(xué)習(xí)強大的應(yīng)用前景。對于基于人工特征和深度學(xué)習(xí)的匹配算法的特點總結(jié)見表2。
表2 算法特點對比Table 2 Comparison of algorithm features
立體匹配是實現(xiàn)雙目視覺的核心點,匹配的效果直接影響后續(xù)的目標(biāo)識別、三維建模等工作。
基于人工提取特征的立體匹配算法由于數(shù)學(xué)解釋性高,堆疊性好等優(yōu)點,目前廣泛應(yīng)用于固定場景的識別。通過多種方法進行融合,可以取得良好的效果。
基于深度學(xué)習(xí)的立體匹配算法已成為自動駕駛、機器人領(lǐng)域的主流,目前要解決的難題主要分為以下3個方面:
(1) 提高算法的實時性和準(zhǔn)確性。對于自動駕駛領(lǐng)域尤為重要,但目前算法在這2方面很難做到兼顧。
(2) 增強算法的魯棒性。深度學(xué)習(xí)算法受限于數(shù)據(jù)集的訓(xùn)練,這使得算法對于農(nóng)田、山地等陌生環(huán)境的匹配準(zhǔn)確率有所降低。
(3) 提高算法的適應(yīng)性?,F(xiàn)實世界中雨霧天氣下拍攝的圖像可能存在反光、模糊、噪聲等各種問題,這對算法提出了較高的要求。
人工特征的應(yīng)用有助于深度學(xué)習(xí)網(wǎng)絡(luò)的完善,而近年來,強化學(xué)習(xí)、圖神經(jīng)網(wǎng)絡(luò)等領(lǐng)域的不斷發(fā)展,也都為立體匹配算法的改進提供了參考。