HEVC 、H.264與AVS2 視訊壓縮
Lab2 Report: HEVC 、H.264與AVS2 視訊壓縮
文章目錄
1. 摘要
這份實驗報告是視訊編碼與通訊的第二次大作業。作業的題目是HEVC與H.264視訊壓縮。
這篇報告首先根據作業釋出的要求,選擇兩個不同特性的測試序列設定兩組不同的編碼引數進行HEVC編碼與解碼。再對同一個測試序列進行HEVC和H.264壓縮編碼和解碼,並對比分析其效能的差異。
其次這份報告也記錄了一些擴充:對同一個序列進行AVS2壓縮編碼與解碼,並與實驗二得到的解碼圖片進行對比,簡單分析這三種壓縮標準的效能差異。
2. 實驗一:HEVC 視訊編碼與解碼
2.1 實驗內容
參考程式碼HM16.12 或以後版本。選擇至少兩個測試序列,具有不同空間解析度、不同
運動和紋理特性;對每個測試序列,分別設定兩組不同的編碼引數,進行編碼和解碼;給出
相應的引數配置,給出若干關鍵幀的原始影像、以及相應的解碼重建影像,給出每幀影像的
PSNR 值。
2.2 實驗原理簡述
高效率視訊編碼(High Efficiency Video Coding,簡稱HEVC),又稱為H.265和MPEG-H第二部分,是一種視訊壓縮標準,用來以替代H.264/AVC 編碼標準。
HEVC的視訊編碼層與H.264/AVC和許多其他視訊壓縮編碼一樣,都是採用Hybrid Video Coding的架構(如圖2-1),但在各部分加入了一些新技術或者提升了原本編碼工具的效率。1 例如例如基於四叉樹的靈活塊分割結構 、不同角度的幀內預測模式 、自適應的運動向量預測AMVP、合併技Merge、可變尺寸的離散餘弦變換等。
由圖中可以看出,典型的HEVC編碼框架具有如下幾個模組:
- 幀內預測:該模組主要用於去除影像的空間相關性。通過編碼後的重構塊資訊來預測當前畫素塊以去除空間冗餘資訊,提高影像的壓縮效率;
- 幀間預測:該模組主要用於去除影像的時間相關性。幀間預測通過將已編碼的影像作為當前幀的參考影像,來獲取各個塊的運動資訊,從而去除時間冗餘,提高壓縮效率;
- 變換量化:該模組通過對殘差資料進行變換量化以去除頻域相關性,對資料進行有失真壓縮。變換編碼將影像從時域訊號變換至頻域,將能量集中至低頻區域;
- 去方塊濾波:在基於塊的視訊編碼中,形成的重構影像會出現方塊效應,採用去方塊濾波可達到削弱甚至消除方塊效應的目的,提高影像的主觀質量和壓縮效率;
- 樣點自適應步長濾波(SAO濾波)處於去方塊濾波之後,通過解析去方塊濾波後的畫素的統計特性,為畫素新增相應的偏移值,可以在一定程度上削弱振鈴效應,提高影像的主觀質量和壓縮效率;
- 熵編碼:該模組將編碼控制資料、量化變換系數、幀內預測資料以及運動資料等編碼為二進位制流進行儲存或傳輸。熵編碼模組的輸出資料即原始視訊壓縮後的碼流。
2.3 實驗過程與分析
2.3.1 實驗環境與測試序列
本次實驗參考的程式碼版本為HW-16.13;實驗的環境為Visual Studio;用來採取幀和播放YUV檔案的工具為YUV Player。
實驗所用的測試序列為"akiyo_qcif.yuv"和"Bus_cif.yuv"2。為了實驗的便利,我們都選取了100幀進行後續的編碼。前者為一個新聞主持人,變化幅度較小,圖中運動物體較少。後者為公交車在道路上行駛,變化幅度較大,物體較多。
視訊紋理大致如下,選取的都為第一幀(兩張圖片有所放大和縮小):
空間解析度引數如下所示:
SourceWidth | SourceHeight | FrameToBeEncoded | |
---|---|---|---|
akiyo | 176 | 144 | 100 |
bus | 352 | 288 | 100 |
2.3.2 HEVC編碼與解碼
我們將測試序列檔案(yuv檔案)和相關的配置檔案(encoder_intra_main.cfg和序列的配置檔案)放到Debug檔案目錄下,用Visual Stuido執行程式。
(1)測試序列1——第一組引數
測試序列1為akiyo_qcif.cfg。我們在配置檔案中的量化部分設定QP值為45。Coding Structure部分引數設定如下:
#======== Coding Structure =============
IntraPeriod : 1 # Period of I-Frame ( -1 = only first)
DecodingRefreshType : 0 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI
GOPSize : 1 # GOP Size (number of B slice = GOPSize-1)
#Type POC QPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active #ref_pics reference pictures
這樣我們將所有的幀都設定為I幀,編碼速度理論上可以得到提升,但這是基於編碼後視訊大小的犧牲之上。視訊壓縮的過程如下所示:
程式總共執行了82.429s,檔案大小為33KB,原始檔大小為3713KB,壓縮比為112.5,壓縮效果較好。峰值訊雜比(PSNR)的值如下所示。
SUMMARY --------------------------------------------------------
Total Frames | Bitrate Y-PSNR U-PSNR V-PSNR YUV-PSNR
100 a 129.4520 27.9516 33.5440 36.0687 29.2670
I Slices--------------------------------------------------------
Total Frames | Bitrate Y-PSNR U-PSNR V-PSNR YUV-PSNR
100 i 129.4520 27.9516 33.5440 36.0687 29.2670
P Slices--------------------------------------------------------
Total Frames | Bitrate Y-PSNR U-PSNR V-PSNR YUV-PSNR
0 p -nan(ind) -nan(ind) -nan(ind) -nan(ind) -nan(ind)
B Slices--------------------------------------------------------
Total Frames | Bitrate Y-PSNR U-PSNR V-PSNR YUV-PSNR
0 b -nan(ind) -nan(ind) -nan(ind) -nan(ind) -nan(ind)
PSNR值都在40以下,說明編碼的影像質量較低。我們再對生成的str.bin檔案進行解碼。解碼過程相對簡單。解碼後的檔案大小為3713KB,與原始檔大小相等。解碼的具體過程如下所示:
我們再來對比原始檔和解碼後檔案的關鍵幀影像質量對比。因為每一幀都是I幀,所以我們選擇第1、50、100幀來對比。
從上面三幀的對比結果來看,大致上圖片質量損失較大,在細節處的對比尤為明顯。但是物體的輪廓尚能分辨。
(2)測試序列1——第二組引數
在這一組引數中我們將第一幀設定為I幀,其餘幀都設定為P幀。即為低時延編碼結構。這樣理論上編碼速度會變慢,但快於其餘幀為B幀。影像質量也應該介於兩者之間。我們選取QP值為10,這樣
配置檔案(encoder_lowdelay_P_main.cfg)中的Coding Structure部分如下所示:
#======== Coding Structure =============
IntraPeriod : -1 # Period of I-Frame ( -1 = only first)
DecodingRefreshType : 0 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI
GOPSize : 4 # GOP Size (number of B slice = GOPSize-1)
IntraQPOffset : -1
LambdaFromQpEnable : 1 # see JCTVC-X0038 for suitable parameters for IntraQPOffset, QPoffset, QPOffsetModelOff, QPOffsetModelScale when enabled
同樣的,視訊壓縮的過程如下所示:
程式總共執行了200.189s,檔案大小為98KB,原始檔大小為3713KB,壓縮比為3709,壓縮效果相對來說較為一般。峰值訊雜比(PSNR)的值如下所示。
SUMMARY --------------------------------------------------------
Total Frames | Bitrate Y-PSNR U-PSNR V-PSNR YUV-PSNR
100 a 397.9160 50.9905 52.1198 52.4897 51.3332
I Slices--------------------------------------------------------
Total Frames | Bitrate Y-PSNR U-PSNR V-PSNR YUV-PSNR
1 i 3481.6000 53.3063 53.3069 53.7012 53.3698
P Slices--------------------------------------------------------
Total Frames | Bitrate Y-PSNR U-PSNR V-PSNR YUV-PSNR
99 p 366.7677 50.9671 52.1078 52.4774 51.3168
B Slices--------------------------------------------------------
Total Frames | Bitrate Y-PSNR U-PSNR V-PSNR YUV-PSNR
0 b -nan(ind) -nan(ind) -nan(ind) -nan(ind) -nan(ind)
可以看出整體的訊雜比都在50以上,這個值對於人眼來說是非常不錯的。I幀和P幀的數量為1、99,與我們設定的也一致。
對檔案進行解碼,擷取關鍵幀(第一幀)並進行對比如下:
可以看出,因為QP值設定比較高,所以影像質量得到了保證,大致上看不出損失。但因為其他幀都為P幀,仔細觀察還是發現細節處出現了模糊,在照片中人物的臉部可以仔細觀察發現。
(4)測試序列2——第一組引數
測試序列2的第一組編碼引數與測試序列1相同,即所有幀都設定為I幀,把QP值設為45。其他設定不變。視訊壓縮的過程截圖如下:
程式執行了242.844s,檔案大小為178KB,原始檔大小為14850KB。壓縮比為83.4。PSNR值如下所示:
SUMMARY --------------------------------------------------------
Total Frames | Bitrate Y-PSNR U-PSNR V-PSNR YUV-PSNR
100 a 727.1040 24.3546 35.8285 37.1662 25.9815
I Slices--------------------------------------------------------
Total Frames | Bitrate Y-PSNR U-PSNR V-PSNR YUV-PSNR
100 i 727.1040 24.3546 35.8285 37.1662 25.9815
P Slices--------------------------------------------------------
Total Frames | Bitrate Y-PSNR U-PSNR V-PSNR YUV-PSNR
0 p -nan(ind) -nan(ind) -nan(ind) -nan(ind) -nan(ind)
B Slices--------------------------------------------------------
Total Frames | Bitrate Y-PSNR U-PSNR V-PSNR YUV-PSNR
0 b -nan(ind) -nan(ind) -nan(ind) -nan(ind) -nan(ind)
可以看出PSNR值整體都在30以下,說明圖片質量較差。對檔案進行解碼,並擷取第1、50、100幀進行對比。
從上面三幀的對比結果來看,與測試序列1結果相似。大致上圖片質量損失較大,在細節處的對比尤為明顯。但是物體的輪廓尚能分辨。
(4)測試序列2——第二組引數
測試序列2的第二組編碼引數與測試序列1相同,即第一幀設定為I幀,其餘為P幀,把QP值設為10。其他設定不變。視訊壓縮的過程截圖如下:
程式執行了1969.095s,檔案大小為2723KB,原始檔大小為14850KB。壓縮比為5.45,壓縮效果較差。PSNR值如下所示:
SUMMARY --------------------------------------------------------
Total Frames | Bitrate Y-PSNR U-PSNR V-PSNR YUV-PSNR
100 a 11151.3200 48.8338 49.3611 50.5012 48.9460
I Slices--------------------------------------------------------
Total Frames | Bitrate Y-PSNR U-PSNR V-PSNR YUV-PSNR
1 i 23326.0000 53.4858 53.0045 53.5031 53.4046
P Slices--------------------------------------------------------
Total Frames | Bitrate Y-PSNR U-PSNR V-PSNR YUV-PSNR
99 p 11028.3434 48.7868 49.3243 50.4709 48.9180
B Slices--------------------------------------------------------
Total Frames | Bitrate Y-PSNR U-PSNR V-PSNR YUV-PSNR
0 b -nan(ind) -nan(ind) -nan(ind) -nan(ind) -nan(ind)
可以看出整體的訊雜比都在50以上,這個值對於人眼來說是非常不錯的。I幀和P幀的數量為1、99,與我們設定的也一致。
對檔案進行解碼,擷取關鍵幀(第一幀)並進行對比如下:
可以看出因為圖片紋理的原因和高QP值,二者幾乎看不出差別,但這是基於壓縮效果的犧牲之上的。
3. 實驗二:H.264 視訊編碼與解碼
3.1 實驗內容
選擇同一個測試序列,採用相同編碼引數,分別進行H.264 和HEVC 壓縮編碼和解碼;
對比分析兩個不同編解碼器的編碼效能,給出相應的引數配置,給出若干關鍵幀的原始圖
像、以及相應的解碼重建影像,給出每幀影像的PSNR 值。
3.2 實驗原理簡述
H.264是高階視訊編碼(Advanced Video Coding,簡稱AVC),又稱為MPEG-4第10部分。是一種面向塊,基於運動補償的視訊編碼標準。到2014年,它已經成為高精度視訊錄製、壓縮和釋出的最常用格式之一。3
H.264/AVC包含了一系列新的特徵,使得它比起以前的編解碼器不但能夠更有效的進行編碼,還能在各種網路環境下的應用中使用。這些新特性包括但不限於如下幾種4:
- 多參考幀的運動補償。比起以前的視訊編碼標準,H.264/AVC以更靈活的方式使用已編碼的更多幀來作為參考幀。在某些情況下,可以使用最多32個參考幀。
- 變塊尺寸運動補償。可使用最大16x16至最小4x4的塊來進行運動估計與運動補償,能夠對影像序列中的運動區域進行更精確的分割。
- 六抽頭濾波器產生二分之一畫素的亮度分量預測值。這可以減少混疊並得到更銳化的影像。
- 靈活的隔行掃描視訊編碼。隔行掃描影像的每幀包括兩個場,所以對於隔行掃描影像有三種編碼方式:將兩場合併為一幀進行編碼、將兩場分別編碼、將兩場合併為一幀,但是在巨集塊級別上,將一個幀巨集塊劃分為兩個場巨集塊進行編碼。
- 使用了一個Loop的除塊效應濾波器,能夠減輕普遍存在於其他基於離散餘弦變換(DCT)的視訊編解碼器的塊效應。
3.3 實驗過程與分析
3.3.1 實驗環境與測試序列
我選取的編碼器為JM19.05。其他環境與實驗一一致。在實驗二我選的測試序列都為實驗一中的測試序列1"akiyo_qcif.yuv"。內容為主持人進行新聞播報。大小為176*144。
3.3.2 實驗操作與結果分析
實驗二的配置引數與實驗一中的一致,即是第一幀為I幀,其餘都為P幀,所以正好可以使用baseline配置檔案。否則如果需要使用B幀就需要使用Main方式了。
JM軟體的配置引數如下所示(大部分都是與encoder_baseline.cfg檔案一致,已刪除部分註釋):
# Files
InputFile = "akiyo_qcif.yuv" # Input sequence
InputHeaderLength = 0
StartFrame = 0 # Start frame for encoding. (0-N)
FramesToBeEncoded = 100 # Number of frames to be coded
FrameRate = 30.0 # Frame Rate per second (0.1-100.0)
SourceWidth = 176 # Source frame width
SourceHeight = 144 # Source frame height
SourceResize = 0 # Resize source size for output
OutputWidth = 176 # Output frame width
OutputHeight = 144 # Output frame height
TraceFile = "trace_enc.txt" # Trace file
ReconFile = "test_rec.yuv" # Reconstruction YUV file
OutputFile = "test.264" # Bitstream
StatsFile = "stats.dat" # Coding statistics file
# Encoder Control
ProfileIDC = 66
IntraProfile = 0
LevelIDC = 40 # Level IDC (e.g. 20 = level 2.0)
IntraPeriod = 0 # Period of I-pictures (0=only first)
IDRPeriod = 0 # Period of IDR pictures (0=only first)
AdaptiveIntraPeriod = 1 # Adaptive intra period
AdaptiveIDRPeriod = 0 # Adaptive IDR period
IntraDelay = 0
EnableIDRGOP = 0
EnableOpenGOP = 0
QPISlice = 28 # Quant. param for I Slices (0-51)
QPPSlice = 28 # Quant. param for P Slices (0-51)
FrameSkip = 0
ChromaQPOffset = 0 # Chroma QP offset (-51..51)
點選執行之後,程式執行較慢。執行過程如下所示:
程式執行了344.816s。檔案大小為13KB,相對原始檔3713KB。壓縮比為285.6,壓縮效果很好。PSNR值資訊如下所示:
Y { PSNR (dB), cSNR (dB), MSE } : { 38.384, 38.380, 9.44246 }
U { PSNR (dB), cSNR (dB), MSE } : { 40.826, 40.824, 5.37896 }
V { PSNR (dB), cSNR (dB), MSE } : { 41.726, 41.725, 4.37107 }
可以看出PSNR值接近40,圖片質量相對較好。對檔案進行解碼,將原始檔關鍵幀、HEVC解碼的關鍵幀(QP值修改為28,檔案大小為9KB)和H.264解碼的關鍵幀進行對比。
由圖可知,HEVC解碼後的圖片比H.264解碼的結果的更加清晰,細節恢復的效果也更好。同時HEVC的壓縮效果也更好,執行時間也更短。綜上,HEVC的表現相比H.264來說更加優異。
4. 擴充實驗:AVS2視訊編碼與解碼
4.1 實驗內容
選擇同一個測試序列,採用與上述實驗相同的編碼引數,進行AVS2壓縮編碼和解碼;
對比分析幾個不同編解碼器的編碼效能,並給出相應的引數配置,給出若干關鍵幀的原始圖
像、以及相應的解碼重建影像,給出影像的平均PSNR 值。
4.2 實驗原理簡述
AVS標準是我國自主智慧財產權的信源編碼標準,是針對中國音視訊產業的需求,由中國數字音視訊領域的科研機構和企業牽頭,相關國際單位和企業廣泛參與,按照國際開放式規則制定的系列標準。目前已經完成了兩代AVS標準的制定。
第二代AVS標準,簡稱AVS2,首要應用目標是超高清晰度視訊,支援超高解析度(4K以上)、高動態範圍視訊的高效壓縮。IEEE國際標準號號為IEEE1857.4。根據官方網站的敘述,在數字電視廣播(逐行)、實時通訊和數字電影或靜態影像領域,AVS2和HEVC的編碼效能相似,但在數字電視廣播(隔行)和視訊監控的應用方面,AVS2的編碼效能要明顯高於HEVC。
與HEVC編碼框架類似,AVS2也採用了混合編碼框架,整個編碼過程包括幀內預測、幀間預測、變換量化、反量化反變換、環路濾波和熵編碼等模組。6
AVS2編碼包括但不限於如下特性:
- 靈活的編碼結構劃分。AVS2採用了基於四叉樹的塊劃分結構,包括編碼單元(Coding Unit,CU)、預測單元(Prediction Unit,PU)和變換單元(Transform Unit,TU)。
- 靈活的幀內預測編碼。相比於AVS1和H.264/AVC,AVS2在亮度塊的幀內預測編碼上設計了33種模式,包括DC預測模式、Plane預測模式、Bilinear預測模式和30種角度預測模式。在色度塊上有5種模式:DC模式、水平預測模式、垂直預測模式、雙線性插值模式以及新增的亮度匯出(Derived mode, DM)模式。
- 增加了前向多假設預測F影像。編碼塊可以參考前向兩個參考塊,相當於P幀的雙假設預測。AVS2將雙假設預測分為兩類,分別是時域雙假設和空域雙假設。時域雙假設的當前編碼塊利用預測塊加權平均作為當前塊的預測值,但運動向量差MVD和參考影像索引都只有一個,另外一個MVD和參考影像索引根據時域上的距離按線性縮放推匯出來。而空域雙假設預測也叫方向性多假設預測,通過融合初始預測點周圍的兩個預測點得到,而且初始預測點位於這兩個預測點的連線上。除了初始預測點外,一共有8個預測點,只將和初始預測點連成同一條直線的兩個預測點進行融合。除了四種不同的方向外,還根據距離進行調整,對1/2畫素距離和1/4畫素距離位置的4種模式分別計算,在加上初始預測點,共9種模式進行比較,選擇出最佳預測模式。
4.3 實驗操作與結果分析
4.3.1 實驗環境和測試序列
與實驗一二一致,擴充實驗選擇的測試序列同樣為"akiyo_qcif.yuv",環境為Visual Studio。
參考軟體為北京大學開源的AVS2編碼器和與解碼器。使用該編碼器和解碼器需要進行一些環境配置。
值得注意的是,環境配置大部分是我自己摸索出來的,可能會有不正確或者不必要的操作存在。希望老師可以理解或者提出指正。
(1) 編碼器環境配置
首先根據官方文件,需要安裝一個shell執行器,比如git-for-windows中的bash,並將bash所在的目錄新增到系統環境變數PATH中。
其次需要下載nasm.exe檔案,並將其放到\build\vs2013目錄下。
再開啟vs2013目錄下的’xavs.sln’工程檔案,選擇’x64’生成解決方案,否則會報錯一些asm檔案中的位數錯誤。生成成功後會在\build\bin\x64_debug資料夾中看到已經生成的可執行檔案’xavs.exe’檔案。
之後需要寫yuv檔案對應的配置檔案(cfg檔案),在config資料夾中找到’encoder_ldp.cfg’檔案。複製貼上到工作目錄,修改yuv檔案的名稱、空間解析度、需要編碼的幀數等引數。
最後在Visual Studio中的xavs的屬性中編輯對應的命令引數。命令引數很簡單,如下所示,可能需要修改路徑。之後便可以順利執行。
-f C:\xavs2-master\xavs2-master\build\bin\x64_Debug\encoder_ldp.cfg
(2)解碼器環境配置
解碼器環境配置相對簡單。同樣用’x64’便可以生成可執行檔案
其次將編碼器生成的test.avs壓縮檔案和test_rec.yuv參考檔案複製貼上到解碼器的工作目錄下。在Visual Studio中修改davs2的命令引數。命令引數也很簡單,如果需要修改I/O檔案的名稱可以直接修改。修改davs2的工作目錄可有可無,不修改則預設在vs2013資料夾下生成解碼檔案。
-i test.avs -o dec.yuv -r test_rec.yuv
4.3.2 實驗過程與結果分析
配置引數我選擇的是第一幀為I幀,其餘為AVS2獨有的F幀。QP值修改預設設定第一幀為34,此後幀QP的最小值和最大值都為34。修改後部分配置引數如下所示(已刪去部分註釋):
InputFile = "C:\xavs2-master\xavs2-master\build\bin\x64_Debug\akiyo_qcif.yuv" # Input sequence, YUV 4:2:0
FramesToBeEncoded = 100 # Number of frames to be coded
SourceWidth = 176 # Image width in Pels
SourceHeight = 144 # Image height in Pels
fps = 50.0
ChromaFormat = 1
InputSampleBitDepth = 8
SampleBitDepth = 8
ReconFile = "test_rec.yuv"
OutputFile = "test.avs"
# Maximum Size
MaxSizeInBit = 6 # Maximum CU size
# Encoder Control
ProfileID = 32
LevelID = 66
IntraPeriodMin = 0
IntraPeriodMax = 0
OpenGOP = 0 # Open GOP
UseHadamard = 1
FME = 3
SearchRange = 64 # Max search range
NumberReferenceFrames = 4
inter_2PU = 1
inter_AMP = 1
# F Frames
FFRAMEEnable = 1
DHPEnable = 1 # (0: Don't use DHP, 1:Use DHP)
MHPSKIPEnable = 1
WSMEnable = 1 # (0: Don't use WSM, 1:Use WSM)
點選執行,程式執行較快,執行過程如下所示:
程式執行很快,6.933s編碼了100幀。檔案大小為9KB。原始檔大小為3713KB,壓縮比為412.56。課件AVS2的壓縮效率和壓縮效果表現都很好。
PNSR值如下所示,PSNR值接近40,說明圖片質量可以接受:
AVERAGE SEQ PSNR: 37.5197 40.9658 42.0968
xavs2[i]: BITRATE: 35.29 kb/s @ 50.0 Hz, 100 frames, xavs2 p8
xavs2[i]: TOTAL BITS: 70576 (I: 14416, B: 0, P/F: 56160)
xavs2[d]: TOTAL TIME: 6.912 sec, total 100 frames, speed: 14.47 fps
xavs2[d]: Frame Time: I: 1.51%; B: 0.00%; P/F: 98.49%
xavs2[i]: Frame Num : I: 1.00%; B: 0.00%; P/F: 99.00%
將壓縮檔案進行解碼重構,並將三種標準重構(HEVC和H.264為第一幀為I幀,其餘為P幀,QP值設為34)的影像進行對比,結果如下所示:
可以看出H.264解碼之後效果最好,ASV2和HEVC解碼之後細節處都有些許模糊,而ASV2相對HEVC更為清晰。
壓縮檔案大小 | 壓縮時間 | 關鍵幀PSNR值 | |
---|---|---|---|
HEVC | 5KB | 117.752s | 35.8 38.5 40.3 |
H.264 | 6KB | 356.234s | 34.6 38.1 39.7 |
ASV2 | 9KB | 7.612s | 38.7 40.9 42.2 |
由結果可以看出,壓縮時間相差較大,與理論有較大差異。原因可能是因為生成可執行檔案的方式不同,前兩者為’win32’,後者為’x64’,因此後者計算更為快速。
壓縮效果HEVC最好,H.264次之,ASV2最末。但相差並不大。
關鍵幀PSNR值ASV2指標最高,但是由解碼之後圖片中H.264最為清晰。可能是PSNR指標與人眼視覺系統(HVS)的差異決定的。
5. 實驗感想
在嘗試瞭解本文的幾種編碼標準的原理時發現很複雜,看了很長時間都沒有理解。但查閱資料後發現AVS第一代標準是由我國的前任團隊花了三年多時間建立的,深覺工程之艱難。
本文取的一些引數有部分不能滿足控制變數的原則,但是有些引數的設定使得程式執行時間很長,所以很難有多組資料進行科學的對比試驗。這可以在課後自我完成。
總之這次實驗雖然不復雜,但是讓我們真切的感受了視訊編碼的過程,希望以後有機會可以加入這個領域迎接挑戰。同時感謝助教和老師的出題和講解。
R. Sjoberg et al., “Overview of HEVC High-Level Syntax and Reference Picture Management,” in IEEE Transactions on Circuits and Systems for Video Technology, vol. 22, no. 12, pp. 1858-1870, Dec. 2012, doi: 10.1109/TCSVT.2012.2223052. ↩︎
下載地址:http://trace.eas.asu.edu/yuv/index.html ↩︎
https://zh.wikipedia.org/wiki/H.264/MPEG-4_AVC ↩︎
Sullivan G J, Topiwala P N, Luthra A. The H. 264/AVC advanced video coding standard: Overview and introduction to the fidelity range extensions[C]//Applications of Digital Image Processing XXVII. International Society for Optics and Photonics, 2004, 5558: 454-474. ↩︎
下載地址:http://iphome.hhi.de/suehring/tml/download/ ↩︎
http://www.avs.org.cn/AVS2/technology.asp ↩︎
相關文章
- 深度學習與視訊恢復,視訊壓縮專題深度學習
- win10 如何壓縮視訊 win10怎麼壓縮視訊Win10
- 如何將多個視訊快速壓縮?
- Linux tar分卷壓縮與解壓縮Linux
- 小視訊原始碼,java使用Thumbnails壓縮圖片原始碼JavaAI
- 深度學習影象視訊壓縮演算法——TNG深度學習演算法
- 告警壓縮與降噪
- Linux 常用的壓縮與解壓縮命令詳解Linux
- Nginx網路壓縮 CSS壓縮 圖片壓縮 JSON壓縮NginxCSSJSON
- Linux科研武器庫 - 檔案壓縮與解壓縮 - zip / unzipLinux
- Linux下檔案的壓縮與解壓Linux
- linux 下壓縮與解壓資料夾Linux
- Nginx R31 doc-11-Compression and Decompression 壓縮與解壓縮Nginx
- 用ASP實現線上壓縮與解壓縮功能程式碼
- 大資料中批次壓縮與獨立壓縮的比較 - Bozho大資料
- 檔案壓縮和解壓縮
- win10 hevc視訊播放器沒有畫面怎麼辦_win10 hevc視訊播放器無法播放解決方法Win10播放器
- PAT-B 1078 字串壓縮與解壓【字串】字串
- NET中SharpZipLib 的使用(一)【壓縮與解壓】
- Python實現壓縮和解壓縮Python
- JS壓縮方法及批量壓縮JS
- linux下壓縮解壓縮命令Linux
- linux壓縮和解壓縮命令整理Linux
- H.265/HEVC 簡述 第二課(數字視訊格式)
- 小技巧:不用任何媒體處理軟體進行視訊壓縮
- Linux常用命令之檔案壓縮與解壓縮命令詳解Linux
- C++ MiniZip實現目錄壓縮與解壓C++
- CentOS 壓縮解壓CentOS
- Linux壓縮解壓Linux
- android短視訊開發,呼叫相機、相簿,壓縮圖片後上傳Android
- linux 高效壓縮工具之xz的壓縮解壓使用Linux
- Linux中檔案的壓縮和解壓縮Linux
- NET中SharpZipLib 的使用(二)【Web中壓縮與解壓】Web
- CSS單行格式化與壓縮CSS
- Gzipped 壓縮
- 打包/壓縮
- kafka高吞吐量之訊息壓縮Kafka
- 音訊壓縮器外掛Cytomic The Glue for Mac音訊Mac