1. 程式人生 > >HEVC/H.265理論知識(10)——率失真優化

HEVC/H.265理論知識(10)——率失真優化

這一章很重要!!!!!!! 一、率失真優化的目標就是: 1、在一定的位元速率(位元速率也表現為資料壓縮的程度,位元速率越低,資料壓縮的越厲害)限制下,減少視訊的失真(減少失真就會提高視訊的主觀質量,看的人就會喜歡o(*≧▽≦)ツ)! 2、在允許一定的失真下,把視訊壓縮到最小! 二、編碼器的率失真優化的工作主要是按照某種策略選取最優的編碼引數,以實現最優的編碼效能 三、率失真函式RD 是在假定信源在給定的情況下,在使用者可以容忍的失真度內再現資料訊息所必需獲得的最小平均互信資訊,直白一點說,就是在允許的失真內,資料可以壓縮的極限!我們對資料的壓縮不能超過這個極限,否則,資料在解碼端就不能再現了!因此我們的工作就是,在不超過這個極限的前提下,儘量使資料壓縮得更小! 四、在多種候選編碼引數中選擇最優的編碼引數! 1、視訊失真的度量:ssd、sad、mse、psnr都可以度量失真度! 2、使用一組特定的編碼引數對視訊進行編碼的時候,我們可以獲得該編碼引數的條件下的位元速率和失真,即率失真效能(R,D) 3、遍歷所有可行的編碼引數組合就可以得到所有的(R,D),在滿足一定的位元速率限制(R)的情況下,找到是的失真(D)最小的一組引數!即最優的引數 4、拉格朗日方法就是率失真優化中最常用的優化工具 5、根據目標位元速率,先確定量化引數QP,然後根據QP確定出拉格朗日引數λ!然後根據λ和一組編碼引數計算失真 五、率失真優化在編碼器中不同層次(CTU級、CU級、PU級、TU級等)的運用。附:CTU可以劃分成為CU、CU在預測的時候被劃分成為PU、CU在變換量化的時候被劃分成為TU 1、在CTU級的應用。在總位元數R受限的情況下選擇一個CU(CU從8x8到64x64)的劃分模式,使得一個CTU的總失真D最小。 2、在CU級的應用。在總位元數R受限的情況下,適當的選擇選擇PU劃分模式和TU(TU從4x4到32x32)劃分模式,使得一個CU的總失真D最小。 3、在PU級的應用。對於幀內預測,就是從35中幀內模式中選出最優的一種,使得PU的失真D最小;對於幀間預測,選出最優的運動模式(包括運動向量、參考影象、預測權值等)使得PU的失真D最小 4、在TU級的應用。在最優的PU的模式下,選取最優的TU模式。 六、HM實際的優化方式 1、對於CTU。      (1)遍歷所有的CU劃分模式,確定最優的CU劃分模式      (2)對於確定的CU,遍歷所有的PU模式和TU模式的組合,確定最優的PU模式和TU模式      (3)對於其中的每一個PU,遍歷所有的預測模式,選取最優的預測模式 2、對於變換。採用Hadamard變換代替實際的DCT/SDT變換。 3、其他快速的策略      (1)提前終止策略(Early_CU)                如果當前CU的最優編碼模式是MODE_SKIP模式,那麼終止該CU後續四叉樹劃分和模式判決      (2)早期跳出模式(Early_Skip)                如果CU的PU劃分模式是PART_2Nx2N,預測模式是MODE_INTER,運動向量差MVD是(0,0),且預測殘差不包含非零變換系數(就是變換系數全是0),就判定當前模式是最優模式,跳過剩餘的模式,直接進行下一步的四叉樹分割及子CU模式判決。      (3)快速CBF策略(CBF_Fast)                如果CU的預測模式是MODE_INTER,其對應的預測殘差不包含非零的變換系數,就跳過該CU的其餘候選模式,當前模式為最優模式,且直接進行下一步的四叉樹分割      (4)縮減AMP模式                依據兩個引數來判斷是否縮減當前AMP模式。具體是利用在進行AMP模式判決當前的最優分割模式,以及父親節點CU內採用的分割模式和預測模式,來確定候選編碼中可使用的AMP模式。 七、率失真優化全流程 1、分層遞迴遍歷所有的CU劃分模式,選取最優的CU劃分模式,這個過程稱為CU劃分模式判別 2、對於其中的每一個CU,遍歷所有的PU模式,選取最優的PU模式,並在此基礎上選擇最優的TU模式 3、對於其中的每一個PU,遍歷所有的預測模式,選取最優的預測模式,這個過程稱為預測模式判別      (1)幀內預測模式。           ①遍歷所有的預測模式,得到每種模式下的殘差訊號,再對殘差訊號進行Hadamard變換計算SATD值           ②利用SATD值計算每種預測模式的率失真代價,選取率失真代價最小的幾種模式(與PU大小相關)為預測模式集           ③將已編碼相鄰塊的預測模式補充到預測模式集中           ④遍歷模式集合中的所有模式,並對殘差訊號進行正常編碼(熵編碼),計算率失真代價           ⑤選取最優的預測模式作為該PU的最優模式           ⑥當亮度塊的模式確定之後,把該模式以及DC、planar、水平方向模式、垂直方向模式作為色度塊的候選模式,選取最優的模式即可      (2)幀間預測模式。           HEVC採用了Merge和AMVP技術,更加高效地表示幀間預測引數,但是這兩種方式有比較大的區別,因此幀間預測可以分成Merge幀間預測模式和非Merge幀間預測模式(採用AMVP技術),分別選取最優的Merge幀間預測模式和非Merge幀間預測模式,然後從中選取最優的模式。           對於Merge幀間預測模式,遍歷所有的候選模式,計算率失真代價,選擇率失真代價最小的模式為最優模式。當採用merge幀間預測模式I按摩,且預測殘差訊號的編碼位元數為零時,只需要編碼skip標識和merge索引兩個語法元素,此時該模式稱為MODE_SKIP模式           對於非Merge幀間預測模式(採用AMVP技術)           ①根據AMVP技術確定MVP列表,計算每個MVP的率失真代價,得到最優的MVP           ②以最優MVP為起始點,進行整畫素運動預測,得到最優的整畫素運動向量           ③以整畫素運動向量為中心,進行半畫素搜尋,從周圍的8個點確定最優的半畫素精度運動向量           ④以半畫素精度向量為中心,進行1/4畫素精度的運動搜尋,確定最優的1/4畫素精度運動向量      (3)PU模式判別           ①計算2Nx2N模式的率失真代價,將其作為最優代價,如果預測殘差的編碼位元數為零,那麼滿足CBF_Fast,直接跳至⑪,並將2Nx2N作為最優的PU模式           ②如果CU的深度已經取得最大值,且inter_4x4_enabled_flag是1,那麼執行③,否則執行④            ③計算NxN模式的率失真,更新最優代價和模式,如果預測殘差的編碼位元數為零,那麼滿足CBF_Fast,直接跳至⑪,並將NxN作為最優的PU模式           ④計算Nx2N模式的率失真代價,更新最優代價和模式,如果預測殘差的編碼位元數為零,那麼滿足CBF_Fast,直接跳至⑪,並將Nx2N作為最優的PU模式           ⑤計算2NxN模式的率失真代價,更新最優代價和模式,如果預測殘差的編碼位元數為零,那麼滿足CBF_Fast,直接跳至⑪,並將2NxN作為最優的PU模式           ⑥如果TestAMP_Hor為1,當前CU執行水平方向上的AMP模式,否則執行本步驟。計算2NxnU模式的率失真代價,更新最優代價和模式,如果預測殘差的編碼位元數為零,那麼滿足CBF_Fast,直接跳至⑪,並將2NxnU作為最優的PU模式;否則計算2NxnD模式的率失真代價,更新最優的代價和模式,如果預測殘差的編碼位元數為零,那麼滿足CBF_Fast,直接跳至⑪,並將2NnD作為最優的PU模式           ⑦如果TestAMP_Ver為1,當前CU執行垂直方向上的AMP模式,否則執行本步驟。計算nLx2N模式的率失真代價,更新最優模式和代價,如果預測殘差的編碼位元數為零,那麼滿足CBF_Fast,直接跳至⑪,並將nLx2N作為最優的PU模式;否則計算nRx2N模式的率失真代價,更新最優模式和代價,如果預測殘差的編碼位元數為零,那麼滿足CBF_Fast,直接跳至⑪,並將nRx2N作為最優的PU模式           ⑧注意上面的都是幀間的模式,現在需要計算幀內2Nx2N模式的率失真代價,更新最優模式和代價           ⑨如果當前CU深度為最大值,計算幀內NxN模式的率失真代價,更新最優模式和代價           ⑩如果當前CU大於或等於PCM模式所允許的最小單元,並且代價大於PCM模式,那麼更新最優模式和代價           ⑪結束搜尋,得到最優的PU模式。注意對於每一種PU模式,都要夯實不同的TU劃分,選取最優的TU模式,因此最優的PU模式包含了最優的TU模式      (4)CU劃分模式判決           ①把CTU作為CU,計算率失真代價(最優PU模式時),此時應包含CU分割標誌(split_flag)的編碼位元數           ②對CU進行四叉樹劃分,計算每個子CU的最小率失真代價,並對所有子CU的率失真代價求和,得到該CU的率失真代價           ③為每個子CU作為CU重複②           ④重複③直到編碼的最大深度           ⑤從最大的編碼深度,比較4個子CU與CU的率失真代價,一次選出最優的劃分方式。           ⑥碎語每個CU,如果其幀間2Nx2N模式為MODE_SKIP,則滿足Early_SKIP條件,直接結束該CU的進一步劃分 4、結束!

