低照度图像的亮度采用MSRCR算法进行增强代码
时间: 2023-07-16 16:15:54 浏览: 94
以下是使用MSRCR算法进行低照度图像增强的Python代码:
```python
import cv2
import numpy as np
def MSRCR(img, sigma_list):
# 将图像转为浮点型
img = np.float32(img) / 255.0
# 对图像进行拉普拉斯变换
Laplacian = cv2.Laplacian(img, cv2.CV_32F)
# 计算每个像素的对比度
contrast = np.zeros_like(img)
for sigma in sigma_list:
blurred = cv2.GaussianBlur(img, ksize=(0, 0), sigmaX=sigma, sigmaY=sigma)
contrast += cv2.pow(blurred - img, 2)
contrast = np.sqrt(contrast)
contrast /= len(sigma_list)
contrast = cv2.max(contrast, 1.0 / 255.0)
# 对图像进行多尺度增强
enhanced = np.zeros_like(img)
for sigma in sigma_list:
blurred = cv2.GaussianBlur(img, ksize=(0, 0), sigmaX=sigma, sigmaY=sigma)
alpha = cv2.min(contrast / cv2.sqrt(cv2.pow(blurred - img, 2) + cv2.pow(Laplacian, 2)), 1.0)
beta = 1.0 - alpha
blurredEnhanced = alpha * blurred + beta * img
enhanced += cv2.GaussianBlur(blurredEnhanced, ksize=(0, 0), sigmaX=sigma, sigmaY=sigma)
# 将增强后的图像转为8位无符号整型
enhanced = np.uint8(np.clip(enhanced * 255.0, 0, 255))
return enhanced
# 读取图像
img = cv2.imread('low_light_image.jpg')
# 设置sigma值列表
sigma_list = [15, 80, 250]
# 使用MSRCR算法进行增强
enhanced = MSRCR(img, sigma_list)
# 显示原始图像和增强后的图像
cv2.imshow('original', img)
cv2.imshow('enhanced', enhanced)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
代码中使用了OpenCV库来进行图像处理。首先将图像转为浮点型,然后计算每个像素的对比度,并进行多尺度增强。最后将增强后的图像转为8位无符号整型,并显示原始图像和增强后的图像。可以根据实际需要调整sigma值列表来获得更好的增强效果。