利用python实现直方图均衡化不调用任何库函数
时间: 2023-10-02 22:05:38 浏览: 387
好的,这是一个关于图像处理的问题。直方图均衡化是一种改善图像亮度和对比度的方法,它能够将图像的像素灰度值重新分配,使得灰度值更平均,从而达到增强图像的效果。具体实现方法是:
1. 首先读取原始图像,并统计其灰度级别的直方图;
2. 计算每个像素出现的频率,即像素值出现的次数除以总像素数;
3. 计算直方图的累积分布函数(CDF);
4. 接着将每个像素的灰度级别根据CDF进行均衡化;
5. 最后输出均衡化后的图像。
具体代码如下:
```
import cv2
import numpy as np
def hist_equalization(img):
# 计算灰度级别的直方图
hist, bins = np.histogram(img.flatten(), 256, [0, 256])
# 计算频率
freq = hist / np.sum(hist)
# 计算累积分布函数
cdf = np.cumsum(freq)
# 进行均衡化
img_eq = (255 * cdf[img] + 0.5).astype(np.uint8)
return img_eq
if __name__ == '__main__':
# 读取原始图像
img = cv2.imread('lena.jpg', cv2.IMREAD_GRAYSCALE)
# 进行均衡化
img_eq = hist_equalization(img)
# 显示结果
cv2.imshow('Original Image', img)
cv2.imshow('Equalized Image', img_eq)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
希望这个代码能够帮助解决你的问题!
阅读全文