相關推薦

HEVC/H.265理論知識10——失真優化

這一章很重要!!!!!!! 一、率失真優化的目標就是: 1、在一定的位元速率(位元速率也表現為資料壓縮的程度,位元速率越低,資料壓縮的越厲害)限制下,減少視訊的失真(減少失真就會提高視訊的主觀質量,看的人就會喜歡o(*≧▽≦)ツ)! 2、在允許一定的失真下,把視訊壓縮到最

HEVC/H.265理論知識7——環路濾波

一、環路濾波的目的是為了提高視訊質量,降低去方塊效應和振鈴效應。 二、環路濾波可以分成兩大步驟: 1、去方塊濾波 2、SAO(畫素自適應補償) 三、去方塊濾波介紹 1、方塊效應是編碼塊邊界的不連續性,因為HEVC是一個基於塊的混合編碼框架,各個編碼塊的操作是相互獨立的,

HEVC/H.265理論知識6——量化

一、介紹 1、量化就是把訊號的連續取值對映成多個離散的幅值的過程,實現了訊號取值多對一的對映。 2、殘差資料進過變換之後,變換系數具有較大的取值範圍,量化可以有效減小訊號的取值範圍,進而獲得更好的壓縮效果,量化是造成失真的根本原因 二、衡量失真的三種準則(分別有對應的公式

統計學習基本理論知識

求解 兩個 向量 定義 標準差 註意 begin lan 語言模型 本篇將依據《統計自然語言處理》(宗成慶),重新梳理統計學習相關理論知識,相關概率論與梳理統計的課本不再列出來,可以找任意相關的課本復(預)習。 概率 概率是表示事件發生的可能性,將隨機試驗中的事件映射到實數

理論知識1

cnblogs ott log pad ech 屬性的區別 內存 字體大小 link 想擴展深入了解,點擊參考鏈接 1.DIV+CSS和table布局的區別: DIV+CSS布局比table布局節省頁面代碼,代碼也更加的清晰。 DIV+CSS的頁面對搜索引擎支持好,而且速

軟體測試_理論知識入門

軟體測試_入門總結說明:來源是一些部落格、百度文庫、書籍等。1.軟體測試_基本概念包含定義和目的兩個部分:    使用人工和自動的手段來執行或測試某個系統的過程,其目的在於檢驗它是否滿足規定的需求或是弄清預期結果與實際結果之間的差別。    軟體測試的目的(補充解釋):1)從

