3.4.5 sprite技术
一个sprite是由一个视频序列中属于同一个视频对象的所有像素构成的,是由各部分经拼接而成的一幅图像,它是MPEG-4提出的重要的概念之一。Sprite可以是一个拼接的视频对象,也可以是背景全景图,如图3.35所示,左上角的图是一个背景全景图;右上角的图是一个没有背景的子图像全景图,也就是一个完整的网球运动员,该网球运动员就是一个视频对象,是一个可以独立运动的Sprite图像。
|
| 图3.35 一个Sprite实例 |
帧所产生的变化是由于前景物体的运动所引起的,前景物体在某段时间内一部分背景被掩盖,而在另一段时间内另一部分背景又显露出来,或者是由于摄像机的运动,如平移、旋转、缩放所产生的比较复杂的变化来产生前景物体运动效果。为了有效编码这类图像,可以将某一背景视频对象在一段时间的内容拼接成一幅完整的背景图像,该视频对象在某一帧出现过的像素点在这幅大的背景图像中都能找到对应点。背景全景图也是由序列中背景图像拼接成一个大的完整的背景图像的,整个图像的拼接完成只使用了镶嵌技术和图形的几何变换技术,这样可以极大地提高了编码效率,Sprite技术还可以通过直接重构该视频对象或对其进行预测补偿编码进一步提高编码效率。Sprite本质上是一个静态图像,使用宏块进行编码,因此只能在传送开始时传送1次,Sprite提供了高压缩率。在任何给定时间,背景视频对象面VOP都可以通过适当的变形或裁切进行抽取。Sprite编码非常适合合成对象,也用于自然场景中严格运动的对象。
目前,Sprite编码可以分成静态Sprite和动态Sprite两类。
静态Sprite在编码过程之前离线产生,解码器在接收其余视频片断之前接收每个静态Sprite,静态Sprite可以非常容易地重新构建VOP,进行编码,通过使用合适的参数对量化的Sprite进行变形,这些定义了全景到帧关系的变形参数也用于描述MPEG-7标准的视频全局运动。这种编码方法主要用于人工合成图像的编码。在编码前Sprite图像和每帧图像重构点都已经知道了,在编码过程中根据图像重构点计算出当前帧在Sprite图像中的对应点和范围,编码传输这部分Sprite图像和重构点。整个Sprite图像只需要编码传输1次,在解码端就能通过解得的重构点重构许多帧不同的图像。
动态Sprite是在编码过程中在线产生,这种编码方法主要用于自然图像的编码,是一种增强的运动补偿方式,在编码器和解码器中都必须建立相同的动态Sprite图像,由于视频对象的运动变换,不能把每帧图像直接拼接到Sprite中去,因此在动态生成Sprite图像前应先对当前帧图像进行全局运动估计,计算出视频对象的变换参数,将当前帧的图像还原后才能用于Sprite图像的更新。
Sprite生成系统
系统最初通过MPEG流的局部解码压缩MPEG视频镜头和抽取运动矢量,系统包括下面4个阶段:
①运动矢量处理
②粗糙对象分割
③摄像机运动估计
④帧集成
动态生成的框架如图3.36所示。
|
| 图3.36 动态Sprite编码框图 |
由于从MPEG视频中获取的运动矢量是噪声,它们不能直接用于对象分割。为了提高运动信息的可靠性,使用当前帧两侧相邻帧的运动矢量。分割阶段采用从前面阶段获取的运动信息,通过简单的K方法聚类算法分割连贯的运动视频对象。视频中对象的数目由K方法聚类算法确定,摄像机运动信息由运动信息对应的背景对象区获得,摄像机运动估计参数用于帧的变形及混合。摄像头的运动会导致背景图像产生平移、旋转和缩放等运动,因此在镶嵌和更新Sprite图像前必须正确地估计当前帧背景图像的运动变换形式及参数,恢复由于运动所产生的图像的扭曲和变形。
sprite的两种传输方法
sprite需要使用静态图像的传输方法进行传输,由于sprite图像一般都比较大,为了减数传输延迟,可以使用分层多次传输,即每次只向解码器传输一部分,解码器端不断更新已有的sprite图,这就是sprite技术的一个缺点-延时。
为了减少延时,可以使用两种方法传输sprite。一种是首先传输sprite中用来重构前几帧的那部分,剩余部分将根据解码要求和可用带宽来进行传输。第二种方法是首先传输一个低分辨率和质量较差的完整sprite,然后在带宽允许的条件下传输sprite的剩余部分以逐步提高sprite质量。这两种方法可以单独使用可以组合使用。
目前,对Sprite编码技术方面的研究包括静态Sprite生成、基于多方向预测的静态Sprite编码、高分辨率动态Sprite编码。
【责任编辑:
夏书 TEL:(010)68476606】