dual_rankdual_rankDualRankDualRank (Operator)

Name

dual_rankdual_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)

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

HImage HImage::DualRank(const wchar_t* MaskType, Hlong Radius, Hlong ModePercent, const wchar_t* Margin) const   (Nur Windows)

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_rankDualRankDualRankDualRank führt eine nichtlineare Transformation der Grauwerte aller Eingabebilder (ImageImageImageImageimage) durch. Als strukturierende Elemente können Kreise oder Quadrate verwendet werden. dual_rankdual_rankDualRankDualRankDualRank ist die Hintereinanderschaltung von zwei Aufrufen von rank_imagerank_imageRankImageRankImageRankImage. Bei dem ersten Aufruf wird der Ranggrauwert mit dem angegeben Rang (ModePercentModePercentModePercentModePercentmodePercent) berechnet. Das Ergebnis dieser Berechnung ist die Eingabe zu einem erneuten Aufruf von rank_imagerank_imageRankImageRankImageRankImage, wobei diesmal der Rangwert 100-ModePercentModePercentModePercentModePercentmodePercent verwendet wird.

Es kann bei der Filterung zwischen verschiedenen Randbehandlungen (MarginMarginMarginMarginmargin) 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 angegebene 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 (= ModePercentModePercentModePercentModePercentmodePercent, Rangwert von 0...100 in Prozent) ausgewählt und als Ergebnisgrauwert bei dem jeweiligen Ausgabebild eingetragen.

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

Das Konzept der Glättungsfilter ist in der Einleitung zum Kapitel Filter / Glättung beschrieben.

Achtung

Beachten Sie, dass Filteroperatoren eventuell unerwartete Resultate ausgeben, wenn ein Bild mit einer reduzierten Domäne als Input übergeben wird. Weitere Informationen können im Kapitel Filter gefunden werden.

Ausführungsinformationen

Parameter

ImageImageImageImageimage (input_object)  (multichannel-)image(-array) objectHImageHImageHobject (byte / int2 / uint2 / int4 / real)

Zu filterndes Bild.

ImageRankImageRankImageRankImageRankimageRank (output_object)  multichannel-image(-array) objectHImageHImageHobject * (byte / int2 / uint2 / int4 / real)

Gefiltertes Bild.

MaskTypeMaskTypeMaskTypeMaskTypemaskType (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Form der Maske.

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

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

RadiusRadiusRadiusRadiusradius (input_control)  integer HTupleHTupleHtuple (integer) (int / long) (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 ≤ 101

Minimale Schrittweite: 1

Empfohlene Schrittweite: 2

ModePercentModePercentModePercentModePercentmodePercent (input_control)  integer HTupleHTupleHtuple (integer) (int / long) (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 ≤ 100

Minimale Schrittweite: 1

Empfohlene Schrittweite: 2

MarginMarginMarginMarginmargin (input_control)  string HTupleHTupleHtuple (string / integer / real) (string / int / long / double) (HString / Hlong / double) (char* / Hlong / double)

Randbehandlung.

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

Wertevorschläge: 'mirrored'"mirrored""mirrored""mirrored""mirrored", 'cyclic'"cyclic""cyclic""cyclic""cyclic", '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)

Komplexität

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

Ergebnis

Sind die Parameterwerte korrekt, dann liefert dual_rankdual_rankDualRankDualRankDualRank 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>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

read_imageread_imageReadImageReadImageReadImage

Nachfolger

thresholdthresholdThresholdThresholdThreshold, dyn_thresholddyn_thresholdDynThresholdDynThresholdDynThreshold, sub_imagesub_imageSubImageSubImageSubImage, regiongrowingregiongrowingRegiongrowingRegiongrowingRegiongrowing

Alternativen

rank_imagerank_imageRankImageRankImageRankImage, gray_closinggray_closingGrayClosingGrayClosingGrayClosing, gray_openinggray_openingGrayOpeningGrayOpeningGrayOpening, median_imagemedian_imageMedianImageMedianImageMedianImage

Siehe auch

gen_circlegen_circleGenCircleGenCircleGenCircle, gen_rectangle1gen_rectangle1GenRectangle1GenRectangle1GenRectangle1, gray_erosion_rectgray_erosion_rectGrayErosionRectGrayErosionRectGrayErosionRect, gray_dilation_rectgray_dilation_rectGrayDilationRectGrayDilationRectGrayDilationRect, sigma_imagesigma_imageSigmaImageSigmaImageSigmaImage

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