網路程式設計理論知識TCP三次握手與四次揮手最簡潔易懂的解釋

建立TCP需要三次握手才能建立,而斷開連線則需要四次握手。整個過程如下圖所示: 建立連線的過程: TCP 連線是通過三次握手進行初始化的。三次握手的目的是同步連線雙方的序列號和確認號並交換 TCP 視窗大小資訊。以下步驟概述了通常情況下客戶端計算機聯絡伺服器計算機

效能測試必備知識10- Linux 是怎麼管理記憶體的?

做效能測試的必備知識系列,可以看下面連結的文章哦 https://www.cnblogs.com/poloyy/category/1806772.html   記憶體對映 日常生活常說的記憶體是什麼 比方說,我的膝上型電腦記憶體就是 8GB 的 這個記憶體其實是實體記憶體 實體記憶體也稱為主存,大

四國軍棋引擎開發10局面評估優化

這次對局面評估做了一些優化,棋力有了一些提升,可以定為2.1版本,測試結果如下: 引擎A vs 引擎B 戰績(勝:負:和) 1.1 vs 1.0 8:2:0 1.2 vs 1.1

Hadoop十八——hadoop之MapReduce理論——MapReduce引數優化

一個Map Task可使用的資源上限(單位:MB),預設為1024。如果Map Task實際使用的資源量超過該值,則會被強制殺死。 mapreduce.reduce.memory.mb 一個Reduce Task可使用的資源上限(單位:MB),預設為102

