写用matlab实现MSRCR图像增强的代码
时间: 2023-10-12 17:04:35 浏览: 83
实现MSRCR图像增强的MATLAB代码如下:
```matlab
% MSRCR图像增强
function [output_image] = MSRCR(input_image, sigma=[15, 80, 250], lambda=0.5, gain=2.0, offset=0.5)
% 输入图像预处理
input_image = double(input_image)./255;
% 计算各个尺度的高斯核
for i = 1:length(sigma)
gaussian_kernel{i} = fspecial('gaussian', 11, sigma(i));
end
% 计算各个尺度的拉普拉斯核
for i = 1:length(sigma)
laplacian_kernel{i} = fspecial('laplacian', 0.2*(sigma(i)^2));
end
% 计算各个尺度的图像响应
for i = 1:length(sigma)
response{i} = imfilter(input_image, gaussian_kernel{i}, 'replicate', 'conv');
response{i} = response{i} - imfilter(response{i}, laplacian_kernel{i}, 'replicate', 'conv');
end
% 计算各个尺度的对比度
for i = 1:length(sigma)
contrast{i} = (max(response{i}(:)) - min(response{i}(:))) ./ response{i};
end
% 计算各个尺度的对比度加权系数
for i = 1:length(sigma)
weight{i} = contrast{i} .^ lambda;
end
% 计算加权后的多尺度图像
for i = 1:length(sigma)
weighted_response{i} = weight{i} .* response{i};
end
% 计算图像增强后的多尺度图像
for i = 1:length(sigma)
enhanced_response{i} = imfilter(weighted_response{i}, gaussian_kernel{i}, 'replicate', 'conv');
end
% 计算最终的增强图像
output_image = input_image + gain .* (input_image - cell2mat(enhanced_response)) + offset;
output_image = min(max(output_image, 0), 1);
end
```
其中,`input_image`表示输入的图像,`sigma`表示高斯核的标准差,`lambda`表示对比度加权系数,`gain`表示增益系数,`offset`表示偏移量。函数返回值`output_image`为增强后的图像。
阅读全文