。。。。。etc 时域错误隐藏个人理解

三个文件名以 erc 开头的文件就是 EC 相关的文件。EC 的入口在 exit_picture 函数中,从 ercStartSegment 开始到 ercConcealInterFrame 结束。你自己做一个丢包之后的码流,把程序跑起来跟踪一下 EC 过程,慢慢分析代码。

 

错误隐藏过程在整个帧全部解码后,而且位于环状滤波过程之后。

       因为宏块按扫描顺序一行一行的编解码,错误码流会影响一连串的宏块。因此,错误隐藏时,一般在当前帧解码结束后,一列一列的错误隐藏。又由于人眼对图像中间区域更敏感,故常从两侧边缘开始对宏块列进行掩藏,再逐渐向中央逼近,掩藏块的运动矢量可以进一步为后续处理块提供预测信息,从而这样做使得图像中间误码块的恢复效果更好些

       所谓时域错误隐藏,就是根据正确解码的邻块或前帧块信息,推测得到合适的当前误码块运动矢量。该运动矢量对应的参考块直接拷贝至当前块位置,就完成了错误隐藏过程。可见,关键问题在于如何找到合适的运动矢量

        最简单的时域错误隐藏,就是设定每个错误宏块的运动矢量都是零,这样对于静止块和准静止块有效,对于运动较大的块这出现了明显的质量下降。一个稍稍改进的方法是:设定其运动矢量为邻块运动矢量、或它们的中值、或均值运动矢量,对于运动矢量场连续的序列效果较好,对于复杂运动序列依然效果较差。

       改进方法1:得到多个候选运动矢量。比如,所有的邻块(4领域或8领域)运动矢量、它们的中值和均值、运动矢量、前一帧对应块运动矢量....。然后根据匹配准则选择代价最小的运动矢量。常用的准则就是边界匹配法(BMA,boundary matching algorithm),就是选择边界像素和误码块周围相邻的像素差值最小的块。JM中正是这么做的,它的候选运动矢量只考虑了4邻域的邻块运动矢量和零运动矢量

        改进方法2:方法1中的BMA准则,参与计算差异的像素个数较少,容易受到噪声干扰。而且,如果本来宏块边界就存在物体边缘,BMA的匹配效果将大打折扣。一个替代的准则是外边界匹配法(EBMA,external boundary matching algorithm)。就是计算参考块和误码块的外部相邻像素的差异。

       改进方法3:方法1中得到的运动矢量,一般并不是误码块的真实运动矢量。因此可以用加入运动估计过程,得到更佳的匹配块。

       改进方法4:以往的算法中,一般以整个宏块为单元做错误隐藏(JM中就是这么做的)。可以将宏块分成多个小块(比如4个8*8块),对每个小块分别做错误隐藏,效果更好。但是这样做,会出现一定的块效应。因此,一个更折衷的方法是根据邻块的编码模式推测误码块的隐藏块模式。

       改进方法5:由于H.264中采用了更小的宏块分割模式(最小支持到4*4),这样使得编码后的运动矢量场更佳连续,即块与块的运动矢量相关性更大。可以将误码块分成16个4*4块,每个4*4块的运动矢量由周围宏块的运动矢量插值得到。一般是水平、垂直方向各插值一遍,然后取二者的均值。

       改进方法6:在b、p帧中,也有一定的帧内编码块。同样,错误隐藏的时候,也可以考虑空域错误隐藏方法。关键是如何判断用空域还是时域隐藏。研究比较多的是,对I slice的宏块(第一帧除外)也进行时域隐藏,前提是要判断没有出现场景转换。

补充一点,时域错误隐藏也可以被应用于intra frame。h.264的对于intra-frame的weighted pixel averaging(WPA)插补错误隐藏算法不能取得良好的效果,时域错误隐藏往往能取得比WPA更好的结果。

Q1:风车,能不能推荐几篇文章是讲通过相邻宏块的编码模式推测丢失块类型的???

A:

A New Temporal Error Concealment Method for H.264 using Adaptive Block Sizes

A New Error Concealment algorithm for H.264 Video   Transmission

Q:改进方法3:方法1中得到的运动矢量,一般并不是误码块的真实运动矢量。因此可以用加入运动估计过程,得到更佳的匹配块。不太明白如何进行运动估计,哪位高手指点下

A:就是说在做错误隐藏时采用一种类似于运动估计的方法,比如你有一个丢失的宏块,你可以用这个丢失宏块的临近宏块的边界像素在前一帧中进行边界匹配计算,在 一定的范围内进行遍历。最后得到的边界匹配失真最小的宏块就可以用来替代丢失的宏块。这个过程 和运动估计 有些相似。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/455646.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手机影音第十一天,显示视频缓冲,显示卡顿时的网速,播放系统视频时调用播放器的选择...

代码已经托管到码云,有兴趣的小伙伴可以下载看看https://git.oschina.net/joy_yuan/MobilePlayer一、设置视频缓冲进度显示视频播放进度的效果图如下:灰色的是缓冲的进度。原理:只有播放网络视频时,才有缓冲这个说法,所…

Django之创建应用以及配置路由

Django之创建应用以及配置路由 配置所有IP都可以访问你的项目 1.进入manage.py同级的my_web里面的settings.py的文件 2.在文件的第28行把ALLOWED_HOSTS []改成ALLOWED_HOSTS [*] 注意:*代表的是所有IP都可以访问 创建一个app应用 在终端中,结束项目…

python中opencv是什么_python-opencv的用法

#!/usr/bin/env python # -*- coding:utf-8 -*- # author:love_cat import cv2 # 接收两个参数,一个是文件名,一个值,如果值为1,接收的是彩色图片,如果值为零,接受的是灰度图片。会有一个返回值&#xff0c…

openjudge 14:求10000以内n的阶乘

14:求10000以内n的阶乘 总时间限制:5000ms内存限制:655360kB描述求10000以内n的阶乘。 输入只有一行输入&#xff0c;整数n&#xff08;0<n<10000&#xff09;。输出一行&#xff0c;即n!的值。样例输入100 样例输出933262154439441526816992388562667004907159682643816…

【Tensorflow】卷积神经网络实现艺术风格化通过Vgg16实现

卷积神经网络实现艺术风格化 基于卷积神经网络实现图片风格的迁移&#xff0c;可以用于大学生毕业设计基于python&#xff0c;深度学习&#xff0c;tensorflow卷积神经网络&#xff0c; 通过Vgg16实现&#xff0c;一幅图片内容特征的基础上添加另一幅图片的风格特征从而生成一幅…

抗误码技术

抗误码技术&#xff1a; 视频传输过程中的错误是不可避免的&#xff0c;抗误码技术历来都足视频领域一个研究的热点。H264标准继承r以前视频编码标准中某些优秀的错误恢复工具&#xff0c;同时也改进和创新了多种错误恢复丁具。这些错误恢复的工具主要有&#xff1a;参数集、数…

Linux统计文件行数、字数、字节数

2019独角兽企业重金招聘Python工程师标准>>> 语法&#xff1a;wc [选项] 文件 说明&#xff1a;该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名&#xff0c;则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符…

tkinter中鼠标与键盘事件

tkinter中鼠标与键盘事件&#xff08;十五&#xff09; 本文转自Tynam Yang的博客园 import tkinterwuya tkinter.Tk() wuya.title("wuya") wuya.geometry("300x2001020")bt tkinter.Button(wuya,text鼠标进入打印) bt.pack()def func(event):print(鼠…

html解析のBeautifulSoup

引子&#xff1a; 使用python爬虫对爬取网页进行解析的时候&#xff0c;如果使用正则表达式&#xff0c;有很多局限&#xff0c;比如标签中出现换行&#xff0c;或者标签的格式不规范&#xff0c;都有可能出现取不到数据&#xff0c;BeautifulSoup作为一个专门处理html格式的py…

【Tensorflow】人脸128个关键点识别基于卷积神经网络实现

引言&#xff1a; 卷积神经网络 卷积神经网络最早是为了解决图像识别的问题,现在也用在时间序列数据和文本数据处理当中,卷积神经网络对于数据特征的提取不用额外进行,在对网络的训练的过程当中,网络会自动提取主要的特征.卷积神经网络直接用原始图像的全部像素作为输入,但是内…

python 爬虫 包_python爬虫学习之路-抓包分析

利用浏览器抓包&#xff0c;是爬虫中的很实用的技能。在爬虫编程之前&#xff0c;我们要对抓取的目标页面有所了解&#xff0c;比如浏览器的这个请求这个页面中间都经历了什么&#xff0c;数据是怎么发送和返回的。 抓包的作用 我把抓包分析的作用简单列一下&#xff1a; 分析请…

帧间EC原理和过程

出错的宏块&#xff08;图中灰色表示&#xff09;根据上、下、左、右四个方向相邻宏块的不同分割情况及预测类型进行插值。将最后的结果中进行比较&#xff0c;选取边界像素差值之和最小者为最优的EC方案。其步骤为&#xff1a; 1、判断相邻宏块左上角8*8块的预测模式是否大于R…

Maven依赖的是本地工程还是仓库jar包?

相信大家都碰见过maven配置的依赖或者是jar包或者是工程&#xff0c;在开发的过程当中&#xff0c;我们当然需要引入的是工程&#xff0c;这样查看maven依赖的文件的时候&#xff0c;就能直接查看到源码。 一、本地工程依赖 举个例子&#xff0c;其架构如下所示&#xff08;以下…

关于django新版本无法使用MySQL数据库的问题

关于django新版本无法使用MySQL数据库的问题 参考这里 稍微记录下Django2.2使用MariaDB和MySQL遇到的坑 现在演示一下整个流程吧 1.创建项目和应用 PS&#xff1a;你也可以使用PyCharm直接创建项目 2.注册应用 先把刚刚创建的应用添加进去 3.配置MySQL或者MariaDB 4.PyMySQL替…

[转]Spring事务tx:annotation-driven/

在使用SpringMVC的时候&#xff0c;配置文件中我们经常看到 annotation-driven 这样的注解&#xff0c;其含义就是支持注解&#xff0c;一般根据前缀 tx、mvc 等也能很直白的理解出来分别的作用。<tx:annotation-driven/> 就是支持事务注解的&#xff08;Transactional&a…

【自动化测试】整理各种测试开发工具!持续更新

收集和整理各种测试工具&#xff0c;自动化测试工具&#xff0c;自动化测试框架&#xff0c;觉得有帮助记得三连一下。欢迎提交各类测试工具到本博客。 通用测试框架 JUnit: 最著名的xUnit类的单元测试框架&#xff0c;但是不仅仅可以做单元测试。TestNG: 更强大的Java测试框架…

python连接sql数据库_python连接sql server数据库实现增删改查

简述 python连接微软的sql server数据库用的第三方模块叫做pymssql&#xff08;document&#xff1a;http://www.pymssql.org/en/stable/index.html&#xff09;。在官方文档可以看到&#xff0c;pymssql是基于_mssql模块做的封装&#xff0c;是为了遵守python的DBAPI规范接口.…

es5.0 安装head插件

es5.0的安装和之前的版本有些区别,我的电脑用plugin install 没成功, 查了一下资料,说是可以用grunt进行安装,启动; 1,先安装grunt: grunt是一个很方便的构建工具&#xff0c;可以进行打包压缩、测试、执行等等的工作&#xff0c;5.0里的head插件就是通过grunt启动的。 npm ins…

Django后台项目之用户管理功能开发流程

项目功能开发流程 1 先写列表页&#xff08;加载出来数据就行&#xff09; ob User_vip.objects.filter(is_del004001).order_by(-cts)2 写添加功能 2.1 创建addOrDoadd视图方法 2.2 添加访问addOrDoadd的路由 2.3 在index.html页面吧添加的按钮的链接不全 <a style&…

套接字 资料查阅

(3)套接字(socket) 一个完整的网络应用程序包括客户端和服务器两个部分。网间通信进程需要由两个进程组成&#xff0c;并且只能用同一种协议。也就是说&#xff0c;不能在通信的一端使用TCP协议&#xff0c;而另一端则用UDP协议。一个完整的网络通信需要一个五元组来标识…