Как рассчитать значение точки минимумов на следующем графике с помощью python

Я пытаюсь найти значение точки минимумов (локальные и глобальные значения не имеют, поскольку на первом графике только один минимум) на первом графике. Как это сделать. Точка минимума отмечена красным. Первый граф - это сглаженная версия второго графика, чтобы предотвратить появление локальных минимас.

Я получил график, используя следующие шаги:

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)

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]
Другие вопросы по тегам