0
点赞
收藏
分享

微信扫一扫

数字图像处理100问—23 直方图均衡化( Histogram Equalization )

提示:内容整理自:https://github.com/gzr2017/ImageProcessing100Wen
CV小白从0开始学数字图像处理

23 直方图均衡化( Histogram Equalization )

直方图均衡化是使直方图变得平坦的操作,是不需要计算的平均值、标准差等数据使直方图的值变得均衡的操作。

均衡化操作由以下式子定义。S是总的像素数;Zmax是像素点的最大取值(在这里是 255);h(z)表示取值为z的累积分布函数:

Z' = Zmax / S * Sum{i=0:z} h(z)

1.引入库

CV2计算机视觉库

import cv2
import numpy as np
import matplotlib.pyplot as plt

2.读入数据

img = cv2.imread("imori.jpg").astype(np.float)
H, W, C = img.shape

3.直方图均衡化( Histogram Equalization )

S = H * W * C * 1.

out = img.copy()

sum_h = 0.
z_max = 255.

for i in range(1, 255):
    ind = np.where(img == i)
    sum_h += len(img[ind])
    z_prime = z_max / S * sum_h
    out[ind] = z_prime

out = out.astype(np.uint8)

4.直方图展示

plt.hist(out.ravel(), bins=255, rwidth=0.8, range=(0, 255))
plt.savefig("out_his.png")
plt.show()

在这里插入图片描述

5.保存结果

cv2.imshow("result", out)
cv2.waitKey(0)
cv2.imwrite("out.jpg", out)

6.结果

在这里插入图片描述在这里插入图片描述

举报

相关推荐

0 条评论