视频图像压缩编码之预测编码

序列图像编码:
在视频图像压缩编码中,图像是由连续的帧形成的图像序列,由于景物变化速度的限制,相邻帧间存在很高的相关性,即存在很高的时间和空间冗余。
运动补偿预测的目的就是消除时域冗余,由运动补偿技术结合变换编码,构成了序列图像编码的主要方法。
在序列图像中,相邻帧间的主要变化是由于构成景物的各物体的运动引起的,检测物体的运动参数,并通过这些运动参数由前一帧预测当前帧,这就是运动补偿技术MCP(motion compensated prediction),或简称运动补偿(MC)。其中主要的任务是检测物体的运动参数,称为运动估计ME。

物体的运动由多种元素构成,包括平移、旋转及扭曲等,完整的描述物体运动的模型是复杂的。在目前通用的图像压缩标准及大多数实用的图像压缩算法中,均使用了简化的运动模型,即假设运动是由平移构成,这样只用X和Y方向(或水平与垂直方向)的两个平移参数dx,dy表征运动参数。由dx,dy构成一个运动矢量D
D=(dx,dy)T
当前帧(i,j)坐标点的像素值由前一帧预测为
MCP(i,j,k)= S(∧)(i,j,k)=S(i+dx,j+dy,k-1)
这里k表示当前帧,k-1表示前一帧,S(i,j,k)表示原始像素值, S(∧)(i,j,k)表示预测的像素值。

当前帧原始图像与预测图像之间可能会有误差,由于这个误差是由平移运动补偿预测引起的,故称为帧间位移误差DFD(displacement frame difference),表示如下:
DFD(i,j,k)= S(i,j,k)-S(∧)(i,j,k)= S(i,j,k)- S(i+dx,j+dy,k-1)
因此,对图像帧内像素的编码变成对DFD场和运动矢量D的编码,且DFD场的能量是非常低的,可以用很少的码字表示,运动矢量是稀疏的,同样用较少的码字表示,可以获得有效的码率压缩。
如果一个运动物体较大,将它分成一些小块,对于每个小块的平移与旋转运动可以用一个平移运动矢量来逼近。如果进行分块运动估计,则每个块的运动矢量可以逼近平移和旋转运动,所以块匹配运动估计是目前应用最广泛的。

对于当前的第k帧图像,将它划分成等大小的块,每个块的尺寸为N×M,即每个块包含N行,每行M个像素。每个块起始点在整帧图像中的行列标号为(I,J),整个块用符号B(I,J,k)表示。假设相邻帧间的各方向运动矢量的最大值为dmax。这样就在第k-1帧构成一个搜索窗,这个窗的中心点坐标与B(I,J,k)在k帧的中心点坐标重合,窗的大小为(2dmax+N)×(2dmax+M)。块B(I,J,k)的运动补偿预测块必定是窗内以某一位置为起点的一个块,设运动矢量为(dx,dy)T,则B(I,J,k)的运动补偿块为B(I+dx,J+dy,k-1),运动估计的目的是求这一矢量(dx,dy)T。
在搜索窗中所能构成的所有块的集合为{B(I+i,J+j,k-1),-dmax≤i,j≤dmax}。在所有的块中,利用匹配准则找到最匹配的块,即B(I,J,k)的运动补偿块B(I+i0,J+j0,k-1),(i0,j0)T就是运动矢量。匹配准则:均方误差准则(MSE)和平均绝对差值准则(MAD)。块B(I,J,k)和B(I+i,J+j,k-1)的MSE和MAD定义分别为:
MSE(i,j)=1/MN ∑_(n=0)(N-1)▒∑_(m=0)(M-1)▒〖[S(I+n,J+m,k)-S(I+i+n,J+j+m,k-1)]〗2
MAD(i,j)=1/MN ∑_(n=0)(N-1)▒∑_(m=0)(M-1)▒〖|S(I+n,J+m,k)-S(I+i+n,J+j+m,k-1)|〗
以上两个匹配准则都属于最小准则,取值越小越匹配。使用通用准则符号Crit。

