图像增强之Retinex 算法MSRCR 与 MSRCP 的 Python 实现

在这里插入图片描述

Retinex 算法:MSRCR 与 MSRCP 的 Python 实现

1. Retinex 算法简介

Retinex 理论由 Edwin Land 提出,旨在模拟人类视觉系统对颜色和亮度的感知。其核心思想是将图像分解为 照度分量(illumination)和 反射分量(reflection),通过去除照度的影响,增强图像的细节和颜色。Retinex 算法广泛应用于图像增强、去雾、低光照图像处理等领域。

2. 多尺度 Retinex (MSR)

多尺度 Retinex (MSR) 是 Retinex 的扩展版本,通过在多个尺度上对图像进行高斯滤波,获得更稳定的照度估计。MSR 的公式如下:
R(x,y)=∑i=1Nwi⋅(log⁡(I(x,y))−log⁡(Gi(x,y)∗I(x,y))) R(x, y) = \sum_{i=1}^{N} w_i \cdot \left( \log(I(x, y)) - \log(G_i(x, y) * I(x, y)) \right) R(x,y)=i=1Nwi(log(I(x,y))log(Gi(x,y)I(x,y)))
其中:
I(x,y)I(x, y)I(x,y) 是输入图像。
Gi(x,y)G_i(x, y)Gi(x,y) 是第 iii 个尺度的高斯核。
wiw_iwi 是第 iii 个尺度的权重。
NNN 是尺度数量。

MSR 通过加权求和多个尺度的结果,能够更好地处理不同尺度的图像细节。
在这里插入图片描述

3. MSRCR 与 MSRCP

MSRCR (Multi-Scale Retinex with Color Restoration) 在 MSR 的基础上引入了颜色恢复机制,解决了 MSR 可能导致颜色失真的问题。其公式如下:
RMSRCR(x,y)=C(x,y)⋅RMSR(x,y) R_{MSRCR}(x, y) = C(x, y) \cdot R_{MSR}(x, y) RMSRCR(x,y)=C(x,y)RMSR(x,y)
其中 C(x,y)C(x, y)C(x,y) 是颜色恢复因子,用于调整颜色平衡。

MSRCP (Multi-Scale Retinex with Chromaticity Preservation) 则通过保留图像的色度信息,进一步优化颜色表现。其公式如下:
RMSRCP(x,y)=α⋅RMSR(x,y)+(1−α)⋅Ichrom(x,y) R_{MSRCP}(x, y) = \alpha \cdot R_{MSR}(x, y) + (1 - \alpha) \cdot I_{chrom}(x, y) RMSRCP(x,y)=αRMSR(x,y)+(1α)Ichrom(x,y)
其中 Ichrom(x,y)I_{chrom}(x, y)Ichrom(x,y) 是图像的色度分量,α\alphaα 是权重系数。

4. Python 实现

以下是 MSRCR 和 MSRCP 的 Python 实现代码:

import cv2
import numpy as np

def gaussian_kernel(size, sigma):
    """生成高斯核"""
    kernel = cv2.getGaussianKernel(size, sigma)
    return kernel * kernel.T

def MSR(img, sigma_list):
    """多尺度 Retinex"""
    retinex = np.zeros_like(img, dtype=np.float32)
    for sigma in sigma_list:
        kernel = gaussian_kernel(3, sigma)
        log_img = np.log1p(img.astype(np.float32))
        blur_img = cv2.filter2D(log_img, -1, kernel)
        retinex += (log_img - blur_img) / len(sigma_list)
    return retinex

def MSRCR(img, sigma_list, G, b, alpha, beta, low_clip, high_clip):
    """MSR with Color Restoration"""
    msr = MSR(img, sigma_list)
    color_restoration = G * (np.log1p(img * alpha) - np.log1p(b))
    msrcr = beta * (msr * color_restoration)
    msrcr = np.clip(msrcr, low_clip, high_clip)
    return msrcr

def MSRCP(img, sigma_list, low_clip, high_clip):
    """MSR with Chromaticity Preservation"""
    msr = MSR(img, sigma_list)
    chrom = img / (np.sum(img, axis=2, keepdims=True) + 1e-6)
    msrcp = 0.5 * msr + 0.5 * chrom
    msrcp = np.clip(msrcp, low_clip, high_clip)
    return msrcp


在这里插入图片描述

5. 实验结果与分析

MSRCR 在增强图像细节的同时,能够较好地恢复颜色,适用于低光照或雾天图像。
MSRCP 则更注重色度的保留,适合处理颜色丰富的图像。

6. 应用场景

医学图像处理:增强 X 光或 MRI 图像的细节。
自动驾驶:改善低光照或雾天条件下的道路图像。
摄影:修复曝光不足或过曝的照片。

7. 总结

Retinex 算法通过模拟人类视觉系统,能够有效增强图像的细节和颜色。MSRCR 和 MSRCP 作为其扩展版本,分别在颜色恢复和色度保留方面表现出色。通过 Python 实现,可以方便地将这些算法应用于实际场景中。

参考文献:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值