%分离背景光 I_gray = rgb2gray(I); back = imopen(I_gray, strel('disk', 3)); figure;imshow(back); 利用retinex和白平衡算法进行增强 matlab如何编写
时间: 2024-01-22 12:20:29 浏览: 76
【老生谈算法】基于Retinex算法图像增强的MATLAB实现.docx
5星 · 资源好评率100%
以下是利用Retinex和白平衡算法进行增强的Matlab代码:
```matlab
% 读入图像并转为灰度图像
I = imread('image.jpg');
I_gray = rgb2gray(I);
% 分离背景光
back = imopen(I_gray, strel('disk', 3));
% Retinex算法增强
R = log(double(I_gray)) - log(double(back));
R = (R - min(R(:))) / (max(R(:)) - min(R(:)));
R = imadjust(R, [0.1 0.9], []);
% 白平衡
R_mean = mean2(R);
R = R / R_mean * 0.5;
R = imadjust(R, [], [], 0.5);
% 显示增强后的图像
figure;
subplot(1,2,1); imshow(I);
subplot(1,2,2); imshow(R);
```
其中,Retinex算法增强的部分使用了公式:
R = log(double(I_gray)) - log(double(back));
其中,double()将图像转为双精度浮点数,log()表示自然对数,相减后得到图像的反射率,再进行归一化和亮度调整。白平衡算法使用了简单的灰度均值白平衡算法,将增强后的图像亮度调整到0.5。
阅读全文