msr 增强 matlab,Matlab用Retinex的MSR实现图像增强的代码,可运行,
时间: 2024-02-21 11:56:39 浏览: 113
matlab代码实现的MSR图像增强
5星 · 资源好评率100%
很好的问题!以下是用Retinex的MSR实现图像增强的Matlab代码示例:
```matlab
clc; clear all; close all;
% 读取图像
I = imread('lena.png');
I = im2double(I);
% 算法参数
sigma_list = [30, 100, 300];
lambda = 0.01;
% 图像增强
I_enhanced = MSR(I, sigma_list, lambda);
% 显示结果
subplot(1,2,1); imshow(I); title('Original Image');
subplot(1,2,2); imshow(I_enhanced); title('Enhanced Image');
% MSR函数
function I_enhanced = MSR(I, sigma_list, lambda)
[h, w, ~] = size(I);
S = zeros(h, w);
R = zeros(h, w);
for sigma = sigma_list
L = log(I+1) - log(imfilter(I, fspecial('gaussian', round(sigma*3), sigma)+1, 'symmetric')+1);
S = S + imfilter(L, fspecial('gaussian', round(sigma*3), sigma), 'symmetric');
R = R + imfilter((L-S).^2, fspecial('gaussian', round(sigma*3), sigma), 'symmetric');
end
R = sqrt(R./length(sigma_list));
I_enhanced = exp(lambda*S+R) - 1;
end
```
在这里,我们使用了Retinex的MSR算法来实现图像增强。首先,我们使用`imread`函数读取了一张图像,并将其转换为双精度格式。然后,我们指定了算法参数:sigma_list表示用于计算S和R的高斯核的标准差列表,lambda是一个控制S和R之间权重的参数。
接下来,我们定义了一个名为`MSR`的函数来实现图像增强。该函数首先对图像进行预处理,然后计算S和R。最后,使用S和R来增强原始图像。最后,我们将原始图像和增强后的图像显示在一个窗口中。
需要注意的是,由于这里使用的是Matlab的内置函数,因此此代码仅在Matlab中可运行。
阅读全文