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

基于SATD復(fù)用的HEVC幀內(nèi)預(yù)測方法與流程

文檔序號:11524740閱讀:236來源:國知局
基于SATD復(fù)用的HEVC幀內(nèi)預(yù)測方法與流程

本發(fā)明屬于視頻壓縮編碼技術(shù)領(lǐng)域,特別涉及一種幀內(nèi)預(yù)測編碼方法,可用于粗選模塊的簡化計算。



背景技術(shù):

高效視頻編碼hevc作為新一代的視頻編碼標準,在2013年由聯(lián)合視頻編碼jct-vc制定。hevc標準主要針對高清和超高清分辨率視頻的壓縮,相比于之前的h.264/avc標準,在相同壓縮效果的情況下,碼流大小僅為之前的一半。hevc分為幀內(nèi)編碼和幀間編碼兩種,分別用于去除視頻的空間和時間冗余性。幀內(nèi)編碼是幀間編碼的基礎(chǔ),在hevc編碼中占有極其重要的作用,同時也是性能得到如此大提升的關(guān)鍵。對于幀內(nèi)編碼,它采用的是四叉樹劃分結(jié)構(gòu)來編碼視頻。它將一幀視頻切割成一個個的編碼樹單元ctu,作為編碼單元的起始節(jié)點,最大支持到64x64pixel,每一個64x64的編碼單元可以通過四叉樹劃分生成4個32x32的編碼單元,然后遞歸劃分直至最小尺寸為8x8,如圖1所示。對于預(yù)測單元來說,它的大小等于編碼單元大小。只有當編碼單元劃分至8x8時,預(yù)測單元大小可以是8x8或者4x4。對于每一個預(yù)測單元,有35種幀內(nèi)模式進行預(yù)測。其中模式0是planar,適用于均勻光滑的區(qū)域;模式1是dc,適用于漸變平滑的區(qū)域;模式2到模式34是33種角度模式,能夠區(qū)分細小的角度趨勢,如圖2所示。

hevc幀內(nèi)預(yù)測支持的預(yù)測塊大小有5種,除了4x4塊的其他預(yù)測塊,從64x64塊到8x8塊,每一個較大塊都有劃分和不劃分兩種劃分模式,在塊大小的范圍內(nèi)尋找最優(yōu)解;同時在預(yù)測塊內(nèi)部分別計算預(yù)測模式0到模式34,在特定大小的限制下,尋找模式的最優(yōu)解。通過塊大小和模式的遍歷,能夠找到當前ctu的最佳劃分和在此劃分情況下的最優(yōu)模式。這種雙重遍歷的做法使得其性能得到較大提升,但同時也大大提高了算法的計算復(fù)雜度,達到之前標準的4倍。一般平臺的性能難以實現(xiàn)對2k、4k等分辨率的超高清視頻的hevc實時編碼。很多人研究了各種基于hevc的快速算法,有一些也取得了不錯的成果,但大部分都是基于滿足某種具體特征的視頻的壓縮,在滿足相應(yīng)參考量閾值條件的情況下提前終止塊大小或者模式的遍歷,這種做法是以一定的性能損失為代價人為的對模式或塊大小進行篩選,不僅應(yīng)用面太窄,而且對于不同視頻序列其壓縮性能不穩(wěn)定。



技術(shù)實現(xiàn)要素:

本發(fā)明的目的在于提出一種基于satd復(fù)用的hevc幀內(nèi)預(yù)測方法,以減少幀內(nèi)預(yù)測粗選過程中的重復(fù)性的計算,降低計算復(fù)雜度,提高視頻壓縮性能的穩(wěn)定性。

本發(fā)明的技術(shù)方案是這樣實現(xiàn)的:

一.技術(shù)原理

對于除了4x4塊的其他4種較大的預(yù)測塊,其satd可由其作為根節(jié)點細分出來的四個四叉樹小塊的satd累加得到,而這些小塊的satd也可由它們細分出來的四叉樹小塊satd累加得到,因此所有大小的預(yù)測塊的satd都可以直接由4x4塊累加而成。由于這些4x4塊在不同大小塊內(nèi)的某些預(yù)測模式下用到的參考點是一致的,因此satd的計算結(jié)果也是相同的,可以通過復(fù)用計算過的satd結(jié)果減少其他不必要的模式的遍歷,這樣,五種預(yù)測塊大小對應(yīng)的五種深度情況下需要的遍歷的模式數(shù)就能夠大大減少,使得整個幀內(nèi)預(yù)測的計算復(fù)雜度大大降低。

