首页 > 解决方案 > 找到图像中的 pixel_maxima 并找到它的坐标以及峰值强度

问题描述

我有这个输入图像,我想找到像素最大值,它应该看起来像 image2。我尝试了轮廓但它不起作用。我也尝试了 scipy pixel_maxima 它没有给我作为 image2 的结果。这是代码,我已经参考了这个答案(获取二维数组中局部最大值的坐标高于某个值

import numpy as np
import scipy.misc
import scipy.ndimage as ndimage
import scipy.ndimage.filters as filters
import matplotlib.pyplot as plt
import imageio
from skimage.color import rgb2gray

fname = 'slice-0001-trim.jpg'
neighborhood_size = 10
threshold = 12


data = imageio.imread(fname,as_gray=True)

data_max = filters.maximum_filter(data, neighborhood_size)
maxima = (data == data_max)
data_min = filters.minimum_filter(data, neighborhood_size)
diff = ((data_max - data_min) > threshold)
maxima[diff == 0] = 0

labeled, num_objects = ndimage.label(maxima)
slices = ndimage.find_objects(labeled)
x, y = [], []
for dy,dx in slices:
    x_center = (dx.start + dx.stop - 1)/2
    x.append(x_center)
    y_center = (dy.start + dy.stop - 1)/2    
    y.append(y_center)

plt.imshow(data)
plt.savefig('sample.jpg', bbox_inches = 'tight')

plt.autoscale(False)
plt.plot(x,y, 'ro')
plt.savefig('result.png', bbox_inches = 'tight')

图像_1

我需要这张图片作为结果

图像_2

但是,我得到这个图像作为输出 在此处输入图像描述

标签: python-3.ximagescipy

解决方案


推荐阅读