基于伽马校正的MSR算法 matlab实现
时间: 2023-12-10 07:05:56 浏览: 138
伽马校正是一种常用的图像处理方法,可以用于调整图像的亮度和对比度。而MSR算法则是基于伽马校正的一种图像增强算法,可以提高图像的清晰度和对比度。以下是基于伽马校正的MSR算法的matlab实现:
```matlab
function [out_image] = MSR(image, gamma, alpha, beta)
% image: 输入图像
% gamma: 伽马校正参数
% alpha: 对比度增益参数
% beta: 空间域平滑参数
% 将图像转换为灰度图像
if size(image, 3) == 3
image = rgb2gray(image);
end
% 对图像进行伽马校正
gamma_image = imadjust(image, [], [], gamma);
% 计算图像的梯度幅值和方向
[Gmag, Gdir] = imgradient(gamma_image);
% 对梯度幅值进行归一化
Gmag_norm = Gmag ./ max(Gmag(:));
% 计算梯度幅值的均值
Gmag_mean = mean(Gmag_norm(:));
% 计算局部对比度权重
contrast_weight = alpha * (Gmag_norm - Gmag_mean) + Gmag_mean;
% 对权重进行空间域平滑处理
H = fspecial('gaussian', [5 5], beta);
contrast_weight_smooth = imfilter(contrast_weight, H, 'replicate');
% 对图像进行MSR增强
out_image = gamma_image .* contrast_weight_smooth;
% 对增强后的图像进行灰度级拉伸
out_image = imadjust(out_image, [], [], [0 1], []);
```
其中,输入的参数gamma表示伽马校正参数,alpha表示对比度增益参数,beta表示空间域平滑参数。该函数首先将输入图像转换为灰度图像,然后对图像进行伽马校正。接着,计算图像的梯度幅值和方向,并对梯度幅值进行归一化。然后,计算梯度幅值的均值,并根据梯度幅值和均值计算局部对比度权重。对权重进行空间域平滑处理后,对图像进行MSR增强。最后,进行灰度级拉伸,输出增强后的图像。
阅读全文