Lab2 Report: HEVC 、H.264与AVS2 视频压缩

文章目录

  • Lab2 Report: HEVC 、H.264与AVS2 视频压缩
    • 1. 摘要
    • 2. 实验一:HEVC 视频编码与解码
      • 2.1 实验内容
      • 2.2 实验原理简述
      • 2.3 实验过程与分析
        • 2.3.1 实验环境与测试序列
        • 2.3.2 HEVC编码与解码
        • (1)测试序列1——第一组参数
        • (2)测试序列1——第二组参数
        • (4)测试序列2——第一组参数
        • (4)测试序列2——第二组参数
    • 3. 实验二:H.264 视频编码与解码
      • 3.1 实验内容
      • 3.2 实验原理简述
      • 3.3 实验过程与分析
        • 3.3.1 实验环境与测试序列
        • 3.3.2 实验操作与结果分析
    • 4. 拓展实验:AVS2视频编码与解码
      • 4.1 实验内容
      • 4.2 实验原理简述
      • 4.3 实验操作与结果分析
        • 4.3.1 实验环境和测试序列
        • (1) 编码器环境配置
        • (2)解码器环境配置
        • 4.3.2 实验过程与结果分析
    • 5. 实验感想

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-PSNR100    a     129.4520   27.9516   33.5440   36.0687   29.2670I Slices--------------------------------------------------------Total Frames |   Bitrate     Y-PSNR    U-PSNR    V-PSNR    YUV-PSNR100    i     129.4520   27.9516   33.5440   36.0687   29.2670P Slices--------------------------------------------------------Total Frames |   Bitrate     Y-PSNR    U-PSNR    V-PSNR    YUV-PSNR0    p    -nan(ind)  -nan(ind)  -nan(ind)  -nan(ind)  -nan(ind)B Slices--------------------------------------------------------Total Frames |   Bitrate     Y-PSNR    U-PSNR    V-PSNR    YUV-PSNR0    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-PSNR100    a     397.9160   50.9905   52.1198   52.4897   51.3332I Slices--------------------------------------------------------Total Frames |   Bitrate     Y-PSNR    U-PSNR    V-PSNR    YUV-PSNR1    i    3481.6000   53.3063   53.3069   53.7012   53.3698P Slices--------------------------------------------------------Total Frames |   Bitrate     Y-PSNR    U-PSNR    V-PSNR    YUV-PSNR99    p     366.7677   50.9671   52.1078   52.4774   51.3168B Slices--------------------------------------------------------Total Frames |   Bitrate     Y-PSNR    U-PSNR    V-PSNR    YUV-PSNR0    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-PSNR100    a     727.1040   24.3546   35.8285   37.1662   25.9815I Slices--------------------------------------------------------Total Frames |   Bitrate     Y-PSNR    U-PSNR    V-PSNR    YUV-PSNR100    i     727.1040   24.3546   35.8285   37.1662   25.9815P Slices--------------------------------------------------------Total Frames |   Bitrate     Y-PSNR    U-PSNR    V-PSNR    YUV-PSNR0    p    -nan(ind)  -nan(ind)  -nan(ind)  -nan(ind)  -nan(ind)B Slices--------------------------------------------------------Total Frames |   Bitrate     Y-PSNR    U-PSNR    V-PSNR    YUV-PSNR0    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-PSNR100    a   11151.3200   48.8338   49.3611   50.5012   48.9460I Slices--------------------------------------------------------Total Frames |   Bitrate     Y-PSNR    U-PSNR    V-PSNR    YUV-PSNR1    i   23326.0000   53.4858   53.0045   53.5031   53.4046P Slices--------------------------------------------------------Total Frames |   Bitrate     Y-PSNR    U-PSNR    V-PSNR    YUV-PSNR99    p   11028.3434   48.7868   49.3243   50.4709   48.9180B Slices--------------------------------------------------------Total Frames |   Bitrate     Y-PSNR    U-PSNR    V-PSNR    YUV-PSNR0    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第一代标准是由我国的前任团队花了三年多时间建立的,深觉工程之艰难。

本文取的一些参数有部分不能满足控制变量的原则,但是有些参数的设置使得程序运行时间很长,所以很难有多组数据进行科学的对比试验。这可以在课后自我完成。

总之这次实验虽然不复杂,但是让我们真切的感受了视频编码的过程,希望以后有机会可以加入这个领域迎接挑战。同时感谢助教和老师的出题和讲解。


  1. 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. ↩︎

  2. 下载地址:http://trace.eas.asu.edu/yuv/index.html ↩︎

  3. https://zh.wikipedia.org/wiki/H.264/MPEG-4_AVC ↩︎

  4. 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. ↩︎

  5. 下载地址:http://iphome.hhi.de/suehring/tml/download/ ↩︎

  6. http://www.avs.org.cn/AVS2/technology.asp ↩︎

