KlassenKlassenKlassenKlassen | | | | Operatoren

dual_rankdual_rankDualRankdual_rankDualRankDualRank (Operator)

Name

dual_rankdual_rankDualRankdual_rankDualRankDualRank — Opening, Median und Closing mit Kreis- oder Rechteckmaske.

Signatur

dual_rank(Image : ImageRank : MaskType, Radius, ModePercent, Margin : )

Herror dual_rank(const Hobject Image, Hobject* ImageRank, const char* MaskType, const Hlong Radius, const Hlong ModePercent, const char* Margin)

Herror T_dual_rank(const Hobject Image, Hobject* ImageRank, const Htuple MaskType, const Htuple Radius, const Htuple ModePercent, const Htuple Margin)

Herror dual_rank(Hobject Image, Hobject* ImageRank, const HTuple& MaskType, const HTuple& Radius, const HTuple& ModePercent, const HTuple& Margin)

HImage HImage::DualRank(const HTuple& MaskType, const HTuple& Radius, const HTuple& ModePercent, const HTuple& Margin) const

HImageArray HImageArray::DualRank(const HTuple& MaskType, const HTuple& Radius, const HTuple& ModePercent, const HTuple& Margin) const

void DualRank(const HObject& Image, HObject* ImageRank, const HTuple& MaskType, const HTuple& Radius, const HTuple& ModePercent, const HTuple& Margin)

HImage HImage::DualRank(const HString& MaskType, Hlong Radius, Hlong ModePercent, const HTuple& Margin) const

HImage HImage::DualRank(const HString& MaskType, Hlong Radius, Hlong ModePercent, const HString& Margin) const

HImage HImage::DualRank(const char* MaskType, Hlong Radius, Hlong ModePercent, const char* Margin) const

void HOperatorSetX.DualRank(
[in] IHUntypedObjectX* Image, [out] IHUntypedObjectX*ImageRank, [in] VARIANT MaskType, [in] VARIANT Radius, [in] VARIANT ModePercent, [in] VARIANT Margin)

IHImageX* HImageX.DualRank(
[in] BSTR MaskType, [in] Hlong Radius, [in] Hlong ModePercent, [in] VARIANT Margin)

static void HOperatorSet.DualRank(HObject image, out HObject imageRank, HTuple maskType, HTuple radius, HTuple modePercent, HTuple margin)

HImage HImage.DualRank(string maskType, int radius, int modePercent, HTuple margin)

HImage HImage.DualRank(string maskType, int radius, int modePercent, string margin)

Beschreibung

dual_rankdual_rankDualRankdual_rankDualRankDualRank führt eine nichtlineare Transformation der Grauwerte aller Eingabebilder (ImageImageImageImageImageimage) durch. Als strukturierende Elemente können Kreise oder Quadrate verwendet werden. dual_rankdual_rankDualRankdual_rankDualRankDualRank ist die Hintereinanderschaltung von zwei Aufrufen von rank_imagerank_imageRankImagerank_imageRankImageRankImage. Bei dem ersten Aufruf wird der Ranggrauwert mit dem angegeben Rang (ModePercentModePercentModePercentModePercentModePercentmodePercent) berechnet. Das Ergebnis dieser Berechnung ist die Eingabe zu einem erneuten Aufruf von rank_imagerank_imageRankImagerank_imageRankImageRankImage, wobei diesmal der Rangwert 100-ModePercentModePercentModePercentModePercentModePercentmodePercent verwendet wird.

Es kann bei der Filterung zwischen verschiedenen Randbehandlungen (MarginMarginMarginMarginMarginmargin) gewählt werden:

    Grauwert     Bildpunkte außerhalb der Bildränder
                 werden als konstant (mit dem angegebenen
                 Grauwert) angenommen.
    'continued'  Fortsetzung der Randpunkte.
    'cyclic'     zyklische Fortsetzung der Bildränder.
    'mirrored'   Spiegelung der Bildpunkte an den Bildrändern.
Die Berechnung einer Rangfilterung erfolgt nach folgendem Schema: Die angebene Maske wird so über das zu filterndes Bild geschoben, dass der Schwerpunkt der Maske alle Bildpunkte einmal berührt. Für jeden solchen Bildpunkt werden alle Nachbarpunkte, die von der Maske überdeckt werden, bzgl. ihrer Grauwerte aufsteigend sortiert. Jede solche sortierte Sequenz von Grauwerten enthält somit genau so viele Grauwerte, wie die Maske Bildpunkte hat. Aus diesen Sequenzen wird das n-größte Element (= ModePercentModePercentModePercentModePercentModePercentmodePercent, Rangwert von 0...100 in Prozent) ausgewählt und als Ergebnisgrauwert bei dem jeweiligen Ausgabebild eingetragen.

Hat ModePercentModePercentModePercentModePercentModePercentmodePercent den Wert 0, so erhält man ein Grauwert-Opening (gray_openinggray_openingGrayOpeninggray_openingGrayOpeningGrayOpening). Setzt man ModePercentModePercentModePercentModePercentModePercentmodePercent auf 50, so erhält man den bekannten Medianfilter (median_imagemedian_imageMedianImagemedian_imageMedianImageMedianImage), zweimal hintereinander angewandt. Bei dem Wert 100 berechnet dual_rankdual_rankDualRankdual_rankDualRankDualRank das Grauwert-Closing (gray_closinggray_closingGrayClosinggray_closingGrayClosingGrayClosing). Mit den übrigen Parametern kann fließend zwischen zwischen diesen Operationen „überblendet“ werden.

