博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
matlab去云雾
阅读量:4551 次
发布时间:2019-06-08

本文共 2806 字,大约阅读时间需要 9 分钟。

clc;clear all;close allI=imread('11.jpg');Ir=I(:,:,1);  %分别提取图像的R分量,G分量和B分量Ig=I(:,:,2);Ib=I(:,:,3);%%%%%%%%%%设定所需参数%%%%%%G = 192;b = -30;alpha = 125;beta = 46;%%%%%%%%%%设定高斯参数%%%%%%sigma_1=15;   %三个高斯核sigma_2=80;sigma_3=250;[x y]=meshgrid((-(size(Ir,2)-1)/2):(size(Ir,2)/2),(-(size(Ir,1)-1)/2):(size(Ir,1)/2));  gauss_1=exp(-(x.^2+y.^2)/(2*sigma_1*sigma_1));  %计算高斯函数Gauss_1=gauss_1/sum(gauss_1(:));  %归一化处理gauss_2=exp(-(x.^2+y.^2)/(2*sigma_2*sigma_2));Gauss_2=gauss_2/sum(gauss_2(:));gauss_3=exp(-(x.^2+y.^2)/(2*sigma_3*sigma_3));Gauss_3=gauss_3/sum(gauss_3(:));%%%%%%%%%%对R分量操作%%%%%%%Ir_double=double(Ir);Ir_log=log(Ir_double+1);  %将图像转换到对数域f_Ir=fft2(Ir_double);  %对图像进行傅立叶变换,转换到频域中fgauss=fft2(Gauss_1,size(Ir,1),size(Ir,2));  %用0将图像填充至大小size(Ir,1)*size(Ir,2)fgauss=fftshift(fgauss);  %将频域中心移到零点Rr= ifft2(fgauss.*f_Ir);  %做卷积后变换回空域中Rr_log= log(abs(Rr) + 1);Rr1=Ir_log-Rr_log;  %sigam=15的处理结果fgauss=fft2(Gauss_2,size(Ir,1),size(Ir,2));fgauss=fftshift(fgauss);Rr= ifft2(fgauss.*f_Ir);Rr_log= log(abs(Rr) + 1);Rr2=Ir_log-Rr_log;  %sigam=80fgauss=fft2(Gauss_3,size(Ir,1),size(Ir,2));fgauss=fftshift(fgauss);Rr= ifft2(fgauss.*f_Ir);Rr_log= log(abs(Rr) + 1);Rr3=Ir_log-Rr_log;  %sigam=200Rr=0.33*Rr1+0.34*Rr2+0.33*Rr3;   %加权求和Rr=exp(Rr);  min1=min(min(Rr));max1=max(max(Rr));Rr_final=(Rr-min1)*255/(max1-min1);  %线性拉伸%figure,imshow(Rr_final,[]);%%%%%%%%%%对G分量操作同R分量%%%%%%%Ig_double=double(Ig);Ig_log=log(Ig_double+1);f_Ig=fft2(Ig_double);fgauss=fft2(Gauss_1,size(Ig,1),size(Ig,2));fgauss=fftshift(fgauss);Rg= ifft2(fgauss.*f_Ig);Rg_log= log(abs(Rg) + 1);Rg1=Ig_log-Rg_log;fgauss=fft2(Gauss_2,size(Ig,1),size(Ig,2));fgauss=fftshift(fgauss);Rg= ifft2(fgauss.*f_Ig);Rg_log= log(abs(Rg) + 1);Rg2=Ir_log-Rg_log;fgauss=fft2(Gauss_3,size(Ig,1),size(Ig,2));fgauss=fftshift(fgauss);Rg= ifft2(fgauss.*f_Ig);Rg_log= log(abs(Rg) + 1);Rg3=Ig_log-Rg_log;Rg=0.33*Rg1+0.34*Rg2+0.33*Rg3;Rg=exp(Rg);min2=min(min(Rg));max2=max(max(Rg));Rg_final=(Rg-min2)*255/(max2-min2);%figure,imshow(Rg_final,[]);%%%%%%%%%%对B分量操作同R分量%%%%%%%Ib_double=double(Ib);Ib_log=log(Ib_double+1);f_Ib=fft2(Ib_double);fgauss=fft2(Gauss_1,size(Ib,1),size(Ib,2));fgauss=fftshift(fgauss);Rb= ifft2(fgauss.*f_Ib);Rb_log= log(abs(Rb) + 1);Rb1=Ib_log-Rb_log;fgauss=fft2(Gauss_2,size(Ib,1),size(Ib,2));fgauss=fftshift(fgauss);Rb= ifft2(fgauss.*f_Ib);Rb_log= log(abs(Rb) + 1);Rb2=Ir_log-Rb_log;fgauss=fft2(Gauss_3,size(Ib,1),size(Ib,2));fgauss=fftshift(fgauss);Rb= ifft2(fgauss.*f_Ib);Rb_log= log(abs(Rb) + 1);Rb3=Ib_log-Rb_log;Rb=0.33*Rb1+0.34*Rb2+0.33*Rb3;Rb=exp(Rb);min3=min(min(Rb));max3=max(max(Rb));Rb_final=(Rb-min3)*255/(max3-min3);%figure,imshow(Rb_final,[]);%%%%%%%%%Final=cat(3,uint8(Rr_final),uint8(Rg_final),uint8(Rb_final));  %将三通道图像合并figure,imshow(I);  %显示原始图像figure,imshow(Final);  %显示处理后的图像

转载于:https://www.cnblogs.com/baogg/articles/2529376.html

你可能感兴趣的文章
SAP库龄表
查看>>
PhantomJS 基础及示例 (转)
查看>>
20175316盛茂淞 2018-2019-2 《Java程序设计》第3周学习总结
查看>>
zookeeper安装
查看>>
js清空页面控件值
查看>>
Appium使用Python运行appium测试的实例
查看>>
django request bug
查看>>
二叉树_非递归先中后序_递归非递归求深度
查看>>
20181227 新的目标
查看>>
HDFS写流程
查看>>
生产环境服务器环境搭建+ 项目发布
查看>>
js按条件分类json数组,并合计同组数据(一维转换为二维)
查看>>
Exp6 信息搜集与漏洞扫描
查看>>
redis4安装
查看>>
随机生成双色球号码
查看>>
使用命令wsimport构建WebService客户端[转]
查看>>
第八遍:链接详解
查看>>
Qt5.5 使用smtp发邮件的各种坑
查看>>
js奇葩错误 字符串传递问题
查看>>
人之初,性本恶
查看>>