clc;
clear all;
I=im2double(imread('D:\Gray Files\3-43.tif'));
len=1;
%对原始图像进行扩展,此处采用了镜像扩展,目的是解决边缘计算的问题
f_pad=padarray(I,[len,len]);
[M,N]=size(f_pad);
%sobel算子
Lx=[-1 -2 -1;
0 0 0;
1 2 1];
Ly=[-1 0 1;
-2 0 2;
-1 0 1];
for i=1+len:M-len
for j=1+len:N-len
%从扩展图像中,取出局部图像
Block=f_pad(i-len:i+len,j-len:j+len);
gx=sum(sum(Block.*Lx));
gy=sum(sum(Block.*Ly));
%取这组数的中值,赋值给输出图像
% g(i-len,j-len)=f(i-len,j-len)+ sqrt(gx^2+gy^2);
g(i-len,j-len)=sqrt(gx^2+gy^2);
end
end
imshow(g);
title('sobel算子滤波');