?? sobcas.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 + -