几种常见平滑算法的实现可以参见:

几种网格平滑算法的实现 - Jumanco&Hide - 博客园 (cnblogs.com)

1 Introduction

图像空间中相关的组织和结构,变换成网格模型,通常是为了实现更加高效和清晰的可视化。在医学领域,准确性,保形(比如,病例结构),不同表面之间距离的保持都是至关重要的。图1中,a)上臂肱骨的MRI数据,b)提取出来的表面模型,c)肱骨的照片。

提取出来的网格模型仅仅是真实模型的近似。和真实模型有很大的差别。会有很多虚假的结构(artificial object),比如磨损部件,空洞,楼梯,高台。人的眼镜对于这些不连续性非常的敏感,通常这些特征作为目标识别和分类的重要特征。对于减少这些虚假结构,通常可以从两个方面触发,voxel level或surface mesh level(见图2)。

在voxel level的操作往往进行亚体素重采样,使用非binary的分割mask,或在亚体素上进行分割(D. Stalling, M. Z ̈ockler, and H.-C. Hege. Segmentation of 3d medical images with subvoxel accuracy. In Proc. CARS’98, pages 137–142, 1998.)。其他方法对binary segmentation mask进行平滑(A. Neubauer, M.-T. Forster, R. Wegenkittl, et al. Efficient display of background objects for virtual endsocopy using flexible first-hit ray casting. In Proc. VisSym’04, pages 301–310, 2004),或者在mesh提取的时候依据灰度值对边界进行调整(P.W. Bruin, F. Vos, F.H. Post, et al. Improving triangle mesh quality with surfacenets. In Proc. MICCAI’00, pages 804–813, 2000)。考虑到医学可视化的特殊性,对于那种mesh smoothing算法适合医学可视化,以及不同的参数对于结果会有什么影响。考虑到体积保持和空间扩展和关系保持的具体要求,目前尚不可能对医学表面网格进行详细的、面向目标的平滑处理。本文比较了Laplace,Laplace+HC,LowPass网格处理算法。

3 Problem Analysis

为了系统地比较用于医学可视化的网格平滑算法和策略,我们首先分析了伪影的原因,这些伪影使得从医学体数据中提取的表面平滑成为必要,或者阻碍了这一过程。我们考虑从原始体积数据开始到网格提取步骤(见图2)的曲面提取过程的每个步骤,以分析可能的问题和伪影源。此外,我们还根据医学可视化中不同的表面模型的特性和具体特征对其进行了分析,并提出了合适的分类方案。从这些发现中,我们得出了医学可视化对网格平滑的要求以及评估平滑结果的标准。

3.1 Artifact sources in the surface extraction process

从医学体数据中提取的曲面是由原始对象、图像采集、分割和网格提取组成的多级生成过程的结果。由于每个步骤都是提取曲面伪影的潜在来源,因此我们分析和讨论每个步骤中的所有伪影来源.

3.1.1 Image Acquisition

采集的医学影像通常的分辨率在128x128x64到512x512x400之间,并且z轴的分辨率往往比xy轴的低。

图像采集技术的离散分辨率导致所谓的部分体积效应。这个描述的是不同组织的不同density values会合并覆盖到one voxel中,或者仅部分覆盖,如图3a。对于精细结构或体积元素内部的锐角,可对与实际存在的对象之一不对应的密度值进行采样。因此,锐角可能会变得模糊,并且在分割步骤中,这样的体素可能被指定给错误或没有对象。由于在临床上,常规医学成像应用于患者,会产生运动伪影,比如由呼吸引起。此外,由于植入物在CT扫描期间阻挡X射线束或在MRI下引起磁场不均匀性,可能会出现信号伪影(见图3(b))。

3.1.2 分割

分割后,每个voxel会被标签上是某种对象或是背景。分割技术中,更常见的是binary分类。(1=物体,0=背景)。这会引入块状伪影。也有基于slice的分割,这样不同slice之间会存在不连续性。

