顏國霖
(黎明職業(yè)大學(xué) 機(jī)電工程與自動(dòng)化學(xué)院,福建 泉州 362000)
立體匹配是雙目立體視覺測(cè)量和立體重構(gòu)中最主要的步驟之一.匹配就是在不同的立體成像平面上找出對(duì)應(yīng)的點(diǎn)關(guān)系,進(jìn)而得出視差值.目前,在立體匹配研究方面已經(jīng)有了大量研究的成果.文獻(xiàn)[1]對(duì)目前常用的各種立體匹配算法進(jìn)行了比較全面的概述和比較.立體匹配算法通??梢苑譃榛谌中畔2]的立體匹配方法和基于局部信息[3]的立體匹配方法.近年來又有了基于半全局信息[4]的立體匹配方法.其中,第一類算法速度相對(duì)快,但當(dāng)圖像中有重復(fù)紋理特征或凹凸面、遮擋等現(xiàn)象,常常會(huì)出現(xiàn)誤匹配.而后兩類算法需要計(jì)算每個(gè)點(diǎn)的視差,匹配過程算法難度大,對(duì)于需要實(shí)時(shí)性能的場(chǎng)合來講過于耗時(shí).因此,本文研究了一種基于格雷碼與窗口灰度相結(jié)合的立體匹配方法,并將其應(yīng)用于木雕工藝品的快速掃描和三維重構(gòu),縮短設(shè)計(jì)周期,從而實(shí)現(xiàn)降低設(shè)備成本的目的.
圖1是經(jīng)過圖像校正的雙目立體視覺的系統(tǒng)模型,P點(diǎn)代表被測(cè)物表面的一點(diǎn).P點(diǎn)坐標(biāo)為P(X,Y,Z)(以左攝像機(jī)光心為坐標(biāo)原點(diǎn)).左側(cè)圖像、右側(cè)圖像分別為兩個(gè)攝像頭的成像平面.
圖1 雙目視覺系統(tǒng)模型
左右光心為兩個(gè)攝像頭的光心,兩光心的距離為基線長度T.光心與點(diǎn)P的連線在成像平面形成點(diǎn)pl(xl,yl)、pr(xr,yr).左右圖像經(jīng)過圖像校正后pl、pr處于同一水平線上.于是根據(jù)三角形相似定理可得:
(1)
(2)
(3)
上式中,d為圖像像素的物理長度,(cx,cy)為光心在圖像上的像素點(diǎn),f為攝像頭的焦距(以上各個(gè)參數(shù)由攝像機(jī)標(biāo)定求出).
由式(1),(2),(3)可得
由以上結(jié)果可知欲求被測(cè)物體表面上的點(diǎn)的間三維坐標(biāo),只需求出被測(cè)點(diǎn)在左右兩攝像頭采集的圖像上對(duì)應(yīng)的點(diǎn)的圖像坐標(biāo),即計(jì)算機(jī)視覺所用術(shù)語--圖像匹配.為了能將左右兩圖的對(duì)應(yīng)點(diǎn)相互匹配起來,本文結(jié)合格雷編碼與窗口灰度相關(guān)的算法,對(duì)左右兩圖的待測(cè)點(diǎn)進(jìn)行立體匹配.
灰度匹配算法是在以左側(cè)圖像中以待匹配點(diǎn)為模板,創(chuàng)建一個(gè)M×N的子窗口圖像,然后在右側(cè)圖像中沿極線在視差搜索范圍內(nèi)搜索一個(gè)相素灰度值相似(或相同)的子窗口,從而實(shí)現(xiàn)兩幅圖像的匹配.由于本實(shí)驗(yàn)已事先對(duì)左右攝像機(jī)采集的圖像進(jìn)行了立體校正,極線已水平配準(zhǔn),因此只需在右圖中與左圖的待匹配點(diǎn)的同一行上搜索即可.灰度匹配本質(zhì)上是利用圖像的灰度值計(jì)算兩窗口的相似性.匹配窗口尺寸大小可調(diào),大的窗口可減少錯(cuò)誤匹配的數(shù)量,并能夠?qū)⒑^少特征的區(qū)域進(jìn)行重構(gòu).計(jì)算模板與圖像灰度之間差值的絕對(duì)值總和(SAD)及所有差值的平方和(SSD)是常被用來計(jì)算灰度相關(guān)性的方法[5].在雙目視覺系統(tǒng)中,兩攝像機(jī)的視角是不可能完全相同的,光照條件又經(jīng)常變化,導(dǎo)致對(duì)算法的精度影響很大.因此本文實(shí)驗(yàn)采用歸一化互相關(guān)性算法(NCC).該算法表示為:
(4)
式中S(x.y)為(x,y)對(duì)應(yīng)的兩個(gè)窗口的相似度,T(x,y)為左圖像(x,y)的灰度值,I(x,y)為右圖像(x,y)的灰度值.
因?yàn)?1≤S(x,y)≤1,當(dāng)S(x,y)=1時(shí),兩窗口的圖像極性相同,當(dāng)S(x,y)=-1時(shí),兩窗口圖像的極性相反,線性光照條件不會(huì)影響匹配結(jié)果,這就是歸一化互相關(guān)系數(shù)的好處.由于S(x,y)=1是在理想狀態(tài)的匹配值,很難實(shí)現(xiàn),因此我們?nèi)∈筍(x,y)為最大值時(shí)的點(diǎn)為匹配點(diǎn).另外由于我們的搜索范圍是在右圖中的一整行上,這樣不僅降低了搜索速率,而且還能出現(xiàn)相關(guān)度相近的點(diǎn),出現(xiàn)錯(cuò)誤匹配的情況.因此我們先利用格雷碼光柵將待測(cè)區(qū)域劃分為若干個(gè)區(qū)域,然后再在對(duì)應(yīng)的子區(qū)域中搜索待匹配點(diǎn)的灰度相關(guān)值最大的點(diǎn).此法不僅可以提高搜索速率,還可以降低匹配的錯(cuò)誤率.
格雷碼是時(shí)間編碼中的一種.時(shí)間編碼方法具有易于實(shí)現(xiàn)、空間分辨率高、三維測(cè)量精度高等優(yōu)點(diǎn).但是用傳統(tǒng)的格雷編碼技術(shù)求取完整的三維曲面需投影大量圖案,效率偏低.為解決這個(gè)情況,我們將格雷編碼與窗口灰度相關(guān)算法相結(jié)合,先用格雷編碼技術(shù)將整幅圖分為2n個(gè)區(qū)域(投射n幅光柵條紋圖可將原圖分成2n個(gè)區(qū)域),然后再計(jì)算左右兩圖子區(qū)域內(nèi)的像素點(diǎn)的相關(guān)值,將左右兩圖的點(diǎn)匹配成對(duì).
圖2 格雷碼光柵圖
圖2為投射的n幅格雷編碼圖像之一,如圖所示格雷光柵圖由黑白相間的條紋周期組成.每幅圖中所包含的周期數(shù)為2n-1,其中n為圖像的第幾幅.即第一幅的周期為20=1,第n幅為2n-1個(gè)周期.編碼時(shí)黑白條紋分別與二進(jìn)制碼的0、1相對(duì)應(yīng).于是物體上的點(diǎn)經(jīng)由所有格雷碼圖像照射后被編上相應(yīng)的格雷碼.
圖3 時(shí)間序列條紋圖
圖3上的實(shí)線為物體上的某條線在六幅采集的圖中的光照情況,在圖3是黑色所以被賦予0,在圖2是白色所以被賦予1,以此類推這條線上的點(diǎn)的格雷碼值為010100.用此法將格雷碼光照射后拍出的整幅圖像編碼,可以將圖像分成2n個(gè)區(qū)域,每個(gè)子區(qū)域內(nèi)的格雷碼值是一樣的.如上圖投射6幅格雷碼光柵圖,可將采集的圖像分成64個(gè)區(qū)域.但是未經(jīng)過解碼的64個(gè)子區(qū)域的格雷碼值相鄰區(qū)域之間的值不連續(xù),必須將格雷碼值解碼轉(zhuǎn)換成0~63的連續(xù)的二進(jìn)制值,以便下文絕對(duì)相位的求取.
圖4 格雷碼解碼圖
根據(jù)二進(jìn)制碼與格雷碼的規(guī)律,從格雷碼G到二進(jìn)制碼B的轉(zhuǎn)換步驟如圖4:格雷碼的最高位不變賦值給二進(jìn)制碼最高位即Bn=Gn,然后再將Bn位與Gn-1位進(jìn)行異或運(yùn)算后的值賦值給Bn-1位,以此類推得:
Bn=Gn;
Bn-1=Bn⊕Gn-1;
Bn-2=Bn-1⊕Gn-2;
……
B0=B1⊕G0;
(5)
例如圖3中的格雷碼G=010100,二進(jìn)制轉(zhuǎn)換后的值為B=011000=24.圖3中將采集的圖像所有像素點(diǎn)的格雷碼都二進(jìn)制解碼后,圖像被分為64個(gè)區(qū)域,區(qū)域的值由0~63連續(xù)變化,然后就可以在這些子區(qū)域內(nèi)進(jìn)行灰度相關(guān)值的計(jì)算,求出相關(guān)值最大的點(diǎn)即為相互匹配的點(diǎn).
首先在左攝像機(jī)平面圖像上有像素點(diǎn)(xl,yl),要尋找其在右攝像機(jī)平面上對(duì)應(yīng)的匹配點(diǎn)(xr,yr).運(yùn)用上述原理和方法,以(xl,yl)為基準(zhǔn),選擇一個(gè)3×3窗口,計(jì)算在這個(gè)區(qū)域中歸一化互相關(guān)系數(shù)的局部最大值并當(dāng)成其灰度值.然后在右圖像相同Y坐標(biāo)的一條水平線上,搜索格雷碼值與點(diǎn)(xl,yl)一樣的點(diǎn),最后將所有搜索的結(jié)果的點(diǎn)都與基準(zhǔn)點(diǎn)的灰度特性相比較,并記錄下相似值S(x,y).
當(dāng)S(x,y)=1時(shí),對(duì)應(yīng)的(xr,yr)是(xl,yl)的最佳匹配點(diǎn),當(dāng)S(x,y)=0時(shí),這時(shí)匹配最差.所有計(jì)算結(jié)束,相似度值最大的那個(gè)點(diǎn)為(ur,vr)的最佳匹配點(diǎn).
維視MV-1300UM工業(yè)攝像頭兩個(gè),分辨率為640×480,像元大小為5.2μ×5.2μ,明基MP515投影儀一臺(tái)、PC機(jī)一臺(tái).
利用格雷編碼與相移相結(jié)合技術(shù)測(cè)量三維空間點(diǎn)的坐標(biāo)實(shí)驗(yàn)流程如圖5所示.
圖5 實(shí)驗(yàn)步驟流程
(1)首先是結(jié)構(gòu)光的投射,依時(shí)間序列控制投影儀向被測(cè)物體的表面依次投射6幅格雷編碼圖案.格雷碼圖案的投射為了將被測(cè)區(qū)域劃分成若干子區(qū)域,圖案數(shù)量的多少并無硬性規(guī)定.但是投射圖案過少,子區(qū)域區(qū)間大,將對(duì)進(jìn)一步的連續(xù)劃分精度造成影響.投射圖案多,能將子區(qū)域分成小區(qū)間便于連續(xù)劃分,但是由于光學(xué)衍射定理,投射的光柵中白條紋會(huì)向黑條紋衍射.如果劃分的區(qū)域過小,黑條紋在被白條紋衍射后條紋寬度將非常窄,不利于圖像采集與分析.對(duì)后續(xù)結(jié)果分析將造成影響,所以投射圖案的數(shù)量也不宜過多,本文采用的投影儀分辨率為1280*720,經(jīng)過反復(fù)實(shí)驗(yàn),在投射6幅格雷碼圖案可將圖像劃分64個(gè)寬度為20個(gè)像素的區(qū)域,實(shí)驗(yàn)結(jié)果效果較佳.
(2)圖像采集,圖像的采集與步驟(1)的投射時(shí)序相對(duì)應(yīng),用攝像頭依次對(duì)6個(gè)投射場(chǎng)景采集6幅對(duì)應(yīng)的圖案,然后再在自然光條件下采集一幅圖案用于進(jìn)行窗口灰度相關(guān)匹配.在C++程序語言中,可以用如下的數(shù)據(jù)結(jié)構(gòu)來表示創(chuàng)建的圖像的數(shù)據(jù)結(jié)構(gòu).
Typedef struct_IplImage
{
Int nChannels;//圖像的通道數(shù)
Int depth; //圖像的深度 可以是8,16,32,64位
Int width; //圖像的寬度
Int height; //圖像的高度
Char*imageData; //存儲(chǔ)圖像的數(shù)據(jù),包括顏色值、灰度值等
Int widthStep; //圖像每一行所用的字節(jié)數(shù),是8的倍數(shù),不足的補(bǔ)0
Int origin; //用于設(shè)置坐標(biāo)原點(diǎn)位于左上角還是左小角
Int dataOrder; //指明數(shù)據(jù)是將像素點(diǎn)不同通道的值的排列方式
}
(3)圖像預(yù)處理.由于光照環(huán)境等因素的影響,采集的圖像上有許多噪聲,這些噪聲將使實(shí)驗(yàn)結(jié)果有許多離散的點(diǎn).因此首先對(duì)采集圖像平滑濾波處理[7].平滑處理有中值濾波、高斯模糊濾波、雙邊濾波模糊算法等幾種方法.其中高斯濾波能在保留信號(hào)的條件下減少噪聲,本實(shí)驗(yàn)中對(duì)邊緣沒有較高的要求,因此本實(shí)驗(yàn)選擇使用高斯濾波平滑處理來去除噪聲.因?yàn)樵诟窭状a編碼解碼的過程中要求圖案只含有黑(灰度值0)白(灰度值255)條紋,但實(shí)際采集的圖像上像素的點(diǎn)灰度在1~255之間變化.因此必須設(shè)定一個(gè)閾值[8]作為一個(gè)分水嶺.使大于這個(gè)閾值的所有像素點(diǎn)的灰度值全部為255,小于閾值的點(diǎn)的灰度為0.閾值的選擇需根據(jù)環(huán)境及光照選擇,閾值設(shè)定大了本來應(yīng)為白條紋的區(qū)域被設(shè)為黑條紋;閾值設(shè)定小了本來應(yīng)為黑條紋的區(qū)域被設(shè)為白條紋.因此本文在多次重復(fù)的基礎(chǔ)上選擇灰度值90作為圖像二值化的閾值.
(4)三維重構(gòu)及顯示,經(jīng)過預(yù)處理的圖像的灰度值只有255與0.于是就可以對(duì)圖案進(jìn)行格雷解碼劃分子區(qū)域,再利用窗口灰度相關(guān)算法進(jìn)行立體匹配,最后用三角定理解出空間點(diǎn)的三維坐標(biāo).模型的顯示可以采用圖形程序接口OPENGL.本文先將采集的離散點(diǎn)云集用OPENGL顯示出來,然后再將這些點(diǎn)云數(shù)據(jù)進(jìn)行三角片化處理顯示出整體面模型.這樣既可以精簡數(shù)據(jù),又可以通過對(duì)比對(duì)實(shí)驗(yàn)過程及結(jié)果有直觀的認(rèn)識(shí).
本文對(duì)某兩木雕工藝品進(jìn)行掃描,掃描過程的光柵圖像如圖6所示,掃描結(jié)果如圖7、8所示.分別利用本文方法和Bouguet算法對(duì)兩個(gè)木雕對(duì)象進(jìn)行掃描,其運(yùn)行結(jié)果如表1所示.由表1可以看出,本文算法所用的時(shí)間可減少近一半,且實(shí)驗(yàn)測(cè)量精度點(diǎn)距相對(duì)誤差可達(dá)0.040%,點(diǎn)云誤差為0.0735mm,足以說明該實(shí)驗(yàn)的高效性、可靠性和高精度性.
表1 本文算法和Bouguet算法的運(yùn)行時(shí)間比較 ms
圖6 實(shí)驗(yàn)過程的光柵圖像
圖7 原始圖像
圖8 掃描結(jié)果
本文對(duì)木雕進(jìn)行結(jié)構(gòu)光投射、圖像采集、圖像預(yù)處理后,再結(jié)合格雷編碼與窗口灰度相關(guān)的算法,對(duì)左右兩圖的待測(cè)點(diǎn)進(jìn)行匹配,實(shí)現(xiàn)快速立體匹配、三維重構(gòu)的目的,可為后續(xù)工作做好準(zhǔn)備.但由于視覺系統(tǒng)引入結(jié)構(gòu)光,對(duì)測(cè)量環(huán)境有一定要求,一般而言,不適合在室外環(huán)境.因此,對(duì)雙目視覺系統(tǒng)的應(yīng)用存在一定限制.
參考文獻(xiàn):
[1]Scharstein D, Szeliski R.A taxonomy and evaluation of dense two-frame stereo correspondence algorithms [J].International Journal of Computer Vision,2002, 47(1/2/3):7-42.
[2]Klaus A, Sormann M, Karner K.Segment-based stereo matching using belief propagation and a self adapting dissimilarity measure [C].Proceedings of the 18th International Conference on Pattern Recognition, Hong Kong, 2006:15-18.
[3]Gu Z, Su X Y, Liu Y K ,et a1.Local stereo matching with adaptive support weight, rank transform and disparity calibration[J].Pattern Recognition Letters, 2008, 29(9):1230-1235.
[4]Hirschmuller H .Stereo processing by semiglobal matching and mutual information [J].IEEE Transactions on Pattern Analysis and Machine Intelligence, 2008, 30(2): 328-341.
[5]張廣軍.視覺測(cè)量[M].北京:科學(xué)出版社,2008:239-259.
[6]丁強(qiáng),董萬鈞.一種格雷碼與二進(jìn)制碼轉(zhuǎn)換的新方法[J].水利水文自動(dòng)化,2001(1):21-22.
[7]李俊生.一種圖像平滑處理方法的空域算法與頻域分析[J].常州工學(xué)院學(xué)報(bào),2004,17(2):30-33.
[8]董立菊,于戈.一種有效的圖像二值化方法 [J].東北大學(xué)學(xué)報(bào),2004,25(12):1149-1152.