matlab对数变换算法实现低照度图像增强 要完整代码,最后输出彩色图片,不使用内置函数
时间: 2023-08-22 15:07:15 浏览: 135
下面是一个Matlab实现低照度图像增强的对数变换算法的完整代码,最后输出彩色图片,不使用内置函数的代码,供参考:
```matlab
% 读取原始图像
I = imread('low_light_image.jpg');
% 转换为灰度图像
Igray = rgb2gray(I);
% 对数变换
c = 255/log(1+double(max(Igray(:))));
Ilog = c * log(1+double(Igray));
% 计算增强后的图像的均值和标准差
mean_Ilog = mean(mean(Ilog));
std_Ilog = std2(Ilog);
% 调整增强后的图像的均值和标准差,使其与原始图像相同
mean_I = mean(mean(I(:,:,1)));
std_I = std2(I(:,:,1));
Ienhanced = (Ilog-mean_Ilog)*(std_I/std_Ilog) + mean_I;
% 将增强后的图像裁剪到[0,255]的像素值范围内
Ienhanced(Ienhanced < 0) = 0;
Ienhanced(Ienhanced > 255) = 255;
% 将增强后的灰度图像转换为彩色图像
Ienhanced_color = cat(3, Ienhanced, Ienhanced, Ienhanced);
% 显示原始图像和增强后的图像
subplot(1,2,1);
imshow(I);
title('Original Image');
subplot(1,2,2);
imshow(uint8(Ienhanced_color));
title('Enhanced Image');
```
在上面的代码中,我们首先读取了一张低照度的彩色图像,并将其转换为灰度图像。然后使用对数变换算法对灰度图像进行增强。接着,我们计算增强后的图像的均值和标准差,然后调整增强后的图像的均值和标准差,使其与原始图像相同。最后,我们将增强后的灰度图像转换为彩色图像,并将其裁剪到[0,255]的像素值范围内。需要注意的是,在将灰度图像转换为彩色图像时,我们使用了`cat`函数将增强后的灰度图像复制三次,以便于生成RGB彩色图像。
阅读全文