在Python中用Retinex写一份暗视觉图像增强的
时间: 2024-02-13 13:02:51 浏览: 73
代码示例:
```python
import cv2
import numpy as np
def retinex(img, sigma_list):
retinex_output = np.zeros_like(img)
img = np.float64(img)
for sigma in sigma_list:
img_blur = cv2.GaussianBlur(img, (0,0), sigma)
img_log = np.log10(img) - np.log10(img_blur)
retinex_output += img_log
retinex_output = retinex_output / len(sigma_list)
retinex_output = np.exp(retinex_output) * 255
retinex_output = np.uint8(retinex_output)
return retinex_output
# 读取图片
img = cv2.imread("dark_image.jpg")
# 设置 sigma 值列表
sigma_list = [15, 80, 250]
# 调用 Retinex 函数
output = retinex(img, sigma_list)
# 显示原图和增强后的图像
cv2.imshow("Original", img)
cv2.imshow("Retinex", output)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
其中,`retinex()` 函数接受一张灰度图像和一个 sigma 值列表作为输入参数,返回一张增强后的灰度图像。在函数内部,通过高斯滤波和对数运算来计算 Retinex 算法的输出,并最终将其还原为像素值范围在 0-255 之间的整数。在主函数中,读取一张暗视觉图像,并调用 `retinex()` 函数进行增强。最后,使用 OpenCV 的 `imshow()` 函数显示原始图像和增强后的图像。
阅读全文