如何使用 python 计算下图中最小值点的值

How to calculate the value of the point of minima in the following graph using python

我试图在第一个 graph.How 中找到最小值点的值(局部和全局无关紧要,因为第一张图中只有一个最小值)that.Point 的最小值标记为红色。 第一张图是第二张图的平滑版本,以防止出现局部最小值问题。

我使用以下步骤获得图表-

import cv2
from matplotlib import pyplot as plt
green = cv2.imread('5.tiff',1)
a = cv2.calcHist([green],[0],None,[256],[0,256])
blurs = cv2.GaussianBlur(a,(13,13),0)
plt.subplot(2,1,1)
plt.plot(blurs)
plt.subplot(2,1,2)
plt.plot(a)

基本上,您可以将局部最小值定义为在不增加值的情况下既不能向左也不能向右移动的点。让我借助 cos()

来证明这一点
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(1000)
y = np.cos(x * np.pi / 180)
plt.plot(x, y)

这些值存储在 y 变量中。在每个索引处(第一个和最后一个除外),只需检查 2 个相邻值,如果两个值都较大,则您当前处于局部最小值。这是代码:

local_min = []
for i in range(1, len(y)-1):
    if y[i-1] >= y[i] and y[i] <= y[i+1]:
        local_min.append(i)
print(local_min)

输出:

[180, 540, 900]