一种面向隐式表达医学模型的3d打印切片方法
专利摘要:一种面向隐式表达医学模型的3D打印切片方法,涉及计算机图形学和3D打印。搜索体数据获取符合条件的实心体元;针对单个体元划分为一系列的子八分区,进行递归操作;整合所有的八分区对特定高度做投影,获取对应层高处各个点的三维线性插值;针对每个正方形顶点和标准步进平方模式做匹配,保存采样点;获取相邻若干采样点并且缩进,计算缩进距离;获取所有的采样点和采样点的相邻点,构造完整的内层轮廓;检查当前采样点是否存在错误;去除已知的自交点,优化内层轮廓形状;向内缩进增加一层虚拟层;构建平行扫描线场,并计算扫描线场与虚拟层的交点坐标;迷宫填充方式交替走线,实现内部填充。减少耗材。可降低时间、空间开销,减少耗材。
专利说明:一种面向隐式表达医学模型的3D打印切片方法 技术领域 本发明涉及计算机图形学和3D打印,特别是涉及一种面向隐式表达医学模型的3D打印切片方法。 背景技术 近年来,计算机辅助诊断技术随着科学技术的发展不断进步,利用影像学等手段,以及虚拟现实和计算机图形学的帮助下,通过计算机图形学来发现病症,进行手术前的规划,虚拟仿真等手段来进行手术引导和手术后的评估工作,可以提高手术的成功率。同时,为了更好的对模型进行处理,特别是3D打印技术在医学领域的应用具有十分广阔的应用前景。 传统的3D打印方法使用基于STL(STereo Lithography)格式的GCode生成算法。这个方案具有最广的普及性,以及相对比较通俗易懂的模型。但是随着算法对时间复杂度与打印精度要求的不断提升,以及打印模型愈发复杂的现状,STL转换解析带来的庞大时间开销与精度损失成为了阻碍打印效率与精度提升的最关键因素。用三角片网格拼成的3D模型并不是很适合进行GCode分层和相应的轮廓生成。因此,需要采用一种新的算法,来代替传统的基于三角面片分层投影轮廓构造方案。 Song等人(Song,Y.,Yang,Z.,Liu,Y.,et al.,Function representation basedslicer for 3d printing,Computer Aided Geometric Design,2018:1-18)参考了隐式划分方案(John,C.S.,Athanasios,P.I.,John,G.M.,Implicit slicing for functionallytailored additive manufacturing,Computer Aided Design,2016:107-119)提出了基于函数表达(Functional-based Representation,F-Rep)的3D打印引擎技术。该技术针对可函数表示的几何模型(各类三次样条曲面)进行边界提取和重建,其需要对基于可函数表示的模型进行拟合与逼近,输出结果是每一层上的拟合逼近的序列。 对于连续的可函数表达的几何模型,基于连续F-Rep的3D打印引擎技术可以得到比传统 3D打印切片方法大大提升时间开销的效率。但是如果面对不可函数表达的几何模型,没有明确的函数表示这个前提限制了其使用。医学体数据隐式表达着相应的器官模型,但这些体数据模型是离散的,没有明确的数学函数进行表示,因此,基于连续F-Rep的3D打印引擎技术并不适用于离散的医学体数据。 离散的医学体数据3D打印中存在的两个关键问题:一是移除STL文件的约束,即无需采用传统的MC(Marching Cube)愿意法构造三角片,用以避免过大的内存和时间开销;二是移除连续的可函数表示几何模型的约束,在采用原始的离散医学数据模型为资源的前提下,直接计算打印的序列,以生成控制3D打印机的Gcode。 发明内容 本发明的目的在于针对离散的医学体数据3D打印中存在的上述问题,提供可降低时间开销和空间开销,节约3D打印耗材的一种面向隐式表达医学模型的3D打印切片方法。 本发明包括以下步骤: 1)提取隐式表达医学模型的轮廓线; 2)基于离散点微分缩进构造内层轮廓; 3)生成内部填充。 在步骤1)中,所述提取隐式表达医学模型的轮廓线的具体步骤可为: (1)搜索体数据,利用接近云算法获取符合条件的实心体元; (2)针对单个体元划分为一系列的子八分区,对这些八分区进行递归操作; (3)整合所有的八分区对特定高度做投影,获取对应层高处各个点的三维线性插值结果; (4)针对每个正方形顶点和标准步进平方(Marching Square)模式做匹配,保存采样点。 在步骤2)中,所述基于离散点微分缩进构造内层轮廓的具体步骤可为: (1)获取相邻的若干采样点并且缩进,根据挤出头直径计算缩进距离; (2)获取所有的采样点和这些采样点的相邻点,构造完整的内层轮廓; (3)检查当前的采样点是否存在计算错误,判断方法是通过计算点和原点的向量与相邻向量线段点乘结果是否相同; (4)去除已知的自交点,从而优化内层轮廓的形状。 在步骤3)中,所述生成内部填充的主要步骤可为: (1)根据轮廓内缩算法继续向内缩进一层,即增加一层虚拟层(Virtual Layer); (2)构建平行的扫描线场,并计算扫描线场与虚拟层的交点坐标; (3)根据计算的交点坐标,采用迷宫填充方式进行交替走线,实现内部填充。 与现有技术相比,本发明具有以下突出优点: 1、医学体数据隐式表达着相应的器官模型,但这些体数据模型是离散的,没有明确的数学函数进行表示,本发明针对离散医学体数据的特点,提出了基于划分和建模重组的轮廓线提取方法。结合当前离散体数据模型的特点,采用离散体元高速寻路的接近云算法来解决体数据寻路的问题;只需要一个针对每个层上的简单预处理,就能大幅加快搜索算法的效率。 2、本发明使用三维线性插值算法来计算子八分区的位置坐标,采样方便,提升了精确度。本发明提出了基于离散点微分缩进的轮廓构造算法,来得到不同层的对应采样点。基于曲线的微分弦的特性,以及曲线法向量对应的微元弦的平分线关系,构造分层缩进点的微分坐标。只需使用欧式距离和坐标的关系,大大简化了对于高次曲线微分导数的计算开销。 3、本发明提出了基于虚拟轮廓层和扫描线的填充生成算法。通过填充线和虚拟层的交点,结合挤出头直径(Extruder diameter)、填充线角度(Line angle)的几何关系得到截取点。利用填充扫描线之间的间距,方便控制结果。计算的结果根据迷宫原理交替走线,减少耗材。 附图说明 图1是基于划分和建模重组的轮廓线提取算法流程图。 图2是基于本发明生成的某一单层切片的结果预览图。图中,深色部分为边界轮廓,浅色部分为内部填充。 图3是基于本发明生成GCode的模型预览结果:(a)为血管模型1;(b)为血管模型2。图中,深色部分为外壳轮廓,浅色部分为内部填充。 图4是基于本发明生成GCode的实际打印结果。 具体实施方式 以下实施例将结合附图对本发明作进一步的说明。 本发明实施例主要包括以下三个部分: 1、隐式表达医学模型的轮廓线提取 医学体数据隐式表达着相应的器官模型,但这些体数据模型是离散的,没有明确的数学函数进行表示,因此,Song等人提出的基于连续F-Rep的3D打印引擎技术并不适用于离散的医学体数据。本发明是针对离散医学体数据的特点,给出了基于划分和建模重组的轮廓线提取算法。 首先对每个“单位体元”来进行划分子八分区。如果直接搜索符合条件的体元,O(n3) 的暴力遍历对上万的体元来说是非常巨大的开销,如果是简单的单独连续实体模型,采用深度优先搜索(Deep-First search)就可在寻找到某个点之后搜到周围的所有满足条件的点。然而当模型有多个离散部件的时候,实心体元搜索是没有办法在深度搜索算法结束后停止的。因此,针对复杂模型依然需要搜索遍整个模型。为了提升搜索效率,结合当前离散体数据模型的特点,采用离散体元高速寻路的接近云算法来解决体数据寻路的问题。只需要一个针对每个层上的简单预处理,就能大幅加快搜索算法的效率。 接着,在针对某个单位体元进行分割重组的过程中,由于体数据文件只在边界顶点上才有相关数值,如果需要提升精确度,需要获得某个体元中任意一个体素的值。体素即对应一般图像中的像素,为体空间内的点。在三维空间内,为了采样方便和结果的方便表示,本发明使用三维线性插值算法来计算子八分区的位置坐标。 如图1所示,三维线性插值算法可以得到每个体元内部的任意一个点的体数据值,结合八叉树和拒绝测试算法和接近云算法,可以得出针对整个体数据区域的算法处理流程:1.搜索体数据,利用接近云算法获取符合条件的实心体元;2.针对单个体元划分为一系列的子八分区,对这些八分区进行递归操作;3.整合所有的八分区对特定高度做投影,获取对应层高处各个点的三维线性插值结果;4.针对每个正方形顶点和标准步进平方(Marching Square) 模式做匹配,保存采样点。 2、内层轮廓的构造 关于内层轮廓的生成,针对离散医学体数据的特点,本发明提出了基于离散点微分缩进的轮廓构造算法,以得到不同层的对应采样点。 基于曲线的微分弦的特性,以及曲线法向量对应的微元弦的平分线关系,构造分层缩进点的微分坐标。根据微分情况下,曲线的弦和对应等距离切线位置之间的微分关系,可得到计算缩进点的思路。因此结果只需要用到欧式距离和坐标的关系,大大简化对于高次曲线微分导数的计算开销。由于分层情况相对比较繁琐,结合曲线在某个点位置处的尤其是在曲线缩进定位的过程中,大量的自交点(Self intersection)需要进行去除,因此需要构造实际模型中的自交点消除(Self-intersection eliminate)算法来移除会影响打印结果的点序列即可。 基于离散点微分缩进的轮廓构造算法的主要步骤包括:1).获取相邻的若干采样点并且缩进,根据挤出头直径计算缩进距离;2).获取所有的采样点和这些采样点的相邻点,构造完整的内层轮廓;3).检查当前的采样点是否存在计算错误,判断方法是通过计算点和原点的向量与相邻向量线段点乘结果是否相同;4).去除已知的自交点,从而优化内层轮廓的形状。 3、内部填充的生成 基于最内层轮廓,以及迷宫状的填充模式,可以利用携带多个属性参数平行的扫描线 (Scan lines)来构造填充线结构,针对离散医学体数据的特点,提出了基于虚拟轮廓层和扫描线的填充生成算法。填充密度通常以百分比的形式来表示,但是实际上利用填充扫描线之间的间距(Line gap)也能方便控制结果。由于生成的内层填充不是利用简单的隐函数表达式来计算得到的,所以本发明中的填充算法结合虚拟的轮廓层来计算。具体的是通过填充线和虚拟层的交点,结合挤出头直径(Extruder diameter)、填充线角度(Lineangle)的几何关系得到截取点。得到的填充线结果会存入填充线队列,用于后续的支撑复用步骤。 基于虚拟轮廓层和扫描线的填充生成算法的主要步骤包括:1).根据轮廓内缩算法继续向内缩进一层,即增加一层虚拟层(Virtual Layer);2).构建平行的扫描线场,并计算扫描线场与虚拟层的交点坐标;3).根据计算的交点坐标,采用迷宫填充方式进行交替走线,实现内部填充。 本发明在3D打印模型时,可先确定待打印模型的坐标序列,根据模型轮廓层厚、填充线距离、打印模式(温度、速度、顶/底层数)生成边界轮廓,再生成内部填充和支撑结构,然后生成GCode,预览模型无误后,打印3D模型。 图2给出基于本发明生成的某一单层切片的结果预览图。图中深色部分为边界轮廓,浅色部分为内部填充。图3给出基于本发明实施例打印方法的模型预览结果:(a)图和(b)图分别为两个血管模型预览图。图中,深色部分为外壳轮廓,浅色部分为内部填充。图4给出基于本发明实施例的实际3D打印结果照片。 本发明在三个模型上进行了测试,实验结果表明,与传统的MC方法相比,本发明在时间复杂度与空间复杂度的开销都有显著降低:其中,时间开销可降低2~20倍,空间开销可降低1.5~2倍。
权利要求:
1.一种面向隐式表达医学模型的3D打印切片方法,其特征在于包括以下步骤:
1)提取隐式表达医学模型的轮廓线;
2)基于离散点微分缩进构造内层轮廓;
3)生成内部填充。
2.如权利要求1所述一种面向隐式表达医学模型的3D打印切片方法,其特征在于在步骤1)中,所述提取隐式表达医学模型的轮廓线的具体步骤为:
(1)搜索体数据,利用接近云算法获取符合条件的实心体元;
(2)针对单个体元划分为一系列的子八分区,对这些八分区进行递归操作;
(3)整合所有的八分区对特定高度做投影,获取对应层高处各个点的三维线性插值结果;
(4)针对每个正方形顶点和标准步进平方模式做匹配,保存采样点。
3.如权利要求1所述一种面向隐式表达医学模型的3D打印切片方法,其特征在于在步骤2)中,所述基于离散点微分缩进构造内层轮廓的具体步骤为:
(1)获取相邻的若干采样点并且缩进,根据挤出头直径计算缩进距离;
(2)获取所有的采样点和这些采样点的相邻点,构造完整的内层轮廓;
(3)检查当前的采样点是否存在计算错误,判断方法是通过计算点和原点的向量与相邻向量线段点乘结果是否相同;
(4)去除已知的自交点,从而优化内层轮廓的形状。
4.如权利要求1所述一种面向隐式表达医学模型的3D打印切片方法,其特征在于在步骤3)中,所述生成内部填充的主要步骤为:
(1)根据轮廓内缩算法继续向内缩进一层,即增加一层虚拟层;
(2)构建平行的扫描线场,并计算扫描线场与虚拟层的交点坐标;
(3)根据计算的交点坐标,采用迷宫填充方式进行交替走线,实现内部填充。
公开号:CN110533770
申请号:CN201910769823.3A
发明人:洪清启 江子攸 方俊 许霏
拥有者:厦门大学
申请日:2019-08-20
公开日:2019-12-03
全文下载