KlassenKlassenKlassenKlassen | | | | Operatoren

prewitt_dirprewitt_dirPrewittDirprewitt_dirPrewittDirPrewittDir (Operator)

Name

prewitt_dirprewitt_dirPrewittDirprewitt_dirPrewittDirPrewittDir — Kantendetektion (Amplitude und Richtung) mit dem Prewitt-Operator.

Signatur

prewitt_dir(Image : ImageEdgeAmp, ImageEdgeDir : : )

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

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

Herror prewitt_dir(Hobject Image, Hobject* ImageEdgeAmp, Hobject* ImageEdgeDir)

HImage HImage::PrewittDir(HImage* ImageEdgeDir) const

HImageArray HImageArray::PrewittDir(HImageArray* ImageEdgeDir) const

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

HImage HImage::PrewittDir(HImage* ImageEdgeDir) const

void HOperatorSetX.PrewittDir(
[in] IHUntypedObjectX* Image, [out] IHUntypedObjectX*ImageEdgeAmp, [out] IHUntypedObjectX*ImageEdgeDir)

IHImageX* HImageX.PrewittDir([out] IHImageX*ImageEdgeDir)

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

HImage HImage.PrewittDir(out HImage imageEdgeDir)

Beschreibung

prewitt_dirprewitt_dirPrewittDirprewitt_dirPrewittDirPrewittDir berechnet eine Näherung der erster Ableitung der Grauwertdaten und wird als Kantenfilter eingesetzt. Dem Filter liegen folgende zwei Filtermasken zugrunde:

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

  B =
        1       0      -1
        1       0      -1
        1       0      -1
Im Ausgabebild ist die maximale Filterantwort der Maske A und B eingetragen. In dem Parameter ImageEdgeDirImageEdgeDirImageEdgeDirImageEdgeDirImageEdgeDirimageEdgeDir wird die Kantenrichtungen zurückgeliefert. Diese werden in 2 Grad Schritten kodiert, d.h. eine Kantenrichtung von x Grad (im mathematisch positiven Sinn und bezogen auf die Horizontale) wird zu x / 2 im entsprechenden Ergebnisbild. Außerdem wird auch die Richtung der Helligkeitsänderung berücksichtigt. Bezeichnet [Ex,Ey] den Bildgradienten, ergeben sich folgende Kantenrichtungen r (zurückgeliefert als r/2) zwischen 0 und 359 Grad:
In Bildpunkten mit Kantenamplitude 0 wird als Kantenrichtung der Wert 255 (undefinierte Richtung) zurückgeliefert.

Parallelisierung

Parameter

ImageImageImageImageImageimage (input_object)  (multichannel-)image(-array) objectHImageHImageHImageHImageXHobject (byte / int2 / uint2)

Eingabebild.

ImageEdgeAmpImageEdgeAmpImageEdgeAmpImageEdgeAmpImageEdgeAmpimageEdgeAmp (output_object)  (multichannel-)image(-array) objectHImageHImageHImageHImageXHobject * (byte / int2 / uint2)

Kantenamplitude.

ImageEdgeDirImageEdgeDirImageEdgeDirImageEdgeDirImageEdgeDirimageEdgeDir (output_object)  (multichannel-)image(-array) objectHImageHImageHImageHImageXHobject * (direction)

Kantenrichtung.

Beispiel (HDevelop)

read_image(Image,'fabrik')
prewitt_dir(Image,PrewittA,PrewittD)
threshold(PrewittA,Edges,128,255)

Beispiel (C)

read_image(&Image,"fabrik");
prewitt_dir(Image,&PrewittA,&PrewittD);
threshold(PrewittA,&Edges,128,255);

Beispiel (HDevelop)

read_image(Image,'fabrik')
prewitt_dir(Image,PrewittA,PrewittD)
threshold(PrewittA,Edges,128,255)

Beispiel (HDevelop)

read_image(Image,'fabrik')
prewitt_dir(Image,PrewittA,PrewittD)
threshold(PrewittA,Edges,128,255)

Beispiel (HDevelop)

read_image(Image,'fabrik')
prewitt_dir(Image,PrewittA,PrewittD)
threshold(PrewittA,Edges,128,255)

Beispiel (HDevelop)

read_image(Image,'fabrik')
prewitt_dir(Image,PrewittA,PrewittD)
threshold(PrewittA,Edges,128,255)

Ergebnis

prewitt_dirprewitt_dirPrewittDirprewitt_dirPrewittDirPrewittDir liefert immer den Wert 2 (H_MSG_TRUE). Das Verhalten bei leerer Eingabe (keine Eingabebilder vorhanden) lässt sich mittels set_system('no_object_result',<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

binomial_filterbinomial_filterBinomialFilterbinomial_filterBinomialFilterBinomialFilter, gauss_filtergauss_filterGaussFiltergauss_filterGaussFilterGaussFilter, sigma_imagesigma_imageSigmaImagesigma_imageSigmaImageSigmaImage, median_imagemedian_imageMedianImagemedian_imageMedianImageMedianImage, smooth_imagesmooth_imageSmoothImagesmooth_imageSmoothImageSmoothImage

Nachfolger

hysteresis_thresholdhysteresis_thresholdHysteresisThresholdhysteresis_thresholdHysteresisThresholdHysteresisThreshold, thresholdthresholdThresholdthresholdThresholdThreshold, gray_skeletongray_skeletonGraySkeletongray_skeletonGraySkeletonGraySkeleton, nonmax_suppression_dirnonmax_suppression_dirNonmaxSuppressionDirnonmax_suppression_dirNonmaxSuppressionDirNonmaxSuppressionDir, close_edgesclose_edgesCloseEdgesclose_edgesCloseEdgesCloseEdges, close_edges_lengthclose_edges_lengthCloseEdgesLengthclose_edges_lengthCloseEdgesLengthCloseEdgesLength

Alternativen

edges_imageedges_imageEdgesImageedges_imageEdgesImageEdgesImage, sobel_dirsobel_dirSobelDirsobel_dirSobelDirSobelDir, robinson_dirrobinson_dirRobinsonDirrobinson_dirRobinsonDirRobinsonDir, frei_dirfrei_dirFreiDirfrei_dirFreiDirFreiDir, kirsch_dirkirsch_dirKirschDirkirsch_dirKirschDirKirschDir

Siehe auch

bandpass_imagebandpass_imageBandpassImagebandpass_imageBandpassImageBandpassImage, laplace_of_gausslaplace_of_gaussLaplaceOfGausslaplace_of_gaussLaplaceOfGaussLaplaceOfGauss

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren