王 安 王芳榮 郭柏蒼 岳欣羽
1(吉林大學(xué)中日聯(lián)誼醫(yī)院 吉林 長春 130022)2(吉林大學(xué)通信工程學(xué)院 吉林 長春 130022)3(吉林大學(xué)交通學(xué)院 吉林 長春 130022) 4(吉利汽車研究院(寧波)有限公司 浙江 寧波 315336)
隨著社會自動化進(jìn)程的加快,汽車已經(jīng)融入到我們的日常生活中,成為了我們生活中不可或缺的代步工具,同時汽車的數(shù)量每年在不斷提升。所以人、汽車、路之間的矛盾也日益突顯出來,相應(yīng)的智能輔助駕駛應(yīng)運(yùn)而生。雙目立體視覺智能輔助駕駛可以檢測車輛前方的景象的深度信息,包括前方一定距離內(nèi)的障礙物及其距離和高度等,進(jìn)行預(yù)警或者提醒駕駛員采取相應(yīng)的安全措施。在雙目立體視覺研究領(lǐng)域,立體匹配獲取視差圖是一項(xiàng)必不可少的步驟,同時也是立體視覺中核心問題。所以視差圖質(zhì)量的好壞直接影響了場景信息能否實(shí)時穩(wěn)定有效地被獲取出來,實(shí)現(xiàn)二維信息到三維信息的轉(zhuǎn)換?;谝陨媳尘?,國內(nèi)外很多學(xué)者在視差圖獲取算法上投入了大量的精力,取得了一定成績。目前立體匹配算法主要分為局部立體匹配方法和全局立體匹配方法。
局部立體匹配方法通過選擇支持窗口選擇相似度最大的匹配像素。文獻(xiàn)[1-2]對支持窗口的尺寸與形狀估計視差值進(jìn)行了研究,但是由于這種方法需要確定的參數(shù)眾多,會增加計算匹配工作量。針對這一問題,使用局部匹配算法可以提高計算速度,在一定程度上可以改善匹配搜索問題。然而,上述算法的共同缺陷是局部支持窗口沒有通用的尺寸。
全局匹配方法通過尋找全局函數(shù)的最小值得到能量函數(shù)的最優(yōu)解。傳統(tǒng)的動態(tài)規(guī)劃立體匹配算法的實(shí)時性較差且匹配效果并不理想,文獻(xiàn)[3-4]分別使用了金字塔雙層動態(tài)規(guī)劃立體匹配算法和馬爾科夫網(wǎng)絡(luò)進(jìn)行全局立體匹配。其結(jié)果表明,全局立體匹配算法的效果比局部立體匹配方法更好,然而,較慢的匹配速度不能很好的用于實(shí)時立體匹配。
本文選擇Canny算子、Sobel算子以及Scharr邊緣檢測算法分別對圖像進(jìn)行預(yù)處理,選取邊緣特征為約束,通過利用BM立體匹配算法、SGBM立體匹配算法以及DP算法進(jìn)行立體匹配,獲取視差圖。分別計算視差圖的錯誤匹配率,選取使視差圖優(yōu)化效果最好的組合,評價該方法的可行性與可靠性。
完成立體匹配前一般要完成匹配代價計算和匹配代價聚合[5-8]。常見的匹配代價計算就是Census變換,在目標(biāo)圖像中選取任意一點(diǎn),以該點(diǎn)為中心構(gòu)造3×3的矩形窗口,令窗口中除中心點(diǎn)之外的每個像素都與中心點(diǎn)進(jìn)行比較,灰度值小于中心像素的記為1,大于的記為0,產(chǎn)生了由1和0構(gòu)成的Census序列。經(jīng)過Census變換后的圖像通過漢明距離計算相似度,該值越小,相似度越高。匹配代價聚合主要應(yīng)用支持窗口的聚合方法,將支持窗內(nèi)像素的代價相加或平均作為中心像素的匹配代價。常用的支持窗口法有自適應(yīng)窗口法和移動窗口法。支持窗包含二維和三維。二維支持窗口需要事先將視差固定,然后計算代價聚合。完成之后采用勝者為王算法即最小代價對應(yīng)的視差作為所要求的視差。該算法主要應(yīng)用與局部匹配算法。針對全局匹配算法,基于全局的立體匹配方法是同時優(yōu)化所有像素的視差,聚焦在優(yōu)化技術(shù)上面,該方法效果好但非常耗時,因此會跳過代價聚合的步驟。得到視差圖之后,需要將視差圖細(xì)化,該步驟在過去大部分的立體匹配研究都是被忽略的。傳統(tǒng)的方法主要包括左右一致性檢測和中值濾波方法[9]。文獻(xiàn)[10]提出了基于雙邊濾波的加權(quán)中值濾波方法,該方法使得到的視差圖變得更加清晰,但是由于該濾波器比較復(fù)雜,導(dǎo)致嚴(yán)重耗時,降低了局部聚合的速度。
半全局匹配算法SGBM主要源于SGM算法[11-12]。SGM算法是由H.Hirschmuller提出的,該算法只考慮圖像中非遮擋點(diǎn),將每個像素點(diǎn)產(chǎn)生的視差,組成一個視差圖。通過構(gòu)建一個能量函數(shù),優(yōu)化得到最小值,從而得到每個像素視差的最優(yōu)值。能量函數(shù)表示如下:
(1)
式中:D為視差圖,E(D)為能量函數(shù),p、q代表圖像中的像素,Np代表像素P的8連通區(qū)域的相鄰像素,C(p,Dp)表示當(dāng)像素p的視差為Dp時的匹配代價。P1是相鄰像素點(diǎn)視差增減1的懲罰系數(shù),P2是相鄰像素點(diǎn)視差變化大于1的懲罰系數(shù),且P2要大于P1。對于函數(shù)T[·],如果函數(shù)內(nèi)的值為真,返回1,否則返回0。
與SGM方法相比,SGBM算法是半全局塊匹配算法,在計算匹配代價函數(shù)時,采用塊匹配方法(SAD算法)。SGBM算法沒有采用基于互熵信息的匹配代價方法,增加了預(yù)處理算法。BM算法和SGBM算法都采用SAD(sum of absolute differences)方法進(jìn)行匹配代價聚合。SAD方法可表示如下:
SAD(u,v)=Sum{|left(u,v)-right(u,v)|}
(2)
SAD窗口的大小,決定了誤匹配的大小和匹配效率,在完成以上步驟時,就可以獲取視差圖了。在選定的范圍內(nèi)選取代價聚合的最小值的點(diǎn)作為對應(yīng)匹配點(diǎn)。
BM算法在進(jìn)行匹配時, 采用壞字符算法和好后綴算法即從右向左比較的方法,同時引入兩種啟發(fā)式跳轉(zhuǎn)規(guī)則決定模板向右移動的步長[13]。其基本原理可以表述為:設(shè)文本串P為待匹配的圖像灰度數(shù)據(jù),文本Q為用于去匹配的模版,將P與Q對齊,從右至左依次比較,如圖1所示。
圖1 文本串P與模版串Q進(jìn)行匹配
若是兩者比較不匹配時,BM算法就采用好后綴與壞字符算法計算Q的移動步長,直至匹配結(jié)束,如圖2所示。
圖2 壞字符與好后綴匹配
可以看出由箭頭連接的B和E均為壞字符,加大字部分CAB為好后綴。
動態(tài)規(guī)劃最初是優(yōu)化決策過程的數(shù)學(xué)方法,核心思想就是將整體分割成若干個子任務(wù),求解全局最優(yōu)。當(dāng)前階段的最優(yōu)決策與前面階段無關(guān),僅是基于當(dāng)前狀態(tài)。通過將整體復(fù)雜問題分解成若干單一簡單的問題,降低復(fù)雜度[14]。傳統(tǒng)的動態(tài)規(guī)劃方法是在水平方向進(jìn)行掃描從而尋找最優(yōu)路徑,以圖像的水平方向?yàn)闄M坐標(biāo),視差值為縱坐標(biāo),將立體匹配分解為若干階段,每個x坐標(biāo)點(diǎn)對應(yīng)一個階段,之后再將各個階段用不同的狀態(tài)表示且狀態(tài)的選擇要滿足無后向性。在同一極線上按照從左至右的順序依次計算,求取相似性度量函數(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)的匹配代價函數(shù)。N是相鄰像素對的集合,dp、dq分別表示像素p和q的視差,平滑項(xiàng)S(dp,dq)為相鄰像素p和q間的平滑約束。
(1) 分別使用Canny邊緣檢測算子、Sobel邊緣檢測算子和Scharr濾波器對圖像對進(jìn)行邊緣檢測。
(2) 將執(zhí)行步驟(1)得到的圖像以邊緣特征為約束,分別使用BM算法、DP算法、SGBM算法進(jìn)行立體匹配。
(3) 設(shè)定誤差閾值,然后對每組方法得到的視差圖進(jìn)行誤匹配率計算,同時計算匹配時間。
(4) 通過對比不同邊緣檢測算法與不同立體匹配算法組合的結(jié)果,選取一種精度與速度相對最優(yōu)的組合算法。
Middlebury提供了很多標(biāo)準(zhǔn)測試庫,本文在該庫中選擇了幾組校正后的圖像對參與實(shí)驗(yàn)。本文整體是在Opencv和Matlab軟件環(huán)境下進(jìn)行試驗(yàn),利用Opencv對圖像進(jìn)行立體匹配,利用Matlab編寫計算誤匹配率程序,計算誤匹配率。本文采用三種立體匹配算法求取視差圖,通過在不同匹配算法下對比不同的邊緣檢測方法,找出精度與速度俱佳的搭配方法。針對匹配質(zhì)量,利用誤匹配率P進(jìn)行評價,表達(dá)式如下:
(6)
式中:N代表圖像像素數(shù),dc(x,y)是計算得到的視差圖,dt(x,y)是真實(shí)視差圖,δd是誤差閾值,通常取1。該指標(biāo)反映在一定誤差閾值內(nèi),兩幅圖像匹配所得視差圖的誤差占整幅圖像的比重,可以客觀地反映出立體匹配質(zhì)量的好壞。
圖3-圖5分別是cones圖、teddy圖和venus圖經(jīng)過Scharr邊緣檢測、Sobel邊緣檢測以及Canny邊緣檢測得到的效果圖,其中Sobel算子選用內(nèi)核大小為3。
(a) Scharr檢測 (b) Sobel檢測 (c) Canny檢測圖3 三種檢測方法在cones圖應(yīng)用
(a) Scharr檢測 (b) Sobel檢測 (c) Canny檢測圖4 三種檢測方法在teddy圖應(yīng)用
(a) Scharr檢測 (b) Sobel檢測 (c) Canny檢測圖5 三種檢測方法在venus圖應(yīng)用
圖6為標(biāo)準(zhǔn)視差圖,圖7-圖9為基于BM算法、DP算法、SGBM算法得到的原圖視差圖。通過誤差匹配率計算各組圖片的匹配質(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算法匹配時間 s
表3 基于DP算法匹配誤差率 %
表4 基于DP算法匹配時間 s
表5 基于SGBM算法匹配誤差率 %
表6 基于SGBM算法匹配時間 s
表1、表3、表5分別記錄了在BM算法、DP算法、SGBM算法下,經(jīng)過邊緣提取的圖像對立體匹配后視差圖的誤匹配率。從誤匹配率方面觀察,三種方法經(jīng)過邊緣檢測后視差圖的誤匹配率均在一定程度上有所降低。
表2、表4、表6分別顯示了基于以上三種算法立體匹配算法進(jìn)行立體匹配所消耗時間。時間數(shù)據(jù)顯示BM算法和SGBM算法經(jīng)過邊緣特征提取之后,匹配時間都縮短了很多,然而DP算法時間卻在處理部分圖像時增加了少許。我們可以得到結(jié)論,速度上,BM算法最好,SGBM算法一般,DP算法最慢。精度上,SGBM算法最好,DP算法較好,BM算法最差。
對比三種邊緣檢測算子,通過三種立體匹配算法的實(shí)驗(yàn)可以得出,采用BM立體匹配算法,速度和精度上,Canny算法最好,Scharr算法一般,Sobel算法最差。采用DP立體匹配算法,速度上,Canny算法最快,Sobel算法一般,Scharr算法最慢,精度上,Canny算法最好,Scharr算法一般,Sobel算法最差。采用SGBM立體匹配算法,速度和精度上Canny算法最快,Scharr算法和Sobel算法效果相似。通過六組試驗(yàn),我們可以總結(jié)得出在精度和速度上,Canny邊緣檢測與其他兩種邊緣檢測算法相比存在明顯優(yōu)勢。Scharr濾波器在性能上略強(qiáng)于Sobel檢測算子。
基于以上分析,以邊緣信息為匹配基元進(jìn)行立體匹配可以大幅度提高匹配的精度和速度,在一定程度上可以改善視差圖的匹配質(zhì)量,為后續(xù)場景重建與還原有著至關(guān)重要的輔助作用。
針對三種匹配算法,我們得出了如下結(jié)論:傳統(tǒng)的DP算法在匹配精度和速度方面介于BM算法和SGBM算法之間,在大多是情景中可以使用的,但是得到視差圖會存在條紋;SGBM算法適用于效果好和實(shí)時性要求相對較高的情景,如零部件生產(chǎn)線實(shí)時檢測和醫(yī)學(xué)圖像處理等領(lǐng)域;BM算法速度快但是精度較差,適用于精度要求不是特別高同時要滿足很高實(shí)時性的情景,如目標(biāo)實(shí)時跟蹤和監(jiān)控等。通過上文分析得出,SGBM算法搭配Canny邊緣檢測算子在處理速度和精度上存在明顯優(yōu)勢。
本文利用KITTI數(shù)據(jù)庫中選取幾幅道路場景下的代表性圖片,進(jìn)行測試與驗(yàn)證。通過對比匹配誤差率和匹配時間,判斷在不同邊緣檢測方法下獲取視差圖的好壞程度,選取一種處理效果相對好的方法,為接下來的研究奠定基礎(chǔ)。圖10為選取四幅真實(shí)場景圖。表7-表10分別記錄了四幅圖片經(jīng)過三種邊緣檢測算法后基于SGBM算法得到視差圖需要的匹配時間和誤匹配率。
(a) (b)
(c) (d)圖10 KITTI數(shù)據(jù)庫中不同場景圖
圖像匹配誤差率/%匹配時間/ms原圖20.53738.233Scharr19.98740.721Sobel20.60751.504Canny11.77715.801
表8 圖10(b)基于SGBM算法的視差圖誤匹配率和匹配時間
表9 圖10(c)基于SGBM算法的視差圖誤匹配率和匹配時間
表10 圖10(d)基于SGBM算法的視差圖誤匹配率和匹配時間
結(jié)合以上試驗(yàn),可以得出在三種檢測方法中,與Canny檢測算法結(jié)合后得到的視差圖匹配質(zhì)量最高,同時花費(fèi)的匹配時間較短。對于其他兩種檢測方法來說,效果不是特別穩(wěn)定,匹配質(zhì)量與匹配時間不一定同時都得到了優(yōu)化,有的是以犧牲實(shí)時性來提高精度或者以犧牲匹配質(zhì)量來加快匹配的速度。
本文利用Canny檢測算法、Scharr檢測算法和Sobel算法對圖像進(jìn)行邊緣提取,分別使用BM、SGBM和DP立體匹配算法對圖像進(jìn)行立體匹配,同時記錄匹配時間和視差圖誤匹配率。經(jīng)分析,經(jīng)過以邊緣特征為基元的立體匹配較未經(jīng)過任何處理的圖片在速度和精度都有所提高,該方法剔除了大量不相關(guān)的信息,提高了立體匹配的可靠性。通過真實(shí)場景圖進(jìn)行驗(yàn)證,選擇Canny檢測算法結(jié)合SGBM立體匹配算法優(yōu)化視差圖效果最好,提高了視差圖的質(zhì)量。