《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動態(tài) > 基于SPIHT的立體視頻編碼及其TMS320DM642實現(xiàn)

基于SPIHT的立體視頻編碼及其TMS320DM642實現(xiàn)

2008-07-25
作者:高 韜,劉正光

??? 摘 要: 根據(jù)立體視頻的特點,提出基于SPIHT的雙通道立體視頻編碼" title="視頻編碼">視頻編碼方案,并在TI公司的多媒體器件TMS320DM642上進(jìn)行了實驗。實驗表明,該設(shè)計方案具有實時可行性,并較有效地減少了運算復(fù)雜性。
??? 關(guān)鍵詞: 立體視頻;? TMS320DM642;? 視頻編碼

?

??? 隨著三維技術(shù)的不斷發(fā)展,視頻顯示技術(shù)逐漸由平面顯示向立體顯示轉(zhuǎn)變。與普通的單通道視頻相比,立體視頻增加了景物的深度信息,增強(qiáng)了視覺的現(xiàn)實感和逼真感。立體視頻技術(shù)可被廣泛應(yīng)用于數(shù)字電視、三維視頻會議系統(tǒng)、虛擬現(xiàn)實系統(tǒng)等諸多方面。但是立體視頻真正應(yīng)用到實際中還存在很多問題。其中一個重要的問題就是立體視頻數(shù)據(jù)量巨大,幾乎是單通道視頻的兩倍。另外,目前的壓縮算法計算復(fù)雜度高,不利于硬件實現(xiàn)。為此,本文提出一種新的基于SPIHT的立體視頻編碼,減少了計算復(fù)雜度和塊效應(yīng)" title="塊效應(yīng)">塊效應(yīng),并在TMS320DM642芯片上進(jìn)行了實驗,具有較好的實時性。
1 基于SPIHT的雙通道立體視頻編碼
??? SPIHT為第二代嵌入式圖像編碼。嵌入式編碼的基本原理是編碼器將待編碼的比特流按重要性的不同進(jìn)行排序,根據(jù)目標(biāo)碼率和失真度的要求,通過監(jiān)視編碼的一些參數(shù),隨時可以截斷比特流,結(jié)束編碼;同樣,對于給定碼流解碼器也能夠隨時結(jié)束解碼,并可以得到相應(yīng)重建圖像。與傳統(tǒng)的基于DCT的圖像編碼相比,有效地克服了塊效應(yīng),在低比特率時也能夠恢復(fù)較好的圖像,所以嵌入式編碼在網(wǎng)絡(luò)、無線傳輸有廣泛的應(yīng)用前景。本文采用的是易于硬件實現(xiàn)的無鏈表SPIHT算法NLS[1]。
??? 立體視頻攝取系統(tǒng)通常是從兩個視角對同一景物進(jìn)行拍攝,對于立體視頻編碼而言,除了考慮圖像自身的冗余度外,還要考慮左右通道圖像之間的空間冗余度。對于前者,采用NLS嵌入式編碼去除冗余,而對于后者可以利用視差估計補償?shù)姆椒▉砣コ哂?。將兩個通道視頻流" title="視頻流">視頻流分為主視頻序列和副視頻序列。副視頻圖像" title="視頻圖像">視頻圖像以主視頻圖像為參考進(jìn)行視差估計,具體步驟為:將副視頻圖像分成16×16的塊,在相應(yīng)的主視頻搜索最佳匹配塊,得到視差圖,最后再對視差圖進(jìn)行NLS編碼。本文采用的搜索區(qū)域為56×32。其算法流程圖如圖1所示。

?


