1

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

在此处输入图像描述

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

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)
4

1 回答 1

1

基本上,您可以将局部最小值定义为在不增加价值的情况下既不能向左也不能向右的点。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]
于 2019-01-17T09:17:17.933 回答