资源简介

matlab边缘检测程序,包括:'罗伯特梯度','Prewitt算法','Sobel梯度','Laplace算子','Laplace算子扩展模板','方向算子'。

资源截图

代码片段和文件信息

function [ Result ] = Edge_detect( Kk )
%UNtitleD 此处显示有关此函数的摘要
%   此处显示详细说明

% 将图片读入矩阵    
A=double(K);
[Row ColThi]=size(A);
Result=zeros(RowCol);

% 选择待增强的波段
if Thi>1
    n=input(‘请选择待处理的波段:‘);
    B=A(::n);
else
    B=A;
end

dim=5;
Mod=ones(dimdim);
for i=(dim+1)/2:(Row-(dim+1)/2)
    for j=(dim+1)/2:(Col-(dim+1)/2)
         C=B((i-(dim-1)/2):(i+(dim-1)/2)(j-(dim-1)/2):(j+(dim-1)/2));
         D=Mod.*C;
         B(ij)=mean2(D);
    end
end   

% 选择要执行的操作
str={‘罗伯特梯度‘‘Prewitt算法‘‘Sobel梯度‘‘Laplace算子‘‘Laplace算子扩展模板‘‘方向算子‘};
[selok]=listdlg(‘Liststring‘str‘PromptString‘‘请选择操作 ‘ ‘SelectionMode‘‘single‘);  

  
% 罗伯特梯度
if sel==1 
   for i=2:(Row-1)
       for j=2:(Col-1)
            Result(ij)=abs(B(ij)-B(i+1j+1))+abs(B(i+1j)-B(ij+1));
       end
   end
   
% Prewitt算法
elseif sel==2
     T1=[-1-1-1;000;111];
     T2=[-101;-101;-101];
     for i=2:(Row-1)
         for j=2:(Col-1)
             C=B((i-1):(i+1)(j-1):(j+1));
             D1=C.*T1;
             D2=C.*T2;
             p=sum(D1(:));
             q=sum(D2(:));
             Result(ij)=abs(p)+abs(q);
         end
     end
     
% Sobel梯度
elseif sel==3
     T1=[-1-2-1;000;121];
     T2=[-101;-202;-101];
     for i=2:(Row-1)
         for j=2:(Col-1)
             C=B((i-1):(i+1)

评论

共有 条评论