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.
Answer
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:
Results SUSAN:
Results Canny:
You can clearly see SUSAN finds the corners and junctions instead of Canny.
No comments:
Post a Comment