Search code examples
image-processingcomputer-visionedge-detection

Edge Detection method better than Canny Edge detection


Is there an Edge Detection Method that performs significantly better than the Canny Edge Detector ??


Solution

  • The term better needs some explanation. I personally consider a Canny edge detector slow and … unstable for a simple reason: it uses a set of highly non-linear algorithms that does too many complex operations (segmentation, non-max suppression, etc) which makes it extremely unstable and sensitive to noise. Yes, it can pull out weak edges but ‘blinking' and noise are too high to work well for, say, matching application. On the other hand, such a simple operation as Sobel is linear and stable, so for matching I would use Sobel rather than Canny. If you are interested in text detection, for example, then instead of edges you may want to use connected components or MSER to extract your features. The point is, the term better strongly depends on your application.

    Last but not least - it is wrong to start thinking about your project from the point of view of the algorithm yet it is done so often! Think about the operational definition of your goal, features, probabilities and only then implementation. "We write down not the steps to solve the problem but the problem itself" - as Simon Prince eloquently put it. So if you had a question about better algorithm but you truly want to understand computer vision better, I strongly recommend you to buy his book ( this one is really readable, greatly illustrated and motivate and the best gentle introduction to computer vision I ever known). On the opposite side of the spectrum is classical Heartly and Zisserman's Multiple View geometry that is a great source of formulas but sadly is highly unreadable.