python opencv灰度图的直方图均衡
时间: 2023-08-29 11:12:38 浏览: 108
灰度图的直方图均衡是一种图像增强方法,可以增强图像的对比度和亮度。在OpenCV中,可以通过以下步骤进行灰度图的直方图均衡:
1. 读入灰度图像并转换为灰度图像。
```
import cv2
# 读入彩色图像并转换为灰度图像
img = cv2.imread('image.jpg')
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
```
2. 计算灰度图像的直方图。
```
import numpy as np
# 计算灰度图像的直方图
hist, bins = np.histogram(gray_img.flatten(), 256, [0, 256])
```
3. 计算直方图均衡化后的灰度映射表。
```
# 计算直方图均衡化后的灰度映射表
cdf = hist.cumsum()
cdf_normalized = cdf * hist.max() / cdf.max()
cdf_normalized = np.uint8(cdf_normalized)
```
4. 使用灰度映射表对灰度图像进行直方图均衡化。
```
# 使用灰度映射表对灰度图像进行直方图均衡化
equ_img = cdf_normalized[gray_img]
```
5. 显示原图和直方图均衡化后的图像。
```
import matplotlib.pyplot as plt
# 显示原图和直方图均衡化后的图像
plt.subplot(121)
plt.imshow(gray_img, cmap='gray')
plt.title('Original Image')
plt.subplot(122)
plt.imshow(equ_img, cmap='gray')
plt.title('Equalized Image')
plt.show()
```
完整代码如下:
```
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 读入彩色图像并转换为灰度图像
img = cv2.imread('image.jpg')
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 计算灰度图像的直方图
hist, bins = np.histogram(gray_img.flatten(), 256, [0, 256])
# 计算直方图均衡化后的灰度映射表
cdf = hist.cumsum()
cdf_normalized = cdf * hist.max() / cdf.max()
cdf_normalized = np.uint8(cdf_normalized)
# 使用灰度映射表对灰度图像进行直方图均衡化
equ_img = cdf_normalized[gray_img]
# 显示原图和直方图均衡化后的图像
plt.subplot(121)
plt.imshow(gray_img, cmap='gray')
plt.title('Original Image')
plt.subplot(122)
plt.imshow(equ_img, cmap='gray')
plt.title('Equalized Image')
plt.show()
```
阅读全文