【问题标题】:Find locale minimum in histogram (1D array) (Python)在直方图中查找区域最小值(一维数组)(Python)
【发布时间】:2017-09-19 12:33:30
【问题描述】:

我已经处理了雷达图像并且要检测水,我必须在直方图中找到局部最小值。每个区域的直方图都有点不同,所以我必须根据每个直方图自动找到局部最小值。

我的输入数组是图像值的一维数组(0.82154、0.012211、...)。我知道如何在 numpy 和 matplotlib 中创建直方图,但我不知道我应该怎么做才能确定图片中显示的语言环境最小值。我使用 python scipy 库。

第一步应该是平滑直方图以便于确定最小值,你能告诉我用什么来平滑数据吗?像这样的:

【问题讨论】:

  • 请在问题中包含您的图片,而不是作为外部网站的链接
  • 因为我是新人且声誉评分不够高,所以无法包含图片。我上传了图片,但系统将它们添加为链接。

标签: python histogram minimum


【解决方案1】:

您可以使用numpy.convolve() 使用numpy 平滑数据,也可以使用以下函数:

import numpy

def smooth(x,window_len=11,window='hanning'):
    if x.ndim != 1:
        raise ValueError, "smooth only accepts 1 dimension arrays."

    if x.size < window_len:
        raise ValueError, "Input vector needs to be bigger than window size."


    if window_len<3:
        return x


    if not window in ['flat', 'hanning', 'hamming', 'bartlett', 'blackman']:
        raise ValueError, "Window is on of 'flat', 'hanning', 'hamming', 'bartlett', 'blackman'"


    s=numpy.r_[x[window_len-1:0:-1],x,x[-2:-window_len-1:-1]]
    #print(len(s))
    if window == 'flat': #moving average
        w=numpy.ones(window_len,'d')
    else:
        w=eval('numpy.'+window+'(window_len)')

    y=numpy.convolve(w/w.sum(),s,mode='valid')
    return y

还请查看 scipy 文档:

如果您正在寻找一维数组a 中的所有条目小于它们的邻居,您可以尝试

numpy.r_[True, a[1:] < a[:-1]] & numpy.r_[a[:-1] < a[1:], True]

在 SciPy >= 0.11 中,您可以使用以下内容:

import numpy as np
from scipy.signal import argrelextrema

x = np.random.random(12)

# for local minima
argrelextrema(x, np.less)

【讨论】:

  • 感谢您的回答。我找到了这段代码。你能告诉我什么是“s”吗?我找到了卷积函数,但它适用于两个数组:“卷积两个 N 维数组。”
  • 我尝试过卷积函数,但出现错误:TypeError: convolve() 缺少 1 个必需的位置参数:'in2'。那么是否可以仅对一个数组使用此功能?
  • 你使用 numpy.convolve() 函数还是 scipy.signal.convolve()?
  • 我使用了 scipy.signal.convolve(),但是当我查看 numpy.convolve() 时,还有两个数组作为参数 (a,v) - numpy.convolve(a, v, mode ='完整')
  • 我做到了。我认为它不起作用,但我认为这是因为我有很多值 - 100 万个值,当我更改图中的 bin 数量时,我可以看到它更平滑。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-05
  • 2015-04-06
  • 2019-03-31
  • 1970-01-01
  • 2018-07-02
  • 2021-04-20
  • 1970-01-01
相关资源
最近更新 更多