3.1.2 时域差错隐藏
空域差错隐藏利用图像信息的空间相关性来恢复差错,但是这种相关性是有限的。对于视频序列,相邻帧之间的时间冗余往往更加丰富。时域差错隐藏就是利用视频图像相邻帧之间的这种相关性造成的冗余来进行隐藏。这也是运动补偿预测编码的原理。与编码部分一样,这种隐藏方法的关键是运动矢量的正确估计。
最简单的时域隐藏方法就是直接复制前一帧的同一位置的块,即运动矢量为0。这种方法对于运动平缓的视频比较有效,对于运动剧烈的视频序列,容易大量产生逆视觉信号。直接复制如图6所示。
图6 采用直接复制恢复受损块的示意图
对于丢失的运动矢量估计,已经提出了以下方法[6]:
a)简单地设置为零,对相对较小的运动的视频序列效果很好;
b)使用时域相邻块(如前一帧对应块)的运动矢量;
c)利用空间相邻块的平均运动矢量;
d)利用空间相邻块运动矢量的中位数。
总体来说,这类运动矢量的选择简单,在遇到块丢失时,可以快速地进行隐藏。但是对于运动较快的图像,会造成“方块效应”。
Lam[1]对以上方法做了进一步的改进,提出了基于边界匹配的运动矢量恢复算法(BMA)。这种算法利用图像序列的时间空间平滑性,在上述4种矢量中选出能使丢失块与其周围一个像素宽度边界的误差绝对值之和最小的运动矢量作为最终的运动矢量。如图7所示。
图7 BMA算法示意图
进一步地改进就是将候选集扩大,Bo Yan[2]等提出了一种方法自适应地选择候选集的大小。首先选择若干个运动矢量,以这些运动矢量中最大的和最小的为界,所有矢量构成矢量集。然后再以一定的准则进行参考与评估,选择最适合的矢量。Tao[7]根据图像内容活动度的不同将一个宏块分成若干小宏块进行隐藏。而文献[14]提供了一种基于重叠运动矢量的搜索算法。
还有一种改进是对BMA算法的优化。Kim[11]将候选集选为时域或空域上相关的所有运动矢量,而BMA算法则采用了加权方式。文献[12]中也提出了一种结合预掩盖和边框匹配的算法。
上面的方法对于景物只是平移的场合非常适合,但是如果景物出现变形就会有一定的失真了。可以采用对每一个像素都存有运动矢量的方法。但是这样运算量很大。
总的来说,时域差错隐藏不太适合处理运动场景剧烈变换或切换的情况,这些情况可以用空域差错隐藏来处理。所以,就有一些时空域自适应的差错隐藏算法。
3.1.3 时空域差错隐藏
时域差错隐藏的块替代容易造成“方块效应”,空域差错隐藏适合于高速运动或不规则区域,但是通常无法处理好纹理细节的恢复。这两种算法各有不足,但是结合在一起有可能弥补彼此的不足。
时空域混合有两类方法:一是根据某一判断标准在时域和空域隐藏算法中选择较好的一种重建,如文献[8]中Sun提出了根据空间复杂度和运动状况来判断选择哪一种方法,当空间复杂度高时选用空域隐藏;还有一种是先利用时域隐藏进行初步处理,然后再用空域隐藏进行优化。如文献[9]中提出的先自适应选择时域或者空域算法,再用MAP方法进行优化。 H.264差错隐藏技术研究及改进+文献综述(9):http://www.youerw.com/jisuanji/lunwen_3067.html