一种基于三维形态学的模型膨胀方法、装置及应用与流程

未命名 10-17 阅读:116 评论:0


1.本技术涉及三维模型领域,特别是涉及一种基于三维形态学的模型膨胀方法、装置及应用,能有效避免模型在膨胀过程中产生的自相交情况。


背景技术:

2.膨胀是形态学中的一种基本操作,用于扩大图像中物体的边界或填充空洞,它通过对图像中的每个像素应用立体结构元素,根据立体结构元素的形状和大小将像素集合向外部蔓延,常规的二维膨胀操作通过扫描原图,找到像素值为0的点并将选择好的结构原点移动到该点,判断该立体结构元素所覆盖范围内的像素值是否至少存在一个像素值为1的点,如果存在,该点的像素值膨胀为1,如果立体结构元素所覆盖范围内像素值全为0,则该点不进行膨胀处理保持不变,遍历原图中其他的像素值为0的点,重复以上操作完成膨胀。
3.在二维场景中膨胀有着广泛的应用,是形态学图像处理中不可缺少的基本操作,可以通过膨胀处理来填充二维图像中的空洞部分,将空洞部分中的像素点与周围的像素点重新连接起来以完善图像的形状,膨胀操作可以使物体的边界向外蔓延,从而扩大物体的区域,这在图像分割、目标检测和形态学重建等任务中经常被用来扩大和增强物体的边界,还可以通过膨胀操作来去除图像中的小尺寸噪声,即通过立体结构元素对图像中的噪声进行膨胀,使其连接成较大的连通域然后再进行腐蚀操作以去除噪声。
4.但是,在膨胀过程中会存在模型的不同部分相互重叠或交叉的自相交情况,这可能导致模型的几何形状不准确造成模型的失真或无效的结果,自相交问题通常在模型形状复杂或存在尖端、凸起的情况下更加容易发生。


技术实现要素:

5.本技术实施例提供了一种基于三维形态学的模型膨胀方法、装置及应用,可以通过先将模型体素化再膨胀的方式来避免模型膨胀过程中出现的自相交问题。
6.第一方面,本技术实施例提供了一种基于三维形态学的模型膨胀方法,所述方法包括:
7.获取待膨胀模型,构建包围盒将所述待膨胀模型包围,并以固定大小的体素对所述包围盒进行采样得到体素集合;
8.将体素集合中的每一体素根据三维坐标保存到原始三维数组中,识别所述待膨胀模型内的每一三角面片,并将所述原始三维数组中所有包含三角面片的体素值记为1,不包含三角面片的体素值记为0得到模型体素三维数组;
9.设置相较于原始三维数组膨胀的膨胀三维数组,将模型体素三维数组中所有体素根据三维坐标复制到膨胀三维数组中,定义由多个体素构建的立体结构元,使用所述立体结构元的中心体素依次遍历所述膨胀三维数组中的每一体素,遍历过程中若立体结构元所覆盖范围内的体素全部为0,则被遍历体素保持不变,若立体结构元所覆盖范围内至少存在一体素值为1的体素,则将被遍历体素的体素值设定为1进行膨胀,所述被遍历体素为与立
体结构元中心体素重合的体素;
10.实时计算所述膨胀三维数组的膨胀系数,若所述膨胀三维数组的膨胀系数大于等于膨胀阈值则停止膨胀,并基于膨胀三维数组进行模型重建得到待膨胀模型的膨胀结果。
11.第二方面,本技术实施例提供了一种基于三维形态学的模型膨胀装置,包括:
12.获取模块:获取待膨胀模型,构建包围盒将所述待膨胀模型包围,并以固定大小的体素对所述包围盒进行采样得到体素集合;
13.定义模块:将体素集合中的每一体素根据三维坐标保存到原始三维数组中,识别所述待膨胀模型内的每一三角面片,并将所述原始三维数组中所有包含三角面片的体素值记为1,不包含三角面片的体素值记为0得到模型体素三维数组;
14.膨胀模块:设置相较于原始三维数组膨胀的膨胀三维数组,将模型体素三维数组中所有体素根据三维坐标复制到膨胀三维数组中,定义由多个体素构建的立体结构元,使用所述立体结构元的中心体素依次遍历所述膨胀三维数组中的每一体素,遍历过程中若立体结构元所覆盖范围内的体素全部为0,则被遍历体素保持不变,若立体结构元所覆盖范围内至少存在一体素值为1的体素,则将被遍历体素的体素值设定为1进行膨胀,所述被遍历体素为与立体结构元中心体素重合的体素;
15.重建模块:实时计算所述膨胀三维数组的膨胀系数,若所述膨胀三维数组的膨胀系数大于等于膨胀阈值则停止膨胀,并基于膨胀三维数组进行模型重建得到待膨胀模型的膨胀结果。
16.第三方面,本技术实施例提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行一种基于三维形态学的模型膨胀方法。
17.第四方面,本技术实施例提供了一种可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序包括用于控制过程以执行过程的程序代码,所述过程包括根据一种基于三维形态学的模型膨胀方法。
18.本发明的主要贡献和创新点如下:
19.本技术实施例通过构建包围盒来将待膨胀模型包围,并定义固定大小的体素来进行采样从而使得待膨胀模型体素化,将待膨胀模型体素化后可以准确地表示模型的形状,并且不存在曲面或边缘相交的情况;
20.本方案通过对体素进行膨胀操作,并通过增加邻近体素来改变模型的形状从而解决自相交问题,膨胀操作可以增加体素之间的间隙,使得模型的曲面或边缘在离散空间中保持分离,并且不再相交;
21.本方案采用轴包围盒进行体素化,轴包围盒体素化可以利用轴对齐的包围盒来表示整个场景或模型的范围。这样,只需要存储包围盒的最小和最大坐标,不需要存储每个具体的体素状态,因此内存占用较小;轴包围盒体素化仅需要对整个包围盒进行均匀划分,而不需要进行复杂的递归判断和分割,因此构建时间较短;由于轴包围盒体素化是根据整个包围盒进行简单均匀划分的,查询特定体素所处的位置只需要根据体素的空间坐标进行简单计算,因此查询时间较短。
22.本技术的一个或多个实施例的细节在以下附图和描述中提出,以使本技术的其他特征、目的和优点更加简明易懂。
附图说明
23.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
24.图1是根据本技术实施例的一种基于三维形态学的模型膨胀方法的流程图;
25.图2是根据本技术实施例的一种包围盒包围待膨胀模型的示意图;
26.图3是根据本技术实施例的原始三维数组的示意图;
27.图4是根据本技术实施例的膨胀三维数组的示意图;
28.图5是根据本技术实施例的立体结构元示意图;
29.图6是根据本技术实施例的一种基于三维形态学的模型膨胀装置的结构框图;
30.图7是根据本技术实施例的电子装置的硬件结构示意图。
具体实施方式
31.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
32.需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
33.实施例一
34.本技术实施例提供了一种基于三维形态学的模型膨胀方法,具体地,参考图1,所述方法包括:
35.获取待膨胀模型,构建包围盒将所述待膨胀模型包围,并以固定大小的体素对所述包围盒进行采样得到体素集合;
36.将体素集合中的每一体素根据三维坐标保存到原始三维数组中,识别所述待膨胀模型内的每一三角面片,并将所述原始三维数组中所有包含三角面片的体素值记为1,不包含三角面片的体素值记为0得到模型体素三维数组;
37.设置相较于原始三维数组膨胀的膨胀三维数组,将模型体素三维数组中所有体素根据三维坐标复制到膨胀三维数组中,定义由多个体素构建的立体结构元,使用所述立体结构元的中心体素依次遍历所述膨胀三维数组中的每一体素,遍历过程中若立体结构元所覆盖范围内的体素全部为0,则被遍历体素保持不变,若立体结构元所覆盖范围内至少存在一体素值为1的体素,则将被遍历体素的体素值设定为1进行膨胀,所述被遍历体素为与立体结构元中心体素重合的体素;
38.实时计算所述膨胀三维数组的膨胀系数,若所述膨胀三维数组的膨胀系数大于等于膨胀阈值则停止膨胀,并基于膨胀三维数组进行模型重建得到待膨胀模型的膨胀结果。
39.在本方案中,在“构建包围盒将所述待膨胀模型包围”步骤中,定义一个三维坐标
系,使用所述待膨胀模型在三维坐标系中每一维度坐标的最大值和最小值来构建包围盒。
40.具体的,如图2所示,本方案使用aabb包围盒(axis-aligned bounding box)将所述待膨胀模型包围起来,通过对所述待膨胀模型中的所有顶点进行扫描得到三维坐标系中每一维度坐标的最大值与最小值分别为xmin、xmax、ymin、ymax、zmin、zmax,通过这些最大值与最小值构建包围盒可以精准的将所述带膨胀包围盒进行包围。
41.具体的,所述包围盒为轴对齐包围盒,在本方案中的包围盒为长方体包围盒,使用轴对齐包围盒来包围待膨胀模型的好处为:
42.1.内存占用较小:轴包围盒体素化可以利用轴对齐的包围盒来表示整个场景或模型的范围。这样,只需要存储包围盒的最小和最大坐标,不需要存储每个具体的体素状态,因此内存占用较小;
43.2.构建时间较短:轴包围盒体素化仅需要对整个包围盒进行均匀划分,而不需要进行复杂的递归判断和分割,因此构建时间较短。
44.3.查询时间较短:由于轴包围盒体素化是根据整个包围盒进行简单均匀划分的,查询特定体素所处的位置只需要根据体素的空间坐标进行简单计算,因此查询时间较短。
45.具体的,假设体素的固定大小为n*n*n,则使用固定大小的体素在包围盒内进行均匀的采样得到体素集合,所述体素集合是用离散的网格来表示包围盒内的每一部分,这样做的好处是方便后续的处理。
46.在“将体素集合中的每一体素根据三维坐标保存到原始三维数组中”步骤中,以所述待膨胀模型在三维坐标系中其中一维的最大值与最小值的差值和体素大小来决定原始三维数组的大小。
47.具体的,所述原始三维数组如图3所示,记所述待膨胀模型在三维坐标系中x轴的最大值为xmax,最小值为xmin,体素大小为n*n*n,则原始三维数组的大小为:
48.((xmax-xmin)/n)
×
((xmax-xmin)/n)
×
((xmax-xmmin)/n)定义原始三维数组来保存包围盒中的所有体素可以方便随机读取与后续的计算。
49.在“识别所述待膨胀模型内的每一三角面片”步骤中,获取所述待膨胀模型中每一三角面片在原始三维数组中的位置,获取每一三角面片的至少一邻近体素,计算每一三角面片与对应的每一邻近体素中心点的邻近距离,若最短的邻近距离小于设定距离,则认为最短的邻近距离对应的邻近体素包含三角面片。
50.在“计算每一三角面片与对应的每一邻近体素中心点的邻近距离”步骤中,获取三角面片的三个顶点坐标,使用三角面片的三个顶点坐标计算三角面片的法向量,获取邻近体素的中心点坐标,计算三角面片的法向量与对应邻近体素中心点坐标的内积得到中心点坐标到三角面片的有向距离,使用中心点坐标减去有向距离与三角面片法向量的乘积得到垂足点坐标,若所述垂足点在三角面片内则邻近体素与三角面片的邻近距离为邻近体素中心点到垂足点的距离,若所述垂足点不在三角面片内,则获取垂足点与三角面片的最短直线,使用最短直线与有向距离构成一个直角三角形,直角三角形的斜边为邻近体素与三角面片的邻近距离。
51.在一些具体实施例中,要想计算每一三角面片与对应的每一邻近体素中心点的邻近距离,要先通过以下步骤计算邻近体素中心点在三角面片所在平面的垂足点p1:
52.1、确定三角面片的三个顶点坐标,假设分别为a(x1,y1,z1),b(x2,y2,z2),c(x3,
y3,z3)。
53.2、计算三角面片的法向量,该法向量可以通过以下公式计算:n=(ab
×
ac),其中n为法向量,
×
表示向量的叉积运算,ab表示从点a指向点b的向量,ac表示从点a指向点c的向量。
54.3、将邻近体素中心点p(x,y,z)与三角面片法向量n进行内积运算得到点p到三角面片的有向距离d=n
·
p。
55.4、根据q=p-d*n计算垂足点的坐标,p为邻近体素中心点,d为点p到三角面片的有向距离,n为三角面片的法向量。
56.根据垂足点的坐标来计算得到每一邻近体素中心点与对应三角面片的邻近距离。
57.具体的,通过垂足点来判断哪个体素是包含三角面片的体素可以在原始三维数组集合中精确的找到包含三角面片的体素,方面后续进行膨胀。
58.在“设置相较于原始三维数组膨胀的膨胀三维数组,将模型体素三维数组中所有体素根据三维坐标复制到膨胀三维数组中”步骤中,膨胀三维数组的边界相较于原始三维数组的边界向外膨胀,把模型体素三维数组中的体素复制到膨胀三维数组后将膨胀三维数组中剩余体素位置的体素值设置为0。
59.在本方案中,膨胀三维数组的边界相较于原始三维数组的边界向外膨胀的膨胀程度正相关于立体结构元的立体尺寸。
60.具体的,膨胀三维数组的如图4所示,由于本方案的目的是对待膨胀模型进行膨胀,所以在膨胀之前要对原始三维数组进行扩大。
61.具体的,在本方案中所述膨胀三维数组的长宽高相交与原始三维数组均扩大了两个单位大小。
62.本方案所使用的立体结构元如图5所示,立体结构元为3
×3×
3的立方体立体结构元,所述立体结构元的8个顶点所在体素为0,其他19个体素都是1,也就是图5中的黑色部分为0,白色部分为1,这样设置的好处在于所述立体结构元适用于不同方向和形状的待膨胀模型,而且在进行膨胀操作时,对角线方向上的膨胀会与水平和垂直方向上的膨胀保持一致,保持待膨胀模型的整体对称性。
63.具体的,使用立体结构元的中心体素依次遍历所述膨胀三维数组进行膨胀,其膨胀过程用以下公式进行表示:
[0064][0065]
其中,b为立体结构元,a为待膨胀模型,该公式表示将立体结构元b的中心体素平移到待膨胀模型的(x,y,z)位置。
[0066]
示例性的,立体结构元是一个立方体,立体结构元的中心体素遍历每一个体素,立体结构元会覆盖以该体素为中心的27个体素,如果立体结构元为1的19个网格所对应的体素中体素值至少有一个为1,则被遍历的那个体素的体素值膨胀为1,否则保持不变。
[0067]
在“实时计算所述膨胀三维数组的膨胀系数,若所述膨胀三维数组的膨胀系数大于等于膨胀阈值则停止膨胀”步骤中,将所述膨胀后膨胀三维数组与膨胀前膨胀三维数组的比值乘以最大膨胀倍数的倒数作为膨胀系数。
[0068]
示例性的,本方案中的最大膨胀倍数设置为3,在膨胀系数的计算公式为:
[0069][0070]
其中,最大膨胀倍数的倒数为1/3,q为膨胀后膨胀三维数组,p为膨胀前三维数组。
[0071]
具体的,本方案通过定义膨胀阈值的方式来控制膨胀的大小。
[0072]
在一些具体实施例中,本方案使用meshing cubes算法基于膨胀三维数组进行模型重建的步骤如下:
[0073]
1、设置等值面数值,将膨胀三维数组中每一体素的顶点数值与等值面数值进行比较判断得到顶点状态表,所述顶点状态表表示每一体素的顶点在等值面内或等值面外;
[0074]
2、通过顶点状态表找出与等值面相交的体素边,并通过线性插值发来计算相交点的坐标;
[0075]
3、通过中心差分法计算体素八个顶点的法向量,再通过线性插值得到每个三角面片各个顶点的法向量;
[0076]
4、使用每一体素的顶点坐标和法向量连接三角面片得到等值面的三角形网格。
[0077]
具体的,生成的三角形网格可能包含不合理的拓扑结构、表面缺陷和过度细分等问题,所以需要对其进行优化处理,优化处理的过程包括拓扑优化、表面光滑和去除不需要的三角形等操作,以提高网格的质量和可视化效果。
[0078]
具体的,将优化后的网格进行渲染和可视化来完成模型的重建,在本方案中可以使用3d渲染引擎或者其他可视化工具来展示重建的模型。
[0079]
实施例二
[0080]
基于相同的构思,参考图6,本技术还提出了一种基于三维形态学的模型膨胀装置,包括:
[0081]
获取模块:获取待膨胀模型,构建包围盒将所述待膨胀模型包围,并以固定大小的体素对所述包围盒进行采样得到体素集合;
[0082]
定义模块:将体素集合中的每一体素根据三维坐标保存到原始三维数组中,识别所述待膨胀模型内的每一三角面片,并将所述原始三维数组中所有包含三角面片的体素值记为1,不包含三角面片的体素值记为0得到模型体素三维数组;
[0083]
膨胀模块:设置相较于原始三维数组膨胀的膨胀三维数组,将模型体素三维数组中所有体素根据三维坐标复制到膨胀三维数组中,定义由多个体素构建的立体结构元,使用所述立体结构元的中心体素依次遍历所述膨胀三维数组中的每一体素,遍历过程中若立体结构元所覆盖范围内的体素全部为0,则被遍历体素保持不变,若立体结构元所覆盖范围内至少存在一体素值为1的体素,则将被遍历体素的体素值设定为1进行膨胀,所述被遍历体素为与立体结构元中心体素重合的体素;
[0084]
重建模块:实时计算所述膨胀三维数组的膨胀系数,若所述膨胀三维数组的膨胀系数大于等于膨胀阈值则停止膨胀,并基于膨胀三维数组进行模型重建得到待膨胀模型的膨胀结果。
[0085]
实施例三
[0086]
本实施例还提供了一种电子装置,参考图7,包括存储器404和处理器402,该存储器404中存储有计算机程序,该处理器402被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
[0087]
具体地,上述处理器402可以包括中央处理器(cpu),或者特定集成电路(applicationspecificintegratedcircuit,简称为asic),或者可以被配置成实施本技术实施例的一个或多个集成电路。
[0088]
其中,存储器404可以包括用于数据或指令的大容量存储器404。举例来说而非限制,存储器404可包括硬盘驱动器(harddiskdrive,简称为hdd)、软盘驱动器、固态驱动器(solidstatedrive,简称为ssd)、闪存、光盘、磁光盘、磁带或通用串行总线(universalserialbus,简称为usb)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器404可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器404可在数据处理装置的内部或外部。在特定实施例中,存储器404是非易失性(non-volatile)存储器。在特定实施例中,存储器404包括只读存储器(read-onlymemory,简称为rom)和随机存取存储器(randomaccessmemory,简称为ram)。在合适的情况下,该rom可以是掩模编程的rom、可编程rom(programmableread-onlymemory,简称为prom)、可擦除prom(erasableprogrammableread-onlymemory,简称为eprom)、电可擦除prom(electricallyerasableprogrammableread-onlymemory,简称为eeprom)、电可改写rom(electricallyalterableread-onlymemory,简称为earom)或闪存(flash)或者两个或更多个以上这些的组合。在合适的情况下,该ram可以是静态随机存取存储器(staticrandom-accessmemory,简称为sram)或动态随机存取存储器(dynamicrandomaccessmemory,简称为dram),其中,dram可以是快速页模式动态随机存取存储器404(fastpagemodedynamicrandomaccessmemory,简称为fpmdram)、扩展数据输出动态随机存取存储器(extendeddateoutdynamicrandomaccessmemory,简称为edodram)、同步动态随机存取内存(synchronousdynamicrandom-accessmemory,简称sdram)等。
[0089]
存储器404可以用来存储或者缓存需要处理和/或通信使用的各种数据文件,以及处理器402所执行的可能的计算机程序指令。
[0090]
处理器402通过读取并执行存储器404中存储的计算机程序指令,以实现上述实施例中的任意一种基于三维形态学的模型膨胀方法。
[0091]
可选地,上述电子装置还可以包括传输设备406以及输入输出设备408,其中,该传输设备406和上述处理器402连接,该输入输出设备408和上述处理器402连接。
[0092]
传输设备406可以用来经由一个网络接收或者发送数据。上述的网络具体实例可包括电子装置的通信供应商提供的有线或无线网络。在一个实例中,传输设备包括一个网络适配器(network interface controller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备406可以为射频(radio frequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。
[0093]
输入输出设备408用于输入或输出信息。在本实施例中,输入的信息可以是待膨胀模型、立体结构元等,输出的信息可以是膨胀结果等。
[0094]
可选地,在本实施例中,上述处理器402可以被设置为通过计算机程序执行以下步骤:
[0095]
s101、获取待膨胀模型,构建包围盒将所述待膨胀模型包围,并以固定大小的体素对所述包围盒进行采样得到体素集合;
[0096]
s102、将体素集合中的每一体素根据三维坐标保存到原始三维数组中,识别所述
待膨胀模型内的每一三角面片,并将所述原始三维数组中所有包含三角面片的体素值记为1,不包含三角面片的体素值记为0得到模型体素三维数组;
[0097]
s103、设置相较于原始三维数组膨胀的膨胀三维数组,将模型体素三维数组中所有体素根据三维坐标复制到膨胀三维数组中,定义由多个体素构建的立体结构元,使用所述立体结构元的中心体素依次遍历所述膨胀三维数组中的每一体素,遍历过程中若立体结构元所覆盖范围内的体素全部为0,则被遍历体素保持不变,若立体结构元所覆盖范围内至少存在一体素值为1的体素,则将被遍历体素的体素值设定为1进行膨胀,所述被遍历体素为与立体结构元中心体素重合的体素;
[0098]
s104、实时计算所述膨胀三维数组的膨胀系数,若所述膨胀三维数组的膨胀系数大于等于膨胀阈值则停止膨胀,并基于膨胀三维数组进行模型重建得到待膨胀模型的膨胀结果。
[0099]
需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
[0100]
通常,各种实施例可以以硬件或专用电路、软件、逻辑或其任何组合来实现。本发明的一些方面可以以硬件来实现,而其他方面可以以可以由控制器、微处理器或其他计算设备执行的固件或软件来实现,但是本发明不限于此。尽管本发明的各个方面可以被示出和描述为框图、流程图或使用一些其他图形表示,但是应当理解,作为非限制性示例,本文中描述的这些框、装置、系统、技术或方法可以以硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备或其某种组合来实现。
[0101]
本发明的实施例可以由计算机软件来实现,该计算机软件由移动设备的数据处理器诸如在处理器实体中可执行,或者由硬件来实现,或者由软件和硬件的组合来实现。包括软件例程、小程序和/或宏的计算机软件或程序(也称为程序产品)可以存储在任何装置可读数据存储介质中,并且它们包括用于执行特定任务的程序指令。计算机程序产品可以包括当程序运行时被配置为执行实施例的一个或多个计算机可执行组件。一个或多个计算机可执行组件可以是至少一个软件代码或其一部分。另外,在这一点上,应当注意,如图7中的逻辑流程的任何框可以表示程序步骤、或者互连的逻辑电路、框和功能、或者程序步骤和逻辑电路、框和功能的组合。软件可以存储在诸如存储器芯片或在处理器内实现的存储块等物理介质、诸如硬盘或软盘等磁性介质、以及诸如例如dvd及其数据变体、cd等光学介质上。物理介质是非瞬态介质。
[0102]
本领域的技术人员应该明白,以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0103]
以上实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。

技术特征:
1.一种基于三维形态学的模型膨胀方法,其特征在于,包括以下步骤:获取待膨胀模型,构建包围盒将所述待膨胀模型包围,并以固定大小的体素对所述包围盒进行采样得到体素集合;将体素集合中的每一体素根据三维坐标保存到原始三维数组中,识别所述待膨胀模型内的每一三角面片,并将所述原始三维数组中所有包含三角面片的体素值记为1,不包含三角面片的体素值记为0得到模型体素三维数组;设置相较于原始三维数组膨胀的膨胀三维数组,将模型体素三维数组中所有体素根据三维坐标复制到膨胀三维数组中,定义由多个体素构建的立体结构元,使用所述立体结构元的中心体素依次遍历所述膨胀三维数组中的每一体素,遍历过程中若立体结构元所覆盖范围内的体素全部为0,则被遍历体素保持不变,若立体结构元所覆盖范围内至少存在一体素值为1的体素,则将被遍历体素的体素值设定为1进行膨胀,所述被遍历体素为与立体结构元中心体素重合的体素;实时计算所述膨胀三维数组的膨胀系数,若所述膨胀三维数组的膨胀系数大于等于膨胀阈值则停止膨胀,并基于膨胀三维数组进行模型重建得到待膨胀模型的膨胀结果。2.根据权利要求1所述的一种基于三维形态学的模型膨胀方法,其特征在于,在“构建包围盒将所述待膨胀模型包围”步骤中,定义一个三维坐标系,使用所述待膨胀模型在三维坐标系中每一维度坐标的最大值和最小值来构建包围盒。3.根据权利要求1所述的一种基于三维形态学的模型膨胀方法,其特征在于,在“识别所述待膨胀模型内的每一三角面片”步骤中,获取所述待膨胀模型中每一三角面片在原始三维数组中的位置,获取每一三角面片的至少一邻近体素,计算每一三角面片与对应的每一邻近体素中心点的邻近距离,若最短的邻近距离小于设定距离,则认为最短的邻近距离对应的邻近体素包含三角面片。4.根据权利要求3所述的一种基于三维形态学的模型膨胀方法,其特征在于,在“计算每一三角面片与对应的每一邻近体素中心点的邻近距离”步骤中,获取三角面片的三个顶点坐标,使用三角面片的三个顶点坐标计算三角面片的法向量,获取邻近体素的中心点坐标,计算三角面片的法向量与对应邻近体素中心点坐标的内积得到中心点坐标到三角面片的有向距离,使用中心点坐标减去有向距离与三角面片法向量的乘积得到垂足点坐标,若所述垂足点在三角面片内则邻近体素与三角面片的邻近距离为邻近体素中心点到垂足点的距离,若所述垂足点不在三角面片内,则获取垂足点与三角面片的最短直线,使用最短直线与有向距离构成一个直角三角形,直角三角形的斜边为邻近体素与三角面片的邻近距离。5.根据权利要求1所述的一种基于三维形态学的模型膨胀方法,其特征在于,在“设置相较于原始三维数组膨胀的膨胀三维数组,将模型体素三维数组中所有体素根据三维坐标复制到膨胀三维数组中”步骤中,膨胀三维数组的边界相较于原始三维数组的边界向外膨胀,在将模型体素三维数组中的体素复制到膨胀三维数组后将膨胀三维数组中剩余体素位置的体素值设置为0。6.根据权利要求1所述的一种基于三维形态学的模型膨胀方法,其特征在于,膨胀三维数组的边界相较于原始三维数组的边界向外膨胀的膨胀程度正相关于立体结构元的立体尺寸。
7.根据权利要求1所述的一种基于三维形态学的模型膨胀方法,其特征在于,在“实时计算所述膨胀三维数组的膨胀系数,若所述膨胀三维数组的膨胀系数大于等于膨胀阈值则停止膨胀”步骤中,将所述膨胀后膨胀三维数组与膨胀前膨胀三维数组的比值乘以最大膨胀倍数的倒数作为膨胀系数。8.一种基于三维形态学的模型膨胀装置,其特征在于,包括:获取模块:获取待膨胀模型,构建包围盒将所述待膨胀模型包围,并以固定大小的体素对所述包围盒进行采样得到体素集合;定义模块:将体素集合中的每一体素根据三维坐标保存到原始三维数组中,识别所述待膨胀模型内的每一三角面片,并将所述原始三维数组中所有包含三角面片的体素值记为1,不包含三角面片的体素值记为0得到模型体素三维数组;膨胀模块:设置相较于原始三维数组膨胀的膨胀三维数组,将模型体素三维数组中所有体素根据三维坐标复制到膨胀三维数组中,定义由多个体素构建的立体结构元,使用所述立体结构元的中心体素依次遍历所述膨胀三维数组中的每一体素,遍历过程中若立体结构元所覆盖范围内的体素全部为0,则被遍历体素保持不变,若立体结构元所覆盖范围内至少存在一体素值为1的体素,则将被遍历体素的体素值设定为1进行膨胀,所述被遍历体素为与立体结构元中心体素重合的体素;重建模块:实时计算所述膨胀三维数组的膨胀系数,若所述膨胀三维数组的膨胀系数大于等于膨胀阈值则停止膨胀,并基于膨胀三维数组进行模型重建得到待膨胀模型的膨胀结果。9.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1-7任一所述的一种基于三维形态学的模型膨胀方法。10.一种可读存储介质,其特征在于,所述可读存储介质中存储有计算机程序,所述计算机程序包括用于控制过程以执行过程的程序代码,所述过程包括根据权利要求1-7任一所述的一种基于三维形态学的模型膨胀方法。

技术总结
本申请提出了一种基于三维形态学的模型膨胀方法、装置及应用,包括以下步骤:构建包围盒围绕待膨胀模型,对其进行采样得到固定大小的体素集合;将体素集合保存到原始三维数组,并计算每个体素与其三角面片邻近体素中心点的距离,若最短邻近距离小于设定距离,则认为邻近体素包含三角面片将其标记为1,否则为0;使用立体结构元遍历膨胀三维数组,计算膨胀系数,若大于膨胀阈值则停止膨胀;基于膨胀三维数组进行模型重建,得到待膨胀模型的膨胀结果。本方案可以将模型体素化后进行膨胀来改变模型的形状解决膨胀过程中的自相交问题。模型的形状解决膨胀过程中的自相交问题。模型的形状解决膨胀过程中的自相交问题。


技术研发人员:蔡林凯
受保护的技术使用者:杭州雅智医疗技术有限公司
技术研发日:2023.07.28
技术公布日:2023/10/11
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