低照度图像分别在HSI三个方向上进行图像增强,其中亮度方向上采用Retinex算法 python代码
时间: 2023-07-15 16:13:29 浏览: 108
下面是Python代码实现Retinex算法对低照度图像的亮度方向上的增强:
```python
import cv2
import numpy as np
def retinex(img, sigma):
# 对数变换
img_log = np.log1p(np.array(img, dtype="float") / 255)
# 高斯滤波
img_log = cv2.GaussianBlur(img_log, (0, 0), sigma)
# 图像复原
img_log = np.exp(img_log * 255) - 1
# 将像素值限制在0-255之间
img_log = np.clip(img_log, 0, 255)
# 转换为uint8类型
img_log = np.uint8(img_log)
return img_log
# 读取低照度图像
img = cv2.imread("low_light_image.png")
# 分离图像通道
h, s, v = cv2.split(cv2.cvtColor(img, cv2.COLOR_BGR2HSV))
# 对亮度通道进行图像增强
v_retinex = retinex(v, 10)
# 合并图像通道
img_retinex = cv2.cvtColor(cv2.merge([h, s, v_retinex]), cv2.COLOR_HSV2BGR)
# 显示增强后的图像
cv2.imshow("Retinex", img_retinex)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
其中,`retinex`函数实现了Retinex算法对图像的亮度进行增强,`sigma`参数控制高斯滤波的强度,需要根据实际情况进行调整。在主函数中,首先读取低照度图像,并将其转换为HSV颜色空间。然后,对亮度通道进行图像增强,并将增强后的通道与原始的色相和饱和度通道合并,最终转换回BGR颜色空间并显示结果。
阅读全文