用于蒙特卡罗体积渲染的预采样的光子图的制作方法

文档序号:13166038阅读:272来源:国知局
用于蒙特卡罗体积渲染的预采样的光子图的制作方法



背景技术:

高度现实的或“影片的”质量体积渲染是基于随机蒙特卡罗路径追踪技术。蒙特卡罗路径追踪对行进通过体积的大量光射线进行采样以生成现实渲染图像。经采样的射线中的许多射线没有撞击光源,因而没有最终贡献于所渲染的图像。引入双向射线追踪或者光子映射来对没有撞击光源的射线进行采样。然而,双向射线追踪和光子图渲染方法显著地增加了渲染图像的计算成本。

光子映射是用于生成准确且现实的图像的双程渲染方法。光子映射方案的第一程通过作为光子从光源向体积中发射能量来执行,并且当这些光子撞击体积表面时,光子特性作为光子图而存储在均衡的k维树(kd树)中。在光子映射方案的第二程中,对所存储的光子特性进行采样以用于渲染图像。视图独立地存储光子图,从而允许从体积的任何视点或视角进行渲染。



技术实现要素:

本实施例涉及用于蒙特卡罗体积渲染的预采样的光子图。作为介绍,以下描述的本实施例包括用于针对蒙特卡罗体积渲染的光子图进行采样的装置和方法。本实施例还包括用于使用预采样的光子图生成蒙特卡罗体积渲染的装置和方法。从体积的扫描数据生成光子图,并且以高效的方式对光子图进行采样(例如,预采样)和进行存储。例如,将光子图存储为o-缓冲区或均匀(uniform)缓冲区。o-缓冲区适配于扫描数据和/或转移函数以便优化供蒙特卡罗体积渲染中使用的o-缓冲区的补偿。经采样的光子图可以基于所存储的o-缓冲区或均匀缓冲区而补偿渲染的附加计算成本中的一些。对光子图的采样可以离线执行(例如,预采样)以供随后在交互式渲染期间使用,从而减少计算成本并且增加交互式渲染的速度。

在第一方面中,提供了一种用于生成体积渲染的方法。该方法包括接收体积的扫描数据以及接收用于体积的光子图。光子图是从扫描数据生成的。该方法还包括从扫描数据和光子图生成体积渲染。生成体积渲染包括体积的蒙特卡罗路径追踪和光子图采样。

在第二方面中,提供了一种用于对光子图进行预采样以用于蒙特卡罗体积渲染的方法。该方法包括接收用于体积的扫描数据,生成用于扫描数据的间接射线的光子图,以及通过对光子图进行非均匀采样而将光子图存储为o-缓冲区。

在第三方面中,提供了一种用于渲染医学体积的系统。该系统包括扫描仪,该扫描仪配置为捕获患者的扫描数据。渲染器配置为从扫描仪接收患者的扫描数据,从扫描数据生成光子图,以及将光子图存储在o-缓冲区中。渲染器还配置为从扫描数据和o-缓冲区生成患者的体积渲染。

本发明由所附权利要求限定,并且本章节中的内容不应当视为对那些权利要求的限制。本发明的另外的方面和优点在下文结合优选实施例进行讨论并且可以随后被独立地或者组合地要求保护。

附图说明

组件和各图未必按照比例,代之以将重点放在说明实施例的原理上。此外,在各图中,相同参考标记遍及不同视图而指明对应部分。

图1图示了存储光子图的自适应o-缓冲区的示例。

图2图示了计算体积的位置处的照明的示例。

图3图示了对o-缓冲区进行采样以生成均匀缓冲区的示例。

图4图示了用于生成体积渲染的方法的实施例的流程图。

图5图示了用于对光子图进行采样以用于生成体积渲染的方法的实施例的流程图。

图6图示了用于对光子图进行采样并且生成体积渲染的系统的实施例。

具体实施方式

本实施例生成并且利用预采样的光子图(例如,预计算的光子图)以改进蒙特卡罗体积渲染的全局光照精度。对光子的预采样允许光子映射向蒙特卡罗体积渲染框架中的集成,并且使得能够离线(即,预先)执行计算上昂贵的运算。在交互式体积渲染期间使用预采样的光子图以改进全局照明效果并且增加生成体积渲染的速度。交互式体积渲染允许用户实时地操控所渲染的图像,诸如经由旋转、缩放和平移。另外,因为光子图是视图独立的并且离线执行计算上昂贵的采样,所以可以在交互式渲染期间快速地并且高效地对光子进行采样,从而增加渲染所显示的图像所要求的计算的速度。

