1. 程式人生 > 其它 >視訊編碼學習1:視訊編碼及其部分標準

視訊編碼學習1:視訊編碼及其部分標準

這是個人記錄的視訊編碼方向初步瞭解的知識

編碼框架

幀內預測:

對於一幅影象,相鄰的兩個畫素的亮度和色度值之間經常是比較接近的,也就是顏色是逐漸變化的,不會一下子突變成完全不一樣的顏色。而進行視訊編碼,目的就是利用這個相關性,來進行壓縮。幀內預測是利用視訊空間域的相關性,使用同一幀影象內鄰近已編碼畫素預測當前的畫素,以達到有效去除視訊時域冗餘的目的。

儲存一個畫素的亮度值可能需要8個bit,但是如果相鄰的兩個畫素變化不大,我儲存一個畫素的原始值,以及第二個畫素相對第一個畫素的變化值,那麼第二個值我可能用2個bit就夠了,這就節約了很多的空間。而節約儲存消耗的bit數,也就是節約位元速率

幀間預測:

是利用視訊時間域的相關性,使用鄰近已編碼影象畫素預測當前影象的畫素,以達到有效去除視訊時域冗餘的目的。目前主要採用基於塊的運動補償技術,原理是為當前影象的每個畫素塊在之前已編碼影象中尋找一個最佳匹配塊,即運動估計。用於預測的影象稱為參考影象,參考塊到當前畫素塊的位移稱為運動向量(MV),當前塊與參考塊的差值稱為預測殘差。

變換量化:

1、什麼是變換編碼:絕大部分的圖形都含有較多的平坦區域內容或者稱為內容變化緩慢的區域,變換可以使得影象能量在空間域的分散分佈轉換為變換域中相對集中的分佈。變換的結果為一組變換系數,變換後進行編碼的物件也是得到的這樣一組變換系數,由於人對影象的高頻資訊不敏感,因此在對變換系數進行量化的時候,就可以丟棄這些高頻分量,達到減小傳輸碼流,壓縮視訊的效果。但這些高頻資訊的丟棄並不會對重構的影象產生很大的影響(注意在對變換系數進行量化的時候會用到一個量化表,量化表的作用是進一步減小碼流)。

2、什麼是量化:量化就是幅值連續的訊號取值通過量化表對映成有限個離散幅值的過程,基本的原理就是訊號幅度取值多對一的一種對映過程。在上面學習的變換過程之後,得到的是一組變換系數,而變化變換系數的取值範圍很大,通過量化過程,可以減小訊號的取值範圍,從而獲得更好的壓縮效果。同樣值得一提的是,在視訊或者影象壓縮中造成失真的根本原因是由於量化的存在,但只要這種失真對於傳輸內容的正確理解影響不大,就可以忽略。

去方塊濾波:

大的量化步長會造成相對較大的量化誤差,這就可能將原來相鄰塊“接壤”處畫素間灰度的連續化變成了“臺階”變化,主觀上就有”偽邊緣”的方塊效應。去方塊效應的方法就是在保持影象總能量不變的條件下,把這些臺階狀的階躍灰度變化重新復原成臺階很小或者近似連續的灰度變化,同時還必須儘量減少對真實影象邊緣的損傷。

樣點自適應補償:

在影象中畫素值劇烈變化的邊界區,經過編碼-解碼重建之後通常會出現波紋狀的失真現象,這種失真稱作振鈴效應。振鈴效應產生的根本原因在於邊界區高頻分量在編碼過程中丟失。為了減少高頻分量的損失,同時不降低編碼的效率,HEVC引入了SAO技術,從畫素域入手對振鈴區域進行補償。SAO首先利用分類器將樣點分類,然後根據類別對樣點值加上一個偏移值。樣點的類別下標以及偏移值會被編碼到碼流中。

熵編碼:

在資訊熵的極限範圍內進行編碼就是熵編碼。例如資訊熵算出來是3bit/字元,你用4bit/字元來編碼,就是熵編碼,你用2bit/字元來編碼,就不叫熵編碼,因為這種情況下,就失真了嘛。從這裡也看以看出,信源熵是編碼這個信源平均所需要的最小位數。

素材,編碼,封裝格式

 

