多分辨率图像系统的制作方法

文档序号:11655308阅读:150来源:国知局
多分辨率图像系统的制造方法与工艺

本发明涉及计算机科学领域,具体而言,涉及其上记录有地形的多分辨率图像系统的存储器装置。



背景技术:

可以在市场上找到提供包括利用多分辨率图像系统的图像渲染的2d和/或3d体验的不同应用,例如地形渲染。此类应用的示例为以下产品(注册商标):google地球、google地图。基于gps的应用(例如,gps导航)和飞行模拟应用是实施地形渲染的应用的其它示例。这种应用通常利用对象(例如,地形)的多分辨率图像(例如,地图)系统来在用户交互时执行/更新渲染。多分辨率地图系统包括表示地形的通常非常大的地图集合。这种系统通常需要存储在大的存储器装置(例如,硬盘驱动器)上,并且通常地图不会在相同时间全部装到快速存储器(ram、视频存储器)上。应用需要不断地加载和/或卸载地图,这显著地影响了应用的性能(例如,帧速率)。存在若干解决方案以减少与加载操作相关的问题。例如,可以使用压缩算法(jpeg、jpeg2000、png、hdphoto是这种压缩格式的示例)将地图压缩在硬盘驱动器上。

在该背景下,仍然需要一种改进的方法来将对象的多分辨率图像系统记录在存储器装置上。



技术实现要素:

因此,提供了一种存储器装置,其具有线性轨道(lineartrack)并在其上记录有对象的多分辨率图像系统,该多分辨率图像系统包括图像集合,每个图像表示对象并且具有相应的分辨率,其中,根据从图像集合的空间填充曲线向线性轨道的连续注入来进行所述记录,空间填充曲线使不同图像交织(interlace),并且空间填充曲线与每个图像之间的交点(intersection)在希尔伯特曲线上。

空间填充曲线可以由空间填充曲线与所有图像之间的交点以及图像对之间的链接(link)组成,链接始终在具有第一分辨率的图像与具有第二分辨率的图像之间,第二分辨率在多分辨率图像系统中紧邻着且高于第一分辨率。

图像可以均包括各自覆盖相应区域的图块,具有第一分辨率的图像的每个图块与具有第二分辨率的图像的图块相关联,具有第二分辨率的图像的图块共同覆盖与它们相关联的图块相应的区域。

可替换地,在遍历与它们相关联的图块之前,空间填充曲线可以遍历共同覆盖该区域的具有第二分辨率的图像的所有图块。在此情况下,空间填充曲线可以在遍历与它们相关联的图块之前遍历共同覆盖该区域的具有第二分辨率的图像的图块的一部分。并且可任选地,图块的一部分可以是图块的一半。

在所有情况下,对象可以是地形,并且图像可以是地图。

还提供了一种用于产生这种存储器装置的计算机实施的方法。该方法包括:提供具有线性轨道的存储器装置;提供对象的多分辨率图像系统;以及根据连续注入将多分辨率图像系统记录在存储器装置上。

还提供了一种基于这个存储器装置的用于对象渲染的计算机实施的方法。该方法包括渲染对象的多分辨率图像系统的图像中的一个或若干图像的至少一部分,该渲染根据图像内的连续的水平移动和/或垂直移动而被更新。

还提供了一种计算机程序,其包括用于执行上述方法中的任何一个方法或两者的指令。

还提供了一种计算机可读储存介质,其上记录有该计算机程序。

还提供了一种包括处理器的系统,该处理器耦合到图形用户界面、耦合到其上记录有计算机程序的存储器、和/或耦合到诸如上面所提供的存储器装置之类的存储器装置。

附图说明

现在将以非限制性示例的方式并且参考附图来说明本发明的实施例,在附图中:

图1示出了用于产生存储器装置的方法的示例的流程图;

图2示出了包括存储器装置的系统的示例;以及

图3-图13例示了多分辨率地图系统和其在存储器装置上的记录和/或基于这种存储器装置的地形渲染。

