基于AR技术的医学样品展示方法和计算机设备、存储介质与流程

文档序号:13453924阅读:208来源:国知局

本发明涉及医学技术领域,特别是涉及一种基于ar技术的医学样品展示方法和计算机设备、存储介质。



背景技术:

在医疗教学过程中,经常需要使用医学样品进行展示,以帮助学员了解相关的医疗知识,加深学员对医疗知识的理解。但是在医学样品的展示过程中,会出现医学样品磨损、损坏的情况且不方便学员观看。



技术实现要素:

基于此,有必要提供一种不会导致医学样品磨损、损坏问题发生且便于观看的基于ar技术的医学样品展示方法和计算机设备、存储介质。

一种基于ar技术的医学样品展示方法,包括:

获取待展示的医学样品的三维有向点云数据;

将所述三维有向点云数据建立为八叉树的数据结构,并定义空间函数;

根据所述八叉树和所述空间函数计算向量场;

为求解指示函数,使所述指示函数梯度同所述向量场逼近拟合;

将拟合过程转换为求解泊松问题得到所述指示函数;

通过所述指示函数提取对应的等值面并重建实物的表面模型;

结合细节层次算法中的粗糙程度判定算法对所述表面模型进行网格简化;

对网格简化后的表面模型进行纹理贴图形成医学样品的三维模型;以及

通过ar显示设备对所述医学样品的三维模型进行显示。

上述基于ar技术的医学样品展示方法,先获取待展示的医学样品的三维有向点云数据,然后利用该三维有向点云数据通过表面重建过程重建医学样品的表面模型,并结合细节层次算法中的粗糙程度判定算法对表面模型进行网格简化后对表面模型进行纹理贴图形成医学样品的三维模型,最终通过ar显示设备对该医学样品的三维模型进行显示。上述方法可以结合ar显示技术对医学样品的三维模型进行投影显示,从而无需使用真实的医学样品进行展示,不会造成医学样品的损害、磨损问题。并且,显示过程可以根据需要调整显示位置,方便用户观看。

在其中一个实施例中,所述对网格简化后的表面模型进行纹理贴图形成医学样品的三维模型的步骤中,在进行纹理贴图之后、形成医学样品的三维模型之前,还包括:采用细节层次算法对所述表面模型进行网格简化。

在其中一个实施例中,所述获取待展示的医学样品的三维有向点云数据的步骤中,是通过三维扫描方式获取所述三维有向点云数据;

在所述获取待展示的医学样品的三维有向点云数据的步骤之前,还包括在所述医学样品上的多个位置设置标记的步骤。

在其中一个实施例中,所述结合细节层次算法中的粗糙程度判定算法对所述表面模型进行网格简化的步骤包括:

利用粗糙程度判定算法将所述表面模型上的各面片划分为粗糙组和平坦组;

将所述粗糙组内的各面片按照第一缩减率进行网格简化;

将所述平坦组内的各面片按照第二缩减率进行网格简化;所述第二缩减率大于所述第一缩减率;以及

将网格简化后的面片合并形成表面模型。

在其中一个实施例中,所述利用粗糙程度判定算法将所述表面模型上的各面片划分为粗糙组和平坦组的步骤中,平坦组内的面片数大于所述粗糙组内的面片数。

在其中一个实施例中,还包括在所述为求解指示函数,使所述指示函数梯度同所述向量场逼近拟合的步骤中引入屏蔽因数的步骤;所述屏蔽因数用于对所述三维有向点云数据进行点集约束和梯度约束,避免所述指示函数发生偏移。

在其中一个实施例中,在所述为求解指示函数,使所述指示函数梯度同所述向量场逼近拟合的步骤中,还包括引入独立尺度屏蔽因数的步骤;所述独立尺度屏蔽因数用于对拟合过程进行修正,以使得所述实物的表面模型的形状不随所述三维有向点云数据的尺度规模的变化而变化。

在其中一个实施例中,所述获取待展示的医学样品的三维有向点云数据的步骤之后还包括:对所述三维有向点云数据进行预处理的步骤。

