Next: Gaussian-Laplacian Pyramid Image Coding
Up: canny
Previous: Canny Edge Detection
Why can humans perceive edges seemingly effortlessly, while it is usually
quite difficult for an edge detection algorithmto find them ? One reason
is that human vision has access to the global information while the
gradient operator only has local information contained in a 3x3 or 5x5
neighborhood. The difference is probably best appreciated by thinking of a
mouse in a maze and a bird looking down from the sky.
Here is a method that combines both global and local information to detect
edges while suppressing noise (textures, etc.) at the same time.
- Build an image pyramid. Assume the size of the given image is N by N
where
. The image pyramid is a hierarchical structure composed of n
levels of the same image of different resolutions. At the bottom of the
pyramid is the given full size image. Each set of
neighboring
pixels is replaced by their average as the pixel value of the image at the
next level. This process, which reduces the image size by half, is repeated
times until finally an image of only 1 pixel (average of entire
image) is generated as the top of the pyramid.
- Find a proper level in the pyramid where noise is sufficiently supressed
while major edges are still represented. For each edge element, a pixel with
its gradient greater than a threshold, search its 4 children in the next level
to identify finer edge elements. Do this recursively untill finding edges with
fine details but without interference of noise.
Here is the psudo code for the method, where function EdgeOp(k,i,j) is an
edge detector for image of level k and it returns a value indicating how
likely pixel (i,j) is an edge pixel, such as the magnitude of the gradient.
If this value is greater than a threshold
for this level, the pixel
is on an edge and its four children in the next level are recursively
checked again.
Next: Gaussian-Laplacian Pyramid Image Coding
Up: canny
Previous: Canny Edge Detection
Ruye Wang
2013-09-25