具体实施方式

多分辨率图像系统包括均以相应分辨率(即,细节的等级)表示对象(即,相同对象)的图像集合(即,允许2d图形表示的数据段)。图像可以是任何类型的图像,例如平面或立体地图、照片、人工图像或cad模型和/或渲染。对象本身可以是任何类型的对象,例如地形、制造产品、真实世界对象、人造或模拟对象、cad模型。在任何情况下,图像至少包含允许以不同分辨率渲染对象并从而以不同分辨率显示对象的2d图形表示的数据。以不同分辨率呈现不同图像(例如,相同对象的不同图像)允许(例如,用户)在该图像集合内交互地“导航”,从而更新渲染(渲染在对象上的位置和/或分辨率)。在下文中,出于说明的目的并且因为这是在数据大小在为了运行渲染应用的紧要关头特别重要的背景下,讨论集中于图像是地图并且对象是地形的示例,以使得存储器装置在其上记录地形的多分辨率地图系统。然而,以下讨论类似地适用于其它类型的对象。

如图1上所示,所提供的存储器装置是可获得的并且可以通过计算机实施的方法产生,该方法包括提供s12具有线性轨道的存储器装置,以及提供s14多分辨率地图系统。该方法然后包括根据连续注入在存储器装置上记录s20多分辨率地图系统。记录s20可以以任何方式并且根据标准硬件/软件执行,只要遵守连续注入的记录结构约束。记录s20可以从头开始执行,例如由在s14处从远程服务器接收多分辨率地图系统的客户端执行。可替换地,记录可以通过对已经被记录在存储器装置上的多分辨率系统的碎片整理(例如,但在碎片整理之前不遵守连续注入)的方式来构成已记录数据的重组,该数据仅在s14处从存储器装置被检索。存储器装置可以在任何应用方法中使用,例如在稍后讨论的地形渲染应用中。

本文讨论的方法是计算机实施的。这意味着这些方法的步骤(或基本上所有步骤)由至少一个计算机或任何类似系统来执行。因此,该方法的步骤可能完全自动地或半自动地由计算机执行。在示例中,可以通过用户-计算机交互来执行对该方法的至少一些步骤的触发。所需的用户-计算机交互的等级可以取决于自动性预见的等级,并且与实施用户的愿望的需要平衡。在示例中,该等级可以是用户定义的和/或预定义的。

这些方法的计算机实施方式的典型示例是利用适于该目的的系统来执行这些方法。该系统可以包括耦合到存储器和图形用户界面(gui)的处理器,该存储器上记录有包括用于执行该方法的指令的计算机程序。该存储器还可以储存数据库。存储器是适于这种储存的任何硬件,可能包括若干物理上不同的部分(例如,一个用于程序,并且可能一个用于数据库)。值得注意的是,系统还可以包括耦合到处理器的存储器装置。该存储器装置可以在其上记录多分辨率地图系统(可能根据连续注入),这取决于在执行s20之前或之后是否考虑它(注意,在下文中,当被称为“存储器装置”时,通常认为它根据连续注入在其上记录了多分辨率地图系统)。

图2示出了这个系统的示例,其中,该系统是客户端计算机系统,例如,用户的工作站。该示例的客户端计算机包括连接到内部通信总线1000的中央处理单元(cpu)1010,同样连接到总线的随机存取存储器(ram)1070。客户端计算机还被提供有与连接到总线的视频随机存取存储器1100相关联的图形处理单元(gpu)1110。视频ram1100在本领域中也称为帧缓冲器。大容量储存设备控制器1020管理对可能在其上记录了多分辨率地图系统的存储器装置(在该示例中,大容量存储器设备,即硬盘驱动器1030)的访问。适合于实体地体现计算机程序指令和数据的大容量存储器设备包括所有形式的非易失性存储器,例如包括:半导体存储器设备,例如eprom、eeprom和闪存设备;磁盘,例如内部硬盘和可移动盘;磁光盘;和cd-rom盘1040。前述内容中的任何一个可以由专门设计的asic(专用集成电路)来补充或并入其中。网络适配器1050管理对网络1060的访问。客户端计算机还可以包括触觉设备1090,例如光标控制设备、键盘等。在客户端计算机中使用光标控制设备以允许用户选择性地将光标定位在显示器1080上的任何期望的位置处。另外,光标控制设备允许用户选择各种命令并输入控制信号。光标控制装置包括用于至系统的输入控制信号的多个信号生成设备。通常,光标控制设备可以是鼠标,鼠标的按钮用于生成信号。可替换地或另外,客户端计算机系统可以包括触敏板和/或触敏屏。

