错误隐藏学习手记(四)

来源:互联网 发布:韩国tvn软件下载 编辑:程序博客网 时间:2024/06/06 02:30

帧间错误隐藏算法整理:

1、零矢量拷贝错误隐藏算法:当图像帧某一宏块丢失之后,直接拷贝当前帧的前一帧的相同位置的宏块过去。当然,这种算法对于非激烈运动的视频还是可以的。算法简单,复杂度低,实时性比较好。缺点就是对于局部剧烈运动或者剧烈运动的视频会有很大的误差,严重影响观赏效果。

2、边界匹配错误隐藏算法(BMA,boarder match algorithm):利用丢失宏块与其周围宏块的相关性,取周围上、下、左、右宏块的运动矢量作为一个运动矢量集,使用最小边界匹配误差(SAD)规则,寻找最优运动矢量,将这个最优运动矢量对应参考帧的宏块来补偿当前帧中丢失宏块。适用于运动的场景,适应性不错。

具体实现:

计算每一个方向的运动矢量并计算出最优SAD:



3、采用二像素外边界匹配算法:

   

         公式如下:

    

    

           SAD = min(Du,Dd,Dl,Dr),哪一个是错误的,那么那个就不存在。得到最小的之后就在参考帧中找到由缺失帧位置移动SAD后的那一帧。


4、多参考帧:

       H.264允许有5帧参考帧,可以用来寻找最佳运动补偿。但是这样的话实时性不太好,所以我们采用两帧即可。

       计算得到参考帧1的运动补偿向量为mv1;参考帧2的运动补偿向量为mv2。在这种情况下采用SAD更小的运动补偿矢量进行丢失宏块重建。

                


5、扩展运动矢量集:

       扩展后的运动矢量集:

                            

        Sc 就是当前帧的运动矢量,包括上下左右以及零矢量。SP1 为第一参考帧的相同位置的宏块运动矢量,以及上下左右相邻宏块的矢量。

        SP2为第一参考帧的相同位置的宏块运动矢量,以及上下左右相邻宏块的矢量。之前的都只有Sc。


6、运动激烈的时候采用线性插值进行:

       那么什么时候我们认为是运动激烈呢?

       对丢失块错误隐藏时先寻找最优运动矢量,确定最优运动矢量后,设定阈值为整帧正确接收宏块运动矢量的均值(erc_mvperMB)。当最优运动矢量大于这个阈值时,可以判定丢失宏块为激烈运动宏块,就采用插值法。否则采用运动拷贝补偿算法。


注:对于I帧采用的就是帧内错误隐藏,P帧采用的是帧间错误隐藏。

自适应算法的流程图:



参考论文:


注:以上截图来自于  《基于H_264_AVC改进的时空域错误掩藏算法_吴明坤》

0 0
原创粉丝点击