Question
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)); %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+1,y-1))&&(mag(x,y)
Expert Answer
Kshitij Singh
PhD Expert
Answered Aug 17, 2026
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)
%We can obtain edges by the Prewitt _filters
edge_k=edge(b,'prewitt');
figure,imshow(edge_k)
%We can obtain edges by the Prewitt _filters
edge_s=edge(b,'sobel');
figure,imshow(edge_s)
100% Run Guarantee
3-Hour Fast-Track Delivery
Need a Custom Version or Complete Simulation for This Problem?
Our 500+ PhD engineers build, debug, and optimize working MATLAB scripts and Simulink (.slx) models tailored to your exact assignment rubrics with zero plagiarism.
Tested on MATLAB R2024b / R2026a
Turnitin 0% Plagiarism Report
Free 7-Day Revisions Guarantee
Have a different question? Ask here
Related detection Questions & Solutions
Browse All →
Explore similar technical troubleshooting questions and verified MATLAB solutions:
Ready-to-Run MATLAB & Simulink Projects
Browse All Projects →