朱勝利,姚素英,徐江濤
ZHU Shengli,YAO Suying,XU Jiangtao
天津大學(xué)電子信息工程學(xué)院,天津300072
School of Electronic and Information Engineering,Tianjin University,Tianjin 300072,China
隨著CMOS圖像傳感器在智能終端中被廣泛應(yīng)用,CMOS圖像傳感器的視頻后處理涵蓋的處理技術(shù)越來越多,當(dāng)前很多高集成度的應(yīng)用處理芯片系統(tǒng)已經(jīng)將視頻編解碼也作為CMOS圖像傳感器系統(tǒng)的視頻后處理的重要部分被應(yīng)用。對(duì)于視頻編解碼技術(shù)領(lǐng)域而言,無論新一代視頻編解碼標(biāo)準(zhǔn)(如H.264、AVS等),還是上一代視頻編解碼標(biāo)準(zhǔn)(如MPEG-1、MPEG-2等),其中的運(yùn)動(dòng)估計(jì)和運(yùn)動(dòng)補(bǔ)償都是壓縮圖像時(shí)間冗余的主要方法,也是達(dá)到高壓縮比所采用的重要技術(shù)之一[1-2]。有效運(yùn)動(dòng)補(bǔ)償?shù)幕A(chǔ)是獲取參考圖像宏塊的運(yùn)動(dòng)向量,一般運(yùn)動(dòng)向量范圍都限制在已編碼的參考幀內(nèi),這種限制使對(duì)當(dāng)前幀圖像邊界宏塊進(jìn)行運(yùn)動(dòng)估計(jì)時(shí),由于參考宏塊可能已在參考幀之外而無法得到最優(yōu)效果。在運(yùn)動(dòng)圖像專家組標(biāo)準(zhǔn)MPEG-2以前壓縮標(biāo)準(zhǔn)以及國際電信聯(lián)盟視頻編解碼標(biāo)準(zhǔn)H.261中都存在因?yàn)閰⒖己陦K處于參考幀之外而無法進(jìn)行有效的運(yùn)動(dòng)補(bǔ)償。在H.263、MPEG-4以及中國音視頻編解碼國家標(biāo)準(zhǔn)AVS1.0中取消了這種限制[3],允許運(yùn)動(dòng)向量指向圖像以外區(qū)域。當(dāng)視頻圖像中存在跨邊界運(yùn)動(dòng)時(shí),這種模式能取得很大編碼增益,特別是對(duì)小圖像和邊界運(yùn)動(dòng)激烈的圖像而言。此外,這種模式允許使用更大運(yùn)動(dòng)矢量,對(duì)攝像機(jī)運(yùn)動(dòng)和手機(jī)拍攝特別有利。
本文基于采用流水線設(shè)計(jì)的AVS視頻解碼器,提出一種新型的基于像素的圖像邊界擴(kuò)展算法,對(duì)參考幀進(jìn)行高效的邊界擴(kuò)展。該算法考慮了從視頻解碼系統(tǒng)角度分析圖像數(shù)據(jù)信息和流水線設(shè)計(jì),以及視頻解碼器存儲(chǔ)器開銷的優(yōu)化。確定了圖像邊界擴(kuò)展算法在重構(gòu)幀存儲(chǔ)模塊實(shí)現(xiàn)可以達(dá)到邊界像素一次擴(kuò)展、多次使用的高效性。研究了視頻解碼中的數(shù)據(jù)信息,通過設(shè)計(jì)乒乓存儲(chǔ)器和FIFO確保在最優(yōu)緩存設(shè)計(jì)的基礎(chǔ)上實(shí)現(xiàn)流水線處理,確保了整個(gè)視頻解碼系統(tǒng)的實(shí)時(shí)性。從而在運(yùn)動(dòng)補(bǔ)償過程中能夠高效地獲取無限制運(yùn)動(dòng)向量,優(yōu)化了運(yùn)動(dòng)補(bǔ)償,增強(qiáng)了圖像的解碼效率。針對(duì)本文算法進(jìn)行了VLSI設(shè)計(jì)并用Verilog HDL描述,最后給出綜合和FPGA測(cè)試結(jié)果。以往研究中,在實(shí)現(xiàn)UMV中沒有考慮流水線設(shè)計(jì)[4]。對(duì)基于宏塊或者字節(jié)進(jìn)行邊界擴(kuò)展的方法[5],并沒考慮算法實(shí)現(xiàn)的難度,且對(duì)巨大緩存存儲(chǔ)器開銷也沒有充分考慮。本文在充分分析和考慮存儲(chǔ)器設(shè)計(jì)最優(yōu)的前提下,基于解碼器系統(tǒng)流水線設(shè)計(jì)的思想,在重構(gòu)幀存儲(chǔ)過程中實(shí)現(xiàn)了分別基于亮度像素和色度像素的圖像邊界擴(kuò)展算法,同時(shí)給出了硬件設(shè)計(jì)及測(cè)試,有助于在低成本、高效率地實(shí)現(xiàn)UMV方面有更加深入的研究。
AVS視頻解碼系統(tǒng)是基于我國自主知識(shí)產(chǎn)權(quán)的國家標(biāo)準(zhǔn)AVS1.0的新一代視頻解碼系統(tǒng)[3],此系統(tǒng)包括存儲(chǔ)控制器、圖像變長(zhǎng)解碼、反量化、反變換、幀內(nèi)預(yù)測(cè)、運(yùn)動(dòng)補(bǔ)償、抗塊效應(yīng)濾波、重構(gòu)幀存儲(chǔ)、顯示等處理單元(如圖1)?;贏VS視頻解碼器,圖像邊界擴(kuò)展系統(tǒng)主要是在重構(gòu)幀存儲(chǔ)模塊中實(shí)現(xiàn)圖像邊界擴(kuò)展算法,相關(guān)模塊包括環(huán)形濾波模塊、運(yùn)動(dòng)補(bǔ)償模塊和DRAM存儲(chǔ)器模塊。環(huán)形濾波模塊提供輸入數(shù)據(jù),重構(gòu)幀存儲(chǔ)模塊將數(shù)據(jù)進(jìn)行圖像邊界擴(kuò)展,為無限制運(yùn)動(dòng)向量的獲取奠定了基礎(chǔ),并將數(shù)據(jù)存儲(chǔ)到DRAM存儲(chǔ)器模塊中,運(yùn)動(dòng)補(bǔ)償模塊從DRAM存儲(chǔ)器模塊中獲得實(shí)現(xiàn)了無限制運(yùn)動(dòng)向量的圖像數(shù)據(jù)進(jìn)行圖像的運(yùn)動(dòng)補(bǔ)償。其中,運(yùn)動(dòng)補(bǔ)償是通過先前圖像來預(yù)測(cè)和補(bǔ)償當(dāng)前圖像,是減少幀序列冗余信息的有效方法[6-7],而重構(gòu)幀存儲(chǔ)模塊將先前圖像(參考幀)進(jìn)行了擴(kuò)展,然后存儲(chǔ)在DRAM中,運(yùn)動(dòng)補(bǔ)償模塊從DRAM實(shí)時(shí)取出所需參考幀,進(jìn)行補(bǔ)償運(yùn)算,然后將當(dāng)前圖像輸出給幀內(nèi)預(yù)測(cè)模塊。將圖像邊界擴(kuò)展系統(tǒng)設(shè)計(jì)在重構(gòu)幀存儲(chǔ)模塊中,一次性將參考幀進(jìn)行擴(kuò)展并存儲(chǔ)在DRAM中,使得運(yùn)動(dòng)補(bǔ)償模塊能夠多次使用,同時(shí)也簡(jiǎn)化了包括運(yùn)動(dòng)補(bǔ)償、幀內(nèi)預(yù)測(cè)等模塊的設(shè)計(jì),否則每個(gè)邊界模塊到使用無限制運(yùn)動(dòng)向量的時(shí)候再去擴(kuò)展并計(jì)算,會(huì)出現(xiàn)計(jì)算的高重復(fù)性和對(duì)DRAM的訪問率的提高,降低了系統(tǒng)的高效性和成本結(jié)構(gòu)。
圖1 AVS視頻解碼系統(tǒng)
針對(duì)UMV算法和視頻解碼數(shù)據(jù)結(jié)構(gòu)進(jìn)行分析,依據(jù)UMV算法要求的數(shù)據(jù)處理方式和基于流水線的視頻解碼架構(gòu)對(duì)重構(gòu)幀存儲(chǔ)模塊圖像擴(kuò)展的要求,本文提出了高效的圖像邊界擴(kuò)展算法。算法從視頻解碼器系統(tǒng)角度出發(fā),充分分析解碼圖像數(shù)據(jù)的結(jié)構(gòu)信息,依據(jù)不同圖像類型(幀模式、頂場(chǎng)模式、底場(chǎng)模式)和像素不同的位置(圖像周邊宏塊的邊界像素和四角頂點(diǎn)像素的擴(kuò)展)及不同像素類型(亮度(Y)和色度(U和V))進(jìn)行不同的擴(kuò)展方式。這些擴(kuò)展之后的數(shù)據(jù)依據(jù)UMV算法的需求存儲(chǔ)到外部存儲(chǔ)器中,提供給運(yùn)動(dòng)補(bǔ)償模塊所需的運(yùn)動(dòng)向量[8-9]。本文算法減少了中間緩存的冗余,保證了視頻解碼的實(shí)時(shí)性,為在基于流水線設(shè)計(jì)的重構(gòu)幀存儲(chǔ)模塊實(shí)現(xiàn)圖像邊界像素的實(shí)時(shí)擴(kuò)展建立了理論基礎(chǔ)。
在AVS標(biāo)準(zhǔn)里,一個(gè)亮度塊E和它的相鄰亮度8×8塊A、B、C和D之間的空間位置如圖2所示。亮度塊E的大小可以是16×16、16×8、8×16或者8×8。A、B、D都是與E的左上角樣本緊鄰的塊,C是與E的右上角樣本緊鄰的塊。而當(dāng)前塊的運(yùn)動(dòng)向量(Motion Vector,MV)計(jì)算是按照當(dāng)前塊的類型,從相鄰塊或者當(dāng)前塊在參考幀中對(duì)應(yīng)塊的MV預(yù)測(cè)出當(dāng)前塊的MV,該MV的預(yù)測(cè)值即MVP(Motion Vector Prediction),MVP和碼流中解出MV的殘差MVD(Motion Vector Decrease)相加就是所要的MV[10]。而MVD可以通過數(shù)據(jù)解析部分從碼流中得到,所以在幀間解碼中重點(diǎn)是MVP的計(jì)算。當(dāng)A、B、C都是超出圖像之外的參考宏塊,如此計(jì)算的參考幀圖像塊運(yùn)動(dòng)向量就是UMV,同樣MVD可以通過數(shù)據(jù)解析,而UMVP(Unrestricted Motion Vector Prediction)可以通過如下的計(jì)算獲得[8,11]。分如下三步:
(1)第一步計(jì)算UMVA、UMVB和UMVC:
其中,X是變量,表示亮度塊E相鄰的亮度塊A、B和C。umv表示亮度宏塊的原始運(yùn)動(dòng)向量,對(duì)應(yīng)的BlkDist表示當(dāng)前塊和它的運(yùn)動(dòng)向量所指向的參考?jí)K之間的距離。式(1)依據(jù)AVS-P2標(biāo)準(zhǔn)中對(duì)亮度塊的運(yùn)動(dòng)向量的定義進(jìn)行總結(jié)[3]。
(2)第二步計(jì)算兩個(gè)塊運(yùn)動(dòng)向量之間的空間距離[12]:
(3)第三步求UMVP:
無限制運(yùn)動(dòng)向量的預(yù)測(cè)值為:
圖2 無限制運(yùn)動(dòng)矢量示意圖
在AVS標(biāo)準(zhǔn)里,如果A、B、C都是超出圖像之外的參考宏塊,MVA、MVB和MVC都是0,這對(duì)圖像的運(yùn)動(dòng)補(bǔ)償極為不利,特別是圖像邊界有激烈運(yùn)動(dòng)的圖像塊。而采用UMV技術(shù)可以減少因?yàn)檫\(yùn)動(dòng)矢量超界造成的影響,同時(shí)也增大了圖像塊運(yùn)動(dòng)向量的值域,完善了運(yùn)動(dòng)補(bǔ)償?shù)男Ч?/p>
在AVS視頻解碼的流水線系統(tǒng)中,解碼圖像是自左向右按照光柵掃描的順序進(jìn)行解碼。環(huán)形濾波模塊將解碼數(shù)據(jù)輸出到重構(gòu)幀存儲(chǔ)模塊前,采用了乒乓存儲(chǔ)器將解碼數(shù)據(jù)進(jìn)行拼接且存儲(chǔ),以提供重構(gòu)幀存儲(chǔ)模塊所需要的數(shù)據(jù)。而重構(gòu)幀存儲(chǔ)模塊中的圖像邊界擴(kuò)展的算法,主要是依據(jù)環(huán)形濾波模塊提供不同的數(shù)據(jù)類型進(jìn)行圖像擴(kuò)展重構(gòu)存儲(chǔ)的,該算法主要是從減少內(nèi)部存儲(chǔ)器的使用和提高解碼效率角度考慮。乒乓存儲(chǔ)器基于保證宏塊級(jí)流水線的正常運(yùn)行進(jìn)行設(shè)計(jì),主要保存的是經(jīng)過環(huán)形濾波之后的數(shù)據(jù)。下面通過該存儲(chǔ)器數(shù)據(jù)結(jié)構(gòu)分析重構(gòu)幀存儲(chǔ)模塊的輸入數(shù)據(jù)。由于乒乓存儲(chǔ)器是兩個(gè)完全相同的存儲(chǔ)器進(jìn)行時(shí)序上的乒乓讀寫,選其中之一進(jìn)行分析。存儲(chǔ)器深度是26 bit,要求能夠存儲(chǔ)一個(gè)亮度和色度宏塊的數(shù)據(jù)(見圖3),從0到1存儲(chǔ)宏塊的上兩行亮度數(shù)據(jù),從2到9存儲(chǔ)宏塊Y0、Y1亮度數(shù)據(jù),從10到17存儲(chǔ)宏塊Y2、Y3亮度數(shù)據(jù),18存儲(chǔ)宏塊的上一行色度數(shù)據(jù),從19到26存儲(chǔ)宏塊的色度數(shù)據(jù)。重構(gòu)存儲(chǔ)模塊就是按照Y0、Y1、Y2、Y3、U和V順序取數(shù)進(jìn)行邊界擴(kuò)展。要求一個(gè)存儲(chǔ)器讀取完成前,另一個(gè)存儲(chǔ)器宏塊數(shù)據(jù)全部寫入。
圖3 乒乓存儲(chǔ)器數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)
作為參考幀圖像的擴(kuò)展,本文算法首先規(guī)定了邊界像素?cái)U(kuò)展的布局和機(jī)制。以幀類型的圖像邊界像素?cái)U(kuò)展布局(如圖4(a))為例,說明宏塊邊緣像素的亮度和色度的擴(kuò)展布局。其中亮度數(shù)據(jù)直接復(fù)制邊界宏塊的邊緣像素,復(fù)制擴(kuò)展16個(gè)像素單元,但是色度需要進(jìn)行該宏塊邊緣像素的U和V交叉之后再進(jìn)行水平方向復(fù)制擴(kuò)展16個(gè)像素單元(8個(gè)UV單元),垂直方向復(fù)制擴(kuò)展8個(gè)像素單元。圖像(包括幀和場(chǎng))像素?cái)U(kuò)展機(jī)制如圖4(b)所示,四角部分的像素?cái)U(kuò)展順序按照abcdefghijkl進(jìn)行處理。周邊部分的像素?cái)U(kuò)展順序按照abcdef進(jìn)行處理。圖像內(nèi)部的存儲(chǔ)順序按照abc進(jìn)行處理。這樣的順序完全是依據(jù)環(huán)形濾波模塊輸出的數(shù)據(jù)特征進(jìn)行確定,使得不需要內(nèi)部存儲(chǔ)器進(jìn)行解碼數(shù)據(jù)暫存。
圖像邊界擴(kuò)展算法考慮數(shù)據(jù)類型、幀場(chǎng)模式、擴(kuò)展位置和高效存儲(chǔ)等因素,采用高效圖像擴(kuò)展機(jī)制,針對(duì)圖像邊界像素的亮度和色度進(jìn)行圖像邊界擴(kuò)展。具體擴(kuò)展算法如下:
小時(shí)候,我常在母親坐下休息時(shí),給她繒滿頭的小辮兒??赏撕螘r(shí),母親開始躲我,轟我,不讓碰她的頭發(fā)。有次放學(xué)早,回家便看到新奇又心酸的一幕:父親戴著塑料手套,端著一盤黑糊糊,用牙刷一綹一綹翻騰著母親的頭發(fā)刷了又刷。父親很不自然地說:“你娘頭發(fā)白了,染染?!敝肋@個(gè)秘密后,我不再碰母親的頭發(fā),看到被染發(fā)劑傷得黑中泛黃泛紅的頭發(fā),心就難受。
圖4 圖像像素?cái)U(kuò)展布局及機(jī)制
對(duì)于幀模式的亮度(如圖4(a)),周邊處的宏塊單元擴(kuò)充以邊緣像素為單位直接向外重復(fù)擴(kuò)充16次;四角處擴(kuò)充以各角處宏塊的角點(diǎn)像素為單位向外重復(fù)擴(kuò)充16×16次。對(duì)于頂場(chǎng)模式的亮度,周邊處宏塊單元擴(kuò)充以邊緣像素為單位直接向外重復(fù)擴(kuò)充16次,但針對(duì)場(chǎng)模式在DRAM存儲(chǔ)的地址需要跳變:以首行計(jì)算地址為準(zhǔn),隔行再進(jìn)行地址計(jì)算,如1357…。四角處的擴(kuò)充以各角處宏塊的角點(diǎn)像素為單位向外重復(fù)擴(kuò)充8×16次。對(duì)于底場(chǎng)模式的亮度,周邊處的宏塊單元擴(kuò)充以邊緣像素為單位直接向外重復(fù)擴(kuò)充16次,但是針對(duì)場(chǎng)模式在DRAM存儲(chǔ)的地址需要跳變:以首行計(jì)算地址為準(zhǔn),隔行再進(jìn)行地址計(jì)算,如2468…。四角處的擴(kuò)充以各角處宏塊的角點(diǎn)像素為單位向外重復(fù)擴(kuò)充8×16次。
對(duì)于幀進(jìn)模式的色度(如圖4(a)),在左右方向上分別把U和V的邊界像素模塊合成以一個(gè)U像素和一個(gè)V像素為單位整體,分別向左或向右擴(kuò)展8次。上下方向上把U和V交叉后分別擴(kuò)充8次;對(duì)頂角,把U的角點(diǎn)像素單元和V的角點(diǎn)像素單元合為一體,擴(kuò)充16×8次。對(duì)于頂場(chǎng)進(jìn)模式的色度,左右方向上分別把U和V的邊界像素單元合成以一個(gè)U像素單元和一個(gè)V像素單元為單位的整體,分別向左或向右擴(kuò)展8次;在上下方向上把U和V交叉后分別擴(kuò)充4次。對(duì)于頂角,把U的拐角點(diǎn)像素單元和V的頂角點(diǎn)像素單元合為一體,擴(kuò)充8×8次。對(duì)底場(chǎng)進(jìn)模式的色度,左右方向上分別把U和V的邊界像素單元合成以一個(gè)U像素單元和一個(gè)V像素單元為單位的整體,分別向左或向右擴(kuò)展8次。上下方向上把U和V交叉后分別擴(kuò)充4次。對(duì)頂角,把U拐角點(diǎn)像素單元和V頂角點(diǎn)像素單元合為一體,擴(kuò)充8×8次。
基于圖像邊界擴(kuò)展算法在AVS視頻解碼器的重構(gòu)幀存儲(chǔ)模塊里進(jìn)行VLSI設(shè)計(jì)和實(shí)現(xiàn)。重構(gòu)幀存儲(chǔ)模塊中,圖像邊界擴(kuò)展系統(tǒng)(如圖5)進(jìn)行圖像邊界擴(kuò)展,為獲得無限制運(yùn)動(dòng)向量提供有效參考幀。系統(tǒng)包括變長(zhǎng)解碼器、環(huán)形濾波電路、存儲(chǔ)器控制器及動(dòng)態(tài)存儲(chǔ)模塊以及運(yùn)動(dòng)補(bǔ)償電路[13]。變長(zhǎng)解碼器通過命令總線和控制總線與重構(gòu)幀存儲(chǔ)模塊、運(yùn)動(dòng)補(bǔ)償模塊相連接,為圖像解碼提供圖像碼流的參數(shù)和控制信息。環(huán)形濾波電路向重建幀存儲(chǔ)電路提供視頻解碼數(shù)據(jù)。重構(gòu)幀存儲(chǔ)電路獲得圖像參數(shù)和控制信息以及相應(yīng)的視頻解碼數(shù)據(jù),實(shí)現(xiàn)圖像擴(kuò)展算法的圖像擴(kuò)展,并將相應(yīng)的視頻解碼數(shù)據(jù)存儲(chǔ)到DRAM之中。運(yùn)動(dòng)補(bǔ)償模塊進(jìn)行當(dāng)前幀補(bǔ)償?shù)臅r(shí)候會(huì)從DRAM中取出對(duì)應(yīng)的參考幀,并進(jìn)行運(yùn)動(dòng)矢量的計(jì)算,實(shí)現(xiàn)完善的運(yùn)動(dòng)補(bǔ)償,最后將實(shí)現(xiàn)運(yùn)動(dòng)補(bǔ)償?shù)漠?dāng)前幀數(shù)據(jù)傳輸?shù)较乱粋€(gè)解碼環(huán)節(jié)。
圖5 重構(gòu)幀存儲(chǔ)系統(tǒng)
基于流水線設(shè)計(jì)的AVS視頻解碼系統(tǒng),要求模塊的輸入必須采用FIFO同步存儲(chǔ)解碼數(shù)據(jù)和圖像控制信息,而且要求深度保證兩個(gè)宏塊以上,確保流水處理實(shí)時(shí)性。本文設(shè)計(jì)了解碼數(shù)據(jù)存儲(chǔ)器和圖像控制信息存儲(chǔ)器用于重構(gòu)幀存儲(chǔ)模塊的輸入數(shù)據(jù)存儲(chǔ)。其中圖像解碼數(shù)據(jù)存儲(chǔ)器和上一級(jí)的乒乓存儲(chǔ)器按照流水線的級(jí)別進(jìn)行合理對(duì)接。
圖像解碼數(shù)據(jù)存儲(chǔ)器(解碼數(shù)據(jù)FIFO)設(shè)計(jì)為兩個(gè)位寬64 bit、深度48的隨機(jī)存儲(chǔ)器(FIFO),主要存儲(chǔ)來自環(huán)形濾波電路乒乓存儲(chǔ)器輸出的圖像數(shù)據(jù),圖像數(shù)據(jù)存儲(chǔ)器以宏塊為單位將亮度和色度進(jìn)行存儲(chǔ),并且依據(jù)控制信息把64 bit的輸入數(shù)據(jù)轉(zhuǎn)換為128 bit數(shù)據(jù)。圖像控制信息存儲(chǔ)器(控制信息FIFO)設(shè)計(jì)為位寬32 bit、深度8的寄存器數(shù)組,主要來自變長(zhǎng)解碼器輸出的存儲(chǔ)圖像控制信息,輸出信息包括:反饋到變長(zhǎng)解碼器的存儲(chǔ)器命令和數(shù)據(jù)溢出信息、存儲(chǔ)圖像邊界像素?cái)U(kuò)展模塊電路的讀數(shù)據(jù)命令、以及主存儲(chǔ)器模塊請(qǐng)求、地址及其大小、行、定位和寫數(shù)據(jù)命令。變長(zhǎng)解碼器發(fā)送給重構(gòu)幀存儲(chǔ)電路的是圖像控制信號(hào),該控制信號(hào)包含的信息有四個(gè)命令[3](見表1)。
表1 圖像控制信息命令字
圖像控制數(shù)據(jù)信息說明:LEVEL0包含初始化信號(hào),由32位中的0~15位提供DRAM width,從而確定邏輯存儲(chǔ)的圖像寬度。LEVEL1包含的是圖像序列級(jí)的信息,其2~13位標(biāo)志本圖像序列中每幀圖像的寬度(img_width),14~29位標(biāo)志本圖像序列中每幀圖像的高度(img_height)。LEVEL2包含的是幀級(jí)信息,其6~25位標(biāo)志每幀圖像的基址。LEVEL3包含的是宏塊級(jí)信息,其0~6位標(biāo)志宏塊在每幀圖像中的縱向相對(duì)地址(mb_y),其7~13位標(biāo)志宏塊在每幀圖像中的水平方向相對(duì)地址(mb_x)。命令數(shù)據(jù)的30~31位作為圖像信息級(jí)別的標(biāo)志位。
如圖5,在圖像邊界擴(kuò)展系統(tǒng)中,圖像邊界擴(kuò)展電路是核心模塊,主要由控制信息FIFO、解碼數(shù)據(jù)FIFO、存儲(chǔ)地址計(jì)算器、色度交叉排列器、解碼圖像邊界擴(kuò)展模塊等模塊組成。圖像邊界擴(kuò)展模塊電路實(shí)現(xiàn)了圖像邊界擴(kuò)展算法,工作流程(如圖6)從數(shù)據(jù)輸入、圖像擴(kuò)展到數(shù)據(jù)存儲(chǔ)和輸出有序進(jìn)行。解碼圖像的控制信息存儲(chǔ)在控制信息FIFO中,為構(gòu)建解碼圖像提供相應(yīng)圖像參數(shù)和控制信息,主要是定位圖像的相對(duì)位置和圖像的類
圖6 圖像邊界像素?cái)U(kuò)展模塊電路的工作流程
圖像邊界擴(kuò)展系統(tǒng)采用高效的二維存儲(chǔ)控制算法,存儲(chǔ)方式是每次提供一個(gè)行數(shù)信號(hào),只計(jì)算行數(shù)×16 pixel塊的首地址,然后存儲(chǔ)器的控制器根據(jù)首地址和行數(shù),僅在一次對(duì)存儲(chǔ)器控制器的請(qǐng)求信號(hào)的情況下,就可以依次向動(dòng)態(tài)存儲(chǔ)器寫入行數(shù)據(jù),實(shí)現(xiàn)二維存儲(chǔ)。采用表2的機(jī)制進(jìn)行擴(kuò)展存儲(chǔ),使得整個(gè)硬件設(shè)計(jì)系統(tǒng)具有較高的數(shù)據(jù)處理效率并且節(jié)省存儲(chǔ)空間。一方面,整個(gè)圖像邊界像素?cái)U(kuò)展處理過程也是向動(dòng)態(tài)存儲(chǔ)器存儲(chǔ)數(shù)據(jù)的過程,本文的二維存儲(chǔ)是在存儲(chǔ)的過程中實(shí)現(xiàn)圖像擴(kuò)展,而不是將像素?cái)U(kuò)展需要的數(shù)據(jù)存儲(chǔ)后再進(jìn)行擴(kuò)展,這樣就大大節(jié)省存儲(chǔ)空間。另一方面,只取所用數(shù)據(jù)進(jìn)行處理,而不把整個(gè)宏塊數(shù)據(jù)取出進(jìn)行邊界像素?cái)U(kuò)展,減少數(shù)據(jù)冗余,提高處理數(shù)據(jù)效率。
重構(gòu)幀存儲(chǔ)模塊電路和變長(zhǎng)解碼器、環(huán)形濾波器及DRAM控制器之間通過控制信號(hào)和數(shù)據(jù)信號(hào)進(jìn)行相連,由于FIFO設(shè)計(jì),使得各模塊之間的控制信號(hào)主要是讀/寫信號(hào)及讀/寫使能信號(hào)以及讀/寫完成信號(hào)。接口設(shè)計(jì)分為兩部分:一方面,與重構(gòu)幀存儲(chǔ)模塊輸入接口的模塊有變長(zhǎng)解碼器和環(huán)形濾波,前者是傳送解碼圖像控制型。解碼圖像的數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)FIFO中,為圖像擴(kuò)展提供解碼圖像數(shù)據(jù)。依據(jù)圖像控制信息和圖像數(shù)據(jù)重構(gòu)了相應(yīng)圖像并進(jìn)行邊界像素?cái)U(kuò)展。在輸入的解碼圖像數(shù)據(jù)中,對(duì)于亮度Y,直接采用本文3.4節(jié)的圖像邊界擴(kuò)展算法實(shí)現(xiàn)擴(kuò)展。對(duì)于色度U和V,色度交叉排列器將色度U和V進(jìn)行交叉排列,然后針對(duì)邊界的像素進(jìn)行以UV為單位的邊界像素模塊向外復(fù)制擴(kuò)展,同樣也采用本文3.4節(jié)的圖像邊界擴(kuò)展算法實(shí)現(xiàn)擴(kuò)展。存儲(chǔ)地址計(jì)算器實(shí)時(shí)計(jì)算出當(dāng)前圖像數(shù)據(jù)映射到DRAM的地址,同時(shí),解碼圖像邊界擴(kuò)展模塊輸出圖像數(shù)據(jù)。DRAM控制器接收到地址和相應(yīng)的圖像數(shù)據(jù),將擴(kuò)展中的圖像數(shù)據(jù)依序存儲(chǔ)到DRAM中。運(yùn)動(dòng)補(bǔ)償模塊可以從DRAM中取出經(jīng)過圖像邊界擴(kuò)展的參考幀,計(jì)算無限制運(yùn)動(dòng)向量并進(jìn)行運(yùn)動(dòng)補(bǔ)償。信息的,而后者是傳送解碼圖像數(shù)據(jù)碼流給重構(gòu)幀存儲(chǔ)模塊。另一方面,與重構(gòu)幀存儲(chǔ)模塊輸出接口的是模塊DRAM控制器,主要是把經(jīng)過圖像邊界擴(kuò)展了的解碼圖像存儲(chǔ)到DRAM進(jìn)行圖像重構(gòu),以供運(yùn)動(dòng)補(bǔ)償模塊計(jì)算參考幀運(yùn)動(dòng)向量之用。圖像邊界像素?cái)U(kuò)展模塊的接口如圖7所示。
表2 圖像邊界像素?cái)U(kuò)展存儲(chǔ)算法
圖7 圖像邊界像素?cái)U(kuò)展模塊的接口
采用的時(shí)鐘是AVS視頻解碼系統(tǒng)的系統(tǒng)時(shí)鐘,時(shí)鐘控制下的時(shí)序設(shè)計(jì)(主要指端口的時(shí)序設(shè)計(jì))如圖8所示。
圖8 輸入(a)、輸出(b)接口信號(hào)時(shí)序圖
輸入端口的時(shí)序設(shè)計(jì)(如圖8(a)):重構(gòu)幀存儲(chǔ)模塊電路先向變長(zhǎng)解碼器和環(huán)形濾波器發(fā)出讀請(qǐng)求信號(hào),然后等待變長(zhǎng)解碼器和環(huán)形濾波器發(fā)出讀使能信號(hào),經(jīng)過若干周期后,當(dāng)變長(zhǎng)解碼器和環(huán)形濾波器準(zhǔn)備好數(shù)據(jù)可以被讀取時(shí),變長(zhǎng)解碼器和環(huán)形濾波器會(huì)發(fā)出讀使能信號(hào),接收到讀使能信號(hào)后,重構(gòu)幀存儲(chǔ)模塊電路開始讀取數(shù)據(jù)。讀完數(shù)據(jù)后,重構(gòu)幀存儲(chǔ)模塊電路會(huì)發(fā)出讀完成信號(hào)給變長(zhǎng)解碼器和環(huán)形濾波器以示完成讀操作。
輸出端口的時(shí)序設(shè)計(jì)(如圖8(b)):重構(gòu)幀存儲(chǔ)模塊電路準(zhǔn)備好數(shù)據(jù)后,先向DRAM控制器發(fā)送寫請(qǐng)求信號(hào),同時(shí)送出寫入首地址,然后等待DRAM控制器允許被寫時(shí),并DRAM控制器發(fā)出寫使能信號(hào)之后,當(dāng)前模塊開始將數(shù)據(jù)經(jīng)DRAM控制器寫入DRAM,完成寫操作時(shí),DRAM控制器會(huì)發(fā)送寫完成信號(hào)給重構(gòu)幀存儲(chǔ)模塊電路以示寫操作完成,重構(gòu)幀存儲(chǔ)模塊電路會(huì)停止寫操作。
基于AVS視頻解碼器的圖像邊界擴(kuò)展系統(tǒng)通過仿真后,利用Synopsys公司的DC-FPGA工具進(jìn)行了FPGA的綜合,綜合的門級(jí)網(wǎng)表經(jīng)過Xilinx公司的VirtexII XC2V6000系統(tǒng)進(jìn)行了FPGA驗(yàn)證。本文設(shè)計(jì)的圖像邊界擴(kuò)展系統(tǒng)在AVS解碼器中實(shí)現(xiàn)了圖像邊界的有序而高效的擴(kuò)展,使得運(yùn)動(dòng)補(bǔ)償能夠獲取無限制運(yùn)動(dòng)向量,提高了視頻解碼效率。
為了比較有UMV和無UMV對(duì)視頻解碼系統(tǒng)的影響,本文引用效率E[14-15]作為衡量依據(jù),E為硬件結(jié)構(gòu)的吞吐率R和實(shí)現(xiàn)面積A的比值。
其中,R采用重構(gòu)幀存儲(chǔ)模塊輸出的平均數(shù)率,A是重構(gòu)幀存儲(chǔ)模塊的面積。
綜合面積結(jié)果:采用Synopsys公司的DC_FPGA工具綜合,系統(tǒng)時(shí)鐘為6.7 ns的條件下,打開UMV綜合模塊面積83 848.562 500門,關(guān)閉UMV綜合模塊面積82 626.432 300門,面積僅增加1.5%。測(cè)試的解碼效率:實(shí)驗(yàn)選用具有代表性的測(cè)試序列(如表3),碼流1到碼流5為同一分辨率下的不同邊界運(yùn)動(dòng)劇烈程度的碼流,碼流6到碼流10屬于同一圖像劇烈程度的不同分辨率大小的碼流。采用同一AVS編碼器對(duì)相應(yīng)的碼流序列進(jìn)行編碼。
表4是針對(duì)測(cè)試選定的10個(gè)碼流測(cè)試的結(jié)果,主要是針對(duì)打開UMV和關(guān)閉UMV的情況,依據(jù)公式(4)計(jì)算出解碼效率,從實(shí)驗(yàn)結(jié)果看,打開UMV解碼器解碼效率得到了普遍提高。而對(duì)于不同邊界運(yùn)動(dòng)劇烈程度的圖像解碼效率和不同分辨率大小的圖像解碼效率的變化趨勢(shì)從圖9可以看出。很明顯,圖像邊界運(yùn)動(dòng)越劇烈,采用UMV后解碼效率提高得越多。而對(duì)于邊界運(yùn)動(dòng)一樣,圖像越小,采用UMV后解碼效率提高得越多。
表3 圖像擴(kuò)展系統(tǒng)測(cè)試流說明
表4 圖像邊界擴(kuò)展系統(tǒng)測(cè)試
本文通過分析AVS視頻解碼系統(tǒng)設(shè)計(jì)中需要無限制運(yùn)動(dòng)向量改善運(yùn)動(dòng)補(bǔ)償,提出了一種高性能的圖像邊界像素?cái)U(kuò)展算法,該算法通過硬件實(shí)現(xiàn),在芯片面積增加不大的情況下,有效實(shí)現(xiàn)了UMV的獲取,從而改善了運(yùn)動(dòng)補(bǔ)償?shù)慕Y(jié)果,提高了視頻解碼系統(tǒng)的解碼效率。通過仿真與在FPGA中的驗(yàn)證,證明了本文算法的低成本、高效性以及可實(shí)現(xiàn)性,為AVS視頻解碼系統(tǒng)提高解碼效率,特別是小尺寸且圖像邊界運(yùn)動(dòng)劇烈的圖像解碼,本文選擇的碼流解碼效率提高都在4%以上。同時(shí),值得指出的是本文采用了高效的二維存儲(chǔ)機(jī)制進(jìn)行存儲(chǔ)圖像數(shù)據(jù),從而提高了整個(gè)系統(tǒng)的存儲(chǔ)效率。
圖9 圖像邊界擴(kuò)展系統(tǒng)提升圖像解碼效率
[1] Huang A M,Nguyen T.Correlation-based motion vector processing with adaptive interpolation scheme for motioncompensated frame interpolation[J].IEEE Transactions on Image Processing,2009,18(11):740-752.
[2] Li Ming,Chang Yilin,Yang Fuzheng,et al.Rate-distortion criterion based picture padding for arbitrary resolution video coding using H.264/MPEG-4 AVC[J].IEEE Transactions on Circuits and Systems for Video Technology,2010,20(9):1233-1241.
[3] 國家質(zhì)量監(jiān)督檢驗(yàn)檢疫總局.信息技術(shù)先進(jìn)音視頻編碼第二部分:視頻(AVS視頻(報(bào)批稿))[S].2005.
[4] 張鳳.H_263_中高級(jí)選項(xiàng)UMV和ADV的研究和實(shí)現(xiàn)[J].有線電視技術(shù),2004,160(16):43-46.
[5]張大勇,莊弈琪,湯華蓮.MPEG-4中的無限制運(yùn)動(dòng)補(bǔ)償?shù)膶?shí)現(xiàn)[J].微計(jì)算機(jī)信息,2008,24(5/3):224-295.
[6] Yang Heechul,Yang Jungyoup,Won Kwanghyun,et al.Motion vector coding with decoder selectable PMV[C]//2010 2nd International Conference on Signal Processing Systems,2010:447-450.
[7] Yokoyama T,Iwasaki T,Watanabe T.Motion vector based moving object detection and tracking in the MPEG compressed domain[C]//2009 Seventh International Workshop on Content-Based Multimedia Indexing,2009.
[8] Zheng Junhao,Deng Lei,Zhang Peng,et al.An efficient VLSI architecture for motion compensation of AVS HDTV decoder[J].J Comput Sci&Technol,2006,21(3):370-377.
[9] 趙建全,張衛(wèi)寧,袁鯤,等.AVS視頻硬件解碼器運(yùn)動(dòng)補(bǔ)償單元的設(shè)計(jì)[J].電氣電子教學(xué)學(xué)報(bào),2008,30(6):21-24.
[10] 龔聲蓉,郭麗,韓軍,等.基于全局運(yùn)動(dòng)補(bǔ)償編碼的AVS編碼器設(shè)計(jì)[J].通信學(xué)報(bào),2007,28(10):102-108.
[11] Laroche G,Jung J,Pesquent-Popescu B.RD optimized codingformotionvectorpredictorselection[J].IEEE Trans on Circuit and Syst for Video Tech,2008,18(12):1247-1257.
[12] Rye S N,Sang L G.Error concealment in H.264 considering direction and distance of motion vectors[J].Korea Inf Comm Soc,2009,34(1):34-47.
[13] 劉龍,韓崇昭,王占輝.MPEG-4運(yùn)動(dòng)補(bǔ)償?shù)腣LSI結(jié)構(gòu)設(shè)計(jì)[J].通信學(xué)報(bào),2005,26(11).
[14] 鄧?yán)?,高文,胡銘曾,?基于AVC/AVS標(biāo)準(zhǔn)高效運(yùn)動(dòng)估計(jì)硬件結(jié)構(gòu)設(shè)計(jì)[J].計(jì)算機(jī)研究與發(fā)展,2006,43(11):1972-1979.
[15] Pirsch P,Gehrke1 W.VLSI architectures for video compression[C]//Proc of the 1995 IEEE Int,1995:220-246.