首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:在3D数组中查找邻域中的最高值(图像堆栈)

Python:在3D数组中查找邻域中的最高值(图像堆栈)
EN

Stack Overflow用户
提问于 2019-02-25 10:25:40
回答 2查看 956关注 0票数 1

我使用模板匹配算法来检测目标图像中给定对象的实例。该算法生成的热图如下所示:

到目前为止,我已经使用skimage.feature.peak_local_max来找到热图中的局部峰,它工作得很好。

现在,我想运行模板匹配不同的旋转模板,这将给我几个热图。就像这样:

我把这些图像叠加在一起,以创建一个3D数组,现在我想找到当地社区中的最高值。例如,邻域定义为15像素宽和高(但包括所有旋转)。

三维阵列是形状(高度,宽度,旋转)。Z轴对应于模板的旋转.

编辑:--我自己找到了一个解决方案(带有markuscosinus的有用评论),并将在这里发布这篇文章,以防有人遇到同样的问题:

我查看了scipy.ndimage.filters.maximum_filter的实现(可以找到这里 )。我稍微抽动了代码以处理数据形状,并使用了footprint = np.ones((size_neighborhood, size_neighborhood, nr_rotations))

EN

回答 2

Stack Overflow用户

发布于 2019-02-25 10:57:35

实现这一目标的一种方法是:

  1. 使用skimage.feature.peak_local_max查找每个旋转的局部最大值
  2. 对于步骤1中发现的每一个最大m(x,y,z),检查是否在附近找到了其他人。最简单的情况是检查街角(x-n,y-n,y-n)(x+n,y+n,y+n)的邻域立方体,其中n是邻域大小。如果有一些在附近,只保留最大的。

我知道,这在效率上不是很令人高兴,但如果你没有太多或太大的图片,它应该可以完成任务:)

票数 1
EN

Stack Overflow用户

发布于 2019-02-25 11:21:08

我自己找到了一个解决方案(带有markuscosinus的有益评论),并将在这里发布这篇文章,以防任何人有同样的问题:

我查看了scipy.ndimage.filters.maximum_filter的实现(可以找到这里 )。我稍微抽动了代码以处理数据形状,并使用了footprint = np.ones((size_neighborhood, size_neighborhood, nr_rotations))

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54864066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档