Broadly a majority of the literature on edge detection algorithms and applications that uses edge detection, references Canny's edge detector. So much so that it looks like almost "the solution" to edge detection. Certainly, it would do the best job balancing noise and preserving edges.

However, as a simple curiosity, is there an area of concern for Canny's edge detector? or are there areas of applications where Canny will not be best?

In this context, faster implementation is not really concern. The focus of edge detector being good or bad should be the quality and utility of edges generated.

Also, I am really not focusing on implementation specific issues. I am looking for more theoretical limitations or characteristics inherent in the algorithm.

  • $\begingroup$ Interestingly this question here Best way of segmenting veins in leaves? needed edge detection. One of the results shown is Canny and doesn't look too good. Though, many aspects could be implementation problem vs. it could be plain limitation of Canny! Any views on that? $\endgroup$ – Dipan Mehta Mar 15 '12 at 7:41
  • $\begingroup$ Please see my answer (dsp.stackexchange.com/questions/1714/…), it shows a better result than what he got from Canny. $\endgroup$ – Geerten Mar 15 '12 at 10:29
  • $\begingroup$ Possible (partial) dupe: dsp.stackexchange.com/questions/74/… (or at least related). The question itself is pretty much the same (for a part), the answers are somewhat different from the answers on this question. $\endgroup$ – Geerten Mar 16 '12 at 13:06
  • 1
    $\begingroup$ @DipanMehta: So the Canny edge detector shouldn't be used to detect things that are not edges? :) $\endgroup$ – endolith Mar 29 '12 at 20:36

From my experience, the following points are limitations:

  • The result is binary. You sometimes need a measure of 'how much' the edge qualifies as an edge (e.g. intensity image coming from a Sobel amplitude edge detector)
  • The amount of parameters leads to infinitely tweaking for getting just that little better result.
  • You still need to connect the resulting edges to extract the complete edges that seem so obvious for the human eye+mind.
  • Also due to the gaussian smoothing: the location of the edges might be off, depending on the size of the gaussian kernel.

  • The method has problems with corners and junctions:

    • The gaussian smoothing blurs them out, making them harder to detect (same goes for the edges themself)
    • The corner pixels look in the wrong directions for their neighbors, leaving open ended edges, and missing junctions

This last problem is addressed by the SUSAN method, which connects edges better and also results in nice junctions, as shown by these example figures as given in the linked paper:

Test input image:

Test input image

Results SUSAN:

Results SUSAN

Results Canny:

Results Canny

You can clearly see SUSAN finds the corners and junctions instead of Canny.

  • $\begingroup$ Ok, what you are referring to are mostly implementation related issues. I agree such issues might exists, but in my opinion lot many other edge detection and other algorithm. I am looking for more theoretical limitations or characteristics inherent in the algorithm. $\endgroup$ – Dipan Mehta Mar 14 '12 at 10:26
  • $\begingroup$ I disagree, the thresholding (leading to a binary image), and the parameters are parts of the method (as described in Canny's paper). I don't see this as implementation details. $\endgroup$ – Geerten Mar 14 '12 at 10:47
  • $\begingroup$ Thresholding is done by every edge detector and hence output of each edge detector is binary. I would take your point about difficulty in tweaking parameters and Gaussian smoothing aspect but unlike LoG type of operator, Canny actually finds most optimum amount of smoothing in the presence of noise. $\endgroup$ – Dipan Mehta Mar 14 '12 at 11:15
  • 2
    $\begingroup$ Thresholding is not done by every edge detector (e.g. Sobel, as is mentioned in my answer). It is a common and logical follow up step in many cases, but not a basic step of every edge detection method. $\endgroup$ – Geerten Mar 14 '12 at 11:47

or are there areas of applications where Canny will not be best?

I can think of a few:

  • if you need closed curves, a detector that can guarantee those might be better (e.g. zero crossings of the laplacian or watershed segmentation)
  • if you're trying to detect a homogeneous object that has low contrast in some areas, a segmentation method that uses global information (like watershed segmentation) can give better results

in my experience the process of edge detection with canny edge detector smoothens the edges before being able to detect them and the timing and the length of the filter has to be a perfect match to detect all the edges without error.


I just want to mention one limitation of Canny detector, which hinders its application, and that is parameter setting. I think parameter setting is not only a problem for Canny detector but also a problem for other edge detection methods.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.