HEVC基礎(chǔ)知識(shí)講解(1)-LCU 模式選擇過(guò)程分析(CTU的深度選擇及CU的分割)

1.率失真代價(jià)計(jì)算模型
HEVC 的最大編碼單元為 LCU,即 64×64 的 CU(認(rèn)為是數(shù)據(jù)單元,也就是編碼單元);
下面就需要對(duì)LCU進(jìn)行CU的劃分;步驟如下:
1、對(duì)一個(gè) LCU 選擇最佳 CU編碼深度,需要遍歷所有 64×64 到 8×8 的分割,一共 85 個(gè) CU,通過(guò)計(jì)算率失真代價(jià)選擇此 LCU 的最佳分割方式。
PS:首先先看這一步,一個(gè)LCU = 1個(gè)64CU+4個(gè)32CU+16個(gè)16CU+64個(gè)8CU = 1+4+16+64 = 85;
然后有一個(gè)問(wèn)題,我們?yōu)槭裁丛赾u劃分的時(shí)候,最小是8x8,而不是4x4?
因?yàn)槲覀儎澐諰CU也只是第一步,因?yàn)楹竺孢€要去看PU的劃分以及TU的劃分;因?yàn)镻U和TU得到劃分都是要基于CU來(lái)進(jìn)行;后面會(huì)分析到PU和TU的劃分;這里我們要明白的是,因?yàn)镻U和TU的劃分,所以CU只能最小到8x8(!!!!CU最小的劃分單元就是8x8,切記!!!!);

2、對(duì)于每一個(gè) CU,遍歷幀內(nèi)和幀間所有可選的預(yù)測(cè)模式,根據(jù)率失真代價(jià)選擇最佳 PU(預(yù)測(cè)單元,做像素值的預(yù)測(cè)) 預(yù)測(cè)模式。
PS:PU有8種模式;它是針對(duì)于CU來(lái)進(jìn)行劃分的,而且針對(duì)于不同的預(yù)測(cè)模式(skip,幀間,幀內(nèi)),劃分的方式是不一樣的;如下:


image.png

3、對(duì)于每一種 PU 預(yù)測(cè)模式,TU的分割方式由當(dāng)前 CU 的大小、PU 的預(yù)測(cè)模式以及最大 TU 分割深度等因素決定,選擇過(guò)程也需要計(jì)算率失真代價(jià)。
PS:TU的分割是與PU無(wú)關(guān)的,可以跨越多個(gè)PU的界限,也可以不跨越;還是依賴于的是CU的劃分

可以看出,在 HEVC 編碼過(guò)程中,任何一個(gè)劃分方式或預(yù)測(cè)模式的選擇,都需要計(jì)算率失真代價(jià), HM 的編碼器中,率失真代價(jià)的計(jì)算模型有以下兩種:
1、非 RDO 模型
非 RDO 模型可用于幀內(nèi)預(yù)測(cè)、運(yùn)動(dòng)估計(jì)、最佳 MVP 的選擇 及 merge 模式中最佳運(yùn)動(dòng)參數(shù)集的選擇等。
2、RDO 模型

所有有關(guān)分割方式的選擇都采用 RDO 模型計(jì)算率失真代價(jià)。

2.LCU 編碼深度選擇過(guò)程

當(dāng) LCU 的大小為 64×64,最大編碼深度為 3,則 LCU 編碼深度的選擇過(guò)程可如下圖表示。


image.png

第一步,如圖 a),對(duì)大小為 64×64 深度為 0 的編碼單元 a 遍歷所有幀間和幀內(nèi)預(yù)測(cè)模式,得到深度為 0 時(shí)的最優(yōu)預(yù)測(cè)模式和率失真代價(jià) Ra。

第二步,如圖 b),對(duì) a 進(jìn)行一次 CU 劃分,得到四個(gè)子 CU:b0,b1,b2,b3,此時(shí)編碼深度為 1,并對(duì)編碼單元 b0 遍歷所有幀間和幀內(nèi)預(yù)測(cè)模式,得到 b0的最優(yōu)預(yù)測(cè)方式和率失真代價(jià) Rb0。

第三步,如圖 c),對(duì) b0 進(jìn)行進(jìn)一步的 CU 劃分,得到四個(gè)子 CU:c0,c1,c2 和 c3,此時(shí)編碼深度為 2,并對(duì)編碼單元 c0 遍歷所有可能的預(yù)測(cè)模式,得到 c0的最優(yōu)預(yù)測(cè)模式和率失真代價(jià) Rc0。