HEVC 、H.264与AVS2 视频压缩相关推荐

  1. 视频编码方案之间的比较(HEVC,H.264,MPEG2等)

    Jens-Rainer Ohm等人在文献<Comparison of the Coding Efficiency of Video Coding Standards-Including High ...

  2. H.264再学习 -- H.264视频压缩标准

    如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/78221863 H.264 这部分一直在讲,但是却没有系统的来说.接下来要详细 ...

  3. H.264视频压缩标准拓展视频监控的潜力

    1.简介 H.264是最新的视频压缩标准,它也称为MPEG-4Part10或AVC(高级视频编码).据预测,在未来几年内H.264将成为行业首选的视频标准 H.264是一个需要许可证才能使用的开放标准 ...

  4. H.264学习历程(天之骄子)

    半年前,我知道了H.264这个名词.那个时候决定学习H.264,可是我连资料都不知道如何收集.而且整个学校就只有我一个人在学习H.264,找不到人交流,所以那个时候学得真的是举步维艰,很痛苦,而能在网 ...

  5. H.264视频的RTP有效负载格式 (RFC-3984)

    RFC文档链接 本备忘录的状态 略 摘要 本备忘录描述了ITU-T建议的H.264视频编解码器和技术上相同的ISO/IEC国际标准14496-10视频编解码器的RTP有效载荷格式.RTP有效载荷格式允 ...

  6. H.264 原理与 B 站视频压制技巧

    在上一篇文章<关于"视频",你可能不知道的那些事儿>中,我们得到了一个概念:一段未经任何处理的 1080P 的 60 帧率视频每秒钟需要超过 300MB 的体积空间.直 ...

  7. HEVC将会取代H.264的原因

    在数字视频应用产业链的快速发展中,面对视频应用不断向高清晰度.高帧率.高压缩率方向发展的趋势,当前主流的视频压缩标准协议H.264(AVC)的局限性不断凸显.同时,面向更高清晰度.更高帧率.更高压缩率 ...

  8. H.264和H.265(HEVC)深度解析及对比

    为什么H.265会流行?H.264和H.265有何不同? 一.什么是H.265 H.265是ITU-TVCEG继H.264之后所制定的新的视频编码标准.H.265标准围绕着现有的视频编码标准H.264 ...

  9. 华为:解读下一代视频压缩标准HEVC(H.265)

    概述 H.264(AVC)从2003年5月草稿发布以来,凭借其相对于以往的视频压缩标准在压缩效率以及网络适应性方面的明显优势,逐步成为视频应用领域的主流标准.根据 MeFeedia的数据,由于iPad ...

最新文章

  1. 手把手教你如何在 Linux 上源码安装最新版本 R
  2. java学习笔记第三章
  3. java response返回xml_Spring 返回Xml格式
  4. java怎么运行class文件,面试必会
  5. 周期性定时事件的处理
  6. 撤销操作 —— Git 学习笔记 12
  7. lombok插件:Data自动get/set方法, Slf4j实现Logger的调用
  8. java8 stringbuilder_为什么 Java 8 中不再需要 StringBuilder 拼接字符串
  9. HTML5+CSS3+JQuery1.9 输入框切换和Div失焦模拟
  10. Jquery实现无限级树状结构并动态添加增删改等编辑功能
  11. 解决android帮助文档打开慢
  12. java的handleback类,CallbackHandler
  13. matlab 电压矢量开关,电压空间矢量研究及Matlab仿真
  14. phpmyadmin误删表后如何恢复
  15. 推荐好用的临时邮箱工具,解决注册网站收到的垃圾邮件
  16. 2020高销量蓝牙耳机推荐,十大平价最受欢迎蓝牙耳机排行榜
  17. Mysql 生成随机数字
  18. HTML中图片和文字的对齐方式
  19. Three.js点击地图动态标注
  20. shell判断文件目录或文件是否存在

热门文章

  1. Hack The Box--Forest 靶场训练
  2. php判断字符串长度
  3. Vivo手机获取文件管理器里的文件路径为空
  4. HTTPS、HTTPS、SSH、MSTSC等常用网络服务的端口号
  5. 分频器——秒分频、三分频、五分频、任意分频和偶数分频
  6. 外贸建站如何使用Woocommerce插件制作产品页面
  7. Antd如何在label里增加icon图标
  8. Joel Spolsky在耶鲁的演讲无责任导读
  9. 自动化早已不是那个自动化了,谈一谈自动化测试现状和自我感受……
  10. A14:Untiy+Leapmotion制作拍打乐符游戏