错误隐藏学习手记(二)

2023-11-14

错误隐藏技术是在H.264在解码端后端的一种技术,用于恢复某一丢失帧或者宏块。一般来说每个宏块是16*16。


Step1:我们怎么知道是哪一块宏块丢失了呢?

    这就和视频编解码H.264有些关系了。JM86中丢失块的确定取决于编码端灵活宏块重排模式(FMO)。FMO将一幅图像中的宏块进行重排,重排后映射到不同的片组中,以片为单位进行传送。解码端检测片是否丢失,如果丢失则根据FMO模式确定此丢失片包含的所有 宏块在一幅图像中的具体位置。所以我们进行错误隐藏的时候就可以知道具体哪一些宏块丢失了。(丢失块周围最多可存在八个相邻块,一般而言,丢失块的上、下、左、右四个相邻块与其相关性较大 ,而这四个块中与丢失块最邻近的8行或8列像素与其相关性最大。为简化计算,只对8×16或16×8相邻块的像素点作边缘检测。)


Step2:错误隐藏分为帧内错误隐藏(intra frame)和帧间错误隐藏(inter frame),我们根据什么来判断是否进行哪一种呢?

    这里要用到一种检测:Frame-Level Scene-Change Detection。在MPEG系统中,分为I帧(完整的数据,是P帧和B帧的参考),P帧(根据前一帧和运动预测(motion prediction)得到),B帧是在I和P之间的。在帧的输出过程是采用GOP格式(IBBPBBPBBPBBI)这样的话如果开始的I帧损坏后面的B,P全部损坏,直到遇到下一个B帧。P帧损坏的话,接下来的P帧,B帧都会损坏。B帧的损坏不会导致接下来的帧发生问题,因为它本身不会作为运动向量的参考。对于I帧,我们计算两个帧之间的总的difference。如果太大的话采用帧内错误隐藏,否则采用帧间错误隐藏。对于P帧,采用intra prediction mode information method,若该帧大部分都采用了intra-coded,那么就表示scene-changed,就要采用帧内错误隐藏。


参考论文:

S. C. Hsia, S. C. Cheng, and S. W. Chou, “Efficient adaptive error concealment technique for video decoding system,”IEEE Trans. Multimedia, vol. 7, no. 5, pp. 860–868, Oct. 2005.

S. C. Hsia and S. W. Chou, “VLSI implementation of high-performanceerror concealment processor for TV broadcasting,” IEEE Trans. Circuits Syst. Video Technol., vol. 17, no. 8, pp. 1054–1064, Aug. 2007.
D. Agrafiotis, D. R. Bull, and C. N. Canagarajah, “Enhanced errorconcealment with mode selection,” IEEE Trans. Circuits Syst. Video Technol., vol. 16, no. 8, pp. 960–973, Aug. 2006

附:还有一些方法:通过判断最优运动矢量的大小判断视频帧图像区域运动是否发生剧烈运动。若发生剧烈运动,则采用帧内恢复,否则采用帧间恢复(拷贝最优运动矢量对于宏块到相应丢失宏块) -> 参考:基于H_264_AVC改进的时空域错误掩藏算法_吴明坤


Step3:接着就进行帧间和帧内错误隐藏了,因为帧间错误隐藏更简单,那么我们先来做帧内错误隐藏。

       对于帧内错误隐藏又有很多种情况。

       可采用空间加权像素平均算法和方向插值(线性插值,双向插值,三次样条插值,拉格朗日插值,贝塞尔曲线)等等。

       请参考上一篇学习手记:http://blog.csdn.net/c602273091/article/details/43369863


Step4:进行帧间错误隐藏。

                   基于块运动轨迹相似性及空域统计相关性的受损运动修复错误隐藏算法复杂度比较高恢复效果好实时性差的方法。

                   边界匹配算法:复杂度低实时性好但是对搜索最优运动不够精确,在针对剧烈运动时H.264没有相应处理,这是H.264自带的算法。

                   别的方法:外边界匹配,增强运动矢量集,扩大参考帧范围,更改计算最小误差等方法来提高丢失宏块的匹配精确程度。  



          这样的话,我们大概就可以得出整个错误隐藏的流程图:

上图来自于:
Efficient Spatial-Temporal Error Concealment Algorithm and Hardware Architecture Design for H.264/AVC Guan-Lin Wu, Ching-Yi Chen, Tung-Hsing Wu, and Shao-Yi Chien, Member, IEEE





本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

