??? 摘 要: 根據(jù)立體視頻的特點(diǎn),,提出基于SPIHT的雙通道立體視頻編碼" title="視頻編碼">視頻編碼方案,,并在TI公司的多媒體器件TMS320DM642上進(jìn)行了實(shí)驗(yàn),。實(shí)驗(yàn)表明,該設(shè)計(jì)方案具有實(shí)時(shí)可行性,,并較有效地減少了運(yùn)算復(fù)雜性,。
??? 關(guān)鍵詞: 立體視頻;? TMS320DM642;? 視頻編碼
?
??? 隨著三維技術(shù)的不斷發(fā)展,視頻顯示技術(shù)逐漸由平面顯示向立體顯示轉(zhuǎn)變,。與普通的單通道視頻相比,,立體視頻增加了景物的深度信息,增強(qiáng)了視覺(jué)的現(xiàn)實(shí)感和逼真感,。立體視頻技術(shù)可被廣泛應(yīng)用于數(shù)字電視,、三維視頻會(huì)議系統(tǒng)、虛擬現(xiàn)實(shí)系統(tǒng)等諸多方面,。但是立體視頻真正應(yīng)用到實(shí)際中還存在很多問(wèn)題,。其中一個(gè)重要的問(wèn)題就是立體視頻數(shù)據(jù)量巨大,幾乎是單通道視頻的兩倍,。另外,,目前的壓縮算法計(jì)算復(fù)雜度高,不利于硬件實(shí)現(xiàn)。為此,,本文提出一種新的基于SPIHT的立體視頻編碼,,減少了計(jì)算復(fù)雜度和塊效應(yīng)" title="塊效應(yīng)">塊效應(yīng),并在TMS320DM642芯片上進(jìn)行了實(shí)驗(yàn),,具有較好的實(shí)時(shí)性,。
1 基于SPIHT的雙通道立體視頻編碼
??? SPIHT為第二代嵌入式圖像編碼。嵌入式編碼的基本原理是編碼器將待編碼的比特流按重要性的不同進(jìn)行排序,,根據(jù)目標(biāo)碼率和失真度的要求,,通過(guò)監(jiān)視編碼的一些參數(shù),隨時(shí)可以截?cái)啾忍亓?,結(jié)束編碼,;同樣,對(duì)于給定碼流解碼器也能夠隨時(shí)結(jié)束解碼,,并可以得到相應(yīng)重建圖像,。與傳統(tǒng)的基于DCT的圖像編碼相比,有效地克服了塊效應(yīng),,在低比特率時(shí)也能夠恢復(fù)較好的圖像,,所以嵌入式編碼在網(wǎng)絡(luò)、無(wú)線傳輸有廣泛的應(yīng)用前景,。本文采用的是易于硬件實(shí)現(xiàn)的無(wú)鏈表SPIHT算法NLS[1]。
??? 立體視頻攝取系統(tǒng)通常是從兩個(gè)視角對(duì)同一景物進(jìn)行拍攝,,對(duì)于立體視頻編碼而言,,除了考慮圖像自身的冗余度外,還要考慮左右通道圖像之間的空間冗余度,。對(duì)于前者,,采用NLS嵌入式編碼去除冗余,而對(duì)于后者可以利用視差估計(jì)補(bǔ)償?shù)姆椒▉?lái)去除冗余,。將兩個(gè)通道視頻流" title="視頻流">視頻流分為主視頻序列和副視頻序列,。副視頻圖像" title="視頻圖像">視頻圖像以主視頻圖像為參考進(jìn)行視差估計(jì),具體步驟為:將副視頻圖像分成16×16的塊,,在相應(yīng)的主視頻搜索最佳匹配塊,,得到視差圖,最后再對(duì)視差圖進(jìn)行NLS編碼,。本文采用的搜索區(qū)域?yàn)?6×32,。其算法流程圖如圖1所示。
?
2 基于TMS320DM642硬件實(shí)現(xiàn)
??? TMS320DM642是TI公司推出的針對(duì)多媒體應(yīng)用的C6000系列的一款DSP芯片,,該芯片時(shí)鐘頻率為600MHz,,8個(gè)并行運(yùn)算單元,處理能力達(dá)4 800MIPS,,集成了一系列的外設(shè)以適應(yīng)視頻和影像技術(shù)的發(fā)展[2],。其中包括三個(gè)能夠進(jìn)行無(wú)延滯視頻輸入,、視頻輸出或傳輸流輸入的可配置視頻端口,這三個(gè)端口可以被獨(dú)立配置,,能與各種視頻A/D,、D/A芯片進(jìn)行無(wú)縫連接,使硬件電路的設(shè)計(jì)更方便,。并且這些端口支持BT.656,、RAWVIDEO等多種數(shù)字視頻格式。增加了一個(gè)10/100Mb/s Ethernet MAC,,并通過(guò)寄存器配置,,提供一定的網(wǎng)絡(luò)保證。另外,,具有面向音頻應(yīng)用的McASP,。
??? 本文采用TDS642 EVM開(kāi)發(fā)平臺(tái)[3]進(jìn)行開(kāi)發(fā)設(shè)計(jì)。該板擁有豐富的外圍接口,,主要接口有:1片TI公司的TMS320DM642 DSP,;標(biāo)準(zhǔn)PCI計(jì)算機(jī)插槽;2片視頻解碼芯片,,1片視頻編碼芯片,,用于視頻信號(hào)的A/D、D/A轉(zhuǎn)換,;32MB SDRAM,;基于FPGA的OSD;4MB非易失性Flash存儲(chǔ)器,;TLV320AIC23立體聲多媒體編解碼芯片,;以太網(wǎng)接口;可配置的boot load操作JTAG仿真口,;8個(gè)用戶(hù)可編程LED,;子板擴(kuò)展插槽。
??? 開(kāi)發(fā)板具有兩個(gè)視頻輸入端口,,非常適合立體視頻編碼,。視頻輸出口連接顯示器,用于顯示主視頻流,、測(cè)試實(shí)時(shí)性,,立體視頻合成碼流通過(guò)Ethernet MAC傳輸,用戶(hù)端解碼播放立體視頻圖像,。硬件設(shè)計(jì)結(jié)構(gòu)如圖2所示,。
?
3 基于DSP的程序設(shè)計(jì)與優(yōu)化
3.1 程序設(shè)計(jì)
??? 程序設(shè)計(jì)主要采用TI公司推薦使用的TMS320DM642 Video Port Mini-Driver即視頻端口微型驅(qū)動(dòng)函數(shù),與DSP/BIOS" title="DSP/BIOS">DSP/BIOS的IOM設(shè)備驅(qū)動(dòng)函數(shù)是一致的。視頻設(shè)備硬件驅(qū)動(dòng)一般分為上下兩層,,下層為IOM驅(qū)動(dòng),,上層為FVID模式。FVID為視頻圖像的輸入和輸出提供了標(biāo)準(zhǔn)的應(yīng)用程序接口(APIs),,是DSP/BIOS GIO驅(qū)動(dòng)的簡(jiǎn)單封裝,。使用FVID提供的函數(shù)可以有效地減少編寫(xiě)代碼的工作量,并且只需要少量修改便可以很方便地將寫(xiě)好的程序移植到不同的DSP芯片上,,提高了程序的靈活性,。
??? 程序在DSP/BIOS基礎(chǔ)上實(shí)現(xiàn),DSP/BIOS是DSP開(kāi)發(fā)過(guò)程中的重要工具,。DSP/BIOS是TI公司推出的一個(gè)可裁減的實(shí)時(shí)操作系統(tǒng),,用戶(hù)在DSP/BIOS上編寫(xiě)多任務(wù)應(yīng)用程序很方便;DSP/BIOS提供了類(lèi)似于先占式的多線程運(yùn)行方式,、線程管理,、實(shí)時(shí)分析和配置工具;DSP/BIOS本身占用很少的CPU資源,,并且提供底層的應(yīng)用函數(shù)接口,。
??? DSP/BIOS中把任務(wù)稱(chēng)之為線程,一個(gè)線程就是一個(gè)單獨(dú)的控制點(diǎn),,可能包含一個(gè)子程序,、一個(gè)宏或者是一個(gè)函數(shù)調(diào)用。DSP/BIOS提供了以下幾種線程類(lèi)型,,優(yōu)先級(jí)從高到低分別為:硬件中斷HWI(含CLK模塊),、軟件中斷SWI(含PRD模塊)、任務(wù)TSK,、后臺(tái)線程IDL,。
??? 本文采用任務(wù)線程TSK,,設(shè)置了tskVideoCapture任務(wù)函數(shù),,用于獲取視頻圖像。同時(shí)在Device Drivers中的User defined Devices定義了三個(gè)設(shè)備:VP0CAPTURE,、VP1CAPTURE和VP2DISPLAY,分別對(duì)應(yīng)兩個(gè)視頻輸入解碼芯片SAA7115和一個(gè)視頻輸出編碼芯片SAA7105,。
3.2 程序優(yōu)化
??? 由于視頻處理的數(shù)據(jù)量大,數(shù)據(jù)處理相關(guān)性高,,因此,,如何針對(duì)視頻處理的特點(diǎn)對(duì)DSP 進(jìn)行優(yōu)化編程,充分發(fā)揮其性能就成為提高整個(gè)系統(tǒng)性能的關(guān)鍵,。程序優(yōu)化從如下幾個(gè)方面進(jìn)行考慮[4]:
??? (1)選用TI公司CCS軟件的C 編譯器的各種優(yōu)化選項(xiàng)自動(dòng)優(yōu)化:TI公司的編譯開(kāi)發(fā)工具CCS為程序開(kāi)發(fā)人員提供了多種優(yōu)化選項(xiàng),,通過(guò)這些優(yōu)化選項(xiàng)的使用,能夠?qū)代碼進(jìn)行極大的優(yōu)化。
??? (2)存儲(chǔ)空間:DSP的程序數(shù)據(jù)存儲(chǔ)空間非常有限,,但DSP存儲(chǔ)空間的配置十分重要,。因此,對(duì)于視頻編解碼這種需要處理大量數(shù)據(jù)的程序而言,,必須合理地安排數(shù)據(jù)和程序的存儲(chǔ)方式,,實(shí)現(xiàn)對(duì)存儲(chǔ)器的優(yōu)化配置,以便提高程序執(zhí)行的效率,。DSP對(duì)不同的存儲(chǔ)單元的訪問(wèn)速度是有區(qū)別的,,對(duì)片內(nèi)寄存器的訪問(wèn)速度最快。因此,,合理地配置和使用存儲(chǔ)空間,,對(duì)系統(tǒng)整體效率影響很大,應(yīng)該盡可能地把訪問(wèn)比較頻繁的常數(shù)表和代碼段裝入片內(nèi)RAM,。如果過(guò)大,,則把其中一部分裝入片外存儲(chǔ)器。
??? 在NLS算法中需要四個(gè)表,,分別為val表,、gmax表、dmax表和mark表,。所有這些表的大小都是事先知道的,,所以完全可以放入片內(nèi)事先分配好內(nèi)存空間。
??? 另外,,在視差估計(jì)過(guò)程中,,可以通過(guò)芯片的EDMA功能以乒乓方式輪流放入L2 SDRAM中的當(dāng)前視差估計(jì)塊緩沖區(qū)A或B中,以加快DSP讀取速度,。同時(shí),,以該塊的一個(gè)預(yù)測(cè)位置為中心的一個(gè)56×32的搜索窗口從對(duì)應(yīng)的參考幀中取出放入當(dāng)前搜索窗口緩沖區(qū)中,以方便程序在該窗口內(nèi)進(jìn)行視差匹配搜索,。只有在該塊視差估計(jì)完成后才把該塊的視差數(shù)據(jù)寫(xiě)入外部SDRAM中緩沖區(qū)的對(duì)應(yīng)位置,。
??? (3)C語(yǔ)言?xún)?yōu)化處理:在DSP的寄存器中,有符號(hào)數(shù)據(jù)存取要進(jìn)行符號(hào)位擴(kuò)展,,int類(lèi)型數(shù)據(jù)本身已經(jīng)是32位,,存儲(chǔ)在32位寄存器中可以避免不必要的符號(hào)位擴(kuò)展。在使用循環(huán)變量時(shí),,應(yīng)盡量使其為int型或unsigned int型數(shù)據(jù),,用register關(guān)鍵字聲明。register關(guān)鍵字可以用來(lái)告訴編譯器一個(gè)變量將會(huì)被多次使用,,可以把它放入寄存器中,,以節(jié)省大部分的循環(huán)時(shí)間,。
??? 本文NLS算法中涉及的小波變換采用TI公司提供的IMG_wave_horz和IMG_wave_vert小波變換庫(kù)函數(shù)實(shí)現(xiàn),極大地提高了運(yùn)算速度,。
??? (4)匯編級(jí)的優(yōu)化:對(duì)于程序中特別影響速度的地方,,如視差估計(jì)部分可以改為線性匯編程序。線性匯編是C6000系列DSP所特有的類(lèi)匯編工具,,只需按照C代碼的自然順序,,寫(xiě)出線性匯編語(yǔ)句,不必考慮功能單元的分配以及指令的并行性,。因此,,它比編寫(xiě)純匯編語(yǔ)句耗時(shí)要少,又具有較高的執(zhí)行效率,。使用線性匯編可以開(kāi)發(fā)出高度并行的代碼,,代碼效率達(dá)到人工編寫(xiě)匯編代碼效率的90%以上,同時(shí)還可以降低編程工作量,,縮短開(kāi)發(fā)周期,。
4 試驗(yàn)結(jié)果與討論
??? 本算法對(duì)立體圖像的測(cè)試結(jié)果如圖3所示,圖像格式為QCIF,。
?
??? 在DSP上通過(guò)顯示器測(cè)試主視頻序列運(yùn)行情況時(shí),,每秒可處理20幀左右的圖像,畫(huà)面良好,,基本達(dá)到了實(shí)時(shí)性,。在試驗(yàn)室內(nèi)部,通過(guò)局域網(wǎng)絡(luò)傳輸,,可在用戶(hù)接收端播放立體視頻圖像,。
??? 本文提出的算法在同一視頻流相鄰幀之間沒(méi)有采用傳統(tǒng)的運(yùn)動(dòng)估計(jì)和補(bǔ)償算法,可以減少算法的復(fù)雜度并有利于硬件實(shí)現(xiàn),。并且可在低比特率傳輸?shù)那闆r下有效地除去傳統(tǒng)算法的塊效應(yīng),,這也是本算法的特點(diǎn)之一。其缺點(diǎn)是在于視頻流有較多的冗余信息,。今后研究的方向?qū)?cè)重于怎樣在NLS編碼的基礎(chǔ)上再除去相鄰幀冗余并且減少塊效應(yīng),。
參考文獻(xiàn)
[1] WEN Kuo Lin,BURGESS N.Listless zerotree coding for?color image.Conference Record of Thirty-Second Asilomar? Conference on Signals,,Systems and Computers,,1998,,1:231-235.
[2] 聞亭科技發(fā)展有限責(zé)任公司.Introduction to DM642:the?digital media processor.2004.
[3] 聞亭科技發(fā)展有限責(zé)任公司.TDS642EVM多路實(shí)時(shí)圖像處理平臺(tái)用戶(hù)使用手冊(cè)V1.1,,2005.
[4] 郭卓鋒,丁艷.基于DSP的實(shí)時(shí)圖像處理系統(tǒng)的設(shè)計(jì).光學(xué)技術(shù),,2004,,(1).