最简单也是最准确的运动估计算法是全搜索算法,但运算太复杂,选择使用快速算法。
算法1 二维对数搜索算法
二维对数法TDL:
1、算法思想。
二维对数搜索法是从原点开始,以十字形分布的五个点构成每次搜索的点群。通过快速搜索跟踪MBD点。
2、算法描述。
step1:从原点开始,选取一定的步长,在以十字形分布的五个点处进行块匹配计算并比较。
step2:若MBD点在边缘四个点处,则以该点作为中心点,保持步长不变,重新搜索十字形分布的五个点;若MBD点位于中心点,则保持中心点位置不变,将步长减半,构成十字形点群,在五个点处计算。
step3:在中心及周围8个点处找出MBD点,若步长为1,该点所在位置即对应最佳运动矢量,算法结束;否则重复step2。
3、算法分析。
TDL算法搜索时,最大搜索点数为2+7log2W,这里W表示最大偏移量dXmax。若发现新的十字形点群的中心点位于搜索区的边缘,则步长也减半,后来有人提出应该在搜索的每个阶段都将步长减半。所有这些改动都是为了使算法搜索范围很快变小,提高收敛速度。TDL算法的前提是假设搜索区内只有一谷点,如果搜索区内存在多个谷点时,该方法找到的可能是局部最小点。不能保证找到全局最优点也正式最大部分快速搜索算法的通病。
算法2 三步搜索算法
三步搜索法:
1、基本思想。
TSS算法的基本思想是采用一种由粗到细的搜索模式。从原点开始,按一定步长取周围8个点构成每次搜索的点群,然后进行匹配计算,跟踪最小块误差MBD点。
2、算法描述。
step1:从原点开始,选取最大搜索长度的一半为步长,在周围距离步长的8个点处进行块匹配计算比较。
step2:将步长减半,中心点移到上一步的MBD点,重新在周围距离步长的8个点处进行块匹配计算并比较。
step3:在中心及周围8个点处找出MBD点,若步长为1,该点所在位置即对应最佳运动矢量,算法结束;否则重复step2.
3、算法分析:
TSS算法搜索时,整个过程采用了统一的搜索模板,使得第一步的步长过大,容易引起误导,从而对小运动效率较低。最大搜索点数为1+8log2W,当搜索范围大于7时,仅用3步是不够的,搜索步数的一般表达式为log2(dmax+1)。
算法3 新三步法
新三步搜索法NTSS
1、基本思想。
NTSS利用运动矢量的中心偏置分布,采用具有中心倾向的搜索点模式,并应用中止判别结束,减少搜索次数。
2、算法描述。
step1:搜索17个点(分外环和内环,外环8个点,内环9个点),如果MBD点为搜索窗中心,算法结束;如果MBD点为搜索窗中心,算法结束;如果MBD点在中心点的8个相邻点,则进行step2.否则进行step3。
step2:以上一步MBD点为中心,使用3x3搜索窗进行搜索,若MBD点在搜索窗中心,则算法结束;否则重复step2.
step3:执行TSS法的step2和step3,算法结束。
3、算法分析。
运动矢量通常总是高度集中分布在搜索窗的中心位置附近。NTSS采用中心倾向的搜索点模式不仅提高了匹配速度。而且减少了陷入局部极小的可能性;而采用中止判别结束则大大降低了搜索复杂度。提高了搜索效率。
可以适当考虑四步搜索算法和菱形搜索

搜索块的大小
运动估计有空间相关运动估计,变块大小的分层运动估计,分数像素运动估计。
空间相关运动估计:利用图像帧中相邻块之间的运动相关性,降低运动估计的搜索范围。搜索范围根据Crit的值自适应变化,区分标准为两个门限值。

猜你喜欢

转载自blog.csdn.net/npc1872474830/article/details/89093342
今日推荐