第四步,如圖 d),對(duì) c0 做進(jìn)一步 CU 劃分,得到四個(gè)子 CU:d0,d1,d2和 d3,此時(shí)編碼深度為 3,已達(dá)到最大編碼深度,不能再進(jìn)行 CU 劃分。依次對(duì)d0、d1、d2 和 d3 進(jìn)行預(yù)測(cè)模式選擇,得到各自對(duì)應(yīng)的最優(yōu)預(yù)測(cè)方式和率失真代價(jià)Rd0、Rd1、Rd2以及 Rd3,計(jì)算四個(gè) CU 的率失真代價(jià)之和,并與 Rc0進(jìn)行比較,選擇較小的值作為 c0 的最優(yōu)率失真代價(jià)(記為 Min-Rc0),其對(duì)應(yīng)的預(yù)測(cè)方式以及分割方式即為 c0 的最優(yōu)預(yù)測(cè)方式和分割方式。

第五步,仿照第四步,依次對(duì) c1、c2 和 c3 進(jìn)行劃分與預(yù)測(cè)模式選擇,分別得到各自對(duì)應(yīng)的最優(yōu)預(yù)測(cè)方式和率失真代價(jià) Min-Rc1、Min-Rc2、Min-Rc3,并計(jì)算當(dāng)前編碼深度的四個(gè) CU 的率失真代價(jià)之和,與 Rb0比較,得到較小的率失真代價(jià)(記為 Min-Rb0),其所對(duì)應(yīng)的預(yù)測(cè)模式以及分割方式即為 b0 的最優(yōu)預(yù)測(cè)模式和分割方式。

第六步,仿照第二步到第五步,依次對(duì) b1、b2 和 b3 進(jìn)行劃分與預(yù)測(cè)模式選擇,分別得到各自對(duì)應(yīng)的最優(yōu)預(yù)測(cè)方式和率失真代價(jià) Min-Rb1、Min-Rb2、Min-Rb3,計(jì)并計(jì)算當(dāng)前編碼深度的四個(gè) CU 的率失真代價(jià)之和,并與 Ra 比較,得到較小的率失真代價(jià)(記為 Min-Ra),找出該 LCU 的最佳劃分方式以及最優(yōu)預(yù)測(cè)模式。

3.CU 的預(yù)測(cè)模式選擇過(guò)程

在 LCU 的最佳劃分方式的選擇過(guò)程中,對(duì)于每一個(gè)編碼深度的 CU,做 PU 預(yù)測(cè)模式選擇,一個(gè)大小為 2N×2N 的 CU,PU 幀間預(yù)測(cè)模式有 skip、2N×2N、2N×N、N×2N、N×N、2N×nU、2N×nD、nL×2N 以及 nR×2N。
1)其中 skip 模式對(duì)應(yīng)的 CU劃分方式為 2N×2N;
2)幀內(nèi)模式 PU 的大小可以為 2N×2N 或 N×N,N×N 只能適用于深度為最大編碼深度(8x8)的 CU。
3)幀間預(yù)測(cè)模式有八種,后四種模式統(tǒng)稱為 AMP 模式,AMP 模式可以根據(jù)需要在參數(shù)配置中直接關(guān)閉。在 AMP 模式打開的情況下,這四種模式的選擇與前面的選擇結(jié)果相關(guān)。對(duì)于每一個(gè) PU,共有 35 種幀內(nèi)預(yù)測(cè)模式。

PU 的模式選擇過(guò)程如圖 3.3 所示:
第一步,計(jì)算 skip 模式的率失真代價(jià),skip 模式運(yùn)用到了 HEVC 中的新引入的運(yùn)動(dòng)合并技術(shù)。運(yùn)用運(yùn)動(dòng)參數(shù)候選列表中的每個(gè)運(yùn)動(dòng)參數(shù)集找到預(yù)測(cè)塊,與原始?jí)K做差值并進(jìn)行變換,量化和熵編碼。最后用編碼的比特?cái)?shù)和重構(gòu)塊以及原始?jí)K的失真計(jì)算出率失真代價(jià),找到最佳的 merge-index。

第二步,計(jì)算 2N×2N 模式的率失真代價(jià),首先運(yùn)用 AMVP 技術(shù)得到 MVP 列表;然后運(yùn)用非 RDO 方法計(jì)算率失真代價(jià)得到最佳 MVP;最后做運(yùn)動(dòng)搜索,找到預(yù)測(cè)塊,與原始?jí)K做差值并進(jìn)行變換、量化和熵編碼,運(yùn)用編碼比特?cái)?shù)以及重構(gòu)塊和原始?jí)K的 SSD 計(jì)算出率失真代價(jià)。與 skip 模式的率失真代價(jià)進(jìn)行比較,在skip 和 2N×2N 中找出最佳 PU 模式。

