gpt4 book ai didi

python - 使用 scikit-image 搜索所有模板

转载 作者:行者123 更新时间:2023-11-28 21:38:02 25 4
gpt4 key购买 nike

我正在尝试遵循 scikit-image 中有关模板匹配的教程(检查 here )。 Themplate matching

仅使用此示例,我想在图像中找到所有匹配的硬币(最大值),而不仅仅是给出最高分的硬币。我在考虑使用:

maxima = argrelextrema(result, np.greater)

但问题是它也发现了非常小的局部最大值,这只是一个噪音。有没有办法筛选 numpy 数组并找到最强的最大值?谢谢!

最佳答案

要找到 documentation 中的所有硬币建议 “...你应该使用适当的寻峰功能。” 其中最简单的可能是 peak_local_max(如评论中所建议),它也来自 skimage,并有一个手册页 here .在 *args 中使用一些合理的数字可以从响应图像中获取峰值。

关于峰被置换的第二条评论也在 documentation 中讨论。

“请注意,match_template 输出中的峰值对应于模板的原点(即左上角)。”

可以手动对此进行校正(通过将峰平移到模板的边长),或者您可以将 pad_input bool 值设置为 True(source ),作为副产品,这意味着响应函数中的峰值在最大重叠点与模板中心对齐。

将这两个位组合成一个脚本,我们得到如下内容:

import numpy as np
import matplotlib.pyplot as plt

from skimage import data
from skimage.feature import match_template
from skimage.feature import peak_local_max # new import!

image = data.coins()
coin = image[170:220, 75:130]

result = match_template(image, coin,pad_input=True) #added the pad_input bool

peaks = peak_local_max(result,min_distance=10,threshold_rel=0.5) # find our peaks

# produce a plot equivalent to the one in the docs
plt.imshow(result)
# highlight matched regions (plural)
plt.plot(peaks[:,1], peaks[:,0], 'o', markeredgecolor='r', markerfacecolor='none', markersize=10)

Outputted image of the code snippet above

关于python - 使用 scikit-image 搜索所有模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48732991/

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