计算机程序可以包括可由计算机执行的指令,该指令包括用于使上述系统执行所述方法的模块。程序可以是可记录在任何数据储存介质上,包括系统的存储器。该程序可以例如在数字电子电路中、或计算机硬件、固件、软件或它们的组合中得以实施。程序可以被实施为装置,例如实体地体现在机器可读储存设备中的产品以用于由可编程处理器来执行。方法步骤可以由可编程处理器来执行,该可编程处理器执行指令的程序以通过对输入数据进行操作并生成输出来执行该方法的功能。因此,处理器可以是可编程的并且被耦合以从数据储存系统、至少一个输入设备和至少一个输出设备接收数据和指令并且向数据储存系统、至少一个输入设备和至少一个输出设备发送数据和指令。应用程序可以以高级过程语言或面向对象的编程语言来实施,或者如果需要的话以汇编或机器语言实施。在任何情况下,语言可以是编译或解释语言。程序可以是完整安装程序或更新程序。程序在系统上的应用在任何情况下导致执行该方法的指令。

存储器装置以改进的方式在其上记录了多分辨率地图系统。值得注意的是,由于经由空间填充曲线在地图与线性轨道之间的特定“连续注入”关系,以及该空间填充曲线使不同地图交织并与每个地图相交(intersect)形成希尔伯特曲线的事实,存储器装置在涉及地形渲染方法时和在地图内移动和/或在两个交织的地图之间移动时确保头/读取器的物理移动相对较小(就距离而言,例如以毫米或微米计),并且因此加载相对较快(就时间而言,例如以秒或毫秒计)。

存储器装置可以是适于持久(即,非易失性)存储器装置的任何硬件系统(例如,嵌入式软件)。事实上,多分辨率地图系统可能具有对于完全储存在易失性存储器上而言过大的尺寸(例如,量值为1兆八位字节或to,即1012个八位字节,例如大于0.1或0.5to和/或低于2或10或100to)。这尤其在存储器装置被包括(即,物理耦合)至与运行基于多分辨率地图系统的应用的客户端系统相同的机器时是真的,但是在存储器装置被包括至这种应用的服务器系统时也是真的。存储器装置可以例如是任何类型的磁盘驱动器和/或硬盘驱动器,例如硬盘驱动器(hdd)。

如本领域中众所周知的,这个存储器装置通常具有至少一个线性轨道以记录信息/数据(最常见的是若干同心线性环或圆柱体,但有时是单个轨道,例如在软盘的情况下)。在由存储器装置系统执行任何一系列读取和/或写入操作期间,当沿线性轨道连续地和顺序地分配操作时,存储器装置系统的头/读取器(例如,盘读写头)的物理移动就距离而言及因此就时间而言是最佳的(即,最小的)。存储器装置利用该特性来优化多分辨率地图系统的记录,如下面更详细地论述的。

注意,以下论述在不失任何普遍性的情况下适用于线性轨道不是单个(例如,多分辨率地图系统就存储器尺寸而言对于单个线性轨道过大)的情况。实际上,在这种情况下,本论述可以直接适用,例如如果执行若干线性轨道之间的“连接”(其可以由本领域技术人员以任何方式来完成)。例如,可以沿着连接的线性轨道及其连接顺序地连接存储器装置的若干线性轨道,例如相邻的线性轨道(仍然用于头的最小移动),由此定义全局线性轨道-即所考虑的单个和不同线性轨道的累积。这本身在本领域是众所周知的。因此,为了清楚起见,在不失任何普遍性的情况下,以下论述参考单个线性轨道。