错误隐藏学习手记(二) 的相关文章

  • npm切换源,nrm安装、配置及使用

    文章目录 人工智能福利文章 1 速度太慢 2 手动切换太麻烦 3 切换npm源推荐使用nrm 3 1 nrm安装方法 3 2 查看可选npm源 3 3 切换npm源 3 4 增加npm源 3 5 删除npm源 3 6 测试npm源速度 脑筋
  • 【UE4】【C++】PlayerController、AIController获取玩家对应的Pawn

    先创建一个基本的C 类 Tank 因为要对Tank进行各种操作 移动 寻找目标 所以选择了Pawn类型 PlayerController 再创建一个C 类 TankPlayerController 用以控制玩家操作的对象 Tank 创建好后
  • 创业公司融资,股权是如何一步步被稀释的?

    转自 https 36kr com p 5054730 融资过程中 股权的稀释总是难免的 本文作者 新元 股书 Kapbook 微信ID Kapbook 完整的股权激励在线解决方案 很多人并没有意识到 他们在加盟公司时拿到的期权比例 并非最
  • 记一次事务报错问题 Transaction synchronization is not active

    问题场景 在一次请求的返回结果中出现了这个错误信息 Transaction synchronization is not active 意思是 事务同步器没有激活 看着不像是业务代码里返回的提示 猜测是spring事务框架报出来的异常没有被
  • 基于SRS的视频直播服务器搭建

    srs提供的一个demo实例 包括实时流的rtmp播放 hls播放 视频会议 ffmpeg视频变换 jwplayer播放 OSMF播放 vlc播放等等功能 下面是在Centos 6 x环境下的编译搭建流程 1 下载或更新源码或者使用git更
  • MVC项目案例

    MVC项目 1 需求 访问链接 http localhost 8080 car get 得到JSON数据 name 保时捷 color 红色 price 641000 0 2 项目结构 cn tedu 放启动类 存子包 cn tedu se
  • [nodejs] 运行的nodejs代码走代理连接外网

    1 背景 nodejs后端调用三方服务sdk 运行主机在公司内外有网址过滤 无法连接到三方服务地址 设置代码走代理后服务调用正常 2 方法 修改node modules rest facade src Client js代码 让网络连接能够
  • Xorm 使用手册,增删改查之查

    Xorm 使用手册 增删改查之查 Xorm轻松学习 个人博客站点 简书 猫轻王 https www jianshu com u 6cce817646be 掘金 猫轻王 https juejin cn user 164091868034745

