前面段落在截图里
Ir=I(:,:,1);% 把图像中红的数据存储到矩阵Ir中
Ig=I(:,:,2);% 把图像中绿的数据存储到矩阵Ig中
Ib=I(:,:,3);% 把图像中蓝的数据存储到矩阵Ib中
%设定参数
G = 30;%192
b = -6;%-30
alpha = 125;%125
beta = 1;%46
Ir_double=double(Ir);% Ir转换为double浮点数
Ig_double=double(Ig);% Ig转换为double浮点数
Ib_double=double(Ib);% Ib转换为double浮点数
sigma_1=20; %三个高斯环绕尺度
sigma_2=80;
sigma_3=300;
[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); % 转换为double浮点数
Ir_log=log(Ir_double+1); %将图像转换到对数域
%sigam=20的处理结果
G1=conv2(Ir_double,Gauss_1,'same'); %二维矩阵高斯卷积运算
Rr_log=log(G1+1); %取对数
Rr1=Ir_log-Rr_log; %用原图像减去低通滤波后的图像,得到高频增强图像
%sigam=80
G2=conv2(Ir_double,Gauss_2,'same'); %二维矩阵高斯卷积运算
Rr_log=log(G2+1); %取对数
Rr2=Ir_log-Rr_log; %用原图像减去低通滤波后的图像,得到高频增强图像
%sigam=300
G3=conv2(Ir_double,Gauss_3,'same'); %二维矩阵高斯卷积运算
Rr_log=log(G3+1); %取对数
Rr3=Ir_log-Rr_log; %用原图像减去低通滤波后的图像,得到高频增强图像
%对比度增强
Rr=0.33*Rr1+0.34*Rr2+0.33*Rr3; %加权求和
min1 = min(min(Rr)); %两次将Rr的每一列作为一个向量,返回一行向量包含了每一列的最小元素
max1 = max(max(Rr)); %两次将Rr的每一列作为一个向量,返回一行向量包含了每一列的最大元素
Rr_final = uint8(255*(Rr-min1)/(max1-min1)); %做平均值并保存为uint8类型
%对g分量操作
Ig_double=double(Ig); % 转换为double浮点数
Ig_log=log(Ig_double+1); %将图像转换到对数域
%sigam=20的处理结果
G1=conv2(Ig_double,Gauss_1,'same'); %二维矩阵高斯卷积运算
Rg_log=log(G1+1); %取对数
Rg1=Ig_log-Rg_log; %用原图像减去低通滤波后的图像,得到高频增强图像
%sigam=80
G2=conv2(Ig_double,Gauss_2,'same'); %二维矩阵高斯卷积运算
Rg_log=log(G2+1); %取对数
Rg2=Ig_log-Rg_log; %用原图像减去低通滤波后的图像,得到高频增强图像
%sigam=300
G3=conv2(Ig_double,Gauss_3,'same'); %二维矩阵高斯卷积运算
Rg_log=log(G3+1); %取对数
Rg3=Ig_log-Rg_log; %用原图像减去低通滤波后的图像,得到高频增强图像
%对比度增强
Rg=0.33*Rg1+0.34*Rg2+0.33*Rg3; %加权求和
min2 = min(min(Rg)); %两次将Rg的每一列作为一个向量,返回一行向量包含了每一列的最小元素
max2 = max(max(Rg)); %两次将Rg的每一列作为一个向量,返回一行向量包含了每一列的最大元素
Rg_final = uint8(255*(Rg-min2)/(max2-min2)); %做平均值并保存为uint8类型
%对B分量操作同
Ib_double=double(Ib); % 转换为double浮点数
Ib_log=log(Ib_double+1); %将图像转换到对数域
%sigam=20的处理结果
G1=conv2(Ib_double,Gauss_1,'same'); %二维矩阵高斯卷积运算
Rb_log=log(G1+1); %取对数
Rb1=Ib_log-Rb_log; %用原图像减去低通滤波后的图像,得到高频增强图像
%sigam=80
G2=conv2(Ib_double,Gauss_2,'same'); %二维矩阵高斯卷积运算
Rb_log=log(G2+1); %取对数
Rb2=Ib_log-Rb_log; %用原图像减去低通滤波后的图像,得到高频增强图像
%sigam=300
G3=conv2(Ib_double,Gauss_3,'same'); %二维矩阵高斯卷积运算
Rb_log=log(G3+1); %取对数
Rb3=Ib_log-Rb_log; %用原图像减去低通滤波后的图像,得到高频增强图像
%对比度增强
Rb=0.33*Rb1+0.34*Rb2+0.33*Rb3; %加权求和
min3 = min(min(Rb)); %两次将Rb的每一列作为一个向量,返回一行向量包含了每一列的最小元素
max3 = max(max(Rb)); %两次将Rb的每一列作为一个向量,返回一行向量包含了每一列的最大元素
Rb_final = uint8(255*(Rb-min3)/(max3-min3)); %做平均值并保存为uint8类型
msr=cat(3,Rr_final,Rg_final,Rb_final); %将三通道图像合并
end