一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现前述任一实施例所述的方法的步骤。

一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现前述任一实施例所述的方法的步骤。

附图说明

图1为一实施例中的基于ar技术的医学样品展示方法的流程图;

图2为一实施例中采用三维扫描方法获取三维有向点云数据的示意图;

图3为一实施例中的八叉树的结构示意图;

图4为图1中步骤s170在一实施例中的具体流程图;

图5为采用图4的方法和传统的网格简化方法在算法执行时间的对比表;

图6为采用图4的方法和传统的网格简化方法在效果上的对比图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

一实施例中的基于ar(augmentedreality,增强现实)技术的医学样品展示方法,可以通过ar显示设备将形成的医学样品的三维模型进行投影显示,进而减少医学样品展示过程中受到磨损、损坏的问题发生,方便用户观看。医学样品可以为各种骨标本、动植物活体或者解剖样本等。

图1为一实施例中的基于ar技术的医学样品展示方法的流程图。该方法包括以下步骤:

步骤s110,获取待展示的医学样品的三维有向点云数据。

三维有向点云数据(或者称为稠密点云的原始数据)可以通过sfm(structurefrommotion,运动恢复结构)算法或者三维扫描方法获取到后通过输入设备输入至系统中。其中,sfm算法的原理是通过相机的移动来确定模型表面的几何关系,并且只需要普通的rgb镜头。因此该算法可用于小数量级的稠密点云获取。sfm算法中考虑两类坐标系,分别为相机坐标系和世界坐标系。对二者之间关系的讨论,是计算相机位置的必要步骤,目的是得到内参矩阵和外参矩阵,从而通过矩阵计算点在坐标系中的具体三维位置。

三维扫描获取三维有向点云数据的过程,以采用人类骨标本作为实物模型为例进行说明。可以直接使用三维扫描仪得到稠密点云数据与纹理图层数据。扫描仪内置的扫描方式有环绕扫描、半环绕扫描和单面扫描三种。将实物模型置于架上,每次环绕扫描在水平方向360度旋转并红外测距,每45度旋转一次,得到8张纹理图层;半环绕扫描则是旋转3次,得到3张纹理图层,从而得到模型正面135度视距内的点云;单面扫描仅能扫到正面的图像。实验中一般对头骨标本模型进行两次环绕扫描,如图2所示,两次偏角约为90度,共得到16张纹理图层,这样能几乎覆盖到整个模型表面。若实物模型表面有凹陷,可以对凹陷处增加扫描次数。

通过上述方法获取到的医学样品的三维有向点云数据可以先存储在存储器中,从而在需要对该医学样品进行展示时直接从该存储器中读取即可,方便该数据的重复获取。

步骤s120,将三维有向点云数据建立为八叉树的数据结构,并定义函数空间。

八叉树(octree)是一种表示三维空间树形的数据结构,可以理解为二叉树的改进。对于每个节点都有8个子节点。在三维空间中,这8个子节点围绕着父节点,子节点和父节点的关系类似正方体的8个顶点。图3为一实施例中的八叉树的示意图。采用自相适应的八叉树代表函数空间,以解决表面附近指示函数的问题。

在本实施例中,定义fo表示八叉树每一个节点o的空间函数(也可以称为节点函数)。对于fo的选择首先要满足其线性求和能够准确表示向量场其次要保证泊松方程通过其求解,这样最终由fo线性求和可以准确获得代表模型表面的指示函数特征。

步骤s130,根据八叉树和空间函数计算向量场。

选择一个基函数使得向量场精确有效的表示为节点函数fo的线性和。为达到子节点的精度,使用三次线性差值的方法分配样本点(也即点云数据中的点)到八个最邻近的节点,从而近似估算出向量场。

步骤s140,为求解指示函数,使指示函数梯度同向量场逼近拟合。

在逼近拟合过程中,需要使得指示函数χ的梯度与向量场形成最佳逼近,即构成:

