错误隐藏学习手记(四)
来源:互联网 发布:韩国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改进的时空域错误掩藏算法_吴明坤》
- 错误隐藏学习手记(四)
- 错误隐藏学习手记(一)
- 错误隐藏学习手记(二)
- 错误隐藏学习手记(三)
- 错误隐藏学习手记(五)
- 错误隐藏学习手记(六)
- 错误隐藏学习手记(七)
- 错误隐藏学习手记(八)
- 《thinking in java》学习手记(四)
- RESTful GeoWeb学习手记(四):GeoRSS介绍之二
- RESTful GeoWeb学习手记(四):GeoRSS介绍之二
- 【学习手记】U3D实战之DontTouchWhite(四)
- jQuery学习(四) 效果——隐藏/显示
- UML学习手记(四):用例分析之范围工具“内/外”列表
- UML学习手记(四):用例分析之范围工具“内/外”列表
- 初窥Windows内核——学习Windows Research Kernel手记(四)
- GeoServer学习手记(四):Servlet及HTTP派发过程之一
- GeoServer学习手记(七):Servlet及HTTP派发过程之四
- IOS学习笔记 第1篇 OC面向对象(一)
- vs2010 libcurl 7.21.3 zlib 1.2.5 openssl 1.0.0c 编译全过程
- NYOJ 题目1013 除法表达式(数学)
- [Java] 对象的强, 软, 弱和虚引用
- 相同源代码的html文件在本地和服务器端被浏览器请求时,显示的效果不一样!!!
- 错误隐藏学习手记(四)
- ASPX EVAL函数的运用
- C#编程中(ASP.Net)获取当前网页路径的所有方法集合总结
- Leetcode NO.104 Maximum Depth of Binary Tree
- Codeforces Round #289 (Div. 2, ACM ICPC Rules) C题
- 自制操作系统 第3步
- [转]内容匹配广告投放技术
- 用来获取页面背景的书签(页面背景是DataURI)
- Insertion sort, select sort, Quick sort and Merge sort