python三维数组取第三位_从三维数组中提取三维立方体

在你的特殊情况下,我建议使用nImage.minimum_过滤器

假设您的数组名为“a”。以下内容:centers = ndimage.minimum_filter(a, 3, mode="constant")

只包含数组中包含这样的“真”框的值

然后你可以使用scipy.ndimage.测量。使用默认结构进行标记,以对框进行分类,并可能标识连接的框。你可以用nImage.measurements.find_对象在

编辑:

通过上面的方法,您将正确地获得数组中所有立方体的中心。说清楚,我想这就是你最初问题的答案。在评论中,事实证明,实际上只需要不重叠的立方体。因此,我们需要分析最小滤波器的输出,在这里我可以想象出许多方法。在

可以使用以下方法为每个群集仅获取一个多维数据集:

^{pr2}$

现在出现的问题是,没有重叠但共享一个面的立方体丢失。事实上,非共享立方体的结构相当复杂。当然,对于这个问题有几种解决方案(一组不重叠的立方体)。所以从找到的中心中选择一组立方体是一个全新的任务,我认为你必须找到一个最适合你的。在

一种方法是迭代所有解决方案,并将找到的每个多维数据集设置为False:get_starting_point = numpy.vectorize(lambda sl: sl.start) #to be applied on slices

s = ndimage.generate_binary_structure(3,3)

result = []

while True:

labels, num = ndimage.measurements.label(centers, s)

if not num:

break

locations = ndimage.measurements.find_objects(labels)

sp = get_starting_point(locations)

result.append(sp)

for p in sp:

centers[p[0]-1:p[0]+2, p[1]-1:p[1]+2, p[2]-1:p[2]+2] = False

numiter = len(results)

results = numpy.vstack(results)

我想只需要很少的迭代。在

我希望这就是你想要的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值