移动立方体算法:一种高分辨率的3D表面构建算法
QQQ 科研 24

摘要:
我们提出了一个叫做移动立方体的算法,该算法从3D医疗数据中创建等密度的表面,且该表面由三角形网格表示。我们使用分而治之的方法生成片间连接?,并建了一个表来定义三角拓扑。该算法通过行扫描来处理3D医疗数据,使用线性拟合的方法来计算三角形顶点位置。我们计算得到原始数据的梯度之后,将其正则化,然后用它来对模型进行着色。获得的表面模型所生成的图片的详细数据是通过聚合原始3D数据中内含的内部连接信息,表层数据信息和梯度信息生成的。计算机断层扫描,核磁共振和单光子发射计算机断层扫描都证实移动立方体的有效性和质量。同样的,我们还讨论了可以降低处理时间的提升方法,提出了具有建模能力的移动立方体算法。

关键词:计算机图形,医疗图像,表面重建

介绍:
三维表面解剖是一个极具价值的医疗工具。尽管我们有从CT,MR和SPECT生成的表面数据,但这些2D的医疗图片的解读需要特别的训练,也就是需要放射科医师来解读,因此放射科医生需要帮助转诊医生来理解这些2D医疗图片(因为转诊医生可能在转换2D到3D图这方面是有一定的困难的)。
研究者在很多领域报道了3D医疗图片的应用。对复杂的髋臼骨折,颅面骨畸形,颅内结构等场景的可视化过程都展示了3D可视化在复杂骨结构中表达中的潜能。在辐射治疗和外科手术规划领域展示了聚合了3D表面图片的3D技术。心脏应用包括动脉可视化和非图形建模应用都需要计算表面区域和大小。
现有的3D算法缺少细节,并且有时候还需要认为参与修改。我们提出了一个全新的、高分辨率3D表面重建技术,该技术生成的模型前所有的详细。该新算法从3D数组数据中创建一个等密度的多边形表面表达模型,该方法我们称之为移动立方体算法。生成的模型能被基于软件/硬件的传统的图形渲染算法所展现。
在描述完3D医疗数据信息流之后,我们将叙述一下相关工作并讨论一下这些工作的缺陷。然后,我们通过三种不同的医疗图片技术来证明我们算法在效率和功能方面的优势。

3D医疗算法的信息流介绍:
3D医疗应用大致包括4步。我们也可以把最后三步看成一个步骤,但在此文中,我们从逻辑上将处理过程分解成如下步骤:

  1. 数据获取
    这一步由医疗图片生成机器执行,将会对患者的某些属性进行采样,并产生多个2D信息切片。采样数据依赖于数据获取机器。X射线计算机断层扫描技术测量空间分布内的X射线衰减系数。CT图片显示内部结构。对于3D应用,CT经常用来观察骨骼结构,我们已经成功可视化软组织。核磁共振用于测量物理特性。一个特性是“移动”的分布氢原子核,该分布在一个分片内显示了整体结构。其他两个特性测量松弛原子核的时间。MR是一种最新的技术,显示了各种软组织之间的明显对比。然而,曲面的多样性给3D带来了挑战
    第三种采集技术是单光子发射计算机断层扫描(SPECT)测量发射伽马射线[24]。这些射线的来源是分布在体内的放射性同位素。额外的,SPECT可以在着光剂远低于计算机断层扫描用量的情况下可视化血液。
  2. 图片处理
    一些算法使用图片处理技术来在3D数据中寻找结构或者过滤原始数据。尤其是MR数据,该种数据需要图片处理来寻找适当的结构。
  3. 表面重建
    表面重建,包括从3D体数据中创建表面模型。该模型通常包括3D体元素或者多边形。用户通过指定一个密度值选择特定的表面。这一步通常包括切分/覆盖表面。
  4. 展示
    在拥有了表面之后,最后一步就是将表面展示出来,该过程使用了包括光线投影,深度着色和颜色着色过程。

image.png

相关工作

