欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于hevc框架的幀內(nèi)無(wú)損壓縮編碼方法

文檔序號(hào):7868721閱讀:699來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):一種基于hevc框架的幀內(nèi)無(wú)損壓縮編碼方法
技術(shù)領(lǐng)域
本發(fā)明屬于數(shù)字圖像無(wú)損壓縮編碼的技術(shù)領(lǐng)域,具體地涉及一種基于HEVC (HighEfficiency Video Coding,高效視頻編碼)框架的巾貞內(nèi)無(wú)損壓縮編碼方法。
背景技術(shù)
在數(shù)字圖像壓縮中,廣泛的采用壓縮技術(shù)來(lái)減少其中的數(shù)據(jù)量。傳統(tǒng)的壓縮編碼是基于信息論的理論,認(rèn)為一般的信息中存在冗余,比如,時(shí)間冗余,空間冗余,結(jié)構(gòu)冗余,心理冗余,統(tǒng)計(jì)冗余等,通過(guò)去除各種冗余信息來(lái)達(dá)到壓縮的目的。經(jīng)典壓縮編碼的方法有預(yù)測(cè)編碼、變換編碼、統(tǒng)計(jì)編碼(熵編碼)等。預(yù)測(cè)編碼和變換編碼是當(dāng)前圖像編碼器最常用的技術(shù),預(yù)測(cè)和變換的目的是盡最大努力去除圖像中的空間冗余,然后再使用統(tǒng)計(jì)編碼進(jìn)行壓縮。
預(yù)測(cè)編碼用相鄰的已知像素或圖像塊來(lái)預(yù)測(cè)當(dāng)前像素或圖像塊,然后將當(dāng)前像素的原始值和預(yù)測(cè)值做差,對(duì)殘差進(jìn)行變換、量化、熵編碼。預(yù)測(cè)編碼的關(guān)鍵在于預(yù)測(cè)方法的選取,這與圖像信號(hào)的概率分布有很大關(guān)系。預(yù)測(cè)編碼有線性和非線性預(yù)測(cè)兩種。線性預(yù)測(cè)編碼又稱(chēng)為差分脈沖編碼調(diào)制(Differential Pulse Code Modulation),其優(yōu)點(diǎn)是算法簡(jiǎn)單,易于硬件實(shí)現(xiàn),缺點(diǎn)是對(duì)信道噪聲及誤碼很敏感,會(huì)產(chǎn)生誤碼擴(kuò)散,使圖像質(zhì)量大大下降。為了使用更有效的編碼預(yù)測(cè)誤差,通常需要建立一個(gè)能夠去除預(yù)測(cè)殘差中的結(jié)構(gòu)冗余的上下文模型。變換編碼將給定的圖像變換到頻域,使大量的信息用較少的數(shù)據(jù)來(lái)表示。通常利用正交變換將圖像從空間域變換到頻率域,圖像經(jīng)過(guò)變換后不丟失任何信息,而且變換前后能量相等。變換后能量大部分集中在低頻部分,高頻部分的系數(shù)較小,對(duì)變換域系數(shù)進(jìn)行量化、熵編碼,這樣通過(guò)去除高頻部分達(dá)到壓縮的目的。統(tǒng)計(jì)編碼,也被稱(chēng)為熵編碼,根據(jù)信息碼字出現(xiàn)的概率分布,尋找概率與碼字長(zhǎng)度的最優(yōu)匹配進(jìn)行編碼。這是一種無(wú)損壓縮方法,解碼后能無(wú)失真的恢復(fù)原始圖像。統(tǒng)計(jì)編碼把待壓縮的數(shù)據(jù)流看作是簡(jiǎn)單的數(shù)字序列,并不關(guān)心這些數(shù)據(jù)的具體語(yǔ)義。常用的統(tǒng)計(jì)編碼有游程編碼、哈夫曼編碼和算術(shù)編碼。壓縮技術(shù)一般分為有損壓縮和無(wú)損壓縮。對(duì)于類(lèi)似互聯(lián)網(wǎng)中的圖像采用有損壓縮可以獲得更好的效率。無(wú)損壓縮技術(shù)也有一些應(yīng)用領(lǐng)域,比如醫(yī)學(xué)圖像,遙感,指紋等。在過(guò)去的若干年間,提出了很多圖像無(wú)損壓縮模式,為了達(dá)到無(wú)損壓縮的目的,需要在這種模式中將變換量化模塊關(guān)閉,對(duì)于熵編碼,使用類(lèi)似于有損編碼中的相同的模塊。即將到來(lái)的HEVC標(biāo)準(zhǔn)是H. 264的繼續(xù),HEVC框架采用混合編碼結(jié)構(gòu),用來(lái)組織輸入的圖像,其中包括編碼單元⑶(Coding Unit),預(yù)測(cè)單元PU (Prediction Unit),變換單元TU (Transform Unit)。⑶是用于分割圖像的基本單元,和H. 264中宏塊的概念很類(lèi)似,不同的是,宏塊大小是固定的,而CU是可以自適應(yīng)改變大小的。它的形狀是正方形的,最小為8x8,64x64是最大CU (即LCU,Largest Coding Unit)。CU允許遞歸分割成四個(gè)大小一樣的塊,這個(gè)過(guò)程就為基于內(nèi)容自適應(yīng)的塊分割提供了方便。
預(yù)測(cè)單元PU,是用于預(yù)測(cè)過(guò)程中保存信息的基本單元,每個(gè)CU可以有一個(gè)或者多個(gè)PU。變換單元是用于變換和量化時(shí)的基本單元。它也是正方形的,對(duì)于亮度塊,即Y分量,大小從4x4到32x32,每個(gè)⑶有一個(gè)或者多個(gè)TU。無(wú)損壓縮技術(shù)從簡(jiǎn)單的線性預(yù)測(cè)發(fā)展到非線性預(yù)測(cè),提高了預(yù)測(cè)的準(zhǔn)確度,但是無(wú)疑會(huì)增加時(shí)間復(fù)雜度。大多傳統(tǒng)的無(wú)損壓縮方法是逐像素進(jìn)行的,這樣需要為每個(gè)像素選擇一個(gè)預(yù)測(cè)模式,這種方法不夠靈活,也會(huì)帶來(lái)很高的復(fù)雜度。