此外,由于图像采集过程中的伪影,分割也可能失败。物体边界模糊(比如,由于partial volume effect和motion artifacts),或者不正确的voxel value(比如,由于噪声和信号伪影)会导致更多的voxel被分配为目标对象(over-segmentation),或者更少的voxel(under-segmentation)。这个会引起holes,和frayed object,在关键区域会多或少一些结构。见图4.

3.1.3 网格提取

网格提取算法通常采用MarchingCube算法实现。

3.1.4 Summary

图像采集过程中相关的伪影有:

  • noise,噪声;
  • partial volume effect,部分体积效应,如,一个体素中只有一部分是目标对象;
  • 运动和信号伪影

分割过程中有:

  • block、staircase伪影;
  • holes
  • frayed parts
  • additional、detached parts(有over-或under-segmentation引起)

表面网格提取阶段:

  • salient/artificial surface edges;
  • 大量的三角形;
  • small/large triangle size in relation to feature size
  • elongate triangles

虽然平滑操作不能够处理所有的伪影,但也并不会放大这些伪影。

3.2 Object Analysis and Classification

解剖结构的表面通常不会有矩形,锐利的或straight-lined edges。通常组织结构是平滑的,和特定于对象的犁沟、分支、凸起或缩进。这和CAD、CAM应用中用到的特征保留平滑算法中的模型是不一样的。因此,上述的平滑算法并不适合组织对象。

此外,解剖结构的表面模型不同对象特征具有很大的差异性。因此,不同形状的对象,在平滑的时候会有不同的表现,或针对不同的对象有各自的适合的平滑策略。可以根据特定的对象特性对对象进行分类是合理的。因此我们将对象分为了三类,compact,flat,或者elongated(图5)。此外,我们利用triangle-size-to-feature-size比率对对象进行了区别。此处,如果triangle size比feature-size小很多,我们定义objects为huge,否则定义为small。

3.2.1 Compact objects

compact对象的特征是体积相对于表面积而言很大。典型的示例有:肝脏,milt,kidneys(肾脏),也有一些小的结构,比如淋巴结,其他腺体。通常,小型紧凑物体(如肿瘤和潜在病理性淋巴结)的确切空间位置、体积和范围具有医学相关性。相比之下,对于大型紧凑物体(如器官),可接受与精确体积的微小偏差以及小物体部分的适度收缩。compact对象主要受到块和楼梯伪影的影响,这些伪影会损坏原始对象,例如,通过非自然的人工边缘。此外,一个切片中的紧凑对象的大小很可能与其相邻切片中的大小相差很大。在这些区域,通常会出现带有大型细长楼梯(所谓高原,plateaus)的楼梯瑕疵。由于网格提取技术,在这些高原上会创建大量共面多边形,这可能会妨碍平滑过程。一些compact对象会包含独立对象部分(如,satellites of a tumor or segmentation artifacts,见图6)。图6c中曲率变化很大的情况下,少量的平滑,可能导致表面的很大变化。

3.2.2 Flat Objects

若果对象的一个维度上的大小明显小于其他维度,那么对象被分类为flat(平坦对象)。典型的例子是颈部肌肉(胸锁乳突肌),像肩胛骨、胸骨和盆骨。由于部分体积效应、二元分割以及它们在一个方向上的小范围,相应提取的曲面模型很可能会出现磨损零件、孔洞、附加零件和分离零件。这些问题区域由于曲率增加,邻接三角形存在很大的差异,会导致这些部位的严重形变。和compact对象类似,flat对象也会存在block和staircase伪影。如图7.此外,弯曲的flat对象会引起更加严重的问题,因为这样的结构在尺寸、形状和位置上倾向于朝着它们的方向收缩 重心。这可能会导致周围对象之间的空间距离和关系发生严重变化。

3.2.3 Elongated Objects

结构主要朝一个方向伸展,这样的对象分类为拉长的对象。血管,支气管树,手臂腿部的骨头,肋骨。

