EDGE DETECTION
Grégoire Malandain
Image edges may be defined by:
- Zero-crossings of the laplacian (Haralick's definition)
- Maxima of the gradient modulus in the gradient direction
(Canny-Deriche's definition)
- others (see the huge related literature)
In this example, edges are considered to be the maxima of the gradient
modulus in the direction of the gradient.
A sagittal and an axial slice of a 3D MR data volume.
The edge detection is performed in 2D on each sagittal slice, and the
results are collected to form a 3D volume. Edges are superimposed on
the original 3D MR data volume. One may notice that the collection of
2D edges is not coherent along the third dimension.
"2D edges" superimposed on the original 3D MR data volume.
On the other hand, 3D edges look nicer.
3D edges superimposed on the original 3D MR data volume.
A small library (written in C)
allowing 2D or 3D edge detection with recursive filtering
(see Recursive filtering and edge tracking: two primary tools for 3-D edge detection, Olivier Monga, Rachid Deriche, Grégoire Malandain, Jean-Pierre Cocquerez
Image and Vision Computing, 1991, 9 (4), pp.203--214.)
and a
connected components extraction tools (which allows hysteresis thresholding)
are available for non-commercial uses only.
Original image |
|
Edge detection with Deriche's recursive filter
(~ exp(-alpha |x|) )
|
%test-edges-pnm greg-rmn.pgm greg-rmn.a=alpha.ppm -a alpha
|
|
|
|
alpha=0.5 |
alpha=1.0 |
alpha=1.5 |
Edge detection with a recursive approximation of the Gaussian
|
%test-edges-pnm greg-rmn.pgm greg-rmn.s=sigma.ppm -s sigma
|
|
|
|
sigma=1.0 |
sigma=2.0 |
sigma=5.0 |
Hysteresis thresholding on previous results
(edge detection with a recursive approximation of the Gaussian)
|
low threshold = 10, high threshold = 20,
minimal size of connected component = 30
|
%test-hyster-pnm greg-rmn.s=sigma.ppm greg-rmn.s=sigma.lt=10.ht=20.ms=30.ppm -lt 10 -ht 20 -ms 30
|
|
|
|
sigma=1.0 |
sigma=2.0 |
sigma=5.0 |
Although it has be designed for edge detection (and thus performs
smoothing and first order derivatives), the filtering part of the code
can be used to compute image derivatives up to the second order
(e.g. curvatures).
Grégoire Malandain
Last modified: Mon Feb 12 15:12:45 MET 2001