存储器装置在其上记录(即,其物理储存)地形的多分辨率地图系统。术语“地形”指示任何土地区域。如已知的那样,地形的“多分辨率地图系统”是组织数据的集合,其包括地形的地图集合。每个地图以相应的分辨率表示地形(即,其至少一部分)。这意味着每个地图包含允许以其相应分辨率来渲染(以及因此图形显示)地形的数据。可以设想任何类型的渲染(例如,2d和/或3d,例如彩色和/或灰度级)。因此,表示地形的数据被储存在存储器装置的专用物理组件上(具体而言,储存在线性轨道上,如下所解释的)。根据多分辨率地图系统的预期应用,数据可以是允许渲染地形的任何类型的数据。

这个数据结构可以由许多不同的应用(例如,在前提及的应用)使用,该应用包括对地形的多分辨率地图系统中的一个或若干地图的至少一部分的渲染,例如,在用户交互和/或应用的自动模式时。通常,当这种应用正在运行时,根据地图内的连续的水平移动和/或垂直移动(它们的组合是可能的)来(连续地)更新渲染(即,渲染演变/被修改),这种移动可能包括在由用户和/或应用的任何过程所命令的移动内。水平移动是相对于固定分辨率的移动(换言之,水平移动是发送到应用以渲染地形的不同部分但保持当前分辨率的请求)。垂直移动是相对于地形的固定点的移动(换言之,垂直移动是发送到应用以渲染地形同时将固定点保持在渲染内的相同位置处并修改分辨率(即,典型地或放大或缩小)的请求)。这种移动是连续的,意味着在渲染从地图的一部分到另一部分或从一个分辨率到另一个分辨率的演变中没有“跳转”。应当注意,从这种方法的计算机实施方式的角度来理解连续性的概念,其中数据是数字的。

换言之,在每个给定的时间,以给定分辨率渲染地形的至少给定部分。现在,在当时取决于预期应用的具体调度(例如,在多分辨率地图查看应用中,例如在google地图中,所述调度由用户执行的操作序列(如果有的话)来定义,例如包括以下各项中的任意一个或其组合:向北、东、南和/或西移动和/或放大和/或缩小,例如通常借助鼠标点击和/或触摸手势执行的),例如连续地更新地形要渲染的部分和/或要以其来执行渲染的分辨率(注意,连续更新不一定意味着不断地修改渲染,因为显然可以实施暂停,例如当用户暂停以观察地图的特定特征时)。

在任何移动和由此被更新的渲染后,多分辨率地图系统的不同部分需要从存储器装置加载到应用所使用的存储器(例如,所分配的易失性存储器)中。当应用伴随着上述移动而运行时,在存储器装置上记录多分辨率地图系统的具体方式允许这种加载的时间增加(当然尽管这并不禁止应用也允许“跳转”,如有必要的话)。

实际上,根据从地图集合的空间填充曲线向线性轨道的连续注入来进行记录。换言之,多分辨率地图系统的地图集合不以任何方式(例如,随机地或根据默认操作系统和/或存储器装置行为)储存/记录在存储器装置上。相反,记录考虑了线性轨道的记录块的序列,并且储存形成关于特定结构/架构的多分辨率地图系统的不同数据段。为了理解记录的结构,下面将参考具体方案(即,s20的示例),尽管记录方法不限于这样的方案,因为可以等同地设想实现所需结构的任何方案。在示例中,记录方案实际上在于遵循空间填充曲线,并且当遇到多分辨率地图系统的相对应的数据段时,记录方案在线性轨道的块上顺序地并连续地写入/储存它们。实际上,空间填充曲线“填充”地图的集合,意味着空间填充曲线是概念上遍历/浏览集合中的所有地图的所有位置的曲线(即,位置是覆盖地图的区域的最小单位,地图是其所有位置的有限和离散的分块,例如稍后论述的“图块(tile)”),并且这种位置对应于相应的数据段(即,允许渲染这种位置的最小数据,注意,这种数据段是彼此独立的,如已知的那样)。换言之,一个接一个地遇到均与地图的相应位置相关的数据段并且一个接一个地记录在线性轨道上(因此,线性地、连续地和顺序地)。这是表述“根据从地图集合的空间填充曲线向线性轨道的连续注入”的含义(注入从空间填充曲线的参数化的域开始,对应于具有记录功能的这种参数化的组成,其将数据段分配到线性轨道的相应块)。

