王 安 王芳榮 郭柏蒼 岳欣羽
1(吉林大學(xué)中日聯(lián)誼醫(yī)院 吉林 長(zhǎng)春 130022)2(吉林大學(xué)通信工程學(xué)院 吉林 長(zhǎng)春 130022)3(吉林大學(xué)交通學(xué)院 吉林 長(zhǎng)春 130022) 4(吉利汽車研究院(寧波)有限公司 浙江 寧波 315336)
隨著社會(huì)自動(dòng)化進(jìn)程的加快,汽車已經(jīng)融入到我們的日常生活中,成為了我們生活中不可或缺的代步工具,同時(shí)汽車的數(shù)量每年在不斷提升。所以人、汽車、路之間的矛盾也日益突顯出來(lái),相應(yīng)的智能輔助駕駛應(yīng)運(yùn)而生。雙目立體視覺(jué)智能輔助駕駛可以檢測(cè)車輛前方的景象的深度信息,包括前方一定距離內(nèi)的障礙物及其距離和高度等,進(jìn)行預(yù)警或者提醒駕駛員采取相應(yīng)的安全措施。在雙目立體視覺(jué)研究領(lǐng)域,立體匹配獲取視差圖是一項(xiàng)必不可少的步驟,同時(shí)也是立體視覺(jué)中核心問(wèn)題。所以視差圖質(zhì)量的好壞直接影響了場(chǎng)景信息能否實(shí)時(shí)穩(wěn)定有效地被獲取出來(lái),實(shí)現(xiàn)二維信息到三維信息的轉(zhuǎn)換?;谝陨媳尘?,國(guó)內(nèi)外很多學(xué)者在視差圖獲取算法上投入了大量的精力,取得了一定成績(jī)。目前立體匹配算法主要分為局部立體匹配方法和全局立體匹配方法。
局部立體匹配方法通過(guò)選擇支持窗口選擇相似度最大的匹配像素。文獻(xiàn)[1-2]對(duì)支持窗口的尺寸與形狀估計(jì)視差值進(jìn)行了研究,但是由于這種方法需要確定的參數(shù)眾多,會(huì)增加計(jì)算匹配工作量。針對(duì)這一問(wèn)題,使用局部匹配算法可以提高計(jì)算速度,在一定程度上可以改善匹配搜索問(wèn)題。然而,上述算法的共同缺陷是局部支持窗口沒(méi)有通用的尺寸。
全局匹配方法通過(guò)尋找全局函數(shù)的最小值得到能量函數(shù)的最優(yōu)解。傳統(tǒng)的動(dòng)態(tài)規(guī)劃立體匹配算法的實(shí)時(shí)性較差且匹配效果并不理想,文獻(xiàn)[3-4]分別使用了金字塔雙層動(dòng)態(tài)規(guī)劃立體匹配算法和馬爾科夫網(wǎng)絡(luò)進(jìn)行全局立體匹配。其結(jié)果表明,全局立體匹配算法的效果比局部立體匹配方法更好,然而,較慢的匹配速度不能很好的用于實(shí)時(shí)立體匹配。
本文選擇Canny算子、Sobel算子以及Scharr邊緣檢測(cè)算法分別對(duì)圖像進(jìn)行預(yù)處理,選取邊緣特征為約束,通過(guò)利用BM立體匹配算法、SGBM立體匹配算法以及DP算法進(jìn)行立體匹配,獲取視差圖。分別計(jì)算視差圖的錯(cuò)誤匹配率,選取使視差圖優(yōu)化效果最好的組合,評(píng)價(jià)該方法的可行性與可靠性。
完成立體匹配前一般要完成匹配代價(jià)計(jì)算和匹配代價(jià)聚合[5-8]。常見(jiàn)的匹配代價(jià)計(jì)算就是Census變換,在目標(biāo)圖像中選取任意一點(diǎn),以該點(diǎn)為中心構(gòu)造3×3的矩形窗口,令窗口中除中心點(diǎn)之外的每個(gè)像素都與中心點(diǎn)進(jìn)行比較,灰度值小于中心像素的記為1,大于的記為0,產(chǎn)生了由1和0構(gòu)成的Census序列。經(jīng)過(guò)Census變換后的圖像通過(guò)漢明距離計(jì)算相似度,該值越小,相似度越高。匹配代價(jià)聚合主要應(yīng)用支持窗口的聚合方法,將支持窗內(nèi)像素的代價(jià)相加或平均作為中心像素的匹配代價(jià)。常用的支持窗口法有自適應(yīng)窗口法和移動(dòng)窗口法。支持窗包含二維和三維。二維支持窗口需要事先將視差固定,然后計(jì)算代價(jià)聚合。完成之后采用勝者為王算法即最小代價(jià)對(duì)應(yīng)的視差作為所要求的視差。該算法主要應(yīng)用與局部匹配算法。針對(duì)全局匹配算法,基于全局的立體匹配方法是同時(shí)優(yōu)化所有像素的視差,聚焦在優(yōu)化技術(shù)上面,該方法效果好但非常耗時(shí),因此會(huì)跳過(guò)代價(jià)聚合的步驟。得到視差圖之后,需要將視差圖細(xì)化,該步驟在過(guò)去大部分的立體匹配研究都是被忽略的。傳統(tǒng)的方法主要包括左右一致性檢測(cè)和中值濾波方法[9]。文獻(xiàn)[10]提出了基于雙邊濾波的加權(quán)中值濾波方法,該方法使得到的視差圖變得更加清晰,但是由于該濾波器比較復(fù)雜,導(dǎo)致嚴(yán)重耗時(shí),降低了局部聚合的速度。
半全局匹配算法SGBM主要源于SGM算法[11-12]。SGM算法是由H.Hirschmuller提出的,該算法只考慮圖像中非遮擋點(diǎn),將每個(gè)像素點(diǎn)產(chǎn)生的視差,組成一個(gè)視差圖。通過(guò)構(gòu)建一個(gè)能量函數(shù),優(yōu)化得到最小值,從而得到每個(gè)像素視差的最優(yōu)值。能量函數(shù)表示如下:
(1)
式中:D為視差圖,E(D)為能量函數(shù),p、q代表圖像中的像素,Np代表像素P的8連通區(qū)域的相鄰像素,C(p,Dp)表示當(dāng)像素p的視差為Dp時(shí)的匹配代價(jià)。P1是相鄰像素點(diǎn)視差增減1的懲罰系數(shù),P2是相鄰像素點(diǎn)視差變化大于1的懲罰系數(shù),且P2要大于P1。對(duì)于函數(shù)T[·],如果函數(shù)內(nèi)的值為真,返回1,否則返回0。
與SGM方法相比,SGBM算法是半全局塊匹配算法,在計(jì)算匹配代價(jià)函數(shù)時(shí),采用塊匹配方法(SAD算法)。SGBM算法沒(méi)有采用基于互熵信息的匹配代價(jià)方法,增加了預(yù)處理算法。BM算法和SGBM算法都采用SAD(sum of absolute differences)方法進(jìn)行匹配代價(jià)聚合。SAD方法可表示如下:
SAD(u,v)=Sum{|left(u,v)-right(u,v)|}
(2)
SAD窗口的大小,決定了誤匹配的大小和匹配效率,在完成以上步驟時(shí),就可以獲取視差圖了。在選定的范圍內(nèi)選取代價(jià)聚合的最小值的點(diǎn)作為對(duì)應(yīng)匹配點(diǎn)。
BM算法在進(jìn)行匹配時(shí), 采用壞字符算法和好后綴算法即從右向左比較的方法,同時(shí)引入兩種啟發(fā)式跳轉(zhuǎn)規(guī)則決定模板向右移動(dòng)的步長(zhǎng)[13]。其基本原理可以表述為:設(shè)文本串P為待匹配的圖像灰度數(shù)據(jù),文本Q為用于去匹配的模版,將P與Q對(duì)齊,從右至左依次比較,如圖1所示。

