H264压缩技术帧内压缩技术解决空域数据冗馀问题
假设一张图像是天蓝色背景,那么天蓝色的整个背景将以小数据量存储,背景前面的人也用相应的算法处理。
帧间压缩技术解决时域数据冗馀问题
时域是指随之而来的时间的经过,因为每个时间段有1帧的数据、1帧1帧的数据之间,所以能够作为参考。
例如,第一帧是I帧,虽然压缩率不是很高,但是可以基于第一帧来参考第二帧,从而获得更高的压缩率。 也就是说,将相同GOP组内的相同数据存储在参照帧内,后续帧可以以更少的数据被记录。
离散馀弦变换(DCT )将空间相关性转换为频域中的无关数据并且量化
CABAC压缩
帧内压缩、帧间压缩是有损压缩技术,而整数离散馀弦变换(DCT )和CABAC都是有损压缩技术。
宏块宏块是视频压缩操作的基本单位
无论帧内压缩还是帧间压缩,都以宏块为单位。
假设照片的原始图像如下。
H264宏块分割:
用8x8的像素分割。
宏块分割完成:
对于宏块,还可以再次将其分割成许多子块。
在左侧的图中,整个大块是H264的16x16块,在中间均匀分配。 每个块可以在8x8、8x8内分割为4x4、8x4等。
宏块大小对程序有很大影响,宏块控制小,压缩时代码控制力高,而图像是天蓝色的背景,换句话说,类似区间非常大的情况下,使用大宏块的压缩处理非常快。
如果太细,请将宏块分割得很大。 相反,如果处理细节非常多,则需要将宏块的大小控制得很小。
在右侧的附图中,MPEG2不区别宏块的处理,直接统一为以16x16来处理,但是处理后的每个块的数据量特别大。
可见,H264在分割宏块方面具有灵活性,处理的数据每宏块的数据量非常少,几乎不需要在整个背景中存储数据,而只需要存储特定的数据。
H264的常见宏块分割大小如下:
可见,H264的宏块分割非常灵活。