Python 直方图的全局和局部最大值
我正在试着把足球场分割开来。我正在关注一篇研究论文Python 直方图的全局和局部最大值,python,opencv,Python,Opencv,我正在试着把足球场分割开来。我正在关注一篇研究论文 转乘高速列车 抓住色调通道 生成直方图 获取全局和局部最大值(全局最大值可以是max(hist)) 如果局部极大值是全局极大值的20%,考虑它 问题是我不知道如何获得当地的Maximas。我试图在柱状图中捕捉一个峰值列表 我在MatLab上试过,它工作得很好,但我需要用python来做。我尝试过像peakutils这样的库,但没有任何东西能给我想要的结果 def field\u area\u掩码(图像): #转乘高速列车 hsv=cv2.cv
max(hist)
)def field\u area\u掩码(图像):
#转乘高速列车
hsv=cv2.cvt颜色(图像,cv2.COLOR\u BGR2HSV)
#捕捉色调通道
色调=hsv[:,:,0]
#生成直方图
hist=cv2.calcHist([hue],[0],无[256],[0256])
#捕获范围
历史范围=历史[:121]#0-120
历史范围=历史范围。重塑(1,-1)[0]
Hmax=最大值(历史范围)
plt.绘图(历史范围)
HiMax=[]需要填充本地最大值列表
参见numpy.diff
从一阶导数可以找到驻点。从二阶导数可以看出这些点是局部最大值还是最小值
示例:给定你的直方图
[1, 2, 1, 3, 7, 10, 7, 2] // 0-based index
一阶导数是
[1, -1, 2, 4, 3, -3, -5] // 1-based index
[-2, 3, 2, -1, -6, -2] // 2-based index
符号在第二、第三和第六元素处变化
二阶导数是
[1, -1, 2, 4, 3, -3, -5] // 1-based index
[-2, 3, 2, -1, -6, -2] // 2-based index
第二个元素的符号为(-),局部最大值
第三个元素的符号为(+),本地最小值
第6个元素的符号为(-),局部最大值
全局最大值为10,因此阈值为%20*10=2。第二个元件应被接受为局部最大值见
数值差异
从一阶导数可以找到驻点。从二阶导数可以看出这些点是局部最大值还是最小值
示例:给定你的直方图
[1, 2, 1, 3, 7, 10, 7, 2] // 0-based index
一阶导数是
[1, -1, 2, 4, 3, -3, -5] // 1-based index
[-2, 3, 2, -1, -6, -2] // 2-based index
符号在第二、第三和第六元素处变化
二阶导数是
[1, -1, 2, 4, 3, -3, -5] // 1-based index
[-2, 3, 2, -1, -6, -2] // 2-based index
第二个元素的符号为(-),局部最大值
第三个元素的符号为(+),本地最小值
第6个元素的符号为(-),局部最大值
全局最大值为10,因此阈值为%20*10=2。第二个元素应被接受为局部最大值。我能够使用
scipy.signal
的方法argrelextrema
找到峰值。
我将它与np.greater
一起使用
peaks=argrelextrema(历史范围,np.更大)
我能够使用
scipy.signal
的方法argrelextrema
找到峰值。
我将它与np.greater
一起使用
peaks=argrelextrema(历史范围,np.更大)
可能会对您有所帮助。您还可以从sklearn模块中查看函数。请参阅可能对您有所帮助。您还可以从sklearn模块中查看函数。必须抑制主峰两侧高于任何其他局部最大值的所有点,等等。请参见并不总是如此简单。必须抑制主峰两侧高于任何其他局部最大值的所有点。另请参见