2024年6月14日发(作者:)
循环,并使用于对小片进行编码的局部矢量对象列表稀疏。
具体地,图3开始于步骤300。在步骤305处,获取针对分辨率等级数、每个分辨
率等级的象素维度以及小片区域维度的参数。此外,在步骤305处还获取针对分辨
率依赖性数据的参数。这些参数规定了全局矢量对象可见的分辨率。处理在分辨率
等级以及每个分辨率等级的区域中循环,即在步骤310、315和320中循环。在步
骤325处,消除当前小片区域的重复局部矢量对象。在步骤330处,如果局部矢量
对象是从指定为在当前分辨率等级下不可见的全局矢量对象中剪切的,则去除局部
矢量对象。在步骤335处,用单个象素代替减小而处于单个象素内的局部矢量对象。
图3的过程在步骤340、345和350的循环中循环,并在步骤355处终止。优选地,
图3的流程图的输出是已处理的分片多分辨率图像的稀疏数据结构。
交互式流传输
在图2和图3的预处理级之后,可将产生的分片多分辨率矢量图从服务器计算机流
传输到多个客户计算机,以便交互式地查看。对于光栅图像的流传输,可实现服务
器端或客户端处理或者混合的服务器端与客户端处理。对于服务器端处理,以规定
象素分辨率请求单位平方内的感兴趣的归一化区域(也称为部分),并且优选地,服
务器返回根据与请求相对应的规定格式(例如SVG)格式化的单个图像。
对于客户端处理,请求一个和多个小片区域,并且客户执行处理来组合各个小片。
因此,客户可将小片光栅化为光栅图像小片以用于显示。
对于光栅图像的流传输,可高速缓存各个矢量小片,以用于当前会话或以后会话中
的后期获取。
现在参考图4,图4是根据本发明优选实施例的矢量图流传输的服务器端实现的简
化流程图。图4的最左一列描述了由交互式地查看矢量图的客户计算机执行的步骤。
图4的最右一列描述了按照请求将矢量图数据流传输到客户计算机的服务器计算机
所执行的步骤。
图4所示的工作流程是重复的,包括以下基本机制:做出查看矢量图的一部分的交
互式请求;准备所请求的部分;以及显示该部分。在显示矢量图的该部分之后,处
理返回以请求矢量图的不同部分。在本发明的优选实施例中,通过将用户动作解译
为命令的用户界面将每个这种请求输入客户计算机。例如,为了发出放大矢量图的
请求,用户可点击所显示图像的一部分来请求该部分的放大视图,或者可点击放大
镜的图标,或者可在所显示的矢量图的一部分周围画出矩形来指定感兴趣的区域,
以便放大该图像,从而调整感兴趣的区域的大小以填充显示区。
假设在图4中,将要流传输和交互式查看的矢量图预处理为包括根据局部小片区域
编索引的局部矢量对象的分片多维度数据结构。优选地,根据以上参考图2和3所
述的方法来执行预处理。然而,本领域的技术人员可认识到,可在流传输矢量图的
部分时,在传输过程中执行这种预处理。
在步骤410处,客户计算机向服务器计算机发出针对所希望象素分辨率(即出现矢
量图的显示窗口的象素分辨率)下的矢量图的感兴趣区域或部分的请求。优选地,
由客户计算机的用户通过图形用户界面来做出请求。在步骤420处,服务器计算机
确定预处理矢量图的哪些局部小片区域被需要或适用于产生矢量图的所请求部分。
在步骤430处,服务器计算机从预处理矢量图中获取有关的局部小片数据;即与有
关的局部小片区域相关联的局部矢量对象。在步骤440处,服务器计算机将局部小
片数据组合,并产生所请求的矢量部分。根据本发明的优选实施例,所请求的矢量
图部分按照例如可缩放矢量图形(SVG)的标准图像格式格式化。这种图像格式可由
客户计算机浏览器解译和处理,而不需要附加客户软件。
在步骤450处,服务器计算机以标准图像格式发送矢量图的所请求部分。在步骤
460处,客户计算机接收所请求部分。在步骤470处,客户计算机优选地使用标准
网络浏览器来呈现所请求部分,并在与客户计算机相连的计算机监视器上显示该部
分。在查看所显示的图像部分之后,客户计算机的用户可交互式地请求查看不同部
分,并且处理返回步骤410。
现在参考图5,图5是根据本发明优选实施例的矢量图流传输的客户端实现的简化
流程图。与图4相同,图5的最左一列描述了客户计算机所执行的步骤,图5的最
右一列描述了服务器计算机所执行的步骤。与图4相同,图5所述的工作流程是周
期性的(recurrent),并且随着用户重复地请求查看矢量图的不同部分而循环。与图
4相比,可见,在图5中,多个图像处理步骤位于客户端而不是服务器端。
与图4的流程图相同,图5的流程图也假设将用户要交互式地查看的矢量图预处理
为分片的多分辨率矢量图,如结合图2和3所述的。还假设在图5中,客户计算机
具有补充网络浏览器的附加软件,用于执行图5的客户端步骤。
在步骤510处,客户计算机识别用户请求以所希望的象素分辨率(即显示区域的象
素分辨率)查看的矢量图的一部分。优选地,通过将诸如鼠标和键盘动作之类的用
户动作解译为用户请求的用户界面来执行步骤510。在步骤520处,客户计算机确
定预处理矢量图的哪些局部小片区域被需要或适用于产生所希望分辨率的矢量图的
所请求部分。为了客户计算机能够识别有关局部小片区域,优选地在客户计算机上
运行的软件知道预处理矢量图的参数,特别包括预处理矢量图的小片区域维度和分
辨率等级。
在步骤530处,客户计算机检查其小片高速缓存器,来查看有关局部小片区域的一
些或所有数据是否已经存储在其小片高速缓存器中。在步骤540处,客户计算机请
求服务器计算机提供未驻留在客户小片高速缓存器中的那些局部小片区域的数据。
在步骤550处,服务器计算机从预处理矢量图中获取所请求的局部小片区域。在步
骤560处,服务器计算机将小片区域的所请求数据发送到客户计算机。根据本发明
的优选实施例,为了效率,服务器560将多个小片区域的数据捆绑在单个分组中,
该分组可在单个网络请求的开销中发送和拆包。
在步骤570处,客户计算机接收到小片区域的数据,在步骤580处,客户计算机组
合该数据,以产生所希望分辨率的矢量图的所请求部分。在步骤590处,客户计算
机呈现并显示所请求部分。其后,用户可交互式地请求查看矢量图的不同部分,并
且处理回到步骤510。
现在参考图6,图6是根据本发明优选实施例的图像流传输系统的组件的简化方框
图。图6示出了包括基本矢量图预处理和流传输机构的模块。矢量图预处理器610
接收矢量图,例如可缩放矢量图形(SVG)图像,作为输入,并产生分片的多分辨率
版本的矢量图,作为输出,作为数据结构将其存储,如下面所述的,该数据结构包
括根据矢量图的局部小片区域而编索引的局部矢量对象。矢量图预处理器610还接
收包括局部矩形小片区域的维度和分辨率等级的预处理参数,作为输入。矢量图预
处理器610的输出包括与用局部小片区域剪切的全局矢量对象相对应的局部矢量对
象。因此,如果矢量图包括呈现顺序,则优选地预处理矢量图在每个局部小片区域
中包括局部矢量对象导入的呈现矢量。
矢量图处理器620接收要以所希望分辨率来显示矢量图的一部分的请求,作为输入,
并识别预处理矢量图的哪些局部小片区域被需要或适用于实现用户请求,作为输出。
矢量图处理器620还接收预处理矢量图的参数,作为输入,包括局部矩形小片区域
的维度和分辨率等级。
预处理矢量图适配器630适用于与预处理矢量图相接口。矢量图适配器630接收预
处理矢量图或者一个或多个指示器,作为输入。矢量适配器630还接收局部小片区
域的一个或多个标识符,作为输入。矢量适配器630访问预处理矢量图,并获取与
所识别的局部小片区域相关联的数据,包括与该局部小片区域相关联的矢量对象。
矢量图处理器640接收与一个或多个局部小片区域相关联的数据,作为输入,并产
生用户所希望的象素分辨率的组合图像,作为输出。优选地,矢量图处理器640的
输出具有标准矢量格式,例如SVG,或者标准光栅格式,例如JPEG。标准网络浏
览器因此能够呈现组合图像,而不需要附加软件。
从图6可见,矢量图处理器620和矢量图处理器640可驻留在客户计算机上或在服
务器计算机上。对于服务器端的实现,图6所示的所有模块均驻留在服务器计算机
上。客户计算机仅需要发出以所希望分辨率来查看矢量图的希望部分的请求,并且
在服务器计算机处执行模块620、630以及640的所有处理。相反地,对于客户端
的实现,模块620和640驻留在客户计算机上。服务器计算机仅需要接收包括一个
或多个局部小片区域的标识符的请求,使用适配器530来获取与所识别的小片区域
相关联的数据,并将所获取的数据发送到客户计算机。对于混合的服务器端和客户
端的实现,矢量处理器620驻留在服务器计算机上,矢量处理器640驻留在客户计
算机上。即,客户计算机向服务器计算机发出针对所希望分辨率的矢量图的一部分
的请求,服务器计算机确定哪些小片区域是适用的,并将与这些小片区域相关联的
局部矢量对象数据发送到客户,并且客户将局部矢量对象数据组合为矢量图的所请
求部分。
本发明还广泛应用于以多种格式,包括多信息文档、电子表格、图标和演示文稿,
将电子邮件附件流传输到无线设备。
在阅读上述说明中,本领域的技术人员可认识到,可对上述方法和系统进行多种显
而易见的改变。因此,可在不对矢量图进行预处理的情况下实现本发明。而是,当
用户请求矢量图的希望部分时,通过用合适区域来剪切全局矢量对象,在过程中动
态地产生局部矢量对象。
本发明还可用于交互式地查看图像的非矩形部分,包括多边形、圆形和椭圆形部分。
例如,用户可导航在椭圆形边界内显示的地图,在边界内沿各个方向摇镜头和缩放。
本发明还应用于矢量动画的流传输。具体地,当本发明用于作为动画的帧来流传输
如SVG文档的矢量图时,对于多个帧,稀疏化过程优选地还去除在相同小片区域
内出现的矢量。实际上,在高分辨率等级下,预计相同小片区域内的矢量对象同样
出现在帧序列内。因此,通过避免连续帧的相同矢量对象的重发,实现了相当大的
性能增益。
为了有效地确定当前动画帧的小片内的矢量对象是否出现在前一帧中,本发明优选
地将第一动画帧的每个小片区域的矢量对象列表中的各个矢量对象的散列值存储在
查找表中。即,查找表存储了动画的第一帧的每个多分辨率小片区域的每个矢量对
象的散列关键字。对于每个连续帧,只要小片区域内的矢量对象已经出现在查找表
中,则将该矢量对象编码为查找表中的索引,而不是编码为独立的矢量对象。
现在参考图7,图7是根据本发明的优选实施例,用于将局部矢量对象存储在多分
辨率小片区域中以便在流传输矢量动画中高效使用的数据结构的简化图。图7示出
了查找表710,查找表710存储了与小片区域相关联的局部矢量对象的散列值。优
选地,查找表710由矢量动画中的帧序列的第一帧构成。此外,图7示出了矢量动
画的第二帧中的小片区域的局部矢量对象的列表720。每个局部矢量对象按照属性
(包括颜色、风格和控制点)传统地存储在查找表710中,或者按照索引存储在查找
表710中。后一种表示用于在第一帧内具有相同对应部的第二帧的矢量对象。
在填充了散列值之后,将查找表710发送到交互式地查看动画的客户计算机。其后,
当客户计算机接收到编码为诸如列表720之类的局部矢量对象列表的一个或多个小
片时,客户能够通过从查找表中提取,而获取编码为表索引的那些局部矢量对象的
属性。
对于相对较长的动画序列,与MPEG编码器中使用关键字帧的方式类似地,针对
关键字帧来产生查找表710。关键字帧用于使查找表710保持为最新的,从而连续
帧的局部矢量对象可能已经存储在了查找表中。关键字帧还用于使用户能够查看动
画序列,而不需要从第一帧开始。
在上述说明书中,参考本发明的示范实施例描述了本发明。然而,显而易见的是,
在不脱离所附权利要求所设定的本发明的广义精神和范围的情况下,可对特定的示
范实施例进行多种修改和改变。因此,说明书和附图应该认为是示意性的而不是限
制性的。


发布评论