也即,构成指示函数χ最小化问题:

其中,p为输入点集的一个样本点。

步骤s150,将拟合过程转换为求解泊松问题得到指示函数。

通过e-l方程(euler-lagrange,欧拉-拉格朗日方程),上述最小化问题的式子可以演化为求解泊松问题:

方程的解可以采用举证迭代的方式求出。

步骤s160,通过该指示函数提取对应的等值面并重建实物的表面模型。

选择一个等值,使得提取的等值面逼近输入的样本点的等值面。该等值可以通过估计样本点的位置,然后将各样本点的位置的平均值作为该等值。通过选择的等值,然后通过计算指示函数提取对应的等值面,这样就可以获取到重建的表面模型。

步骤s170,结合细节层次算法中的粗糙程度判断算法对表面模型进行网格简化。

重建后的表面模型的网格面片数较多,处理依旧需要占用大量内存,从而使得部分低性能的计算机设备性能无法满足要求,因此需要进行减面操作来达到网格简化的目的。在进行网格简化过程中,需要在尽量不改变模型表面外观的前提下,减少面片数量,加快显示速度并降低对设备的性能要求。在本实施例中,根据粗糙程度判断算法确定各面片的粗糙程度后再对表面模型的各面片进行网格简化操作,从而对原始数据具有一定的容错性。

步骤s180,对网格简化后的表面模型进行纹理贴图形成医学样品的三维模型。

在三维重建过程中,需要使得形成的表面模型呈现和实物样品一样的颜色。这个涂色过程就称为纹理贴图。纹理贴图过程需要获取到足够合适的纹理图层以及这些图层拍摄时的摄像机角度,从而根据摄像机角度以及对应的纹理图层对表面模型执行纹理贴图,确保表面模型呈现与实物样品一样的颜色。

步骤s190,通过ar显示设备对医学样品的三维模型进行显示。

通过ar显示设备对形成的医学样品的三维模型进行投影显示,使得展示过程中无需使用真实的医学样品进行展示,不会造成医学样品的磨损以及损坏等问题。并且,医学样品通常较小而当学员较多时,没法一起观看。上述方法,ar显示设备在投影显示过程中可以对显示的位置、大小进行控制,从而方便用户观看且能够适应不同教学或者展示场景的空间大小需求。同时,传统的医学样品为确保其能够重复使用,需要对其进行极其严格的保护,因此并不方便再医学样品上进行动态标注和说明。而采用上述方法,可以根据需要将讲解过程中所需要的动态标注和说明也一并在模型中进行标注,从而一并进行投影显示,方便教学。

上述基于ar技术的医学样品展示方法,先获取待展示的医学样品的三维有向点云数据,然后根据该三维有向点云数据通过表面重建过程重建医学样品的表面模型,并结合细节层次算法中的粗糙程度判定算法对所述表面模型进行网格简化后对表面模型进行纹理贴图形成医学样品的三维模型,最终通过ar显示设备对该医学样品的三维模型进行显示。上述方法可以结合ar显示技术对医学样品的三维模型进行投影显示,从而无需使用真实的医学样品进行展示,不会带来医学样品的损害、磨损问题。并且,显示过程可以根据需要调整显示位置,方便用户观看。上述方法在表面模型重建过程中,将表面模型的重建过程和网格简化过程结合在一起,可以简化操作过程,提高处理速度。同时,在简化过程中考虑到层次细节,从而对原始数据具有一定的容错性,确保实物表面的各特征能够被准确还原。

在一实施例中,步骤s110中是通过三维扫描方式获取三维有向点云数据的。并且,在通过三维扫描方式获取三维有向点云数据的步骤之前,还包括在医学样品上的多个位置设置标记的步骤。因此,通过三维扫描方式获取到的纹理图层上会记录有相应的标记位置,从而根据该标记位置信息将各纹理图层放置在合适的位置处。

在一实施例中,步骤s170包括以下步骤,如图4所示。

步骤s210,利用粗糙程度算法将表面模型上的各面片划分为粗糙组和平坦组。

利用粗糙度算法可以计算或者估算出表面模型上各面片的粗糙度,从而对各面片的粗糙度进行排序。在本实施例中,以网格每条边的起伏程度和中心点起伏度的最大值来定义粗糙度。将其中相对较为平坦的预设数量的面片划为平坦组,其他相对较为粗糙的面片则划为粗糙组。其中,平坦组内的面片数大于粗糙组内的面片数。例如,当表面模型上总共有10000面时,将其中较为平坦的7500面(也即总面片的四分之三)划分为平坦组,而将其余2500面划为粗糙组。上述数值仅仅作为示例,并不构成对具体技术方案的限定。在实际操作中表面模型的面片数根据实际得到的情况确定,平坦组和粗糙组内的面片数也可以根据实际需求对各组数量进行调节。

步骤s220,将粗糙组内的各面片按照第一缩减率进行网格简化。

步骤s230,将平坦组内的各面片按照第二缩减率进行网格简化。

步骤s220和步骤s230之间的相互先后顺序并不影响处理结果,也即步骤s230也可以执行在步骤s220之前,或者与步骤s220同时执行。在本实施例中,第二缩减率大于第一缩减率,从而使得经过网格简化后的粗糙组内的面片数与平坦组内的面片数接近,或者粗糙组内的面片数大于平坦组内的面片数,从而满足描绘粗糙表面和平坦表面的面片数需求。在一实施例中,将平坦组内的7500面按照六分之五的缩减率进行缩减,缩减为1250面;将粗糙组内的2500面按照二分之一的缩减率进行缩减,缩减为1250面。通过将总面片进行划分为平坦组和粗糙组进行边坍塌操作(也即分步边坍塌方法),相对于传统的将所有面片全部一起进行边坍塌处理(整体边坍塌方法)而言,可以提高处理速度,并对原始数据具有一定的容错性,确保实物表面的各特征能够被准确还原。并且,在边坍塌过程中,粗糙组的缩减率小于平坦组的缩减率,从而确保粗糙处具有较低的精细度,进而确保实物上的各部件如器官构造等不被简化后移除。

在本实施例中,步骤s220和步骤s230均采用边坍塌算法进行网格简化,以在尽量不改变模型表面外观的前提下,减少面片数量,加快显示速度并降低对设备的性能要求。“边坍塌算法”是通过算法从一个大量多边形面片的高精度细节模型生成一个面片数少但和原模型尽可能接近的低精度细节模型。

在一实施例中,假设考虑一个四边形面片,取一边的中点,该点的高度为hi(i=1,2,3,4)。取四边形两条对角线中点,中点的高度分别为hj(j=5,6)。此时,该面片的粗糙度为:

在本实施例中,控制β为调节因数。当满足以下条件时,坍塌面片,否则保留:

步骤s240,将网格简化后的面片合并形成表面模型。

通过上述方法完成对表面模型的网格简化过程,可以提高处理速度且对原始数据具有一定的容错性。图5为分别采用本方法与传统的集群抽取、边坍塌(整体边坍塌)方法进行网格简化在算法执行时间上的对比表(时间单位为毫秒,msec)。图6为对比后的效果图。图6中,f前面的数字代表面片数(face),v前面的数字代表顶点数(vertice)。第一行为采用集群抽取方法获得的效果图,第二行为采用整体边坍塌方法获得的效果图,第三行为采用本方法后的效果图。纵列可以比较面数点数相近的情况下,不同算法的效果。集群抽取算法仅将模型网格分块并平均减面,不考虑网格粗糙程度的影响,其优势是算法简单、对所有部分都一视同仁,如图6中第一行所示,获取的模型每条网格边的长度相近,面片网格也很平均,也因此在执行时间上具有优势。但是,其从图6中也可以看出,其明显有块状棱角形的网格,完全丢失了细节,导致整个模型视觉上有“马赛克”般的模糊感。整体边坍塌算法从待处理网格中每次计算最合适被坍塌的边,再进行坍塌。这种算法在处理执行时间上相对于其他方法多出了两个数量级。因此,从图5和图6中明显可以看出,无论是成型效果还是处理速度上,本案中的处理方法都呈现出较好的鲁棒性和弹性。并且,在边坍塌过程中,粗糙组的缩减率小于平坦组的缩减率,从而确保粗糙处具有较低的精细度,进而确保实物上的各部件如器官构造等不被简化后移除。

