Как получить статистику по гистограмме? - PullRequest
0 голосов
/ 27 октября 2018

Я пытаюсь получить статистику четырех гистограмм первого порядка (среднее значение, дисперсия, асимметрия и эксцесс) по гистограмме.

У меня есть этот код, который вычисляет гистограмму:

import cv2
from matplotlib import pyplot as plt

img1 = 'img.jpg'
gray_img = cv2.imread(img1, cv2.IMREAD_GRAYSCALE)
plt.hist(gray_img.ravel(),256,[0,256])
plt.title('Histogram for gray scale picture')
plt.show()

Как я могу получить эту статистику?

Ответы [ 2 ]

0 голосов
/ 27 октября 2018

На основании моего ответа здесь

def mean_h(val, freq):
    return np.average(val, weights = freq)

def var_h(val, freq):
    dev = freq * (val - mean_h(val, freq)) ** 2
    return dev.sum() / freq.sum()

def moment_h(val, freq, n):
    n = (freq * (val - mean_h(val, freq)) ** n) / freq.sum()
    d = var_h(val, freq) ** (n / 2)
    return n / d

асимметрия и эксцесс - только 3-й и 4-й моменты

0 голосов
/ 27 октября 2018

Если количество бинов разумное, вы можете просто посчитать значения вручную, вставив вектор; и посчитайте все эти моменты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...