如何从直方图获取统计信息?

时间:2018-10-27 13:24:40

标签: python-3.x numpy matplotlib

我正在尝试获取四个一阶直方图统计信息(平均值, 直方图显示方差,偏度和峰度。

我有这段代码可以计算直方图:

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 :(得分:0)

如果bin的数量合理,则应该能够手动将值计数到向量中;并计算所有这些时刻。

答案 1 :(得分:0)

根据我的回答here

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

偏度和峰度只是第三和第四时刻