随机推荐

  • R 实践深度学习

    特点 将帮助您了解流行的深度学习架构及其在 R 中的变体 并为它们提供现实生活中的示例 涵盖了用于预测和分类的基本深度学习技术和概念 将了解神经网络 深度学习架构以及使用 R 实现深度学习的基础知识 将引导您使用重要的深度学习库 如 Ker
  • 4.28黄金双线收官会跌吗?今日如何稳健布局?

    近期有哪些消息面影响黄金走势 双线收官黄金多空该如何研判 黄金消息面解析 现货黄金价格周五 4月28日 小幅收跌 在美国公布第一季GDP增速低于预期后 金价在过去五个交易日内第四次收于2000美元下方 在今年初高通胀 利率继续上行和银行业危
  • 数字通信实验1 调制解调的matlab实现_实验要求

    实验1 调制解调的matlab实现 一 实验目的 掌握2ASK 2FSK 2PSK 2DPSK的调制解调实现流程 二 实验内容 完成2ASK相干解调的收发端完整程序 并画出已调制信号波形 功率谱密度波形 接收端各关键点波形 分别完成2FSK
  • 经验分享:如何运用R的MICE包对数据集中不同变量采用不同方法及跳过部分变量进行多重插补

    运用R的MICE包对数据集进行多重插补 multiple imputation 遇到两个具体需求 1 只需针对缺失值较高的部分变量而不是全部变量进行填充 但仍想将全部变量纳入数据集中 2 对于不同的具体变量 采用不同的多重插补具体方法 如处
  • 微信小程序——如何获取到输入框的值

    在微信小程序中 可以通过以下几种方式来获取输入框的值 使用 bindinput 绑定输入事件 通过 event detail value 获取输入框的值 具体操作如下
  • 拔叉零件的加工工艺,设计18铣槽的铣床夹具

    目 录 一 序言 1 二 零件的分析 3 1 零件的作用 3 2 零件的工艺分析 3 三 确定毛坯 4 四 工艺规程设计 5 五 夹具设计 14 六 总结 17 七 参考文献 18 一 序 言 机械制造工艺学课程设计使我们学完了大学的全部基
  • mock拦截axios请求,以及axios请求拦截设置token

    直接上源码
  • 投中网发布!持安科技荣登中国企业服务产业最佳投资案例TOP10

    近日 2022年度投中榜发布 持安科技凭借业内领先的零信任产品创新力 出众的方案落地实力及广阔的市场发展潜力 成功入选 投中2022年度中国企业服务产业最佳投资案例TOP10 投中榜 是投中信息秉承专业 严谨 客观 公正的原则 对中国私募股
  • 算法通过村第八关-树(深度优先)白银笔记

    文章目录 前言 1 最大深度问题 2 判断平衡树 3 最小深度 4 N叉树的最大深度 总结 前言 提示 我的整个生命 只是一场为了提升社会地位的低俗斗争 埃莱娜 费兰特 失踪的孩子 这一关我们看一些比较特别的题目 关于二叉树的深度和高度问题
  • 笔记-Flutter 之点击空白处取消TextField焦点

    本人是做iOS开发的 点击空白处取消TextField焦点这个需求是非常简单的 在学习Flutter过程中 面对这个需求走了不少弯路 现在得到了一个感觉不错的解决方案 这里和大家分享一下 也希望对小伙伴们有所帮助 GestureDetect
  • 程序设计语言-软件设计(二十一)

    数据结构与算法 二十 快速排序 堆排序 四 https blog csdn net ke1ying article details 129269655 这篇主要讲的是 编译与解释 文法 正规式 有限自动机 表达式 传值与传址 多种程序语言特
  • Taylor公式和插值多项式

    Taylor公式和插值多项式 笔记总结自 复旦大学 陈纪修 数学分析 课程 第5章第3节 Taylor公式和插值多项式 文章目录 Taylor公式和插值多项式 一 Taylor公式 带Peano余项的Taylor公式 带Lagrange余项
  • java代码实现分页_Java分页实现(示例代码)

    首先我们要清楚java分页的思路 第一我们要明白前端页面需要向java后台传递当前页码数以及每页显示多少条数据 第二java后台代码需要向前端页面传递每页显示的数据 以及总条数以及总页数 代码如下 首先我们要创建一个分页类用来存储数据 pu
  • 汇编——寄存器的分类和功能

    在汇编中 个人感觉最重要的部分其实就是寄存器了 这次我们了解一下寄存器的分类和功能 先说一下寄存器是什么吧 其实就是一部分的空间 我们可以使用这些空间来存储内容 寄存器的空间都是16位的 80x86中 后来有增长 也就是1个字的空间 堆栈则
  • Google Earth Engine(GEE) 03-矢量数据类型

    Google Earth Engine GEE 03 矢量数据类型 GEE基本语法 Geometry Dictionary Feature和FeatureCollection之间的关系 Dictionary Feature 常用函数 Fea
  • day--03springmvc

    回顾 1 响应 页面跳转 controller方法的字符串返回值 使用Model对象进行数据共享 默认是存储在request域对象中 使用ModelAndView对象 直接响应数据 controller方法返回的是普通字符串 control
  • 记录ncnn导出模型的权重读取的一点思路

    ncnn的 param和 bin文件的读取 参考这个基本上可以触类旁通 前言 大概找了找全网使用ncnn框架导出权重模型的博客 可以参考的只有2篇 一篇过时了 没法儿使用 另一篇的函数重载似乎提及了也没什么用处 因为另一篇提到的函数重载事实
  • 旧电脑 存储服务器 系统,爷爷级PC,用白菜价内存搭建内存硬盘操作系统,老系统飞起来。...

    认识众多玩家高手 拆客 DIY爱好者 查阅更多资源 一起学习技术知识 您需要 登录 才可以下载或查看 没有帐号 立即注册 x 爷爷级PC 用白菜价内存搭建内存硬盘操作系统 老系统飞起来 系统配置 内存硬盘1 png 55 33 KB 下载次
  • nodejs:webstrom调试及使用nodemon

    参考 webstrom调试及使用nodemon 提示 如果项目有nodemon json 参数类似上图 运行时可能会提示 ts node不是内部或外部命令 也不是可运行的程序 这时候需要 npm i g ts node
  • 错误隐藏学习手记(二)

    错误隐藏技术是在H 264在解码端后端的一种技术 用于恢复某一丢失帧或者宏块 一般来说每个宏块是16 16 Step1 我们怎么知道是哪一块宏块丢失了呢 这就和视频编解码H 264有些关系了 JM86中丢失块的确定取决于编码端灵活宏块重排模