圖1 文本串P與模版串Q進(jìn)行匹配
若是兩者比較不匹配時(shí),BM算法就采用好后綴與壞字符算法計(jì)算Q的移動(dòng)步長(zhǎng),直至匹配結(jié)束,如圖2所示。

圖2 壞字符與好后綴匹配
可以看出由箭頭連接的B和E均為壞字符,加大字部分CAB為好后綴。
動(dòng)態(tài)規(guī)劃最初是優(yōu)化決策過(guò)程的數(shù)學(xué)方法,核心思想就是將整體分割成若干個(gè)子任務(wù),求解全局最優(yōu)。當(dāng)前階段的最優(yōu)決策與前面階段無(wú)關(guān),僅是基于當(dāng)前狀態(tài)。通過(guò)將整體復(fù)雜問(wèn)題分解成若干單一簡(jiǎn)單的問(wèn)題,降低復(fù)雜度[14]。傳統(tǒng)的動(dòng)態(tài)規(guī)劃方法是在水平方向進(jìn)行掃描從而尋找最優(yōu)路徑,以圖像的水平方向?yàn)闄M坐標(biāo),視差值為縱坐標(biāo),將立體匹配分解為若干階段,每個(gè)x坐標(biāo)點(diǎn)對(duì)應(yīng)一個(gè)階段,之后再將各個(gè)階段用不同的狀態(tài)表示且狀態(tài)的選擇要滿足無(wú)后向性。在同一極線上按照從左至右的順序依次計(jì)算,求取相似性度量函數(shù)和平滑函數(shù)的最小值,最后找出使全局能量函數(shù)最小的匹配路徑。
全局能量函數(shù)表示如下:
E(d)=E(data)+E(smooth)
(3)
(4)
(5)
式中:E(data)為圖像數(shù)據(jù)約束項(xiàng),表示匹配點(diǎn)的相似性。E(smooth)為相鄰像素點(diǎn)間的平滑約束項(xiàng),表示相鄰點(diǎn)之間的連續(xù)性。m(px,y,d)表示左像素點(diǎn)與視差d的右像素點(diǎn)的匹配代價(jià)函數(shù)。N是相鄰像素對(duì)的集合,dp、dq分別表示像素p和q的視差,平滑項(xiàng)S(dp,dq)為相鄰像素p和q間的平滑約束。
(1) 分別使用Canny邊緣檢測(cè)算子、Sobel邊緣檢測(cè)算子和Scharr濾波器對(duì)圖像對(duì)進(jìn)行邊緣檢測(cè)。
(2) 將執(zhí)行步驟(1)得到的圖像以邊緣特征為約束,分別使用BM算法、DP算法、SGBM算法進(jìn)行立體匹配。
(3) 設(shè)定誤差閾值,然后對(duì)每組方法得到的視差圖進(jìn)行誤匹配率計(jì)算,同時(shí)計(jì)算匹配時(shí)間。
(4) 通過(guò)對(duì)比不同邊緣檢測(cè)算法與不同立體匹配算法組合的結(jié)果,選取一種精度與速度相對(duì)最優(yōu)的組合算法。
Middlebury提供了很多標(biāo)準(zhǔn)測(cè)試庫(kù),本文在該庫(kù)中選擇了幾組校正后的圖像對(duì)參與實(shí)驗(yàn)。本文整體是在Opencv和Matlab軟件環(huán)境下進(jìn)行試驗(yàn),利用Opencv對(duì)圖像進(jìn)行立體匹配,利用Matlab編寫(xiě)計(jì)算誤匹配率程序,計(jì)算誤匹配率。本文采用三種立體匹配算法求取視差圖,通過(guò)在不同匹配算法下對(duì)比不同的邊緣檢測(cè)方法,找出精度與速度俱佳的搭配方法。針對(duì)匹配質(zhì)量,利用誤匹配率P進(jìn)行評(píng)價(jià),表達(dá)式如下:
(6)
式中:N代表圖像像素?cái)?shù),dc(x,y)是計(jì)算得到的視差圖,dt(x,y)是真實(shí)視差圖,δd是誤差閾值,通常取1。該指標(biāo)反映在一定誤差閾值內(nèi),兩幅圖像匹配所得視差圖的誤差占整幅圖像的比重,可以客觀地反映出立體匹配質(zhì)量的好壞。
圖3-圖5分別是cones圖、teddy圖和venus圖經(jīng)過(guò)Scharr邊緣檢測(cè)、Sobel邊緣檢測(cè)以及Canny邊緣檢測(cè)得到的效果圖,其中Sobel算子選用內(nèi)核大小為3。

