zhongfufu 2021-10-19 00:41 采纳率: 71.4%
浏览 27
已结题

请教,这个程序应该是出现几张处理过的图片,为什么我的运行结果是一堆数字

前面段落在截图里
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

img

  • 写回答

1条回答 默认 最新

  • joel_1993 2021-10-19 09:25
    关注

    你好同学,在

    msr=MSR(I); %这里写个分号
    

    后面加上

    imshow(msr)
    

    即可
    有帮助望采纳,非常感谢你的支持呜呜

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月5日
  • 已采纳回答 10月28日
  • 创建了问题 10月19日

悬赏问题

  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