The gradient of the image is calculated for each pixel position in the image.
The procedure and the MATLAB code for sobel edge detection without using MATLAB built-in function:
MATLAB CODE:
A=imread('peppers.png');
B=rgb2gray(A);
C=double(B);
for i=1:size(C,1)-2
for j=1:size(C,2)-2
%Sobel mask for x-direction:
Gx=((2*C(i+2,j+1)+C(i+2,j)+C(i+2,j+2))-(2*C(i,j+1)+C(i,j)+C(i,j+2)));
%Sobel mask for y-direction:
Gy=((2*C(i+1,j+2)+C(i,j+2)+C(i+2,j+2))-(2*C(i+1,j)+C(i,j)+C(i+2,j)));
%The gradient of the image
%B(i,j)=abs(Gx)+abs(Gy);
B(i,j)=sqrt(Gx.^2+Gy.^2);
end
end
figure,imshow(B); title('Sobel gradient');
%Define a threshold value
Thresh=100;
B=max(B,Thresh);
B(B==round(Thresh))=0;
B=uint8(B);
figure,imshow(~B);title('Edge detected Image');
The edge detected image can be obtained from the sobel gradient by
using a threshold value.
The procedure and the MATLAB code for sobel edge detection without using MATLAB built-in function:
MATLAB CODE:
A=imread('peppers.png');
B=rgb2gray(A);
C=double(B);
for i=1:size(C,1)-2
for j=1:size(C,2)-2
%Sobel mask for x-direction:
Gx=((2*C(i+2,j+1)+C(i+2,j)+C(i+2,j+2))-(2*C(i,j+1)+C(i,j)+C(i,j+2)));
%Sobel mask for y-direction:
Gy=((2*C(i+1,j+2)+C(i,j+2)+C(i+2,j+2))-(2*C(i+1,j)+C(i,j)+C(i+2,j)));
%The gradient of the image
%B(i,j)=abs(Gx)+abs(Gy);
B(i,j)=sqrt(Gx.^2+Gy.^2);
end
end
figure,imshow(B); title('Sobel gradient');
Sobel Gradient |
%Define a threshold value
Thresh=100;
B=max(B,Thresh);
B(B==round(Thresh))=0;
B=uint8(B);
figure,imshow(~B);title('Edge detected Image');
Edge detected Image |
Edge detected Image(Threshold value:35) |
using a threshold value.
- If the sobel gradient values are lesser than the threshold value then replace it with the threshold value.
if f < threshold value then
f = threshold value.
To avoid complex computation, the gradient can also be computed using the formula:
The Image obtained from computing X-direction derivative:
The Image obtained from computing Y-direction derivative:
0 comments:
Post a Comment