带色彩恢复因子的Retinex算法亮度增强python代码
时间: 2023-07-23 15:23:05 浏览: 128
图像增强-retinex算法matlab代码
以下是一个基于Python的带色彩恢复因子的Retinex算法的代码示例:
```python
import cv2
import numpy as np
def retinex_with_color_restoration(img, sigma_list=[15, 80, 250], G=5, b=25, alpha=125, beta=46, low_clip=0.01, high_clip=0.99):
img = np.float64(img) + 1.0
img_retinex = np.zeros_like(img)
for sigma in sigma_list:
img_retinex += np.log10(img) - np.log10(cv2.GaussianBlur(img, (G, G), sigma))
img_color = np.zeros_like(img)
for channel in range(3):
img_color[:, :, channel] = np.median(img[:, :, channel])
img_msb = np.max(img_color, axis=2)
img_msb = (cv2.GaussianBlur(img_msb, (b, b), sigma_list[0]) + alpha) * 255 / (beta + alpha)
img_retinex = cv2.normalize(img_retinex, None, 0, 255, cv2.NORM_MINMAX)
img_retinex = np.uint8(np.clip((img_retinex * img_msb) / 255.0, 0, 255))
low_val, high_val = np.percentile(img_retinex, [low_clip * 100, high_clip * 100])
img_retinex = np.uint8(cv2.normalize(img_retinex, None, low_val, high_val, cv2.NORM_MINMAX))
return img_retinex
```
其中,`img`是输入的图像,`sigma_list`是用于计算Retinex的高斯核参数列表,`G`是高斯核大小,`b`是用于计算颜色恢复的高斯核大小,`alpha`和`beta`是颜色恢复的参数,`low_clip`和`high_clip`是用于调整输出结果的参数。
使用该函数可以对图像进行带色彩恢复因子的Retinex算法亮度增强。
阅读全文