【文件属性】:
文件名称:雾霾图像增强代码
文件大小:2KB
文件格式:RAR
更新时间:2018-06-10 14:49:42
MATLAB 雾霾 图像增强
clc;
clear all;
I=imread('9.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=80
fgauss=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=200
Rr=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,[]);
【文件预览】:
20101022SSR
----Single_Scale.asv(625B)
----SSR.m(517B)
----SSR.asv(487B)
----Single_Scale.m(628B)