H.264-AVC视频编码原理及实现(二)

二视频编码基本原理

2.1 原理图

 H.264-AVC视频编码原理及实现(二)_第1张图片

目前常用的视频编码算法基本上都是以运动估计和以块为单位的时-频变换为基础。

运动估计,处理了相邻视频帧中的相同部分。

时-频变换,使得数据块的能量更加集中地分布。常用的时-频变换是DCT变换。

2.2 运动估计

运动估计(Motion Estimation),相邻视频帧之间的内容存在一定的相关性。把图像分成若干块,通过一定的搜索算法,在邻近帧中找到和该块最相似的块,这个过程称为运动估计,二者之间的相对偏移量称为运动矢量。

在编码的过程中,对运动矢量和预测的参差进行编码。通过运动估计减少了帧间的时间冗余。

 

常用的运动估计的匹配算法有:

常用运动估计的搜索算法有:

H.264-AVC视频编码原理及实现(二)_第2张图片

1 全匹配法

光栅方式扫描所有像素,找到最匹配的块位置。

H.264-AVC视频编码原理及实现(二)_第3张图片

2 二维对数法

又称五点搜索,边缘点以原步长继续搜索,中心点或边界点步长减半。

 H.264-AVC视频编码原理及实现(二)_第4张图片

3 三步搜索

又称8点搜索,每次确定下一步的搜索点,并将步长减半。

H.264-AVC视频编码原理及实现(二)_第5张图片

4 领域搜索

根据邻近已编码MB的位置,确定中心的,如果原点最匹配,停止搜索,如果最匹配点是搜索框边缘,继续以该点为中心进行搜索。

 

5 其它

菱形搜索

钻石搜索

2.3 DCT

对数据块进行空域到时域的变换,能量更加集中。

转换公式:

 H.264-AVC视频编码原理及实现(二)_第6张图片

对于一个8x8的数据块(表1)经过DCT后转换成表2:

H.264-AVC视频编码原理及实现(二)_第7张图片

在DCT的转换过程中,当u=0,v=0时,F(0,0)代表了整个8*8图像块的均值,F(0,0)称为直流系数(DC),其余变换后的63个数,称为交流系数(AC)。交流系数距离直流系数越远,交流系数的频率越高。

H.264-AVC视频编码原理及实现(二)_第8张图片

2.4 量化

量化:目的是使保存数据的比特数降低,手段是把一批输入值对应到一个输出级上,结果降低了数据的精度。

 

量化示例:

H.264-AVC视频编码原理及实现(二)_第9张图片

结论:经过量化后的数据,在进行解码还原时势必导致图像的失真。量化的精度,决定了图像还原时的失真程度,精度越高,失真越小,反映在码率上,就是量化精度越高,码率越大。

 

帧内编码和帧间编码采用的不同量化方式

编码时对量化值进行编码传输。

 

量化公式:

 H.264-AVC视频编码原理及实现(二)_第10张图片

2.5 Z-Scan

DCT加量化后的数据,能量都集中在左上角,在进行数据保存时采用Z扫描的顺序进行保存。

H.264-AVC视频编码原理及实现(二)_第11张图片

经过Z扫描后,直流系数和交流系数的低频部分,会排在新数组的前面,而交流系数的高频部分排到后面,而高频中大部分数的值大多都是0,这样我们就把可以得到一长串的“0”的序列,为下一步的编码做好准备。

 

2.6 熵编码

原理:信息冗余

常用的熵编码有:

RLE:行程长度编码,是针对交流系数进行编码的,它的编码原理是,使用一个字节的高4位表示连续的0的个数,使用它的低4位表示编码下一个非0系数所需要的位数,跟在后面的是非0系数的值。

 

Huffman:在变长编码中,对出现概率大的符号赋予短码字,对出现概率小的符号赋予长码字。

 H.264-AVC视频编码原理及实现(二)_第12张图片

其它:CAVLC,CABAC

2.7 重构

模拟解码器对已经编码的数据进行解码,解码后的视频数据作为其后编码的视频的参考帧数据

你可能感兴趣的:(H.264-AVC视频编码原理及实现(二))