Operator Reference

frei_dirfrei_dirFreiDirFreiDirfrei_dir (Operator)

frei_dirfrei_dirFreiDirFreiDirfrei_dir — Detect edges (amplitude and direction) using the Frei-Chen operator.

Signature

frei_dir(Image : ImageEdgeAmp, ImageEdgeDir : : )

Herror frei_dir(const Hobject Image, Hobject* ImageEdgeAmp, Hobject* ImageEdgeDir)

Herror T_frei_dir(const Hobject Image, Hobject* ImageEdgeAmp, Hobject* ImageEdgeDir)

void FreiDir(const HObject& Image, HObject* ImageEdgeAmp, HObject* ImageEdgeDir)

HImage HImage::FreiDir(HImage* ImageEdgeDir) const

static void HOperatorSet.FreiDir(HObject image, out HObject imageEdgeAmp, out HObject imageEdgeDir)

HImage HImage.FreiDir(out HImage imageEdgeDir)

def frei_dir(image: HObject) -> Tuple[HObject, HObject]

Description

frei_dirfrei_dirFreiDirFreiDirfrei_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:

The result image contains the maximum response of the masks A and B. The edge directions are returned in ImageEdgeDirImageEdgeDirImageEdgeDirimageEdgeDirimage_edge_dir, and are stored in 2-degree steps, i.e., an edge direction of degrees in mathematically positive sense and with respect to the horizontal axis is stored as in the edge direction image. Furthermore, the direction of the change of intensity is taken into account. Let denote the image gradient. Then the following edge directions are returned as : Points with edge amplitude 0 are assigned the edge direction 255 (undefined direction).

Attention

Note that filter operators may return unexpected results if an image with a reduced domain is used as input. Please refer to the chapter Filters.

Execution Information

  • Multithreading type: reentrant (runs in parallel with non-exclusive operators).
  • Multithreading scope: global (may be called from any thread).
  • Automatically parallelized on tuple level.
  • Automatically parallelized on channel level.
  • Automatically parallelized on domain level.

Parameters

ImageImageImageimageimage (input_object)  (multichannel-)image(-array) objectHImageHObjectHObjectHobject (byte / int2 / uint2)

Input image.

ImageEdgeAmpImageEdgeAmpImageEdgeAmpimageEdgeAmpimage_edge_amp (output_object)  (multichannel-)image(-array) objectHImageHObjectHObjectHobject * (byte / int2 / uint2)

Edge amplitude (gradient magnitude) image.

ImageEdgeDirImageEdgeDirImageEdgeDirimageEdgeDirimage_edge_dir (output_object)  (multichannel-)image(-array) objectHImageHObjectHObjectHobject * (direction)

Edge direction image.

Example (HDevelop)

read_image(Image,'fabrik')
frei_dir(Image,Frei_dirA,Frei_dirD)
threshold(Frei_dirA,Res,128,255)

Example (C)

read_image(&Image,"fabrik");
frei_dir(Image,&Frei_dirA,&Frei_dirD);
threshold(Frei_dirA,&Res,128,255);

Example (HDevelop)

read_image(Image,'fabrik')
frei_dir(Image,Frei_dirA,Frei_dirD)
threshold(Frei_dirA,Res,128,255)

Example (HDevelop)

read_image(Image,'fabrik')
frei_dir(Image,Frei_dirA,Frei_dirD)
threshold(Frei_dirA,Res,128,255)

Result

frei_dirfrei_dirFreiDirFreiDirfrei_dir always returns 2 ( H_MSG_TRUE) . If the input is empty the behavior can be set via set_system('no_object_result',<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>). If necessary, an exception is raised.

Possible Predecessors

binomial_filterbinomial_filterBinomialFilterBinomialFilterbinomial_filter, gauss_filtergauss_filterGaussFilterGaussFiltergauss_filter, sigma_imagesigma_imageSigmaImageSigmaImagesigma_image, median_imagemedian_imageMedianImageMedianImagemedian_image, smooth_imagesmooth_imageSmoothImageSmoothImagesmooth_image

Possible Successors

hysteresis_thresholdhysteresis_thresholdHysteresisThresholdHysteresisThresholdhysteresis_threshold, thresholdthresholdThresholdThresholdthreshold, gray_skeletongray_skeletonGraySkeletonGraySkeletongray_skeleton, nonmax_suppression_dirnonmax_suppression_dirNonmaxSuppressionDirNonmaxSuppressionDirnonmax_suppression_dir, close_edgesclose_edgesCloseEdgesCloseEdgesclose_edges, close_edges_lengthclose_edges_lengthCloseEdgesLengthCloseEdgesLengthclose_edges_length

Alternatives

edges_imageedges_imageEdgesImageEdgesImageedges_image, sobel_dirsobel_dirSobelDirSobelDirsobel_dir, robinson_dirrobinson_dirRobinsonDirRobinsonDirrobinson_dir, prewitt_dirprewitt_dirPrewittDirPrewittDirprewitt_dir, kirsch_dirkirsch_dirKirschDirKirschDirkirsch_dir

See also

bandpass_imagebandpass_imageBandpassImageBandpassImagebandpass_image, laplace_of_gausslaplace_of_gaussLaplaceOfGaussLaplaceOfGausslaplace_of_gauss

Module

Foundation