gpt4 book ai didi

python - 使用 ndimage.maximum_filter 和 skimage.peak_local_max 查找图像峰值

转载 作者:行者123 更新时间:2023-12-03 19:29:12 24 4
gpt4 key购买 nike

我试图找到给定图像的一些相对最大值。我知道有两种可能的方法,第一种是使用 scipy.ndimage.maximum_filter()第二个使用 skimage.feature.peak_local_max() .

为了比较这两种方法,我修改了 skimage shown here 中的一个示例。为了比较发现的峰值。

from scipy import ndimage as ndi
import matplotlib.pyplot as plt
from skimage.feature import peak_local_max
from skimage import data, img_as_float

im = img_as_float(data.coins())

# use ndimage to find the coordinates of maximum peaks
image_max = ndi.maximum_filter(im, size=20) == im

j, i = np.where(image_max)
coordinates_2 = np.array(zip(i,j))

# use skimage to find the coordinates of local maxima
coordinates = peak_local_max(im, min_distance=20)

# display results
fig, axes = plt.subplots(1, 2, figsize=(8, 3), sharex=True, sharey=True)
ax = axes.ravel()

ax[0].imshow(im, cmap=plt.cm.gray)
ax[0].plot(coordinates_2[:, 0], coordinates_2[:, 1], 'r.')
ax[0].axis('off')
ax[0].set_title('Maximum filter')

ax[1].imshow(im, cmap=plt.cm.gray)
ax[1].autoscale(False)
ax[1].plot(coordinates[:, 1], coordinates[:, 0], 'r.')
ax[1].axis('off')
ax[1].set_title('Peak local max')

fig.tight_layout()

plt.show()

这给出了每种方法的下一个峰值:
image

我知道参数 sizemaximum_filter不等同于 min_distance来自 peak_local_max ,但我想知道是否有一种方法可以给出相同的结果。那可能吗?

关于stackoverflow的一些相关问题是:

Get coordinates of local maxima in 2D array above certain value

Peak detection in a 2D array

最佳答案

你能想出一个解决方案吗?
我认为朝着方向迈出的一步只是设置 size=41在最大过滤器中。
这给了我相当相似但不完全相同的结果。
这背后的想法是peak_local_max2 * min_distance + 1 指定的区域中寻找峰值(来源:Documentation)。
大多数附加峰由 ndi.maximum_filter 识别靠近边界,但在图片中间还有两个额外的峰(额外的峰用蓝色标记)。
Peaks
假设 peak_local_max使用一些逻辑来剥离边界峰和靠近其他峰的峰。最有可能基于峰值的值。

关于python - 使用 ndimage.maximum_filter 和 skimage.peak_local_max 查找图像峰值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56148387/

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