课程学习——sobel边缘算子

matlab:C语言逻辑实现sobel边缘算子。
代码:

clc;
clear all;
f=imread('E:\matlabCX\图片\3.jpg');
figure(1);
imshow(f);
[m,n,r]=size(f);
if r>1
    f1=rgb2gray(f);
else
    f1=f;
end
f2=zeros(m,n);
f1=double(f1);
Ax=[-1,-2,-1;0,0,0;1,2,1];
Ay=[-1,0,1;-2,0,2;-1,0,1];
for x=2:m-1
    for y=2:n-1
        tp1=0.0;
        tp2=0.0;
        for x1=-1:1
            for y1=-1:1
                tp1=tp1+f1(x+x1,y+y1)*Ax(x1+2,y1+2);
                tp2=tp2+f1(x+x1,y+y1)*Ay(x1+2,y1+2);
            end
        end
        f2(x,y)=(tp1^2+tp2^2)^(1/2);
    end
end
T=30;
f4=zeros(m,n);
for x=2:m-1
    for y=2:n-1
    if f2(x,y)>T
        f4(x,y)=255;
    else
   f4(x,y)=0;
    end
    end
end
figure(3)
imshow(uint8(f4))

课程学习——sobel边缘算子
课程学习——sobel边缘算子

少年不被楼层误,余生不羁尽自由。
加油,加油!