prewitt_dir ( Image : ImageEdgeAmp, ImageEdgeDir : : )

Detect edges (amplitude and direction) using the Prewitt operator.

prewitt_dir calculates an approximation of the first derivative of the image data and is used as an edge detector. The filter is based on the following filter masks:

  A =
        1       1       1
        0       0       0
       -1      -1      -1

  B =
        1       0      -1
        1       0      -1
        1       0      -1  
The result image contains the maximum response of the masks A and B. The edge directions are returned in ImageEdgeDir, and are stored in 2-degree steps, i.e., an edge direction of x degrees with respect to the horizontal axis is stored as x / 2 in the edge direction image. Furthermore, the direction of the change of intensity is taken into account. Let [Ex,Ey] denote the image gradient. Then the following edge directions are returned as r/2:
intensity increase                     Ex / Ey        edge direction r

from bottom to top                      0 / +         0
from lower right to upper left          + / -         ]0,90[
from right to left                      + / 0         90 
from upper right to lower left          + / +         ]90,180[
from top to bottom                      0 / +         180 
from upper left to lower right          - / +         ]180,270[
from left to right                      + / 0         270
from lower left to upper right          - / -         ]270,360[.
Points with edge amplitude 0 are assigned the edge direction 255 (undefined direction).


Parameters

Image (input_object)
image(-array) -> object : byte
Input image.

ImageEdgeAmp (output_object)
image(-array) -> object : byte
Edge amplitude (gradient magnitude) image.

ImageEdgeDir (output_object)
image(-array) -> object : direction
Edge direction image.


Example
read_image(:Image:'fabrik':) >
prewitt_dir(Image:PrewittA,PrewittD::) >
threshold__(PrewittA:Edges:128,255:).

Result

prewitt_dir always returns TRUE. If the input is empty the behaviour can be set via set_system(::'no_object_result',<Result>:). If necessary, an exception is raised.


Possible Predecessors

gauss__, sigma__, median, smooth__


Possible Successors

hysteresis_threshold__, threshold__, grey_skeleton__, nonmax_suppression_dir, close_edges1, close_edges2


Alternatives

edges__, sobel_dir, robinson_dir, frei_dir, kirsch_dir


See also

bandpass__, laplace_of_gauss



Copyright © 1996-1997 MVTec Software GmbH