發(fā)明內(nèi)容
本發(fā)明的技術(shù)解決問(wèn)題是克服現(xiàn)有技術(shù)的不足,提供一種時(shí)間復(fù)雜度較低、預(yù)測(cè)準(zhǔn)確度較高、提高壓縮比的基于ffivc框架的幀內(nèi)無(wú)損壓縮編碼方法。
本發(fā)明的技術(shù)解決方案是這種基于HEVC框架的幀內(nèi)無(wú)損壓縮編碼方法,包括以下步驟(I)基于HEVC框架、根據(jù)圖像平滑程度來(lái)自適應(yīng)調(diào)整編碼單元⑶的大小;(2)對(duì)當(dāng)前預(yù)測(cè)單元I3U進(jìn)行差分預(yù)測(cè)編碼DPCM ;(3)進(jìn)行率失真優(yōu)化RD0,選擇最優(yōu)分割方案以及最優(yōu)預(yù)測(cè)模式;(4)統(tǒng)計(jì)建模,對(duì)每個(gè)像素進(jìn)行模型的計(jì)算和統(tǒng)計(jì),得出每個(gè)模型的數(shù)量以及殘差之和;(5)計(jì)算當(dāng)前的當(dāng)前預(yù)測(cè)像素所鄰近的像素的殘差能量值,殘差能量值是鄰近像素殘差的絕對(duì)值之和,如果該殘差能量值大于預(yù)定值則執(zhí)行步驟(6),否則執(zhí)行步驟
(7);(6)進(jìn)行誤差補(bǔ)償,則建立模型,并求出該模型的平均誤差,對(duì)預(yù)測(cè)值進(jìn)行修正;(7)根據(jù)預(yù)測(cè)模式與掃描模式的映射表,確定掃描順序;(8)對(duì)掃描完成的殘差進(jìn)行熵編碼;(9)向解碼端輸出編碼后的碼流文件;(10)在解碼端,對(duì)碼流文件進(jìn)行熵解碼,解析出殘差信息、預(yù)測(cè)模式;( 11)利用DPCM進(jìn)行插值預(yù)測(cè);(12)對(duì)每個(gè)像素建立模型,統(tǒng)計(jì)每種模型的數(shù)量以及殘差的和;(13)計(jì)算預(yù)測(cè)后每個(gè)像素所鄰近像素的殘差的能量和是否大于指定值,如果大于則執(zhí)行步驟(14),否則執(zhí)行步驟(15);(14)用統(tǒng)計(jì)建模的結(jié)果求出殘差平均值,對(duì)預(yù)測(cè)值進(jìn)行修正;(15)重建圖像,即用預(yù)測(cè)值和解碼出的殘差進(jìn)行求和。由于該方法根據(jù)圖像的平滑程度進(jìn)行自適應(yīng)的分割圖像塊,S卩,平滑的地方分割較大的塊,可以節(jié)省碼流,復(fù)雜的地方進(jìn)行細(xì)分,可以獲得較高的預(yù)測(cè)準(zhǔn)確度;在實(shí)際的自然圖像中很多圖像塊紋理方向幾乎相同,我們以塊為單位來(lái)選擇最優(yōu)的預(yù)測(cè)模式,那么對(duì)于塊中的所有像素只需要編碼一個(gè)預(yù)測(cè)模式即可,因此這樣就會(huì)節(jié)省碼率,而且由于線性預(yù)測(cè)本身比較簡(jiǎn)單,相對(duì)于非線性預(yù)測(cè)來(lái)說(shuō),時(shí)間復(fù)雜度也較低。而對(duì)于紋理較復(fù)雜的區(qū)域,我們進(jìn)行誤差補(bǔ)償,來(lái)彌補(bǔ)線性預(yù)測(cè)帶來(lái)的誤差;這樣就取得了時(shí)間復(fù)雜度和預(yù)測(cè)準(zhǔn)確度的平衡,從而可以進(jìn)一步提高壓縮比。


