图像块平坦测度与系数扫描方式选择
摘要:本文介绍了图像块平坦测度的概念,提出图像的水平测度和垂直测度,并在此基础上提出了简单有效的扫描方式选择策略。
关键词:图像块 平坦测度 扫描模式 H.263
1. 问题的提出
在众多的图像编码建议中,如H.261/H.263帧内图像编码都需要通过DCT变换,将图象从空间的表达式/空间域转化为频谱表达式/频率域。这样变换后,只需要少量的数据点就可以表示图象。并且DCT产生的系数很容易被量化,可获得好的块压缩。在量化后,图像矩阵中的大多数DCT系数都被截取为零值。在这些图像块的DCT系数的游程编码前,一般都要按一定并且可选的方式对系数进行重新排列,排列的目的是增加游程编码的效率,使得尽可能多的零相连。在H.263建议中,在高级帧内编码模式中给出了一些指导性的建议和扫描的顺序,但是建议本身并不提供如何实际地选择系数扫描模式。而且是不是只有在高级帧内编码模式中才能应用多种扫描模式,建议并未指明。
本人在实际的视频压缩编码研究和应用中发现,扫描方式的选择与图像的平坦测度有直接的关系,并且通过平坦测度测定和图像块方差可以简单地确定系数扫描方式。并且正确选择率较高。同时把这一扫描模式选择推广到任何帧内编码宏块。
2. 块的平坦测度
块的平坦测度(Flatness measurement)指块的像素在水平和垂直两个方向上的综合分布特点。假定块的大小为 大小。块的平坦测度定义如下:
其中和分别是块的垂直和水平平坦测度,a、b是比例因子,它们的作用是调节水平和垂直平坦测度以获得子块的综合平坦测度。一般,和分别定义如下:
其中:和定义如下:
其中FM()为相邻像素平坦测度函数,定义如下:
T是控制阈值,控制阈值的确定由人类视觉系统对于像素亮度变化的敏感度决定。一般而言,阈值可以由实验的出。对于控制阈值的选择是获得优良编码性能的关键,控制阈值的选择依赖于图像块本身的起伏特性,图像的起伏特性可以由图像像素的方差表征。如果图像的像素的方差较大,则阈值也要较大,否则,方差较小,阈值也小。方差的计算可以由下式完成:
其中:
在实际计算时可以简化为:
得到方差后就可以用实验的方法获得控制阈值T,本人在实验中得到的经验公式为:
另外控制阈值与量化参数也有一定的关系,直观的分析表明,控制阈值大,子块的平坦度小,控制阈值小,子块的平坦度大,,因为控制阈值与图像的方差为线性关系。通过对HVS(Human Visual System)的分析,HVS对平坦区域比对非平坦区域更加敏感,因此如果一个块的平坦测度较大,就要采用精细量化,反之则采用粗糙量化。通过平坦度和控制阈值的关系我们可以调整量化参数,从而有效地分配码位,达到较好的图像质量。
3. 系数扫描方式的选择策略
可以通过测度图像块的平坦测度来决定对于子块的扫描方式。在H.263标准的高级帧内编码方式中有三种扫描方式:ZigZag Scan(暂且称之为Z形扫描)、Alternate-Horizontal Scan(称之为轮流水平扫描) 和Alternate-Vertical Scan(称之为轮流垂直扫描)。但是我们可以把这种做法推广到一般的编码块中。一般而言,对于原始图像块采用这种扫描选择策略获得的较好的编码性能,而帧差信号的分布随机性较大,一般适合Z形扫描。当然,如果采用也可以在一定程度上提高编码效率。
Z形扫描 子块中所有频率分量都比较均匀,这种情况适合Z形扫描。扫描路径见图1。
轮流水平扫描 如果块中包含较强的水平频率分布,也就是非零DCT系数主要集中垂直方向的低频部分。表现在像素亮度上则是块在垂直方向上较为平坦。扫描路径见图2。
轮流垂直扫描 如果子块中包含较强的垂直频率分布,也就是非零DCT系数主要集中水平方向的低频部分。表现在像素亮度上则是块在水平方向上较为平坦。扫描路径见图3。
具体确定扫描方式的策略如下:
1) 如果水平平坦测度和垂直平坦测度之差小于DIST,采用ZigZag扫描。否则转2。之所以采取这种方案是因为几乎一半以上的图像块适合ZigZag扫描。
2) 如果水平平坦测度和垂直平坦测度之差大于等于DIST,则选择较小的平坦测度作为扫描的方式。例如,水平测度小于垂直测度,就选择水平扫描方式。
DIST称为测度失真,它表征在平坦度测定过程中可能出现的误差。这里有个问题就是如何确定DIST,DIST一般在通过实验得到,量化参数和图像方差
决定它的取值,其值一般在[5,9]中间取值。通过DIST的选取能明显提高扫描模式的选择的正确率。DIST值取得大,有利于ZigZag扫描的正确选择,而DIST取值小,有利于另外两种扫描的正确选择。
以上对于DIST的选择是静态的。另外,可以设计一个函数,,其中是图像的垂直和水平平坦测度,是图像的方差,Q是图像的量化参数。
由于平坦程度的测定比较粗糙,控制阈值的确定也只是从统计意义上得出,因此通过上述方法得到的扫描模式不可能保证总是效率最好的编码,有时候会出现相反的情况,但是将上述方法应用于帧内编码宏块时命中率一般大于65%。
方差的计算量较大,难以在实时应用中使用。但是考虑到原始图像的连续性可以计算宏块的方差,在实际操作时只抽取部分像素作为样本,从而减少