羅大思,王進華
?。ǜV荽髮W 電氣工程與自動化學院,福建 福州 350108)
摘要:根據立體匹配原理,采用雙目攝像頭對圖像進行采集,通過對攝像機的標定和圖像立體校正、圖像分割與立體匹配得到最后的視差圖;根據最后的視差圖以及算法的速度來評價算法的性能。實驗結果表明,圖像的視差圖十分接近真實視差圖,效果明顯。
關鍵詞:立體匹配;圖像分割;視差
中圖分類號:TP391文獻標識碼:ADOI: 10.19358/j.issn.1674 7720.2016.20.013
引用格式:羅大思,王進華. 基于雙目視覺的立體匹配算法研究[J].微型機與應用,2016,35(20):49 50,53.
0引言
立體匹配用于尋找兩張圖像中對應待求點或待求物體的共軛像點,圖像的立體匹配實質上是為了解決同一物體的多幅圖像信息在不同時間或空間位置下對應匹配像素點的問題。傳統(tǒng)的匹配算法對于弱紋理的區(qū)域、遮擋區(qū)域及光照變化區(qū)域匹配效果都不是很好。本文以VS2012和OpenCV為開發(fā)平臺,采用雙目攝像頭,利用MATLAB和OpenCV函數(shù)對攝像頭進行標定,采用均值漂移(Mean Shift)對圖像進行分割,利用分割的信息對圖像進行立體匹配,以改善匹配的效果。實驗結果表明該方法可以提升視差圖的精確度,對于弱紋理區(qū)域的匹配也有較高的精度,使其更接近真實視差。
1立體匹配原理
立體匹配的過程就是在不同的位置對同一個場景的兩幅或者多幅圖像,尋找圖像像素之間的對應關系[2]雙目視覺中的立體匹配即是對左圖像中的某像素,在右圖像中尋找與它相同空間點對應的像素問題。在立體匹配中,通過記錄視差值得到視差圖像來表達這種對應關系,而立體匹配的輸出就是視差圖像[3]。立體匹配中會遇到很多挑戰(zhàn),比如弱紋理區(qū)域匹配的二義性,遮擋區(qū)域視差不連續(xù)處的匹配問題、實時性問題等,對于其中的一些問題,比如匹配精度、弱紋理區(qū)域匹配效果不好等,本文引入圖像分割的方法去改善其匹配效果。
2圖像分割
圖像分割的實質就是求取每一個像素點的類標號,它的目的就是將圖像劃分為若干個子區(qū)域。如不同目標物體所占的圖像區(qū)域、前景所占的圖像區(qū)域等[4]。現(xiàn)在常用的分割方法有:漫水填充法、均值漂移法、分水嶺、金字塔等;由于均值漂移分割方法精度較高,分割效果良好,因此本系統(tǒng)采用均值漂移分割方法[5]。
均值漂移分割步驟:
?。?)模點搜索:所謂模點,即概率密度的極大值點,模點搜索就是將搜索框內的像素極大值點賦值給出發(fā)點,從而達到圖像平滑的效果。
第一步:若迭代的次數(shù)達到默認值5次就直接執(zhí)行第四步,否則進入下一步
第二步:對第一步幸存下來的點計算重心點,并朝重心爬。
第三步:判斷是否概率密度極大值點,即模點,若是,則停止迭代。
第四步:將模點顏色賦值給出發(fā)點。
(2)合并相似區(qū)域:即將相似模點合并。
3立體匹配
3.1立體匹配步驟
立體匹配算法主要步驟由以下四步組成:匹配代價的計算、代價聚合、視差計算/優(yōu)化、視差改良。
按照優(yōu)化的方法可以將匹配算法分為局部匹配算法和全局匹配算法,分別執(zhí)行不同的步驟。局部匹配算法:利用局部窗口的信息進行匹配代價的計算和代價的聚合,利用WTA策略計算視差。全局匹配算法:全局匹配算法則是通過構造一個與視差有關的能量函數(shù),并優(yōu)化和求解這個能量函數(shù),使其達到最小,從而得到最終視差。
3.2基于圖像分割的全局匹配算法
全局匹配算法核心是能量方程的構造與優(yōu)化的過程,傳統(tǒng)的全局立體匹配方法是以像素為基元進行能量方程的構造與優(yōu)化,而基于圖像分割的全局算法是以分割塊為基元來創(chuàng)建和優(yōu)化能量函數(shù)[6]。傳統(tǒng)的能量函數(shù)方程如下:
其中D表示視差圖,Edata(D)=∑p∈ΩLc(p,dp),ΩL表示圖像中所有像素的集合,C(p,dp)表示像素p在視差dp下的匹配值,dp是視差圖D中像素p對應的視差。平滑項中的權值因子λ等于0時就退化為局部的方法,平滑項同時關聯(lián)兩個像素,而每個像素視差會受其他像素的影響,這樣會導致能量函數(shù)優(yōu)化非常困難,并且對于弱紋理區(qū)域匹配效果也不好,需要采用其他優(yōu)化方法求近似解?;诜指罘椒ǖ哪芰亢瘮?shù)方程如下:
其中:
R是所有分割區(qū)域的集合;S表示某個分割塊;F是視差平面,由平面方程f構成,表示的是所有分割區(qū)域的平面模板分配;C表示分割區(qū)域在視差平面模板下的匹配代價。對于分割塊S其對應的平面f可以用f(x,y,a,b,c)=a(x)+b(y)+c=d來求解其方程,其中x、y表示分割塊內的像素坐標,a、b、c則是平面系數(shù),d表示視差,通過區(qū)域內的像素點的初始視差值來計算上述參數(shù)。與傳統(tǒng)的能量函數(shù)相比,新的能量函數(shù)構造的優(yōu)點主要體現(xiàn)在: 有較高的計算效率,因為分割區(qū)域數(shù)會明顯小于圖像像素數(shù);顏色的分割區(qū)域用視差平面方程來描述,可以改進弱紋理區(qū)域的匹配效果。
4實驗平臺
本系統(tǒng)采用的是外接USB口的雙目攝像頭,利用VS2012作為應用程序開發(fā)平臺,調用OpenCV函數(shù)庫來完成圖像采集、標定、分割和匹配的功能,在標定的時候利用MATLAB標定工具箱來輔助標定。系統(tǒng)的具體處理過程為:圖像采集、攝像機標定、立體校正、圖像分割、立體匹配、輸出視差。
5實驗結果
圖1標定棋盤圖本系統(tǒng)分別采用OpenCV和MATLAB標定工具箱分別計算攝像機的內參和外參,分別對兩次的標定結果進行比較以減小對后續(xù)實驗的影響。
標定的結果如下:
左相機:
焦距:fc=[880.897 05880.500 975]
主點坐標:cc=[345.777 8265.974 27]
畸變向量:kc=[0.153 670.134 79-0.001 130.000 90.000 00]
像素誤差:err=[0.172 420.290 22]
右相機:
焦距:fc=[882.051 00883.746 23]
主點坐標:cc=[310.907 04208.242 49]
畸變向量:kc=[0.154 590.019 71-0.020 10-0.000 570.000 00]
像素誤差:err=[0.150 540.198 47]
用OpenCV函數(shù)CVCalibrateCamera2()標定出來的結果如下:
左相機:
焦距:fc=[907.417 04907.417 04]
主點坐標:cc=[319.500 0239.500 0]
畸變向量:kc=[0.126 94-0.408 89-0.013 91-0.008 950.000 00]
右相機:
焦距:fc=[907.417 04907.417 04]
主點坐標:cc=[319.500 0239.500 0]
畸變向量:kc=[0.091 1060.796 77-0.006 480.000 2310.000 00]
可以發(fā)現(xiàn)兩次標定結果較為接近,可以近似認為此次標定結果是比較準確的。利用上述的標定參數(shù),設定均值漂移參數(shù)空間半徑為2,顏色半徑為40,分割金字塔級數(shù)為2級,對比圖2、3實驗結果:圖2是標準圖像通過對比不同算法得到的實驗結果,圖3是對弱紋理圖像以不同算法得到的實驗結果。
對比本文算法和全局匹配算法的視差圖與真實視差圖可以看出,本文算法在細節(jié)輪廓上更接近真實視差圖,比原始算法的視差圖更為精確,特別是圖3中的梯形弱紋理區(qū)域,通過對比視差圖可以看出,全局匹配算法對這個區(qū)域的匹配效果不好,而本文算法對此區(qū)域有較大的改進。
圖3弱紋理圖像視差對比
6結論
基于分割的全局匹配算法,對于匹配的結果在精度上有提高,對于一些弱紋理區(qū)域也有很好的匹配效果。但此類算法也有其局限性,比如依賴分割的精度,分割區(qū)域內的像素點不一定全部都滿足視差平面方程,引入圖像分割后分割算法的時間過長不適合實時場景等,需要進一步研究和改進。
參考文獻
?。?] 毛星云,冷雪飛. OpenCV3編程入門[M]. 北京:電子工業(yè)出版社,2015.
?。?] MATTOCCIA S. Stereo vision algorithms and applications[N].DISI University of Bplogna,2013-01-12.
[3] Yang Qingxiong.Hardefficient bilateral filtering for stereo matching[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2014,36(5):1026-1032.
?。?] BRADSKI G, KAEHLER A. 學習OpenCV[M]. 于仕琪,劉瑞禎,譯. 北京:清華大學出版社,2009.
?。?] 趙榮椿,趙忠明,趙歆波. 數(shù)字圖像處理與分析[M]. 北京:清華大學出版社,2013.
?。?] 朱俊杰,杜小平,范濤濤,等. 三種圖像分割算法的對比及圖像分割方法的改進[J]. 計算機應用與軟件,2014,31(1):194-200.