(a) Scharr檢測(cè) (b) Sobel檢測(cè) (c) Canny檢測(cè)圖3 三種檢測(cè)方法在cones圖應(yīng)用

(a) Scharr檢測(cè) (b) Sobel檢測(cè) (c) Canny檢測(cè)圖4 三種檢測(cè)方法在teddy圖應(yīng)用

(a) Scharr檢測(cè) (b) Sobel檢測(cè) (c) Canny檢測(cè)圖5 三種檢測(cè)方法在venus圖應(yīng)用
圖6為標(biāo)準(zhǔn)視差圖,圖7-圖9為基于BM算法、DP算法、SGBM算法得到的原圖視差圖。通過(guò)誤差匹配率計(jì)算各組圖片的匹配質(zhì)量,結(jié)果如表1-表6所示。

(a) cones (b) teddy (c) venus圖6 標(biāo)準(zhǔn)視差圖

(a) cones (b) teddy (c) venus圖7 基于BM算法的得到原圖視差圖

(a) cones (b) teddy (c) venus圖8 基于DP算法得到原圖視差圖

(a) cones (b) teddy (c) venus圖9 基于SGBM算法得到原圖視差圖

%

表2 基于BM算法匹配時(shí)間 s

表3 基于DP算法匹配誤差率 %

