王建偉,滕國(guó)偉,2,李賀建,鄒雪妹
(1.上海大學(xué)通信與信息工程學(xué)院,上海 200072;2.上海國(guó)茂數(shù)字技術(shù)有限公司,上海 201204)
責(zé)任編輯:哈宏疆
在多視點(diǎn)或自由視頻3DTV實(shí)時(shí)顯示系統(tǒng)中,包含了前端視頻采集、編碼傳送、解碼顯示等部分。多視點(diǎn)或者自由視點(diǎn)視頻其數(shù)據(jù)量遠(yuǎn)比單視采用H.264編碼方法的數(shù)據(jù)量要大。一般而言,若考慮的多視點(diǎn)是9個(gè)視點(diǎn),如果9個(gè)視點(diǎn)采用基于H.264聯(lián)播方式編碼,數(shù)據(jù)量就是原來(lái)的9倍。鑒于此,2009年JVT推出了MVD(多視+深度)數(shù)據(jù)模式。在該模式中,對(duì)傳輸?shù)囊曨l端除了原來(lái)視點(diǎn)的紋理彩色視頻外,對(duì)于每個(gè)視點(diǎn)都附加一個(gè)與之相應(yīng)的深度圖視頻。提出深度圖的概念有2個(gè)最直觀的好處:
1)深度圖較平坦,對(duì)編碼來(lái)說(shuō)效率極高,即使采用H.264的編碼方式其編碼比特率也僅是彩色視頻編碼比特率的20%~30%。
2)通過(guò)提取具有場(chǎng)景幾何信息的深度,可繪制出高質(zhì)量的虛擬視。
綜上所述,快速準(zhǔn)確地提取深度圖是實(shí)時(shí)3DTV系統(tǒng)的關(guān)鍵,也是MVD模式的核心,因此諸多學(xué)者對(duì)此從未停止探索的腳步。
就深度提取而言,現(xiàn)階段的主要研究重點(diǎn)是對(duì)極線校正過(guò)的測(cè)試序列提取準(zhǔn)確的深度信息,減少遮擋和誤匹配點(diǎn)的比率,提高繪制端虛擬視頻的質(zhì)量,并且提高深度信息的提取速度。最常用的圖像像素點(diǎn)的匹配方法是立體匹配算法(stereo matching),通常來(lái)說(shuō),其可分為局部算法和全局算法。全局匹配算法一般用相容性約束和平滑性約束來(lái)構(gòu)成一個(gè)評(píng)價(jià)函數(shù),再通過(guò)各種最優(yōu)算法求得評(píng)價(jià)函數(shù)的最小值。由于基于全局的匹配算法是全局尋優(yōu),所以匹配準(zhǔn)確性較高,可直接獲得致密的視差圖,尤其是采用圖割思想的算法在精度上取得了很好的效果。但是當(dāng)前應(yīng)用比較廣泛的全局立體匹配算法大多還存在著自身的缺陷,例如圖割匹配算法能夠?qū)崿F(xiàn)較好的匹配效果,但其不可避免的缺點(diǎn)是計(jì)算量過(guò)大,難以滿足實(shí)時(shí)性要求;動(dòng)態(tài)規(guī)劃法可得到稠密的視差圖,但不能得到較好的匹配精度,水平和垂直連續(xù)性約束整合不夠,所得的視差圖會(huì)存在瑕疵。局部算法中大多是采用窗口的匹配算法,先根據(jù)圖像特點(diǎn)制定相應(yīng)的相似度測(cè)量準(zhǔn)則,在一定的區(qū)域上來(lái)計(jì)算相似度。局部匹配算法實(shí)現(xiàn)簡(jiǎn)單,速度快,但對(duì)噪聲較敏感,對(duì)遮擋區(qū)域、無(wú)紋理區(qū)域和視差不連續(xù)區(qū)域的匹配效果不理想。也有通過(guò)計(jì)算角點(diǎn)、特征點(diǎn)的基于特征的匹配方法,但是如果這樣做同樣難以得到致密的像素級(jí)的深度圖。就最新的發(fā)展來(lái)看,對(duì)于深度提取的實(shí)時(shí)性要求越來(lái)越高,窗口式的局部算法應(yīng)用較廣,具體過(guò)程為通過(guò)視差d將參考圖像和目標(biāo)圖像的窗口聯(lián)系起來(lái),通過(guò)兩個(gè)窗口內(nèi)數(shù)據(jù)的相似度測(cè)量,在諸多視差參考值中利用WTA(Winner Takes All)原理選取其中最為相似的一個(gè)視差值作為結(jié)果。
對(duì)于深度圖的提取,從研究方向和實(shí)現(xiàn)方法上都大致可分為軟件和硬件兩大類。軟件方面可對(duì)深度提取方法進(jìn)行靈活配置,但由于普通計(jì)算機(jī)處理器的指令循環(huán)機(jī)制,海量數(shù)據(jù)操作會(huì)造成大量結(jié)構(gòu)指令周期延遲而使得難以達(dá)到實(shí)時(shí)性的要求。例如日本名古屋大學(xué)深度估計(jì)參考軟件DERS,其對(duì)深度圖的提取從匹配區(qū)域選擇、相似準(zhǔn)則、時(shí)間一致性增強(qiáng)、后處理等方面都進(jìn)行了優(yōu)化,但其執(zhí)行速率遠(yuǎn)遠(yuǎn)不能滿足實(shí)時(shí)的需求。即使不選擇時(shí)間一致性增強(qiáng)等方面的功能,該軟件在2.53 GHz的PC平臺(tái)上對(duì)一幀1024×768深度圖進(jìn)行提取所需時(shí)間也在5 min以上。
在實(shí)時(shí)3DTV系統(tǒng)中,深度圖的提取必須是實(shí)時(shí)的,這就要求系統(tǒng)必須高速處理大量數(shù)據(jù),而這必須在合適的硬件平臺(tái)上用合理的系統(tǒng)架構(gòu)才能實(shí)現(xiàn)。從20世紀(jì)80年代末期人們就開(kāi)始研究利用各種硬件架構(gòu)來(lái)實(shí)現(xiàn)深度提取。S.Kimura和T.Shinbo等人設(shè)計(jì)了一種基于卷積器的實(shí)時(shí)立體器(SAZAN)以20 f/s(幀/秒)的速率生成320×240分辨率的深度圖[1]。A.Darabiha和J.Rose等人使用Xilinx XC2V2000 FPGA以大約30 f/s的速率生成640 ×480分辨率的深度圖[2]。
可用于深度圖提取的硬件平臺(tái)有多種,針對(duì)立體視覺(jué)的硬件加速方法可分為以下4類[3]:
1)ASIC(通用集成電路)。采用ASIC可以使立體視覺(jué)的硬件加速達(dá)到最優(yōu)性能,Y.Jia和X.Zhang等人利用DeepSea處理器設(shè)計(jì)了立體視覺(jué)系統(tǒng)[4]。但ASIC投入成本過(guò)高,開(kāi)發(fā)周期過(guò)長(zhǎng),靈活性差,難以普及使用。
2)DSP。DSP的哈佛總線結(jié)構(gòu)使其能夠適應(yīng)大數(shù)據(jù)量的通信需求,內(nèi)部的硬件乘法器等資源以及多級(jí)流水等特性也能夠很好地滿足設(shè)計(jì)的高強(qiáng)度需求。文獻(xiàn)[3]中提出了立體匹配算法的DSP實(shí)現(xiàn)方法,利用TiC64xDSP并行計(jì)算進(jìn)行立體匹配。
3)GPU(圖形處理卡)。GPU在處理視頻數(shù)據(jù)時(shí)不占用CPU資源,可多條繪制流水線并行計(jì)算,能夠高密集地運(yùn)算,且具有超長(zhǎng)圖形流水線。文獻(xiàn)[5]提出了利用GPU進(jìn)行立體匹配得出深度圖。
4)FPGA(現(xiàn)場(chǎng)可編程門陣列)。FPGA自身的結(jié)構(gòu)很適合底層立體視覺(jué)的單指令多數(shù)據(jù)流并行處理,其內(nèi)部大量的存儲(chǔ)單元,也可以很好地實(shí)現(xiàn)立體視覺(jué)算法的多級(jí)流水特性。文獻(xiàn)[6]和文獻(xiàn)[7]分別提出利用FPGA進(jìn)行立體匹配,從而快速得到深度圖。
基于現(xiàn)有實(shí)驗(yàn)條件,根據(jù)census transform、立體匹配、流水的WTA算法特征,選擇FPGA作為平臺(tái)對(duì)算法進(jìn)行實(shí)現(xiàn)。
立體匹配算法是立體視覺(jué)中的關(guān)鍵算法,假設(shè)兩路視頻是經(jīng)過(guò)水平矯正的,根據(jù)硬件平臺(tái)特點(diǎn),對(duì)欲求取視差的兩路視圖分別進(jìn)行CT變換,然后將參考視的某一像素點(diǎn)作為參考像素,在視差視圖的視差范圍內(nèi)求出所有像素點(diǎn)與該參考像素點(diǎn)census序列的漢明距,接著進(jìn)行WTA最優(yōu)選擇,視差范圍內(nèi)與參考像素漢明距最小的像素點(diǎn)可視為與參考像素點(diǎn)相似度最高,即為該參考視點(diǎn)對(duì)應(yīng)的匹配點(diǎn),該匹配點(diǎn)位置與參考像素位置的相對(duì)平移量即為參考像素的視差,最后將所得視差轉(zhuǎn)換為深度圖。
基于實(shí)驗(yàn)效果和實(shí)驗(yàn)條件的綜合考慮,本文選擇CT變換(census transform)[8-9]作為基本原理進(jìn)行立體匹配,該算法是由Zabih和Woodfill提出的一種非參數(shù)化的立體匹配方法。以下就實(shí)際運(yùn)用對(duì)該算法的執(zhí)行過(guò)程進(jìn)行說(shuō)明:在視圖中選取任一點(diǎn),以該點(diǎn)為中心劃出一個(gè)例如3×3的矩形,矩形中除中心點(diǎn)之外的每一點(diǎn)都與中心點(diǎn)進(jìn)行比較,灰度值(intensity value)小于中心點(diǎn)即記為0,灰度大于中心點(diǎn)的則記為1,以所得長(zhǎng)度為8的只有0和1的序列作為該中心點(diǎn)的census序列。按照此過(guò)程,將視圖上的所有點(diǎn)都轉(zhuǎn)換成相應(yīng)的census序列,變換過(guò)程如圖1所示。
圖1 CT變換過(guò)程
由上可知,CT變換是CT窗口內(nèi)中心像素與周圍像素相比較的結(jié)果,是CT變換窗口中心像素的一種特征表示。隨著CT窗口和視差搜索范圍的增大,F(xiàn)PGA資源占用率將急劇增加[10]。對(duì)于m×m大小的CT窗口,n×n大小的立體匹配范圍(匹配視圖大小),及r大小的視差搜索范圍,求取視差的計(jì)算量為:(r+1)·m2·(n2-1)次的像素值相減,r·m2次對(duì)n2-1長(zhǎng)度的比特向量進(jìn)行漢明距計(jì)算,r·m2次漢明距相加[2]。由此可知,CT變換窗口大小、匹配視圖的分辨率及視差范圍的大小對(duì)于深度提取的執(zhí)行效率和資源占用有著決定性的影響。過(guò)大的視差圖分辨率、CT變換窗口都會(huì)對(duì)實(shí)現(xiàn)平臺(tái)造成過(guò)大的計(jì)算負(fù)載。與此同時(shí),CT變換窗口越大,中心像素與周圍像素比較結(jié)果越全面,那么系統(tǒng)后端根據(jù)漢明距所求的視差值就越準(zhǔn)確。
為適應(yīng)于高分辨率的深度圖提取,同時(shí)便于增大CT變換窗口和視差搜索范圍來(lái)提高視差提取結(jié)果準(zhǔn)確度,而又不至于對(duì)執(zhí)行效率和資源占用率造成過(guò)多影響,本文提出大范圍稀疏CT變換,使變換窗口的中心像素在45°十字形方向上隔行隔列地與周圍像素進(jìn)行比較,其他位置上像素點(diǎn)的比較則省略。如圖2所示,CT變換窗口為15×15,census序列長(zhǎng)度由原來(lái)的224降為16,使匹配精度與復(fù)雜度之間達(dá)到一個(gè)較好的平衡。
圖2 大范圍稀疏CT變換過(guò)程
所謂圖像匹配就是在視差圖中找出與參考像素點(diǎn)相似度最高的點(diǎn),而漢明(hamming)距正是視差圖像素與參考像素相似度的度量。具體而言,對(duì)于欲求取視差的左右視圖,要比較兩個(gè)視圖中兩點(diǎn)的相似度,可將此兩點(diǎn)的census值逐位進(jìn)行異或運(yùn)算,然后計(jì)算結(jié)果為1的個(gè)數(shù),記為此兩點(diǎn)之間的漢明值,漢明值是兩點(diǎn)間相似度的一種體現(xiàn),漢明值愈小,兩點(diǎn)相似度愈大。由上可知census序列度量的是一個(gè)矩形的中心像素和周圍像素的灰度值比較結(jié)果,并非像素灰度值本身,因此對(duì)于由光照不均勻引起的左右圖像亮度差異以及窗口內(nèi)的隨機(jī)噪聲是穩(wěn)健的。
實(shí)現(xiàn)架構(gòu)充分利用FPGA的并行性和流水結(jié)構(gòu)。在FPGA中取15個(gè)Block RAM分別作為L(zhǎng)ine Buffer,對(duì)一幅圖像的15行分別進(jìn)行緩存,每一個(gè)Block RAM的大小取4096 bit,支持視差圖的分辨率高達(dá)1920×1080。以視頻數(shù)據(jù)的行、幀同步信號(hào)及數(shù)據(jù)有效信號(hào)作為控制信號(hào)控制算法變換過(guò)程中的時(shí)序,在第15個(gè)Line Buffer存在有效數(shù)據(jù)輸出之后即可對(duì)前后15行范圍內(nèi)相應(yīng)位置上的數(shù)據(jù)進(jìn)行比較,從而進(jìn)行CT變換,如圖3中①②部分;兩路分別進(jìn)行CT變換得到相應(yīng)的census序列,在視差視圖上將視差范圍內(nèi)所有像素的census序列分別與參考視圖中指定像素的census序列進(jìn)行異或,所得結(jié)果分別是這些像素與參考像素的漢明距,如圖3③部分;將所得漢明距進(jìn)行如圖3④部分的WTA最優(yōu)選擇,得出視差范圍內(nèi)具有最小漢明距的像素的位置,該位置即為參考像素對(duì)應(yīng)視差;最后一步如圖3⑤部分所示,將視差轉(zhuǎn)換為深度即可。需要補(bǔ)充的一點(diǎn)是視差和深度只是幾何關(guān)系轉(zhuǎn)換,可采用查找表結(jié)構(gòu)實(shí)現(xiàn)。
圖3 深度提取算法系統(tǒng)架構(gòu)
實(shí)驗(yàn)取champagne視差序列相鄰兩個(gè)視點(diǎn)同一幀圖像,圖像分辨率為1280×960,通過(guò)本文提出算法進(jìn)行立體匹配和視差提取,結(jié)果如圖4所示。
圖4 深度圖的提取結(jié)果
從圖4b可以看到在圖像背景處深度數(shù)據(jù)有部分錯(cuò)誤,這是由于圖像背景呈單一無(wú)紋理區(qū)域,圖像匹配部分發(fā)生錯(cuò)誤所致,對(duì)于重復(fù)紋理區(qū)域會(huì)產(chǎn)生同樣的匹配錯(cuò)誤。在立體匹配過(guò)程中類似誤匹配的問(wèn)題幾乎是無(wú)法避免的,在本文給出的系統(tǒng)中可以后續(xù)通過(guò)增大CT變換窗口大小,增加LR-check(左右連續(xù)性檢查)、單值檢驗(yàn)、尖峰消除、亞像素估計(jì)等后處理對(duì)匹配準(zhǔn)確性進(jìn)行改善。
在深度提取算法的硬件實(shí)現(xiàn)過(guò)程中,F(xiàn)PGA選用Altera Arria II GX260,其主要內(nèi)部資源數(shù)如表1所示,這些資源對(duì)于存儲(chǔ)和高速并行運(yùn)算都是很有優(yōu)勢(shì)的。深度提取Verilog程序經(jīng)過(guò)綜合、映射、翻譯、布局布線后,連同視頻采集卡SDI協(xié)議解析、DDR2訪問(wèn)、PCIE訪問(wèn)等功能,資源占用情況如表2所示。
表1 FPGA主要參數(shù)
表2 程序適配后FPGA資源占用情況
普通計(jì)算機(jī)處理器的指令循環(huán)機(jī)制造成了其無(wú)法勝任深度實(shí)時(shí)提取的事實(shí),而FPGA的并行結(jié)構(gòu)和流水結(jié)構(gòu)的固有特點(diǎn)恰恰能夠在海量數(shù)據(jù)并行處理方面發(fā)揮其特長(zhǎng)。本文利用經(jīng)過(guò)改進(jìn)的大范圍稀疏CT變換,通過(guò)對(duì)大量視頻數(shù)據(jù)的并行計(jì)算進(jìn)行立體匹配,并通過(guò)流水線結(jié)構(gòu)對(duì)最優(yōu)像素點(diǎn)進(jìn)行選擇,并在FPGA平臺(tái)上實(shí)現(xiàn)。該方案能夠?qū)崿F(xiàn)高分辨率深度圖的實(shí)時(shí)提取,并能自動(dòng)適應(yīng)不同分辨率,配合深度圖后處理操作,將成為實(shí)時(shí)3D系統(tǒng)中重要組成部分。
通過(guò)深度圖提取算法的硬件實(shí)現(xiàn)過(guò)程中,行幀同步信號(hào)的調(diào)整是實(shí)際操作過(guò)程中的又一難題,因?yàn)榈玫降纳疃葓D和參考視圖只有和同一個(gè)位置的像素上一一對(duì)應(yīng),才使得在3DTV的系統(tǒng)終端進(jìn)行準(zhǔn)確的繪制成為可能。這就要求統(tǒng)籌考慮Line Buffer緩存、CT窗口大小、WTA過(guò)程寄存等模塊,分別對(duì)行同步信號(hào)、幀同步信號(hào)、數(shù)據(jù)使能信號(hào)進(jìn)行準(zhǔn)確的緩存調(diào)整,使其與深度數(shù)據(jù)嚴(yán)格同步。另外,在Line Buffer寫數(shù)據(jù)時(shí),將其寫地址在視頻數(shù)據(jù)時(shí)鐘的下降沿進(jìn)行變化,這樣可以有效保證數(shù)據(jù)寫入的建立保持時(shí)間。系統(tǒng)每一個(gè)模塊根據(jù)所得結(jié)果時(shí)序?qū)ν叫盘?hào)利用寄存器進(jìn)行寄存或利用FIFO進(jìn)行緩存。最后使得深度圖上的有效值與參考視圖每一個(gè)有效像素一一對(duì)應(yīng)。
[1]KIMURA S,SHINBO T,YAMAGUCHI H,et al.A convolver-based realtime stereo machine(SAZAN)[C]//Proc.IEEE Comput.Soc.Conf.Comput.Vision Pattern Recognit.,1999.Fort Collins,CO:IEEE Press,1999:457-463.
[2]DARABIHA A,ROSE J,MACLEAN W J.Video-rate stereo depth measurement on programmable hardware[C]//Proc.IEEE Comput.Soc.Conf.Comput.Vision Pattern Recognit.,2003.Madison,WI:IEEE Press,2003:203-210.
[3]陳登,白洪歡.Census立體匹配算法的DSP實(shí)現(xiàn)[J].科技通報(bào),2008,24(6):860-865.
[4]JIA Y,ZHANG X,LI M,etal.A miniature stereo vision machine(MSVM-III)for dense disparity mapping[C]//Proc.17th Int.Conf.Pattern Recognit.Cambridge,U K:IEEE Press,2004:728-731.
[5]KAO W C,JENG B C,CHEN T H,et al.Real-time depth map estamation for stereoscopic displays with GPU[C]//Proc.2011 IEEE 15th International Symposium on Consumer Electronics. [S.l.]:IEEE Press,2011:228-231.
[6]JIN S,CHO J,PHAM X D,et al.FPGA design and implementation ofa real-time stereo vision system[J].IEEE Trans.Circuits and Systems for Video Technology,2010,20(1):15-26.
[7]JOHNSON-WILLIAMS N G,MIYAOKA R S,LI X,et al.Design of a real time FPGA-based three dimensional positioning algorithm[J].IEEE Trans.Nuclear Science,2011,58(1):26-33.
[8]ZABIH R.Non-parametric local transforms for computing visual correspondence[C]//Proc.ECCV ’94. [S.l.]:IEEE Press,1994:150-158.
[9]ZABIH R.Individuating unknown objects by combining motion and stereo[D].Stanford,CA:Stanford University,1994.
[10]LONGFIELD S,CHANG M L.A parameterized stereo vision core for FPGAs[C]//Proc.IEEE Symposium on Field Programmable Custom Computing Machines,2009.[S.l.]:IEEE Press,2009:263-266.