Sobel边缘算子的卷积和如图2.2所示,图像中的每个像素都用这两个核做卷积。这两个核分别对垂直边缘和水平边缘响应最大,两个卷积的最大值作为该点的输出位。运算结果是一幅边缘幅度图像。

 

Sobel算子认为邻域的像素对当前像素产生的影响不是等价的,所以距离不同的像素具有不同的权值,对算子结果产生的影响也不同。一般来说,距离越大,产生的影响越小。

I=imread('lena.bmp'); I=im2double(I); figure; imshow(I);title('org img');  [height width R]=size(I);  %Dx=[-1 -2 -1     %0   0  0     %1   2  1];  %Dy=[-1 0 1     %-2 0 2      %-1 0 1];  for i=2:height-1     for j=2:width-1         Dx=[I(i+1,j-1)-I(i-1,j-1)]+2*[I(i+1,j)-I(i-1,j)]+[I(i+1,j+1)-I(i-1,j+1)];         Dy=[I(i-1,j+1)-I(i-1,j-1)]+2*[I(i,j+1)-I(i,j-1)]+[I(i+1,j+1)-I(i+1,j-1)];        S(i,j)=sqrt(Dx^2+Dy^2);           end end figure; imshow(S); for i=1:255     for j=1:255        if (S(i,j)<1)             S(i,j)=1;         else S(i,j)=0;         end     end end figure; imshow(S,[]);