Как рассчитать значение точки минимумов на следующем графике с помощью python - PullRequest
0 голосов
/ 17 января 2019

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

enter image description here

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

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 Ответ

0 голосов
/ 17 января 2019

По сути, вы можете определить локальные минимумы как точку, в которой вы не можете двигаться ни влево, ни вправо, не увеличивая свое значение. Позвольте мне продемонстрировать это с помощью cos() graph

import matplotlib.pyplot as plt
import numpy as np

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

enter image description here

Значения хранятся в переменной 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]
...