⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sobcas.m

📁 canny边缘检测算子,可以对灰度数字图象的弱边缘进行很好的检测
💻 M
字号:
function [imnew1,edge]=sobcas(a)


[m1,n1,p1]=size(a);
img1=a;
imnew1=zeros(m1,n1);
edge=zeros(m1,n1);

s1=[1 2 1;0 0 0;-1 -2 -1];
s2=[ -1 0 1;-2 0 2;-1 0 1];
for i=2:m1-1,
    for j=2:n1-1,
        mat=[img1(i-1,j-1) img1(i-1,j) img1(i-1 ,j+1) ;
             img1(i,j-1) img1(i,j) img1(i,j+1) ; 
        img1(i+1,j-1) img1(i+1,j) img1(i+1 ,j+1)  ];
        
        sum1=double(mat).*s1;
        sumx=sum(sum(sum1));      
        sum2=double(mat).*s2;
        sumy=sum(sum(sum2));
         %orient calculation
         if sumx == 0  
             if sumy == 0 
               orient=0.0;
		     elseif  sumy < 0  
		       sumy = -sumy;
		       orient = 90.0;
             else 
                orient=90.0;
             end
         elseif sumx<0 & sumy>0   
		     sumx = -sumx;
		     orient = 180 - ((atan(sumy/sumx)) * (180/pi));
         elseif sumx>0 & sumy<0   
		     sumy = -sumy;
		     orient = 180 - ((atan(sumy/sumx)) * (180/pi));
	       
	     else
             orient = (atan(sumy/sumx)) * (180/pi);
         end




               
           
         %edge direction
         if(orient < 22.5) edge(i,j) = 0;
	       elseif(orient  < 67.5) edge(i,j) = 45;
	       elseif(orient < 112.5) edge(i,j) = 90;
	       elseif(orient < 157.5) edge(i,j) = 135;
	       else edge(i,j) = 0;
           end
                  
         sum=abs(sumx)+abs(sumy);
         if sum>255
            sum=255;
         elseif sum<0
            sum=0;
         end
        imnew1(i,j)=sum;
        j=j+1;
    end
    i=i+1;
end
            

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -