CN108597038A - 一种三维表面建模方法及装置、计算机存储介质 - Google Patents
一种三维表面建模方法及装置、计算机存储介质 Download PDFInfo
- Publication number
- CN108597038A CN108597038A CN201810340124.2A CN201810340124A CN108597038A CN 108597038 A CN108597038 A CN 108597038A CN 201810340124 A CN201810340124 A CN 201810340124A CN 108597038 A CN108597038 A CN 108597038A
- Authority
- CN
- China
- Prior art keywords
- profile
- endpoint
- planar polygons
- polygon
- convex polygon
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Architecture (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Geometry (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种三维表面建模方法及装置、计算机存储介质,所述方法包括:获取DICOM文件集,根据所述DICOM文件集创建N个断层图像,N≥2,所述N个断层图像中的每个断层图像对应于目标对象在特定高度上的截面;在所述N个断层图像中选择出M个断层图像,作为关键断层图像,2≤M≤N;在所述M个关键断层图像上分别创建M个轮廓,所述轮廓通过二维多边形表征;对所述M个轮廓中的各个轮廓进行图形编辑和/或端点编辑;基于编辑后的M个轮廓创建所述目标对象的三维表面模型,所述三维表面模型由空间中三角面片的集合组成。
Description
技术领域
本发明涉及建模技术领域,尤其涉及一种三维表面建模方法及装置、计算机存储介质。
背景技术
自从人类开始制造工具,人类的制造方式一直以减材制造、等材制造为主,其中,减材制造通过车、铣、磨技术使材料对象在制造过程中有所减少,而等材制造通过铸、锻、焊技术实现材料对象的连接。目前,大多数的三维模型设计,其设计思路源自减材制造和等材制造。
随着三维(3D,3 Dimension)打印技术的快速发展,一种新的制造方式——增材制造已经成为了重要的研究方向,它通过层间叠加的方式制造生产对象,广泛应用于各行各业。例如:医学、艺术设计等充满个性化的领域可以结合3D打印实现更加多样化的功能性产品设计。基于此,面向增材制造的三维模型设计是未来研究的方向。
在医学领域,医学数字成像和通信(DiCOM,Digital Imaging andCommunications in Medicine)是医学图像和相关信息的国际标准,它定义了质量能满足临床需要的可用于数据交换的医学图像格式。然而,通过医师的经验表明,DiCOM文件集并不能完全准确的表达所有器官组织,尤其是某些病变组织。医师常常需要以DiCOM图像为背景,勾画某个器官组织,增加了人工成本。
发明内容
为解决上述技术问题,本发明实施例提供了一种三维表面建模方法及装置、计算机存储介质。
本发明实施例提供的三维表面建模方法,包括:
获取DICOM文件集,根据所述DICOM文件集创建N个断层图像,N≥2,所述N个断层图像中的每个断层图像对应于目标对象在特定高度上的截面;
在所述N个断层图像中选择出M个断层图像,作为关键断层图像,2≤M≤N;
在所述M个关键断层图像上分别创建M个轮廓,所述轮廓通过二维多边形表征;
对所述M个轮廓中的各个轮廓进行图形编辑和/或端点编辑,其中,对所述轮廓进行图形编辑是指:对所述轮廓对应的二维多边形进行以下至少一种操作:平移、旋转、缩放,对所述轮廓进行端点编辑是指:对所述轮廓对应的二维多边形的端点进行以下至少一种操作:移动、删除、添加;所述图形编辑包括局部性图像编辑和/或全局性图形编辑,所述端点编辑包括局部性端点编辑和/或全局性端点编辑;
所述局部性图像编辑是指:对指定层的轮廓进行编辑;
所述全局性图形编辑是指:在对指定层的轮廓进行编辑的同时,按照引力位移模型确定所述指定层作用的牵引层,对各个所述牵引层按照所述指定层作用于所述牵引层的引力参数对所述牵引层的轮廓进行编辑;
所述局部性端点编辑是指:对指定层的指定端点进行编辑;
所述全局性端点编辑是指:在对指定层的指定端点进行编辑的同时,按照引力位移模型确定所述指定端点作用的牵引端点,对各个所述牵引端点按照所述指定端点作用于所述牵引端点的引力参数对所述牵引端点进行编辑;其中,所述牵引端点与所述指定端点位于同一轮廓中或不同的轮廓中;
基于编辑后的M个轮廓创建所述目标对象的三维表面模型,所述三维表面模型由空间中三角面片的集合组成。
本发明实施例中,所述二维多边形包括如下端点序列V:V1,V2,…,Vn,其中,n为所述二维多边形包括的端点个数,所述端点序列为逆时针方;
所述对所述M个轮廓中的各个轮廓进行图形编辑和/或端点编辑之前,所述方法还包括:
针对所述M个轮廓中的各个轮廓对应的二维多边形,遍历所述二维多边形中所有相邻的三个端点:Vi、Vi+1、Vi+2,1≤i≤n-2,如果端点Vi+2处于线段Vi Vi+1的延长线上,则删除端点Vi+2。
本发明实施例中,所述基于编辑后的M个轮廓创建所述目标对象的三维表面模型,包括:
针对所述编辑后的M个轮廓中的高度最高的第一轮廓和高度最低的第二轮廓,采用三角形分解算法对所述第一轮廓和所述第二轮廓进行处理,分别得到所述三维表面模型的顶面和底面;
针对所述编辑后的M个轮廓中的各个轮廓,采用最短对角线法对高度上任意相邻的两个轮廓进行处理,得到所述三维表面模型的侧面。
本发明实施例中,所述第一轮廓对应的二维多边形包括如下端点序列I:I1,I2,…,In1,其中,n1为所述第一轮廓对应的二维多边形包括的端点个数,所述端点序列为逆时针方;所述第二轮廓对应的二维多边形包括如下端点序列J:J1,J2,…,Jn2,其中,n2为所述第二轮廓对应的二维多边形包括的端点个数,所述端点序列为逆时针方;
所述采用三角形分解算法对所述第一轮廓和所述第二轮廓进行处理,分别得到所述三维表面模型的顶面和底面,包括:
如果所述第一轮廓对应的二维多边形为凸多边形,则基于所述第一轮廓对应的二维多边形的全部端点的坐标值,确定参考点的坐标值;其中,所述参考点为所述凸多边形的中心点或者所述凸多边形中的任意一个端点;基于所述参考点和所述凸多边形的任意相邻的两个端点确定三角形,从而将所述第一轮廓对应的二维多边形分解为由多个三角形形成的顶面;如果所述第一轮廓对应的二维多边形为凹多边形,则将所述凹多边形分解为多个凸多边形;针对各个凸多边形,基于所述凸多边形的全部端点的坐标值,确定参考点的坐标值;其中,所述参考点为所述凸多边形的中心点或者所述凸多边形中的任意一个端点;基于所述参考点和所述凸多边形的任意相邻的两个端点确定三角形,从而将所述第一轮廓对应的二维多边形分解为由多个三角形形成的顶面;
如果所述第二轮廓对应的二维多边形为凸多边形,则基于所述第二轮廓对应的二维多边形的全部端点的坐标值,确定参考点的坐标值;其中,所述参考点为所述凸多边形的中心点或者所述凸多边形中的任意一个端点;基于所述参考点和所述凸多边形的任意相邻的两个端点确定三角形,从而将所述第二轮廓对应的二维多边形分解为由多个三角形形成的底面;如果所述第二轮廓对应的二维多边形为凹多边形,则将所述凹多边形分解为多个凸多边形;针对各个凸多边形,基于所述凸多边形的全部端点的坐标值,确定参考点的坐标值;其中,所述参考点为所述凸多边形的中心点或者所述凸多边形中的任意一个端点;基于所述参考点和所述凸多边形的任意相邻的两个端点确定三角形,从而将所述第二轮廓对应的二维多边形分解为由多个三角形形成的底面。
本发明实施例中,所述在高度上任意相邻的两个轮廓中的上层轮廓对应的二维多边形包括如下端点序列P:p0,p1,…,pm1-1,所述端点序列为逆时针方;下层轮廓对应的二维多边形包括如下端点序列Q:q0,q1,…,qm2-1,所述端点序列为逆时针方;
所述采用最短对角线法对高度上任意相邻的两个轮廓进行处理,得到所述三维表面模型的侧面,包括:
步骤1:选取qj作为起点,在端点序列P中选取距离qj最近的一个端点,并记作pi;重组上层轮廓对应的二维多边形包括如下端点序列P:pi,pi+1,…,pm1-1,p0,p1,…,pi-1,重组下层轮廓对应的二维多边形包括如下端点序列Q:qj,qj+1,…,qm2-1,q0,q1,…,qj-1;
步骤2:进行如下赋值操作:i=0,j=0;
步骤3:计算上层轮廓和下层轮廓左右跨距的长度D1和D2,其中,D1=pi+1qj、D2=piqj+1;
步骤4:若D1<D2,则创建三角面Δpi qj pi+1,并且进行如下赋值操作:i=i+1;若D1≥D2,则创建三角面Δqj pi qj+1,并且进行如下赋值操作:j=j+1;
步骤5:若i<m1或者j<m2,则重复执行步骤3和步骤4,直至i=m1且j=m2为止。
本发明实施例中,所述指定层的轮廓的编辑参数为F1,所述牵引层的轮廓的编辑参数为F2,所述指定层的轮廓与所述牵引层的轮廓的高度差为H1,在所述引力位移模型中,F2与F1成正比,F2与H1成反比;
所述指定端点的编辑参数为f1,所述牵引端点的编辑参数为f2,所述指定端点与所述牵引端点的距离为H2,在所述引力位移模型中,f2与f1成正比,f2与H2成反比。
本发明实施例提供的三维表面建模装置,包括:
断层图像创建单元,用于获取DICOM文件集,根据所述DICOM文件集创建N个断层图像,N≥2,所述N个断层图像中的每个断层图像对应于目标对象在特定高度上的截面;
选择单元,用于在所述N个断层图像中选择出M个断层图像,作为关键断层图像,2≤M≤N;
轮廓创建单元,用于在所述M个关键断层图像上分别创建M个轮廓,所述轮廓通过二维多边形表征;
编辑单元,对所述M个轮廓中的各个轮廓进行图形编辑和/或端点编辑,其中,对所述轮廓进行图形编辑是指:对所述轮廓对应的二维多边形进行以下至少一种操作:平移、旋转、缩放,对所述轮廓进行端点编辑是指:对所述轮廓对应的二维多边形的端点进行以下至少一种操作:移动、删除、添加;所述图形编辑包括局部性图像编辑和/或全局性图形编辑,所述端点编辑包括局部性端点编辑和/或全局性端点编辑;
所述局部性图像编辑是指:对指定层的轮廓进行编辑;
所述全局性图形编辑是指:在对指定层的轮廓进行编辑的同时,按照引力位移模型确定所述指定层作用的牵引层,对各个所述牵引层按照所述指定层作用于所述牵引层的引力参数对所述牵引层的轮廓进行编辑;
所述局部性端点编辑是指:对指定层的指定端点进行编辑;
所述全局性端点编辑是指:在对指定层的指定端点进行编辑的同时,按照引力位移模型确定所述指定端点作用的牵引端点,对各个所述牵引端点按照所述指定端点作用于所述牵引端点的引力参数对所述牵引端点进行编辑;其中,所述牵引端点与所述指定端点位于同一轮廓中或不同的轮廓中;
三角表面生成单元,用于基于编辑后的M个轮廓创建所述目标对象的三维表面模型,所述三维表面模型由空间中三角面片的集合组成。
本发明实施例中,所述二维多边形包括如下端点序列V:V1,V2,…,Vn,其中,n为所述二维多边形包括的端点个数,所述端点序列为逆时针方;
所述轮廓创建单元,还用于针对所述M个轮廓中的各个轮廓对应的二维多边形,遍历所述二维多边形中所有相邻的三个端点:Vi、Vi+1、Vi+2,1≤i≤n-2,如果端点Vi+2处于线段Vi Vi+1的延长线上,则删除端点Vi+2。
本发明实施例中,所述三角表面生成单元,包括:
顶面和底面生成子单元,用于针对所述编辑后的M个轮廓中的高度最高的第一轮廓和高度最低的第二轮廓,采用三角形分解算法对所述第一轮廓和所述第二轮廓进行处理,分别得到所述三维表面模型的顶面和底面;
侧面生成子单元,用于针对所述编辑后的M个轮廓中的各个轮廓,采用最短对角线法对高度上任意相邻的两个轮廓进行处理,得到所述三维表面模型的侧面。
本发明实施例中,所述第一轮廓对应的二维多边形包括如下端点序列I:I1,I2,…,In1,其中,n1为所述第一轮廓对应的二维多边形包括的端点个数,所述端点序列为逆时针方;所述第二轮廓对应的二维多边形包括如下端点序列J:J1,J2,…,Jn2,其中,n2为所述第二轮廓对应的二维多边形包括的端点个数,所述端点序列为逆时针方;
所述顶面和底面生成子单元,具体用于如果所述第一轮廓对应的二维多边形为凸多边形,则基于所述第一轮廓对应的二维多边形的全部端点的坐标值,确定参考点的坐标值;其中,所述参考点为所述凸多边形的中心点或者所述凸多边形中的任意一个端点;基于所述参考点和所述凸多边形的任意相邻的两个端点确定三角形,从而将所述第一轮廓对应的二维多边形分解为由多个三角形形成的顶面;如果所述第一轮廓对应的二维多边形为凹多边形,则将所述凹多边形分解为多个凸多边形;针对各个凸多边形,基于所述凸多边形的全部端点的坐标值,确定参考点的坐标值;其中,所述参考点为所述凸多边形的中心点或者所述凸多边形中的任意一个端点;基于所述参考点和所述凸多边形的任意相邻的两个端点确定三角形,从而将所述第一轮廓对应的二维多边形分解为由多个三角形形成的顶面;
如果所述第二轮廓对应的二维多边形为凸多边形,则基于所述第二轮廓对应的二维多边形的全部端点的坐标值,确定参考点的坐标值;其中,所述参考点为所述凸多边形的中心点或者所述凸多边形中的任意一个端点;基于所述参考点和所述凸多边形的任意相邻的两个端点确定三角形,从而将所述第二轮廓对应的二维多边形分解为由多个三角形形成的底面;如果所述第二轮廓对应的二维多边形为凹多边形,则将所述凹多边形分解为多个凸多边形;针对各个凸多边形,基于所述凸多边形的全部端点的坐标值,确定参考点的坐标值;其中,所述参考点为所述凸多边形的中心点或者所述凸多边形中的任意一个端点;基于所述参考点和所述凸多边形的任意相邻的两个端点确定三角形,从而将所述第二轮廓对应的二维多边形分解为由多个三角形形成的底面。
本发明实施例中,所述在高度上任意相邻的两个轮廓中的上层轮廓对应的二维多边形包括如下端点序列P:p0,p1,…,pm1-1,所述端点序列为逆时针方;下层轮廓对应的二维多边形包括如下端点序列Q:q0,q1,…,qm2-1,所述端点序列为逆时针方;
所述侧面生成子单元,用于执行如下步骤:
步骤1:选取qj作为起点,在端点序列P中选取距离qj最近的一个端点,并记作pi;重组上层轮廓对应的二维多边形包括如下端点序列P:pi,pi+1,…,pm1-1,p0,p1,…,pi-1,重组下层轮廓对应的二维多边形包括如下端点序列Q:qj,qj+1,…,qm2-1,q0,q1,…,qj-1;
步骤2:进行如下赋值操作:i=0,j=0;
步骤3:计算上层轮廓和下层轮廓左右跨距的长度D1和D2,其中,D1=pi+1qj、D2=piqj+1;
步骤4:若D1<D2,则创建三角面Δpi qj pi+1,并且进行如下赋值操作:i=i+1;若D1≥D2,则创建三角面Δqj pi qj+1,并且进行如下赋值操作:j=j+1;
步骤5:若i<m1或者j<m2,则重复执行步骤3和步骤4,直至i=m1且j=m2为止。
本发明实施例中,所述指定层的轮廓的编辑参数为F1,所述牵引层的轮廓的编辑参数为F2,所述指定层的轮廓与所述牵引层的轮廓的高度差为H1,在所述引力位移模型中,F2与F1成正比,F2与H1成反比;
所述指定端点的编辑参数为f1,所述牵引端点的编辑参数为f2,所述指定端点与所述牵引端点的距离为H2,在所述引力位移模型中,f2与f1成正比,f2与H2成反比。
本发明实施例提供的计算机存储介质,其上存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述的三维表面建模方法。
本发明实施例的技术方案中,获取DICOM文件集,根据所述DICOM文件集创建N个断层图像,N≥2,所述N个断层图像中的每个断层图像对应于目标对象在特定高度上的截面;在所述N个断层图像中选择出M个断层图像,作为关键断层图像,2≤M≤N;在所述M个关键断层图像上分别创建M个轮廓,所述轮廓通过二维多边形表征;对所述M个轮廓中的各个轮廓进行图形编辑和/或端点编辑,其中,对所述轮廓进行图形编辑是指:对所述轮廓对应的二维多边形进行以下至少一种操作:平移、旋转、缩放,对所述轮廓进行端点编辑是指:对所述轮廓对应的二维多边形的端点进行以下至少一种操作:移动、删除、添加;所述图形编辑包括局部性图像编辑和/或全局性图形编辑,所述端点编辑包括局部性端点编辑和/或全局性端点编辑;所述局部性图像编辑是指:对指定层的轮廓进行编辑;所述全局性图形编辑是指:在对指定层的轮廓进行编辑的同时,按照引力位移模型确定所述指定层作用的牵引层,对各个所述牵引层按照所述指定层作用于所述牵引层的引力参数对所述牵引层的轮廓进行编辑;所述局部性端点编辑是指:对指定层的指定端点进行编辑;所述全局性端点编辑是指:在对指定层的指定端点进行编辑的同时,按照引力位移模型确定所述指定端点作用的牵引端点,对各个所述牵引端点按照所述指定端点作用于所述牵引端点的引力参数对所述牵引端点进行编辑;其中,所述牵引端点与所述指定端点位于同一轮廓中或不同的轮廓中;基于编辑后的M个轮廓创建所述目标对象的三维表面模型,所述三维表面模型由空间中三角面片的集合组成。采用本发明实施例的技术方案,实现了结合医学领域通用的DICOM文件,来创建出适用于医疗领域的某个器官的三维立体模型,这种三维模型的创建方式无需医疗人员通过人工方式勾勒出病变的组织,极大节省了人工劳动量,此外,通过自动化的方式建立器官的三维立体模型,可以实现更加精准的模型呈现,医疗人员可以对该三维立体模型通过轮廓的方式进行逐层编辑,最终展示出的三维立体模型更加符合医疗人员所要定位的器官部位。
附图说明
图1为本发明实施例的三维表面建模方法的流程示意图一;
图2为本发明实施例的三维表面建模方法的流程示意图二;
图3为本发明实施例的三维表面建模的框架图;
图4为本发明实施例的三维场景的绘制流程图;
图5为本发明实施例的凸多边形的三角分解示意图;
图6为本发明实施例的凹多边形分解示意图;
图7为本发明实施例的最短对角线法示意图;
图8为本发明实施例的窗口的三个菜单条的示意图;
图9为本发明实施例的新建一个项目时的初始界面;
图10为本发明实施例的三维表面模型的示例图;
图11为本发明实施例的三维表面建模装置的结构组成示意图。
具体实施方式
为了能够更加详尽地了解本发明实施例的特点与技术内容,下面结合附图对本发明实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本发明实施例。
图1为本发明实施例的三维表面建模方法的流程示意图一,如图1所示,所述三维表面建模方法包括以下步骤:
步骤101:获取DICOM文件集,根据所述DICOM文件集创建N个断层图像,N≥2,所述N个断层图像中的每个断层图像对应于目标对象在特定高度上的截面。
在一实施方式中,DICOM文件集包括多个DICOM文件,每个DICOM文件用于创建一个断层图像,这里,断层图像是指目标对象在特定高度上的截面。例如:在坐标系XYZ中,每个断层图像的截面位于XY平面,断层图像的高度是指该断层图像对应于Z坐标的值。假设一共有5个断层图像,高度值由大至小分别为Z1,Z2,Z3,Z4,Z5,其中,Z1为顶层的断层图像的高度值,Z5为底层的断层图像的高度值,Z2,Z3,Z4为三个中间层的断层图像的高度值。
步骤102:在所述N个断层图像中选择出M个断层图像,作为关键断层图像,2≤M≤N。
在一实施方式中,可以根据用户的选择操作,从所述N个断层图像中选择出M个断层图像,作为关键断层图像;也可以根据默认的设置操作,从所述N个断层图像中选择出M个断层图像,作为关键断层图像。
例如:心脏器官的高度大致在Zi-Zj之间,因此,需要从所述N个断层图像中选择出高度在Zi-Zj之间的M个断层图像。
步骤103:在所述M个关键断层图像上分别创建M个轮廓,所述轮廓通过二维多边形表征。
所述二维多边形包括如下端点序列V:V1,V2,…,Vn,其中,n为所述二维多边形包括的端点个数,所述端点序列为逆时针方;
在对所述M个轮廓中的各个轮廓进行图形编辑和/或端点编辑之前,针对所述M个轮廓中的各个轮廓对应的二维多边形,遍历所述二维多边形中所有相邻的三个端点:Vi、Vi+1、Vi+2,1≤i≤n-2,如果端点Vi+2处于线段Vi Vi+1的延长线上,则删除端点Vi+2。这样,可以得到精简的二维多边形。
步骤104:对所述M个轮廓中的各个轮廓进行图形编辑和/或端点编辑。
其中,对所述轮廓进行图形编辑是指:对所述轮廓对应的二维多边形进行以下至少一种操作:平移、旋转、缩放,对所述轮廓进行端点编辑是指:对所述轮廓对应的二维多边形的端点进行以下至少一种操作:移动、删除、添加;所述图形编辑包括局部性图像编辑和/或全局性图形编辑,所述端点编辑包括局部性端点编辑和/或全局性端点编辑。
本发明实施例中,所述局部性图像编辑是指:对指定层的轮廓进行编辑;
所述全局性图形编辑是指:在对指定层的轮廓进行编辑的同时,按照引力位移模型确定所述指定层作用的牵引层,对各个所述牵引层按照所述指定层作用于所述牵引层的引力参数对所述牵引层的轮廓进行编辑;
所述局部性端点编辑是指:对指定层的指定端点进行编辑;
所述全局性端点编辑是指:在对指定层的指定端点进行编辑的同时,按照引力位移模型确定所述指定端点作用的牵引端点,对各个所述牵引端点按照所述指定端点作用于所述牵引端点的引力参数对所述牵引端点进行编辑;其中,所述牵引端点与所述指定端点位于同一轮廓中或不同的轮廓中。
上述方案中,所述指定层的轮廓的编辑参数为F1,所述牵引层的轮廓的编辑参数为F2,所述指定层的轮廓与所述牵引层的轮廓的高度差为H1,在所述引力位移模型中,F2与F1成正比,F2与H1成反比;
所述指定端点的编辑参数为f1,所述牵引端点的编辑参数为f2,所述指定端点与所述牵引端点的距离为H2,在所述引力位移模型中,f2与f1成正比,f2与H2成反比。
步骤105:基于编辑后的M个轮廓创建所述目标对象的三维表面模型,所述三维表面模型由空间中三角面片的集合组成。
在一实施方式中,所述基于编辑后的M个轮廓创建所述目标对象的三维表面模型,包括:
(1)针对所述编辑后的M个轮廓中的高度最高的第一轮廓和高度最低的第二轮廓,采用三角形分解算法对所述第一轮廓和所述第二轮廓进行处理,分别得到所述三维表面模型的顶面和底面。
具体地,所述第一轮廓对应的二维多边形包括如下端点序列I:I1,I2,…,In1,其中,n1为所述第一轮廓对应的二维多边形包括的端点个数,所述端点序列为逆时针方;所述第二轮廓对应的二维多边形包括如下端点序列J:J1,J2,…,Jn2,其中,n2为所述第二轮廓对应的二维多边形包括的端点个数,所述端点序列为逆时针方;
1.1)如果所述第一轮廓对应的二维多边形为凸多边形,则基于所述第一轮廓对应的二维多边形的全部端点的坐标值,确定参考点的坐标值;其中,所述参考点为所述凸多边形的中心点或者所述凸多边形中的任意一个端点;基于所述参考点和所述凸多边形的任意相邻的两个端点确定三角形,从而将所述第一轮廓对应的二维多边形分解为由多个三角形形成的顶面;如果所述第一轮廓对应的二维多边形为凹多边形,则将所述凹多边形分解为多个凸多边形;针对各个凸多边形,基于所述凸多边形的全部端点的坐标值,确定参考点的坐标值;其中,所述参考点为所述凸多边形的中心点或者所述凸多边形中的任意一个端点;基于所述参考点和所述凸多边形的任意相邻的两个端点确定三角形,从而将所述第一轮廓对应的二维多边形分解为由多个三角形形成的顶面;
1.2)如果所述第二轮廓对应的二维多边形为凸多边形,则基于所述第二轮廓对应的二维多边形的全部端点的坐标值,确定参考点的坐标值;其中,所述参考点为所述凸多边形的中心点或者所述凸多边形中的任意一个端点;基于所述参考点和所述凸多边形的任意相邻的两个端点确定三角形,从而将所述第二轮廓对应的二维多边形分解为由多个三角形形成的底面;如果所述第二轮廓对应的二维多边形为凹多边形,则将所述凹多边形分解为多个凸多边形;针对各个凸多边形,基于所述凸多边形的全部端点的坐标值,确定参考点的坐标值;其中,所述参考点为所述凸多边形的中心点或者所述凸多边形中的任意一个端点;基于所述参考点和所述凸多边形的任意相邻的两个端点确定三角形,从而将所述第二轮廓对应的二维多边形分解为由多个三角形形成的底面。
(2)针对所述编辑后的M个轮廓中的各个轮廓,采用最短对角线法对高度上任意相邻的两个轮廓进行处理,得到所述三维表面模型的侧面。
具体地,所述在高度上任意相邻的两个轮廓中的上层轮廓对应的二维多边形包括如下端点序列P:p0,p1,…,pm1-1,所述端点序列为逆时针方;下层轮廓对应的二维多边形包括如下端点序列Q:q0,q1,…,qm2-1,所述端点序列为逆时针方;
所述采用最短对角线法对高度上任意相邻的两个轮廓进行处理,得到所述三维表面模型的侧面,包括:
步骤1:选取qj作为起点,在端点序列P中选取距离qj最近的一个端点,并记作pi;重组上层轮廓对应的二维多边形包括如下端点序列P:pi,pi+1,…,pm1-1,p0,p1,…,pi-1,重组下层轮廓对应的二维多边形包括如下端点序列Q:qj,qj+1,…,qm2-1,q0,q1,…,qj-1;
步骤2:进行如下赋值操作:i=0,j=0;
步骤3:计算上层轮廓和下层轮廓左右跨距的长度D1和D2,其中,D1=pi+1qj、D2=piqj+1;
步骤4:若D1<D2,则创建三角面Δpi qj pi+1,并且进行如下赋值操作:i=i+1;若D1≥D2,则创建三角面Δqj pi qj+1,并且进行如下赋值操作:j=j+1;
步骤5:若i<m1或者j<m2,则重复执行步骤3和步骤4,直至i=m1且j=m2为止。
图2为本发明实施例的三维表面建模方法的流程示意图二,如图2所示,所述三维表面建模方法包括以下步骤:
步骤201:创建断层图像集,作为显示设计背景。
具体地,根据断层图像的DiCOM文件集,创建所有的断层图像(含高度、像素点尺寸等信息),作为设计背景进行显示。
步骤202:创建断层轮廓集合。
这里,断层轮廓是在断层图像背景上,绘制的二维多边形。断层轮廓集合是用户在断层图像集合上创建的一系列关键断层的多边形集合。具体地:
1)打开一个断层图像集,建立若干层对象,并将各层对象设为绘制多边形的背景。
2)选定关键断层,在其中绘制、编辑二维多边形。
3)在断层集合中,设置三维球件对应的若干二维多边形集合。
步骤203:对关键断层中的图形或端点进行编辑。
这里,断层编辑有两类操作:
1)对每个断层多边形,进行端点编辑(移动、删除、添加)。在编辑操作之时,二维图形、三维模型随之动态变化。
2)对每个断层多边形,进行整体性的平移、旋转、缩放。
断层编辑的影响有两类:
1)局部性的编辑效果:在编辑当前端点时,仅修改当前端点的位置;在编辑当前多边形时,仅修改当前多边形的端点位置。
2)全局性的编辑效果:在编辑当前端点的位置时,依据“引力位移模型”对附近邻域(含本层、跨层)中的端点产生影响。在编辑当前断层的多边形时,将变换矩阵施加于所有断层的多边形产生,已达到三维模型的整体变换效果。
步骤204:三维表面模型的创建、显示以及保存。
这里,三维表面模型是指空间三角面片的集合,满足正则体的约束条件。三维表面模型的创建的核心算法有:层间三角面连接算法(最短对角线法)、顶/底层多边形的三角形分解算法(凸分解算法)。具体地:
1)组织所有关键断层上的二维图形,组成具有高度值的多边形集合;
2)采用最短对角线法和凸分解算法,创建三维表面模型;
3)显示三维模型(可以动态调整观察方向、距离);
4)导出三维模型为STL文件(三维打印的标准文件)。
步骤205:项目管理。
为方便用户操作,提供项目管理,使得用户可以在任意一个步骤中断、继续其设计工作。具体地:1)创建新项目;2)保存项目;3)打开项目。
以下结合具体地实现算法对本发明实施例的技术方案进行描述。
图3为本发明实施例的三维表面建模的框架图,包括如下模块:
1)Commons.DLL模块
通用类库Commons.DLL的设计目的是,为三维图形的显示、变换,提供基础类型及其运算等功能。
Commons.DLL主体部分由3个类别组成,参见表1。
表1 Common.DLL中的类别组成
2)Controls.DLL模块
2.1)三维图形显示流程的设计封装
Controls.DLL定义了三维图形显示控件UcCanvas3D,后者封装了OpenGL的设置和显示流程、定义了三维坐标系、观察坐标系对象,管理了一系列的交互数据,实现了对三维模型观察的旋转、平移、远近等操作方式,设计、封装了整个显示流程。
Controls.DLL设计了DrawGame事件,用于与窗口界面合作完成三维场景的绘制流程。绘制流程参见图4。
2.2)类的设计组织
Controls.DLL主体部分由3个类别组成,参见表2。
包含的类 | 描述 |
UcCanvas3D | 三维显示控件 |
tfPan | 平移变换的操作面板 |
tfRotate | 旋转变换的操作面板 |
tfScale | 缩放变换的操作面板 |
表2 Common.DLL中的类别组成
3)TriModel.DLL模块
通用类库TriModel.DLL的设计目的是,根据关键层轮廓多边形集合,构造三维表面模型。其中涉及多边形管理、曲线设计、三角面生成等多项功能。
TriModel.DLL的若干类,主要分为5个类别,参见表3。
表3 TriModel.DLL中的类别组成
3.1)Polygon类别
clsPolygon类表示一个多边形对象的端点序列及相关操作。主要功能是:
1依据包围盒,实现端点序列的初始化。
2文件流的读写功能。
3端点选择功能及相关事件的管理。
4端点序列的管理功能及相关事件的管理。
5多边形及其端点的绘制功能。
clsPolygons类表示多边形对象集合及相关操作。主要功能是:
1多边形集合的管理功能及相关事件。
2多边形选择功能及相关事件。
3文件的读写功能。
clsPolygon类表示一个带高度的多边形端点序列及相关操作。主要算法有多边形端点序列的简化算法、多边形的三角面分割算法。
3.11)多边形端点序列的简化算法
依次检查多边形端点序列中的三个端点Pi,Pi+1,Pi+2,若Pi+2处于线段Pi Pi+1的延长线上,则端点Pi+2可以被舍去。
3.12)凸多边形的三角形分解算法
一般约定,多边形的端点序列符合逆时针方向,以此构造出来的三角形的法线向量指向Z轴的正方向。这完全符合三维模型顶面的需要。
但是三维模型底面的三角形的法线应指向Z轴的负方向,因此在生成底面三角形时,应将每个三角形的端点序列逆向。
为构造三维模型的顶面和底面,需要进行对顶面、底面的多边形,进行三角形分解。
凸多边形的分解,方法有多种,参见图5。显然,(a)能够保证每个三角形的形状近似相同,且近似正三角形。本发明实施例采用(a)的算法,算法描述如下:
1已知多边形的端点序列为V1,V2,……,Vn,序列为逆时针方向。
2设V0为凸多边形的中心点,其坐标分量为所有端点的坐标分量的均值。根据凸多边形的性质,V0一定位于凸多边形的内部。
3分解出来的三角形集合为:△V0V1V2,△V0V2V3,….,△V0Vn-1Vn,△V0Vn V1。
3.13)凹多边形的凸分解算法
直接对凹多边形进行三角分解,有一定的难度。因此采用预处理的方法,先将其转换为多个凸多边形,再进行凸多边形的三角分解。
将凹多边形分割为多个凸多边形的算法,有多种算法。本文采用分隔算法,将凹多边形分解为2个子多边形。若子多边形还是凹多边形,则继续使用分隔算法,直至所有子多边形均为凸多边形。
多边形凸边的定义:设该边的直线方程为f(x,y)=ax+by+c,若多边形的所有端点坐标代入f(x,y),都有f(x,y)>=0,则该边为凸边。显然,图6中Vi Vi+1不是凸边。
分隔算法的核心是寻找一个非凸边(分割边),步骤如下:
1已知多边形的端点序列为V1,V2,……,Vn,序列为逆时针方向,并且无自相交的情形。
2逐条检查多边形的每条边ViVi+1,寻找非凸边(分割边)Vi Vi+1。
3从Vi+1开始依次检查每条边与Vi Vi+1的延长线的相交情形,直至发现Vk-1Vk与ViVi+1的延长线存在交点。
4将源多边形分解为多边形A和B:A:V1,V2,……,Vi,Vi+1,Vk,Vk+1,…..,Vn-1,Vn。B:Vi+1,Vi+2,…..,Vk-1,Vk。
在图6中的(a),原多边形被分解为两个凸多边形A和B。在图6中的(b)中,原多边形被分解为两个凹多边形A和B,因此还需要再次分解。
3.14)多边形端点编辑中的“引力位移模型”
多边形端点的编辑支持两个选项:局部、全部。
局部端点编辑的含义是,指定的端点进行指定的位移运算。
全局端点编辑的含义是,除了指定的端点进行指定的位移运算外,相邻的端点也将发生适当的位移。
相邻端点的定义是,距离在一定范围内的端点。适当位移的含义是,设相邻端点与指定端点的距离为D0,相邻端点的位移Di与D0成线性反比。即距离近的端点位移较大,距离远的端点位移较小。我们将之称为“引力位移模型”。相关的参数有:有效邻域的半径,衰减系数。
3.2)Spline类别
clsSpline是样条曲线段的基类,其中主要数据是样条曲线的代数矩阵和几何矩阵。主要功能是生成其中的插值点序列。表示样条曲线段的函数p(t)=T*M*G。
clsSpline类有两个子类,clsBSpline实现了B样条曲线段的计算,clsHermite实现了Hermite样条曲线段的计算。
clsSplines是封闭的样条曲线的基类,其中主要数据是样条曲线的控制点序列。主要功能是生成所有曲线段的插值点序列。
clsSplines类有两个子类,clsBSplines实现了封闭的B样条曲线的计算,clsHermite实现了封闭的Hermite样条曲线的计算。
3.3)Layer类别
clsLayer的核心数据是多边形的端点序列。每个端点的交互编辑(插入、删除、平移)操作时针对当前端点进行的。clsLayer还支持端点序列的整体性操作。
为优化多边形的显示效果,改善模型的光滑程度,clsLayer类还包括了样条曲线对象及由样条曲线对象的生成的插值点集合。
clsLayers的核心数据是clsLayer对象的集合、各层对象文件名、高度的集合。所有对层的操作,都是通过对当前层的操作实现的。
clsLayers中的另一个核心数据是背景图像集,它是由Dicom文件集创建而来的。
3.4)3Dmodel类与侧表面建模算法
clsTri类的主要数据是三角面片的三个端点及法线向量。
clsTris类是三角面片对象的集合。主要功能是集合的管理、绘制、保存等。
表面模型类clsFaceModel类的主要数据clsTris对象。主要方法是根据多层的多边形集合,多次利用最短对角线算法,创建三维模型的侧表面三角面片集合。
设有n层多边形,则需要调用n-1次最短对角线算法,以构造相邻层之间的三角面片。
设上层多边形端点序列P和下层多边形端点序列Q,如图7所示,端点序列均满足逆时针顺序,最短对角线算法的具体步骤如下:
1选取qj作为起点,在P中选取距离qj最近的一点,并记作pi。重组上层轮廓线P序列为pi,pi+1,…,pm-1,p0,…,pi-1,重组下轮廓线Q序列为qj,qj+1,…,qn-1,q0,…,qj-1;
2记i=0,j=0,i和j分别表示P和Q中的下标;
3分别计算左右跨距的长度D1和D2:D1=pi+1qj、D2=piqj+1;
4若D1<D2,则创建三角面△piqjpi+1,并且令i=i+1;否则,则创建三角面△qjpiqj+1,并且令j=j+1;
5若i<m或者j<n,则重复执行步骤3和步骤4,直至循环跳出,则算法结束。
以上即为最短对角线法的具体执行步骤。
4)Dicom.DLL模块
Dicom.DLL是Dicom文件的数据接口。DICOM文件中不仅存储了一个断层的图像信息,在其标准的数据结构中,还存储了若干特征数据项。每个数据项由标记和值组成。
4.1)clsDicomReader类
clsDicomReader类的职责是,读取指定DICOM文件的灰度矩阵(图像数据)和数据项集合。主要方法参见表4。
表4 clsDicomReader类的主要方法
4.2)clsVR类
clsVR类对DICOM数据项进行分析。主要方法getVF(VR,VF)的作用是,根据标记名VR,按照Dicom标准,对字节数组VF进行解读,返回相应的字符串。
4.3)clsDicom类
利用clsDicomReader类的对象,读取指定Dicom文件,建立灰度图像对象、根据双阈值建立二值图对象、读取图像的尺寸、高度及取值范围等特征数据。主要方法参见表5。
表5 clsDicom类的主要方法
5)项目管理类库Projects.DLL模块、
5.1)clsProjectState类
当用户在操作一个项目时,有多种动作状态,且每种动作还有若干选项状态。clsProjectState类负责记录、管理这些状态。
5.2)clsProject类
项目类clsProject记录了用户正在操作的层集合对象、创建的表面模型及用户的操作状态。
当用户暂停一个流程时,可以记录这些中间数据,使得再次打开项目时,可以继续流程。
clsProject类设计了若干事件,构成了界面与层集合对象、表面模型对象之间的处理流程。参见表6。
表6 clsProject类的事件设计
6)Design3D.exe模块
Design3D.exe中操作流程最主要由frmDesign3D窗口实现。由于二三维图形操作的复杂性,将其中的人际交互操作封装为成了若干类的定义,合并称为UI类别。
6.1)UI类别
UI类别中的类定义及说明,参见表7。
表7 Common.DLL中的类别组成
这些类的设计定义,极大地简化了人机交互界面frmDesign3D中的流程代码。
6.2)主窗口frmDesign3D
三个核心数据成员:项目对象Project、鼠标流程控制对象MouseProcess、菜单流程控制对象MainMenu。
主窗口界面包括三个菜单条,分别组织了项目管理、关键断面轮廓编辑、断面之间多边形管理等操作。参见图8。
主窗口界面还包括两个窗格,左侧窗格是三维图形展示区,右侧窗格是断层图像集合的展示及关键断层轮廓的编辑区。参见图9,是新建一个项目时的界面。此刻尚未制定任何关键断层轮廓,所以左侧的三维图形展示窗格中,仅仅显示一个坐标系。
6.3)三模表面模型示例
用户在选定背景层中绘制轮廓多边形,并参照背景,根据需要调整轮廓多边形的端点位置,样条曲线的轮廓会随时变化并生成插值多边形;当关键断层的插值多边形发生变化时,左侧窗格中,立即显示变化后的三维表面模型,如图10所示。
当设计完成时,可利用文件菜单条中的菜单项“输出模型”,将表面模型保存为STL文件。这是通用的三维模型格式,在其他设计软件中,都可以打开编辑。
当设计过程被中断时,可以利用文件菜单条中的菜单项“保存项目”,保存设计过程中的所有数据;项目文件的后缀名为*.prj,采用文本格式,存储了所有断面的设计数据。
再次使用建模时,可以利用文件菜单条中的菜单项“打开项目”,继续呗中断的项目。
本发明实施例的技术方案,1)创建了一种三维模型的设计方法,具体地,设计若干关键断层的轮廓多边形;进行侧表面连接,生成三角面片集合;进行底面、顶面的三角分割,得到三角面片集合。2)创建了一种适合生物模型的曲面三维设计方法,具体地,对所有关键断层的轮廓多边形,进行曲线设计,得到插值多边形,极大地保证了三维表面模型的光滑,为设计生物模型,创建了一个相对简便易行的方法。3)设计实现了一种三维模型的设计界面,具体地,在精确操作编辑着某个关键断面的端点数据的同时,用户可以实时观察到三维模型的变化。4)设计实现了一种轮廓端点位移的影响模型,具体地,在某个指定端点发生位移时,相邻的端点也将受其影响进行位移。这其中,有引力场范围的定义,有引力系数的定义;其起因是,生物模型上每个点的变化,是相互影响的;其目的是,让用户在保持整体形状的视觉约束下,进行端点的精确编辑。
图11为本发明实施例的三维表面建模装置的结构组成示意图,如图11所示,所述三维表面建模装置包括:
断层图像创建单元1101,用于获取DICOM文件集,根据所述DICOM文件集创建N个断层图像,N≥2,所述N个断层图像中的每个断层图像对应于目标对象在特定高度上的截面;
选择单元1102,用于在所述N个断层图像中选择出M个断层图像,作为关键断层图像,2≤M≤N;
轮廓创建单元1103,用于在所述M个关键断层图像上分别创建M个轮廓,所述轮廓通过二维多边形表征;
编辑单元1104,对所述M个轮廓中的各个轮廓进行图形编辑和/或端点编辑,其中,对所述轮廓进行图形编辑是指:对所述轮廓对应的二维多边形进行以下至少一种操作:平移、旋转、缩放,对所述轮廓进行端点编辑是指:对所述轮廓对应的二维多边形的端点进行以下至少一种操作:移动、删除、添加;所述图形编辑包括局部性图像编辑和/或全局性图形编辑,所述端点编辑包括局部性端点编辑和/或全局性端点编辑;
所述局部性图像编辑是指:对指定层的轮廓进行编辑;
所述全局性图形编辑是指:在对指定层的轮廓进行编辑的同时,按照引力位移模型确定所述指定层作用的牵引层,对各个所述牵引层按照所述指定层作用于所述牵引层的引力参数对所述牵引层的轮廓进行编辑;
所述局部性端点编辑是指:对指定层的指定端点进行编辑;
所述全局性端点编辑是指:在对指定层的指定端点进行编辑的同时,按照引力位移模型确定所述指定端点作用的牵引端点,对各个所述牵引端点按照所述指定端点作用于所述牵引端点的引力参数对所述牵引端点进行编辑;其中,所述牵引端点与所述指定端点位于同一轮廓中或不同的轮廓中;
三角表面生成单元1105,用于基于编辑后的M个轮廓创建所述目标对象的三维表面模型,所述三维表面模型由空间中三角面片的集合组成。
在一实施方式中,所述二维多边形包括如下端点序列V:V1,V2,…,Vn,其中,n为所述二维多边形包括的端点个数,所述端点序列为逆时针方;
所述轮廓创建单元1103,还用于针对所述M个轮廓中的各个轮廓对应的二维多边形,遍历所述二维多边形中所有相邻的三个端点:Vi、Vi+1、Vi+2,1≤i≤n-2,如果端点Vi+2处于线段Vi Vi+1的延长线上,则删除端点Vi+2。
在一实施方式中,所述三角表面生成单元1105,包括:
顶面和底面生成子单元(图中未示出),用于针对所述编辑后的M个轮廓中的高度最高的第一轮廓和高度最低的第二轮廓,采用三角形分解算法对所述第一轮廓和所述第二轮廓进行处理,分别得到所述三维表面模型的顶面和底面;
侧面生成子单元(图中未示出),用于针对所述编辑后的M个轮廓中的各个轮廓,采用最短对角线法对高度上任意相邻的两个轮廓进行处理,得到所述三维表面模型的侧面。
在一实施方式中,所述第一轮廓对应的二维多边形包括如下端点序列I:I1,I2,…,In1,其中,n1为所述第一轮廓对应的二维多边形包括的端点个数,所述端点序列为逆时针方;所述第二轮廓对应的二维多边形包括如下端点序列J:J1,J2,…,Jn2,其中,n2为所述第二轮廓对应的二维多边形包括的端点个数,所述端点序列为逆时针方;
所述顶面和底面生成子单元,具体用于如果所述第一轮廓对应的二维多边形为凸多边形,则基于所述第一轮廓对应的二维多边形的全部端点的坐标值,确定参考点的坐标值;其中,所述参考点为所述凸多边形的中心点或者所述凸多边形中的任意一个端点;基于所述参考点和所述凸多边形的任意相邻的两个端点确定三角形,从而将所述第一轮廓对应的二维多边形分解为由多个三角形形成的顶面;如果所述第一轮廓对应的二维多边形为凹多边形,则将所述凹多边形分解为多个凸多边形;针对各个凸多边形,基于所述凸多边形的全部端点的坐标值,确定参考点的坐标值;其中,所述参考点为所述凸多边形的中心点或者所述凸多边形中的任意一个端点;基于所述参考点和所述凸多边形的任意相邻的两个端点确定三角形,从而将所述第一轮廓对应的二维多边形分解为由多个三角形形成的顶面;
如果所述第二轮廓对应的二维多边形为凸多边形,则基于所述第二轮廓对应的二维多边形的全部端点的坐标值,确定参考点的坐标值;其中,所述参考点为所述凸多边形的中心点或者所述凸多边形中的任意一个端点;基于所述参考点和所述凸多边形的任意相邻的两个端点确定三角形,从而将所述第二轮廓对应的二维多边形分解为由多个三角形形成的底面;如果所述第二轮廓对应的二维多边形为凹多边形,则将所述凹多边形分解为多个凸多边形;针对各个凸多边形,基于所述凸多边形的全部端点的坐标值,确定参考点的坐标值;其中,所述参考点为所述凸多边形的中心点或者所述凸多边形中的任意一个端点;基于所述参考点和所述凸多边形的任意相邻的两个端点确定三角形,从而将所述第二轮廓对应的二维多边形分解为由多个三角形形成的底面。
在一实施方式中,所述在高度上任意相邻的两个轮廓中的上层轮廓对应的二维多边形包括如下端点序列P:p0,p1,…,pm1-1,所述端点序列为逆时针方;下层轮廓对应的二维多边形包括如下端点序列Q:q0,q1,…,qm2-1,所述端点序列为逆时针方;
所述侧面生成子单元,用于执行如下步骤:
步骤1:选取qj作为起点,在端点序列P中选取距离qj最近的一个端点,并记作pi;重组上层轮廓对应的二维多边形包括如下端点序列P:pi,pi+1,…,pm1-1,p0,p1,…,pi-1,重组下层轮廓对应的二维多边形包括如下端点序列Q:qj,qj+1,…,qm2-1,q0,q1,…,qj-1;
步骤2:进行如下赋值操作:i=0,j=0;
步骤3:计算上层轮廓和下层轮廓左右跨距的长度D1和D2,其中,D1=pi+1qj、D2=piqj+1;
步骤4:若D1<D2,则创建三角面Δpi qj pi+1,并且进行如下赋值操作:i=i+1;若D1≥D2,则创建三角面Δqj pi qj+1,并且进行如下赋值操作:j=j+1;
步骤5:若i<m1或者j<m2,则重复执行步骤3和步骤4,直至i=m1且j=m2为止。
在一实施方式中,所述指定层的轮廓的编辑参数为F1,所述牵引层的轮廓的编辑参数为F2,所述指定层的轮廓与所述牵引层的轮廓的高度差为H1,在所述引力位移模型中,F2与F1成正比,F2与H1成反比;
所述指定端点的编辑参数为f1,所述牵引端点的编辑参数为f2,所述指定端点与所述牵引端点的距离为H2,在所述引力位移模型中,f2与f1成正比,f2与H2成反比。
本领域技术人员应当理解,图11所示的三维表面建模装置中的各单元的实现功能可参照前述三维表面建模方法的相关描述而理解。图11所示的三维表面建模装置中的各单元的功能可通过运行于处理器上的程序而实现,也可通过具体的逻辑电路而实现。
本发明实施例上述三维表面建模装置如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read Only Memory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本发明实施例不限制于任何特定的硬件和软件结合。
相应地,本发明实施例还提供一种计算机存储介质,其中存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现本发明实施例的上述三维表面建模方法。
本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
在本发明所提供的几个实施例中,应该理解到,所揭露的方法和智能设备,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个第二处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。
Claims (13)
1.一种三维表面建模方法,其特征在于,所述方法包括:
获取医学数字成像和通信DICOM文件集,根据所述DICOM文件集创建N个断层图像,N≥2,所述N个断层图像中的每个断层图像对应于目标对象在特定高度上的截面;
在所述N个断层图像中选择出M个断层图像,作为关键断层图像,2≤M≤N;
在所述M个关键断层图像上分别创建M个轮廓,所述轮廓通过二维多边形表征;
对所述M个轮廓中的各个轮廓进行图形编辑和/或端点编辑,其中,对所述轮廓进行图形编辑是指:对所述轮廓对应的二维多边形进行以下至少一种操作:平移、旋转、缩放,对所述轮廓进行端点编辑是指:对所述轮廓对应的二维多边形的端点进行以下至少一种操作:移动、删除、添加;所述图形编辑包括局部性图像编辑和/或全局性图形编辑,所述端点编辑包括局部性端点编辑和/或全局性端点编辑;
所述局部性图像编辑是指:对指定层的轮廓进行编辑;
所述全局性图形编辑是指:在对指定层的轮廓进行编辑的同时,按照引力位移模型确定所述指定层作用的牵引层,对各个所述牵引层按照所述指定层作用于所述牵引层的引力参数对所述牵引层的轮廓进行编辑;
所述局部性端点编辑是指:对指定层的指定端点进行编辑;
所述全局性端点编辑是指:在对指定层的指定端点进行编辑的同时,按照引力位移模型确定所述指定端点作用的牵引端点,对各个所述牵引端点按照所述指定端点作用于所述牵引端点的引力参数对所述牵引端点进行编辑;其中,所述牵引端点与所述指定端点位于同一轮廓中或不同的轮廓中;
基于编辑后的M个轮廓创建所述目标对象的三维表面模型,所述三维表面模型由空间中三角面片的集合组成。
2.根据权利要求1所述的方法,其特征在于,所述二维多边形包括如下端点序列V:V1,V2,…,Vn,其中,n为所述二维多边形包括的端点个数,所述端点序列为逆时针方;
所述对所述M个轮廓中的各个轮廓进行图形编辑和/或端点编辑之前,所述方法还包括:
针对所述M个轮廓中的各个轮廓对应的二维多边形,遍历所述二维多边形中所有相邻的三个端点:Vi、Vi+1、Vi+2,1≤i≤n-2,如果端点Vi+2处于线段ViVi+1的延长线上,则删除端点Vi+2。
3.根据权利要求1所述的方法,其特征在于,所述基于编辑后的M个轮廓创建所述目标对象的三维表面模型,包括:
针对所述编辑后的M个轮廓中的高度最高的第一轮廓和高度最低的第二轮廓,采用三角形分解算法对所述第一轮廓和所述第二轮廓进行处理,分别得到所述三维表面模型的顶面和底面;
针对所述编辑后的M个轮廓中的各个轮廓,采用最短对角线法对高度上任意相邻的两个轮廓进行处理,得到所述三维表面模型的侧面。
4.根据权利要求3所述的方法,其特征在于,所述第一轮廓对应的二维多边形包括如下端点序列I:I1,I2,…,In1,其中,n1为所述第一轮廓对应的二维多边形包括的端点个数,所述端点序列为逆时针方;所述第二轮廓对应的二维多边形包括如下端点序列J:J1,J2,…,Jn2,其中,n2为所述第二轮廓对应的二维多边形包括的端点个数,所述端点序列为逆时针方;
所述采用三角形分解算法对所述第一轮廓和所述第二轮廓进行处理,分别得到所述三维表面模型的顶面和底面,包括:
如果所述第一轮廓对应的二维多边形为凸多边形,则基于所述第一轮廓对应的二维多边形的全部端点的坐标值,确定参考点的坐标值;其中,所述参考点为所述凸多边形的中心点或者所述凸多边形中的任意一个端点;基于所述参考点和所述凸多边形的任意相邻的两个端点确定三角形,从而将所述第一轮廓对应的二维多边形分解为由多个三角形形成的顶面;如果所述第一轮廓对应的二维多边形为凹多边形,则将所述凹多边形分解为多个凸多边形;针对各个凸多边形,基于所述凸多边形的全部端点的坐标值,确定参考点的坐标值;其中,所述参考点为所述凸多边形的中心点或者所述凸多边形中的任意一个端点;基于所述参考点和所述凸多边形的任意相邻的两个端点确定三角形,从而将所述第一轮廓对应的二维多边形分解为由多个三角形形成的顶面;
如果所述第二轮廓对应的二维多边形为凸多边形,则基于所述第二轮廓对应的二维多边形的全部端点的坐标值,确定参考点的坐标值;其中,所述参考点为所述凸多边形的中心点或者所述凸多边形中的任意一个端点;基于所述参考点和所述凸多边形的任意相邻的两个端点确定三角形,从而将所述第二轮廓对应的二维多边形分解为由多个三角形形成的底面;如果所述第二轮廓对应的二维多边形为凹多边形,则将所述凹多边形分解为多个凸多边形;针对各个凸多边形,基于所述凸多边形的全部端点的坐标值,确定参考点的坐标值;其中,所述参考点为所述凸多边形的中心点或者所述凸多边形中的任意一个端点;基于所述参考点和所述凸多边形的任意相邻的两个端点确定三角形,从而将所述第二轮廓对应的二维多边形分解为由多个三角形形成的底面。
5.根据权利要求3或4所述的方法,其特征在于,所述在高度上任意相邻的两个轮廓中的上层轮廓对应的二维多边形包括如下端点序列P:p0,p1,…,pm1-1,所述端点序列为逆时针方;下层轮廓对应的二维多边形包括如下端点序列Q:q0,q1,…,qm2-1,所述端点序列为逆时针方;
所述采用最短对角线法对高度上任意相邻的两个轮廓进行处理,得到所述三维表面模型的侧面,包括:
步骤1:选取qj作为起点,在端点序列P中选取距离qj最近的一个端点,并记作pi;重组上层轮廓对应的二维多边形包括如下端点序列P:pi,pi+1,…,pm1-1,p0,p1,…,pi-1,重组下层轮廓对应的二维多边形包括如下端点序列Q:qj,qj+1,…,qm2-1,q0,q1,…,qj-1;
步骤2:进行如下赋值操作:i=0,j=0;
步骤3:计算上层轮廓和下层轮廓左右跨距的长度D1和D2,其中,D1=pi+1qj、D2=piqj+1;
步骤4:若D1<D2,则创建三角面Δpiqjpi+1,并且进行如下赋值操作:i=i+1;若D1≥D2,则创建三角面Δqjpiqj+1,并且进行如下赋值操作:j=j+1;
步骤5:若i<m1或者j<m2,则重复执行步骤3和步骤4,直至i=m1且j=m2为止。
6.根据权利要求1所述的方法,其特征在于,
所述指定层的轮廓的编辑参数为F1,所述牵引层的轮廓的编辑参数为F2,所述指定层的轮廓与所述牵引层的轮廓的高度差为H1,在所述引力位移模型中,F2与F1成正比,F2与H1成反比;
所述指定端点的编辑参数为f1,所述牵引端点的编辑参数为f2,所述指定端点与所述牵引端点的距离为H2,在所述引力位移模型中,f2与f1成正比,f2与H2成反比。
7.一种三维表面建模装置,其特征在于,所述装置包括:
断层图像创建单元,用于获取DICOM文件集,根据所述DICOM文件集创建N个断层图像,N≥2,所述N个断层图像中的每个断层图像对应于目标对象在特定高度上的截面;
选择单元,用于在所述N个断层图像中选择出M个断层图像,作为关键断层图像,2≤M≤N;
轮廓创建单元,用于在所述M个关键断层图像上分别创建M个轮廓,所述轮廓通过二维多边形表征;
编辑单元,对所述M个轮廓中的各个轮廓进行图形编辑和/或端点编辑,其中,对所述轮廓进行图形编辑是指:对所述轮廓对应的二维多边形进行以下至少一种操作:平移、旋转、缩放,对所述轮廓进行端点编辑是指:对所述轮廓对应的二维多边形的端点进行以下至少一种操作:移动、删除、添加;所述图形编辑包括局部性图像编辑和/或全局性图形编辑,所述端点编辑包括局部性端点编辑和/或全局性端点编辑;
所述局部性图像编辑是指:对指定层的轮廓进行编辑;
所述全局性图形编辑是指:在对指定层的轮廓进行编辑的同时,按照引力位移模型确定所述指定层作用的牵引层,对各个所述牵引层按照所述指定层作用于所述牵引层的引力参数对所述牵引层的轮廓进行编辑;
所述局部性端点编辑是指:对指定层的指定端点进行编辑;
所述全局性端点编辑是指:在对指定层的指定端点进行编辑的同时,按照引力位移模型确定所述指定端点作用的牵引端点,对各个所述牵引端点按照所述指定端点作用于所述牵引端点的引力参数对所述牵引端点进行编辑;其中,所述牵引端点与所述指定端点位于同一轮廓中或不同的轮廓中;
三角表面生成单元,用于基于编辑后的M个轮廓创建所述目标对象的三维表面模型,所述三维表面模型由空间中三角面片的集合组成。
8.根据权利要求7所述的装置,其中,所述二维多边形包括如下端点序列V:V1,V2,…,Vn,其中,n为所述二维多边形包括的端点个数,所述端点序列为逆时针方;
所述轮廓创建单元,还用于针对所述M个轮廓中的各个轮廓对应的二维多边形,遍历所述二维多边形中所有相邻的三个端点:Vi、Vi+1、Vi+2,1≤i≤n-2,如果端点Vi+2处于线段ViVi+1的延长线上,则删除端点Vi+2。
9.根据权利要求7所述的装置,其中,所述三角表面生成单元,包括:
顶面和底面生成子单元,用于针对所述编辑后的M个轮廓中的高度最高的第一轮廓和高度最低的第二轮廓,采用三角形分解算法对所述第一轮廓和所述第二轮廓进行处理,分别得到所述三维表面模型的顶面和底面;
侧面生成子单元,用于针对所述编辑后的M个轮廓中的各个轮廓,采用最短对角线法对高度上任意相邻的两个轮廓进行处理,得到所述三维表面模型的侧面。
10.根据权利要求9所述的装置,其中,所述第一轮廓对应的二维多边形包括如下端点序列I:I1,I2,…,In1,其中,n1为所述第一轮廓对应的二维多边形包括的端点个数,所述端点序列为逆时针方;所述第二轮廓对应的二维多边形包括如下端点序列J:J1,J2,…,Jn2,其中,n2为所述第二轮廓对应的二维多边形包括的端点个数,所述端点序列为逆时针方;
所述顶面和底面生成子单元,具体用于如果所述第一轮廓对应的二维多边形为凸多边形,则基于所述第一轮廓对应的二维多边形的全部端点的坐标值,确定参考点的坐标值;其中,所述参考点为所述凸多边形的中心点或者所述凸多边形中的任意一个端点;基于所述参考点和所述凸多边形的任意相邻的两个端点确定三角形,从而将所述第一轮廓对应的二维多边形分解为由多个三角形形成的顶面;如果所述第一轮廓对应的二维多边形为凹多边形,则将所述凹多边形分解为多个凸多边形;针对各个凸多边形,基于所述凸多边形的全部端点的坐标值,确定参考点的坐标值;其中,所述参考点为所述凸多边形的中心点或者所述凸多边形中的任意一个端点;基于所述参考点和所述凸多边形的任意相邻的两个端点确定三角形,从而将所述第一轮廓对应的二维多边形分解为由多个三角形形成的顶面;
如果所述第二轮廓对应的二维多边形为凸多边形,则基于所述第二轮廓对应的二维多边形的全部端点的坐标值,确定参考点的坐标值;其中,所述参考点为所述凸多边形的中心点或者所述凸多边形中的任意一个端点;基于所述参考点和所述凸多边形的任意相邻的两个端点确定三角形,从而将所述第二轮廓对应的二维多边形分解为由多个三角形形成的底面;如果所述第二轮廓对应的二维多边形为凹多边形,则将所述凹多边形分解为多个凸多边形;针对各个凸多边形,基于所述凸多边形的全部端点的坐标值,确定参考点的坐标值;其中,所述参考点为所述凸多边形的中心点或者所述凸多边形中的任意一个端点;基于所述参考点和所述凸多边形的任意相邻的两个端点确定三角形,从而将所述第二轮廓对应的二维多边形分解为由多个三角形形成的底面。
11.根据权利要求9或10所述的装置,其中,所述在高度上任意相邻的两个轮廓中的上层轮廓对应的二维多边形包括如下端点序列P:p0,p1,…,pm1-1,所述端点序列为逆时针方;下层轮廓对应的二维多边形包括如下端点序列Q:q0,q1,…,qm2-1,所述端点序列为逆时针方;
所述侧面生成子单元,用于执行如下步骤:
步骤1:选取qj作为起点,在端点序列P中选取距离qj最近的一个端点,并记作pi;重组上层轮廓对应的二维多边形包括如下端点序列P:pi,pi+1,…,pm1-1,p0,p1,…,pi-1,重组下层轮廓对应的二维多边形包括如下端点序列Q:qj,qj+1,…,qm2-1,q0,q1,…,qj-1;
步骤2:进行如下赋值操作:i=0,j=0;
步骤3:计算上层轮廓和下层轮廓左右跨距的长度D1和D2,其中,D1=pi+1qj、D2=piqj+1;
步骤4:若D1<D2,则创建三角面Δpiqjpi+1,并且进行如下赋值操作:i=i+1;若D1≥D2,则创建三角面Δqjpiqj+1,并且进行如下赋值操作:j=j+1;
步骤5:若i<m1或者j<m2,则重复执行步骤3和步骤4,直至i=m1且j=m2为止。
12.根据权利要求7所述的装置,其中,
所述指定层的轮廓的编辑参数为F1,所述牵引层的轮廓的编辑参数为F2,所述指定层的轮廓与所述牵引层的轮廓的高度差为H1,在所述引力位移模型中,F2与F1成正比,F2与H1成反比;
所述指定端点的编辑参数为f1,所述牵引端点的编辑参数为f2,所述指定端点与所述牵引端点的距离为H2,在所述引力位移模型中,f2与f1成正比,f2与H2成反比。
13.一种计算机存储介质,其上存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至6任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810340124.2A CN108597038B (zh) | 2018-04-16 | 2018-04-16 | 一种三维表面建模方法及装置、计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810340124.2A CN108597038B (zh) | 2018-04-16 | 2018-04-16 | 一种三维表面建模方法及装置、计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108597038A true CN108597038A (zh) | 2018-09-28 |
CN108597038B CN108597038B (zh) | 2022-05-27 |
Family
ID=63622831
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810340124.2A Active CN108597038B (zh) | 2018-04-16 | 2018-04-16 | 一种三维表面建模方法及装置、计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108597038B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109754472A (zh) * | 2018-12-29 | 2019-05-14 | 上海联影医疗科技有限公司 | 一种组织轮廓编辑方法、装置、计算机设备及存储介质 |
CN111142753A (zh) * | 2019-12-27 | 2020-05-12 | 杭州依图医疗技术有限公司 | 交互方法、信息处理方法及存储介质 |
CN112686918A (zh) * | 2020-12-16 | 2021-04-20 | 山东大学 | 一种单连通嵌套图形结构的生成方法及系统 |
CN115050185A (zh) * | 2022-06-14 | 2022-09-13 | 北京车网科技发展有限公司 | 一种车辆运行范围合规性的判别方法、系统和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101065773A (zh) * | 2004-11-27 | 2007-10-31 | 布雷克成像有限公司 | 2d/3d集成式轮廓编辑器 |
CN104463067A (zh) * | 2014-12-04 | 2015-03-25 | 四川大学 | 一种Grid Matrix二维条码宏模块提取方法 |
CN106408648A (zh) * | 2015-08-03 | 2017-02-15 | 青岛海信医疗设备股份有限公司 | 一种医学组织的切片图像三维重建的方法及设备 |
-
2018
- 2018-04-16 CN CN201810340124.2A patent/CN108597038B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101065773A (zh) * | 2004-11-27 | 2007-10-31 | 布雷克成像有限公司 | 2d/3d集成式轮廓编辑器 |
CN104463067A (zh) * | 2014-12-04 | 2015-03-25 | 四川大学 | 一种Grid Matrix二维条码宏模块提取方法 |
CN106408648A (zh) * | 2015-08-03 | 2017-02-15 | 青岛海信医疗设备股份有限公司 | 一种医学组织的切片图像三维重建的方法及设备 |
Non-Patent Citations (2)
Title |
---|
潘如刚: "基于断层轮廓数据的三维形体网格构造方法研究", 《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑(季刊)》 * |
祁伟丽: "基于断层图像的三维重建理论和算法研究", 《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑(月刊)》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109754472A (zh) * | 2018-12-29 | 2019-05-14 | 上海联影医疗科技有限公司 | 一种组织轮廓编辑方法、装置、计算机设备及存储介质 |
CN111142753A (zh) * | 2019-12-27 | 2020-05-12 | 杭州依图医疗技术有限公司 | 交互方法、信息处理方法及存储介质 |
CN112686918A (zh) * | 2020-12-16 | 2021-04-20 | 山东大学 | 一种单连通嵌套图形结构的生成方法及系统 |
CN112686918B (zh) * | 2020-12-16 | 2022-10-14 | 山东大学 | 一种单连通嵌套图形结构的生成方法及系统 |
CN115050185A (zh) * | 2022-06-14 | 2022-09-13 | 北京车网科技发展有限公司 | 一种车辆运行范围合规性的判别方法、系统和存储介质 |
CN115050185B (zh) * | 2022-06-14 | 2023-08-25 | 北京车网科技发展有限公司 | 一种车辆运行范围合规性的判别方法、系统和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108597038B (zh) | 2022-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108597038A (zh) | 一种三维表面建模方法及装置、计算机存储介质 | |
US10216172B2 (en) | Functional 3-D: optimized lattice partitioning of solid 3-D models to control mechanical properties for additive manufacturing | |
Dvorožňák et al. | Monster mash: a single-view approach to casual 3D modeling and animation | |
Yu et al. | Mesh editing with poisson-based gradient field manipulation | |
Liu et al. | Surface reconstruction from non‐parallel curve networks | |
EP3223246B1 (en) | Hollow object model generation from a medical image | |
US7724252B2 (en) | Method for the editing of three-dimensional graphic models | |
US9269195B2 (en) | Methods and apparatus for generating curved extrusions | |
US10210668B2 (en) | Technique for extruding a 3D object into a plane | |
EP3545500B1 (en) | System and method for rendering complex data in a virtual reality or augmented reality environment | |
CA2772530A1 (en) | Hair meshes | |
Du et al. | Semiregular solid texturing from 2d image exemplars | |
CN110176063B (zh) | 一种基于人体拉普拉斯变形的服装变形方法 | |
CN108294780A (zh) | 超声三维成像方法、超声三维成像系统及装置 | |
EP1627282A2 (en) | Rig baking | |
Wang et al. | Progressive sketching with instant previewing | |
CN108573532A (zh) | 一种混合模型的展示方法及装置、计算机存储介质 | |
Du et al. | Free-form geometric modeling by integrating parametric and implicit PDEs | |
Bærentzen | Volume sculpting: intuitive, interactive 3D shape modelling | |
CN115222894A (zh) | 一种基于laplace优化的图像拓扑变形方法 | |
Lindholm et al. | Fused Multi‐Volume DVR using Binary Space Partitioning | |
McDonnell et al. | PB-FFD: a point-based technique for free-form deformation | |
Zheng et al. | Creating reference image of realistic cloth folded surface using sketch-based interactive modeling | |
Wang et al. | Reference plane assisted sketching interface for 3d freeform shape design | |
JP4463008B2 (ja) | 切断面画像生成装置、切断面画像生成プログラム及び記録媒体 |
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 |