对图片进行直方图均衡化处理opencv
时间: 2024-09-28 13:10:57 浏览: 34
在OpenCV中,直方图均衡化是一种常用的技术,用于增强图像的对比度,使得暗部细节和亮部细节更加明显。直方图均衡化通过统计图像像素值的分布,然后对像素的灰度级进行映射,使得新的像素分布更均匀,接近全局亮度最大值。
以下是使用OpenCV进行图像直方图均衡化的Python代码示例:
```python
import cv2
import numpy as np
def histogram_equalization(image_path):
# 读取图像
img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
# 计算直方图
hist, bins = np.histogram(img.flatten(), 256, [0, 256])
# 创建累积分布函数
cdf = hist.cumsum()
cdf_normalized = cdf * hist.max() / cdf.max()
# 使用累积分布函数进行像素映射
eq_img = np.interp(img.flatten(), bins[:-1], cdf_normalized).reshape(img.shape)
return eq_img
# 示例
equipped_image = histogram_equalization('input_image.jpg')
cv2.imshow("Original Image", img)
cv2.imshow("Equalized Image", equipped_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个例子中,`histogram_equalization`函数首先读取图像转为灰度,计算直方图,接着创建累积分布函数并对其进行归一化,最后根据累积分布函数将原始像素值映射到新的区间,生成均衡化后的图像。
阅读全文