如已知的,空间填充曲线连续地填充空间。在当前情况下,空间填充曲线连续地遍历地图集合。这允许在基于多分辨率地图系统的应用中渲染更新和/或利用用户动作的连续性,以使得存储器装置头对于这个应用的给定运行,特别是相对于水平移动,行进相对小的物理距离。

现在,空间填充曲线与每个地图之间的交点在希尔伯特曲线上。这意味着对于多分辨率地图系统的地图集合中的每个地图,存在可以在地图上定义并且当空间填充曲线遍历/填充相应地图(或由相应地图支持)时支持空间填充曲线的希尔伯特曲线。如已知的那样(并且如稍后进一步详细描述的),希尔伯特曲线形成2d空间填充曲线的特定类别。在基于多分辨率地图系统的应用的背景下,就希尔伯特曲线的特定模式而言证明是特别有效的(就存储器装置头行进的距离而言)。

此外,空间填充曲线使不同的地图交织。这仅仅意味着曲线通过地图对之间的链接来连接集合的所有地图。实际上,空间填充曲线确切地由空间填充曲线与所有地图之间的交点以及地图对之间的这种链接组成。这确保了在线性轨道上共同记录集合的不同地图,并且因此确保了存储器装置头相对于垂直移动也行进相对小的物理距离。

在示例中,链接始终在具有第一分辨率的地图与具有第二分辨率的地图之间,第二分辨率在多分辨率图像系统中紧邻着且高于第一分辨率(或者等同地,第一分辨率紧邻着且高于第二分辨率,如该链接可以被视为无向的,而不管在记录s20时空间填充曲线按照什么方向遍历,并在连续注入的定义中如此考虑)。如前所述,多分辨率地图系统的地图均具有相应的分辨率,注意到两个地图可以具有相同的分辨率(如果地图覆盖地形的不同区域,但是也注意到,在不失任何普遍性的情况下,相同分辨率的所有这种地图可以实际上被认为以所考虑的分辨率覆盖地形的单个地图)。可以逐级地排序分辨率集合,以使得从最低分辨率到刚好低于最高分辨率的分辨率,每个分辨率都具有“下一较高的”分辨率(即,排序中的下一个分辨率)。因此,可以按照分辨率对交织进行排序(换言之,遵循地图的分辨率之间的顺序来对交织进行排序),以使得相对于这种分辨率序列来连接集合的地图。这改善了存储器装置头相对于垂直移动行进的物理距离的相对减小。

此外,交织可以是使得对于至少一对地图(例如,例如连续分辨率的所有对,除了由最低分辨率地图和下一较高分辨率地图形成的对),链接的数量高于或等于2,例如该数在例外的情况下等于1(并且在示例中等于该对中最低分辨率的地图的图块的数量,例如,将所有这样的图块链接到下一较高的分辨率的地图的一组图块的交织)。换言之,交织在某种意义上散布在地图上(而不是在开始填充下一级分辨率的地图之前使空间填充曲线完成填充一个分辨率等级的所有地图)。具有第一分辨率的地图的每一个图块可以与具有第二分辨率的地图的图块相关联,该具有第二分辨率的地图的图块共同覆盖与它们相关联的图块相应的区域。如已知的,在多分辨率系统中,地图可以包括均覆盖相应区域的图块,地图的图块由此将地图分块。现在,多分辨率系统的结构可以是树结构(例如,四叉树),以使得给定分辨率的图块对应于下一较高的分辨率的若干图块(在四叉树的情况下为四个这样的图块),该对应关系使得由第一分辨率的图块所覆盖的地形的区域(例如,准确地)与由下一较高的分辨率的所述(例如,四个)图块共同覆盖的地形的区域相同(表述“共同覆盖”是指图块覆盖不同的区域,以使得这样的区域被累积/相加/连结以评估所述对应关系)。这个特定记录结构确保了对存储器装置头所行进的距离的最佳管理,作为对处理水平移动的可能性以及垂直移动的可能性两者的需要的良好折衷。

