王雅雪
摘 要:视频码流在3G无线网络的传输过程中经常会引入一些误码。传统基于视频语义的误码检测方法,只能检测出不符合码流标准的语义误码,而不能检测符合码流标准但实际数据改变的内容误码。针对内容误码,提出了一种基于色度空间相关性的H.263误码检测算法。
关键词:3G无线网络;H.263;空间相关;误码检测
随着3G时代的到来,无线视频通信的应用越来越广泛。3G无线网络中,多径衰减和噪声等因素导致其具有带宽有限、高误码率、信道质量随时间动态变化等特点,在有限带宽和时变易错的无线信道上传输高质量的视频图像,需要引入有效的容错技术[2]。
1 H.263句法和语义
H.263编码句法层从上到下可以分为四层[8]:图像、块组、宏块、块。
块组起始码(GBSC)为17比特长度的码流,标志一个块组的开始。块组编号(GOB Num,GN)為5比特长度的码流,标志当前块组在一帧所有块组中的序号。每个块组包含一行或多行宏块。
宏块层句法包括了当前宏块的编码模式、运动矢量、以及VLC系数等数据。解码器从码流中读取这些数据后,进行运动矢量解析和纹理数据解析,得到重建图像。
H.263解码器读取图像头后,循环进行块组解码至一帧结束。块组起始码的存在,为H.263解码提供了重同步标志。需要注意的是,块组头是允许不存在的,在一个块组解码完成后,若后续17比特码流非块组同步头,则解码器默认其未被编码。
误码存在的码流部位主要为块组层头部和宏块数据。当块组头发生误码,将造成块组编号读取错误或同步头被破坏。
2 基于语义的误码检测算法
H.263解码器中,设置有块组计数器:无论当前块组编号是否可读取,计数器皆加1以标识已解码块组数。因此,当读取到的块组编号与计数器不一致,误码存在。块组编号语义出错的情况可分两种:第一个块组编号出错和后续块组编号出错。
对第一个块组,帧头起始码即块组起始码。解码器进入一帧解码,首先寻找17比特帧头起始码,并顺序读取5比特块组编号。正常情况下,首个块组编号为0。当帧头码流发生误码导致首个块组编号非0时,解码器进行误码检测和容错。图3所示为帧头误码时,基于语义的误码检测算法流程图。
视频解码器的第一个I帧帧头是不容缺损的,否则将无法获取正确的解码器配置参数,导致后续解码图像质量严重损坏。因此,第一帧帧头发生误码时,解码器直接返回解码失败信息。后续帧帧头发生误码则可以复用前一帧帧头信息进行解码。
根据图像帧头部中解析到的视频图像分辨率及每个块组所包含的宏块数,可以计算出一帧所包含的块组数,从而得出一帧内块组编号的范围。以此为依据,对非帧头所在的块组,根据其块组编号是否越界,来判定是否发生语义误码。
3 基于色度空间相关性的误码检测算法
在宏块纹理数据解析过程中,各个系数都有其范围,当解码器解析到的系数越界时,即判定系数不符合码流标准,码流出现语义误码。基于语义的误码检测算法仅能够检测到这种不符合码流标准的语义误码。当误码符合标准,如某个块组同步头被损坏或出错的纹理数据并未越界时,解码器误判为码流正确继续进行解码重建。由于仅依靠基于语义的误码解析不能检测到误码位置,因此解码图像质量无法得到保证。另外,多次实验数据表明,在解码器自身检测到语义误码时,往往出错宏块之前的某些宏块系数内容已经异常,而由此导致解码图像中出现与周围宏块色度差异明显的彩块和马赛克现象,严重影响了图像的视觉效果。
本文结合语义误码检测,提出了一种基于色度空间相关性的误码检测算法,准确地检测码流中的内容误码。
由于宏块与宏块之间不存在同步标识,当解码器检测到某个宏块系数越界时,首先使用基于语义的误码检测,搜索后续码流中的块组同步头,对丢失的码流进行错误隐藏。然后,对出错宏块前的码流进行基于色度空间相关性的内容误码检测。
由于一帧图像相邻宏块的色度相近,色度块的纹理数据值相差较小,相邻宏块的色度DC系数具有很强的相关性。因此可以利用相邻宏块的色度DC系数,来检测当前宏块是否存在内容误码。
在解码过程中,分别保存每个宏块两个色度块(Cb块和Cr块)的DC系数,并进行基于语义的误码检测。
在检测到宏块语义误码后,根据语义误码位置计算需要进行内容误码检测的宏块行数。本文算法对从第二行宏块开始到出错行宏块,依次进行误码检测。单个宏块的空间相关性误码检测误流程是:对当前宏块两个色度块的DC系数,分别计算该DC系数与上方宏块相应系数的差值绝对值,当差值绝对值超过特定阈值时,判定该宏块纹理数据发生了内容误码。
在检测到内容误码时,对从误码宏块开始到宏块所在行结束的码流进行错误隐藏。然后从下一行第一个宏块开始,继续进行DC系数误码检测。
本文算法采用两个色度块的DC系数,在每个宏块解码过程中只需保存色度块DC系数,使得解码器在增加内容误码检测功能后,几乎不影响解码器的运行效率。
4 结束语
本文针对3G无线视频通信中存在的码流内容误码现象,提出了一种基于色度空间相关性的H.263视频误码检测算法。该算法利用空间相邻宏块的色度DC系数来进行误码检测,有效地定位传统语义码流解析无法检测到的内容误码。本文提出的误码检测算法可以同各种错误隐藏算法[7]相结合,以提高解码器的容错效果。
[参考文献]
[1]Chunbo Zhu,ye-Kui Wang, Miska M.Hannuksela.Error Resilient Video Coding Using Redundant Pictures[J].IEEE Transactions on Circuits and Systems For Video technology,2009,19(1):3-31.
[2]Zhang X C,Huang M.Error resilient transcoding for wireless video transmission[C].Proceeding of International Conference on Wireless Networks and Information Systems,2009:286-289.
[3]韩镇,胡瑞敏,陈皓.一种基于分层率失真优化的容错性视频转码算法[J].计算机学报, 2009,23(6):1152-1160.
[4]Zhu C B,Wang Y K,Hannuksela M M,et al..Error resilient video coding using redundant pictures[J].IEEE Transactions on Circuits and Systems For Video technology,2009,19(1):3-14.
[5]Bai-Lin Yang,Frederick W.B.Li,Zhi-Geng Pan.An Effective Error Resilient Packetization Scheme for Progressive Mesh Transmission over Unreliable Networks[J].Journal of Computer Science and Technology,2008,23(6):1015-1025.
[6]Vijay A Suryavanshi, Aria Nosratinia.Error-Resilient Packet Header Compression[J].IEEE Transactions on Communications, 2008, 56(11):1836-1843.
[7]Wiegand T,Farber N,Stuhlmuller K. Error-resilient video transmission using long-term memory motion-compensated prediction[J].IEEE Journal on Selected Areas in Communications, 2000,18(6):1050-1062.
[8]ITU-T.Video coding for low bit rate communication (Recommendation H.263)[S].Telecommunication standardization sector of ITU,2005,1.