MATLAB sobel 锐化(边缘检测)
例题
%例题验证
clc
clear
f=[3 3 3 3 3
3 8 7 6 3
3 6 0 5 3
3 7 8 4 3
3 8 3 3 3]
[L,R]=size(f);
g=zeros(L,R);
for i=2:L-1
for j=2:R-1
dx=((f(i+1,j-1)-f(i-1,j-1))+2*(f(i+1,j)-f(i-1,j))+(f(i+1,j+1)-f(i-1,j+1)))^2;
dy=((f(i-1,j+1)-f(i-1,j-1))+2*(f(i,j+1)-f(i,j-1))+(f(i+1,j+1)-f(i+1,j-1)))^2;
dt=double(dx+dy);
g(i,j)=sqrt(dt);
end
end
uint8(g)
验证结果
图片测试
clear
clc
I=imread('1.jpg');
I=rgb2gray(I);
[L,R]=size(I);
Y=double(I);
for i=2:L-1
for j=2:R-1
dx=(Y(i+1,j-1)-Y(i-1,j-1))+2*(Y(i+1,j)-Y(i-1,j))+(Y(i+1,j+1)-Y(i-1,j+1));
dy=(Y(i-1,j+1)-Y(i-1,j-1))+2*(Y(i,j+1)-Y(i,j-1))+(Y(i+1,j+1)-Y(i+1,j-1));
g(i,j)=sqrt(dx^2+dy^2);
end
end
figure(1)
subplot(1,2,1)
imshow(I);
title('原图')
subplot(1,2,2)
imshow(uint8(g));
title('My Sobel')
效果