Edge detection using sobel operator

11 views (last 30 days)
Milind Amga
Milind Amga on 8 Oct 2020
Commented: J. Alex Lee on 9 Oct 2020
Can anyone point out what's causing the error in the code below?
Below is the code for detecting edge using sobel operator.
Thank you for your time and effort in advance.
function output = edgy(a)
a = double(a);
[row col] = size(a);
My = [-1 -2 -1;0 0 0;1 2 1];
Mx =[-1 0 1;-2 0 2;-1 0 1];
a3 =zeros(row,col);
for i =1:row-2
for j=1:col-2
Gx = sum(sum(Mx.*a(i:i+2, j:j+2)));
Gy = sum(sum(My.*a(i:i+2, j:j+2)));
filtered_image(i,j) = sqrt(Gx.^2 + Gy.^2);
filtered_image = uint8(filtered_image);
thresholdvalue =100;
output = max(filtered_image,thresholdvalue);
J. Alex Lee
J. Alex Lee on 9 Oct 2020
Ah ok. If you have access to full matlab (image processing toolbox), look into imfilter() as Image Analyst suggests, but also imgradientxy(). Then later you can look into conv2().

Sign in to comment.

Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!