找回密码
 注册
Simdroid-非首页
查看: 68|回复: 1

求大神帮我把MATLAB的程序 表明每一步是什么意思 急 !!!!

  [复制链接]
发表于 2015-5-6 17:40:53 | 显示全部楼层 |阅读模式 来自 安徽合肥
程序代码:
用Roberts算子实现图像锐化的程序,利用Roberts算子法对灰度数字图像lena.jpg进行微分锐化的程序代码如下:
clear all;
I=imread('C:\MATLAB7\toolbox\wavelet\wavedemo\lena.jpg');   
I=im2double(I);
figure;
imshow(I);title('org img');
[height width R]=size(I);
for i=2:height-1
    for j=2:width-1
        R(i,j)=abs(I(i+1,j+1)-I(i,j))+abs(I(i+1,j)-I(i,j+1));
    end
end
figure;
imshow(R,[]);
for i=1:height-1
    for j=1:width-1
        if (R(i,j)<0.25)
            R(i,j)=1;
        else R(i,j)=0;
        end
    end
end
figure;
imshow(R,[]);

用Sobel算子实现图像锐化的程序,图像lena.jpg进行锐化的程序代码如下:
clear all;
I=imread('C:\MATLAB7\toolbox\wavelet\wavedemo\lena.jpg');   
I=im2double(I);
figure;
imshow(I);title('org img');
[height width R]=size(I);
%Dx=[-1 -2 -1
    %0   0  0
    %1   2  1];
%Dy=[-1 0 1
    %-2 0 2  
    %-1 0 1];
for i=2:height-1
    for j=2:width-1
        Dx=[I(i+1,j-1)-I(i-1,j-1)]+2*[I(i+1,j)-I(i-1,j)]+[I(i+1,j+1)-I(i-1,j+1)];
        Dy=[I(i-1,j+1)-I(i-1,j-1)]+2*[I(i,j+1)-I(i,j-1)]+[I(i+1,j+1)-I(i+1,j-1)];
       S(i,j)=sqrt(Dx^2+Dy^2);
       end
end
figure;
imshow(S);
for i=1:255
    for j=1:255
       if (S(i,j)<1)
            S(i,j)=1;
        else S(i,j)=0;
        end
    end
end
figure;
imshow(S,[]);

用Prewitt算子实现图像锐化的程序,利用Prewitt算子对灰度数字图像lena.jpg进行图像锐化,程序代码如下
clear all;
I=imread('C:\MATLAB7\toolbox\wavelet\wavedemo\lena.jpg');   
I=im2double(I);
%figure;
%imshow(I);title('org img');

[height width R]=size(I);
for i=2:height-1
    for j=2:width-1
        Dx=[I(i+1,j-1)-I(i-1,j-1)]+[I(i+1,j)-I(i-1,j)]+[I(i+1,j+1)-I(i-1,j+1)];
        Dy=[I(i-1,j+1)-I(i-1,j-1)]+[I(i,j+1)-I(i,j-1)]+[I(i+1,j+1)-I(i+1,j-1)];
       P(i,j)=sqrt(Dx^2+Dy^2);
      
    end
end
%figure;
%imshow(P,[]);
for i=1:height-1
    for j=1:width-1
        if (P(i,j)<0.5)
            P(i,j)=1;
        else P(i,j)=0;
        end
    end
end
figure;
imshow(P,[]);

    用Laplacian算子实现图像锐化的程序,利用Laplacian算子对灰度数字图像lena.jpg进行图像锐化,程序代码如下
clear all;
I=imread('C:\MATLAB7\toolbox\wavelet\wavedemo\lena.jpg');
[H,W]=size(I);
M=double(I);
J=M;
for i=2:H-1
  for j=2:W-1
      J(i,j)=4*M(i,j)-[M(i+1,j)+M(i-1,j)+M(i,j+1)+M(i,j-1)];
     end;
end;
subplot(1,2,1);imshow(I);title('原图');
subplot(1,2,2);imshow(uint8(J));title('锐化处理后的图');



    用Wallis算子实现图像锐化的程序,利用Wallis算子对灰度数字图像lena.jpg进行图像锐化程序代码如下
%Wallis微分算子
clear all;
I=imread('C:\MATLAB7\toolbox\wavelet\wavedemo\lena.jpg');
%figure
%imshow(I);
I=im2double(I);
[height width R]=size(I);
for i=2:height-1
    for j=2:width-1
   II(i,j)=log10(I(i,j)+1)-0.25*(log10(I(i-1,j)+1)+log10(I(i+1,j)+1)+log10(I(i,j-1)+1)+log10(I(i,j+1)+1));
    end
end
min1=min(II);
min2=min(min1);
for i=2:height-1
   for j=2:width-1
      II(i,j)=46*II(i,j)-min2+0.4;
  end
end
%figure
%imshow(II,[]);
for i=1:height-1
    for j=1:width-1
        if (II(i,j)<-0.035)
           II(i,j)=0;
        else II(i,j)=1;
        end
    end
end
figure;
imshow(II,[]);
 楼主| 发表于 2015-5-6 18:09:27 | 显示全部楼层 来自 安徽合肥
Simdroid开发平台
求大神帮忙啊     明天要交的毕业论文
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-6-2 04:30 , Processed in 0.028690 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表