这些对象的连通性和连续性是他们的重要功能。由于其不利的三角形大小与特征大小之比,此类对象中的大多数对象严重遭受块和阶梯伪影以及平滑方法的负面影响。例如,楼梯伪影可能导致视觉上的分心和诊断上的误导性收缩。此外,由于部分体积效应,此类细丝状对象的部分可能无法在不同的切片中精确表示。因此,在网格提取期间,可以生成更多断开连接的对象部分。拉长的对象还可以显示多个分支,这些分支的存在、数量和分支行为非常重要。平滑算法可以扭曲这些分支以及收缩和折叠薄对象部分,从而导致进一步扭曲和分离对象部分。

3.3 Mesh smoothing requirements for medical visualizations

通过分析伪影源和医学表面模型的具体特征,我们得出了医学可视化对网格平滑的要求。

网格平滑的主要目标是为了获取(A)视觉改善。为了完成这个目的,所有对象的block和台阶伪影(A-1)和plateaus伪影(A-2)需要去除(特别是对于compact对象)。对于flat对象,主要需要补洞(A-3),减少frayed parts(刺出来的部分)(A-4)。对于拉长的对象,需要恢复形状的连续性,重建连续直径分布(A-5),和将分离对象重连(A-6)。需要避免原始对象和平滑后的对象的偏差超过一定的值(B),给定适当的停止标准是必要的。这些可以是,对象特征保持(B-1),体积保持(B-2),空间延伸和关系的守恒(B-3),同时不能放大伪影(B-4)。

3.4 Smoothing result assessment criteria 平滑结果评估标准

在本节中,我们列出并简要分析了保证原始曲面模型质量和正确性评估的标准。

评价可视化提升的合理的标准有:视觉感知,三角形质量,最大曲率,平滑之后的表面积的变化

评价相对于原始模型的偏移或误差,可以采用:体积,主轴范围,距离测量(e.g. Hausdorff distance)。与原始图像的偏差或距离也可以通过对适当的视觉效果进行目视检查来评估。平滑方法适当性的其他标准是其计算复杂性和运行时间

4 Comparison and assessment concept

初始提取出来的表面模型作为original,比较和评估都是以该模型作为基准。这一概念适用于医学可视化程序,在该程序中,没有正确的患者个体解剖学的“完美”模型可用。因此,本研究的平滑结果和经验不仅可用于得出平滑建议,还可直接集成到通用可视化过程中(例如,作为停止标准)。

在本文研究中,使用MeVisLab实现不同的平滑算法。使用Amira对结果进行分析。

4.1 Surface Models and Assessment Criteria 表面模型和评估标准

为了比较不同的算法,我们选了6个典型参考对象(每个类别两种参考对象)(见Table1)。

为了保持比较简洁,我们仅使用最大曲率的分布(两个主曲率值的最大值)作为平滑度的指标,并作为评估视觉改善的数值标准(↑A) ,以及对称Hausdorff距离(作为位移度量)和体积(作为收缩度量)来评估误差(↑B) 相对于原始曲面。因此,在每个算法的所有参考对象的每个平滑步骤中收集这些标准。计算模型每个顶点的最大曲率,并用整个曲面模型的平均值和标准偏差表示。每个顶点相对于原始曲面的对称Hausdorff距离的最大值用于表示对原始曲面的最大分布/误差。

4.2 Smoothing Algorithms and Parameters

4.2.1 Laplace Mesh Smoothing Algorithm

直接使用拓扑结构中领域的内容进行平滑。拉普拉斯过滤器迭代遍历所有曲面顶点,并将每个顶点移动到其拓扑邻居的几何中心。关于laplace平滑可以参见:pmp_src_algo-surface-smoothing.

其中,p为旧的点,p'为新的点,q为领域的点。vtkSmoothPolyDataFilter of the VTK实现一致。

4.2.2 Laplace+HC Mesh Smoothing Algorithm

该算法是用来解决laplace平滑过程中引入的搜索问题(J. Vollmer, R. Mencel, and H. M ̈uller. Improved laplacian smoothing of noisy surface meshes. In Proc. EuroGraphics’99, pages 131–138, 1999)。HC算法扩展的概念是,通过拉普拉斯滤波器移动的顶点在某种程度上被移回其原来的位置。该算法的大的结果,体积不会引起较大变化。此处,采用的\(\alpha = 0\),表示所以的顶点只会往之前的位置的方向移动,\(\beta = 0.2\),自身位移矢量对向后运动的贡献系数为0.2,邻域平均位移矢量对向后运动的贡献系数为0.8。

4.2.3 LowPass Mesh Smoothing Algorithm

LowPass表示两个laplace滤波,有一个正向权重,一个负向权重,G. Taubin. A signal processing approach to fair surface design. In Proc. SIGGRAPH’95, pages 351–358, 1995.

第一步的时候是常规的laplace滤波过程,使用任意的\(\lambda\)参数,第二步的时候,将\(\lambda\)替换成\(\mu\),这个值会比\(-\lambda\)小一点点,用于将点进行反向移回。为了更好的和前面两种平滑方法对比,此处将\(\mu\)设置为\(\mu = -1.02\lambda\)。 vtkWindowedSincPolyDataFilter中实现了该算法。

4.3 Comparison Procedure

因此,我们将讨论的平滑方法与一阶和二阶邻域、四个不同的迭代步骤(5;10;20;50)和六个不同的加权因子(0.05;0.1;0.3;0.5;0.7;0.9)进行了比较,并将其应用于六个代表性曲面模型。

5 Results

5.1 Smoothing Results of Compact Objects

低通滤波器和加权因子在0.5到0.9之间、迭代次数在20到50次的拉普拉斯+HC被证明同样合适。

5.2 Smoothing Results of Flat Objects

拉普拉斯滤波器被证明是平滑平面对象最差的滤波器,并且产生了严重收缩的曲面模型。同样,使用低通和拉普拉斯+HC滤波器进行平滑得到了最佳结果。然而,低通滤波器能更好地保持磨损零件和孔的体积和形状(见表3)。使用介于0.5和0.7之间的权重因子以及20次迭代可以获得最佳结果。与紧凑对象的结果类似,使用二阶邻域平滑平面对象可以更好地减少严重瑕疵,但与此相反,二阶邻域会使磨损的零件和孔变形更多

5.3 Smoothing Results of Elongated Objects

最好的结果出现在LowPass,0.5 weighting factor和10到20的迭代。

6 Smoothing Recommendations

在我们的研究中,低通滤波器被证明是所有参考对象最合适的基本平滑滤波器。为了平滑紧凑的对象,主要是具有二阶邻域的低通滤波器,应使用大约0.7的加权因子和20到50次迭代。类似的平滑策略可应用于没有或有少量磨损零件和孔的平面对象,而此处应用的迭代次数不应超过20次。相反,具有此类问题区域的平面对象应使用一阶邻域进行平滑。具有许多细丝分支和分离对象部分的细长对象无法使用任何测试过滤器进行适当平滑。对于血管树的平滑,基于模型的平滑(在某种程度上从[OP05]中介绍的真实解剖中抽象出来)往往是最有希望的程序,至少对于不用于诊断任务的可视化来说是如此。要平滑相对简单、稀疏或无分支的细长对象,建议使用加权因子为0.5和10次迭代的低通滤波器。

评估标准被证明是评估视觉改善的潜在停止标准(↑A) 是测定表面积和最大曲率分布的平均值和标准偏差。评估平滑曲面相对于原始曲面模型的偏差/误差(↑B) 对称Hausdorff距离和模型体积是合适的。将体积变化作为停止标准不适用于拉长的对象,因为此时小区域往往会缩小,而其他区域则会增大。因此,整个对象体积不会发生变化,尽管平滑结果与原始结果相差很大。

7 Conclusion and Discussion

基于对伪影的分析,将对象分类为特定组(紧凑、平坦、细长),并比较基本网格平滑算法的不同参数组合,我们能够得出医疗可视化的第一平滑建议。然而,本研究表明,对提取的曲面模型进行平滑,仅在有限的程度上从视觉上改善曲面。磨损零件、孔和分离零件主要通过网格平滑表示不可还原的瑕疵。未来的工作应分析更复杂的网格平滑方法和策略(例如,基于扩散的平滑)。此外,在体素和网格级别实现视觉改善的方法还有待进一步研究。医学表面模型的自动平滑是另一个重要问题。在这种情况下,自动识别对象类型(例如紧凑、平坦、拉长)和检测瑕疵应导致自动确定适当的平滑策略和参数。

