1
votes

I was developing an analysis of the performance of different edge detetors (Canny, Sobel and Roberts). Matlab give us the function edge, that has as one of its inputs the parameter threshold. I gave the same threshold (=0.1) to all of them (Matlab automatically generated the low threshold for Canny's detector). The result, given the code that I wrote, was:

shows results of edge detectors, thresholded, with each finding a different amount of edges

(Ignored the LoG detector, I think I can interpret those results).

After that, I tested those same filters but with a different threshold (=0.8, which gave a 0.32 low-threshold for Canny's detector). However, now only Canny detects boundaries that are associated with stronger edges (stronger gradients associated with boundaries that separate structures with higher contrast):

!shows same results for higher threshold, some methods don’t find any edges

I can't understand those results, because if Canny detects stronger boundaries and Sobel is more sensitive for stronger boundaries (as we seen for threshold = 0.1 where it almost only detects abrupt changes of intensity), then why does Sobel not seem to calculate an estimate of the gradient that is comparable to that given by Canny?

With that arises another question: what does the threshold value for Canny, Sobel and Roberts really mean? I would say they were a value of the magnitude of the gradient, somehow normalized because it has to belong to [0,1] (that I don't understand as well, normalized relative to what?)

1
Why did you expect the thresholds to be comparable? For all methods, higher threshold means fewer edges. But you need to adjust those individually for each method. - Cris Luengo
Yes i understand that higher thresholds means fewer edges (and strong ones). But i don't understand the threshold discrepancies between methods: why the boundarys given by canny for threshold = 0.8 are similar to those detected by sobel for threshold = 0.1 ? why stronger edges for sobel method are associated with threshold = 0.1 and for canny threshold = 0.8? - Mariana Mourão
Remember Canny uses a different, lower threshold to find the edges you see. It just selects them based on each edge having at least one pixel above the high threshold. With Sobel, picking a larger threshold resulted in no edges, not weak edges. All edges were below that threshold. Type edit edge to see the implementation of these algorithms (it was an M-file 10 years ago, not sure it still is). - Cris Luengo
Normalized with respect to the grayscale range. Usually, 0-255 is mapped to 0-1. - Yves Daoust

1 Answers

0
votes

Different edge detectors have no reason to require equal thresholds because they respond differently to different types of edges (in terms of contrast, sharpness, noise), and no threshold will segment the same edge set.

In addition, the formulas can have different "scaling factors", depending on the implementation. The best you can hope for is that if you pick thresholds that suit you for different methods on the same image, the thresholds will vary proportionally on other images.