I = imread('test4.jpg'); %读取图像
R = I(:, :, 1); %R通道的二维图像
G = I(:, :, 2); %G通道的二维图像
B = I(:, :, 3); %B通道的二维图像
R0 = im2double(R); %将图像的数据类型转换为double类型
G0 = im2double(G);
B0 = im2double(B);
[N1, M1] = size(R);
a = 50; %MSRCR算法中的调整参数
II = imadd(R0, G0);
II = imadd(II, B0); %将R、G、B三个通道的图叠加在一起
Ir = immultiply(R0, a); %R通道的图像乘以调整参数
Ig = immultiply(G0, a); %G通道的图像乘以调整参数
Ib = immultiply(B0, a); %B通道的图像乘以调整参数
Rlog = log(R0+1);
Rfft2 = fft2(R0);
sigma1 = 128; %尺度参数之一
F1 = fspecial('gaussian', [N1,M1], sigma1); %建立高斯低通滤波算子
Efft1 = fft2(double(F1));
DR0 = Rfft2.* Efft1; %滤波算子和原始R通道图像进行卷积,得到空间平滑图像
DR = ifft2(DR0);
DRlog = log(DR +1);
Rr1 = Rlog - DRlog; %R通道图像减去空间平滑图像,得到R通道的物体反射特性
sigma2 = 256; %尺度参数之一,同sigma1
F2 = fspecial('gaussian', [N1,M1], sigma2);
Efft2 = fft2(double(F2));
DR0 = Rfft2.* Efft2;
DR = ifft2(DR0);
DRlog = log(DR +1);
Rr2 = Rlog - DRlog;
sigma3 = 512;
F3 = fspecial('gaussian', [N1,M1], sigma3);
Efft3 = fft2(double(F3));
DR0 = Rfft2.* Efft3;
DR = ifft2(DR0);
DRlog = log(DR +1);
Rr3 = Rlog - DRlog;
Rr = (Rr1 + Rr2 +Rr3)/3; %为三个尺度取权重因子
alpha = imdivide(Ir, II); % alpha为彩色恢复因子
alpha = log(alpha+1);
Rr = immultiply(alpha, Rr); %将彩色恢复因子与得到的R通道物体反射特性相乘
EXPRr = exp(Rr);
MIN = min(min(EXPRr));
MAX = max(max(EXPRr));
EXPRr = (EXPRr - MIN)/(MAX - MIN); %将输出量化
EXPRr = adapthisteq(EXPRr); %进行直方图均衡
%G通道与R通道实现思路相同
Glog = log(G0+1);
Gfft2 = fft2(G0);
DG0 = Gfft2.* Efft1;
DG = ifft2(DG0);
DGlog = log(DG +1);
Gg1 = Glog - DGlog;
DG0 = Gfft2.* Efft2;
DG = ifft2(DG0);
DGlog = log(DG +1);
Gg2 = Glog - DGlog;
DG0 = Gfft2.* Efft3;
DG = ifft2(DG0);
DGlog = log(DG +1);
Gg3 = Glog - DGlog;
Gg = (Gg1 + Gg2 +Gg3)/3;
alpha = imdivide(Ig, II);
alpha = log(alpha+1);
Gg = immultiply(alpha, Gg);
EXPGg = exp(Gg);
MIN = min(min(EXPGg));
MAX = max(max(EXPGg));
EXPGg = (EXPGg - MIN)/(MAX - MIN);
EXPGg = adapthisteq(EXPGg);
%B通道与R通道实现思路相同
Blog = log(B0+1);
Bfft2 = fft2(B0);
DB0 = Bfft2.* Efft1;
DB = ifft2(DB0);
DBlog = log(DB +1);
Bb1 = Blog - DBlog;
DB0 = Bfft2.* Efft2;
DB = ifft2(DB0);
DBlog = log(DB +1);
Bb2 = Blog - DBlog;
DB0 = Bfft2.* Efft3;
DB = ifft2(DB0);
DBlog = log(DB +1);
Bb3 = Blog - DBlog;
Bb = (Bb1 + Bb2 +Bb3)/3;
alpha = imdivide(Ib, II);
alpha = log(alpha+1);
Bb = immultiply(alpha, Bb);
EXPBb = exp(Bb);
MIN = min(min(EXPBb));
MAX = max(max(EXPBb));
EXPBb = (EXPBb - MIN)/(MAX - MIN);
EXPBb = adapthisteq(EXPBb);
result = cat(3, EXPRr, EXPGg, EXPBb); %将R、G、B三个图像的矩阵连结在一起
figure; imshow(I);title('原图') %输出原图像
figure; imshow(result); title('多尺度Retinex理论去雾后') %输出处理后的图
没有合适的资源?快使用搜索试试~ 我知道了~
【图像去雾】基于matlab多尺度Retinex图像去雾【含Matlab源码 3549期】.zip
共9个文件
jpg:6个
png:2个
m:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 83 浏览量
2023-12-03
22:23:43
上传
评论
收藏 1.73MB ZIP 举报
温馨提示
CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作 图像增强: 同态增晰图像增强、萤火虫算法图像增强、 图像去雾:直方图均衡化+Retinex理论图像去雾、暗通道图像去雾、偏振水下模糊图像去雾、双边滤波图像去雾、颜色衰减先验图像去雾
资源推荐
资源详情
资源评论
收起资源包目录
【图像去雾】基于matlab多尺度Retinex图像去雾【含Matlab源码 3549期】.zip (9个子文件)
【图像去雾】基于matlab多尺度Retinex图像去雾【含Matlab源码 3549期】
test1.jpg 43KB
运行结果1.jpg 174KB
test3.jpg 51KB
test5.jpg 102KB
test4.jpg 554KB
test2.png 239KB
运行结果2.jpg 277KB
多尺度Retinex理论去雾后.png 334KB
p3.m 3KB
共 9 条
- 1
资源评论
海神之光
- 粉丝: 3w+
- 资源: 2114
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功