二.實現(xiàn)方案

根據(jù)上述原理,本發(fā)明是在已有的hevc軟件測試平臺hm16.0的基礎(chǔ)上修改實現(xiàn),其步驟包括如下:

(1)初始化:

創(chuàng)建4個256x35的二維數(shù)組mem8,mem16,mem32,mem64,這4個二維數(shù)組分別對應(yīng)一個ctu內(nèi)8x8,16x16,32x32,64x64層下的256個4x4塊的35種幀內(nèi)預(yù)測模式的可復(fù)用信息,每一個數(shù)組成員內(nèi)的數(shù)據(jù)為0或者1,1代表著該模式下該4x4小塊的預(yù)測結(jié)果能被復(fù)用,0代表不能復(fù)用;

創(chuàng)建5個有256個數(shù)組成員的一維數(shù)組cost4,cost8,cost16,cost32和cost64,用于保存計算得到的256個4x4塊在不同深度下的satd的結(jié)果;

創(chuàng)建4個變量r1,r2,r3和r4,用來保存從4個二維數(shù)組mem8,mem16,mem32,mem64讀取出的當前4x4塊的當前模式可復(fù)用信息;

(2)將64x64的ctu以4x4大小為基本單元進行分割,得到16x16的4x4塊陣列,并按照規(guī)定的z字形的順序?qū)@些4x4塊進行編號;

(3)根據(jù)4x4塊在ctu內(nèi)的具體位置,計算得到各層的可復(fù)用模式號,根據(jù)得到的可復(fù)用模式號給4個二維數(shù)組mem8,mem16,mem32,mem64中當前4x4塊對應(yīng)的成員變量賦值;

(4)按照步驟(2)編號的順序,遍歷ctu內(nèi)所有位置的256個4x4塊,對每一個4x4塊進行(3)的操作,直到將所有的數(shù)組成員賦值完成;

(5)對第一個4x4塊,根據(jù)其參考像素計算在4x4層下此預(yù)測塊的預(yù)測值,并與原始像素值作差,求得殘差像素,再計算該4x4塊的差值變換絕對值的和satd,將該satd保存到第一個一維數(shù)組cost4中;

(6)讀取第一個二維數(shù)組mem8中當前4x4塊對應(yīng)的35個變量值,作為跳過可復(fù)用模式的依據(jù),若變量值為1,則跳過此變量代表的預(yù)測模式的遍歷;若變量值為0,則在此變量代表的預(yù)測模式下進行預(yù)測,求得該模式下的4x4塊的差值變換絕對值的和satd,并將計算結(jié)果保存到第二個一維數(shù)組cost8;

(7)重復(fù)步驟(6),將16x16層,32x32層和64x64層中不可復(fù)用模式的差值變換絕對值的和satd計算結(jié)果分別保存到第三個到第五個一維數(shù)組cost16,cost32和cost64中;

(8)從4個二維數(shù)組mem8,mem16,mem32和mem64中分別讀取出當前模式對應(yīng)的數(shù)組成員,分別賦給步驟(1)中建立的四個變量r1,r2,r3和r4;

(9)根據(jù)四個變量r1,r2,r3和r4的值,判斷當前模式下的差值變換絕對值的和satd能否復(fù)用:

(9a)判斷當前層數(shù):

如果當前層為4x4層,則執(zhí)行(9b);如果當前層為8x8層,則執(zhí)行(9c);如果當前層為16x16層,則執(zhí)行(9d);如果當前層為32x32層,則執(zhí)行(9e);

(9b)根據(jù)r1的值判斷satd能否復(fù)用到8x8層:若r1=1,則將當前模式的satd保存到第二個一維數(shù)組cost8,并通過r2判斷能否復(fù)用到16x16層,執(zhí)行(9c);否則,執(zhí)行(10);

