国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

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

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

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



      背景技術(shù):

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

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



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

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

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

      一.技術(shù)原理

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

      二.實(shí)現(xiàn)方案

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

      (1)初始化:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      (10a)如果模式號(hào)為34,則層數(shù)加1,執(zhí)行(10b);否則,模式號(hào)加1,返回執(zhí)行(8),進(jìn)入當(dāng)前層數(shù)下的下一個(gè)模式遍歷;

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

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

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

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

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

      附圖說明

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

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

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

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

      具體實(shí)施方式

      參照?qǐng)D4,本發(fā)明的實(shí)現(xiàn)步驟如下:

      步驟1:初始化。

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

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

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

      步驟2:ctu的切割及編號(hào)。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      步驟5:計(jì)算4x4塊差值變換絕對(duì)值的和satd。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      步驟10:選擇進(jìn)入下一次遍歷。

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

      (10a)如果模式號(hào)為34,則層數(shù)加1,執(zhí)行(10b);否則,模式號(hào)加1,返回步驟8,進(jìn)入當(dāng)前層數(shù)下的下一個(gè)模式遍歷;

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

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

      本發(fā)明的效果可以用以下實(shí)驗(yàn)結(jié)果進(jìn)一步說明:

      1.測(cè)試條件

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

      2.測(cè)試內(nèi)容

      在測(cè)試平臺(tái)hm16.0上,用本發(fā)明方法和現(xiàn)有的標(biāo)準(zhǔn)方法對(duì)多個(gè)視頻測(cè)試序列進(jìn)行測(cè)試并進(jìn)行比較,結(jié)果如表1。

      表1本發(fā)明與標(biāo)準(zhǔn)方法測(cè)試結(jié)果的比較

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

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

      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1