怎么对图片直方图进行均衡化处理?
来源:网络收集 点击: 时间:2024-07-24获取第一个通道的像素值统计数据:
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread(b.png,0)
h,bins = np.histogram(img.flatten(),256,)

bins就是相应的亮度(像素值)。

绘制直方图:
plt.plot(h,color = g)
这是第一个通道,但是使用绿色。

累计小于某个像素值的像素数目:
cdf = h.cumsum()
嗯,cdf里面的数字只会递增或持平,不会下降。

把这个累计图画出来:
plt.plot(cdf,color = g)
plt.show()

把累计图压扁:
cdf_normalized = cdf*h.max()/cdf.max()
把压扁的累计图和直方图画到一起:
plt.plot(h, color = g)
plt.plot(cdf_normalized, color = b)


用orange来填充直方图:
plt.plot(h, color = g)
plt.plot(cdf_normalized, color = b)
plt.hist(img.flatten(),256,, color = orange)

增高原图的对比度:
cdf_m = np.ma.masked_equal(cdf,0)
cdf_m = (cdf_m - cdf_m.min())*255/(cdf_m.max()-cdf_m.min())
cdf = np.ma.filled(cdf_m,0).astype(uint8)
img2 = cdf
cv2.imwrite(g.png,img2)

我们看看原图“b.png”的直方图。

在看看g.png的直方图。

版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.ff371.cn/art_999707.html