累计直方图 numpy histogram 参数说明

hist1, bins = np.histogram(img.ravel(), 256, [0, 256])#hist1 每个灰度值的频数
cdf = hist1.cumsum()#累加频数得累计直方图
cdf_normalised = cdf * float(hist1.max() / cdf.max())#把累计直方图的比例化到近似直方图
plt.plot(cdf_normalised,color='blue')

一,借助numpy的histogram函数得到各个灰度值的频数

二,img.ravel() 把多维数组转化为一维数组,因为histogram参数表要求

(数组下标为横坐标,值为纵坐标)

三,256 表示横坐标的最大值为256,有256条柱

四,[0,256]表示数据显示范围

PS:横坐标超过256的数据也归到256处

五,cumsum()

例:【1,2,3,4】—>【1,3,6,10】 累加

六,因为累计直方图加出来的数据比较大,如果不处理,可能会只显示直方图

而累计直方图直接“一飞冲天”,观测不到数据

累计直方图 numpy histogram 参数说明_第1张图片
要解决这个问题,就要利用比例尺,把累计直方图的值给缩小到和直方图一个量级

cdf_normalised = cdf * float(hist1.max() / cdf.max())#把累计直方图的比例化到近似直方图

你可能感兴趣的:(数字图像处理)