数据压缩试验 | H.264编码

实验要求

1.将两个264文件进行解码得到相应的YUV文件;
2.将上述两个视频序列编码为.264文件
固定码率,以不同的GOP长度及形状编码
GOP=15,2B帧;GOP=12,2B帧;GOP=9,2B帧 GOP=4,1B帧;GOP=12,无B帧;GOP=1,全I帧
相同的GOP长度及形状,不同的码率
例:1000kb/s,800kb/s,400kb/s,…
3.用码流分析软件检查所生成的码流中各种编码模式和运动矢量等信息;
分析不同统计特性的视频图像对应的编码模式和运动矢量的特点
4.用播放器观看所生成码流的质量;
5.生成率失真曲线

编码原理

1.H.264主要特点
压缩效率高:在图像质量不变的条件下,码率只有MPEG-2的1/2;
容错能力强:H.264码流具有较强抗误码特性,可适应丢包率高、干扰严重的信道;
网络适应性好;
计算复杂度高,比MPEG-2复杂2~3倍。
2.H.264编码器框图
在这里插入图片描述

3.H.264/AVC与其它编码标准的差异
1)帧内预测
在空间域进行帧内预测,提高镇内编码的精确度;
2)运动估计与运动补偿
不同尺寸的块和形状,高分辨率的子像素运动估计和选择多个参考帧;
3)DCT变换
使用整数的DCT变换;
4)去块效应
为消除块效应,增加了自适应消块滤波器;
5)熵编码技术
通用变长编码(UVLC),基于上下文的自适应变长码编码(CAVLC),基于上下文的自适应二进制算术编码(CABAC)。

实验步骤

1.将两个264文件进行解码得到相应的YUV文件
在decoder_test.c文件中修改输入和输出文件名:

InputFile             = "highway_qcif.264"       # H.264/AVC coded bitstream
OutputFile            = "highway_qcif_dec.yuv"   # Output file, YUV/RGB

输出结果:
在这里插入图片描述

2.将YUV文件编码为.264文件
2.1不同GOP类型的参数设置:
在这里插入图片描述

在encoder.cfg文件中修改参数(GOP=15,2B帧):

...
##########################################################################################
# Files
##########################################################################################
InputFile             = "highway_qcif_dec.yuv"       # Input sequence
InputHeaderLength     = 0      # If the inputfile has a header, state it's length in byte here
StartFrame            = 0      # Start frame for encoding. (0-N)
FramesToBeEncoded     = 30      # Number of frames to be coded
...
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
...
ReconFile             = "highway_qcif_rec.yuv"       # Reconstruction YUV file
OutputFile            = "highway_qcif.264"           # Bitstream
##########################################################################################
# Encoder Control
##########################################################################################
...
IntraPeriod           = 15   # Period of I-pictures   (0=only first)
...
##########################################################################################
# B Slices
##########################################################################################
NumberBFrames          = 2  # Number of B coded frames inserted (0=not 
disable, N <= NumberReferenceFrames)
...
HierarchicalCoding      =  0  # B hierarchical coding (0= off, 1= 2 layers, 2= 2 full hierarchy, 3 = explicit)
...

输出结果:
在这里插入图片描述
同理可得(GOP=4,1B帧):
在这里插入图片描述
2.2相同GOP长度及类型,不同的码率(GOP=15,2B帧,修改码率)

########################################################################################
#Rate control
########################################################################################

RateControlEnable       = 1     # 0 Disable, 1 Enable
Bitrate                 = 1000000 # Bitrate(bps)
...

输出结果:
在这里插入图片描述
3.用码流分析软件检查所生成的码流中各种编码模式和运动矢量等信息
GOP=15,2B
第一帧一定是帧内编码(I帧)
在这里插入图片描述
Slice Type:I Slice
在这里插入图片描述
第二第三帧为帧间预测帧(B帧)
在这里插入图片描述
在这里插入图片描述Slice Type:B Slice

在这里插入图片描述
第四帧为前向预测帧(P帧)
在这里插入图片描述
Slice Type:P Slice
在这里插入图片描述

4.用播放器观看所生成码流的质量
【GOP=15,2B帧,1000kbps】
在这里插入图片描述
在这里插入图片描述
该帧实际码率为615.26kbps,其Y-PSNR为53.422dB。
【GOP=4,1B帧,1000000bps】
在这里插入图片描述
在这里插入图片描述
该帧实际码率为659.76kbps,其Y-PSNR为59.393dB。
5.生成率失真曲线
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值