基于动态跳帧和运动矢量修正的视频转换编码方法研究
2018-08-08孙雪红
孙雪红
(陕西中医药大学陕西咸阳 712046)
随着时代的发展,网络以及各种新型的通信技术、终端类型不断的涌现出来。随之而来便是大量具备不同性能客户机的出现,包括手机和平板电脑等[1]。例如,在体育领域,随着4G移动通讯技术以及无线网络的蓬勃发展,手机应用逐渐发展到现在更容易被用户所吸取和接受的视频形式。一些网络体育频道还设计了相应的手机客户端,越来越多的人们开始选择利用手机对各种体育相关的比赛视频进行观看。受到人们实际需求的影响,为了更好的对各种资源进行共享,相关的客户机需要能够通过无线的方式与Internet进行连接,但是,从带宽角度进行分析,Internet与无线网络之间存在十分明显的差异。在相应的传输码率方面,也存在较大的区别。
1 基于降低时间分辨率模型的运动估值分析
针对Internet与无线网络之间在传输码率方面存在较大区别这一情况,为了实现顺利的连接和资源共享,还需要在Internet和客户机之间设置一定的代理转换器[2]。
图1 在不同的客户机和Intemet服务器之间的代理服务器
进行视频编码转化的时候,借助一定的代理转换器,可以实现对不同编码的有效转换。通常情况下,利用一定的转换编码器,可以结合人们的视觉需求,对一定的视频信号进行转换。视频编码转换流程如图2所示,由图2可以了解到,在进行视频编码转化的时候,首先需要借助一定的前端编码器,对一定的源视频流进行处理。之后,利用一定的视频编码转化器进行转化,进行对转换后的视频流予以输出,最终被一定的接收端解码器所接收。因此,从本质角度进行分析,转换编码指的是一种将已被编码的信号向另一种编码信号进行转换的过程[3]。
图2 视频编码转换流程示意图
由于终端接收设备具有多样性,实时处理能力及显示器的分辨率受到一定的限制,当终端接收高分辨率的视频时,就需要降低视频的分辨率,以适应终端的要求[4]。此外,有时仅仅增大量化步长无法满足降低比特率的需要,通过降低视频的分辨率,能够达到降低比特率的目的。
图3 降低视频分辨率的转换编码流程示意图
视频图像存在很强的相关性,且视频数据中存在着数量巨大的冗余信息。是以会议电视标准图像序列为例,在某连续三帧图像中,在相邻帧间差值的平均值,高于一定域值的像素数在整幅图像像素总数中占据了很大的比例(见表1)[5]。因此,需要对视频进行一定的压缩处理。
表1 帧间差值高于一定阈值的像素数目在图像像素总数所占比例统计
但是,不同的视频在压缩方面所参照的标准不同,对于一些视频,在进行压缩的时候所使用的标准比特流相对较低。这对这些视频,在进行转换编码的过程中,往往需要进行一定的跳帧,进而对所产生的码流予以有效的控制,将其控制在不超过信道带宽的范围之内[6]。但是,在具体的跳帧过程中,大多数情况下,为获得理想的跳帧效果,需要对视频帧予以完全的解压缩处理。这一情况下,便需要对运动矢量予以重新的运动估值。但是,在重新估值之后,会直接影响到实时转换编码工作的开展。以降低时间分辨率模型为例,具体的操作过程中,需要集合不同相邻帧之间的具体运动矢量情况来对当前帧以及先前非跳帧之间的运动矢量进行相应的估算[7]。具体的估算过程中,如果按照重新对宏块的运动矢量实施匹配搜索的方式来予以实现,则会导致极大的计算量,严重影响到操作效率和操作进度。针对上述问题,还需要对原码流中的各种有用信息予以全面的分析和有效利用,以切实提高码率转换的效率,并最大程度降低实际计算量[8]。具体进行降低时间分辨率转换编码的时候,可能需要结合实际情况和操作需求,排除当前帧中宏块的运动矢量所指向的参考帧。相应的参考帧便无法被直接利用,为解决这一问题,便需要借助一定的方法对运动矢量予以合成[9]。当前,在具体的合成过程中可选择结合实际情况使用不同的方法,目前应用较多的主要为3种方法,即前向向量法和前向主向量选择法(FDVS)以及双线性内插法。
在实际的视频转换过程中,针对一个实际的图像序列,在一定的情况不需要进行运动补偿操作。这一过程中,可选择应用前向向量法[10]。例如,如果经过分析发现,相应的相邻视频帧中有50%~70%以上的宏块在编码时,存在较大运动的可能性较大,则可以不进行运动补偿。在这一情况下,便可以对前一帧中相同宏块的输入运动矢量予以直接选用,继而合成新的运动矢量。
2 降低时间分辨率模型下的动态跳帧与动态修正运动矢量
跳帧数与解码序列的平滑程度之间存在着十分密切的联系,通过合理的对跳帧数进行控制,可以获得较为平滑的解码序列。为达到这一效果,可选择按照一种动态的跳帧机制来对跳帧数进行合理的控制。在实际生活中,不同的视频在帧与帧之间的运动情况方面存在极大的差异[11]。但是,这些帧与帧之间在相互间运动矢量方面是确定和已知的。为此,在进行分析的时候,可以结合实际情况设置一个明确的阈值。在不同的阈值情况下,相应的视频序列中丢帧的情况也各不相同。以该阈值为参照依据,对视频中不同的帧进行分析,进而对最大累计运动矢量进行计算。以动态跳帧机制相关原理进行分析,对于相邻的两个编码帧而言,相互之间的跳帧数目处于动态变化的状态。在对需要重建的帧进行分析,并注意以跳帧数为参考依据,进而对需要重建的帧进行分析,并对其运动矢量修正的搜索范围进行明确[12]。
算法实现过程一共分为两个步骤:
1)第一步:确定第一个编码帧,将其设定为非跳视频帧。之后,对该非跳帧下一帧,即第二帧到该帧的累计运动矢量进行计算,并将相应的计算结果与设定的阈值进行比较。如果计算和比较结果显示,累计运动矢量高于阈值,则对第二帧进行编码操作。之后,再次进行非跳帧选择,以第二帧作为非跳帧继续进行下一帧的计算操作[13]。重复上述操作,将计算结果与阈值进行和判定。
2)第二步:如果经过计算,发现所得出的累计运动矢量高于阈值,则需要将第二帧排除在外。之后,选择以第三帧为计算对象,对其到第一编码帧的累计运动矢量实施计算。分析相应的计算结果,如果得出的累计运动矢量依然低于阈值,则需要对上述操作予以再次重复,按照上述相同的步骤对第四帧进行计算。之后,再次对得出的累计运动矢量与阈值进行比较,直至所得到的累计运动矢量高于阈值为止[14]。在得到高于阈值的运动矢量之后按照第一步步骤进行操作。此时,分别在X方向、y方向对累计运动矢量进行计算,并得出相应的最大值。之后,以相应的计算结果为基础,最终获得运动矢量的具体动态修正范围。
整个过程在下列代码中有所表示:
3 仿真实验分析
为验证本文的观点,进行一定的仿真实验分析。实验中,选择对QC1F格式的Miss序列实施仿真。Miss序列权值与跳帧数的关系如图4所示。通过分析可以发现,Miss序列中权值与跳帧数之间存在一定的关系,W的取值范围为0~l。而且,在该值大于0.l的时候,丢帧数不再随着阀值的增大而增大。在本次实验中,假设在Miss序列中,一共包含了100帧图像。以动态跳帧机制为依据,设定丢失的帧数一共为50帧。以前向向量法合成运动矢量为基础,对运动矢量分修正搜索范围予以动态调整。实验中,假设每编码一帧丢弃两帧,则100帧图像中丢失的总数量一共为50帧。通过动态修正可以发现,经过处理之后,每帧均平均提高了1.331 0 dB,顺利实现了动态跳帧。对重构之后的不同帧图像进行分析,比较其在图像质量方面的情况。经比较可以发现,经过跳帧处理之后,第4帧与第4帧原始图像之间存在一定的区别,但整体差异较小,图像未出现明显的失真情况[15]。但是,在经过重构之后,被重构的第34帧与第34帧的原始图像进行比较,可以发现基本不存在差异,保持了较为一致的图像视觉效果(见图5)。结合上述结果也可以了解到,视频转化编码的过程中,在实施动态跳帧操作的时候,在注意整体操作效率的同时,也注意合理的控制图像质量,以保证视频的视觉效果[16]。为达到这一目的,还需要在操作过程中结合实际情况,对相应的阈值予以合理的设定。
图4 Miss序列权值与跳帧数的关系分析示意图
图5 第0帧到第4帧动态跳帧与运动矢量修正情况
4 结束语
总之,日常生活中结合实际需求进行视频转换编码的过程中,可以针对不同帧与帧之间累计运动矢量的具体大小,按照一定的动态跳帧机制进行转换。具体的动态跳帧转换编码过程中,为更好的调整修正运动矢量的范围,还可以进行一定的动态运动矢量修正。经仿真研究也可以证实,能够有效提高图像的信噪比,获得了理想的转换编码效果。