2 基于TMS320DM642硬件實現(xiàn)
??? TMS320DM642是TI公司推出的針對多媒體應(yīng)用的C6000系列的一款DSP芯片,該芯片時鐘頻率為600MHz,8個并行運算單元,處理能力達(dá)4 800MIPS,集成了一系列的外設(shè)以適應(yīng)視頻和影像技術(shù)的發(fā)展[2]。其中包括三個能夠進(jìn)行無延滯視頻輸入、視頻輸出或傳輸流輸入的可配置視頻端口,這三個端口可以被獨立配置,能與各種視頻A/D、D/A芯片進(jìn)行無縫連接,使硬件電路的設(shè)計更方便。并且這些端口支持BT.656、RAWVIDEO等多種數(shù)字視頻格式。增加了一個10/100Mb/s Ethernet MAC,并通過寄存器配置,提供一定的網(wǎng)絡(luò)保證。另外,具有面向音頻應(yīng)用的McASP。
??? 本文采用TDS642 EVM開發(fā)平臺[3]進(jìn)行開發(fā)設(shè)計。該板擁有豐富的外圍接口,主要接口有:1片TI公司的TMS320DM642 DSP;標(biāo)準(zhǔn)PCI計算機(jī)插槽;2片視頻解碼芯片,1片視頻編碼芯片,用于視頻信號的A/D、D/A轉(zhuǎn)換;32MB SDRAM;基于FPGA的OSD;4MB非易失性Flash存儲器;TLV320AIC23立體聲多媒體編解碼芯片;以太網(wǎng)接口;可配置的boot load操作JTAG仿真口;8個用戶可編程LED;子板擴(kuò)展插槽。
??? 開發(fā)板具有兩個視頻輸入端口,非常適合立體視頻編碼。視頻輸出口連接顯示器,用于顯示主視頻流、測試實時性,立體視頻合成碼流通過Ethernet MAC傳輸,用戶端解碼播放立體視頻圖像。硬件設(shè)計結(jié)構(gòu)如圖2所示。

?

3 基于DSP的程序設(shè)計與優(yōu)化
3.1 程序設(shè)計