第三步,計(jì)算 2N×N 和 N×2N 模式的率失真代價(jià),首先運(yùn)用 AMVP 技術(shù),找到最佳 MVP 并作運(yùn)動(dòng)搜索找到預(yù)測(cè)塊;然后運(yùn)用運(yùn)動(dòng)合并技術(shù)技術(shù),得到最佳merge-index 對(duì)應(yīng)的率失真代價(jià),根據(jù)率失真代價(jià)確定最佳預(yù)測(cè)模式;最后對(duì)最佳模式得到的殘差做變換量化和熵編碼運(yùn)用RDO計(jì)算出當(dāng)前PU模式的率失真代價(jià),并與第二步得到的最佳 PU 模式的率失真代價(jià)做比較,得到最佳 PU 模式。

第四步,計(jì)算 AMP 模式的率失真代價(jià),AMP 模式包括四種分割方式,但是為了減小編碼復(fù)雜度,編碼過(guò)程中并沒(méi)有遍歷所有的模式,而是根據(jù)前三步選出的最佳PU模式以及上一層的CU的最佳分割模式以及預(yù)測(cè)模式選擇部分做模式判決。具體選擇如下表:

image

第五步,幀內(nèi)預(yù)測(cè)模式選擇,對(duì)于 I_SLICE 或非 I_SLICE 中需要編碼的量化系數(shù)不全為 0 的 CU,需要做幀內(nèi)預(yù)測(cè)的分割方式和幀內(nèi)預(yù)測(cè)模式選擇,選擇過(guò)程如下:
1、預(yù)測(cè)單元 PU 大小與 CU 大小一致為 2N×2N,用非 RDO 模型計(jì)算率失真代價(jià),從 35 種幀內(nèi)預(yù)測(cè)模式中找到率失真代價(jià)較小的 n 中預(yù)測(cè)模式作為候選模式,n 的大小與 PU 的大小相關(guān),如表 3-2 所示。
2、將當(dāng)前 PU 上側(cè)和左側(cè)相鄰 PU 采用的幀內(nèi)預(yù)測(cè)模式,即當(dāng)前 PU 最有可能的預(yù)測(cè)模式(MPM)加入到該步驟的候選模式中,此時(shí)候選模式 k 最多為(n+2)。
3、運(yùn)用 RDO 模型計(jì)算率失真代價(jià)在 k 種最佳候選模式中選出最佳亮度的幀內(nèi)預(yù)測(cè)模式。
4、根據(jù)亮度的幀內(nèi)預(yù)測(cè)模式選擇結(jié)果,做色度的幀內(nèi)預(yù)測(cè)模式選擇。
5、如果當(dāng)前編碼單元的編碼深度為最大編碼深度,將當(dāng)前編碼單元分為 4 個(gè)N×N 的 PU,對(duì)于每一個(gè) PU 重復(fù) 1~4 步,找到每一個(gè) PU 的最佳幀內(nèi)預(yù)測(cè)模式以及最佳預(yù)測(cè)模式對(duì)應(yīng)的率失真代價(jià)。
6、根據(jù)前幾步得到率失真代價(jià)的值,決定當(dāng)前 CU 的最佳劃分方式及幀內(nèi)預(yù)測(cè)模式。

image

第六步,計(jì)算 PCM 模式的率失真代價(jià)。

image

由上述描述可知,對(duì)于一個(gè) LCU 想要得到最佳 CU 劃分方式,需要遍歷其所有的 CU,對(duì)每個(gè) CU 還需要遍歷各種預(yù)測(cè)模式,得到其最小的率失真代價(jià)。為加快編碼速度,模式選擇過(guò)程的優(yōu)化可從 CU 編碼深度的選擇,PU 模式選擇和 TU分割方式的選擇三個(gè)方面進(jìn)行研究和分析。因?yàn)?PU 模式選擇和 TU 分割方式選擇都是為了計(jì)算當(dāng)前深度下,編碼 CU 的率失真代價(jià),減少 CU 遍歷的次數(shù),同時(shí)也減少了 PU 模式選擇的次數(shù)和 TU 分割方式選擇的次數(shù)。因此,基于 CU 編碼深度選擇過(guò)程做算法優(yōu)化是最有效的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容