表4 基于DP算法匹配時(shí)間 s

表5 基于SGBM算法匹配誤差率 %

表6 基于SGBM算法匹配時(shí)間 s
表1、表3、表5分別記錄了在BM算法、DP算法、SGBM算法下,經(jīng)過(guò)邊緣提取的圖像對(duì)立體匹配后視差圖的誤匹配率。從誤匹配率方面觀察,三種方法經(jīng)過(guò)邊緣檢測(cè)后視差圖的誤匹配率均在一定程度上有所降低。
表2、表4、表6分別顯示了基于以上三種算法立體匹配算法進(jìn)行立體匹配所消耗時(shí)間。時(shí)間數(shù)據(jù)顯示BM算法和SGBM算法經(jīng)過(guò)邊緣特征提取之后,匹配時(shí)間都縮短了很多,然而DP算法時(shí)間卻在處理部分圖像時(shí)增加了少許。我們可以得到結(jié)論,速度上,BM算法最好,SGBM算法一般,DP算法最慢。精度上,SGBM算法最好,DP算法較好,BM算法最差。
對(duì)比三種邊緣檢測(cè)算子,通過(guò)三種立體匹配算法的實(shí)驗(yàn)可以得出,采用BM立體匹配算法,速度和精度上,Canny算法最好,Scharr算法一般,Sobel算法最差。采用DP立體匹配算法,速度上,Canny算法最快,Sobel算法一般,Scharr算法最慢,精度上,Canny算法最好,Scharr算法一般,Sobel算法最差。采用SGBM立體匹配算法,速度和精度上Canny算法最快,Scharr算法和Sobel算法效果相似。通過(guò)六組試驗(yàn),我們可以總結(jié)得出在精度和速度上,Canny邊緣檢測(cè)與其他兩種邊緣檢測(cè)算法相比存在明顯優(yōu)勢(shì)。Scharr濾波器在性能上略強(qiáng)于Sobel檢測(cè)算子。
基于以上分析,以邊緣信息為匹配基元進(jìn)行立體匹配可以大幅度提高匹配的精度和速度,在一定程度上可以改善視差圖的匹配質(zhì)量,為后續(xù)場(chǎng)景重建與還原有著至關(guān)重要的輔助作用。
針對(duì)三種匹配算法,我們得出了如下結(jié)論:傳統(tǒng)的DP算法在匹配精度和速度方面介于BM算法和SGBM算法之間,在大多是情景中可以使用的,但是得到視差圖會(huì)存在條紋;SGBM算法適用于效果好和實(shí)時(shí)性要求相對(duì)較高的情景,如零部件生產(chǎn)線實(shí)時(shí)檢測(cè)和醫(yī)學(xué)圖像處理等領(lǐng)域;BM算法速度快但是精度較差,適用于精度要求不是特別高同時(shí)要滿足很高實(shí)時(shí)性的情景,如目標(biāo)實(shí)時(shí)跟蹤和監(jiān)控等。通過(guò)上文分析得出,SGBM算法搭配Canny邊緣檢測(cè)算子在處理速度和精度上存在明顯優(yōu)勢(shì)。
本文利用KITTI數(shù)據(jù)庫(kù)中選取幾幅道路場(chǎng)景下的代表性圖片,進(jìn)行測(cè)試與驗(yàn)證。通過(guò)對(duì)比匹配誤差率和匹配時(shí)間,判斷在不同邊緣檢測(cè)方法下獲取視差圖的好壞程度,選取一種處理效果相對(duì)好的方法,為接下來(lái)的研究奠定基礎(chǔ)。圖10為選取四幅真實(shí)場(chǎng)景圖。表7-表10分別記錄了四幅圖片經(jīng)過(guò)三種邊緣檢測(cè)算法后基于SGBM算法得到視差圖需要的匹配時(shí)間和誤匹配率。