PaperRead - Comparison of Fundamental Mesh Smoothing Algorithms for Medical Surface Models的更多相关文章

  1. Vertex-Based Diffusion for 3-D Mesh Denoising(三维网格去噪中基于顶点的扩散算法)

    Abstract—We present a vertex-based diffusion for 3-D mesh denoising by solving a nonlinear discrete ...

  2. 机器学习算法之旅A Tour of Machine Learning Algorithms

    In this post we take a tour of the most popular machine learning algorithms. It is useful to tour th ...

  3. Computer Graphics Research Software

    Computer Graphics Research Software Helping you avoid re-inventing the wheel since 2009! Last update ...

  4. 计算机视觉code与软件

    Research Code A rational methodology for lossy compression - REWIC is a software-based implementatio ...

  5. (转)Awesome Courses

    Awesome Courses  Introduction There is a lot of hidden treasure lying within university pages scatte ...

  6. CVPR 2017 Paper list

    CVPR2017 paper list Machine Learning 1 Spotlight 1-1A Exclusivity-Consistency Regularized Multi-View ...

  7. Bayesian machine learning

    from: http://www.metacademy.org/roadmaps/rgrosse/bayesian_machine_learning Created by: Roger Grosse( ...

  8. osg 添加 fbx插件 osg中编译fbx

    使用osg加载fbx模型,需要自己编译fbx插件,编译流程与插件使用案例如下 代码地址:https://github.com/shelltdf/osgFBX CMake Error: The foll ...

  9. CG&CAD resource

    Computational Geometry The Geometry Center (UIUC) Computational Geometry Pages (UIUC) Geometry in Ac ...

随机推荐

  1. Jenkins优化

    目录 一.修改 JVM 的内存配置 二.修改jenkins 主目录 一.修改 JVM 的内存配置 Jenkins 启动方式有两种方式,一种是以 Jdk Jar 方式运行,一种是将 War 包放在 To ...

  2. 【划重点】Python pandas简介

    一.pandas获取Excel表单的两种方式 import pandas as pd df1 = pd.DataFrame(pd.read_excel(r'C:\Users\ASUS\Desktop\ ...

  3. Python绘制折线图

    一.Python绘制折线图 1.1.Python绘制折线图对应代码如下图所示 import matplotlib.pyplot as pltimport numpy as np from pylab ...

  4. 纯css设置元素高度与宽度相等

    设置图片高度等于宽度 .img-box{ width:100%; height:0; position: relative; padding-bottom: 100% } .img-box img{ ...

  5. java 编程基础 Class对象 反射 :获取类的构造方法,方法,成员变量,内部类,外部类,父类,实现的接口,修饰符等...

    类 Class  每个类被加载之后,系统就会为该类生成一个对应的Class对象,通过该Class对象就可以访问到JVM中的这个类. 我们在Java中获取Class对象一般有三种方式: (1), 使用C ...

  6. js 将二维数组转为一维数组

    方法一 使用ES的最新语法:Array.prototype.flat(). flat([dept]),参数 dept 为数组的深度,默认为1,根据传入的深度将数组展开. 对于不确定深度的数组,可以传入 ...

  7. NULL在oracle和mysql索引上的区别

    一.问题 oracle的btree索引不存储NULL值,所以用is null或is not null都不会用到索引范围扫描,但是在mysql中也是这样吗? 二.实验 先看看NULL在oracle(11 ...

  8. libevent之学习文档

    1.官方文档 2.中文版 3.gitbook

  9. 【LeetCode】359. Logger Rate Limiter 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典 日期 题目地址:https://leetcode ...

  10. 【LeetCode】951. Flip Equivalent Binary Trees 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 递归 日期 题目地址:https://leetcod ...