Python编写:多尺度MSR算法实现详解
多尺度MSR(Multi-Scale Retinex)算法是一种图像增强算法,该算法可用于提高图像的亮度、对比度和色彩平衡等方面的表现。本文将通过 Python 代码实现该算法并详细解析其实现过程。
算法流程:
- 将原始图像转换为灰度图像
- 对每个像素点的 RGB 值求取自然对数
- 分别计算最大值和最小值
- 计算相应的全局和局部比例因子
- 求取输出图像的像素值
代码实现:
import cv2
import numpy as np
def MSR(img, scales):
weight = np.array([0.01, 0.99])
levels = scales.shape[0]
img = np.float32(img)
img_out = np.zeros_like(img)
for i in range(levels):
img_blur = cv2.GaussianBlur(img, (scales[i], scales[i]), 0)
img_detail = img - img_blur
img_detail_rescale = cv2.resize(np.log(weight[0]+weight[1]*img_detail), img.shape[:2][::-1])[...,np.newax