把交互式视频数据流用于增强的视觉呈现的系统和方法 发明背景
发明技术领域:本发明涉及用于产生视频数据流以及与视频数据流进行交互的系统和方法,该视频数据流例如可被使用于视觉呈现互联网商务的对象。
背景技术:互联网商务(E-Commerce(电子商务))已激发起顾客与商业进行交互的新的可能性。顾客现在可以舒适地在他们自己家中按他们自己的便利进行购物。而且,他们不受限于访问在线的本地商店,而且可以虚拟地在世界的任何地方购物。同样地,商业获得探查以前只能梦想的广大顾客基地的新领地的珍贵机会。某些熟知的成功的电子商务事务包括在线书店(例如,Amazon.com)、旅行代理(例如,微软公司的Expedia)和软件销售商。然而,其它潜在的大经销商,诸如服装、珠宝、家具、和房地产商务似乎一直滞后不前。其原因在于在使用当前的技术呈现这些产品方面的困难的程度。例如,书或计算机软件可以通过文本(或许是其封面的静止图象)被适当地描述,但静止图象和文本很难提供一件珠宝或一件服装或一座房子的足够的细节给潜在的购买者。最新的在线方式的商场只提供单个图象供观看每个物品。当前在物体/情景呈现方面的尝试依赖于文本、静止图象或基于图象的描绘(IBR)技术,诸如全景图象显示。这些技术缺乏视觉真实性,缺乏交互性,提供有限的视觉信息,和/或只限于一小类的物体(例如,凸起的物体)。
有可能构建产品的图形模型。其优点是图形模型可提供完全的用户交互性。然而,当前的图形描绘和建模型算法仍旧与重现现实有一定的距离。而且,创建这些模型的成本相当高,以及随着几何复杂性、材料和动态性质以及照明条件而大大地提高。即使创建用于交互式地观看的水晶花瓶的三维(3D)模型,也会因为光线与花瓶的复杂的交互性,而成为困难的任务。
为了在互联网上提供商品的更好的呈现,某些在线房地产商务(诸如,http://www.apartment.com)已采用简单的IBR技术,通常也称为快速时间VR。IBR技术把数字图象嵌入简单的其目的在于真实性和交互性3D图形模型中。基本想法是把多个图象(在360度内旋转摄像机时所摄取的)结合在一起以便形成全景。这种全景然后被“粘贴”在可供用户进行操纵的不可见的圆柱体上。用户可以通过在图象窗口上用鼠标“旋转”圆柱体,交互式地观看环绕的景色(好像站在圆柱的中心一样)。交互式地观看360度的环绕对象比起被动地观看静止图象是更有益和有趣的。另外,全景可以只用几个图象容易地制作。用于做到这一点的商业上销售的软件已与某些数字摄像机捆绑在一起。然而,这有几个缺点:
(1)失真:IBR全景是通过把平面图象“装订”在一起,然后把它们“粘贴”成圆柱或球面(在不太通常的情况下)以供互动式地观看。摄取原先的图象的距离越近(这对应于圆柱或球面的曲率越大),观看到的失真越严重。而且,“装订”算法依赖于在相邻的图象中发现和匹配一些“特性组”(经常是规则的图案)。这意味着,该算法对于很不规则的景色可能失败或至少表现效果很差。
(2)有限的倾斜(上下)观看范围:当前的全景在发生严重失真以前提供很有限的观看范围。这限制了可供用户使用的视觉信息量。
(3)朝外看相对于朝里看(注视):商业的IBR全景只提供一些对应于用户朝外看和环视(例如,当站在房间的中间和朝周围环视时)的图象。要构建能对应于用户看到的和所注视着的物体的全景图象,则要困难得多。为了达到这个目的,研究者一直在研究更复杂的IBR算法,诸如光线区。这些算法试图根据从不同的观看角度摄取的图象去构建物体的原始或局部的3D模型,以便创建位于其间供交互之用的视图。然而,当前的技术有许多局限性,诸如需要物体的凸出度,以及对于复杂的或不规则的3D形状的物体呈现效果很差(由于缺乏图象数据或图象数据失配,在某些视图上出现空白或严重失真)。有反射特性的玻璃是复杂物体的一个例子。缺乏图象数据可以通过利用围绕物体密集地摄取的更多的图象而被避免,然而,这导致校准算法中增加复杂性(内容创建的成本),以及仍旧没有解决失真问题。
(4)不能用于移动的物体:基于IBR的技术在处理动态(移动)的物体时是无效的。这限制了它们在许多产品目录中的使用,诸如服装(理想地,我们想要看服装被穿着在行走在台上的模特身上时是怎样的,而不是无声息地放置在桌子上),或活动的玩具、宠物、机械零件等等。
发明概要
在一些实施例中,本发明涉及存储和提供视频流帧的方法。该方法包括存储从不同的观看点观看对象的视频流,其中不同的视频流处在包括不同的观看点的不同的状态。该方法也包括对于在前向、后向和改变方向的状态下的视频流的帧的请求作出响应:如果是可提供的,就提供这些帧。
这些帧可以通过互联网被提供给远端计算机。
在其它的实施例中,本发明涉及控制视频流的方法。该方法包括显示视频流帧,其中视频流属于来自不同的观看点的对象,以及不同的视频流处在包括不同的观看点的不同的状态。如果可提供的话,响应于用户输入设备的激活,显示相对于当前显示的一个帧的前向、后向或改变方向的状态下取决于激活的至少一个附加的帧,
还描述了其它实施例并要求对其得到专利权保护。
附图简述
从本发明的实施例的附图和从下面给出的详细说明,将更全面地了解本发明,然而,这些实施例不应当被看作为把本发明限制于所描述的特定的实施例,而只是用于解释和理解。
图1是按照本发明的一些实施例的内容提供系统、链路、和两个远端接收计算机的示意方框图表示。
图2是按照本发明的一些实施例的、用于创建从不同的参考点旋转的对象的视频流的系统的示意图。
图3是按照本发明的一些实施例的用于创建从不同的参考位置(其中一个摄像机可被旋转)的对象的视频流的系统的示意图。
图4是按照本发明的一些实施例的用于创建从不同的参考位置(其中的各摄像机可被旋转)的对象的视频流的系统的示意图。
图5是从不同的参考位置创建的三个视频流中的帧的表示。
图6显示按照本发明的某些实施例的、来自三个不同的视频流的不同的帧,以及显示视频流内的帧的改变到另一个视频流的帧的改变。
图7显示对应于不同的视频流和在它们之间的过渡的状态图。
图8显示不同的全景视频流。
图9显示不同的全景视频流和倾斜的视频流。
图10显示按照本发明的一些实施例的、不同的全景视频流和倾斜的视频流和在它们之间的帧的改变。
图11显示按照本发明的某些实施例的、在视频流中的三个帧和它们的某些部分的放大。
图12显示用于交互式地重放视频流的原型系统的方框图和流程图表示。
详细说明
A.概述
本发明涉及当在对象与摄像机之间有相对运动时,创建对象的至少一个数字视频流。对象的例子包括物体、场所(诸如房子或公寓)、和情景(诸如自然设置)。然后,数字视频流可供交互地观看。视频摄像机可容易地产生与IBR全景图象相同的、但大大地减小了失真的全景视图。而且,对于可被提供的视图的种类(朝外看或注视、倾斜、拍全景等等)、或对于作为预定目标的情景和物体的复杂性,基本上没有限制。相反,基于IBR的技术只在有限的环境下(例如,对于凸出的物体)才能正常运行。
在一些实施例中,多个视频流从不同的参考位置(例如,不同的观看点)被创建。基于一个有限状态机的数据结构被使用来获取不同的视频流之间的关系。来自不同的参考位置的视频流被作为状态机内的不同的状态来处理。用户可以通过用户输入(诸如鼠标)来与视频流进行互动,以便获得在一个状态内顺时钟或逆时钟旋转该对象(或相对于对象旋转摄像机)、将镜头拉近到对象的一些部分或切换到不同的视频流的经验(例如,它可以从处在不同的仰角的参考位置被产生)。
本发明适合于基于互联网商务的购物方式。通过使用本发明,物体可以以高质量和高真实性被呈现。另外,提供了灵活的交互性。在各种实施例中,本发明提供以下的优点。观看到的视频信号的远端呈现在视觉上是真实的(真实性)。很容易实现与视频信号的交互(例如,鼠标的运动是直观的和方便的)。远端的呈现可以提供多种信息,能提供对象的足够的细节。在互联网上创建和接入视觉信号是相当经济的。
作为例子,参照图1,内容提供系统12(例如,个人计算机)包括在存储器14内的视频流、视频处理电路18、和软件20。视频处理电路18可以包括专用硬件(例如,图形卡)和处理器。当由远端接收计算机30或32提出请求时,内容提供系统12把来自一个或多个视频流的视频信号提供给计算机30或32。计算机30可以请求不同于计算机32的视频信号,以及内容提供系统12可以通过链路22(它可以是互联网)把具有流动视频形式的不同的视频信号提供给它们。由于视频流的规模,在大多数情形下,最好是一次只提供一小部分视频流给远端接收计算机。
如上所述,链路22可以代表互联网。在这样的情形下,内容提供系统12可以包括连到互联网的主服务器,或链路22可以包括被内容提供系统12使用的主服务器。替换地,链路22可以是一个通过电话线的直接连接或某些其它连接。再替换地,整个视频信号可以通过软盘来传送。
在某些实施例中,远端接收计算机30包括存储器34、视频处理电路36、软件40、用户接口42、和用于显示视频信号帧的显示器44。视频处理电路36可以包括专用硬件(例如,图形卡)和处理器。存储器34包括通用目的存储器以及用于编码的MPEG视频和译码的视频帧的存储器。存储器34代表各种存储器,其中包括硬盘驱动器、主存储器、视频存储器(例如,视频静态随机存取存储器(VSRAM))和小型盘(CD),如果可以使用的话(它们是包括计算机可读的媒体的示例的物品)。用户接口42可以包括键盘和一个或多个用户输入装置,例如包括鼠标、游戏棒、跟踪球、键盘、光笔、触摸板、触摸屏、姿态识别机构等。远端接收计算机30同样地包括存储器48、视频处理电路50、软件52、用户接口54、和显示器56。
内容提供系统12和远端接收计算机30和32可包括任何的各种各样的计算机,例如包括主机架、台式、便携式、和基于机顶盒的计算机。
本发明不限于任何特定的数字格式。然而,本发明的某些实施例将结合MPEG(活动图象专家组)格式被描述。当前的和已建议的MPEG格式包括MPEG-1(″Coding of Moving Picture and Associated Audiofor Digital Storage Media at up to about 1.5 Mbits/s(高达约1.5Mbits/s的、用于数字贮存媒体的活动图象和相关音频的编码)″,ISO/IEC JTC 1 CD IS-11172(1992))、MPEG-2(″Generic Codingof Moving Picture and Associated Audio(活动图象和相关音频的通用编码)″,ISO/IEC JTC 1 CD 13818(1994))、和MPEG-4(″Very LowBitrate Audio-Visual Coding(非常低的比特速率的声音-图象的编码)″,Status:ISO/IEC JTC 1/SC 29/WG 11,3/1999)。有不同的MPEG-1和MPEG-2的版本。可以使用不同于MPEG的各种格式。视频信号可以具有交织的和非交织的帧。除了对创建视频信号编码以外(例如,在MPEG中离散的余弦变换),还可以对视频信号编码和译码。例如,MPEG视频信号可被编码,以便通过链路22传输。
B.视频流创建
可以有各种藉以产生对象的视频信号的方式。当摄像机静止时,对象可以移动。这对于可以在转盘上旋转的物体特别有用。替换地,对象可以保持静止,而摄像机移动。单个摄像机可以被使用和被移动到不同的位置,从而创建不同的视频流。多个摄像机可以从不同的位置被同时使用,以便创建不同的视频流。
术语“观看点”涉及摄像机的位置和角度。其它的参量(诸如变焦)也可能影响所得到的视频信号。当摄像机在创建用于视频流的视频信号期间是静止时,观看点在视频流期间是恒定的(虽然在创建视频信号时变焦或其它参量可能改变)。当摄像机移动时,在视频流中观看点发生改变。至少某些观看点在不同的视频流中是不同的。典型地,对于有效的呈现,观看点的差别被很好地选择和被控制。应当指出,视频流并不需要连续和及时地被创建。
图2上显示一个对象可在其中移动的系统的例子。参照图2,系统60包括转盘64,其上放置有一个物体。视频摄像机70固定在摄像机轨道支架72上的观看点A。当转盘64旋转时,摄像机70创建用于物体66的视频流的视频信号。在某些实施例中,只有单个摄像机70,它创建物体66在旋转时从物体66的不同的观看点得出的视频信号。例如,如果只有一个摄像机,则它可首先产生出从观看点A看到的视频流,然后是从观看点B看到的视频流,然后是从观看点C看到的视频流,等等(图2显示观看点A,...,E,但实际上可能使用较少的观看点)。在其它的实施例中,对于每个观看点有一个摄像机,以及每个摄像机同时创建在物体66旋转时从物体66的不同的观看点看到的视频流。使用多个摄像机的优点在于,从不同的观看点看到的视频信号帧被排成一行。另外,它也可花费较少的时间来完成视频信号的创建。在观看点之间的运动可以是通过摄像机轨道电机76或人工地、或通过其它装置来实现。控制摄像机方向的机制被包括在内。
转盘64可以由电机驱动。由电机驱动的转盘对于保持对象与摄像机之间的恒定相对运动时是有用的。恒定的相对运动的优点在于,在远端进行观看的用户较容易控制如何使视频信号帧快速地前进或后退。而且,在其中只有一个摄像机的场合下,使用由电机驱动的转盘有助于把从不同的观看点观看的帧排成一行,以及有助于当切换到不同的视频流(状态转移)时在对应的帧中创建更精确的索引。然而,通过使用典型的三角架和/或人工控制的转盘,也可以得到良好的结果。
视频信号被发送到计算机,诸如个人计算机80,它包括显示器84、键盘86和鼠标88、或其它设备。摄像机可以以数字格式或模拟格式记录,模拟格式在以后被变换成数字视频格式。视频信号可通过S-视频输出(串行)连接被提供给计算机80。不需要特定的标准或格式。然而,把视频信号设置为流行的互联网浏览器能识别的格式可能是有用的,该浏览器例如是由微软公司销售的Internet ExplorerTM浏览器之一或熟知的Netscape浏览器之一。视频信号在下载到计算机80以前可被保存在视频摄像机中直至完成创建视频信号为止,或者视频可以在结束以前被下载。
图3显示包括平台106的支架100,它用来支撑摄像机104。平台106沿枢轴108旋转,它在高度上是可以调节的。可任选的电机114可以控制地旋转平台106。机械机构116可以控制平台106的角度。
图4显示支架120,它类似于系统100,不同之处是它支撑设在平台124上可以通过机械机构128进行倾斜控制的附加的摄像机122。由机械机构128提供的倾斜可以不同于通过机械机构116提供的倾斜。
作为图2-4的支架的替换例,可以使用手持式视频摄像机,或使用一个摄像机和简单的三角架。
图5显示三个不同的视频流VS1,VS2和VS3的帧F1,F2,...。
虽然我们可以用数字视频摄像机产生和我们想要的一样多视频内容,但有理由进行选择。因为处理时间随视频内容量而伸缩,理想地,我们可以只使用对于眼前的用途所必须的那么多的内容。这引起以下的问题:哪种观看序列最有效地输送最多的视觉信息?全景视图看来是自然的选择,这主要是因为我们在大多数情况下处理3D物体。还应当指出,我们的大脑能够构建物体的良好的智力模型,而无需完整的3D视觉信息。对于大多数人而言,以不同的仰角摄取的多个全景序列看来可以包含足够的视觉线索(单一的全景视频序列由于有限的摄像机角度因而通常是不够的)。多个倾斜序列可以作为附加的视觉线索被包括在内。
C.用户交互
参照图1,远端接收计算机30的用户接口42可被使用来表示要观看视频信号的哪些部分。用户可以启动对一个基准的视频信号的至少开始的帧的显示。在某些实施例中,用户可选择起始的基准,以及在其它实施例存在着缺省的基准。一旦在显示器44上显示了一个帧,用户可改变重放的方向(例如,从前向改变到后向),以及通过用户接口42的用户输入装置(例如,鼠标)切换视频流。
在某些实施例中,使用以下的惯例。作为对鼠标的主要向右运动(激活)的响应,从而按前向方向来显示各个帧,以及作为对鼠标的主要向左运动的响应,按后向方向来显示各个帧。帧的改变速率可能涉及到鼠标运动的速度,以及作为对鼠标运动的响应的帧的改变的持续时间则可能涉及到运动的距离。当帧向后移动到视频流的开始点或向前移动到视频流的结尾点时,它们或者停止,或者分别卷绕到视频流的结尾点或开始点。例如,如果鼠标主要向远离用户方向移动(或在显示窗口上向上移动),则视频流以向上方向改变(如果可以的话),以及如果鼠标向用户方向移动,则视频流以向下方向改变(如果可以的话)。向上,是指在高仰角的观看点,以及向下,是指在较低的仰角的观看点。也可以使用其它的惯例。
更具体地,在某些实施例中,使用六种类型的鼠标运动:左、右、上、下、将镜头拉近、将镜头拉远。当左鼠标按钮被按压而鼠标处在显示窗口中时,鼠标事件被检测。鼠标事件的回叫功能把鼠标位置的X和Y窗口坐标记录为(Xold,Yold)。在下一个表现周期中检测的新的鼠标位置被表示为(Xnew,Ynew)。六个鼠标位置可以被分类为如下(假定Y轴向上):左:如果
(|Xnew-Xold|-Ynew-Yold|)>τ&(Xnew<Xold),τ是门限值右:如果
(|Xnew-Xold|-|Ynew-Yold|)>τ&(Xnew>Xold)上:如果
(|Ynew-Yold|-|Xnew-Xold|)>τ&(Ynew>Yold)下:如果
(|Ynew-Yold|-|Xnew-Xold|)>τ&(Ynew<Yold)镜头拉近:如果
移位键被按压,以及检测到鼠标“向上”运动;镜头拉远:如果
移位键被按压,以及检测到鼠标“向下”运动。
本发明并不限于这些细节。
图6显示来自三个不同的视频流的代表性帧。帧150A、150B和150C属于来自观看点1(Vpn1)的视频流VS1;帧154A、154B和154C属于来自观看点2(Vpn2)的视频流VS2;帧158A、158B和158C属于来自观看点3(Vpn3)的视频流VS3。应当指出,视频流中的有些帧没有被显示在所显示的帧之间。仅仅作为例子,观看点1,2,和3可以是图2的观看点A,B,和C。图6的帧显示三个玻璃物体,它们从不同的旋转、高度和角度具有反射光。对于图6的视频段的创建的时间是约5分钟。这对于IBR实际上不能做到。而且,如果创建玻璃装饰品的合理而真实的图象模型,则所需要的时间和努力将大得多,特别是在考虑对于装饰品的复杂的显示效果时。
每个视频流可以在一个有限状态机中被建模为单独的状态,其中视频流内的帧处在同一个状态。例如,参照图6,视频流VS1的帧处在第一状态,视频流VS2的帧处在第二状态,以及视频流VS3的帧处在第三状态。在每个状态内,用户可以通过用户输入装置以想要的速度沿前向方向或后向方向移动。在某些实施例中,正如下面描述的,可以有逐帧的前向或后向地随机接入。用户也可以切换到如上所述的一个状态。在某些实施例中,可以在观看点VS1和VS2之间以及在VS2和VS3之间进行切换,但不能在VS1和VS3之间跳跃而不显示VS2中相应的帧,从而避免大的观看改变。图6显示本发明比起现有技术的重大的优点:快速的内容创建,真实性和简单而有效的用户交互。这些优点将便于和鼓励人们在互联网上快速和容易地获取和公布精巧的内容,供其它人观看和交互。在某些实施例中。一次只显示一个帧,而在其它的实施例中。可以显示多个帧,以及用户可以在它们之间交互地跳跃。
图7显示图6的例子的有限状态机性质。每个圆代表一个不同的状态。例如,参照图6和7,在某些实施例中,用户可以从视频流VS1的状态切换到VS2,和反之亦然;以及从VS1到VS2,和反之亦然。在其它的实施例中,有可能直接从视频流VS1的状态切换到VS3,和反之亦然,而不显示在VS2中的帧。对于其它例子的状态机表示可能比图7的表示更复杂。
图6的帧可包括在帧的左下角处的导航辅助工具160和162。为了避免混乱,仅仅把帧150A的导航辅助工具加上标记。辅助工具的用途是表示用户的指向,在这个方向上有要观看的附加帧。在每个帧中,用户可向前或向后移动,这样,水平辅助工具162指向右面和左面。(在其它的例子中,用户可能在一个状态下达到第一或最后的帧,箭头可能只指向右面或左面,取决于是否有卷绕能力。)只有三个状态(见图7),所以当用户正在观看在顶部状态中的帧时(帧158A、158B和158C),要改变的唯一状态是向下,以及垂直辅助工具160指向向下。当用户正在观看在底部状态中的帧时(帧150A、150B和150C),要改变的唯一状态是向上,以及垂直辅助工具160指向向上。在中间状态(帧154A、154B和154C),状态可能向上或向下改变,所以垂直辅助工具160指向向上和向下。
状态机的一个简单的事例是其中唯一的视频流是前向视图的情况,正如例如在图8上Vp0,Vp1,…Vpi涉及不同的全景视频流的情况。如果当前的状态是Vpi,则鼠标“向上”运动被映射为转移到Vpi+j,而鼠标“向下”运动被映射为转移到Vpi-j,其中j正比于鼠标拖拽的速度。鼠标“向左”和“向右”运动对应于向前或向后重放当前的视频。由于每个鼠标的交互而重放的帧的总量可以正比于鼠标运动的速度。由图8所表征的视频流的交互模式被称为“直线(line)”模式。稍微更复杂的转移模式涉及全景视图Vpi和倾斜视图Vti,如图9所示。如果当前状态是Vpi,则鼠标“向上”或“向下”运动对应于转移到“最接近的”倾斜视频流。例如,在图10上,全景视频流被加以分割,以使得不同的帧处在全景视频流的不同的段。例如,全景视频流Vp2的帧被划分成段Vp2-0(接近于倾斜视频流Vt0)、Vp2-1(接近于倾斜视频流Vt1)、Vp2-2(接近于倾斜视频流Vt2)、以及Vp2-i(接近于倾斜视频流Vti)。倾斜视频流也被划分成多段。例如,倾斜视频流Vt1被划分成段Vt1-0(接近于全景视频流Vp0)、Vpt1-1(接近于全景视频流Vp1)、Vt1-2(接近于全景视频流Vp2)等等。
如果当前的状态是Vp2和当前显示的帧的落在Vp2-1中,则鼠标“向下”运动将把当前的状态设置为Vt1(其中用户的连续的鼠标“向上”或“向下”运动对应于Vt1的平滑重放)。同样地,如果当前的状态是Vt1,则鼠标“向右”和“向左”运动对应于转移到“最接近的”全景视频流。图9的互动模式被称为“网格”模式。这个模式涉及在N(或M)段中所表示的每个全景(倾斜)视频流,其中N(M)是倾斜(全景)视频流的数目。假定摄像机在产生全景和倾斜视频流时正在以大约相同的恒定的速度旋转,则可直接计算在转移后在新的视频流中哪个帧将会跳跃。在“直线”模式例子中,如果在转移之前帧的数目是Vpi的“n”,则在转移到Vpj后,当前的帧被设置为“m”,其中
m=n*(Vpj的总的帧数目/Vpi的总的帧数目)
在网格模式的情形下,可以转移到最接近的交截的视图。例如,如果当前的状态是倾斜状态,则可以转移到最接近的交截的全景状态以及反之亦然。
在某些实施例中,变焦可以通过图象控制借助于简单地缩放被显示的帧而完成。在另一个实施例中,更高的分辨率的视频(例如,640×480)可被获取,以及向下定标的版本(例如,320×240)可被用于正常的显示和交互,而原先的较高分辨率的视频在需要变焦时可以只在相应的帧中被译码。
另一种变焦效应是通过创建虚拟放大镜而达到的。虚拟放大镜实际上是某些预定尺寸的特定的方形显示区域。用户可以(用鼠标)把这个放大镜放置在显示窗口中的任何地方。放大可以通过用同一个图象的更高的分辨率版本的适当地部分代替在放大镜下面的显示图象的部分而被达到。通过使用虚拟放大镜,用户可详细地检验来自选择的观看区域的感兴趣的物体。图11显示帧170,172,和174,其中虚拟放大镜176被使用在帧172,以及虚拟放大镜178被使用在帧174。由于每次放大镜被开始调用时只需要译码来自高的分辨率视频序列的单个帧,因而这个方法需要最小的计算量和数据传送。如果多个高分辨率视频序列是可提供的,则我们可以以相应的放大倍率创建多个放大镜,以便用户从其中选择。
使用数字视频的通常的范例是“点击和播放”方法,其中只允许前向重放,以及典型地只是从第一帧开始。本发明的某些实施例是通过利用MPEG处理库技术以便快速随机接入、和通过使用索引表逐帧地后向重放而克服这个限制的。这个索引表是根据MPEG编码信息和对帧的依赖关系而被创建的。仅仅作为例子,在某些实施例中,利用具有400MHz的Pentium(奔腾)III处理器的个人计算机(PC),以352×240分辨率的MPEG-1的后向译码速度约为60帧/秒,这完全足以显示典型地以30帧/秒获取的视频。对于图形引擎,由Silicon Graphics开发的Open Graphic Library(OpenGL)(开放图形库)可被使用来把受用户控制的鼠标运动耦合到适当的视频流的适当的显示模式。OpenGL的优点包括:(1)用于OpenGL描绘的硬件加速是广泛地可提供的;(2)OpenGL允许帧缓存器的低级别运行,这对于图象处理是有价值的;(3)OpenGL公用库(GLUT)提供用于在显视窗口中检测鼠标事件的功能;以及把3D图象模型直接包含到视频序列中,以便增强真实性和交互性。微软公司的D3D软件可被用作为对于OpenGL的替代品。
图12以方框图、流程图形式显示原型系统。参照图12,编码的MPEG视频序列被存储在缓存器180。内容提供系统12不单可提供请求的帧,也可主动地把紧密靠近请求的帧的那些帧提供到提出请求的远端接收计算机30或32(见图1)。在某些实施例中,只主动提供了同一视频流中的帧。在某些实施例中,也提供了在相邻的视频流中的帧。响应于鼠标的运动(判决块184),缓存器180的内容被更新,以及适当的帧在译码块186中被译码。下面更详细地描述译码过程。译码的帧被提供给OpenGL帧缓存器块190,在其中这些帧可被操纵以便变焦。这些帧也可以通过形态变换或其它技术被操纵。译码的帧被提供给OpenGL显示窗口194(例如,图1上的显示器42)。
可以使用不同于OpenGL的各种已知的软件工具。例如,微软公司的D3D软件可被用作为对于OpenGL的替代品。
D.帧的快速随机接入和后向逐帧重放
MPEG-1和MPEG-2视频由三种基本帧类型组成:I帧、P帧和B帧。I帧是与其它的帧无关地被编码的。P帧是根据先前的I或P帧被编码的。B帧也称为双向帧,它是根据先前的和或下一个I或P帧被编码的。对于通过使用场编码法而被编码的MPEG-2视频,B帧也可取决于被编码为B帧的不同的场。解压缩的成本随不同的帧的类型而变化。对I帧译码是最便宜的,然后是P帧,再然后是B帧。为了译码P和B帧,需要运动补偿。对B帧的译码典型地比起P帧的成本更昂贵,因为它可能取决于两个帧,而P帧只取决于一个帧。
为了方便起见,以下的例子是对于一个9帧的图象组(GOP)(如果把下一个GOP的I帧包括在内,则它具有10帧)描述的。然而,本发明并不限于GOP中特定的数目的帧。例如,GOP典型地可具有15或30帧,或其它某个数目的帧。
本发明并不限于使用于带有任何特定的分辨率或字节数目的帧。例如,对于MPEG-1视频(352×240分辨率),一个解压缩的帧可以是在RGB模式下的1/4兆字节(Mbyte)的大小和在YUV模式下的1/8兆字节(Mbyte)的大小。对于更大的分辨率,尺寸会大得多。
考虑以下的GOP结构形式是显示帧的次序:I1(F1),B1(F2),B2(F3),P1(F4),B3(F5),B4(F6),P2(F7),B5(F8),B6(F9),I2(F10)。帧的号码在括号之中,以及帧的类型的后面的号码被使用来区分具有同样编码类型的不同的帧。与显示次序不同,编码和译码次序是I1 P1 B1 B2 P2B3 B4 I2 B1 B2。
1.随机接入
因为对帧的依赖性,随机接入到MPEG视频的任意帧不是很容易的。例如,为了接入P1,首先需要译码I1;为了接入取决于P1和P2的B4,需要首先译码I1、P1和P2。
一种方法是译码GOP中的每个帧,这样,所需要的译码的帧将是可提供的。然而,这种强有力的方法是浪费的。用于随机接入的较好的方法是保持一个对于每个帧的中间帧依赖关系的清单。中间帧的依赖关系规定对于当前的帧的译码操作所直接需要的帧的集。对于以上的例子,中间帧依赖关系如下:
I1:无
B1:I1,P1
B2:I1,P1
P1:I1
B3:P1,P2
B4:P1,P2
P2:P1
B5:P2,I2
B6:P2,I2
I2:无
(帧依赖关系可以由查找表提供,该表可以通过索引号或帧号来访问。)
因此,译码B5,涉及到使用译码的P2和I2,它们是对于运动补偿所需要的。另外,译码P2涉及到使用译码的P1,后者又需要译码的I1。译码B5涉及到使用译码的I1、I2、P1和P2。译码B2涉及到使用译码的I1和P1,它们被用于运动补偿;译码P1又需要译码的I1。所以,B2需要译码的I1和P1。因此,所需要的译码的帧首先被译码,然后被存储在存储器中。应当指出,在某些情形下,译码的帧即使在它们本身将不被显示时也将被存储,这样,它们在译码其它的帧时是可供使用的。
2.逐帧的后向重放
MPEG视频的后向(反向)重放可以通过使用随机接入技术而被直接实施。因此,为了后向地接入上面的10帧,我们可使用以上的随机接入方法,以便译码帧10,然后使用随机接入方法来译码帧9,而无需利用这样的事实:它已被使用来译码帧10等等。然而,这个方法并没有利用后向译码的时间相关性。以下是利用相关性的新颖技术。
译码的帧被存储在译码帧超高速缓存器中。各种不同的类型的存储器可被使用于译码帧超高速缓存。主存储器动态随机接入存储器(DRAM)是一个例子。也可以使用视频随机接入存储器(VRAM)。分开的存储器或存储器的一段可以单独地被专用来保持译码帧。译码帧超高速缓存器不必都是存在于相邻接的存储单元中。
译码帧超高速缓存器可以有固定的或可变的大小。如果它具有固定的大小,则它应当足够大,以便保持考虑到可能遇到的GOP所需要的最小数目的译码帧。如果在GOP中的帧的数目发生改变,则其大小会动态地改变。在一种方法下,译码帧超高速缓存器具有固定的大小,以及当超高速缓存器充满时,可以通过使用一种最近最少使用(LRU)替代策略来代替最近最少接入的帧。如果超高速缓存器的大小不固定,则它可保持固定的数目的帧,以及可以使用LRU替代策略。
通过使用先前的、对于从帧10到1的后向译码的例子,对于帧10到7使用新的算法,将出现以下结果:
帧10是I2帧。I2被译码和被存储在译码帧超高速缓存器中。Cache(超高速缓存器)=[I2]。
帧9是B6帧。B6需要I2,P2,P1,I1。P2,P1和I1被译码。B6也被译码。I2已经在超高速缓存器中,这样它不需要被重新译码。译码的 P2,P1,I1和B6被存储在超高速缓存器中。Cache=[I2,I1,P1,P2,B6]。
帧8是B5帧。B5需要I2和P2,它们已经在超高速缓存器中。译码B5以及把它放置在超高速缓存器中。Cache=[I2,I1,P1,P2,B6,B5]。
帧7是P2帧。P2需要P1,它已经被译码。译码P2以及把它放置在超高速缓存器中。Cache=[I2,I1,P1,P2,B6,B5]。
通过使用上述的在后向重放中使用的帧的超高速缓存技术,随机接入也可以更有效地被执行。关键是将同一个超高速缓存机制用于存储最近译码的帧,以及重新使用这些帧(如果它们在不久的将来被请求的话)。例如,可以请求译码以下的帧的组:I1,B3,B5。为了译码B3,需要P1和P2。结果,P1、P2和I1将被译码和被放置在译码帧超高速缓存器中,以及如果这些帧已经在译码帧超高速缓存器中,则将它们从其中取出来使用。在下一次请求译码B5(它取决于P2和I2)时,只需要译码I2,因为P2已经在超高速缓存器中。
超高速缓存技术可以通过硬件或软件控制而实现。该技术可根据软件伪随机码来进行描述,但它可以用硬件来实施,或通过按照不同的伪随机码的软件来实施。也就是,有各种各样的方式来实施超高速缓存技术。
考虑上面提到的例子:I1(F1),B1(F2),B2(F3),P1(F4),B3(F5),B4(F6),P2(F7),B5(F8),B6(F9),I2(F10)。
假定存在以下两种功能:(1)DecodeCurrentFrame(译码当前帧)(N,ReferenceSet(参考组))和(2)GetDependencyFrameIndex(得到依赖性帧索引号)(N)。
在DecodeCurrentFrame(N,ReferenceSet)时,帧N通过使用帧N和ReferenceSet按照MPEG算法被译码。ReferenceSet是为译码帧N所需要的参考帧组。例如,对于P1的ReferenceSet是{帧1},对于B4的ReferenceSet是{帧4,帧7}。译码的帧N根据功能返回。译码的帧可以具有RGB、YUV、或另一种格式。在本例中,使用了RGB。
在GetDependencyFrameIndex(N)中,可以得到一个用于译码当前帧N所需要的参考帧的清单。一个帧索引号的清单被返回。例如,GetDependencyFrameIndex(5)={7,10}。
在以下的伪随机码中,在索引号与实际的帧之间具有差别。例如,10是索引号,以及帧10是实际的帧。具有一个被称为MPEGFrameCache(这是译码帧超高速缓存器)的数据结构的阵列。MPEGFrameCache具有两个属性:LastTimeUsed(上次使用的)(供在LRU技术中使用)和FrameRGB(帧RGB)。
以下是按照某些实施例的、通过使用超高速缓存技术实施GetFrame()的伪随机码(行1-22):
对于上述的例子,以下的事件序列正好从帧10后向地进行译码。假定MPEGFrameCache在起始时是空的。
+GetFrame(10)
GetDependencyFrameIndex(10)={}
DecodeCurrentFrame(10,{})
MPEGFrameCache={frame(帧)10}+GetFrame(9)
GetDependencyFrameIndex(9)={7,10}
由于帧7不在MPEGFrameCache中,调用+GetFrame(7)
+GetFrame(7)
GetDependencyFrameIndex(7)={4}
由于帧4不在MPEGFrameCache中,调用+GetFrame(4)
+GetFrame(4)
GetDependencyFrameIndex(4)={1}
由于帧1不在MPEGFrameCache中,调用+GetFrame(1)
+GetFrame(1)
GetDependencyFrameIndex(1)={}
DecodeCurrentFrame(1,{})
MPEGFrameCache={frame 1,frame 10}
DecodeCurrentFrame(4,{1})
MPEGFrameCache={frame 1,frame 10,frame 4}
DecodeCurrentFrame(7,{4})
MPEGFrameCache={frame 1,frame 10,frame 4,frame 7}
帧10已在MPEGFrameCache中
DecodeCurrentFrame(9,{7,10})
MPEGFrameCache={frame 1,frame 10,frame 4,frame 7,frame 9}
+GetFrame(8)
GetDependencyFrameIndex(8)={7,10}
帧7和10都已在MPEGFrameCache中
DecodeCurrentFrame(8,{7,10})
MPEGFrameCache={frame 1,frame 10,frame 4,frame 7,frame 9,frame 8}.....
在以上的线索中,没有显示MPEGFrameCache的LastTimeUsed属性。然而,可以使用LRU技术。应当指出,本发明并不限于LRU技术。
在MPEGFrameCache中的帧不必被排序。宁可不使用回归调用,以上列出的伪随机码(行1-20)可被修改为包括这样一个环路,在其中终结条件是:帧N所依赖的所有的帧已被译码,以及可被使用于对帧N译码。
E.附加信息和实施例
重要的是,要紧凑地表求被获取的、用于有效地发送和贮存的视频。而且,如果大多数数据被存储在用于译码的计算机的存储器中,它在呈现时间期间典型地可以是非常地有效的。这可减小过度的文件读取。在某些实施例中,本发明使用MPEG压缩技术,以便压缩所获取的数字视频。MPEG压缩对于给定的视觉质量可以提供良好的压缩比。它是基于两个基本的压缩模式:使用基于块的DCT的帧内编码:和利用在时间上紧靠在一起的各帧的内容相似性的帧间编码。虽然在MPEG中使用帧间编码可以大大地减小比特速率,这样的依赖性使得随机接入很困难。
通过参阅说明书中“某些实施例”或“其它实施例”,可以明白结合这些实施例描述的特定的特性、结构、或特征可以被包括在本发明的至少某些实施例中,但不一定被包括在本发明的所有的实施例中。在说明中的术语“某些实施例”的各种外在表现不一定全都涉及相同的实施例。
术语“响应”和相关的术语意味着一个信号或事件受另一个信号或事件影响到某个程度,但不一定是完全地或直接地。如果技术条件说明一个部件、事件、或特征“可以”,“可能”或“能够”被包括在内,则该特定的部件、事件、或特征并不一定被包括在内。
得到本公开内容中受益的本领域技术人员将会看到,从上述的说明和附图可以在本发明的范围内作出许多其它的变化。因此,正是以下用来规定本发明的范围的权利要求包括对本发明的任何修改。