Parallelisierung

Parameter

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

Zu filterndes Bild.

ImageRankImageRankImageRankImageRankImageRankimageRank (output_object)  multichannel-image(-array) objectHImageHImageHImageHImageXHobject * (byte / int2 / uint2 / int4 / real)

Gefiltertes Bild.

MaskTypeMaskTypeMaskTypeMaskTypeMaskTypemaskType (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Form der Maske.

Defaultwert: 'circle' "circle" "circle" "circle" "circle" "circle"

Werteliste: 'circle'"circle""circle""circle""circle""circle", 'square'"square""square""square""square""square"

RadiusRadiusRadiusRadiusRadiusradius (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Radius der Filtermaske.

Defaultwert: 1

Wertevorschläge: 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 15, 19, 25, 31, 39, 47, 59

Typischer Wertebereich: 1 ≤ Radius Radius Radius Radius Radius radius ≤ 101

Minimale Schrittweite: 1

Empfohlene Schrittweite: 2

ModePercentModePercentModePercentModePercentModePercentmodePercent (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Modus des Filters: Bei 0 erhält man ein Grauwert-Opening, bei 50 einen Median und bei 100 ein Grauwert-Closing.

Defaultwert: 10

Wertevorschläge: 0, 2, 5, 10, 15, 20, 40, 50, 60, 80, 85, 90, 95, 98, 100

Typischer Wertebereich: 0 ≤ ModePercent ModePercent ModePercent ModePercent ModePercent modePercent ≤ 100

Minimale Schrittweite: 1

Empfohlene Schrittweite: 2

MarginMarginMarginMarginMarginmargin (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string / integer / real) (string / int / long / double) (HString / Hlong / double) (char* / Hlong / double) (BSTR / Hlong / double) (char* / Hlong / double)

Randbehandlung.

Defaultwert: 'mirrored' "mirrored" "mirrored" "mirrored" "mirrored" "mirrored"

Wertevorschläge: 'mirrored'"mirrored""mirrored""mirrored""mirrored""mirrored", 'cyclic'"cyclic""cyclic""cyclic""cyclic""cyclic", 'continued'"continued""continued""continued""continued""continued", 0, 30, 60, 90, 120, 150, 180, 210, 240, 255

Beispiel (HDevelop)

read_image(Image,'fabrik')
dual_rank(Image,ImageOpening,'circle',10,10,'mirrored')
dev_display(ImageOpening)

Beispiel (C)

read_image(&Image,"fabrik");
dual_rank(Image,&ImageOpening,"circle",10,10,"mirrored");
disp_image(ImageOpening,WindowHandle);

Beispiel (HDevelop)

read_image(Image,'fabrik')
dual_rank(Image,ImageOpening,'circle',10,10,'mirrored')
dev_display(ImageOpening)

Beispiel (HDevelop)

read_image(Image,'fabrik')
dual_rank(Image,ImageOpening,'circle',10,10,'mirrored')
dev_display(ImageOpening)

Beispiel (HDevelop)

read_image(Image,'fabrik')
dual_rank(Image,ImageOpening,'circle',10,10,'mirrored')
dev_display(ImageOpening)

Beispiel (HDevelop)

read_image(Image,'fabrik')
dual_rank(Image,ImageOpening,'circle',10,10,'mirrored')
dev_display(ImageOpening)

Komplexität

Pro Bildpunkt: mit F = Fläche des strukturierenden Elementes.

Ergebnis

Sind die Parameterwerte korrekt, dann liefert dual_rankdual_rankDualRankdual_rankDualRankDualRank 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

read_imageread_imageReadImageread_imageReadImageReadImage

Nachfolger

thresholdthresholdThresholdthresholdThresholdThreshold, dyn_thresholddyn_thresholdDynThresholddyn_thresholdDynThresholdDynThreshold, sub_imagesub_imageSubImagesub_imageSubImageSubImage, regiongrowingregiongrowingRegiongrowingregiongrowingRegiongrowingRegiongrowing

Alternativen

rank_imagerank_imageRankImagerank_imageRankImageRankImage, gray_closinggray_closingGrayClosinggray_closingGrayClosingGrayClosing, gray_openinggray_openingGrayOpeninggray_openingGrayOpeningGrayOpening, median_imagemedian_imageMedianImagemedian_imageMedianImageMedianImage

Siehe auch

gen_circlegen_circleGenCirclegen_circleGenCircleGenCircle, gen_rectangle1gen_rectangle1GenRectangle1gen_rectangle1GenRectangle1GenRectangle1, gray_erosion_rectgray_erosion_rectGrayErosionRectgray_erosion_rectGrayErosionRectGrayErosionRect, gray_dilation_rectgray_dilation_rectGrayDilationRectgray_dilation_rectGrayDilationRectGrayDilationRect, sigma_imagesigma_imageSigmaImagesigma_imageSigmaImageSigmaImage

Literatur

W. Eckstein, O. Munkelt „Extracting Objects from Digital Terrain Model“ Remote Sensing and Reconstruction for Threedimensional Objects and Scenes, SPIE Symposium on Optical Science, Engeneering, and Instrumentation, July 1995, San Diego

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren