gpt4 book ai didi

Python:填充空心物体

转载 作者:行者123 更新时间:2023-11-28 20:26:32 25 4
gpt4 key购买 nike

我正在编写一个脚本来计算任何随机形状的 3D 对象的体积。我不在乎物体是否是空心的,我需要计算它的总体积。我拥有的数据模型是一个带有 1 和 0 的 3D 表(像素直方图)。那些显然是对象所在的地方,零是我们什么都没有的地方。要计算填充良好的对象的体积,只需将包含一个的所有像素相加并乘以像素体积即可。另一方面,主要的困难仍然存在于我们有一个空心物体的地方,所以我们的零被一包围。因此,应用我在此描述的直接方法不再有效。我们需要做的是用一个填充所有的对象区域。这是一个二维示例,因此您可以理解我的意思

二维表:

0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 1 1 1 1 1 1 0 0 0
0 0 1 1 0 0 0 1 1 1 0 0
0 0 0 1 0 0 1 0 0 0 0 0
0 0 1 0 0 0 0 1 0 0 0 0
0 0 1 0 0 0 0 1 0 0 0 0
0 0 1 1 1 1 1 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0

我需要把它改成这样

0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 1 1 1 1 1 1 0 0 0
0 0 1 1 1 1 1 1 1 1 0 0
0 0 0 1 1 1 1 0 0 0 0 0
0 0 1 1 1 1 1 1 0 0 0 0
0 0 1 1 1 1 1 1 0 0 0 0
0 0 1 1 1 1 1 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0

最佳答案

如果您使用 scipy你可以在一行中使用 binary_fill_holes 来做到这一点. 这适用于 n 维。以您的示例:

import numpy as np
from scipy import ndimage
shape=np.array([
[0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,1,1,1,1,1,1,0,0,0],
[0,0,1,1,0,0,0,1,1,1,0,0],
[0,0,0,1,0,0,1,0,0,0,0,0],
[0,0,1,0,0,0,0,1,0,0,0,0],
[0,0,1,0,0,0,0,1,0,0,0,0],
[0,0,1,1,1,1,1,1,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0]
])
shape[ndimage.binary_fill_holes(shape)] = 1
#Output:
[[0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 1 1 1 1 1 1 0 0 0]
[0 0 1 1 1 1 1 1 1 1 0 0]
[0 0 0 1 1 1 1 0 0 0 0 0]
[0 0 1 1 1 1 1 1 0 0 0 0]
[0 0 1 1 1 1 1 1 0 0 0 0]
[0 0 1 1 1 1 1 1 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0]]

关于Python:填充空心物体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11376381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com