王建偉,滕國偉,2,李賀建,鄒雪妹
(1.上海大學通信與信息工程學院,上海 200072;2.上海國茂數字技術有限公司,上海 201204)
責任編輯:哈宏疆
在多視點或自由視頻3DTV實時顯示系統中,包含了前端視頻采集、編碼傳送、解碼顯示等部分。多視點或者自由視點視頻其數據量遠比單視采用H.264編碼方法的數據量要大。一般而言,若考慮的多視點是9個視點,如果9個視點采用基于H.264聯播方式編碼,數據量就是原來的9倍。鑒于此,2009年JVT推出了MVD(多視+深度)數據模式。在該模式中,對傳輸的視頻端除了原來視點的紋理彩色視頻外,對于每個視點都附加一個與之相應的深度圖視頻。提出深度圖的概念有2個最直觀的好處:
1)深度圖較平坦,對編碼來說效率極高,即使采用H.264的編碼方式其編碼比特率也僅是彩色視頻編碼比特率的20%~30%。
2)通過提取具有場景幾何信息的深度,可繪制出高質量的虛擬視。
綜上所述,快速準確地提取深度圖是實時3DTV系統的關鍵,也是MVD模式的核心,因此諸多學者對此從未停止探索的腳步。
就深度提取而言,現階段的主要研究重點是對極線校正過的測試序列提取準確的深度信息,減少遮擋和誤匹配點的比率,提高繪制端虛擬視頻的質量,并且提高深度信息的提取速度。最常用的圖像像素點的匹配方法是立體匹配算法(stereo matching),通常來說,其可分為局部算法和全局算法。全局匹配算法一般用相容性約束和平滑性約束來構成一個評價函數,再通過各種最優算法求得評價函數的最小值。由于基于全局的匹配算法是全局尋優,所以匹配準確性較高,可直接獲得致密的視差圖,尤其是采用圖割思想的算法在精度上取得了很好的效果。但是當前應用比較廣泛的全局立體匹配算法大多還存在著自身的缺陷,例如圖割匹配算法能夠實現較好的匹配效果,但其不可避免的缺點是計算量過大,難以滿足實時性要求;動態規劃法可得到稠密的視差圖,但不能得到較好的匹配精度,水平和垂直連續性約束整合不夠,所得的視差圖會存在瑕疵。局部算法中大多是采用窗口的匹配算法,先根據圖像特點制定相應的相似度測量準則,在一定的區域上來計算相似度。局部匹配算法實現簡單,速度快,但對噪聲較敏感,對遮擋區域、無紋理區域和視差不連續區域的匹配效果不理想。也有通過計算角點、特征點的基于特征的匹配方法,但是如果這樣做同樣難以得到致密的像素級的深度圖。就最新的發展來看,對于深度提取的實時性要求越來越高,窗口式的局部算法應用較廣,具體過程為通過視差d將參考圖像和目標圖像的窗口聯系起來,通過兩個窗口內數據的相似度測量,在諸多視差參考值中利用WTA(Winner Takes All)原理選取其中最為相似的一個視差值作為結果。
對于深度圖的提取,從研究方向和實現方法上都大致可分為軟件和硬件兩大類。軟件方面可對深度提取方法進行靈活配置,但由于普通計算機處理器的指令循環機制,海量數據操作會造成大量結構指令周期延遲而使得難以達到實時性的要求。例如日本名古屋大學深度估計參考軟件DERS,其對深度圖的提取從匹配區域選擇、相似準則、時間一致性增強、后處理等方面都進行了優化,但其執行速率遠遠不能滿足實時的需求。即使不選擇時間一致性增強等方面的功能,該軟件在2.53 GHz的PC平臺上對一幀1024×768深度圖進行提取所需時間也在5 min以上。
在實時3DTV系統中,深度圖的提取必須是實時的,這就要求系統必須高速處理大量數據,而這必須在合適的硬件平臺上用合理的系統架構才能實現。從20世紀80年代末期人們就開始研究利用各種硬件架構來實現深度提取。S.Kimura和T.Shinbo等人設計了一種基于卷積器的實時立體器(SAZAN)以20 f/s(幀/秒)的速率生成320×240分辨率的深度圖[1]。A.Darabiha和J.Rose等人使用Xilinx XC2V2000 FPGA以大約30 f/s的速率生成640 ×480分辨率的深度圖[2]。
可用于深度圖提取的硬件平臺有多種,針對立體視覺的硬件加速方法可分為以下4類[3]:
1)ASIC(通用集成電路)。采用ASIC可以使立體視覺的硬件加速達到最優性能,Y.Jia和X.Zhang等人利用DeepSea處理器設計了立體視覺系統[4]。但ASIC投入成本過高,開發周期過長,靈活性差,難以普及使用。
2)DSP。DSP的哈佛總線結構使其能夠適應大數據量的通信需求,內部的硬件乘法器等資源以及多級流水等特性也能夠很好地滿足設計的高強度需求。文獻[3]中提出了立體匹配算法的DSP實現方法,利用TiC64xDSP并行計算進行立體匹配。
3)GPU(圖形處理卡)。GPU在處理視頻數據時不占用CPU資源,可多條繪制流水線并行計算,能夠高密集地運算,且具有超長圖形流水線。文獻[5]提出了利用GPU進行立體匹配得出深度圖。
4)FPGA(現場可編程門陣列)。FPGA自身的結構很適合底層立體視覺的單指令多數據流并行處理,其內部大量的存儲單元,也可以很好地實現立體視覺算法的多級流水特性。文獻[6]和文獻[7]分別提出利用FPGA進行立體匹配,從而快速得到深度圖。
基于現有實驗條件,根據census transform、立體匹配、流水的WTA算法特征,選擇FPGA作為平臺對算法進行實現。
立體匹配算法是立體視覺中的關鍵算法,假設兩路視頻是經過水平矯正的,根據硬件平臺特點,對欲求取視差的兩路視圖分別進行CT變換,然后將參考視的某一像素點作為參考像素,在視差視圖的視差范圍內求出所有像素點與該參考像素點census序列的漢明距,接著進行WTA最優選擇,視差范圍內與參考像素漢明距最小的像素點可視為與參考像素點相似度最高,即為該參考視點對應的匹配點,該匹配點位置與參考像素位置的相對平移量即為參考像素的視差,最后將所得視差轉換為深度圖。
基于實驗效果和實驗條件的綜合考慮,本文選擇CT變換(census transform)[8-9]作為基本原理進行立體匹配,該算法是由Zabih和Woodfill提出的一種非參數化的立體匹配方法。以下就實際運用對該算法的執行過程進行說明:在視圖中選取任一點,以該點為中心劃出一個例如3×3的矩形,矩形中除中心點之外的每一點都與中心點進行比較,灰度值(intensity value)小于中心點即記為0,灰度大于中心點的則記為1,以所得長度為8的只有0和1的序列作為該中心點的census序列。按照此過程,將視圖上的所有點都轉換成相應的census序列,變換過程如圖1所示。