因此,可以提出一种用于在计算机化线性储存模块上储存图像以用于快速访问的方法,该图像按照不同等级的细节被记录在储存模块上。每一级细节包括图像的图块集合。根据遵循“类希尔伯特曲线”的路径将不同等级的细节的图块储存在储存模块上,该路径还双向地遵循不同等级。

在示例中,存储器装置使得图像集合被储存在线性储存器(例如,硬盘驱动器)上。图像集合被应用使用作为多分辨率系统(例如,图像之间的关系形成层级树)。数据的物理位置(例如,硬盘驱动器上的群集)在线性储存器上排序,以反映借助空间填充曲线由索引给出的顺序。该空间填充曲线具有以下特性。它将多分辨率系统映射到线性空间。它保持接近希尔伯特曲线,因为这确保了水平移动的最佳性能。它常常访问高/低等级,以使得垂直移动(“放大/缩小”)不会完全是不利的。

现在参考图3-6论述地形渲染的示例性特征。在示例中,存储器装置涉及具有地形渲染的3d应用。

涉及地形渲染的应用可能涉及通过多分辨率地图系统(例如,地图/图像的层级系统)表示的地形。这些地图可以储存各种数据,例如漫射颜色(航空摄影、卫星影像或人工着色图像)或地面高程(高度图或位移图)。图3和图4示出了这种地图的示例。具体而言,图3示出了形成四叉树的地图的多分辨率系统的示例,来自一个等级的每个图块在下一等级上具有四个相对应的图块。并且图4示出了地图的多分辨率系统的另一示例。右侧示出了来自不同等级的图块。来自高等级的图块覆盖面积更大。来自低等级(对应于高分辨率)的图块更详细。这种应用还可以涉及要向用户显示的地形的渲染图像。这可以是简单的2d自顶向下视图(例如,在google地图中)或3d渲染图像,例如,从用户决定的视点。这种应用还可以涉及用户在场景中导航(移动生成地形的渲染图像的视点)的能力。可以有三种移动:1/水平移动也称为“飞越”:用户连续地飞行在地形上方,但与“海平面”保持相同的高程。2/垂直移动也称为“放大/缩小”:用户站在同一点,但是从“海平面”连续地改变其高程。3/远距传动(teleportation)也称为“跳转”:用户瞬间改变其位置(例如,眨眼间从巴黎到纽约,而没有过渡)。以下的url提供了有关这些公知概念的更多细节和定义:http://en.wikipedia.org/wiki/terrain_rendering。因此,多分辨率系统可以是层级树(例如,四叉树),其中,每个节点保存表示具有给定等级的细节的整个世界的一部分的地图/图像。节点的子节点可以是具有较高等级的细节的节点的子图像(如图3所示)。

在2d自顶向下视图的情况下的示例中,地形由地图的多分辨率系统表示。在系统的上部部分上,地图覆盖了地形的大部分,但只有很少的细节。这些地图通常在用户的视点远离地面(例如,用户需要看到整个大陆,但没有细节)时用于显示过程中。在系统的下部部分上,地图覆盖了地形的小部分,但有大量的细节。这些地图通常在用户的视点靠近地面时(例如,用户需要看到街道,但没有每个人物大小的细节)用于显示过程中。显示过程的工作是从储存每个地图的数据库(硬盘驱动器、远程服务器等)仅将取决于用户视点(例如,位置和取向)的所需地图加载到直接存储器(ram、视频存储器等)。

