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、可变尺寸的离散余弦变换等。

            图2-1 HEVC的典型编码框架

由图中可以看出,典型的HEVC编码框架具有如下几个模块:

  • 帧内预测:该模块主要用于去除图像的空间相关性。通过编码后的重构块信息来预测当前像素块以去除空间冗余信息,提高图像的压缩效率;
  • 帧间预测:该模块主要用于去除图像的时间相关性。帧间预测通过将已编码的图像作为当前帧的参考图像,来获取各个块的运动信息,从而去除时间冗余,提高压缩效率;
  • 变换量化:该模块通过对残差数据进行变换量化以去除频域相关性,对数据进行有损压缩。变换编码将图像从时域信号变换至频域,将能量集中至低频区域;
  • 去方块滤波:在基于块的视频编码中,形成的重构图像会出现方块效应,采用去方块滤波可达到削弱甚至消除方块效应的目的,提高图像的主观质量和压缩效率;
  • 样点自适应步长滤波(SAO滤波)处于去方块滤波之后,通过解析去方块滤波后的像素的统计特性,为像素添加相应的偏移值,可以在一定程度上削弱振铃效应,提高图像的主观质量和压缩效率;
  • 熵编码:该模块将编码控制数据、量化变换系数、帧内预测数据以及运动数据等编码为二进制流进行存储或传输。熵编码模块的输出数据即原始视频压缩后的码流。
2.3 实验过程与分析
2.3.1 实验环境与测试序列

本次实验参考的代码版本为HW-16.13;实验的环境为Visual Studio;用来采取帧和播放YUV文件的工具为YUV Player。

实验所用的测试序列为"akiyo_qcif.yuv"和"Bus_cif.yuv"2。为了实验的便利,我们都选取了100帧进行后续的编码。前者为一个新闻主持人,变化幅度较小,图中运动物体较少。后者为公交车在道路上行驶,变化幅度较大,物体较多。

视频纹理大致如下,选取的都为第一帧(两张图片有所放大和缩小):

在这里插入图片描述

空间分辨率参数如下所示:

SourceWidthSourceHeightFrameToBeEncoded
akiyo176144100
bus352288100
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帧,编码速度理论上可以得到提升,但这是基于编码后视频大小的牺牲之上。视频压缩的过程如下所示:

            图2-3 测试序列1以第一组参数的编码运行过程

程序总共运行了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,与源文件大小相等。解码的具体过程如下所示:

            图2-4 测试序列1以第一组参数的解码运行过程

我们再来对比源文件和解码后文件的关键帧图像质量对比。因为每一帧都是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

同样的,视频压缩的过程如下所示:

            图2-8 测试序列1以第二组参数的编码运行过程

程序总共运行了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。其他设置不变。视频压缩的过程截图如下:

            图2-10 测试序列2以第一组参数的编码运行过程

程序运行了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。其他设置不变。视频压缩的过程截图如下:

            图2-14 测试序列2以第二组参数的编码运行过程

程序运行了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-1 AVC的典型编码框架

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)

点击运行之后,程序运行较慢。运行过程如下所示:

            图3-2 测试序列1的H.264编码运行过程

程序运行了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

            图4-1 AVS2的编码框架

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

            图4-2 xavs的命令参数

(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 davs的命令参数

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) 

点击运行,程序运行较快,运行过程如下所示:

            图4-4 xavs的运行过程

程序运行很快,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值
HEVC5KB117.752s35.8 38.5 40.3
H.2646KB356.234s34.6 38.1 39.7
ASV29KB7.612s38.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 ↩︎

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值