Hi all, i try to detect the edges of my image. I use canny edge detector.
Then i tried [c,r]=find(Image==1) to detect the white pixels. I thought in a b/w image the edges would be the white pixels, but this not works quite good. For example the vector with the coordinates is the follwing:
I made a grid for every pixel in image using the method that Steves proposed
As you can see the first pixel [64,2] is not laying on a white pixel while some other are on whites.
Does anyone have any idea why this is happening? Are the edges on a binary image the white pixel or not? If yes then why i get also black pixels coordinates.

 Accepted Answer

I suspect you're getting confused with your coordinates. In particular, the names of the variables in your line:
[c, r] = find(...rest does not matter
are very misleading, as c is going to be the rows and r the columns where white pixels are found. Typically, one writes:
[r, c] = find(...rest does not matter.
Also, note that the upper left corner of the image is (1, 1) not (0,0). find returns matrix indices which are 1-based.

4 Comments

This is my structure with the lines. The point1 is the starting point and point2 the ending. So lets say i start from the row 4 and column 50.
In my image the [4,50] is zero as you can see down.
Capture1.PNG
Capture1.PNG
But if i consider the the vice versa i detect an 1
Capture1.PNG
As you can see my first line starts from a white pixel
Capture1.PNG
Any suggestions?
The question is if i say i want to detect the edges on a binary image, the edges must be white or they can be also black
An edge does not have a colour. An edge (in a binary image) is the transition from black to white or white to black. Matlab The resulting edge image will have the edges shown in white indeed. Which side of the edge is actually set to white depends on the algorithm you use.
okey thanks

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!