4. 直方图修正算法实现图像间的亮度对比度调整的代码
时间: 2024-02-22 08:56:44 浏览: 21
以下是使用直方图修正算法实现图像亮度对比度调整的 Python 代码示例:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('input.jpg')
# 将图像转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 计算直方图
hist, bins = np.histogram(gray.flatten(), 256, [0, 256])
# 计算累积分布函数
cdf = hist.cumsum()
cdf_normalized = cdf * hist.max() / cdf.max()
# 计算直方图均衡化的映射关系
equ = np.interp(gray.flatten(), bins[:-1], cdf_normalized)
# 将映射关系重新变为图像
equ = np.reshape(equ, gray.shape)
# 对图像进行亮度和对比度的调整
alpha = 1.5 # 对比度调整参数
beta = 50 # 亮度调整参数
adjusted = cv2.convertScaleAbs(equ, alpha=alpha, beta=beta)
# 显示结果
cv2.imshow('Original Image', img)
cv2.imshow('Adjusted Image', adjusted)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在代码中,首先读取输入图像并将其转换为灰度图像,然后计算灰度图像的直方图并进行直方图均衡化,得到映射关系。最后,根据亮度和对比度的调整参数,使用 `cv2.convertScaleAbs()` 函数对均衡化后的图像进行亮度和对比度的调整,得到最终结果。