(9c)根據(jù)r2的值判斷satd能否復(fù)用到16x16層:若r2=1,則將當前模式的satd保存到第三個一維數(shù)組cost16,并通過r3判斷能否復(fù)用到32x32層,執(zhí)行(9d);否則,執(zhí)行(10);

(9d)根據(jù)r3的值判斷satd能否復(fù)用到32x32層:若r3=1,則將當前模式的satd保存到第四個一維數(shù)組cost32,并通過r4判斷能否復(fù)用到64x64層,執(zhí)行(9e);否則,執(zhí)行(10);

(9e)根據(jù)r4的值判斷satd能否復(fù)用到64x64層:若r4=1,則將當前模式的satd保存到第五個一維數(shù)組cost64,否則,執(zhí)行(10);

(10)定義4x4層,8x8層,16x16層,32x32層和64x64層對應(yīng)的層數(shù)為0,1,2,3和4;根據(jù)當前模式號、層數(shù)和塊編號,選擇進入下一次遍歷:

(10a)如果模式號為34,則層數(shù)加1,執(zhí)行(10b);否則,模式號加1,返回執(zhí)行(8),進入當前層數(shù)下的下一個模式遍歷;

(10b)如果層數(shù)大于4,則4x4塊編號加1,執(zhí)行(10c);否則,返回執(zhí)行(8),進入當前4x4塊下一層的遍歷;

(10c)如果4x4塊編號大于256,則當前ctu的幀內(nèi)預(yù)測過程結(jié)束;否則,返回步驟(5),進入下一個4x4塊的遍歷。

本發(fā)明與現(xiàn)有技術(shù)相比,具有如下優(yōu)點:

第一,通過創(chuàng)建四個二維數(shù)組mem8,mem16,mem32和mem64,將所有的預(yù)測模式分為可復(fù)用和不可復(fù)用兩種,其中可復(fù)用模式下的差值變換絕對值的和satd可利用不可復(fù)用模式的計算結(jié)果間接獲得,減少了重復(fù)計算;相比于原h(huán)m標準算法,ctu內(nèi)模式計算數(shù)從44800種減少到30616種,減少了約1/3,幀內(nèi)預(yù)測的計算復(fù)雜度大大降低;

第二,本發(fā)明是通過利用當前塊的位置和預(yù)測模式復(fù)用性的關(guān)系來減少模式的計算數(shù),與待壓縮圖像的具體內(nèi)容無關(guān),對不同的視頻測試序列,其減少的計算量相同,因而能提供穩(wěn)定的壓縮性能。

附圖說明

圖1是現(xiàn)有hevc預(yù)測單元的四叉樹劃分結(jié)構(gòu);

圖2是現(xiàn)有35種預(yù)測模式的分布;

圖3是本發(fā)明中規(guī)定的z字形順序;

圖4是本發(fā)明的實現(xiàn)流程圖。

具體實施方式

參照圖4,本發(fā)明的實現(xiàn)步驟如下:

步驟1:初始化。

創(chuàng)建4個256x35的二維數(shù)組mem8,mem16,mem32,mem64,這4個二維數(shù)組分別對應(yīng)一個ctu內(nèi)8x8,16x16,32x32,64x64層下的256個4x4塊的35種幀內(nèi)預(yù)測模式的可復(fù)用信息,每一個數(shù)組成員內(nèi)的數(shù)據(jù)為0或者1,1代表著該模式下該4x4小塊的預(yù)測結(jié)果能被復(fù)用,0代表不能復(fù)用;

創(chuàng)建5個有256個數(shù)組成員的一維數(shù)組cost4,cost8,cost16,cost32和cost64,用于保存計算得到的256個4x4塊在不同深度下的satd的結(jié)果;

創(chuàng)建4個變量r1,r2,r3和r4,用來保存從4個二維數(shù)組mem8,mem16,mem32,mem64讀取出的當前4x4塊的當前模式可復(fù)用信息。

步驟2:ctu的切割及編號。

將64x64的ctu以4x4大小為基本單元進行分割,得到16x16的4x4塊陣列,并按照規(guī)定的z字形的順序?qū)@些4x4塊進行編號;

