水下主动成像退化模型 并通过retinex和白平衡算法增强 matlab代码如何编写
时间: 2024-01-22 15:17:50 浏览: 157
retinex算法MATLAB代码程序
5星 · 资源好评率100%
水下图像主动成像退化模型包括散射、吸收和水下光传播等因素的影响,导致水下图像出现模糊、低对比度和色偏等问题。针对这些问题,可以使用Retinex和白平衡算法进行增强。下面是Matlab代码示例:
```
%% 读入水下图像
I = imread('underwater.jpg');
%% Retinex增强
% 多尺度Retinex算法
I_msrcr = imresize(msrcr(double(I)/255), size(I));
% 双边滤波Retinex算法
I_bfr = bfr(double(I)/255, 0.1, 10);
%% 白平衡增强
% 简单灰度世界假设
I_wb = im2double(I);
avg_rgb = mean(mean(I_wb,1),2);
avg_gray = mean(avg_rgb);
I_wb(:,:,1) = I_wb(:,:,1) * (avg_gray / avg_rgb(1));
I_wb(:,:,2) = I_wb(:,:,2) * (avg_gray / avg_rgb(2));
I_wb(:,:,3) = I_wb(:,:,3) * (avg_gray / avg_rgb(3));
%% 显示结果
figure;
subplot(2,2,1);imshow(I);title('原始图像');
subplot(2,2,2);imshow(I_msrcr);title('Retinex多尺度增强');
subplot(2,2,3);imshow(I_bfr);title('Retinex双边滤波增强');
subplot(2,2,4);imshow(I_wb);title('白平衡增强');
```
其中,`msrcr`和`bfr`函数是Retinex算法的实现,可以在网络上找到相应的代码。`avg_rgb`是求取图像RGB三个通道的均值,用于简单灰度世界假设的白平衡增强。
阅读全文