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.
sir can u please post the canny edge detection code
ReplyDeletesir, can u please post the max pooling convolution
ReplyDeleteThanks in advance.
hi!
ReplyDeletewanted 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.
ReplyDeletewhat is the use of threshold
ReplyDeletewill you provide the threshold code in java after getting the gradient value please
ReplyDeletewill u please provide the threshold code in java after detecting the gradient value
ReplyDeletethank you
ReplyDelete