編碼

  • H.264/AVC/MPEG-4 Part 10:H.264又稱為MPEG-4第10部分,到2014年,它已經成為高精度視訊錄製、壓縮和釋出的最常用格式之一。H.264/AVC**專案的目的是為了建立一個更佳的視訊壓縮標準,在更低的位元率的情況下依然能夠提供良好視訊質量的標準。

  • H.265/HEVC/MPEG-H Part 2:H.265圍繞著現有的視訊編碼標準H.264,保留原來的某些技術,同時對一些相關的技術加以改進。新技術使用先進的技術用以改善碼流、編碼質量、延時和演算法複雜度之間的關係,達到最優化設定。具體的研究內容包括:提高壓縮效率、提高魯棒性和錯誤恢復能力、減少實時的時延、減少通道獲取時間和隨機接入時延、降低複雜度等。H.264由於演算法優化,可以低於1Mbps的速度實現標清數字影象傳送;H.265則可以實現利用1~2Mbps的傳輸速度傳送720P(解析度1280*720)普通高清音視訊傳送。HEVC在同等視訊質量下的壓縮率比AVC提高25~50%。

  • AV1:支援H.266/VVC的軟體則預計會在2020 年秋季推出,所以無論軟解還是硬解都仍需要等待一段時間。暫時的「代替品」就是AOMedia Video 1(簡稱AV1編碼,提供到比H.265/HEVC 高30%效能

為了衡量經過處理後的影像品質,我們通常會參考PSNR值來衡量某個處理程式能否令人滿意。它是原影象與被處理影象之間的均方誤差相對於(2^n-1)^2的對數值(訊號最大值的平方,n是每個取樣值的位元數),它的單位是dB。

MSE是原影象(語音)與處理影象(語音)之間均方誤差。誤差越小,PSNR越大,效果越好

  • H.266/VVC 比H.265節省30%至50%容量

  • AVS3:AVS ,即 Audio Video coding Standard ,音視訊編碼標準,由我國的數字音視訊編解碼技術標準,工作組負責開發制定。工作組制定的 AVS1 、 AVS2兩代編碼,已分別於 2006 年和 2016 年被頒佈為國家標準。目前 AVS 標準廣泛應用於我國的廣播電視領域,正在進軍網際網路視訊領域和監控領域。相較於 AVS2,AVS3 在保留部分編碼工具的同時,針對不同模組引入了一些新的編碼工具,並採用了更靈活的塊劃分結構、更精細的預測模式、更具適應性的變換核,實現了相較於 AVS2約 30% 的位元速率節省,顯著提升了編碼效率。


封裝格式

  • Matroska是一種多媒體封裝格式,這個封裝格式可把多種不同編碼的視訊及16條或以上不同格式的音訊和語言不同的字幕封裝到一個Matroska Media檔內。它也是其中一種開放原始碼的多媒體封裝格式。很多人把Matroska當作為mkv,其實mkv只是Matroska媒體系列的其中一種檔案格式。

  • MP4全稱MPEG-4 Part 14,是一種使用MPEG-4的多媒體電腦檔案格式,副檔名為.mp4,以儲存數字音訊及數字視訊為主。MP4至今仍是各大影音分享網站所使用主流,即使他們是在網站上多加一層Flash的影音播放介面。因為MP4可以在每分鐘約4MB的壓縮縮率下提供接近DVD質量的影音效果。MP4優點是壓縮質量優、轉換容易,目前智慧手機的錄影,大多都是MP4格式。

  • AVI是英語Audio Video Interleave(“音訊視訊交織”或譯為“音訊視訊交錯”)的首字母縮寫,由微軟在1992年11月推出的一種多媒體檔案格式,用於對抗蘋果Quicktime的技術。現在所說的AVI多是指一種封裝格式。儘管AVI已經屬於老舊的技術,但是由於Windows的通用性,和簡單易懂的開發API,仍被廣泛使用。 AVI將視訊和音訊封裝在一個檔案裡,其順序是:若干視訊幀之後接著若干音訊幀,再然後是視訊幀、音訊幀,故名為“音訊視訊交織”,意即音訊和視訊按幀交錯排列,以此達到音訊同步於視訊播放的效果。

  • MKV:多功能餐盤,把不同的音軌字幕都封裝到一起,可以選擇觀看

## 編碼框架
幀內預測:
對於一幅影象,相鄰的兩個[畫素](https://so.csdn.net/so/search?q=畫素&spm=1001.2101.3001.7020)的亮度和色度值之間經常是比較接近的,也就是顏色是逐漸變化的,不會一下子突變成完全不一樣的顏色。而進行視訊編碼,目的就是利用這個相關性,來進行壓縮。幀內預測是利用視訊空間域的相關性,使用同一幀影象內鄰近已編碼畫素預測當前的畫素,以達到有效去除視訊時域冗餘的目的。
儲存一個畫素的亮度值可能需要8個bit,但是如果相鄰的兩個畫素變化不大,**我儲存一個畫素的原始值,以及第二個畫素相對第一個畫素的變化值,那麼第二個值我可能用2個bit就夠了,這就節約了很多的空間**。而節約儲存消耗的bit數,也就是節約位元速率
幀間預測:
是利用視訊時間域的相關性,使用鄰近已編碼影象畫素預測當前影象的畫素,以達到有效去除視訊時域冗餘的目的。目前主要採用基於塊的運動補償技術,**原理是為當前影象的每個畫素塊在之前已編碼影象中尋找一個最佳匹配塊**,即運動估計。用於預測的影象稱為參考影象,參考塊到當前畫素塊的位移稱為運動向量(MV),當前塊與參考塊的差值稱為預測殘差。
變換量化:
1、什麼是變換編碼:**絕大部分的圖形都含有較多的平坦區域內容或者稱為內容變化緩慢的區域,變換可以使得影象能量在空間域的分散分佈轉換為變換域中相對集中的分佈。**變換的結果為一組變換系數,變換後進行編碼的物件也是得到的這樣一組變換系數,由於人對影象的高頻資訊不敏感,因此在對變換系數進行量化的時候,就可以丟棄這些高頻分量,達到減小傳輸碼流,壓縮視訊的效果。但這些高頻資訊的丟棄並不會對重構的影象產生很大的影響(注意在對變換系數進行量化的時候會用到一個量化表,量化表的作用是進一步減小碼流)。
2、什麼是量化:量化就是幅值連續的訊號取值通過量化表對映成有限個離散幅值的過程,基本的原理就是訊號幅度取值多對一的一種對映過程。**在上面學習的變換過程之後,得到的是一組變換系數,而變化變換系數的取值範圍很大,通過量化過程,可以減小訊號的取值範圍,從而獲得更好的壓縮效果。**同樣值得一提的是,在視訊或者影象壓縮中造成失真的根本原因是由於量化的存在,但只要這種失真對於傳輸內容的正確理解影響不大,就可以忽略。
去方塊濾波:
大的量化步長會造成相對較大的量化誤差,這就可能將原來相鄰塊“接壤”處[畫素](http://www.go-gddq.com/html/s162/2013-01/1088359.htm)間灰度的連續化變成了“臺階”變化,主觀上就有”偽邊緣”的方塊效應。**去方塊效應的方法就是在保持影象總能量不變的條件下,把這些臺階狀的階躍灰度變化重新復原成臺階很小或者近似連續的灰度變化,同時還必須儘量減少對真實影象邊緣的損傷。**
樣點自適應補償:
在影象中[畫素](https://so.csdn.net/so/search?q=畫素&spm=1001.2101.3001.7020)值劇烈變化的邊界區,經過編碼-解碼重建之後通常會出現波紋狀的失真現象,這種失真稱作振鈴效應。振鈴效應產生的根本原因在於邊界區高頻分量在編碼過程中丟失。**為了減少高頻分量的損失,同時不降低編碼的效率,HEVC引入了SAO技術,從畫素域入手對振鈴區域進行補償。**SAO首先利用[分類器](https://so.csdn.net/so/search?q=分類器&spm=1001.2101.3001.7020)將樣點分類,然後根據類別對樣點值加上一個偏移值。樣點的類別下標以及偏移值會被編碼到碼流中。
熵編碼:
在資訊熵的極限範圍內進行編碼就是熵編碼。例如資訊熵算出來是3bit/字元,你用4bit/字元來編碼,就是熵編碼,你用2bit/字元來編碼,就不叫熵編碼,因為這種情況下,就失真了嘛。從這裡也看以看出,**信源熵是編碼這個信源平均所需要的最小位數。**
## 素材,編碼,封裝格式
<img src="https://img2022.cnblogs.com/blog/2352364/202203/2352364-20220317143720586-1563911270.png" alt="image-20220317143718516" style="zoom:50%;" />


### 編碼
- **H.264/AVC/MPEG-4 Part 10:H.264又稱為MPEG-4第10部分,到2014年,它已經成為高精度視訊錄製、壓縮和釋出的最常用格式之一。**H.264/AVC**專案的目的是為了建立一個更佳的視訊壓縮標準,在更低的位元率的情況下依然能夠提供良好視訊質量的標準。
- **H.265/HEVC/MPEG-H Part 2**:H.265圍繞著現有的視訊編碼標準H.264,保留原來的某些技術,同時對一些相關的技術加以改進。新技術使用先進的技術用以改善碼流、編碼質量、延時和演算法複雜度之間的關係,達到最優化設定。具體的研究內容包括:提高壓縮效率、提高魯棒性和錯誤恢復能力、減少實時的時延、減少通道獲取時間和隨機接入時延、降低複雜度等。H.264由於演算法優化,可以低於1Mbps的速度實現標清數字影象傳送;H.265則可以實現利用1~2Mbps的傳輸速度傳送720P(解析度1280*720)普通高清音視訊傳送。==HEVC在同等視訊質量下的壓縮率比AVC提高25~50%。==
- **AV1**:支援H.266/VVC的軟體則預計會在2020 年秋季推出,所以無論軟解還是硬解都仍需要等待一段時間。暫時的「代替品」就是**AOMedia Video 1(簡稱==AV1==)**編碼,==提供到比H.265/HEVC 高30%效能==
<img src="https://img2022.cnblogs.com/blog/2352364/202203/2352364-20220318095126328-498087136.png" alt="image-20220318095123734" style="zoom: 67%;" />
為了衡量經過處理後的影像品質,我們通常會參考PSNR值來衡量某個處理程式能否令人滿意。它是原影象與被處理影象之間的[均方誤差](https://baike.baidu.com/item/均方誤差)相對於(2^n-1)^2的對數值(訊號最大值的平方,n是每個取樣值的位元數),它的單位是dB。 
MSE是原影象(語音)與處理影象(語音)之間均方誤差。誤差越小,PSNR越大,效果越好
<img src="https://img2022.cnblogs.com/blog/2352364/202203/2352364-20220318101654864-1080398553.png" alt="image-20220318101654164" style="zoom:50%;" />
- ==**H.266/VVC** 比H.265節省30%至50%容量==
- **AVS3**:AVS ,即 Audio Video coding Standard ,音視訊編碼標準,由我國的數字音視訊編解碼技術標準,工作組負責開發制定。工作組制定的 AVS1 、 AVS2兩代編碼,已分別於 2006 年和 2016 年被頒佈為國家標準。目前 AVS 標準廣泛應用於我國的廣播電視領域,正在進軍網際網路視訊領域和監控領域。相較於 AVS2,AVS3 在保留部分編碼工具的同時,針對不同模組引入了一些新的編碼工具,並採用了更靈活的塊劃分結構、更精細的預測模式、更具適應性的變換核,==**實現了相較於 AVS2約 30% 的位元速率節省,顯著提升了編碼效率。**==
---
### 封裝格式
- Matroska是一種多媒體封裝格式,這個封裝格式可把多種不同編碼的視訊及16條或以上不同格式的音訊和語言不同的字幕封裝到一個Matroska Media檔內。它也是其中一種開放原始碼的多媒體封裝格式。很多人把Matroska當作為mkv,其實mkv只是Matroska媒體系列的其中一種檔案格式。
- MP4全稱MPEG-4 Part 14,是一種使用MPEG-4的多媒體電腦檔案格式,副檔名為.mp4,以儲存數字音訊及數字視訊為主。MP4至今仍是各大影音分享網站所使用主流,即使他們是在網站上多加一層Flash的影音播放介面。因為MP4可以在每分鐘約4MB的壓縮縮率下提供接近DVD質量的影音效果。MP4優點是壓縮質量優、轉換容易,目前智慧手機的錄影,大多都是MP4格式。
- AVI是英語Audio Video Interleave(“音訊視訊交織”或譯為“音訊視訊交錯”)的首字母縮寫,由微軟在1992年11月推出的一種多媒體檔案格式,用於對抗蘋果Quicktime的技術。現在所說的AVI多是指一種封裝格式。儘管AVI已經屬於老舊的技術,但是由於Windows的通用性,和簡單易懂的開發API,仍被廣泛使用。 AVI將視訊和音訊封裝在一個檔案裡,其順序是:若干視訊幀之後接著若干音訊幀,再然後是視訊幀、音訊幀,故名為“音訊視訊交織”,意即音訊和視訊按幀交錯排列,以此達到音訊同步於視訊播放的效果。
- MKV:多功能餐盤,把不同的音軌字幕都封裝到一起,可以選擇觀看
  <img src="https://img2022.cnblogs.com/blog/2352364/202203/2352364-20220317143908599-86562038.png" alt="image-20220317143906574" style="zoom:50%;" />