CN108573523B - 用于分割体积渲染的方法和系统 - Google Patents
用于分割体积渲染的方法和系统 Download PDFInfo
- Publication number
- CN108573523B CN108573523B CN201810205684.7A CN201810205684A CN108573523B CN 108573523 B CN108573523 B CN 108573523B CN 201810205684 A CN201810205684 A CN 201810205684A CN 108573523 B CN108573523 B CN 108573523B
- Authority
- CN
- China
- Prior art keywords
- voxel
- opacity
- voxel data
- values
- function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/08—Volume rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/20—Perspective computation
- G06T15/205—Image-based rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/41—Medical
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Geometry (AREA)
- Image Generation (AREA)
- Apparatus For Radiation Diagnosis (AREA)
Abstract
在一个示例实施例中,提出了一种使用渲染技术进行可视化的方法,其中体素沿着贯穿一个体积的射线而被采样,该方法包括:获取体素数据,修改体素数据的第一部分,体素数据的第一部分与第一分割遮罩相关联。修改包括将体素数据的第一部分设置为多个允许的体素值中的至少一个。该方法还包括将算子集应用于体素数据的经修改的第一部分和体素数据的剩余部分,并且基于所应用的算子集来显示体积。
Description
背景技术
体积渲染是将三维(3D)数字体积数据合成到二维(2D)图像的一般方法。由于在不同的实现中选择了不同的折衷方案,对于不同体积渲染引擎,得到的图像的质量和外观可能差别很大。
对于体积渲染,可以从体积数据中遮蔽各个结构。可以由渲染系统的用户或由预定结构来描绘遮罩。
遮罩的示例包括冲压遮罩和展示遮罩。冲压遮罩具有如下的传递函数,该传递函数具有被分配给该遮罩的各处均为零的不透明度,并且具有不同传递函数(即,并非各处为0)的遮罩可以被称为展示遮罩。
冲压遮罩在体积渲染时被用于避免渲染被遮蔽的结构。几何冲压信息被转换为冲压体积。针对每个体素,冲压体积定义是否遮蔽该体素。
因此,在执行分割体积渲染时,会出现两种分割边界。一种是分割遮罩的边界,另一种是由如下传递函数隐含定义的边界表面,该传递函数分离具有零的不透明度和非零的不透明度的区域。
发明内容
发明人已经发现了用于分割体积渲染的方法和系统,其中由分割遮罩创建的遮罩边界和由传递函数隐含定义的边界之间的差异得以减小。
至少一个示例实施例提供了一种使用渲染技术进行可视化的方法,其中体素沿着贯穿一个体积的射线而被采样,该方法包括:获取体素数据,修改体素数据的第一部分,体素数据的第一部分与第一分割遮罩相关联。修改包括将体素数据的第一部分设置为多个允许的体素值中的至少一个。该方法还包括将算子集应用于体素数据的经修改的第一部分和体素数据的剩余部分,并且基于所应用的算子集来显示体积。
在一个示例实施例中,上述设置将体素数据的第一部分设置为统一值,该统一值在多个允许的体素值内。
在一个示例实施例中,对体素数据的第一部分的设置包括确定多个允许的体素值,并且将统一值确定为多个允许的体素值内的最大值。
在一个示例实施例中,不透明度函数针对多个允许的体素值中的所有体素值生成为零的不透明度,使得对于多个允许的体素值中的每个元素,不透明度为零,并且对于小于该元素的所有值,不透明度也是零。
在一个示例性实施例中,上述应用包括在初始颜色函数和经修改的颜色函数之中确定射线的颜色函数,经修改的颜色函数与统一值相关联,在初始不透明度函数和经修改的不透明度函数之中确定射线的不透明度函数,经修改的不透明度函数与统一值相关联,当使用经修改的不透明度函数时在一个弧长度处的不透明度小于使用初始不透明度函数时在该弧长度处的不透明度时,所确定的颜色函数是经修改的颜色函数,以及当使用经修改的不透明度函数时在弧长度处的不透明度小于使用初始不透明度函数时在该弧长度处的不透明度时,所确定的不透明度函数是经修改的不透明度函数,并且将所确定的颜色函数和所确定的不透明度函数应用于体素数据。
在一个示例实施例中,所确定的颜色函数相应地表示射线的区间上的颜色值,并且所确定的不透明度函数相应地表示射线的区间上的不透明度值。
在一个示例实施例中,颜色函数的确定包括从预积分表中获取颜色值和不透明度值。
在一个示例实施例中,
wopt=max(Wp)
其中x是一个体素值,ap(x,x)是预积分表中的不透明度值,在预积分表中区间的起点和终点与体素值相关联,并且wopt是统一值。
在一个示例实施例中,体素数据的第一部分仅与第一分割遮罩的边界处的体素相关联。
在一个示例实施例中,该方法还包括使用二元优化遮罩来确定上述边界。
在一个示例实施例中,对体素数据的第一部分的设置包括:获取体素数据的最小值,确定扩展最小值,扩展最小值小于所获取的最小值,将具有扩展最小值的体素值的颜色和不透明度设置为零,并且将统一值确定为扩展最小值。
在一个示例实施例中,该方法还包括二次修改体素数据的第二部分,体素数据的第二部分与第二分割遮罩关联,二次修改包括:将体素数据的第二部分设置为第二统一值。该方法还包括将该算子集应用于体素数据的经修改的第二部分和体素数据的第一部分。该显示基于对体素数据的经修改的第一部分所应用的算子集以及对体素数据的经修改的第二部分所应用的算子集来显示体积。
在一个示例实施例中,对体素数据的第二部分的设置包括确定针对第二统一值的允许值集合,并且将第二统一值确定为该允许值集合内的最大值。
在至少一个示例实施例中,多个允许的体素值中的至少一个是最优值。
在一个示例实施例中,第一分割遮罩是第一展示遮罩,并且该方法还包括:修改体素数据的第二部分,体素数据的第二部分与第二展示遮罩相关联,该修改包括将体素数据的第二部分设置为第二多个允许的体素值中的至少一个,将算子集应用于体素数据的经修改的第二部分以及除了经修改的第二部分之外的体素数据,并且基于所应用的算子集显示体积。
至少一个示例实施例提供了一种用于可视化体积的系统。该系统包括存储器和至少一个处理器,该存储器存储计算机可读指令,至少一个处理器被配置为执行计算机可读指令,以:获取体素数据,修改体素数据的第一部分,体素数据的第一部分与第一分割遮罩相关联,修改包括将体素数据的第一部分设置为多个允许的体素值中的至少一个。至少一个处理器被配置为执行计算机可读指令以将算子集应用于体素数据的经修改的第一部分和体素数据的剩余部分,并且基于所应用的算子集来显示体积。
在至少一个示例实施例中,至少一个处理器被配置为执行计算机可读指令以将体素数据的第一部分设置为统一值,该统一值在多个允许的体素值内。
在至少一个示例实施例中,至少一个处理器被配置为执行计算机可读指令以确定多个允许的体素值,并且将统一值确定为多个允许的体素值内的最大值。
在至少一个示例实施例中,不透明度函数针对多个允许的体素值中的所有体素值生成为零的不透明度,使得对于多个允许的体素值中的每个元素,不透明度为零,并且对于小于元素的所有值,不透明度也是零。
在至少一个示例实施例中,至少一个处理器被配置为执行计算机可读指令以在初始颜色函数和经修改的颜色函数之中确定射线的颜色函数,经修改的颜色函数与统一值相关联,在初始不透明度函数和经修改的不透明度函数之中确定射线的不透明度函数,经修改的不透明度函数与统一值相关联,当使用经修改的不透明度函数时在一个弧长度处的不透明度小于使用初始不透明度函数时在该弧长度处的不透明度时,所确定的颜色函数是经修改的颜色函数,并且将所确定的颜色函数和所确定的不透明度函数应用于体素数据。
在至少一个示例实施例中,所确定的颜色函数相应地表示射线的区间上的颜色值,并且所确定的不透明度函数相应地代表射线的区间上的不透明度值。
在至少一个示例实施例中,体素数据的第一部分仅与第一分割遮罩的边界处的体素相关联。
在至少一个示例实施例中,至少一个处理器被配置为执行计算机可读指令以使用二元优化遮罩来确定上述边界。
在至少一个示例实施例中,至少一个处理器被配置为执行计算机可读指令以获取体素数据的最小值,确定扩展最小值,该扩展最小值小于所获取的最小值,将具有扩展最小值的体素值的颜色和不透明度设置为零,并且将统一值确定为扩展最小值。
在至少一个示例实施例中,至少一个处理器被配置为执行计算机可读指令,以通过将体素数据的第二部分设置为第二统一值来修改体素数据的第二部分,体素数据的第二部分与第二分割遮罩相关联,并且将该算子集应用于体素数据的经修改的第二部分和体素数据的第一部分,其中至少一个处理器被配置为执行计算机可读指令以基于对体素数据的经修改的第一部分所应用的算子集以及对体素数据的经修改的第二部分所应用的算子集来显示体积。
在至少一个示例实施例中,多个允许的体素值中的至少一个是最优值。
在至少一个示例实施例中,第一分割遮罩是第一展示遮罩,并且至少一个处理器被配置为执行计算机可读指令,以通过将体素数据的第二部分设置为第二多个允许的体素值中的至少一个来修改体素数据的第二部分,体素数据的第二部分与第二展示遮罩相关联,将算子集应用于体素数据的经修改的第二部分以及除了经修改的第二部分之外的体素数据,并且基于所应用的算子集来显示体积。
至少一个示例实施例提供了一种非暂时性计算机可读介质,该非暂时性计算机可读介质当由至少一个处理器执行时被配置为使至少一个处理器:获取体素数据,修改体素数据的第一部分,体素数据与第一分割遮罩相关联,该修改包括将体素数据的第一部分设置为多个允许的体素值中的至少一个,将算子集应用于体素数据的经修改的第一部分和体素数据的剩余部分,以及基于所应用的算子集来显示体积。
附图说明
从以下结合附图的详细描述中将更清楚地理解示例实施例。图1至图12表示本文所描述的非限制性示例实施例。
图1图示了根据一个示例实施例的用于分割体积渲染的系统;
图2和图3说明了这两种不同的边界;
图4至图5分别示出了根据一个示例实施例的无阴影体积和带阴影体积渲染技术(VRT)图像;
图6图示了根据一个示例实施例的分割体积渲染的方法;
图7图示了应用图6所示的算子的一部分的示例实施例;
图8图示了带阴影VRT图像,其中体积的一部分已经被冲压;
图9图示了一幅图像,其中图7的方法未被应用于图8的带阴影VRT图像;
图10图示了一幅图像,其中图7的方法被应用于图8的带阴影VRT图像;
图11图示了修改体素数据的第一部分的一个示例实施例,其中展示遮罩对于其最小索引具有非零的不透明度函数,从而使得允许的体素值的集合为空;以及
图12示出了体积渲染的一个示例实施例,其中边界被定义在两个展示遮罩之间。
具体实施方式
现在将参照附图来更全面地描述各种示例实施例,在这些附图中示出了一些示例实施例。
因此,虽然示例性实施例能够存在各种修改和备选形式,但这些实施例通过附图中的示例示出并且将在本文中进行详细描述。然而,应当理解,无意将示例性实施例限于所公开的特定形式,而是相反,示例性实施例覆盖落入本发明范围内的所有修改、等效和替换。贯穿附图的描述,相同附图标记指代相同元素。
应当理解,尽管本文可以使用术语第一、第二等来描述各种元素,但是这些元素不应受这些术语的限制。这些术语仅用于将一个元素与另一个元素相区分。例如,在不脱离示例实施例的范围的情况下,第一元素可以被称为第二元素,并且类似地,第二元素可以被称为第一元素。如本文所用的,术语“和/或”包括一个或多个相关列出的项目中的任何和所有组合。
应当理解,当元件被描述为“连接”或“耦合”至另一元件时,该元件可以直接连接或耦合至另一元件,或者可以存在中间元件。相反,当元件被描述为“直接连接”或“直接耦合”至另一元件时,不存在中间元件。用于描述元件之间的关系的其他词语应该以类似方式进行解释(例如,“在…之间”相对于“直接在…之间”、“相邻”相对于“直接相邻”等)。
本文使用的术语仅是为了描述特定实施例的目的而无意限制示例性实施例。如本文所使用的,除非另有明确指定,单数形式“一个”和“该”也意在包括复数形式。将进一步理解,当在本文使用时,术语“包括”和/或“包含”指定所提的特征、整体、步骤、操作、元素和/或组件的存在,但是不排除存在或附加有一个或多个其他特征、整体、步骤、操作、元素、组件和/或前述的组合。
还应当注意,在一些备选实现中,所提及的功能/动作可以不按附图中所示的顺序进行。例如,取决于所涉及的功能/动作,连续示出的两个附图实际上可以基本上同时执行,或者有时可以以相反的顺序执行。
除非另外定义,否则本文使用的所有术语(包括技术和科学术语)具有与本实施例所属领域的普通技术人员通常的理解相同的含义。还将进一步理解,例如在通常使用的字典中定义的那些术语应被解释为具有与其在相关领域的上下文中的含义一致的含义,并且将不以理想化或过度正式的意义来解释,除非另外如此明确定义。
示例实施例和对应的详细描述的部分以软件或算法和对计算机存储器中的数据位的操作的符号表示来呈现。这些描述和表示是本领域普通技术人员用以有效地将其工作的实质传达给本领域普通技术人员的描述和表示。算法,如该术语在本文所使用的以及如其通常被使用的,被认为是能导致期望结果的自洽的步骤序列。这些步骤是需要物理量的物理操作的步骤。通常但并非必要的,这些量采取能够被存储、传送、组合、比较和以其他方式操纵的光、电或磁信号的形式。已经证明,将这些信号称为比特、值、元素、符号、字符、项、数字等有时是方便的,这主要也是出于普遍使用的原因。
在以下描述中,将参考动作和操作的符号表示(例如,以流程图的形式)来描述示意性实施例,这些动作和操作的符号表示可以被实现为包括例程、程序、对象、组件、数据结构等的程序模块或功能处理,它们执行特定任务或实现特定抽象数据类型,并且可以使用已有的网络元件或控制节点处的已有硬件来实现。这样的已有硬件可以包括一个或多个中央处理单元(CPU)、片上系统(SoC)、数字信号处理器(DSP)、专用集成电路、现场可编程门阵列(FPGA)计算机等。
除非另外具体说明,或者除非从讨论中显而易见,否则诸如“处理”或“计算”或“估算”或“确定”或“显示”等术语指代计算机系统或类似的电子计算设备的动作和过程,这些动作和过程将被表示为计算机系统寄存器和存储器内的物理、电子量的数据操纵和变换为其他数据,这些其他数据类似地被表示为计算机系统存储器或寄存器或其他此类信息存储、传输或显示设备内的物理量。
还要注意,示例实施例的软件实现的方面通常被编码在某种形式的有形(或记录)存储介质上。有形存储介质可以是只读存储器、随机存取存储器、系统存储器、高速缓冲存储器、磁介质(例如、软盘、硬盘驱动器、MRAM)、光学介质、闪存、缓冲器、前述的组合或用于存储数据或视频信息的其他磁性设备(例如,软盘或硬盘驱动器)或其他光学设备(例如,光盘只读存储器或“CD ROM”)。示例实施例不受任何给定实现在这些方面的限制。
图1图示了根据一个示例实施例的用于分割体积渲染的系统。医学成像系统100包括计算系统101和信号源108。计算系统可以包括处理器102、存储器103、显示器105和输入设备106,这些元件均耦合到输入/输出(I/O)接口104。
在一个示例实施例中,信号源108可以是医学成像设备,诸如诊断或治疗超声、X射线、计算机断层摄影、磁共振、正电子发射或其他设备。
备选地,信号源108是档案和/或图像处理系统的一部分,诸如医学记录数据库。
输入设备106可以是单个设备或多个设备,包括但不限于键盘、轨迹球、鼠标、操纵杆、触摸屏、旋钮、按钮、滑块、触摸板及前述的组合。输入设备106响应于用户动作(诸如用户按下按钮)而生成信号。
输入设备106与用于基于上下文的用户输入的用户界面相结合地进行操作。基于显示器,用户利用输入设备106选择一个或多个控件、渲染参数、值、质量度量、成像质量或其他信息。例如,用户将指示符定位在可用质量水平的范围内。在备选实施例中,处理器102在没有用户输入(自动)的情况下或在用户确认或某些输入(半自动)的情况下进行选择或以其他方式进行控制。
存储器103是图形处理存储器、视频随机存取存储器、随机存取存储器、系统存储器、高速缓冲存储器、硬盘驱动器、光学介质、磁性介质、闪存驱动器、缓冲器、前述的组合或用于存储数据或视频信息的其他设备。存储器103存储表示三维体积的一个或多个数据集,以用于分割渲染。
任何类型的数据均可以用于体积渲染,诸如医学图像数据(例如,超声、X射线、计算机断层摄影、磁共振或正电子发射)。这样的渲染来自分布在均匀间隔的三维网格中的数据,但也可以来自其他格式的数据(例如,来自没有转换为笛卡尔坐标格式的扫描数据的渲染或者来自包括笛卡尔坐标格式和采集格式二者的数据的扫描数据的渲染)。数据是体积中不同体积位置的体素数据。体素在数据集内可以具有相同的大小和形状,或者这样的体素在每个方向上的大小可以不同(例如,各向异性体素)。例如,与另一个维度相比,沿一个维度具有不同的大小、形状或数目的体素可以被包括在相同的数据集中,诸如与各向异性医学成像数据相关联。该数据集包括由每个体素表示的空间位置的指示。
该数据集通过采集而被实时提供。例如,该数据集通过使用信号源108对患者进行医学成像来生成。存储器103临时存储数据以进行处理。备选地,从先前执行的扫描中存储该数据集。在其他实施例中,数据集从存储器103生成,例如与渲染虚拟对象或场景相关联。例如,数据集是人造或“幻影”数据集。
处理器102是中央处理单元、控制处理器、专用集成电路、通用处理器、现场可编程门阵列、模拟电路、数字电路、图形处理单元、图形芯片、图形加速器、加速器卡、前述的组合或其他已开发的用于体积渲染的设备。处理器102是串行、并行或分开操作的单个设备或多个设备。处理器102可以是诸如膝上型或台式计算机之类的计算机的主处理器,可以是用于处理诸如成像系统之类的较大系统中的一些任务的处理器,或者可以是专门为渲染而设计的处理器。在一个实施例中,处理器102至少部分是个人计算机图形加速器卡或组件,诸如由ATITM,或MatroxTM制造的加速器卡或组件。
处理器102被配置为通过执行存储在存储器103中的计算机可读指令来执行分割体积渲染,如将在下文更详细描述的。
不同的平台可以具有相同或不同的处理器102以及相关联的硬件,以用于分割体积渲染。不同的平台包括不同的成像系统,一个成像系统和一个计算机或工作站,或者不同设备的其他组合。相同或不同的平台可以实现相同或不同的渲染算法。例如,成像工作站或服务器实现比个人计算机更复杂的渲染算法。由于包含额外的或更多的计算密集型渲染参数,该算法可以更复杂。
处理器102可操作用于通过执行存储在存储器103中的计算机可读指令来对来自数据集的体积的二维表示进行体积渲染。二维表示使用相机表示给定或选定观看位置的体积。体积渲染通常用于对表示体积的数据中的一个表示进行渲染。体积渲染包括一个定义的传递函数,以便将颜色和不透明度分配给每个体素。
存储器103存储渲染模块110,渲染模块110包括用于执行本文中描述的渲染功能(诸如参照图6至图7和图11至图12描述的方法)的计算机可读指令。
处理器102可以是用于加速体积渲染过程的硬件设备,诸如使用用于三维纹理映射的应用编程接口。示例API包括OpenGL和DirectX,但是其他API可以独立于处理器102使用或与处理器102一起使用。处理器102可操作用于基于API或控制API的应用来进行体积渲染。该处理器还可以具有矢量扩展(如AVX2或AVX512),矢量扩展允许提高渲染的处理速度。
渲染算法根据渲染参数来渲染。一些示例渲染参数包括体素字大小、采样率(例如,选择样本以作为渲染的一部分)、插值函数、表示的大小、预/后分类、分类函数、采样变化(例如,采样率随着位置的函数更大或更小)、缩小体积(例如,在渲染之前对数据进行下采样)、阴影、不透明度、阈值、数据或体积的权重、或任何其他当前已知的或以后开发的用于渲染的参数。渲染参数与两个或更多选项相关联,诸如可能的分数或整数值的范围。例如,预/后分类(分类定时)可以是一种二元设置,提供在插值之前或之后将亮度映射到颜色。该算法可以利用全部渲染参数或渲染参数的任何子集来操作。渲染参数可以针对给定的算法来设置,诸如仅利用预分类来操作的渲染器。其他渲染参数可由开发者或终端用户来选择,诸如由开发者选择采样率或由终端用户选择阴影选项。
图像从颜色和不透明度数据进行渲染。备选地,图像从灰度信息进行渲染。体积渲染伪影的可见性可以由颜色信息、灰度信息或两者而被最佳地示出。
在分割体积渲染中,每个分割遮罩可以定义自身在体积渲染所需的传递函数,这可以引起分割遮罩边界处的各种渲染伪影。对于为何这些伪影会在边界处出现,以及为何边界处理是复杂的,存在多种根本原因。在分割遮罩边界处,传递函数可能突然变化,对于基本上基于离散化的渲染算法来说,这种情况不容易处理。此外,在用于插值的插值算子之下的分割遮罩边界处,体积数据使用部分属于遮罩和部分不属于遮罩的输入数据,这会导致伪影,如以下将参照图2至图12描述的。
分割遮罩的使用不是在体积渲染期间出现的唯一分割类型。被分配给体积或分割遮罩的传递函数也可以产生分割效果,因为具有零不透明度的传递函数的这些值将从渲染中分割出来。因此,在进行分割体积渲染时,会出现两种不同的分割边界。一个是分割遮罩本身的边界,另一个是由分离具有零和非零不透明度区域的传递函数隐含定义的边界表面。
图2和图3图示了这两种不同的边界。更具体地,图2图示了无阴影体积渲染技术(VRT),其中使用二元遮罩(即,冲压遮罩)对体积的区域进行冲压。图3图示了该区域被冲压的带阴影VRT。
在图2至图3中,冲压遮罩被应用于数据集,以便将冲压遮罩内的体素数据从渲染中移除。此外,所使用的传递函数创建了边界205,在这种情况下边界205是VRT图像中可见的骨骼的边界表面。附加的冲压遮罩进一步从体积中移除数据,在这个示例中还创建了边界210,该边界210允许查看骨骼内部结构。
如图所示,如图2至图5所示,由分割遮罩引起的组织边界210看起来与刚由传递函数隐含定义的数据集的边界205非常不同。在图3的阴影VRT情况下,在分割遮罩边界处,渲染伪影可见,因为没有明确定义梯度的组织可以变得可见,这对于阴影渲染是必需的。
应当理解,边界205和210仅图示了传递函数边界和分割边界的一部分。应该注意,当将使用常规渲染方法(例如,图2至图3和图8至图9)的图像与使用示例实施例(例如,图4至图5和图10)的图像进行比较时,在两个图像中(使用常规渲染方法的图像和使用示例实施例的对应图像)相同的图像部分图示了已经由传递函数创建的部分,而已经改变的那些图像部分由遮罩边界导致。
示例实施例涉及缓解该问题的算法。更具体地,所分割的体积被渲染,使得分割遮罩的边界可见度减弱。
例如,根据示例实施例,图4至图5分别示出了无阴影和带阴影的VRT图像。图4至图5使用与图2至图3相同的数据集。当将图4至图5与图2至图3比较时,遮罩边界310处的阴影(表示颜色)更类似于图4至图5中数据集的传递函数边界305。
在带阴影VRT场景中,梯度伪影在遮罩边界处已减少/消失,并且遮罩边界变得与由传递函数创建的边界更加相似。
尽管一些示例实施例参考针对冲压遮罩的遮罩边界来进行讨论,但应当理解,示例实施例可针对其他遮罩边界(例如,展示遮罩)来实现。
对体积应用冲压遮罩的情况的一种可能实现方式是创建经修改的复制数据集,其中冲压遮罩被烧录到体积副本中。对于无符号的数据集,这意味着值“零”被写入到体积副本中要应用冲压操作的那些体素处。对于其中体积也可以是有符号数据的一般数据集,最小可能的体素值可以被烧录到体积副本中。这种方法天然可允许处理冲压遮罩的边界,这样的边界类似于由传递函数分割产生的边界,因为冲压遮罩不再作为遮罩存在、而是已经成为体积的一部分。然而,这种方法需要复制体积,与单独使用冲压遮罩相比,这大大增加了内存消耗。如果体积很大,将遮罩烧录到体积中是一种相对高代价的操作(即,无法很好适应其中由交互式操作产生遮罩的动态场景)。此外,这种方法可以创建“幻影表面”,这意味着它能够在所产生的图像中创建出表面,而这些表面在使用常规分割体积渲染方法时实际上是不存在的。
图6图示了根据示例实施例的分割体积渲染的方法。图6所示的方法可以由图1所示的系统100执行。
在S400处,处理器(例如,处理器102)例如从医学成像设备、存储器或数据库获取体素数据。体素数据包括由每个体素表示的空间位置的指示。
在S402处,处理器接收与要实现哪个或哪些分割遮罩相关的输入。
在S405处,处理器动态地修改体素数据的第一部分。体素数据的第一部分与作为分割遮罩的一部分的那些体素相关联。通过动态地执行修改(即,在运行中执行修改),节省了存储并且降低了预处理需求,这允许动态地处理经修改的分割遮罩的使用情况。
更具体地,当在体素数据上进行插值操作、诸如三线性插值时,上述修改由处理器动态地执行。这种插值操作使用体素输入数据。例如,三线性插值使用一个点周围的8个体素作为输入。如下所述,如果体素值属于分割遮罩(包括边界),则8个体素值中的至少一个可以被修改。插值算子的其他示例包括三-二次和三-三次插值。
处理器可以使用二元遮罩对8个体素进行采样,以确定这些体素中的任何体素是否属于分割遮罩,包括是否属于分割遮罩的边界。如果8个体素中的至少一个属于分割遮罩并且至少一个体素不属于该遮罩,则处理器识别出这8个体素处于边界情况。
处理器可以使用二元遮罩来确定一个体素是否属于分割遮罩。如果一个体素由处理器确定为属于分割遮罩,则该体素的值被修改,如下文进一步详细描述的。然后,处理器使用包括经修改的体素值和/或原始体素值的8个体素值来执行三线性插值(未经修改的体素的体素值保持其原始体素值,以用作插值的输入)。无论体素值是否已经被修改,处理器都使用相同的插值算子。
接下来的讨论内容将讨论以分割遮罩A作为冲压遮罩的示例实施例,但是如也将描述的,示例实施例还可以用展示遮罩来实现。如上所述,在冲压遮罩中,附属于冲压遮罩的传递函数是空的(零)。相比之下,附属于展示遮罩上的传递函数不是空的。
利用附属于分割遮罩A的空传递函数添加分割遮罩A时,属于该遮罩的所有体素都被视为100%透明。如上所述,在插值过程期间属于分割遮罩A的体素被动态地确定。
在分割体积渲染期间,处理器通过对沿射线的位置处的体素进行采样,来完成沿着射线的体积渲染积分。在这些采样位置,在阴影体积渲染的情况下,处理器执行两种插值:处理器(1)使用采样算子(体积插值算子)对沿着射线的体素数据的离散体素进行插值,并且(2)处理器利用梯度算子,从经插值的离散体素数据中确定梯度。
采样算子可以是多项式插值器,例如三线插值或三-三次插值。然而,示例实施例不限于此。
梯度算子可以是中心差分或Sobel算子。然而,示例实施例不限于此。所有算子都有一个共同点,即离散的体素数据被用作输入。
体素数据包括具有体素Vijk的离散体积数据。T是一个通用的插值算子,其中TV是体积插值算子和TG是梯度算子。针对冲压遮罩A的遮罩感知算子T(A,w)被定义为由处理器使用的算子,该算子在体素输入数据上应用T,其中处理器可以将体素数据的一部分修改为:
其中i,j和k是体素索引(体积索引),并且w是自由度的值。
换句话说,当一个体素属于遮罩A时,与该体素相关联的体素数据由处理器设置为值w。如果该体素不属于遮罩A,则处理器不改变与体素相关联的体素数据。应当理解,只有用于插值的体素数据要被修改,而不是体积本身要被修改。
冲压遮罩A的传递函数具有不透明性项a(x)。因此,对于与冲压遮罩A相关联的体素值w,不透明度是a(w)。
然而,处理器可以实施比只需要a(w)为零的情况更严格的条件,其中
条件(2)确保具有非零不透明度的体素必须大于w。这会产生一种情况:即从遮罩内部开始并离开遮罩的射线将以插值体素值w起始,然后将增加到大于w的体素值。
在所有可能满足等式(2)的w的值中,处理器在w的值的集合内确定一个解wopt,这个解产生改进的和/或最佳的自然边界图像质量。当针对许多测试数据集和传递函数来分析图像质量时,发明人发现最佳值wopt应该被定义为w的可能值的集合中最大的一个,用公式表示为:
所有小于或等于w的值具有来自传递函数的相关联的不透明度,该不透明度为零。
传递函数定义不透明度并且wopt是具有相关联的零不透明度的体素值的上边界,附加约束条件是所有小于wopt的体素值都具有零不透明度。因此,处理器确定哪些体素对于其自身和所有较小的体素值都具有零不透明度,然后选择这个集合中的最大值。例如,如果所有体素值0-100给出零的不透明度值并且体素值101给出大于零的不透明度,则处理器将wopt设置为100。
在另一个示例中,当属于冲压遮罩A的体素值具有给出零不透明度的0-100的体素值、101-200给出大于非零的不透明度并且201-300给出零不透明度时,处理器将wopt设置为100,因为将wopt设置为300将违反条件(2)。
因此,在S405,处理器通过将与冲压遮罩A相关联的体素的体素值替换为wopt来修改与冲压遮罩A相关联的那部分体素数据。因此,处理器将体素数据的一部分设置为如下所示的值:
在S410,处理器将体积插值算子TV和梯度算子TG应用于体素输入数据的经修改部分以及体素输入数据的剩余部分。在存在单个遮罩的情况下,体素数据的剩余部分可以是在感兴趣区域中与遮罩A不关联的体素的体素值。
更具体地,使用体积插值算子TV和梯度算子TG,算子TV(A,wopt)和TG(A,wopt)对经修改的体素输入数据进行操作(体素数据被改变为wopt),如等式(1)中所定义的,其中wopt由等式(3)指定。
一旦在S410处处理器应用了体积插值算子TV和梯度算子TG,处理器将体积插值算子TV和梯度算子TG用于体积渲染并在S415使用已知的方法在显示器上显示体积。例如,一旦经修改的体积和经修改的梯度算子被应用,体积渲染的剩余部分使用以下论文所描述的已知方法,(1)Drebin,Robert A.;Carpenter,Loren;Hanrahan,Pat(1988),"Proceedings ofthe 15th annual conference on Computer graphics and interactive techniques-SIGGRAPH'88",ACM Press,pp.65-74,其全部内容通过引用并入本文,以及(2)ENGEL K.,KRAUS M.,ERTL T.:High quality pre-integrated volume rendering using hardwareaccelerated pixel shading.In Proceedings Graphics Hardware 2001(2001),MarkW.,Schilling A.,(Eds.),ACM Press,pp.9-16,其全部内容通过引用并入本文。
图7图示了应用图6中所示的算子的一部分的示例实施例。图7的方法可以减少图像中的幻影表面。
在图7的方法中,r(s)是弧长参数化中的3维射线,并且是来自体积渲染的采样射线。在图7中,算子T对体素值进行插值。传递函数包含初始颜色函数c(x)和初始标量不透明函数a(x)。射线的颜色函数c(x)和不透明度函数a(x)可以分别被描述为c(T(r(s)))和a(T(r(s))。
为了使以下的公式表达更容易,c(s)和a(s)可以分别用于描述初始颜色函数c(T(r(s)))和初始不透明度函数a(T(r(s)),以用于针对给定射线和插值算子产生的颜色和不透明度标量函数。
在S500和S505,处理器分别确定颜色函数和不透明度函数。尽管S500被示为在S505之前发生,但应当理解,执行S500和S505的顺序可以颠倒或者可以同时执行。
更具体地,初始颜色函数c(s)和初始不透明度函数a(s)是沿着射线的颜色和不透明度函数,这些函数由未经修改的原始体积渲染算法使用算子T来定义(即体素数据的一部分没有被修改为wopt),其中未考虑遮罩A。
经修改的颜色函数c′(s)和经修改的不透明度函数a′(s)由渲染算法定义,该渲染算法应用针对冲压遮罩A的边界修改算子T(A,wopt)。
换句话说,只要经修改的算法的经修改的不透明度a′(s)大于或等于原始算法的初始不透明度a(s)(即,a(s)≤a′(s))时,则由处理器确定的组合颜色函数和不透明度函数等于初始颜色函数c(s)和不透明度函数a(s)(其中,未考虑遮罩A),并且当原始算法的初始不透明度a(s)大于经修改的算法的经修改的不透明度a′(s)(即,a(s)>a′(s))时,由处理器确定的组合颜色函数和不透明度函数等于经修改的颜色函数c′(s)和经修改的不透明度函数a′(s)。术语“经修改的算法”可以指其中体素值根据等式(3)被修改的传递函数,如以上参考S400所描述的(即,在适用的情况下,用wopt替换所选择的体素数据中的体素值)。
初始颜色和不透明度函数c(s)和a(s)由处理器使用,从而使得冲压遮罩A不被纳入考虑,因为如果将冲压遮罩A考虑在内,应用冲压遮罩的区域根据定义将在冲压遮罩内各处都具有零不透明度,而经修改的算法在非常接近遮罩边界时可以不为零。
图8图示了带阴影VRT图像,其中体积的一部分被冲压。图9图示了一幅图像,其中图7的方法不被应用于图8的带阴影VRT图像,并且仅使用初始颜色函数c(s)和不透明度函数a(s),并且图10图示了一幅图像,其中图7的方法应用于图8的阴影VRT图像。
在图8中,传递函数在灰度值范围的最低区域是透明的,并且在更高范围内也具有透明区域。如区域605所示,较高区域中的这些透明性会使骨骼内部变成空的。因此,冲压遮罩的遮罩边界处的骨骼内部是可见的。然而,通过修改一些数据(例如,冲压遮罩到具有最小体素值的体积的烧录)并且不执行图7的方法,幻影表面615可以被创建,如图9所示。由于幻影表面615,骨骼的内部不再可见,因为遮罩的边界覆盖有完全不透明的表面。由于将靠近冲压遮罩A的边界的体素数据的插值体素值朝向较小的值拉得太远,从而达到传递函数的较低不透明部分,这将造成幻影表面615。
图10图示了根据图7的方法修改体素数据的示例实施例。如图10所示,幻影表面615不存在,并且骨骼看起来是空的,从而使得骨骼的内部可见。此外,与图8相比,图10的伪影量减少,如从图10的区域625所见的(与图8的区域635相比)。
至少一个示例实施例提供了实现预集成体积渲染的体积渲染。
沿射线的颜色和不透明度函数通过以下来定义:将射线划分成很小的区间,并且针对每个区间[sa,sa+1]都取到预积分表中。预积分表可以被存储在存储器103中。处理器通过使用在区间起点T(r(sa)和区间终点T(r(sa+1)处的插值体素值来从预积分表中取出颜色值和不透明度值。预积分表的生成可以如以下论文所描述的来执行:ENGEL K.,KRAUS M.,ERTL T.:High quality pre-integrated volume rendering using hardwareaccelerated pixel shading.In Proceedings Graphics Hardware 2001(2001),MarkW.,Schilling A.,(Eds.),ACM Press,pp.9-16,其全部内容通过引用并入本文。
对于每个区间,处理器决定是否使用从预积分表中取出的插值算子T的原始插值的值T(r(sa)和T(r(sa+1))(即,使用来自所获取的体素数据的体素值),或者是使用从预积分表中取出的经修改的插值的值,经修改的插值的值是经修改的积分算子T(A,wopt)的结果(即,将来自所获取的体素数据的体素值修改为wopt)。
当处理器针对一个区间[xm,xn]执行从预积分表中的取出操作时,项ap(xm,xn)是处理器从预积分表检索的不透明度,其中体素值xm和xn用于底层采样距离。
只要取出的值的不透明度小于由原始插值的值的引起的不透明度,处理器就使用从该表中取出的经修改的插值算子的值T(A,wopt)。否则,处理器将使用从预积分表中取出的初始插值。再次,在初始插值的情况下,不考虑遮罩A。
因此,颜色和不透明度值可以从预积分表中取出,而不是使用等式(4)。
在示例实施例中,经修改的不透明度值和初始不透明度值可以从预积分表中取出,然后处理器取出与要使用的不透明度值对应的颜色值。在其它示例实施例中,在分别取出对应的经修改的不透明度值和对应的初始颜色值时,处理器可以取出经修改的颜色值和初始颜色值。
在由处理器使用预积分表的示例实施例中,处理器也可以使用量化,使得彼此接近的不同体素值可以导致预积分表中相同的取出值。使用量化时,处理器可以如等式(3)中所定义的那样来修改wopt和集合W。
其中“'”的使用是指其中由处理器实现量化的示例实施例。
当取出的插值的值部分位于冲压遮罩A的内部并且部分位于冲压遮罩A的外部时,处理器对于边界处的体素值使用插值算子T(A,wopt)。在所有其他情况下,插值或者与初始插值算子T的插值相同,或者完全属于冲压遮罩A,并且提前已知结果是wopt。因此,使用插值算子T(A,wopt)的计算对于边界外的体素而言可以被略过,以作为一种性能优化。例如,处理器可以使用用于体积插值的二元优化遮罩和用于梯度插值的二元优化遮罩。对于体积内的给定位置,二元值从二元优化遮罩被取出,以决定是否是使用插值算子T(A,wopt)的边界情况。这样实现了性能的优化,因为插值算子T(A,wopt)与普通未经修改的算子相比而言计算成本更高。
例如,在三线性插值中,处理器可以使用二元遮罩对8个体素进行采样以确定体素中的任何体素是否属于分割遮罩。如果8个体素中的至少一个属于分割遮罩并且至少一个体素不属于遮罩,则处理器识别出这8个体素处于边界情况。该信息可以被存储在二元优化遮罩中,该遮罩针对可能用作插值算子的输入的8个体素的每个组合来存储布尔值。布尔值指示8个体素的组合是否处于边界情况下。在渲染过程中,该优化结构允许检测所有的8个体素是否属于边界。
因此,处理器对被确定为遮罩的一部分的(多个)体素使用插值算子T(A,wopt),并且对被确定为不属于遮罩的剩余的(多个)体素使用插值算子T。当处理器采样了8个体素,并且所有体素被确定为不属于遮罩时,该处理器不将这8个体素识别为处于一个边界,因此,应用初始插值算子T。当处理器采样了8个体素,并且所有体素被确定为属于遮罩时,该处理器不必执行插值操作,因为结果将是wopt。这种优化不是必须的,但可以减少计算需求。
虽然示例实施例是参考其中应用单个冲压遮罩的单个展示遮罩的情况来描述的,但是示例实施例不限于此。可以存在被应用于一个体积的多个重叠展示遮罩,其中每个遮罩都定义了一个具有其本身的传递函数的区域。同样在这种多个展示遮罩的情况下,可以应用一个冲压遮罩。
在具有本身的传递函数的每个区域内,处理器使用不同的算子来进行体积和梯度插值,因为该算子的wopt的值取决于该区域的传递函数。
在多个展示遮罩的场景中,射线r(s)被分解为区间,其中每个区间属于这些展示遮罩中的一个展示遮罩。每个区间随后由处理器根据参照图6至图7描述的方法来处理(即,一次一个遮罩)。然后,已知的方法可以被用来组合这些区间,诸如以下论文所描述的,Stefan;Guthe,Stefan;Weiskopf,Daniel;Ertl,Thomas;Straβer,Wolfgang,Smart Hardware-Accelerated Volume Rendering,Proceedings of EG/IEEE TCVGSymposium on Visualization VisSym'03,S.231-238,2003,其全部内容通过引用并入本文。这将在存在多个展示遮罩的状况(即,不完全为空的传递函数)下应用冲压遮罩的情况简化成如已经描述的在单个展示遮罩和冲压遮罩之间处理边界的情况。展示遮罩是具有传递函数的遮罩,它在各处不都完全是空的(零不透明度)。
图11示出了修改体素数据的第一部分的示例实施例(S405),其中展示遮罩具有不透明度函数,使得用于确定wopt的可能的值的集是空的。
存在一些展示遮罩的特殊情况,其中遮罩的传递函数对于传递函数的最小可能值不为零。在现实世界中经常发生的一个重要示例是传递函数是恒定的,在不为零的各处具有恒定的不透明度。在这种情况下,用于确定wopt的可能的值的集是空的。对于这样的情况,以上描述的示例实施例被修改为在下文参考图11所描述的情况。
在S700,处理器获取体素数据的最小值vmin和体素数据的最大值vmax。换句话说,一个体积被允许具有介于vmin和vmax之间的体素值。因此,针对该体积的传递函数是针对该区间来定义的。更具体地,所有体素值的集合形成一个集合(直方图),并且该集合具有最小值vmin和最大值vmin。
如果在等式(3)中定义的集W是空的(例如,当传递函数恒定、在不为零的各处具有恒定的不透明度时),那么等式(3)可以不被处理器用于确定值wopt。
因此,处理器在S705确定体积数据的扩展范围。更具体地,处理器确定扩展的最小值vmin-1。因此,处理器将所定义的体积数据范围扩展为范围。
在S710,处理器扩展所定义的传递函数的范围,使得体素值vmin-1的颜色和不透明度被设置为零。
在S715,处理器然后使用以下等式来确定值wopt。
w<sub>opt</sub>=v<sub>min</sub>-1 | (7) |
实际上,这种方法需要修改用于体积和梯度插值的算子,因为它们现在需要能够处理用于输入和输出的经扩展的体素范围。更具体地,如果插值的值小于vmin,处理器会以编程方式或者使用接受此类值而不会导致访问冲突的颜色/不透明度表来将颜色和不透明度设置为零。
例如,当处理器确定小于vmin的插值的值时,处理器可以不取出颜色和不透明度值,但是被编程为将小于vmin的插值的值的相关联的颜色和不透明度值设置为零。备选地,处理器可以使用允许小于vmin的值的表。
由于通常无符号和有符号数据集的体素范围不大于16位,并且取出的体素值在内部被当作Int32或Float32值进行处理,因此该范围扩展仍然可以使用Int32或Float32值进行处理,从而更易于将所提出的改变有效地集成到已有的渲染算法中。
图12图示了体积渲染的示例实施例,其中在具有非零传递函数的两个展示遮罩A1和A2之间定义边界。在使用多个展示遮罩A1和A2的示例中,边界可以被定义为遮罩之间的区域。例如,边界可以被定义为具有二者都不为空的不同传递函数的两个展示遮罩之间的区域。
更具体地,创建具有非零传递函数的两个遮罩之间的边界可以通过将它分解为两种情况来计算:(1)第一遮罩A1将被视为展示遮罩(使用它的非空传递函数),并且第二遮罩A2将被视为冲压遮罩(具有空传递函数),以及(2)第一遮罩A1将被视为冲压遮罩(具有空传递函数),并且第二遮罩A2将被视为展示遮罩(使用它的非空传递函数)。
在图12中,处理器在S800获取体素数据。
在S805和S810,处理器将第一遮罩A1视为展示遮罩(非空传递函数)并且将第二遮罩A2视为冲压遮罩(空传递函数)。更具体地,处理器执行图6中描述的方法,使用第二遮罩A2作为冲压遮罩并且使用第一遮罩A1的传递函数。因此,以与S405和S410相同的方式执行步骤S805和S810。
应当注意,在S805,由于wopt1取决于展示遮罩的传递函数,因此使用等式(3)确定值wopt1,第一遮罩A1被视为展示遮罩并且第二遮罩A2被视为冲压遮罩。
在S805,处理器通过将与第二遮罩A2相关联的体素的体素值替换为wopt1来修改体素数据与第二遮罩A2相关联的至少一部分。因此,处理器将体素数据的一部分设置为如下所示的值:
更具体地,通过使用体积插值算子TV和梯度算子TG,算子TV(A,wopt1)和TG(A,wopt1)如等式(1)所定义的在经修改的体素输入数据上进行操作(体素数据被改变为wopt1),其中wopt1由等式(3)指定(使用第二遮罩A2作为冲压遮罩并且使用第一遮罩A1的传递函数)。
在S815和S820,处理器将第二遮罩A2视为展示遮罩(非空传递函数)并将第一遮罩A1视为冲压遮罩(空传递函数)。更具体地,处理器执行图6中描述的方法,使用第一遮罩A1作为冲压遮罩。因此,以与S405和S410相同的方式执行步骤S815和S820。应当注意,在S815,由于wopt2取决于展示遮罩的传递函数,所以使用等式(3)确定值wopt2,第二遮罩A2被视为展示遮罩并且第一遮罩A1被视为冲压遮罩。
在S815中,处理器通过将与第一遮罩A1相关联的体素的体素值替换为wopt2来修改体素数据中与第一遮罩A1相关联的至少一部分。因此,处理器将体素数据的一部分设置为如下所示的值:
更具体地,通过使用体积插值算子TV和梯度算子TG,算子TV(A,wopt2)和TG(A,wopt2)如等式(1)所定义的在经修改的体素输入数据上操作(体素数据改变为wopt2),其中wopt2由等式(3)指定(使用第一遮罩A1作为冲压遮罩并且使用第二遮罩A2的传递函数)。
虽然S805-S810和S815-S820被图示为并行执行,但是示例实施例不限于此。
在S825,处理器使用用于处理两个体积的体积渲染的相同公式来将沿着射线产生的两个颜色和不透明度函数进行组合,其中每个体积具有其本身的传递函数。该组合可以通过使用诸如以下论文描述的融合体积渲染算法来执行:F.Roessler,E.Tejada,T.Fangmeier,T.Ertl,GPU-based Multi-Volume Rendering for the Visualization ofFunctional Brain Images,Proceedings of SimVis,315–318,2006,其全部内容通过引用并入本文。
在S830,处理器然后显示经融合的体积。
以上描述了示例实施例,将明显的是,这些示例实施例可以以许多方式变化。这样的变化不认为是脱离示例实施例的精神和范围,并且对于本领域技术人员显而易见的所有这样的修改都旨在被包括在权利要求的范围内。
Claims (16)
1.一种使用一种渲染技术进行可视化的方法,其中体素沿着贯穿一个体积的一条射线而被采样,所述方法包括:
获取体素数据;
修改所述体素数据的一个第一部分,所述体素数据的所述第一部分与一个第一分割遮罩相关联,所述第一分割遮罩定义自身的用于体积渲染所需的传递函数,所述修改包括:
将所述体素数据的所述第一部分设置为多个允许的体素值中的至少一个;
将一个算子集应用于所述体素数据的经修改的所述第一部分和所述体素数据的一个剩余部分;以及
基于所应用的所述算子集来显示所述体积,
其中所述多个允许的体素值仅包括如下这样的体素值,针对这些体素值,由所述传递函数定义的不透明度函数生成为零的不透明度。
2.根据权利要求1所述的方法,其中所述设置将所述体素数据的所述第一部分设置为一个统一值,所述统一值在所述多个允许的体素值内。
3.根据权利要求2所述的方法,其中对所述体素数据的所述第一部分的所述设置包括:
确定所述多个允许的体素值;以及
将所述统一值确定为所述多个允许的体素值内的最大值。
4.根据权利要求3所述的方法,其中一个不透明度函数针对所述多个允许的体素值中的所有体素值生成为零的不透明度,使得对于所述多个允许的体素值中的每个元素,所述不透明度为零,并且对于小于所述元素的所有值,不透明度也是零。
5.根据权利要求2所述的方法,其中所述应用包括,
在一个初始颜色函数和一个经修改的颜色函数之中确定所述射线的一个颜色函数,所述经修改的颜色函数与所述统一值相关联;
在一个初始不透明度函数和一个经修改的不透明度函数之中确定所述射线的一个不透明度函数,所述经修改的不透明度函数与所述统一值相关联,
当使用所述经修改的不透明度函数时在一个弧长度处的一个不透明度小于使用所述初始不透明度函数时在所述弧长度处的一个不透明度时,所确定的所述颜色函数是所述经修改的颜色函数,
当使用所述经修改的不透明度函数时在所述弧长度处的所述不透明度小于使用所述初始不透明度函数时在所述弧长度处的所述不透明度时,所确定的所述不透明度函数是所述经修改的不透明度函数;以及
将所确定的所述颜色函数和所确定的所述不透明度函数应用于所述体素数据。
6.根据权利要求5所述的方法,其中所确定的所述颜色函数相应地表示所述射线的多个区间上的多个颜色值,并且所确定的所述不透明度函数相应地表示所述射线的所述多个区间上的多个不透明度值。
7.根据权利要求6所述的方法,其中确定所述颜色函数包括,
从一个预积分表中获取所述多个颜色值和所述多个不透明度值。
9.根据权利要求2所述的方法,还包括:
使用一个二元优化遮罩来确定一个边界。
10.根据权利要求2所述的方法,其中对所述体素数据的所述第一部分的所述设置包括:
获取所述体素数据的最小值;
确定扩展最小值,所述扩展最小值小于所获取的所述最小值;
将具有所述扩展最小值的一个体素值的一个颜色和一个不透明度设置为零;以及
将所述统一值确定为所述扩展最小值。
11.根据权利要求2所述的方法,还包括:
二次修改所述体素数据的一个第二部分,所述体素数据的所述第二部分与一个第二分割遮罩相关联,所述二次修改包括:
将所述体素数据的所述第二部分设置为一个第二统一值;以及
将所述算子集应用于所述体素数据的经修改的所述第二部分和所述体素数据的所述第一部分,其中所述显示基于对所述体素数据的经修改的所述第一部分所应用的所述算子集以及对所述体素数据的经修改的所述第二部分所应用的所述算子集来显示所述体积。
12.根据权利要求11所述的方法,其中对所述体素数据的所述第二部分的所述设置包括:
确定针对所述第二统一值的一个允许值集合;以及
将所述第二统一值确定为所述允许值集合内的最大值。
13.根据权利要求1所述的方法,其中所述多个允许的体素值中的所述至少一个是最优值。
14.根据权利要求1所述的方法,其中所述第一分割遮罩是一个第一展示遮罩,所述方法还包括:
修改所述体素数据的一个第二部分,所述体素数据的所述第二部分与一个第二展示遮罩相关联,所述修改包括:
将所述体素数据的所述第二部分设置为第二多个允许的体素值中的至少一个;
将所述算子集应用于所述体素数据的经修改的所述第二部分以及除了经修改的所述第二部分之外的所述体素数据;以及
基于所应用的所述算子集来显示所述体积。
15.一种用于可视化一个体积的系统,所述系统包括:
一个存储器,存储多个计算机可读指令;以及
至少一个处理器,被配置为执行所述多个计算机可读指令,以
获取体素数据,
修改所述体素数据的一个第一部分,所述体素数据的所述第一部分与一个第一分割遮罩相关联,所述第一分割遮罩定义自身的用于体积渲染所需的传递函数,所述修改包括:
将所述体素数据的所述第一部分设置为多个允许的体素值中的至少一个,
将一个算子集应用于所述体素数据的经修改的所述第一部分和所述体素数据的一个剩余部分,以及
基于所应用的所述算子集来显示所述体积,
其中所述多个允许的体素值仅包括如下这样的体素值,针对这些体素值,由所述传递函数定义的不透明度函数生成为零的不透明度。
16.一种非暂时性计算机可读介质,所述非暂时性计算机可读介质在由至少一个处理器执行时被配置为使得所述至少一个处理器:
获取体素数据,
修改所述体素数据的一个第一部分,所述体素数据的所述第一部分与一个第一分割遮罩相关联,所述第一分割遮罩定义自身的用于体积渲染所需的传递函数,所述修改包括:
将所述体素数据的所述第一部分设置为多个允许的体素值中的至少一个,
将一个算子集应用于所述体素数据的经修改的所述第一部分和所述体素数据的一个剩余部分,以及
基于所应用的所述算子集来显示一个体积,
其中所述多个允许的体素值仅包括如下这样的体素值,针对这些体素值,由所述传递函数定义的不透明度函数生成为零的不透明度。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/456,999 | 2017-03-13 | ||
US15/456,999 US10304236B2 (en) | 2017-03-13 | 2017-03-13 | Methods and systems for segmented volume rendering |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108573523A CN108573523A (zh) | 2018-09-25 |
CN108573523B true CN108573523B (zh) | 2022-06-03 |
Family
ID=61231091
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810205684.7A Active CN108573523B (zh) | 2017-03-13 | 2018-03-13 | 用于分割体积渲染的方法和系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10304236B2 (zh) |
EP (1) | EP3376473B1 (zh) |
CN (1) | CN108573523B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109584249B (zh) * | 2018-11-21 | 2022-11-25 | 大连理工大学 | 一种基于闭合形式解的三维体数据分割方法 |
CN109739472A (zh) * | 2018-12-05 | 2019-05-10 | 苏州蜗牛数字科技股份有限公司 | 一种地形潮湿和风干效果的渲染方法 |
DE102021110797A1 (de) | 2021-04-27 | 2022-10-27 | Siemens Healthcare Gmbh | Verfahren und System zum Optimieren einer Abstandsschätzung |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004522464A (ja) * | 2000-10-02 | 2004-07-29 | ザ リサーチ ファウンデーション オブ ステイト ユニヴァーシティ オブ ニューヨーク | 向上した視覚化、ナビゲーション及び検査 |
US6573893B1 (en) * | 2000-11-01 | 2003-06-03 | Hewlett-Packard Development Company, L.P. | Voxel transfer circuit for accelerated volume rendering of a graphics image |
WO2005055148A1 (en) * | 2003-11-29 | 2005-06-16 | Vital Images, Inc. | Segmented volume rendering using a programmable graphics pipeline |
WO2006099490A1 (en) | 2005-03-15 | 2006-09-21 | The University Of North Carolina At Chapel Hill | Methods, systems, and computer program products for processing three-dimensional image data to render an image from a viewpoint within or beyond an occluding region of the image data |
US7773086B2 (en) | 2006-04-07 | 2010-08-10 | Siemens Medical Solutions Usa, Inc. | Range-peeling for punching masks in volume rendering |
US20080095414A1 (en) * | 2006-09-12 | 2008-04-24 | Vladimir Desh | Correction of functional nuclear imaging data for motion artifacts using anatomical data |
US7990378B2 (en) * | 2007-05-07 | 2011-08-02 | General Electric Company | Methods and apparatus for volume rendering |
DE102011076929A1 (de) | 2011-06-03 | 2012-12-06 | Siemens Ag | Verfahren und Vorrichtung zur Darstellung von Volumendaten für eine Untersuchung von Dichteeigenschaften |
US10152821B2 (en) | 2016-08-19 | 2018-12-11 | Siemens Healthcare Gmbh | Segmented volume rendering with color bleeding prevention |
-
2017
- 2017-03-13 US US15/456,999 patent/US10304236B2/en active Active
-
2018
- 2018-02-16 EP EP18157054.0A patent/EP3376473B1/en active Active
- 2018-03-13 CN CN201810205684.7A patent/CN108573523B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
US20180260996A1 (en) | 2018-09-13 |
US10304236B2 (en) | 2019-05-28 |
EP3376473B1 (en) | 2021-04-07 |
CN108573523A (zh) | 2018-09-25 |
EP3376473A1 (en) | 2018-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9053565B2 (en) | Interactive selection of a region of interest in an image | |
US7439974B2 (en) | System and method for fast 3-dimensional data fusion | |
US7808514B2 (en) | Multiplanar reformatting visualization with multiple scrolling speeds | |
EP3493161B1 (en) | Transfer function determination in medical imaging | |
JP5225999B2 (ja) | 結合された強度の投影 | |
US20050237336A1 (en) | Method and system for multi-object volumetric data visualization | |
EP3511908B1 (en) | Hybrid interactive rendering of medical images with physically based rendering and direct volume rendering | |
EP1390917A1 (en) | Occlusion culling for object-order volume rendering | |
CN108573523B (zh) | 用于分割体积渲染的方法和系统 | |
WO2006031400A1 (en) | 3d volume construction from dicom data | |
US20180108169A1 (en) | Image rendering apparatus and method | |
JP2007222629A (ja) | 仮想切開を用いたインコンテキストボリューム視覚化のためのシステムおよび方法 | |
EP1161746A1 (en) | Interactive sculpting for volumetric exploration and feature extraction | |
US7773086B2 (en) | Range-peeling for punching masks in volume rendering | |
EP1922698B1 (en) | A method of generating a 2-d image of a 3-d object | |
US11403809B2 (en) | System and method for image rendering | |
JP5122650B2 (ja) | 経路近傍レンダリング | |
JP7479818B2 (ja) | 画像処理装置及び画像生成方法 | |
JP7131080B2 (ja) | ボリュームレンダリング装置 | |
CN106384377B (zh) | 医学数据的体绘制方法和装置 | |
EP4322111A1 (en) | Volumetric peeling method for monte carlo path tracing | |
EP4129182A1 (en) | Technique for real-time volumetric imaging from multiple sources during interventional procedures | |
US11417027B2 (en) | Image data processing method and apparatus | |
EP3929933A1 (en) | Vrds 4d medical image-based artery and vein ai processing method and product | |
Kniesel et al. | Real-Time Visualization of 3D Amyloid-Beta Fibrils from 2D Cryo-EM Density Maps. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |