opencv直方图均衡化
时间: 2023-09-01 11:11:02 浏览: 69
OpenCV中的直方图均衡化是一种常用的图像增强方法,它可以通过增强图像的对比度来提高图像的质量。具体步骤如下:
1. 读取图像并转换为灰度图像。
2. 计算图像的直方图。
3. 计算直方图的累积分布函数。
4. 计算像素值的映射表。
5. 将映射表应用于原始图像。
下面是使用OpenCV进行直方图均衡化的示例代码:
```python
import cv2
# 读取图像并转换为灰度图像
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 计算直方图
hist, bins = cv2.calcHist([gray], [0], None, [256], [0, 256])
# 计算累积分布函数
cdf = hist.cumsum()
cdf_normalized = cdf * hist.max() / cdf.max()
# 计算像素值的映射表
mapping = []
for i in range(256):
mapping.append(int(cdf_normalized[i]))
# 将映射表应用于原始图像
eq = cv2.LUT(gray, mapping)
# 显示结果
cv2.imshow('Original', gray)
cv2.imshow('Equalized', eq)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上面的代码中,我们首先读取图像并将其转换为灰度图像。然后,使用`cv2.calcHist`函数计算图像的直方图。接下来,我们计算直方图的累积分布函数,并用它来计算像素值的映射表。最后,我们使用`cv2.LUT`函数将映射表应用于原始图像,并显示结果。