編號規(guī)則如圖3所示,每一層內(nèi)的4x4單元都是按照左上、右上、左下和右下的順序進行排列,這樣的順序安排是為了使得編號靠后的4x4塊進行預(yù)測時能夠使用編號靠前的4x4塊更新好的參考像素。

步驟3:計算4x4塊模式的可復(fù)用性。

根據(jù)4x4塊在ctu內(nèi)的具體位置,計算得到各層的可復(fù)用模式號,根據(jù)得到的可復(fù)用模式號給4個二維數(shù)組mem8,mem16,mem32,mem64中當前4x4塊對應(yīng)的成員變量賦值,具體的步驟如下:

(3a)計算4x4層下預(yù)測模式的差值變換絕對值的和satd能否復(fù)用到8x8層的復(fù)用條件:

如果當前模式為縱向角度模式,則可復(fù)用條件為:

(y+1)*intrapredangle[dir]+x+1>ntbs,

如果當前模式為橫向角度模式,則可復(fù)用條件為:

(x+1)*intrapredangle[dir]+y+1>ntbs,

其中,ntbs是當前層塊寬度,dir是當前預(yù)測模式對應(yīng)的角度值,intrapredangle[dir]是該角度正切值的32倍,(x,y)是由4x4預(yù)測塊相對于8x8塊的位置決定的該4x4塊的關(guān)鍵像素的坐標;

所述此關(guān)鍵像素,按如下規(guī)則確定:

如果4x4塊處于8x8塊左下方,則關(guān)鍵像素是4x4塊的右上角像素點;

如果4x4塊處于8x8塊右上方,則關(guān)鍵像素是4x4塊的左下角像素點;

(3b)判斷當前模式下(3a)中可復(fù)用條件是否成立,如果成立,則當前模式是8x8層的可復(fù)用模式,否則,此模式不可復(fù)用;

(3c)重復(fù)步驟(3a)和(3b),遍歷35種幀內(nèi)預(yù)測模式,篩選出35種模式中屬于8x8層的可復(fù)用模式,得到8x8層的所有可復(fù)用模式號。

步驟4:遍歷ctu內(nèi)4x4塊模式的可復(fù)用性。

按照步驟2中編號的順序,遍歷ctu內(nèi)所有位置的256個4x4塊,對每一個4x4塊進行步驟3的操作,直到將所有的數(shù)組成員賦值完成。

步驟5:計算4x4塊差值變換絕對值的和satd。

對第一個4x4塊,根據(jù)其參考像素和原始像素計算該4x4塊的差值變換絕對值的和satd,將該satd保存到第一個一維數(shù)組cost4中,計算的具體步驟如下:

(5a)根據(jù)參考像素值計算得到4x4塊的預(yù)測值;

(5b)將像素的預(yù)測值與原始值作差,得到殘差像素矩陣;

(5c)對殘差像素矩陣進行哈德馬變換;

(5d)對變換后的矩陣系數(shù)進行絕對值求和,得到4x4塊的差值變換絕對值的和satd。

步驟6:保存8x8層不可復(fù)用模式計算結(jié)果。

讀取第一個二維數(shù)組mem8中當前4x4塊對應(yīng)的35個變量值,作為跳過可復(fù)用模式的依據(jù),若變量值為1,則跳過此變量代表的預(yù)測模式的遍歷;若變量值為0,則在此變量代表的預(yù)測模式下進行預(yù)測,求得該模式下的4x4塊的差值變換絕對值的和satd,并將計算結(jié)果保存到第二個一維數(shù)組cost8中。

步驟7:保存16x16層,32x32層和64x64層不可復(fù)用模式計算結(jié)果。

重復(fù)步驟6,將16x16層中不可復(fù)用模式的差值變換絕對值的和satd保存到第三個一維數(shù)組cost16中,將32x32層中不可復(fù)用模式的差值變換絕對值的和satd保存到第四個一維數(shù)組cost32中,將64x64層中不可復(fù)用模式的差值變換絕對值的和satd保存到第五個一維數(shù)組cost64中。

步驟8:給r1,r2,r3和r4賦值。

