当前位置:早雪网网络学院编程文档其他语言 → MPEG4 & H.264学习笔记之三 ------ 图像模型(图像处理过程)

MPEG4 & H.264学习笔记之三 ------ 图像模型(图像处理过程)

减小字体 增大字体 作者:未知  来源:supcode.com收集整理  发布时间:2005-7-1 14:56:06

3.4 图像模型
一个自然的视频图像包括一格采样值.自然图像在它们原始的状态下通常很难于压缩,这是因为相邻图像采样值之间的很强的联系造成的.我们可以从一幅图像的自相关函数图中得到不同图像之间的相似程度.在中点处的最顶点表示图像未经移动时的图像.当空域移动拷贝被从原始图像的任一个方向移除的时候,这个函数值就会急骤下降,就这说明了一个图像采样值的邻域内是高度相关的.

一个运动补偿的剩余图象的自相关函数在当空域移动增加的时候快速衰减,表明了相邻的采样点是弱相关的.有效的运动补偿在剩余帧中减少了本地相关性,这样就让图象比原始状态下的图象更易于压缩.图像模型的作用就是把图像或剩余图像的相关性去除掉,并把它转变为一种可以被熵编码器有效编码的数据形式.实际图像模型一般有三个主要的组成部分:变换(去相关和简化数据),量化(减小转换数据的相关性)和重组(组合数据来把大值分组到一起)。

3.4.1 预测图像编码
运动补偿是预测编码的一个实例,在这种补偿下,编码器基于上一帧创造了对于当前帧的一个区域的预测并从当前域中减去这个预测来形成一个剩余帧。如果预测是成功的,那和在剩余帧中的能量是比原始帧中的能量少得多的,而且剩余帧可以用更少的位来表示。

与之相似的是,同一个图像采样或区域的预测可以由前面传输的同样图象或帧中组成.预测性编码被用作是早期的压缩算法的基础,也是H.264的一个很重要的组成部分.帧内编码(应用在变换域中,见后).空域预测有时被描述为"差分脉冲编码调制"(DPCM)--从通信系统中引入的一个差分的PCM编码方法.


 B C
A X

图中假设一个像素X是被编码的像素点,如果在光栅顺序下处理这帧的话,那么点A,B和C(在当前和之前行的邻近像素)在编码和解码器中都是可得的(因为他们已经在X之前被解码).编码器在根据一些在之前编码的像素的组合来得到对于X的预测,从X中减掉这个预测,然后编码剩余帧频(做差之后的结果).解压器形成相同的预测,然后把解码的剩余帧加进去来重建像素值.如果编码过程是有损的(比如说剩余帧被量化了)那么解码的像素值A,B,C也许与原始的A,B,C是不同的(因为编码过程的损失),这样的话上述的过程可能在编码器和解码器上引起累积的不匹配.这种情况下,编码器应该解码剩余帧中的R(X),并重建像素.

比如说:
编码器预测: P(X) = (2A + B + C) / 4
剩余帧  R(X) = X - P(X) 被编码并传输
解码器解码R(X)并组成同样的预测: P(X) = (2A + B + C) / 4
重建像素 X = R(X) + P(X)

编码器使用解码的像素值A,B,C来构成重建,比如说,P(X)=(2A+B+C)/4.这样的话,编码器和解码器使用同样的P(X),这样就可以避免错位的发生.

这种方法的压缩的效率依赖于对于P(X)预测的准确性.如果预测是准确的(P(X)与X的值是相近的),那么剩余帧的能量就非常小了.然而,并不是经常都能选择一个对复杂图像来说那么理想的预测器的.编码器就有必要指出对解码端选择预测器,这样就有一个预测和需要的多余位来表示信号和预测器的一个折衷考虑了.

3.4.2 变换编码
3.4.2.1 总述
图像中或视频CODEC中的变换阶段是把图像或运动补偿剩余值转到另一个域中(变换域中)。变换的选择依赖于以下几个分类
1. 在转换域中的数据是去相关性的(转换域中的数据的大多数能量都会聚集到很小的值中)
2. 转换应该是可逆的.
3. 转换的计算过程应该是易于处理的,

对图像和视频压缩以及很多的变换都建议使用以下两类方式:基于块的变换和基于图像的变换。基于块的变换的例子比如Karhunen-Loeve变换(KLT),单值分解(SVD)和余弦变换(DCT)。每一种变换都是对于N*N的图像块或剩余样本来说的,这样图像就被用块的单元来处理。块变换有很低的内存需求而且很适于基于块的运动补偿剩余帧的压缩,但是受边界区域的影响比较严重。基于图像的变换对于整个图像或帧来进行操作(或一个图像的一大段进行操作)。最常用的图像变换是离散小波变换(DWT或直接说小波变换)。像DWT这样的变换对于表态图像的压缩来说已经被证明是很有效的了,但是它们对内存的消耗都比较大(因为整个图像或段都以单个单元来进行处理)而且不适用于基于块的运动补偿方法。DCT和DWT在MPEG4视频部分中都得到了应用(而且一个DCT的变种在H.264中被使用)。它们将在下面几节被讨论。

3.4.2.2
余弦变换在X中进行运算(X是一个N*N的采样块,通常是指在预测之后的图像采样或剩余帧值)来构造Y,一个N*M的系数块。DCT的操作(及它的反变换IDCT),可以用变换矩阵A来描述。一个N*N采样块的DCT变换由如下式子得到:Y=AXA(T),反DCT变换:Y=AXA(T),A(T)表示A的对称矩阵

X是一个采样的矩阵,Y是一个系统的矩阵,A是一个N*N的变换矩阵。A的元素是:

A(i,j) = C(i) * cos [(2j+1)*i*PI]/2N
C(i)=   N^(-1/2) i=0
 (2/N)^(-1/2) i>0

一个二维DCT的输出是一组N*N的系数,它表示了图像在DCT域中的块数据,这些系数可以被想成是一组标准基的”权“值。任何图像块都可以由编合所有的N*N标准基来重组,通过这些基乘以相应的权因素值(系数)。

例2 图像块的DCT系数
一个选定的4*4的块,以及DCT系数。这种用DCT域表示块的方法的优点不是很明显的,因为并没有减少存储的空间,原来我们存16个像素值,我们现在成了需要存16个DCT系数。DCT的实用性当块被从系数的一个子集中构建出来的时候表现了出来:

把除去一些很大的值之外的所有的系数设为0,执行IDCT之后的结果如下图:在IDCT之前加入更多的系数可以形成渐近的更加准确的对原图的重建。这样,就可能从从一个子集的系数集中近似于原始的图像。删除系数中的小系数值(比如说通过量化)可以让图像数据在更少的系数表示位中表示出来,尽管这样做会影响图像的质量。


3.4.2.3 小波
流行的"小波变换"要(基于一系列系数与离散小波函数相等的滤波器来进行图像压缩的一种广泛使用的方法).一个应用于有N个采样结果的离散信号的离散小波变换的基本运行过程如下.一对滤波器被用来把信号分解为一个低频部分(L)和一个高频部分(H).每个波段由因子2被子采样化,这样这两个频率波都含有N/2个采样点。如果正确选择了滤波器的话,这个操作过程是可逆的。

这种方法可以被扩展应用到一个二维的信号上,比如说灰度图中。一个2D图的每一行都被经过低通和高通的滤波(Lx和Hx),每个滤波器的输出被下采样用来制造中间图像L和H。L是原始图象的低通滤波,并通过在x方向进行下采样

[1] [2]  下一页


Tags:MPEG,amp,学习,笔记,之三,图像,模型,图像,处理,过程
[数据载入中...] [返回上一页] [打 印]