(a) (b)

(c) (d)圖10 KITTI數(shù)據(jù)庫(kù)中不同場(chǎng)景圖

圖像匹配誤差率/%匹配時(shí)間/ms原圖20.53738.233Scharr19.98740.721Sobel20.60751.504Canny11.77715.801

表8 圖10(b)基于SGBM算法的視差圖誤匹配率和匹配時(shí)間

表9 圖10(c)基于SGBM算法的視差圖誤匹配率和匹配時(shí)間

表10 圖10(d)基于SGBM算法的視差圖誤匹配率和匹配時(shí)間
結(jié)合以上試驗(yàn),可以得出在三種檢測(cè)方法中,與Canny檢測(cè)算法結(jié)合后得到的視差圖匹配質(zhì)量最高,同時(shí)花費(fèi)的匹配時(shí)間較短。對(duì)于其他兩種檢測(cè)方法來(lái)說(shuō),效果不是特別穩(wěn)定,匹配質(zhì)量與匹配時(shí)間不一定同時(shí)都得到了優(yōu)化,有的是以犧牲實(shí)時(shí)性來(lái)提高精度或者以犧牲匹配質(zhì)量來(lái)加快匹配的速度。
本文利用Canny檢測(cè)算法、Scharr檢測(cè)算法和Sobel算法對(duì)圖像進(jìn)行邊緣提取,分別使用BM、SGBM和DP立體匹配算法對(duì)圖像進(jìn)行立體匹配,同時(shí)記錄匹配時(shí)間和視差圖誤匹配率。經(jīng)分析,經(jīng)過(guò)以邊緣特征為基元的立體匹配較未經(jīng)過(guò)任何處理的圖片在速度和精度都有所提高,該方法剔除了大量不相關(guān)的信息,提高了立體匹配的可靠性。通過(guò)真實(shí)場(chǎng)景圖進(jìn)行驗(yàn)證,選擇Canny檢測(cè)算法結(jié)合SGBM立體匹配算法優(yōu)化視差圖效果最好,提高了視差圖的質(zhì)量。