在一实施例中,在根据向量场求解泊松方程得到指示函数的步骤(也即步骤s140)中还包括引入屏蔽因数的步骤。屏蔽因数用于对三维有向点云数据进行点集约束和梯度约束,避免指示函数发生偏移从而找不到合适的全局偏移量使得所有点的平均值均为0,无法得到最佳匹配算法。

在一实施例中,在步骤s140中还会为三维有向点云数据增加预设权重值。增加的预设权重值与重建后的实物的表面模型的模型尺寸相适应。在一实施例中,预设权重值可以根据需要设置,如将其设置为1。

在一实施例中,执行步骤s140时,还需要执行引入独立尺度屏蔽因数的步骤。引入的独立尺度屏蔽因数用于对拟合过程进行修正,以使得实物的表面模型的形状不会随表面模型的模型尺寸的变化而变化。通过引入独立尺度屏蔽对屏蔽因数进行修正以使得实物的表面模型的形状不会随表面模型的模型尺寸的变化而变化。在实际使用过程中,会因为具体应用场景的大小,需要对表面模型的模型尺寸进行调整,以使得获得的表面模型能够与应用场景的空间大小相匹配。在调整尺度规模时,可以引入独立尺度屏蔽,从而直接利用尺度变换因子和原先获得深度较深时的多重网格计算得到深度较低时的结果。屏蔽因数和独立尺度屏蔽因数的引入,可以对步骤s140中的求解过程进行修正,确保得到最合适的指示函数。

在一实施例中,在步骤s110之后,还包括对三维有向点云数据进行预处理的步骤。具体地,对三维有向点云数据直连构成的模型除去非流行边,避免出现重合面片、重合边或t型搭接,,以完成后续表面重建算法。同时还会除去面片数小于预设值的独立区域,以筛去噪声点和孤立点,从而防止由于噪声点或者孤立点导致表面重建过程中产生的误差,提高结果的精度。

在一实施例中,步骤s180中,在进行纹理贴图后、形成医学样品的三维模型之前还包括采用细节层次算法对表面模型进行网格简化的步骤。通过采用细节层次算法对表面模型进行网格简化操作,可以在一定程度降低所需模型面片的数量和渲染所需的配置需求。在本实施例中,同时利用相机裁剪算法、视点距离算法和粗糙程度算法对表面模型进行网格简化操作。

相机裁剪算法即渲染显示网格时,判断面片是否在可见范围内。若完全不在相机视角范围内,则完全无需渲染,以此节省cpu的内存空间。观察者或摄像机的位置,与显示屏幕的四个角所经过的区域构成了一个四面锥形的空间。实际情况下只有从显示屏到物体这段深度会被显示,因此除去人眼到屏幕的这个小四面锥的空间,剩余的锥形体成为视锥,包含顶面、底面、四周的四面,共六个面。具体地,可以根据视点与面片法向量的夹角,直接减面。夹角越大越不可见,被裁剪的损失越小。在本实施例中,裁剪作为网格简化的最后一步,从而尽量减小对网格水密性的破坏程度。

视点距离算法中,定义l为视点到面片中心的距离,d为面片边长,控制

α为调节因数,满足下面条件时坍塌面片,否则保留:

粗糙层度算法在前述实施例中已经介绍,此处不赘述。

因此,细节层次算法(lod)的最终判断条件如下:

本发明一实施例还提供一种计算机设备,其包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序。处理器在执行该计算机程序时实现如前述任一实施例所述的方法的步骤。

本发明一实施例还提供一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如前述任一实施例所述的方法的步骤。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1