您的位置:首页 > 其它

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

2013-07-23 20:40 302 查看


二视频编码基本原理


2.1 原理图



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

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

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


2.2 运动估计

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

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

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

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



1 全匹配法

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



2 二维对数法

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



3 三步搜索

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



4 领域搜索

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

5 其它

菱形搜索

钻石搜索


2.3 DCT

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

转换公式:



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



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




2.4 量化

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

量化示例:



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

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

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

量化公式:




2.5 Z-Scan

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



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


2.6 熵编码

原理:信息冗余

常用的熵编码有:

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

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



其它:CAVLC,CABAC


2.7 重构

模拟解码器对已经编码的数据进行解码,解码后的视频数据作为其后编码的视频的参考帧数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: