三个文件名以 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:就是说在做错误隐藏时采用一种类似于运动估计的方法,比如你有一个丢失的宏块,你可以用这个丢失宏块的临近宏块的边界像素在前一帧中进行边界匹配计算,在 一定的范围内进行遍历。最后得到的边界匹配失真最小的宏块就可以用来替代丢失的宏块。这个过程 和运动估计 有些相似。
分享到:
相关推荐
一种适用于H.264时域错误隐藏的自适应算法,熊春彬,张有志,为提高视频通信中重建图像的质量,根据H.264标准的特点,提出了一种基于多分割模式自适应加权叠加的时域错误隐藏算法。首先对外边�
为了减小视频传输中的错误对解码端重建视频质量的影响,提出了一种使用于H.264的基于运动物体的时域错误隐藏算法。分析丢失宏块相邻宏块的运动矢量及灰度值分布,对平坦区域及灰度一致的运动区域先进行错误隐藏,...
该方法先将丢失块划分成前景块和背景块,对前景块采用基于压缩感知的错误隐藏法来恢复,而对背景块恢复则采用直接从时域参考帧或视点间参考帧拷贝的方法。实验结果表明,本文方法很好地解决了受损视频图像的修复问题...
1 掌握时域连续信号经理想采样前后的频谱变化,加深对时域采样定理的理解 2 理解频率域采样定理,掌握频率域采样点数的选取原则
时域离散信号和 时域离散信号和 时域离散信号和时域离散信号和时 域离散信号和
用于信号处理过程中的信号特征提取,主要针对时域特征的提取
比较简单的时域平均程序,对仿真信号进行时域平均处理,效果非常明显。
对正弦信号的时域频域补零,深刻理解补零
时域同步平均,A为振动数据,B为方位角数据,新手上路请大家多多指教。
数字信息处理 时域离散信号和时域离散系统
滚动时域控制原理
时域反演的介绍,基本理论及基本的代码模块,包括基础的仿真图像
利用时域有限差分计算电磁场,采用时域算法计算
时域有限元啊
滚动时域代码需要的同志可以自己下载学习,说明很详细,希望有帮助。
第一章 绪论以及时域离散信号和时域离散系统
详细介绍了时域相关的相关理论知识,帮助对时域相关的知识进行学习
时域信号功率谱图
MATLAB时域有限差分法程序。有利于理解fdtd原理,可直接运行的。
提取了将近10种时域特征值,包括平均值,方差,均方根,四分位间距等