• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 无线通信 > 技术文章 > 高效的H.264误码掩盖方法--数据隐藏

高效的H.264误码掩盖方法--数据隐藏

录入:edatop.com     点击:

摘要: H.264视频流采用熵编码,因此码流中很小的传输错误可能造成接收端码流质量的急剧下降.因此误码掩盖技术是近年来值得研究的课题。本文分析了几种混合的误码掩盖方法,以及基于数据隐藏的误码掩盖方法。数据隐藏方法在编码端提取当前帧的重要数据并嵌入到参考帧;解码端,若有损宏块的重要数据能够被正确的提取,则利用提取到的重要数据来掩盖误码。本文最后提出数据隐藏的发展方向。

关键词:误码掩盖 数据隐藏

一、 H.264/AVC视频压缩标准及抗误码技术

H.264标准是由运动图像专家组MPEG和ITU下属的视频编码专家组联合制定的新一代低比特率视频压缩编码标准。与以往的标准相比,它采用了更多的先进技术,使得在同样的码率下运用H.264标准编码可以获得更好的主客观质量。但同时,由于H.264新标准的高效率压缩编码,压缩视频流在传输过程中对信道误码也更敏感,即使单个突发性错误,也可能严重干扰接收端的正常解码,造成恢复视频质量的急剧下降。为此,H.264新标准采用了多种用于增强压缩视频流抗误码能力的编码技术,以保证恢复视频流的质量。

在H.264/AVC中,不是用惯常用的DCT变换,而是以4*4的块为单位,用一个4*4的整数DCT来避免传输失调。H.264/AVC还提供了许多加强抗误码性能的方案,如1)可变尺寸运动补偿2)1/4采样精度运动补偿 3)多参考帧运动补偿 4)对帧内编码的多方向空间预测。5)更多有效的熵编码如CAVLC和CABAC 6)更多灵活的编码特征,如弹性片(slice)尺寸、弹性宏块排序(FMO)。

二、解码端误码掩盖技术分析

误码隐藏技术是在检测到误码后对其通过一定的方法尽量削弱对人的视觉影响。误码隐藏技术并不真正消除传输中的误码,而是尽可能弥补误码带来的视觉损伤[4]。

误码隐藏技术分为时域误码掩盖和空域误码掩盖。时域误码掩盖是基于运动补偿的时间预测,它利用受损块的运动信息对图像进行恢复。即使是采用帧内编码模式的图像块,也允许传输相应的运动矢量,其目的就是为了有效恢复受损图像块。这种方法的局限性在于必须保证运动矢量的正确传输。运动矢量受损情况下,就需要利用空域插值和时域插值的误码隐藏方法。空域误码掩盖方法有:最优平滑恢复、凸集投影法、最小化相邻像素方差,用周围临近像素插值的方法等等。

1·解码端的误码掩盖流程

在这种算法的流程中,解码端从信道上接收来的压缩视频码流首先送到码流语法分析单元,对其进行相应的码流语法分析。如果信道没有误码,则可以送交视频解码单元,正确解

码后的图像数据再送到帧存储器,经过它的缓冲后再送到显示器去显示解码图像;如果信道有误码,则语法分析程序给出出错指示,并将带有误码的数据送到误码定位单元,得到和误

码对应的位置信息,并将此位置信息送到误码掩盖单元。
  一旦语法分析单元给出出错指示,这时就开始了误码掩盖的过程。误码掩盖算法模块一方面接受受损的图像数据,这就是误码模块的输入数据。另一方面,按照误码定位单元给出的误码位置信息,误码掩盖算法在帧存储器的已解码的数据中(可能是本帧图像,也可能是前帧图像数据)寻找和丢失图像部分相似度最大的图像块、宏块或块组来替代因误码而失去的图像部分。这一过程持续到收到新的符合语法的码流为止。从以上误码掩盖的流程可以看出,其中最为关键的部分主要体现在图中的误码掩盖算法单元。
  2.几种混合的误码掩盖方法

这种方法的有三个步骤:

(1)对接收到的数据流进行错误检测;

(2)若有误码则进入误码掩盖模块,根据边界匹配准则选择一种误码掩盖方法,空域或时

(3)最后进行后处理即基于MAP的边界增强算法。

3.论文[8]提出了一种基于子块的时域误码掩盖方法,其中子块时域匹配搜索算法流程如下:

(1)将宏块分成4 个8×8 的块。对每一个块, 根据该宏块周围块的运动信息,选择适合当前块的初始运动矢量。

(2)对不同的块选择不同的匹配边界点, 并将该边界点作为下一步匹配搜索中计算绝对帧差和SAD的参考点。

(3)初始运动矢量确定的位置作为搜索的中心, 采用菱形搜索算法来找到满足最小SAD 时