H.265/HEVC失真優化RDO及其HM程式碼註解

一、率失真優化(RDO)的目的 選擇一個最小失真的編碼模式可以帶來最好的視訊質量, 然而這往往需要很高的編碼位元率。如何在有限的編碼位元數下,選擇一個失真最小的模式是編碼中的關鍵問題。對於給定編碼單元,上述求極值問題可將其轉化為:在給定位元速率的情況下,儘可能

分散式系統原理10CAP 理論

CAP 理論 CAP 理論是由 Eric Brewer 提出的分散式系統中最為重要的理論之一。本文將 CAP 理論安排在原理部分的最後介紹是為了利用前面已經介紹過的幾種分散式協議來幫助理解 CAP 理論 定義 CAP 理論的定義很簡單,CAP 三個字母分別代表了分散式系統中三

10分鐘HTML5入門基礎知識

毫無疑問,對於開發人員而言, HTML5 已是一個熱點話題。如果你需要快速瞭解HTML5的功能的基本原理,閱讀本文是你最好的選擇。 本文來自The Code Project的付費搜尋位置,由Solution Center提供。這裡的文章致力於向大家提供我們認為對開發人員來說有用和有價值

10分鐘HTML5入門基礎知識

html5開發與舊式瀏覽器的相容我們已經討論了HTML5許多很酷的新功能,包括新的語義元素、為畫圖而生的canvas標籤,以及音訊與視訊支援。你可能會想:這些東西是很好,但當用戶的瀏覽器不相容HTML5時,可能就沒法使用它們了。更不用說一些所謂的“支援”HTML5的瀏覽器,

網路理論基礎知識鏈路聚合

                                                         鏈路聚合 前言:         隨著網路規模的擴大,使用者對骨幹網路的頻寬及可靠性提出越來越高的要求。(PS.2016年在江X容X遇到過類似提升鏈路可靠性的需

Windows Phone開發10:常用控件

androi chm att size near grid txt idt inf Windows Phone的控件有幾個來源,和傳統的桌面應用程序開發或Web開發一樣,有默認提供的控件和第三方開者發布的控件。一般而言,如果不是過於復雜的界面布局,使用默認控件就足矣。相比之

c語言-樹的基礎知識

相交 ges 最大 .cn nbsp 分享 blog com lin 第一、樹的定義: 1.有且只有一個稱為根的節點 2.有若幹個互不相交的子樹,這些子樹本身也是一顆樹 第二、專業術語: 樹的深度:從根節點到最低層,節點的層數 ,稱之為樹的深度。

perl 入門知識1

.com 方法 如果 shift vim lis zed http script <一> 語句及註釋: Perl 語句以分號(;)結尾,用 # 作為一行的註釋,沒有其它語言中那種跨行的註釋。代碼塊用大括號圍起來,這個和 C 類似,但這個大括號在有些地方是強制要

perl入門知識2

連接符 用法 num 路徑 常用函數 表示 取余 運算符 內容 交互式編程你可以在命令行中使用 -e 選項來輸入語句來執行代碼,實例如下:$ perl -e ‘print "Hello World\n"‘輸入以上命令,回車後,輸出結果為:Hello World 腳本式編程

站立會議10

個人 完整 http 列表 個人信息 .com blog ges com   今天準備將小組做的各個分活動整合到一個完整的APP裏,實現二手書售賣系統的基本功能:首頁圖書的顯示、我的店鋪頁面的顯示、圖書的添加、店鋪的修改、用戶登錄註冊、個人信息的修改等功能; 任務列表: