Error in my edge detection function?

Technical Source
2 min readFeb 9, 2023

--

I’m attempting to create a canny edge detector and I’ve run into a speed bump while checking for the edge pixels. Below I have the code I’m using to check which pixel is on an edge but I keep getting the error “Attempted to access mag(0,18); index must be a positive integer or logical” Is there a way to fix this? For this code, mag=gradient magnitude, dir=gradient direction, img=image, and edgecand=the edge candidate.

edgecand = mag;
for x=1:size(img,1);
for y=1:size(img,2);
if (dir(x,y)==1);
if(mag(x,y)>mag(x-1,y))&&(mag(x,y)>mag(x+1,y));
%happy
else edgecand(x,y)=0;
end
end
if (dir(x,y)==2);
if(mag(x,y)<mag(x+1,y+1))&&(mag(x,y)>mag(x-1,y-1));
%happy
else edgecand(x,y)=0;
end
end
if (dir(x,y)==3);
if(mag(x,y)>mag(x,y-1))&&(mag(x,y)<mag(x,y+1));
%happy
else edgecand(x,y)=0;
end
end
if (dir(x,y)==4);
if(mag(x,y)>mag(x+1,y-1))&&(mag(x,y)<mag(x-1,y+1));
%happy
else edgecand(x,y)=0;
end
end
end
end

NOTE:-

Matlabsolutions.com provide latest MatLab Homework Help,MatLab Assignment Help , Finance Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.

Try This

c=imread('carplate1.jpg');
b=rgb2gray(c);

px=[-1 0 1;-1 0 1;-1 0 1]; %_horizontal edges,
b1=filter2(px,b);
figure,imshow(b1/255)

py=px'; %%_vertical edges,
b2=filter2(py,b);
figure,imshow(b2/255)

edge_p=sqrt(b1.^2+b2.^2);
figure,imshow(edge_p/255)
%figure,imshow(edge_p/512), Dividing by 512 darkens the image
%figure,imshow(edge_p/128), Dividing by 128 Lighten the image,

edge_t=im2bw(edge_p/255,0.3); %a binary image containing edges only can be produced by thresholding.
figure,imshow(edge_t)
%edge_g=im2bw(edge_p/255,0.3);
%figure,imshow(edge_g)

SEE COMPLETE ANSWER CLICK THE LINK

--

--

Technical Source

Simple! That is me, a simple person. I am passionate about knowledge and reading. That’s why I have decided to write and share a bit of my life and thoughts to.