H264编码原理(宏块)

本文深入探讨了H264压缩技术,包括帧内和帧间压缩在解决空域和时域冗余上的应用,以及整数离散余弦变换(DCT)和CABAC编码如何实现无损压缩。宏块作为压缩的基本单元,其灵活的划分方式在H264中显著提高了压缩效率,尤其是在处理图像细节和背景时。H264通过精细的宏块划分和智能编码策略,实现了高效且高质量的视频压缩。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

H264压缩技术

  • 帧内压缩技术,解决的是空域数据冗余问题

    假设一张图片是天蓝色背景,整个天蓝色背景就可以用很小的数据量进行存储,背景前的人也会有对应的算法进行处理。

  • 帧间压缩技术,解决的是时域数据冗余问题

    所谓时域就是随之时间的推移,每个时间段都会有一帧数据,一帧一帧的数据间,可以做参考。
    例如第一帧是I帧,虽然压缩比不是太高,但是第二帧可以根据第一帧做参考,可以获得更高的压缩比。也就是将同一GOP组中的相同数据存储在参考帧内,后面的帧可以用更少的数据记录。

  • 整数离散余弦变换(DCT),将空间的相关性变为频域上无关的数据,然后进行量化

  • CABAC压缩

帧内压缩、帧间压缩属于有损压缩技术,而整数离散余弦变换(DCT)与CABAC都属于无损压缩技术。

宏块

  • 宏块是视频压缩操作的基本单元

  • 无论是帧内压缩还是帧间压缩,都是以宏块作为单位。

假设一张图片的原始图像如下:
在这里插入图片描述
H264宏块划分:
在这里插入图片描述
以8x8的像素进行划分。

宏块划分完成:
在这里插入图片描述
对于宏块,还可以再次进行划分,分成很多的子块:
在这里插入图片描述
左侧图中,整个大的块是H264的16x16的块,中间进行平均分配,每一块就是8x8,8x8内又可以划分为4x4,8x4等等。
宏块的大小对程序有着很大的影响,宏块控制的小,压缩时代码有着很高的控制力,但是,如果图片是天蓝色背景,换言之,相似区间非常大时,如果使用大宏块,就会压缩处理的非常快。
如果没有太多细节时,就将宏块划分的大一些,反过来,如果有非常多的细节处理,就需要将宏块的大小控制的小一些。

右侧图中,MPEG2对宏块的处理是不区分,直接统一按照16x16去处理,处理后每一块的数据量都特别多。
而H264对宏块的划分就有着更大的灵活性,可以看见,处理后的数据,每一块宏块的数据量都非常小,整个背景几乎都不用存什么数据,只需要去存储特定的一些数据。
对于H264常见的宏块划分尺寸如下所示:
在这里插入图片描述
可以看出来H264的宏块划分非常灵活。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值