的运动矢量, 并将其作为最佳运动矢量。

(4)插值得到精度最佳预测块。用最佳预测块代替当前的错误块, 并把得到的最佳运动矢量保存, 作为其他块的参考运动矢量。

以上两种算法提高差错恢复效果的同时, 也增加了算法的复杂度,主要增加在后处理的边界算法、增强边界像素的插值和菱形搜索算法上。

三、基于数据隐藏的误码掩盖技术

基于数据嵌入的误码掩盖方案的原理是,在编码端,提取当前帧的重要数据并嵌入到其他帧,解码端利用这些重要数据对有损帧进行掩盖。

1. H.264默认的误码掩盖方法

对于I帧的空间误码掩盖算法:在有损MB中的每一个像素,都用它的边缘四联通的像素的平均值覆盖。

对于P帧的误码掩盖则有两种:第一种是零运动矢量BNM(最佳临域匹配)算法,第二种是基于运动补偿的BNM算法。判断P帧有损宏块是低速运动的还是快速运动的,计算其平均运动值。低速运动用零运动矢量BNM算法,否则用基于运动补偿的BNM算法.

2.I帧

I帧中的重要数据是宏块的边缘方向。I帧的宏块有两个类型:边缘宏块和平滑宏块。如果一个宏块内没有边缘像素,则它是平滑的,需要提取的数据只有1bit,用来代表它的类型。反之则是边缘宏块。对于边缘宏块它每个边界像素的方向被量化为0到180度之间的E个值,用个bit代表它的主要方向,所以边缘宏块需要提取的数据为bit。

提取了重要数据之后,用宏块交织嵌入算法将其嵌入到下一个P帧的两个不连续遮盖片中。

解码端,收到一个I帧的损坏宏块,如果该损坏的宏块是边缘宏块, 若它的掩盖片被正确接受,则利用它本身的主要边缘方向和2个掩盖片中提取到的数据来进行覆盖.如果2个掩盖片都没有正确接受到,或者该损坏的宏块是平滑的,那么利用h.264默认提供的掩盖方法.

3. P帧

P帧的重要数据包括两类,第一类数据包含了宏块的编码模式、参考帧、运动矢量.P帧中宏块有三种编码模式:跳帧,帧内,帧间.帧内因为用得少在这里忽略描述.对于帧间编码模式,运动估计和运动补偿有7种不同块尺寸:4×4,4×8,8×4,8×8,8×16,16×8,16×16

因此P帧中一个宏块的第一类重要数据最多能有42bit,这是比较大的数据量。因此在嵌入之前要计算每个宏块的优先级,优先级最低的宏块数据则不嵌入。

需要嵌入的数据如下:

(1)1bit用来定义是否插入第一类数据。

(2)若要被嵌入,1bit用来定义编码模式(skip或inter-coded)

(3) 对于inter-coded模式,2bit用来定义用哪种inter-coded模式(inter16*16 inter16*8 inter8*16)

(4)对于一个inter16*16的MB或inter-16*8的subblock(或inter-8*16),2bits被用来定义参考帧(本文S=3)

(5)1bit被用来定义MV是否是一个0MV

(6)对于一个非0MV的MB,用16bit定义MVs

第二类数据定义了该宏块的15种最佳误码掩盖方案,所以第二类数据有4bit,而且是必须要嵌入的。对于P帧宏块的重要数据仍然采用宏块交织算法将两类数据嵌入到下一帧中的4个不连续掩盖片中。

在解码端,若掩盖片被正确接受,若损坏宏块的编码模式是跳帧,则用前一帧对应位置的宏块来掩盖该宏块。若编码模式是帧间,则结合编码模式,参考帧数,运动矢量来掩盖。如果若有损MB没有type1型数据嵌入或没有提取到,但它的type2型数据仍可得,那么用type2指定的15中预测方案中的最佳方案来掩盖。

四、结论

单纯的空间误码掩盖方法在计算上是简单的,例如线性插值法,但是可能造成严重的方块效应;更有效的混合的方法虽然能解决方块效应问题,但是它的复杂度太高,不适应于实时传输信道以及带宽受限用户。基于数据隐藏的误码掩盖算法就能很好的平衡这两方面的问题,它既不会给编码端带来任何负担,在解码端也能得到满意的效果。因此是一种值得深入研究的课题。
 

作者:南京邮电大学 通信与信息学院 周利娟 董育宁   来源:《中国多媒体通信》

上一篇:浅析声音在电视节目中的应用
下一篇:IxNetwork附加段跟踪特性的应用

手机天线设计培训教程详情>>

手机天线设计培训教程 国内最全面、系统、专业的手机天线设计培训课程,没有之一;是您学习手机天线设计的最佳选择...【More..

射频和天线工程师培训课程详情>>

  网站地图