圖1 CT變換過程
由上可知,CT變換是CT窗口內中心像素與周圍像素相比較的結果,是CT變換窗口中心像素的一種特征表示。隨著CT窗口和視差搜索范圍的增大,FPGA資源占用率將急劇增加[10]。對于m×m大小的CT窗口,n×n大小的立體匹配范圍(匹配視圖大小),及r大小的視差搜索范圍,求取視差的計算量為:(r+1)·m2·(n2-1)次的像素值相減,r·m2次對n2-1長度的比特向量進行漢明距計算,r·m2次漢明距相加[2]。由此可知,CT變換窗口大小、匹配視圖的分辨率及視差范圍的大小對于深度提取的執行效率和資源占用有著決定性的影響。過大的視差圖分辨率、CT變換窗口都會對實現平臺造成過大的計算負載。與此同時,CT變換窗口越大,中心像素與周圍像素比較結果越全面,那么系統后端根據漢明距所求的視差值就越準確。
為適應于高分辨率的深度圖提取,同時便于增大CT變換窗口和視差搜索范圍來提高視差提取結果準確度,而又不至于對執行效率和資源占用率造成過多影響,本文提出大范圍稀疏CT變換,使變換窗口的中心像素在45°十字形方向上隔行隔列地與周圍像素進行比較,其他位置上像素點的比較則省略。如圖2所示,CT變換窗口為15×15,census序列長度由原來的224降為16,使匹配精度與復雜度之間達到一個較好的平衡。

