gpt4 book ai didi

python - python中的非局部最大值抑制

转载 作者:太空宇宙 更新时间:2023-11-03 21:19:18 27 4
gpt4 key购买 nike

目标:输入图像(2d numpy 数组)和窗口大小,并输出相同的数组,保留局部最大值,但其他地方为 0。

我正在努力解决的问题:我认为我在我的代码中犯了一个愚蠢的错误,也许我的循环中有一些拼写错误但我不确定(局部最大值仅在图像,这是不正确的)。正如我在下面指出的那样,我也欢迎使用 OpenCV 或 numpy 的任何简单技巧来缩短此解决方案。

类似问题:Finding Local Maxima in an Image

Find local maxima in grayscale image using OpenCV

我的不同是因为:我希望抑制除局部最大值以外的所有值。我不必使用下面的代码,我无法找到 opencv 或 numpy 的内置函数来执行我需要的操作(cv 中的 harris corners 将隐式执行此操作作为步骤之一,但我需要一些东西来执行我需要的唯一操作)。我读了一些关于 dilate 的内容,但不确定它在这里是否也有用。

到目前为止我已经尝试过什么。

def nonMaximalSupress(image,NHoodSize):
#For
for x in range(0,image.shape[0]-1):

if x+NHoodSize[0]<image.shape[0]:
#while we can still take a square
#print "AHH ", image.shape
startWindow=0
for y in range(startWindow,image.shape[1]-NHoodSize[1]):
#try:
if np.sum(image[x:x+NHoodSize[0]][y:y+NHoodSize[1]])==0:
localMax=0
else:
localMax = np.amax(image[x:x+NHoodSize[0]][y:y+NHoodSize[1]])
#except ValueError:
#localMax=0
#print "local max is ", localMax

maxCoord=np.unravel_index(np.argmax((image[x:x+NHoodSize[0],y:y+NHoodSize[1]])),
image.shape)+np.array((x,y))

#print "X is %r, Y is %r, max coord is %r \n y+nhood is %r" %(x,y,maxCoord,y+NHoodSize[1])
#suppress everything
image[x:x+NHoodSize[0]][y:y+NHoodSize[1]]=0

#reset only the max
#print maxCoord
if localMax > 0:
print localMax
print "max coord is ", maxCoord[0], maxCoord[1]
image[maxCoord[0]][maxCoord[1]]=localMax
#increment y



x+=NHoodSize[0]

return image

最佳答案

这样的事情怎么样:

# Use the max filter to make a mask
roi = 3
size = 2 * roi + 1
image_max = ndimage.maximum_filter(image, size=size, mode='constant')
mask = (image == image_max)
image *= mask

# Remove the image borders
image[:roi] = 0
image[-roi:] = 0
image[:, :roi] = 0
image[:, -roi:] = 0

# Optionally find peaks above some threshold
image_t = (image > peak_threshold) * 1

# get coordinates of peaks
f = np.transpose(image_t.nonzero())

关于python - python中的非局部最大值抑制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29057159/

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