(杭州電子科技大學(xué)計(jì)算機(jī)應(yīng)用技術(shù)研究所,浙江 杭州310018)
雙目立體視覺技術(shù)已廣泛應(yīng)用立體電影、三維測量、三維建模、機(jī)器人視覺等方面。立體匹配算法是立體視覺技術(shù)中的核心環(huán)節(jié),目前大多數(shù)立體匹配算法都是基于PC平臺(tái)實(shí)現(xiàn),系統(tǒng)的實(shí)時(shí)性和穩(wěn)定性較差。往往使用圖形處理器或基于現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)硬件平臺(tái)來提高實(shí)時(shí)性?;贔PGA平臺(tái)的立體匹配實(shí)現(xiàn)方法有象素灰度差絕對值(Sum of Absolute Differences,SAD)匹配準(zhǔn)則,象素灰度差平方和(Sum of Squared Differences,SSD)匹配。但SAD和SSD 匹配對圖像中的噪聲和亮度比較敏感?,F(xiàn)如今很多硬件實(shí)現(xiàn)的Census 匹配準(zhǔn)則,都是用了高性能FPGA 芯片,其成本較高。本文在Altera的Cyclone II 芯片上,實(shí)現(xiàn)了Census 匹配算法。該硬件結(jié)構(gòu)可達(dá)到每個(gè)象素時(shí)鐘獲取一個(gè)象素視差信息,同時(shí)消耗的硬件資源的也較低。
基于區(qū)域的匹配方法是根據(jù)圖像的區(qū)域相似度來實(shí)現(xiàn)匹配,有SAD,SSD和Census 等方法。SAD和SSD 對光強(qiáng)和對比度比較敏感,且當(dāng)圖像中存在重復(fù)的紋理時(shí),可能會(huì)引起誤匹配,運(yùn)算量大。Census 匹配方法,相較于SAD和SSD 方法,對光照不太敏感,對圖像的結(jié)構(gòu)要求不高的優(yōu)點(diǎn)。
設(shè)I(u,v),K(u,v)分別為u 行v列象素的灰度值和此象素的固定大小的Census 鄰域窗口,P(i,j)串聯(lián)起來,為此象素的Census 矢量C(u,v),d為視差搜索范圍,Si為則Census 匹配的相似度算子:
式中,Cl(u,v)和Cr(u,v)表示基準(zhǔn)圖參考象素和對準(zhǔn)圖候選匹配象素的Census 矢量。計(jì)算d個(gè)Si數(shù)值后,比較得到最小的Sj,j 即為最終得到的視差。
本文的系統(tǒng)實(shí)現(xiàn)框圖如圖1所示:
圖1 硬件系統(tǒng)算法實(shí)現(xiàn)框圖
圖1中N表示視差搜索范圍。本文采用的圖片分辨率為640×480,Census 變換窗口為7×7,相關(guān)窗口大小為9×9,視差搜索范圍為64個(gè)象素。
構(gòu)建一個(gè)M×N的窗口實(shí)現(xiàn)方法如圖2所示:
圖2 數(shù)據(jù)緩存與計(jì)算窗口的構(gòu)建
圖2中N 行象素的緩存按列方向輸出到M 深度的移位寄存器中。如當(dāng)前時(shí)刻為T,則T+1時(shí)刻第M列數(shù)據(jù)移出計(jì)算窗口,第A列數(shù)據(jù)則輸入到計(jì)算窗口,第A-1列移位到第A列,并將在T+2時(shí)刻進(jìn)入到計(jì)算窗口。這樣就得到了一個(gè)以時(shí)鐘頻率不斷右移的計(jì)算窗口。
在相關(guān)窗口計(jì)算方面,本文通過數(shù)據(jù)復(fù)用的方法來節(jié)省計(jì)算資源設(shè)ST,ST+1為T時(shí)刻和T+1時(shí)刻的相關(guān)窗口漢明距離和,HAMi(i=1,2,…)為第i列的漢明距離和??傻肧T+1與ST的關(guān)系為:
數(shù)據(jù)復(fù)用實(shí)現(xiàn)結(jié)構(gòu)如圖3所示:
以本文例,如不采用上述方法,相關(guān)窗口模塊需要有80次6bit 加法。采用數(shù)據(jù)復(fù)用方法后,僅需要8次10bit 加法和2次6bit 加法。
圖3 數(shù)據(jù)復(fù)用示意圖
本文通過并列一個(gè)Census 矢量計(jì)算模塊減少了較多的存儲(chǔ)資源消耗,如圖4所示:
圖4 實(shí)時(shí)計(jì)算Census 矢量
以本文為例,如要對每個(gè)象素的Census 矢量進(jìn)行存儲(chǔ),則要存儲(chǔ)6行圖像的象素?cái)?shù)據(jù)和9行圖像象素的Census 矢量數(shù)據(jù),每個(gè)象素Census 矢量有48bit。本文的方案是僅需要存儲(chǔ)15 行象素?cái)?shù)據(jù),每個(gè)象素?cái)?shù)據(jù)是8bit??梢员惹罢邷p少75%的Census 矢量存儲(chǔ)資源。
本文使用的圖片分辨率為640×480,Census 變換窗口為7×7,相關(guān)窗口大小為9×9,視差搜索范圍為64個(gè)象素。經(jīng)9684級(jí)流水后,每個(gè)時(shí)鐘得到一個(gè)正確視差。采用Altera 公司Cyclone II系列的EP2C70F896C6 芯片。真實(shí)場景測試圖和仿真結(jié)果如圖5所示:
圖5 真實(shí)場景仿真測試結(jié)果
Quartus II 9.1 綜合情況如表1所示,本文和其他硬件匹配方法的對比情況如表2所示。
表1 EP2C70F896C6平臺(tái)實(shí)現(xiàn)本文算綜合情況
表2 硬件實(shí)現(xiàn)立體匹配的性能對比
由表1可以看出本文算法在EP2C70F896C6 芯片上使用的資源也是很少的。表2可以看出,在60MHz時(shí)鐘下,每秒可以處理195幅640×480的圖片,可以達(dá)到實(shí)時(shí)的要求。
本文在FPGA平臺(tái)上實(shí)現(xiàn)了Census算法的實(shí)時(shí)立體匹配。該結(jié)構(gòu)匹配速度快,資源占用小。實(shí)驗(yàn)結(jié)果表明在60MHz時(shí)鐘下處理640×480 圖片速度達(dá)到195fps,使用的芯片是高性價(jià)比的Cyclone II系列芯片,可以在低成本需求系統(tǒng)中應(yīng)用。
[1]Ambrosch K,Humenberger M,Kubinger W,etal.Hardware implementation of an SAD based stereo vision algorithm[C].Minneapolis:Proceedings of the Conference on Computer Vision and Pattern Recognition Workshops,2007:1-6.
[2]Chen L,Jia Yunde.A Parallel reconfigurable architecture for real-time stereo vision[C].Hangzhou:Proceedings of the International Conference on Embedded Software and Systems,2009:32-39.
[3]Jia Yun-de,Zhang Xiao-xun,Li Ming-xiang,etal.A Miniature Stereo Vision Machine(MSCM-Ⅲ)for dense disparity mapping[C].Cambridge:Proceedings of 17th International Conference on Pattern Recognition,2004:728-731.
[4]Jin S,Cho J,Phan X,etal.FPGA design and implementation of a Real-Time stereo vision system[J].IEEE Transaction on Circuits and Systems for Video Technology,2010,20(1):15-26.
[5]Tsai T-H,Chang N,Chang T-S.Data reuse analysis of local stereo matching[C].Seattle:International Symposium on Circuits and Systems,2008:812 –815.