在3D表面生成问题当中,有多种方案可以采取。早期的技术从要构造的曲面轮廓开始,并将连续切片上的轮廓与三角形连接起来。但很不幸,如果在一个分片上存在不止一个表面轮廓,在决定连接哪个轮廓的时候就会出现二义性。在这个时候就需要人工参与来消除二义性,但是在诊所环境中,我们应该尽可能的减少交互,并将其保持在一个极低的水平。

另一个研究,G herman和他的同事从立方体中创建曲面。通过三组正交平行平面将空间分割成相等的立方体(称为体素)。虽然有许多方法可以显示cuberille模型,但当使用从邻域中的立方体计算的梯度来查找模型上点的阴影时,会产生最真实的图像。Meager使用了octree八叉树来压缩表示3D数据,该数据集结构允许快速操纵和显示体素。

Farrel使用了射线投影来寻找3D曲面,但不是使用灰度对图像进行着色,而是使用色调亮度来显示曲面。在另一种光线投射方法中,Hohne在沿光线定位曲面后,计算沿曲面的梯度,并使用该梯度、比例的适当的值,为图像生成灰度表示。

Mayo Clinic使用了一种不一样的方式,他展示密度体而不是曲面。效果上,该方法生成一个传统的可以从任意角度观察的阴影图。Motion使用体积模型获得的三维效果。

所有的这些曲面重建和展示技术都具有一定的缺陷,因为他们呢丢失了一些在原始数据中的有用信息。外形连接法丢掉了存在于原始数据的内部分片连接。立方体算法使用阈值来将曲面表达为3D空间中的块,企图从从块中恢复影音信息。射线投射法既不单独使用深度着色,或者尝试使用非标准化渐变近似图片着色。因为他们显示所有值,而不仅仅是从给定从角度来看,体积模型依赖于运动来产生三维感觉。

我们的方法使用来自原始3D数据的信息推导切片间连通性、曲面位置和曲面梯度。可以显示生成的三角形模型关于使用标准的传统图形显示系统渲染算法。

移动立方体算法
主要有两个步骤,第一步,根据用户指定的值找到曲面和创建三角形网格。然后,为了保证曲面的图形的质量,我们计算了三角形每一个顶点在曲面的noemals?。
移动网格法使用了分而治之的方法来确定曲面在由八个顶点创建的逻辑立方体中的位置。
算法找出表面如何与该立方体相交,并移动到下一个立方体进行相同操作。为了在一个立方体中找到相交表面,我们测试立方体的顶点是否大于或等于我们想要构建的表面的值。这些顶点在表面内部。立方体顶点的值低于表面值将会被赋予零值,这也就意味它在我们所求的曲面之外。曲面将会跟那些顶点有在曲面内也有顶点在曲面外的点的立方体相交。在这个假说下,我们就找到了一个立方体当中的曲面拓扑,然后就可以找到相交的地方了。
由于每个立方体有8个顶点,每个顶点有两个状态,故而一个曲面与平面的相交状态有282^{8}种状态。在枚举这256种状态的过程中,我们建立了一个快速查看表来在给顶点状态的情况下比对相交状态。该表包括任何情况下的相交状态。
尽管我们可以三角测量这所有的256种状态,但这很无聊了,并且容易出错。好消息,两种立方体的对称性讲会把问题的256种状态变为14种方式。首先,如果曲面的值相对于立方体的关系没有发生改变,那么三角形曲面拓扑也没有发生变化。在互补对称性下,那些大于曲面值的顶点与小于曲面值的顶点是可以互换的,在拓扑方面是同等作用的。基于此,只有0-4个顶点大于曲面值需要被纳入考究,此时,我们只需要考究256的一半的数量的状态,即128种状态。在使用了轮换对称性之后,我们如愿的将问题转换大了14种模式。图3展示了这14种状态。
最简单的状态,所有节点高于或低于曲面的值,该状态没有三角形相交。状态1,一个顶点的状态与其他7个顶点的状态不一样,该状态产生了一个由三条边确定的三角形。上述的14种状态排列使用互补和轮换对称性就可以产生256种状态。
我们基于顶点的状态,为每一种立方体状态创建了一个索引。使用如图4的顶点标记顺序,8个bits的索引代表了8个顶点的状态。
该索引充当一个指向边的表,该表给出基于所给定的立方体参数的所有相交边。
在使用了索引来告知那一条边相交的时候,我们就可以沿着边缘拟合相交曲面。我们使用线性拟合的方法,也使用了更高精度的拟合方法。由于算法在一个立方体中产生了至少一个,至多4个三角形,更高精度拟合算法给出的曲面似乎与线性拟合的曲面相比提升并不大。
最后一步是为每一个三角形顶点计算一个单元正则值。渲染算法使用这个正则值来生成Gouraud-shaded图像。一个等密度曲面在该表面上的切线方向上的梯度都为零。因此,梯度向量g\vec{g}垂直于曲面。如果梯度不为零,我们可以使用这个方案(梯度向量垂直于平面)来生成曲面法向量。幸运的是,我们感兴趣的两种不同密度的软组织之间的梯度向量是非零的。使用中心差分法来求解边的点,且为了计算一个立方体的所有顶点,在内存中保存了四个切片。(因为中心差分法使用了算的点的两个neighbor的值)
总的来说,移动立方体算法通过以下四个步骤从三维数据集合中生成曲面:

  1. 将四个切片的数据读入内存。
  2. 扫描两个切片,然后从其中一个获取立方体8个顶点的4个,另一切片获取立方体的剩余四个顶点。
  3. 通过对比立方体顶点值和曲面设定值的大小,为每个立方体计算一个索引。
  4. 使用索引在预计算表格寻找边列。
  5. 使用每个边顶点的密度,通过线性插值找到曲面边缘。???
  6. 使用中心差分法计算每一个立方体的顶点的正则化值。然后将正则化值赋予顶点。
  7. 输出三角形顶点和顶点正则化值。

