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

到目前为止,我已经使用skimage.feature.peak_local_max来找到热图中的局部峰,它工作得很好。
现在,我想运行模板匹配不同的旋转模板,这将给我几个热图。就像这样:

我把这些图像叠加在一起,以创建一个3D数组,现在我想找到当地社区中的最高值。例如,邻域定义为15像素宽和高(但包括所有旋转)。
三维阵列是形状(高度,宽度,旋转)。Z轴对应于模板的旋转.
编辑:--我自己找到了一个解决方案(带有markuscosinus的有用评论),并将在这里发布这篇文章,以防有人遇到同样的问题:
我查看了scipy.ndimage.filters.maximum_filter的实现(可以找到这里 )。我稍微抽动了代码以处理数据形状,并使用了footprint = np.ones((size_neighborhood, size_neighborhood, nr_rotations))。
发布于 2019-02-25 10:57:35
实现这一目标的一种方法是:
skimage.feature.peak_local_max查找每个旋转的局部最大值m在(x,y,z),检查是否在附近找到了其他人。最简单的情况是检查街角(x-n,y-n,y-n)和(x+n,y+n,y+n)的邻域立方体,其中n是邻域大小。如果有一些在附近,只保留最大的。我知道,这在效率上不是很令人高兴,但如果你没有太多或太大的图片,它应该可以完成任务:)
发布于 2019-02-25 11:21:08
我自己找到了一个解决方案(带有markuscosinus的有益评论),并将在这里发布这篇文章,以防任何人有同样的问题:
我查看了scipy.ndimage.filters.maximum_filter的实现(可以找到这里 )。我稍微抽动了代码以处理数据形状,并使用了footprint = np.ones((size_neighborhood, size_neighborhood, nr_rotations))。
https://stackoverflow.com/questions/54864066
复制相似问题