In Edge Detection- fundamentals, we have seen how the first
and second order derivatives are used in finding the edge strength. Now lets see another version of sobel edge detection.
Prerequisite: Sobel Edge Detection-Part 1
Basic Steps followed in Sobel Edge Detection:
1. Obtain
the gradient of the image.
2. Find
the magnitude
3. Threshold
the gradient image.
SOBEL EDGE DETECTION USING ‘edge’ FUNCTION:
%Input Image
A=imread('coins.png');
%Image obtained using
MATLAB function 'edge'
[E,th]=edge(A,'sobel','nothinning');
figure,imshow(E);title('Image
obtained using MATLAB function')
Edge Detection without using the 'edge' function:
MATLAB CODE:
%Input Image
A=imread('coins.png');
%Preallocate the matrices
with zeros
I=zeros(size(A));
%Filter Masks
F1=[-1 0 1;-2 0 2; -1 0 1];
F2=[-1 -2 -1;0 0 0; 1 2 1];
A=double(A);
for i=1:size(A,1)-2
for j=1:size(A,2)-2
%Gradient operations
Gx=sum(sum(F1.*A(i:i+2,j:j+2)));
Gy=sum(sum(F2.*A(i:i+2,j:j+2)));
%Magnitude of vector
I(i+1,j+1)=sqrt(Gx.^2+Gy.^2);
end
end
I=uint8(I);
figure,imshow(I);title('Filtered
Image');
%Define a threshold value
Thresh=210;
B=max(I,Thresh);
B(B==round(Thresh))=0;
B=im2bw(B);
figure,imshow(B);title('Edge detected
Image');
EXPLANATION:
1. Read
the image
2. Convert
the image to double
3. Use
the mask F1 for x direction and F2 for y direction and obtain the gradient of
the image.
4. Find
the magnitude of the vector.
5. Since
we need 3x3 image pixels, the border pixels are not considered, and so starting
from the pixel (2, 2) the edge detection process starts.
%Magnitude of vector
In the for loop 2 is subtracted.
%Magnitude of vector
I(i+1,j+1)=sqrt(Gx.^2+Gy.^2);
When i=1 and j =1, then Image I pixel position will be I(2,2).Thus we are not considering the borders.
Example:
"
for i=1:size(A,1)-2
6. Threshold
the image
7. Display
the logical image
Advantage:
1. Sobel masks perform better noise suppression.
2.
Image smoothing
Disadvantage:
1. Diagonal
direction points are not preserved always.
8 comments:
sir can u please post the canny edge detection code
sir, can u please post the max pooling convolution
Thanks in advance.
hi!
wanted to know, if you can share any proof supporting '1. Sobel masks perform better noise suppression.' mentioned as an advantage.
Thank You for your sharing. This is awesome.
what is the use of threshold
will you provide the threshold code in java after getting the gradient value please
will u please provide the threshold code in java after detecting the gradient value
thank you
Enjoyed Reading? Share Your Views