对基础算法的加强

我们对原始的移动立方体算法做了几项改进来让它跑的更快和更具备建模能力。

效率加强
该想法想要利用像素与像素,线与线,切片与切片的一致性。对于在原始数据内部的立方体(也就是不包含0号切片,0号线,和0号像素的立方体),仅需要对其的三条新边进行插值。
特殊情形都出现在数据边界上,但是我们可以通过枚举这些情况,然后将每个顶点的计算限制在一次上。如果我们要保存前一个切片的所有线交点的内存代价有点大,因此实际上,我们只保存前一个像素和线交点就可以了。使用该一致性我们算法速度提升了三倍!
通过将4个像素点平均成一个来降低切片分辨率的方法减少了三星形的个数,提高了曲面重建的效率和图片的光滑度。尽管平均后的切片存在一些细节损失,但该技术使得高分辨率切片形成的三角形的个数更利于管理。

功能增强
我们为算法实现了更加稳健的实体建模能力。布尔运算允许切割和覆盖实体模型,同样也可以拆分多个曲面。在医学应用中,切割相当于外科手术,覆盖(纹理映射)相当于医疗图像技术中的格式化。
我们使用在前面已经提及的立方体索引来在曲面上做布尔运算。在这里,我们只考虑索引的3个值,
0(曲面外),255(曲面内),(0-255)(曲面上)。
实体建模使用内,外,上观念来创建曲面。分析函数也提供相同信息。因此,一个平面方程可以判别一个给定的点是否介于平面里外上。
总的来说,这一部分是为了解决如下问题:
有两个曲面,我们只想要原曲面切割后的曲面和原曲面与切割面相交形成的新区面的混合体,因此有必要对每一个立方体确定其是否参与映射参与那个部分的映射。
2022-07-08 21-42-33屏幕截图

移动立方体算法:一种高分辨率的3D表面构建算法
https://blog.427221.xyz/archives/%E7%A7%BB%E5%8A%A8%E7%AB%8B%E6%96%B9%E4%BD%93%E7%AE%97%E6%B3%95%E4%B8%80%E4%B8%AA%E9%AB%98%E5%88%86%E8%BE%A8%E7%8E%87%E7%9A%843d%E8%A1%A8%E9%9D%A2%E6%9E%84%E5%BB%BA%E7%AE%97%E6%B3%95
作者
qqq
发布于
更新于
许可