Charlie's topological edge detector. More...
#include <osl/osl_canny_port.h>
#include <osl/osl_edge_detector_params.h>
#include <vil1/vil1_image.h>
Go to the source code of this file.
Classes | |
struct | osl_edge_detector |
Charlie's topological edge detector.
A class for performing topologically-accurate edgel detection. NB: this implementation is (unintentionally) stochastic, so you don't necessarily get the same results from the same image.
The basic implementation is based on that described in Canny's thesis in that we compute the norm of the gradient, but then we use non-maximal suppression dynamically to set the edge strength thresholds. Non-maximal suppression is actually done using a variant of Tsai-Fu thinning, and not as described in Canny's thesis.
Full documentation is given in INRIA technical report 2444, 1994.
Modifications: CAR March 1995: improved memory management so that computation time is reduced. Re-use of certain large arrays. Tried to re-write Set_thresholds() to use Delauney triangulation rather than Chamfer filtering. This didn't work as computation time became far too high. JLM May 1995: Added a mask in Compute_gradient to support edge detection within a polygonal region. Should add a similar test in smoothing and derivative iterations for maximum efficiency, but it isn't clear that there would be a big overall gain, given the computation of IsMasked(x,y). JLM May 1995: Added a histogram of edgel strengths as an additional output to support edgel change detection. The histogram is constructed in Set_thresholds JLM May 1995 Added a new Do_edge_detector signature to output an edgel group which bundles edgel chains and gradient statistics together. JLM May 1997 Modified the formation of the gradient histogram computation so that values are accumulated only along edgel chains. New accumulation is in Follow_curves(edges). The old code is still in place but commented out. (Look for "May") The old code just histogrammed the gradient magnitude. JLM June 1997 Found a bug in the above change which failed if ghist_ is NULL. JLM Dec 1997 Moved sigma_, low_, gauss_tail_ and verbose_ up to osl_edge_detector_params and added new syle constructors and execution
Definition in file osl_edge_detector.h.