圖1示出了根據(jù)本發(fā)明的基于HEVC框架的幀內(nèi)無(wú)損壓縮編碼方法的流程圖;圖2示出了根據(jù)本發(fā)明的步驟(2)的幀內(nèi)預(yù)測(cè)角度定義;圖3是圖2中的幀內(nèi)預(yù)測(cè)方向和預(yù)測(cè)模式的映射圖;圖4是根據(jù)本發(fā)明的差分預(yù)測(cè)編碼的一個(gè)優(yōu)選實(shí)施例;圖5示出了當(dāng)前像素的鄰近像素。
具體實(shí)施方式
如圖1所示,這種基于HEVC框架的幀內(nèi)無(wú)損壓縮編碼方法,包括以下步驟(I)基于HEVC框架、根據(jù)圖像平滑程度來(lái)自適應(yīng)調(diào)整編碼單元⑶的大小;(2)對(duì)當(dāng)前預(yù)測(cè)單元I3U進(jìn)行差分預(yù)測(cè)編碼DPCM ;(3)進(jìn)行率失真優(yōu)化RD0,選擇最優(yōu)分割方案以及最優(yōu)預(yù)測(cè)模式;(4)統(tǒng)計(jì)建模,對(duì)每個(gè)像素進(jìn)行模型的計(jì)算和統(tǒng)計(jì),得出每個(gè)模型的數(shù)量以及殘差之和;(5)計(jì)算當(dāng)前的當(dāng)前預(yù)測(cè)像素所鄰近的像素的殘差能量值,殘差能量值是鄰近像素殘差的絕對(duì)值之和,如果該殘差能量值大于預(yù)定值則執(zhí)行步驟(6),否則執(zhí)行步驟
(7);(6)進(jìn)行誤差補(bǔ)償,建立模型,并求出該模型的平均誤差,對(duì)預(yù)測(cè)值進(jìn)行修正;(7)根據(jù)預(yù)測(cè)模式與掃描模式的映射表,確定掃描順序;(8)對(duì)掃描完成的殘差進(jìn)行熵編碼;(9)向解碼端輸出編碼后的碼流文件;( 10)在解碼端,對(duì)碼流文件進(jìn)行熵解碼,解析出殘差信息、預(yù)測(cè)模式;( 11)利用DPCM進(jìn)行插值預(yù)測(cè);(12)對(duì)每個(gè)像素建立模型,統(tǒng)計(jì)每種模型的數(shù)量以及殘差的和;(13)計(jì)算預(yù)測(cè)后每個(gè)像素所鄰近像素的殘差的能量和是否大于指定值,如果大于則執(zhí)行步驟(14),否則執(zhí)行步驟(15);(14)用統(tǒng)計(jì)建模的結(jié)果求出殘差平均值,對(duì)預(yù)測(cè)值進(jìn)行修正;(15)重建圖像,即用預(yù)測(cè)值和解碼出的殘差進(jìn)行求和。由于該方法根據(jù)圖像的平滑程度進(jìn)行自適應(yīng)的分割圖像塊,S卩,平滑的地方分割較大的塊,可以節(jié)省碼流,復(fù)雜的地方進(jìn)行細(xì)分,獲得較高的預(yù)測(cè)精度;在實(shí)際的自然圖像中很多圖像塊紋理方向幾乎相同,我們以塊為單位來(lái)選擇最優(yōu)的預(yù)測(cè)模式,那么對(duì)于塊中的所有像素只需要編碼一個(gè)預(yù)測(cè)模式即可,因此這樣就會(huì)節(jié)省碼率,而且由于線性預(yù)測(cè)本身比較簡(jiǎn)單,相對(duì)于非線性預(yù)測(cè)來(lái)說(shuō),時(shí)間復(fù)雜度也較低,而對(duì)于紋理較復(fù)雜的區(qū)域,我們進(jìn)行誤差補(bǔ)償,來(lái)彌補(bǔ)線性預(yù)測(cè)帶來(lái)的誤差;這樣就取得了時(shí)間復(fù)雜度和預(yù)測(cè)準(zhǔn)確度的平衡,從而可以進(jìn)一步提高壓縮比。優(yōu)選地,步驟(2)中的差分預(yù)測(cè)編碼與幀內(nèi)預(yù)測(cè)的33個(gè)有角度的預(yù)測(cè)模式融合,角度預(yù)測(cè)的角度范圍在[_135,45],[-45,45]定義為近似垂直方向,[135,-45]定義為近似水平方向,如果是近似垂直方向采用逐行預(yù)測(cè),如果是近似水平方向采用逐列預(yù)測(cè)。優(yōu)選地,步驟(6)中的誤差補(bǔ)償包括如下步驟
(6.1)計(jì)算參數(shù)e,如果預(yù)測(cè)模式接近垂直方向,則采用公式(1),如果預(yù)測(cè)模式接近水平方向,則采用公式(2 )e=|X(I, J-1)-X(I_1,J-1) I (I)e= IX(1-2, J)-X(1-1, J) (2)其中X(I,J)為當(dāng)前要預(yù)測(cè)的像素;(6.2)通過(guò)公式(3)- (5)計(jì)算能量Edh= IX (I, J-1) -X (I, J-2) I +1X (1-1, J-1) -X (I~l, J) | (3)+|X(I_1, J)-X(I_1, J+l)dv= IX(I, J-1)-X(1-1, J-1) I +1X(1-2, J)-X(1-1, J) (4)+|X(1-2, J+l)-X(1-1, J+l)E=dh+dv+2e (5);(6. 3)把 E 量化為 8 個(gè)等級(jí),量化值為 5,15,25,42,60,85,140 ;(6. 4)如果當(dāng)前像素預(yù)測(cè)值大于某個(gè)相鄰像素,那么二者的關(guān)系就記為1,否則記為0,這一系列0和I組成的序列記為S ;(6. 5)構(gòu)造模型M= (E,S),每個(gè)像素有一個(gè)M,通過(guò)統(tǒng)計(jì)每種模型的個(gè)數(shù)以及對(duì)應(yīng)的能量值,通過(guò)求均值得到每種模型的平均誤差,利用得出的平均誤差來(lái)補(bǔ)償當(dāng)前像素的預(yù)測(cè)值。優(yōu)選地,步驟(7)中的掃描方式包括Zig-Zag掃描、水平掃描和垂直掃描。下面我們舉例編碼一幅圖,首先進(jìn)行分割,因?yàn)槿绻环指钫鶊D而一起處理,數(shù)據(jù)量很大,所以基于內(nèi)容或者說(shuō)是基于圖像平滑程度來(lái)分割,可以使碼率最小。基本的結(jié)構(gòu)單位是編碼單元CU,一般先分割為64x64的CU,然后對(duì)當(dāng)前CU進(jìn)行預(yù)測(cè),這個(gè)過(guò)程中會(huì)嘗試所有的分割方案,找到一種最優(yōu)的分割,衡量的方法就是采用率失真優(yōu)化(RDO,RateDistortion Optimization)。在有損壓縮中,編碼器的過(guò)程一般由預(yù)測(cè)、變換、量化、熵編碼組成,對(duì)預(yù)測(cè)殘差的變換使得低頻信息集中到圖像的左上角,高頻信息幅值很小,再進(jìn)行量化操作可以使得很多小幅值的高頻信息都變成0,這樣可以有效的達(dá)到壓縮的目的。但是,我們做無(wú)損編碼器,沒(méi)有變換量化模塊,因?yàn)檫@會(huì)引入誤差,就不是無(wú)損壓縮了,所以預(yù)測(cè)的殘差會(huì)直接傳遞給熵編碼模塊,因此,無(wú)損編碼器主要包括兩部分,預(yù)測(cè)和熵編碼。想要達(dá)到提高壓縮比的目的,就要修改預(yù)測(cè)或者熵編碼,本方法中保留了 ffiVC中的熵編碼模塊,只修改預(yù)測(cè),因此如何預(yù)測(cè),是本文的重點(diǎn)。
因?yàn)槲覀儔嚎s的對(duì)象是圖像,所以就相當(dāng)于視頻壓縮中的幀內(nèi)壓縮,對(duì)應(yīng)的也就是幀內(nèi)預(yù)測(cè)。幀內(nèi)預(yù)測(cè)包括兩部分,首先對(duì)PU也就是預(yù)測(cè)單元逐像素的進(jìn)行DPCM,差分編碼預(yù)測(cè),然后判斷當(dāng)前像素鄰近像素預(yù)測(cè)準(zhǔn)確度是否達(dá)到要求(衡量的標(biāo)準(zhǔn)就是計(jì)算鄰近像素預(yù)測(cè)殘差絕對(duì)值之和是否大于設(shè)定的閾值),如果準(zhǔn)確度不夠,那么我們?cè)谑┘拥诙N預(yù)測(cè)方法,也就是誤差補(bǔ)償,對(duì)預(yù)測(cè)結(jié)果進(jìn)行修正。預(yù)測(cè)后的結(jié)果要和原始圖像做差,得到一個(gè)殘差塊,因?yàn)樗靡粋€(gè)二維矩陣表示,所以要采用一定的掃描順序,使其變成一維的。然后對(duì)這個(gè)一維的向量進(jìn)行熵編碼。當(dāng)然對(duì)于逐像素編碼來(lái)說(shuō),前面的已經(jīng)編碼完成的像素會(huì)作為后面像素的已知像素,也就是說(shuō)后面的像素在預(yù)測(cè)的時(shí)候,可以利用前面已編碼像素的信息,用它們來(lái)進(jìn)行預(yù)測(cè)。
然后進(jìn)行DPCM差分預(yù)測(cè)編碼HEVC幀內(nèi)預(yù)測(cè)采用35個(gè)預(yù)測(cè)模式,包括planar (雙線性插值預(yù)測(cè)),DC (均值預(yù)測(cè))以及33有角度的預(yù)測(cè)模式(如圖2所述)。預(yù)測(cè)針對(duì)的結(jié)構(gòu)對(duì)象是預(yù)測(cè)單元,也就是以I3U為單位進(jìn)行預(yù)測(cè),HEVC中規(guī)定,PU是在CU基礎(chǔ)上進(jìn)行劃分的,在CU上最多再分割一次,也就是最小的PU大小是4x4。傳統(tǒng)的預(yù)測(cè),通過(guò)相鄰來(lái)進(jìn)行,也就是通過(guò)使用左邊、上邊像素(不屬于當(dāng)前PU,但是已編碼)作為參考來(lái)進(jìn)行預(yù)測(cè)。然而,如果當(dāng)前像素距離參考像素比較遠(yuǎn)時(shí),預(yù)測(cè)誤差勢(shì)必會(huì)受到影響,而且如果當(dāng)前塊中紋理方向有多個(gè),HEVC幀內(nèi)預(yù)測(cè)方法不能隨預(yù)測(cè)方向的改變進(jìn)行相應(yīng)變化。為了解決HEVC幀內(nèi)編碼中的這兩個(gè)問(wèn)題,我們將DPCM (差分編碼)方法融合到ffiVC幀內(nèi)預(yù)測(cè)中,在預(yù)測(cè)過(guò)程中,鄰近已編碼的像素可以作為參考像素。在編碼的過(guò)程中, 當(dāng)前像素從鄰近像素進(jìn)行預(yù)測(cè),而不是從鄰近的PU來(lái)預(yù)測(cè),這里除了第一行或者第一列使用相鄰PU進(jìn)行預(yù)測(cè),其他行列使用前一行或者前一列進(jìn)行預(yù)測(cè)。這里planar和DC預(yù)測(cè)不作變動(dòng),采用ffivc原始方案,主要針對(duì)有角度的預(yù)測(cè)模式。角度預(yù)測(cè)的角度范圍在[-135,45],我們將這些角度分為水平和垂直兩大部分,以-45度為界限,[-45,45]認(rèn)為是近似垂直方向,[135,-45]為近似水平方向,之所以分為兩部分,是因?yàn)樾枰鶕?jù)方向選擇是逐行預(yù)測(cè)還是逐列預(yù)測(cè),這個(gè)問(wèn)題在HEVC原始方案中是不需要的,因?yàn)樵桨钢惺褂闷渌鸓U來(lái)預(yù)測(cè),而我們的方法中采用逐像素,當(dāng)前像素需要利用前面像素的信息,因此預(yù)測(cè)的順序至關(guān)重要。如果是近似垂直方向,我們采用逐行預(yù)測(cè),如果是近似水平方向我們采用逐列預(yù)測(cè)。圖4中X為當(dāng)前I3U中的像素,C、R為相鄰PU的像素。這里我們以大小為4x4的PU為例,說(shuō)一下如何使用DPCM進(jìn)行預(yù)測(cè)。這里我們僅以垂直方向?yàn)槔?。如果預(yù)測(cè)角度為0,也就是垂直方向,那么PU的第0行使用上面PU的最后一行進(jìn)行預(yù)測(cè),預(yù)測(cè)值X(0,J) =C(J), J=O. .,3。而其他行用該行的上面相鄰的一行作為參考,也就是預(yù)測(cè)值X(I,J) =X(1-1,J) 1=1,2,3,J=O,. . 3。如果預(yù)測(cè)角度在
,PU的第0行和第3列使用上面像素進(jìn)行預(yù)測(cè)。1=1,2,3, X(I, J)J=0, I, 2,預(yù)測(cè)的方法和第0行一樣,不同的就是參考像素變?yōu)樯厦娈?dāng)前像素的上面一行像素。預(yù)測(cè)角度在[-45,0],第0行和第0列使用HEVC中的方法預(yù)測(cè)。要預(yù)測(cè)其他的行,即1=1,2,3,X(I, J)J=1, 2,3,預(yù)測(cè)值的計(jì)算方法和計(jì)算第0行的預(yù)測(cè)值相同,除了參考像素變?yōu)?-1行的像素。然后進(jìn)行誤差建模DPCM預(yù)測(cè)方法比較適用于圖像中平滑紋理的區(qū)域。然而,對(duì)于很多圖像或者一個(gè)圖像的很多區(qū)域來(lái)說(shuō),可能沒(méi)有清晰的紋理。這樣的區(qū)域可以通過(guò)計(jì)算當(dāng)前像素周?chē)袼氐臍埐罱^對(duì)值的和來(lái)識(shí)別,這里我們把殘差絕對(duì)值之和稱(chēng)為能量。我們可以設(shè)置一個(gè)閾值,如果能量小于閾值,我們認(rèn)為這個(gè)區(qū)域紋理比較明顯,單純采用DPCM預(yù)測(cè)就可以很好的進(jìn)行預(yù)測(cè),相反,如果能量大于閾值,我們認(rèn)為此區(qū)域中沒(méi)有清晰的紋理,就需要進(jìn)行誤差補(bǔ)
\-ZX O如圖5所示,假設(shè)X(I,J)為當(dāng)前要預(yù)測(cè)的像素,我們計(jì)算當(dāng)前像素鄰近像素的能量,也就是臨近像素的殘差絕對(duì)值之和,如果大于閾值,那么當(dāng)前像素就需要進(jìn)行二次預(yù)測(cè),也就是誤差補(bǔ)償,這里通過(guò)實(shí)驗(yàn),我們?cè)O(shè)置閾值為15。
誤差補(bǔ)償?shù)姆椒ǚ譃閮刹糠帜芰坎糠趾徒Y(jié)構(gòu)部分。首先,梯度的定義dh= IX (I, J-1) -X (I, J-2) I +1X (1-1,J-1) -X (1-1,J)+|X(1-1, J)-X(1-1, J+l)dv= I X (I, J-1) -X (1-1,J-1) I + I X (1-2,J) -X (1-1,J)+|X(1-2, J+l)-X(1-1, J+l)能量的定義如下 E=dh+dv+2e如果預(yù)測(cè)模式接近垂直方向,方程為e=|X(I, J-1)-X(1-1, J-1)如果預(yù)測(cè)模式接近水平方向,方程為e= I X (1-2, J) -X (1-1, J)我們把E量化為8個(gè)等級(jí),量化值為5,15,25,42,60,85,140。我們定義結(jié)構(gòu)為當(dāng)前像素的預(yù)測(cè)值和鄰近像素的大小關(guān)系,分別用0,I表示。然后,這一系列0和I組成的序列可以用一個(gè)整數(shù)表示,記為S。比如說(shuō),當(dāng)前像素預(yù)測(cè)值大于某個(gè)相鄰像素,那么他們的關(guān)系就記為1,否則標(biāo)記為O。通過(guò)E和S可以構(gòu)成一個(gè)模型,記為M= (E,S)。對(duì)于每個(gè)像素都會(huì)有一個(gè)M,我們通過(guò)統(tǒng)計(jì)每種模型的個(gè)數(shù)以及對(duì)應(yīng)的能量值,通過(guò)求均值可以得到每種模型的平均誤差,我們就是利用得出的平均誤差來(lái)補(bǔ)償當(dāng)前像素的預(yù)測(cè)值。然后進(jìn)行掃描在一個(gè)塊中,在熵編碼之前,我們需要按照一定的順序?qū)埐钸M(jìn)行掃描。傳統(tǒng)的編碼通過(guò)量化系數(shù)的分布特性決定使用Zig-Zag掃描順序。然而,在關(guān)閉變換量化以后,殘差的分布特點(diǎn)和量化系數(shù)有很大變化,量化系數(shù)能量主要集中在左上角,但是殘差沒(méi)有經(jīng)過(guò)變換量化,所以分布也沒(méi)有那種規(guī)律,一般就是和預(yù)測(cè)方向相關(guān)的,比如說(shuō),水平預(yù)測(cè)的話,由于按列進(jìn)行預(yù)測(cè),那么后面列的像素都是參考前列的像素,那么很大程度上,殘差分布也是水平方向的比較接近,因此可以采用水平方式掃描,因此基于殘差分布的這種特性,就要根據(jù)預(yù)測(cè)方向來(lái)自適應(yīng)的選擇掃描方式。根據(jù)這種特點(diǎn),我們可以得到三種掃描方式,Zig-Zag掃描,水平掃描和垂直掃描。現(xiàn)在具體說(shuō)明一個(gè)實(shí)施例,具體包括1.首先將HEVC中編、解碼端的變換、量化部分關(guān)閉因?yàn)樽儞Q量化會(huì)引入誤差,不能無(wú)失真重建,因此為了實(shí)現(xiàn)無(wú)損,需要將這兩部分關(guān)閉。實(shí)現(xiàn)的方法很簡(jiǎn)單,因?yàn)檎麄€(gè)系統(tǒng)是有序的,比如,有損壓縮編碼端的實(shí)現(xiàn)是這樣,一幅圖片先經(jīng)過(guò)預(yù)測(cè),然后和原始圖像求差,對(duì)殘差再進(jìn)行變換、量化、熵編碼,解碼端就是逆過(guò)程。而現(xiàn)在要去掉變換量化,需要進(jìn)行兩步操作,一個(gè)是去掉變換量化,另一個(gè)是將殘差直接進(jìn)行熵編碼。關(guān)閉變換量化,可以將對(duì)應(yīng)的代碼進(jìn)行注釋?zhuān)?duì)配置文件進(jìn)行修改,需要將量化系數(shù)qp設(shè)置為0,之前有一些針對(duì)變換做后處理的比如SAO,ALF,現(xiàn)在也不需要了也關(guān)閉,設(shè)置為O。2.然后對(duì)I3U進(jìn)行DPCM預(yù)測(cè)直接將HEVC中原方案進(jìn)行替換,HEVC中預(yù)測(cè)有35中模式,保留planar,DC,改變的是33種有角度預(yù)測(cè),將這33種預(yù)測(cè)模式分為水平和垂直兩部分,水平部分逐行預(yù)測(cè),垂直部分逐列預(yù)測(cè)。對(duì)于這兩部分,又分為幾種情況,會(huì)根據(jù)方向選擇用哪兩個(gè)像素還進(jìn)行插值,如果O度,也就是絕對(duì)垂直或水平,就用上面一行或者左邊一列的像素預(yù)測(cè);如果O到45度,垂直方向,就用上面和右上方像素來(lái)預(yù)測(cè),-45度到O度就用上面和左上方像素來(lái)預(yù)測(cè)。對(duì)于第一行或者第一列需要利用相鄰PU像素來(lái)預(yù)測(cè),其他的行、列就利用前一行或者前一列預(yù)測(cè)。當(dāng)然有些邊界情況,比如再進(jìn)行垂直方向O到45度預(yù)測(cè)時(shí),需要使用上面和右上方像素,對(duì)于最后一列,除了第一行外都沒(méi)有像素可以參考,這時(shí)我們可以簡(jiǎn)單處理,就用上面像素進(jìn)行預(yù)測(cè),不會(huì)有太大影響。3.進(jìn)行誤差補(bǔ)償預(yù)測(cè)之后,將預(yù)測(cè)值和原始值進(jìn)行做差,對(duì)當(dāng)前像素鄰近的若干像素的殘差絕對(duì)值求和,把絕對(duì)值和成為能量,通過(guò)鄰近像素預(yù)測(cè)的準(zhǔn)確度來(lái)衡量當(dāng)前像素的預(yù)測(cè)準(zhǔn)確度。如果當(dāng)前像素鄰近像素能量較大,說(shuō)明上一步預(yù)測(cè)不夠準(zhǔn)確,原因可能就是選擇的預(yù)測(cè)模式對(duì)這一區(qū)域不太匹配,這樣的話,我們推斷用這一預(yù)測(cè)模式來(lái)預(yù)測(cè)當(dāng)前像素也不夠準(zhǔn)確, 因此對(duì)當(dāng)前像素預(yù)測(cè)值就進(jìn)行修正,就需要進(jìn)行誤差補(bǔ)償。誤差補(bǔ)償采用統(tǒng)計(jì)建模的方式。模型由兩部分構(gòu)成,一部分成為結(jié)構(gòu)信息,一部分為能量信息。結(jié)構(gòu)信息由當(dāng)前像素預(yù)測(cè)值與鄰近若干像素的大小關(guān)系構(gòu)成,用一系列的0,I構(gòu)成一個(gè)整數(shù)來(lái)描述結(jié)構(gòu)信息。用水平和垂直方向梯度和與相鄰兩個(gè)像素的誤差構(gòu)成,量化8級(jí)。這樣每個(gè)像素根據(jù)能量和結(jié)構(gòu)信息可以歸到某種模型中,并記錄每種模型像素的個(gè)數(shù),以及誤差和,當(dāng)當(dāng)前預(yù)測(cè)像素屬于某種模型,那么我們用這種模型對(duì)應(yīng)的誤差和除以個(gè)數(shù),得出的就是這種模型的平均誤差,再用當(dāng)前像素的預(yù)測(cè)值加上平均誤差就是修正后的預(yù)測(cè)值。4.自適應(yīng)掃描由于圖像用二維矩陣表示,而熵編碼編碼對(duì)象是一維序列,因此要對(duì)預(yù)測(cè)殘差進(jìn)行一定順序掃描,實(shí)現(xiàn)降維目標(biāo)。在有損模式中,由于存在變換量化,量化系數(shù)的分布特點(diǎn)是低頻信息集中于左上角,而無(wú)損模式中不進(jìn)行變換量化,直接對(duì)預(yù)測(cè)殘差進(jìn)行熵編碼,于是殘差不具有和有損模式量化系數(shù)相似的分布特性,殘差分布是均勻的,因此需要調(diào)整掃描方式。因?yàn)槲覀冋{(diào)整了預(yù)測(cè)方法,尤其是方向性預(yù)測(cè)使得和預(yù)測(cè)方向一致的像素比較接近,原始值,預(yù)測(cè)值都類(lèi)似,因此殘差也比較接近,因?yàn)槲覀儝呙璧捻樞蛞罁?jù)預(yù)測(cè)方向來(lái)進(jìn)行可能會(huì)提高熵編碼效率,但是因?yàn)閽呙柚挥兴交蛘叽怪睊呙?,因此我們只把方向很接近水平或者垂直方向的才進(jìn)行掃描改變,其他的還采用Z掃描。5.解碼端相對(duì)于編碼端要簡(jiǎn)單。解碼過(guò)程由熵解碼和預(yù)測(cè)組成,因?yàn)橥ㄟ^(guò)解析碼流文件可以得到殘差圖像,預(yù)測(cè)模式等信息,需要做的就是利用DCPM方法求出預(yù)測(cè)值,然后根據(jù)當(dāng)前像素鄰近的像素殘差能量是否超過(guò)閾值來(lái)約定是否進(jìn)行誤差補(bǔ)償,如果需要的話還要利用統(tǒng)計(jì)建模獲得當(dāng)前像素對(duì)應(yīng)模型的平均誤差,來(lái)修正預(yù)測(cè)值。然后,已修正的預(yù)測(cè)值和殘差相加便得到了原始圖像。本發(fā)明的有益效果如下為了驗(yàn)證上述所提到的方案的有效性,我們對(duì)比較常用的測(cè)試圖像進(jìn)行試驗(yàn),和現(xiàn)在比較主流的無(wú)損壓縮以及預(yù)測(cè)方法進(jìn)行對(duì)比,主要比較的是圖像的壓縮比,通過(guò)BPP來(lái)衡量,BPP表示bitper pixel,即,每個(gè)像素需要編碼的比特?cái)?shù),使用平均BPP來(lái)衡量編碼效率,BPP越小,說(shuō)明編碼一個(gè)像素使用的比特?cái)?shù)越少,壓縮效率就越高,反之,則說(shuō)明壓縮效率比較低。我們提出的幀內(nèi)無(wú)損編碼模型在HEVC參考軟件HM4. 0上進(jìn)行實(shí)現(xiàn)。HM的配置將量化系數(shù)設(shè)為0,有損編碼中存在變換,因此如屬于變換的后處理的功能,如去方塊濾波,就需要關(guān)閉。在第一個(gè)實(shí)驗(yàn)中,我們將DPCM預(yù)測(cè)算法與現(xiàn)有的幾個(gè)預(yù)測(cè)方法進(jìn)行比較。包括HEVC自帶的預(yù)測(cè)方法,GAP (自適應(yīng)梯度預(yù)測(cè)),EDP(邊緣檢測(cè)預(yù)測(cè)),TEM (模板匹配)等。
權(quán)利要求
1.一種基于HEVC框架的幀內(nèi)無(wú)損壓縮編碼方法,其特征在于包括以 下步驟 (1)基于HEVC框架、根據(jù)圖像平滑程度來(lái)自適應(yīng)調(diào)整編碼單元⑶的大??; (2)對(duì)當(dāng)前預(yù)測(cè)單元進(jìn)行差分預(yù)測(cè)編碼DPCM; (3)進(jìn)行率失真優(yōu)化RDO,選擇最優(yōu)分割方案以及最優(yōu)預(yù)測(cè)模式; (4)統(tǒng)計(jì)建模,對(duì)每個(gè)像素進(jìn)行模型的計(jì)算和統(tǒng)計(jì),得出每個(gè)模型的數(shù)量以及殘差之和; (5)計(jì)算當(dāng)前的當(dāng)前預(yù)測(cè)像素所鄰近的像素的殘差能量值,殘差能量值是鄰近像素殘差的絕對(duì)值之和,如果該殘差能量值大于預(yù)定值則執(zhí)行步驟(6),否則執(zhí)行步驟(7); (6)進(jìn)行誤差補(bǔ)償,則建立模型,并求出該模型的平均誤差,對(duì)預(yù)測(cè)值進(jìn)行修正; (7)根據(jù)預(yù)測(cè)模式與掃描模式的映射表,確定掃描順序; (8)對(duì)掃描完成的殘差進(jìn)行熵編碼; (9)向解碼端輸出編碼后的碼流文件; (10)在解碼端,對(duì)碼流文件進(jìn)行熵解碼,解析出殘差信息、預(yù)測(cè)模式; (11)利用DPCM進(jìn)行插值預(yù)測(cè); (12)對(duì)每個(gè)像素建立模型,統(tǒng)計(jì)每種模型的數(shù)量以及殘差的和; (13)計(jì)算預(yù)測(cè)后每個(gè)像素所鄰近像素的殘差的能量和是否大于指定值,如果大于則執(zhí)行步驟(14),否則執(zhí)行步驟(15); (14)用統(tǒng)計(jì)建模的結(jié)果求出殘差平均值,對(duì)預(yù)測(cè)值進(jìn)行修正; (15)重建圖像,即用預(yù)測(cè)值和解碼出的殘差進(jìn)行求和。
2.根據(jù)權(quán)利要求1所述的基于HEVC框架的幀內(nèi)無(wú)損壓縮編碼方法,其特征在于步驟(2)中的差分預(yù)測(cè)編碼與幀內(nèi)預(yù)測(cè)的33個(gè)有角度的預(yù)測(cè)模式融合,角度預(yù)測(cè)的角度范圍在[-135,45], [-45,45]定義為近似垂直方向,[135,-45]定義為近似水平方向,如果是近似垂直方向采用逐行預(yù)測(cè),如果是近似水平方向采用逐列預(yù)測(cè)。
3.根據(jù)權(quán)利要求2所述的基于HEVC框架的幀內(nèi)無(wú)損壓縮編碼方法,其特征在于步驟(6)中的誤差補(bǔ)償包括如下步驟 (6.1)計(jì)算參數(shù)e,如果預(yù)測(cè)模式接近垂直方向,則采用公式(I),如果預(yù)測(cè)模式接近水平方向,則采用公式(2) e=|x(i, j-D-xd-1, J-1)(I) e = X(1-2, J)-X(1-11J) II (2) 其中X(I,J)為當(dāng)前要預(yù)測(cè)的像素; (6. 2)通過(guò)公式(3)- (5)計(jì)算能量E dh=|x(i, J-1)-X(I, J-2) HX(1-1,J-1)-X(1-1,j) I(3)+ |X(1-1, J)-X(1-1, J+1)dv= IX(I, J-1)-X(1-1,J-1) I +1X(1-2,J)-X(1-1,J) I(4)+ |X(1-2, J+1)-X(1-1, J+1) E=dh+dv+2e(5); (6. 3)把E量化為8個(gè)等級(jí),量化值為5,15,25,42,60,85,140 ; (6. 4)如果當(dāng)前像素預(yù)測(cè)值大于某個(gè)相鄰像素,那么二者的關(guān)系就記為1,否則記為0,這一系列O和I組成的序列記為S ;(6. 5)構(gòu)造模型M= (E,S),每個(gè)像素有一個(gè)M,通過(guò)統(tǒng)計(jì)每種模型的個(gè)數(shù)以及對(duì)應(yīng)的能量值,通過(guò)求均值得到每種模型的平均誤差,利用得出的平均誤差來(lái)補(bǔ)償當(dāng)前像素的預(yù)測(cè)值。
4.根據(jù)權(quán)利要求3所述的基于HEVC框架的幀內(nèi)無(wú)損壓縮編碼方法,其特征在于步驟(7)中的掃描方式包括Zig-Zag掃描、水平掃描和垂直掃描。
全文摘要
公開(kāi)了一種時(shí)間復(fù)雜度較低、預(yù)測(cè)準(zhǔn)確度較高、提高壓縮比的基于HEVC框架的無(wú)損壓縮編碼方法。利用HEVC框架本身,可以實(shí)現(xiàn)依據(jù)圖像平坦程度來(lái)自適應(yīng)的分割編碼單元,并決定最佳的分割方案,選擇最優(yōu)的預(yù)測(cè)模式。利用DPCM差分編碼進(jìn)行初步預(yù)測(cè),對(duì)于紋理復(fù)雜的區(qū)域只用差分編碼可能會(huì)使預(yù)測(cè)誤差較大,因此,對(duì)該區(qū)域采用誤差補(bǔ)償?shù)姆绞綄?duì)預(yù)測(cè)值進(jìn)行修正,通過(guò)這兩種方法的結(jié)合可以獲得降低時(shí)間復(fù)雜度,提高預(yù)測(cè)準(zhǔn)確度的有效的折中。殘差的分布特點(diǎn)依賴(lài)于預(yù)測(cè)模式,因此根據(jù)預(yù)測(cè)模式?jīng)Q定殘差的掃描順序,可以使熵編碼更加有效。
文檔編號(hào)H04N7/26GK103024383SQ20121054381
公開(kāi)日2013年4月3日 申請(qǐng)日期2012年12月14日 優(yōu)先權(quán)日2012年12月14日
發(fā)明者丁文鵬, 劉鐵華, 施云惠, 尹寶才 申請(qǐng)人:北京工業(yè)大學(xué)
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
墨江| 阳泉市| 昭通市| 平邑县| 九龙县| 九江市| 民勤县| 嘉善县| 蒙阴县| 商洛市| 体育| 丰宁| 台中市| 龙陵县| 抚松县| 涞水县| 任丘市| 安福县| 乐都县| 淮阳县| 江阴市| 华蓥市| 孟连| 贡山| 基隆市| 汉沽区| 北安市| 邻水| 宁乡县| 彰化市| 当雄县| 玛纳斯县| 岐山县| 漾濞| 耒阳市| 静宁县| 崇礼县| 泗洪县| 溧水县| 辽宁省| 巩义市|