在3d视图的情况下的示例中,地形在屏幕上被显示为3d模型。然而,在大多数情况下,该3d模型是由应用在屏幕空间中在运行时生成的栅网或样条曲面。该栅网的顶点(样条曲面的控制点)按照作为地图集合储存的高程/位移数据而被移位。所以这回到了地形由地图的多分辨率系统表示的情况。许多论文集中在如何有效地生成该3d栅网(例如,经由剪辑映射、无缝补丁等)。这些论文的索引可以在以下url找到:http://vterrain.org/lod/papers/。这个主题在下文中不再进一步讨论,因为知道所有情况处理相同表示:地图的多分辨率系统就足够了。与非地形对象(例如,树木、建筑物、河流)的渲染的组合也是常见的,但是这也不在本论述的范围内。

如前所述,表示地形的地图集合可以非常大,并且加载时间可能是一个问题。存储器装置提出的解决方案与文件在硬盘驱动器上的物理位置有关。实际上,在硬盘驱动器上,数据被物理储存在群集中。注意,数据被储存在硬盘驱动器上的方式与文件系统的“目录树”视图无关。事实上,用户可能认为在“目录树”视图中接近的两个文件(例如,同一文件夹中的两个文件)实际上可以储存在彼此远离的群集上。此外,单个内容文件可以储存在若干不相连的群集上。在某种意义上,硬盘驱动器可以被视为线性储存器,并且若干“读取”操作的性能受到读取群集之间的距离的影响,因为读/写头必须从一个物理位置移动到另一个物理位置。也可以创建重新组织磁盘上的数据的软件。这是在简单的假设(例如,收集同一物理位置上的相同文件的数据,使用中最小化群集之间的自由空间,等等)的情况下磁盘碎片整理器所做的(例如,这详细记载在以下url:http://en.wikipedia.org/wiki/defragmentation)。

因此,在以下的所有情况下,存储器装置提供了解决方案:必须处理图像(例如,地图)的多分辨率系统,应用需要不断地加载/卸载这些地图(非常可能是应用的性能瓶颈),地图是被物理储存在线性储存器上的图像文件,以及哪些地图需要在另一个之后被加载与用户如何导航到该场景(即,“飞越”、“放大/缩小”或“跳转”)密切相关。图5示出了在“飞越”(左)、“放大/缩小”(中间)或两者的组合(右)的情况下可能在另一个(黑色)之后被加载的地图(灰色)。“飞越”意味着应用程序需要加载在多分辨率表示的相同等级的接近的地图。“放大/缩小”意味着应用程序需要加载在多分辨率表示的下一较高/较低等级的地图。“跳转”本质上是一个不可预测的移动。因此,下面不再进一步论述。

具体而言,多分辨率系统(例如,树)可以映射到线性储存器上(如图6所示,其在左侧表示多分辨率系统并且在右侧表示线性储存器)。在树上接近(垂直或水平)的两个地图可以接近地记录在线性储存器上,因为它们可能一个接一个地被加载。

如果仅考虑水平移动(在树的单个等级中移动):存储器装置通过呈现良好的局域性保持行为来实现高加载速度。因此,选择空间填充曲线(具体而言希尔伯特曲线)是特别有效的。以下url提供详细信息:http://en.wikipedia.org/wiki/hilbert_curve。图7示出了空间填充曲线的示例:从左到右为希尔伯特曲线、莫顿曲线、摩尔曲线和皮压诺曲线。希尔伯特曲线证明是水平移动的最佳选择。

现在,如果考虑多分辨率系统中的水平和垂直移动,一个问题是确定借助希尔伯特曲线的索引如何拟合。这相当于向水平移动问题增加第三维度。如希尔伯特曲线的空间填充曲线具有3d变量(甚至n-d变量),但是已知的变量被设计用于“立方体形”空间:上和下的等级具有相同的维度,并且仅在此情况下保证局域性保持行为。这在图8上示出。多分辨率地图系统更可能具有“金字塔形”形式。

因此,一个想法(而不是示例中留存的)是逐级进行,并且通过使用借助希尔伯特曲线的索引将多分辨率系统的每个等级映射到1d段。这在图9上示出。已经提到,对于水平移动,这个解决方案被证明是最佳的。然而,该解决方案对于“放大/缩小”移动不是最优的,因为处于不同等级n和n+1的两个地图m1、m2的群集之间的距离是巨大的。对于水平和垂直移动的组合,该解决方案不是最优的,不同于上述示例的保留解决方案。

在示例中,本文提出的空间填充曲线将多分辨率系统映射到线性空间。它保持接近希尔伯特曲线,因为这确保了水平移动的最佳性能。它常常访问高/低的等级,以使得垂直移动(“放大/缩小”)不会完全是不利的。如果在多分辨率系统中水平地移动、垂直地移动或两者,这些条件确保新曲线具有良好的局域性保持行为。

在示例中,因此可以提供根据以下作用的软件组件。一旦设置且没有修改数据库(地图/图像的多分辨率系统),软件组件就遍历数据库。图像文件用空间填充曲线索引。收集和重新组织包含相对应的数据的群集以反映由索引给出的顺序。只要没有修改数据库,就需要再次调用软件组件。具有使用此数据库进行地形渲染的任何3d应用都会提高其性能。如果允许水平移动和垂直移动或两者的组合,则借助特定空间填充曲线的索引将产生良好的性能。

在示例中,因此可以提供一种计算机化方法,用于在计算机化线性储存器上有效地储存图像集合(在示例中,地图的多分辨率系统,以用于地形渲染目的),以使得需要从该图像集合加载图像(例如,用于地形渲染目的(2d或3d))的任何应用将使其加载时间略微提高。如果数据库(图像集合)保持不变,则该计算机化方法不需要在地形渲染应用的若干使用期间以及之间被执行。

这种方法可以像磁盘碎片整理器一样工作,这是因为它可以将磁盘上的群集移动到优化的数据访问。然而,它确实致力于优化地形渲染应用的性能的操作。给定地图/图像的多分辨率系统(其作为图像文件被储存在磁盘上),该方法遍历多分辨率系统。图像文件以特定的空间填充曲线来索引。收集并重新组织包含相对应的数据的群集以反映由索引给出的顺序。可以如前所述地构建特定的空间填充曲线。它将多分辨率系统映射到线性空间。它保持接近希尔伯特曲线,因为这确保了水平移动的最佳性能。它常常访问高/低的等级,以使得垂直移动(“放大/缩小”)不会完全是不利的。

在下文中,参考图10-13论述有效的“空间填充曲线”的两个可替换的示例。

在第一示例中,空间填充曲线在遍历与它们相关联的图块之前遍历共同覆盖该区域的具有第二分辨率的地图的所有图块。换言之,参考前面提及的多分辨率系统的四叉树表示,在遍历父节点之前(或等同地,在其之后)由空间填充曲线遍历节点的所有子节点。这相当于首先借助希尔伯特曲线对每个等级进行分类(如图10所示),然后使结果交织,以使得在多分辨率系统中一个等级中的每个图像后跟随着其分支的所有图像(如图11所示)。

在第二示例中,空间填充曲线在遍历与它们相关联的图块之前遍历共同覆盖该区域的具有第二分辨率的地图的图块的一部分(例如,恰好一半)。换言之,在遍历父节点之前(或等同地,之后)由空间填充曲线遍历节点的一半子节点,并且然后遍历另一半子节点。这相当于首先借助希尔伯特曲线对每个等级进行分类(如图12所示),并且使结果交织,以使得在多分辨率系统中一个等级中的每个图像被插入到其分支的图像的中间(如图13所示)。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1