從4個二維數(shù)組mem8,mem16,mem32和mem64中分別讀取出當前模式對應(yīng)的數(shù)組成員,分別賦給步驟1中建立的四個變量r1,r2,r3和r4中。

步驟9:保存可復(fù)用模式下計算結(jié)果。

根據(jù)四個變量r1,r2,r3和r4的值,判斷當前模式下的差值變換絕對值的和satd能否復(fù)用:

(9a)判斷當前層數(shù):

如果當前層為4x4層,則執(zhí)行(9b);如果當前層為8x8層,則執(zhí)行(9c);如果當前層為16x16層,則執(zhí)行(9d);如果當前層為32x32層,則執(zhí)行(9e);

(9b)根據(jù)r1的值判斷satd能否復(fù)用到8x8層:若r1=1,則將當前模式的satd保存到第二個一維數(shù)組cost8,并通過r2判斷能否復(fù)用到16x16層,執(zhí)行(9c);否則,執(zhí)行步驟10;

(9c)根據(jù)r2的值判斷satd能否復(fù)用到16x16層:若r2=1,則將當前模式的satd保存到第三個一維數(shù)組cost16,并通過r3判斷能否復(fù)用到32x32層,執(zhí)行(9d);否則,執(zhí)行步驟10;

(9d)根據(jù)r3的值判斷satd能否復(fù)用到32x32層:若r3=1,則將當前模式的satd保存到第四個一維數(shù)組cost32,并通過r4判斷能否復(fù)用到64x64層,執(zhí)行(9e);否則,執(zhí)行步驟10;

(9e)根據(jù)r4的值判斷satd能否復(fù)用到64x64層:若r4=1,則將當前模式的satd保存到第五個一維數(shù)組cost64,否則,執(zhí)行步驟10。

步驟10:選擇進入下一次遍歷。

定義4x4層,8x8層,16x16層,32x32層和64x64層對應(yīng)的層數(shù)為0,1,2,3和4;根據(jù)當前模式號、層數(shù)和塊編號,選擇進入下一次遍歷:

(10a)如果模式號為34,則層數(shù)加1,執(zhí)行(10b);否則,模式號加1,返回步驟8,進入當前層數(shù)下的下一個模式遍歷;

(10b)如果層數(shù)大于4,則4x4塊編號加1,執(zhí)行(10c);否則,返回步驟8,進入當前4x4塊下一層的遍歷;

(10c)如果4x4塊編號大于256,則當前ctu的幀內(nèi)預(yù)測過程結(jié)束;否則,返回步驟5,進入下一個4x4塊的遍歷。

本發(fā)明的效果可以用以下實驗結(jié)果進一步說明:

1.測試條件

選擇主機處理器為intelcore2duocpu,內(nèi)存為4gb,系統(tǒng)類型為64位操作系統(tǒng),測試平臺是hm16.0。

2.測試內(nèi)容

在測試平臺hm16.0上,用本發(fā)明方法和現(xiàn)有的標準方法對多個視頻測試序列進行測試并進行比較,結(jié)果如表1。

表1本發(fā)明與標準方法測試結(jié)果的比較

表1覆蓋了三種不同分辨率的測試序列。

測試結(jié)果表明:對于不同分辨率的視頻測試序列,本發(fā)明的方法都能使得粗選時間減少約1/3,大大降低了編碼過程的計算復(fù)雜度,且?guī)淼男阅軗p失bd-rate可以忽略不計,代價僅僅是使用了額外的緩存資源將中間過程的差值變換絕對值的和satd進行緩存。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
津市市| 密山市| 乌拉特中旗| 文安县| 资溪县| 无为县| 平邑县| 盖州市| 台安县| 建湖县| 合水县| 施秉县| 雷州市| 新丰县| 隆子县| 普格县| 措美县| 棋牌| 南陵县| 仁怀市| 黄石市| 修武县| 榆社县| 永川市| 长寿区| 定安县| 蒙自县| 定陶县| 年辖:市辖区| 江西省| 巩义市| 集贤县| 顺平县| 武威市| 富宁县| 吉木萨尔县| 东兴市| 阜阳市| 凭祥市| 临沭县| 内黄县|