圖2 大范圍稀疏CT變換過程
所謂圖像匹配就是在視差圖中找出與參考像素點相似度最高的點,而漢明(hamming)距正是視差圖像素與參考像素相似度的度量。具體而言,對于欲求取視差的左右視圖,要比較兩個視圖中兩點的相似度,可將此兩點的census值逐位進行異或運算,然后計算結果為1的個數,記為此兩點之間的漢明值,漢明值是兩點間相似度的一種體現,漢明值愈小,兩點相似度愈大。由上可知census序列度量的是一個矩形的中心像素和周圍像素的灰度值比較結果,并非像素灰度值本身,因此對于由光照不均勻引起的左右圖像亮度差異以及窗口內的隨機噪聲是穩健的。
實現架構充分利用FPGA的并行性和流水結構。在FPGA中取15個Block RAM分別作為Line Buffer,對一幅圖像的15行分別進行緩存,每一個Block RAM的大小取4096 bit,支持視差圖的分辨率高達1920×1080。以視頻數據的行、幀同步信號及數據有效信號作為控制信號控制算法變換過程中的時序,在第15個Line Buffer存在有效數據輸出之后即可對前后15行范圍內相應位置上的數據進行比較,從而進行CT變換,如圖3中①②部分;兩路分別進行CT變換得到相應的census序列,在視差視圖上將視差范圍內所有像素的census序列分別與參考視圖中指定像素的census序列進行異或,所得結果分別是這些像素與參考像素的漢明距,如圖3③部分;將所得漢明距進行如圖3④部分的WTA最優選擇,得出視差范圍內具有最小漢明距的像素的位置,該位置即為參考像素對應視差;最后一步如圖3⑤部分所示,將視差轉換為深度即可。需要補充的一點是視差和深度只是幾何關系轉換,可采用查找表結構實現。

圖3 深度提取算法系統架構
實驗取champagne視差序列相鄰兩個視點同一幀圖像,圖像分辨率為1280×960,通過本文提出算法進行立體匹配和視差提取,結果如圖4所示。

圖4 深度圖的提取結果
從圖4b可以看到在圖像背景處深度數據有部分錯誤,這是由于圖像背景呈單一無紋理區域,圖像匹配部分發生錯誤所致,對于重復紋理區域會產生同樣的匹配錯誤。在立體匹配過程中類似誤匹配的問題幾乎是無法避免的,在本文給出的系統中可以后續通過增大CT變換窗口大小,增加LR-check(左右連續性檢查)、單值檢驗、尖峰消除、亞像素估計等后處理對匹配準確性進行改善。
在深度提取算法的硬件實現過程中,FPGA選用Altera Arria II GX260,其主要內部資源數如表1所示,這些資源對于存儲和高速并行運算都是很有優勢的。深度提取Verilog程序經過綜合、映射、翻譯、布局布線后,連同視頻采集卡SDI協議解析、DDR2訪問、PCIE訪問等功能,資源占用情況如表2所示。

表1 FPGA主要參數

表2 程序適配后FPGA資源占用情況
普通計算機處理器的指令循環機制造成了其無法勝任深度實時提取的事實,而FPGA的并行結構和流水結構的固有特點恰恰能夠在海量數據并行處理方面發揮其特長。本文利用經過改進的大范圍稀疏CT變換,通過對大量視頻數據的并行計算進行立體匹配,并通過流水線結構對最優像素點進行選擇,并在FPGA平臺上實現。該方案能夠實現高分辨率深度圖的實時提取,并能自動適應不同分辨率,配合深度圖后處理操作,將成為實時3D系統中重要組成部分。
通過深度圖提取算法的硬件實現過程中,行幀同步信號的調整是實際操作過程中的又一難題,因為得到的深度圖和參考視圖只有和同一個位置的像素上一一對應,才使得在3DTV的系統終端進行準確的繪制成為可能。這就要求統籌考慮Line Buffer緩存、CT窗口大小、WTA過程寄存等模塊,分別對行同步信號、幀同步信號、數據使能信號進行準確的緩存調整,使其與深度數據嚴格同步。另外,在Line Buffer寫數據時,將其寫地址在視頻數據時鐘的下降沿進行變化,這樣可以有效保證數據寫入的建立保持時間。系統每一個模塊根據所得結果時序對同步信號利用寄存器進行寄存或利用FIFO進行緩存。最后使得深度圖上的有效值與參考視圖每一個有效像素一一對應。
[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實現[J].科技通報,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.