光子图的预采样利用自适应o-缓冲区来高效地存储光子图。o-缓冲区渲染基元,比如常规体积渲染,而且还允许在非均匀位置处进行采样。o-缓冲区存储针对由体积网格确定的每一个采样位置的补偿。图1图示了存储光子图的自适应o-缓冲区的示例。o-缓冲区101存储撞击体积的每一个位置的光子的方向和能量(诸如,在体积的位置103处这样)。通过存储光子方向和能量与补偿值,可以记录撞击体积的每一个光子的精确位置和特性。

另外,o-缓冲区使用基于gpu的八进制树结构,从而允许o-缓冲区在采样期间适配于扫描数据和/或转移函数。体积的扫描数据包括体积的不同物理测量结果和特性。例如,对于单光子发射计算机断层显像(spect),测量所发射的辐射。对于计算机断层显像(ct),以亨斯菲尔德单位测量衰减。扫描数据可以不映射颜色或其它信息。向扫描数据应用转移函数以确定可见和不可见的体积区域,并且应用颜色和透明度以用于渲染和显示体积的图像。例如,相比于实区,由于应用于扫描数据的所选转移函数而透明、半透明或非常均质的体积区可以利用光子图中的不同数目的光子进行采样。取决于所指定的转移函数,o-缓冲区可以适配成存储体积的较少光子透明区。对于体积的实区,诸如体积的边缘,o-缓冲器可以适配成存储附加光子以用于准确的照明。

例如,返回参照图1,均质区,诸如区105,可以利用一个或多个光子(诸如单个光子103)进行采样。将非均质区划分成更多的较小的区,诸如区109,每一个具有一个或多个光子,诸如光子107。如在图1中所描绘,光子图的非透明、非半透明或非均质区通过比透明、半透明或非常均质的区更多的光子来表示。因而,光子图的不同大小的区可以被非均匀采样以生成非均匀的自适应o-缓冲区101。自适应o-缓冲区101被存储用于随后在蒙特卡罗体积渲染期间使用,并且可以传送给另一个设备以用于执行体积渲染。

使用所存储的o-缓冲区来执行蒙特卡罗体积渲染。例如,当执行全局照明计算时,对o-缓冲区进行采样来搜集所存储的光子以用于渲染。使用所存储的光子,将双向反射分布函数(brdf)应用于所存储的光子来计算全局光照贡献。图2图示了计算体积的位置处的照明的示例。例如,描绘了从传入光子203(例如,存储为图1中的光子103)计算体积201的位置处的照明。将brdf207应用于传入光子203以根据brdf计算反射光205。在采样期间,将具有到其中评估照明的点的最小距离的数个光子与brdf进行集成。使用与每一个光子一起存储在光子图中的传入方向来执行brdf计算。例如,使用brdf,蒙特卡罗路径追踪用于主要或直接光贡献(例如,来自光源的射线),并且光子图用于次要或间接光贡献(例如,来自渲染或相机镜头的视点的射线)。o-缓冲区可以用于以分辨率为代价(例如,较低图像质量)而加速渲染计算。

为了进一步加快渲染计算,可以对光子图或自适应o-缓冲区进行采样或重采样以生成均匀缓冲区。图3图示了对o-缓冲区101进行采样以生成均匀缓冲区的示例。例如,根据均匀网格而将自适应o-缓冲区101预采样成均匀缓冲区301。当与o-缓冲区相比时,均匀缓冲区301可以用于更加高效的评估,并且准许计算成本方面的进一步减少。均匀缓冲区301可以用于以进一步的分辨率为代价(例如,较低图像质量)而进一步加速渲染计算。在示例中,在交互式渲染期间使用均匀缓冲区301以生成预览渲染图像,而o-缓冲区101后续用于生成较高分辨率的图像。o-缓冲区101和均匀缓冲区301可以减少存储光子图所要求的存储器量。

在另一个实施例中,可以执行附加计算以进一步减少存储光子图所要求的存储器量。标识或捕获光子图中的类似光子以用于平均计算。例如,如果将两个或更多光子标识为在紧密邻域中并且在非常类似的角度下(例如,传入角度差别小于预确定的阈值)击打体积,则可以对光子进行平均以生成要存储为单个光子的单个方向、位置和能量。另外,可以向类似光子应用加权平均。存储光子图所要求的存储器方面的减少以及渲染的计算成本方面的减少可以以光子图和渲染图像的较低分辨率为折衷而实现。

图4图示了用于生成体积渲染的方法的实施例的流程图。该方法由图6的系统(以下讨论)和/或不同的系统来实现。可以提供附加的、不同的或者更少的动作。例如,可以省去动作405。以所示出的次序提供该方法。可以提供其它次序,和/或可以重复动作。例如,动作407可以重复以生成来自不同视点或视角的体积渲染。另外,可以作为并行动作而并发地执行动作。例如,动作401和403可以并发地执行。

在动作401处,图像处理器接收体积的扫描数据(例如,图像数据)。体积是任何三维体积。例如,体积是医学体积,诸如患者。在动作403处,图像处理器接收用于体积的光子图。例如,光子图从扫描数据生成。可替换地,图像处理器使用所接收的扫描数据来生成光子图。通过从光源发射光子并且将光子的交互存储在树结构中而生成光子图。所发射的光子与体积的几何结构进行交互直至光子丢失(即,不再与体积交互)或被吸收。光子与体积的交互在概率上进行确定并且取决于体积和/或另一表面的材料性质。所吸收的光子然后存储在树结构中以生成光子图。

在动作405处,图像处理器存储光子图。例如,对光子图进行采样并且存储为非均匀和/或自适应o-缓冲区。通过基于扫描数据和/或转移函数而存储用于体积的透明、半透明、均质或其它区的较少光子,非均匀自适应o-缓冲区适配于扫描数据和/或转移函数。可替换地,对光子图进行采样并且存储为非均匀o-缓冲区和均匀缓冲区。对于缓冲区的多个均匀大小的网格位置中的每一个而言,均匀缓冲区存储得较少(例如,一个光子)。

在动作407处,渲染器从扫描数据和光子图生成体积渲染。例如,使用体积的蒙特卡罗路径追踪和光子图采样来生成体积渲染。渲染器使用蒙特卡罗路径追踪与扫描数据来对渲染的直接光贡献进行渲染,并且对光子图进行采样以使用双向反射分布函数渲染间接光贡献。直接光贡献来自光源的主要射线,并且间接光贡献来自渲染的视点或视角(例如,所模拟的相机镜头)的次要射线。

在实现中,渲染器使用非均匀o-缓冲区和均匀缓冲区来执行交互式体积渲染。例如,使用均匀缓冲区以第一分辨率渲染体积(例如,以生成预览图像),并且使用自适应o-缓冲区以第二分辨率渲染体积(例如,来以比预览更高的分辨率生成交互式体积渲染)。另外,因为光子图是视图独立的,所以交互式渲染可以由用户实时地修改以改变渲染图像的视点或视角。

图5图示了用于对光子图进行采样以用于生成体积渲染的方法的实施例的流程图。该方法由图6的系统(在下文讨论)和/或不同的系统来实现。可以提供附加的、不同的或者更少的动作。以所示出的次序来提供该方法。可以提供其它次序,和/或可以重复动作。例如,动作505和507可以重复以对附加光子图进行采样和存储。另外,可以作为并行动作而并发地执行动作。

在动作501处,捕获或接收用于体积的扫描数据。在动作503处,生成光子图。例如,针对扫描数据的间接射线生成光子图。

在动作505处,对光子图进行采样。对光子图进行采样以生成非均匀o-缓冲区。o-缓冲区可以适配于转移函数,该转移函数用于基于扫描数据而生成光子图,该光子图存储用于光子图的各个区的较少光子。在实现中,在标识和捕获多个类似光子并且将所述多个类似光子存储为单个光子(例如,存储在均匀图或缓冲区中)之后,对光子图进行采样。例如,确定最靠近指定点(例如,所讨论的交叉点)的多个光子。在标识并且捕获所述多个类似光子之后,确定用于所述多个类似光子中的每一个的权重以执行针对光子的加权平均。例如,可以通过应用由离采样点的距离确定的权重来执行加权平均,使得较为接近采样点的光子具有比更远离采样点的光子更多的权重。也可以使用其它加权平均或简单平均技术。在对类似光子进行平均之后,存储表示所述多个类似光子的一个光子。

在动作507处,将光子图存储为均匀缓冲区和/或非均匀o-缓冲区。例如,将针对体积的每一个采样位置的补偿(其由网格确定)存储在o-缓冲区中。o-缓冲区存储撞击体积的每一个采样位置的光子的方向和能量。通过存储每一个补偿位置处的光子方向和能量,可以记录撞击体积的每一个光子的精确位置和特性。通过在一些区(即,基于转移函数的透明区)中存储较少光子并且在其它区域(即,基于转移函数的实区)中存储较多光子,o-缓冲区可以是非均匀的。通过使用非均匀o-缓冲区,可以使用较少的存储器来存储光子图。还可以对o-缓冲区进行采样以生成均匀缓冲区。诸如通过对来自o-缓冲区的所存储的光子进行平均,均匀缓冲区可以存储比非均匀o-缓冲区更少的光子,从而可以用比o-缓冲区更少的存储器来存储光子。

图6图示了用于对光子图进行采样并且生成体积渲染的系统的实施例,系统600,诸如医学系统,可以包括服务器601、网络603、工作站605和扫描仪607中的一个或多个。可以提供附加的、不同的或者更少的组件。例如,可以使用附加的服务器601、网络603、工作站605和/或扫描仪607。在另一个示例中,服务器601和工作站605直接连接或实现在单个计算设备上。在又一个示例中,服务器601、工作站605和扫描仪607实现在单个扫描设备上。作为另一个示例,工作站605是扫描仪607的部分。在又一个实施例中,扫描仪607在没有使用网络603、服务器601或工作站605的情况下,执行图像数据捕获、光子映射和渲染。

扫描仪607配置为捕获患者或另一体积的扫描数据。扫描仪607是三维扫描仪,诸如计算机断层显像(ct)、超声、x射线或核磁(mr)扫描仪。可以使用其它扫描仪。

网络603是有线或无线网络或其组合。网络603配置为局域网(lan)、广域网(wan)、内联网、因特网、或者其它现在已知或今后研发出的网络配置。可以使用用于在客户端计算机605、扫描仪607、服务器601和其它组件之间进行通信的任何网络或网络组合。

服务器601和/或工作站605是具有硬件的计算机平台,所述硬件诸如一个或多个中央处理单元(cpu)、系统存储器、随机存取存储器(ram)和(多个)输入/输出(i/o)接口。服务器601和工作站605还包括图形处理器单元(gpu)以加快图像渲染。服务器601和工作站605实现在连接到网络603的一个或多个服务器计算机上。可以提供附加的、不同的或者更少的组件。例如,可以利用服务器601、工作站605、另一计算机或其组合中的一个或多个来实现(例如,硬件和/或软件)图像处理器609和/或渲染器611。

服务器601配置为从扫描仪接收患者或其它体积的扫描数据。服务器601还配置为从扫描数据生成光子图。服务器601进一步配置为存储光子图。例如,将光子图存储为o-缓冲区。o-缓冲区是用于通过使o-缓冲区适配于扫描数据和/或用于扫描数据的转移函数来存储光子图的自适应o-缓冲区。使o-缓冲区适配于转移函数包括基于扫描数据和/或转移函数而存储光子图的均质区,其中与诸如非均质区的其它区中相比,更少的光子存储在透明、半透明或均质区中。可替换地或者附加地,可以对光子图和/或o-缓冲区进行采样以生成均匀缓冲区。

工作站605可以配置为通过网络603从服务器601接收扫描数据和光子图。光子图是存储的o-缓冲区和/或均匀缓冲区。工作站605还从扫描数据和光子图生成患者或其它体积的体积渲染(例如,通过执行应用)。例如,生成体积渲染包括针对扫描数据的主要射线在扫描数据上进行体积的蒙特卡罗路径追踪,以及针对扫描数据的次要射线对光子图进行采样,诸如通过应用双向反射分布函数。可以使用其它函数。在实现中,通过用于工作站605的图形用户接口基于用户输入而交互地生成体积渲染。例如,图形用户接口可以包括一个或多个按钮、小键盘、键盘、鼠标、触笔、追踪球、摇臂开关、触摸板、语音识别电路、或者用于输入数据的另一个设备或组件。在示例中,在移动设备或工作站上使用触摸屏,其中进行掐捏以进行缩放。可替换地,服务器601可以配置为从扫描数据和光子图生成患者或其它体积的体积渲染(例如,通过执行应用)。服务器601然后将渲染图像提供给工作站605以用于显示。在另一个可替换方案中,工作站605配置为从扫描仪获得患者或其它体积的扫描数据,以从扫描数据生成光子图并且在没有服务器601的情况下存储光子图。工作站605还向用户显示渲染图像。

本文描述的各种改进可以一起或者单独地使用。尽管已经在本文中参照附图描述了本发明的说明性实施例,但是要理解到,本发明不限于那些确切的实施例,并且可以在其中由本领域技术人员实现各种其它改变和修改而不脱离本发明的精神或范围。

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