??? 程序設(shè)計主要采用TI公司推薦使用的TMS320DM642 Video Port Mini-Driver即視頻端口微型驅(qū)動函數(shù),與DSP/BIOS" title="DSP/BIOS">DSP/BIOS的IOM設(shè)備驅(qū)動函數(shù)是一致的。視頻設(shè)備硬件驅(qū)動一般分為上下兩層,下層為IOM驅(qū)動,上層為FVID模式。FVID為視頻圖像的輸入和輸出提供了標(biāo)準(zhǔn)的應(yīng)用程序接口(APIs),是DSP/BIOS GIO驅(qū)動的簡單封裝。使用FVID提供的函數(shù)可以有效地減少編寫代碼的工作量,并且只需要少量修改便可以很方便地將寫好的程序移植到不同的DSP芯片上,提高了程序的靈活性。
??? 程序在DSP/BIOS基礎(chǔ)上實現(xiàn),DSP/BIOS是DSP開發(fā)過程中的重要工具。DSP/BIOS是TI公司推出的一個可裁減的實時操作系統(tǒng),用戶在DSP/BIOS上編寫多任務(wù)應(yīng)用程序很方便;DSP/BIOS提供了類似于先占式的多線程運行方式、線程管理、實時分析和配置工具;DSP/BIOS本身占用很少的CPU資源,并且提供底層的應(yīng)用函數(shù)接口。
??? DSP/BIOS中把任務(wù)稱之為線程,一個線程就是一個單獨的控制點,可能包含一個子程序、一個宏或者是一個函數(shù)調(diào)用。DSP/BIOS提供了以下幾種線程類型,優(yōu)先級從高到低分別為:硬件中斷HWI(含CLK模塊)、軟件中斷SWI(含PRD模塊)、任務(wù)TSK、后臺線程IDL。
??? 本文采用任務(wù)線程TSK,設(shè)置了tskVideoCapture任務(wù)函數(shù),用于獲取視頻圖像。同時在Device Drivers中的User defined Devices定義了三個設(shè)備:VP0CAPTURE、VP1CAPTURE和VP2DISPLAY,分別對應(yīng)兩個視頻輸入解碼芯片SAA7115和一個視頻輸出編碼芯片SAA7105。
3.2 程序優(yōu)化
??? 由于視頻處理的數(shù)據(jù)量大,數(shù)據(jù)處理相關(guān)性高,因此,如何針對視頻處理的特點對DSP 進(jìn)行優(yōu)化編程,充分發(fā)揮其性能就成為提高整個系統(tǒng)性能的關(guān)鍵。程序優(yōu)化從如下幾個方面進(jìn)行考慮[4]
??? (1)選用TI公司CCS軟件的C 編譯器的各種優(yōu)化選項自動優(yōu)化:TI公司的編譯開發(fā)工具CCS為程序開發(fā)人員提供了多種優(yōu)化選項,通過這些優(yōu)化選項的使用,能夠?qū)代碼進(jìn)行極大的優(yōu)化。
??? (2)存儲空間:DSP的程序數(shù)據(jù)存儲空間非常有限,但DSP存儲空間的配置十分重要。因此,對于視頻編解碼這種需要處理大量數(shù)據(jù)的程序而言,必須合理地安排數(shù)據(jù)和程序的存儲方式,實現(xiàn)對存儲器的優(yōu)化配置,以便提高程序執(zhí)行的效率。DSP對不同的存儲單元的訪問速度是有區(qū)別的,對片內(nèi)寄存器的訪問速度最快。因此,合理地配置和使用存儲空間,對系統(tǒng)整體效率影響很大,應(yīng)該盡可能地把訪問比較頻繁的常數(shù)表和代碼段裝入片內(nèi)RAM。如果過大,則把其中一部分裝入片外存儲器。
??? 在NLS算法中需要四個表,分別為val表、gmax表、dmax表和mark表。所有這些表的大小都是事先知道的,所以完全可以放入片內(nèi)事先分配好內(nèi)存空間。
??? 另外,在視差估計過程中,可以通過芯片的EDMA功能以乒乓方式輪流放入L2 SDRAM中的當(dāng)前視差估計塊緩沖區(qū)A或B中,以加快DSP讀取速度。同時,以該塊的一個預(yù)測位置為中心的一個56×32的搜索窗口從對應(yīng)的參考幀中取出放入當(dāng)前搜索窗口緩沖區(qū)中,以方便程序在該窗口內(nèi)進(jìn)行視差匹配搜索。只有在該塊視差估計完成后才把該塊的視差數(shù)據(jù)寫入外部SDRAM中緩沖區(qū)的對應(yīng)位置。
??? (3)C語言優(yōu)化處理:在DSP的寄存器中,有符號數(shù)據(jù)存取要進(jìn)行符號位擴(kuò)展,int類型數(shù)據(jù)本身已經(jīng)是32位,存儲在32位寄存器中可以避免不必要的符號位擴(kuò)展。在使用循環(huán)變量時,應(yīng)盡量使其為int型或unsigned int型數(shù)據(jù),用register關(guān)鍵字聲明。register關(guān)鍵字可以用來告訴編譯器一個變量將會被多次使用,可以把它放入寄存器中,以節(jié)省大部分的循環(huán)時間。
??? 本文NLS算法中涉及的小波變換采用TI公司提供的IMG_wave_horz和IMG_wave_vert小波變換庫函數(shù)實現(xiàn),極大地提高了運算速度。
??? (4)匯編級的優(yōu)化:對于程序中特別影響速度的地方,如視差估計部分可以改為線性匯編程序。線性匯編是C6000系列DSP所特有的類匯編工具,只需按照C代碼的自然順序,寫出線性匯編語句,不必考慮功能單元的分配以及指令的并行性。因此,它比編寫純匯編語句耗時要少,又具有較高的執(zhí)行效率。使用線性匯編可以開發(fā)出高度并行的代碼,代碼效率達(dá)到人工編寫匯編代碼效率的90%以上,同時還可以降低編程工作量,縮短開發(fā)周期。
4 試驗結(jié)果與討論
??? 本算法對立體圖像的測試結(jié)果如圖3所示,圖像格式為QCIF。

?


??? 在DSP上通過顯示器測試主視頻序列運行情況時,每秒可處理20幀左右的圖像,畫面良好,基本達(dá)到了實時性。在試驗室內(nèi)部,通過局域網(wǎng)絡(luò)傳輸,可在用戶接收端播放立體視頻圖像。
??? 本文提出的算法在同一視頻流相鄰幀之間沒有采用傳統(tǒng)的運動估計和補償算法,可以減少算法的復(fù)雜度并有利于硬件實現(xiàn)。并且可在低比特率傳輸?shù)那闆r下有效地除去傳統(tǒng)算法的塊效應(yīng),這也是本算法的特點之一。其缺點是在于視頻流有較多的冗余信息。今后研究的方向?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多路實時圖像處理平臺用戶使用手冊V1.1,2005.
[4] 郭卓鋒,丁艷.基于DSP的實時圖像處理系統(tǒng)的設(shè)計.光學(xué)技術(shù),2004,(1).

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。