dual_rank dual_rank DualRank DualRank dual_rank (Operator)
Name
dual_rank dual_rank DualRank DualRank dual_rank — Opening, Median und Closing mit Kreis- oder Rechteckmaske.
Signatur
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_rank dual_rank DualRank DualRank DualRank dual_rank führt eine nichtlineare Transformation der
Grauwerte aller Eingabebilder (Image Image Image Image image image ) durch. Als
strukturierende Elemente können Kreise oder Quadrate verwendet
werden. dual_rank dual_rank DualRank DualRank DualRank dual_rank ist die Hintereinanderschaltung von
zwei Aufrufen von rank_image rank_image RankImage RankImage RankImage rank_image . Bei dem ersten Aufruf wird
der Ranggrauwert mit dem angegeben Rang (ModePercent ModePercent ModePercent ModePercent modePercent mode_percent )
berechnet. Das Ergebnis dieser Berechnung ist die Eingabe zu einem
erneuten Aufruf von rank_image rank_image RankImage RankImage RankImage rank_image , wobei diesmal der Rangwert
100-ModePercent ModePercent ModePercent ModePercent modePercent mode_percent verwendet wird.
Es kann bei der Filterung zwischen verschiedenen Randbehandlungen
(Margin Margin Margin Margin margin margin ) 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 (=
ModePercent ModePercent ModePercent ModePercent modePercent mode_percent , Rangwert von 0...100 in Prozent)
ausgewählt und als Ergebnisgrauwert bei dem jeweiligen Ausgabebild
eingetragen.
Hat ModePercent ModePercent ModePercent ModePercent modePercent mode_percent den Wert 0, so erhält man ein
Grauwert-Opening (gray_opening gray_opening GrayOpening GrayOpening GrayOpening gray_opening ). Setzt man
ModePercent ModePercent ModePercent ModePercent modePercent mode_percent auf 50, so erhält man den bekannten
Medianfilter (median_image median_image MedianImage MedianImage MedianImage median_image ), zweimal hintereinander
angewandt. Bei dem Wert 100 berechnet dual_rank dual_rank DualRank DualRank DualRank dual_rank das
Grauwert-Closing (gray_closing gray_closing GrayClosing GrayClosing GrayClosing gray_closing ). 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
Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
Automatisch parallelisiert auf Tupelebene.
Automatisch parallelisiert auf Kanalebene.
Automatisch parallelisiert auf Domainebene.
Parameter
Image Image Image Image image image (input_object) (multichannel-)image(-array) → object HImage HObject HImage Hobject (byte / int2 / uint2 / int4 / real)
Zu filterndes Bild.
ImageRank ImageRank ImageRank ImageRank imageRank image_rank (output_object) multichannel-image(-array) → object HImage HObject HImage Hobject * (byte / int2 / uint2 / int4 / real)
Gefiltertes Bild.
MaskType MaskType MaskType MaskType maskType mask_type (input_control) string → HTuple str HTuple Htuple (string) (string ) (HString ) (char* )
Form der Maske.
Defaultwert:
'circle'
"circle"
"circle"
"circle"
"circle"
"circle"
Werteliste: 'circle' "circle" "circle" "circle" "circle" "circle" , 'square' "square" "square" "square" "square" "square"
Radius Radius Radius Radius radius radius (input_control) integer → HTuple int HTuple Htuple (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
radius
≤
101
Minimale Schrittweite: 1
Empfohlene Schrittweite: 2
ModePercent ModePercent ModePercent ModePercent modePercent mode_percent (input_control) integer → HTuple int HTuple Htuple (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
mode_percent
≤
100
Minimale Schrittweite: 1
Empfohlene Schrittweite: 2
Margin Margin Margin Margin margin margin (input_control) string → HTuple Union[int, float, str] HTuple Htuple (string / integer / real) (string / int / long / double) (HString / 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)
Komplexität
Pro Bildpunkt:
mit F =
Fläche des strukturierenden Elementes.
Ergebnis
Sind die Parameterwerte korrekt, dann liefert dual_rank dual_rank DualRank DualRank DualRank dual_rank
den Wert 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>) set_system("no_object_result",<Result>) festlegen.
Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
Vorgänger
read_image read_image ReadImage ReadImage ReadImage read_image
Nachfolger
threshold threshold Threshold Threshold Threshold threshold ,
dyn_threshold dyn_threshold DynThreshold DynThreshold DynThreshold dyn_threshold ,
sub_image sub_image SubImage SubImage SubImage sub_image ,
regiongrowing regiongrowing Regiongrowing Regiongrowing Regiongrowing regiongrowing
Alternativen
rank_image rank_image RankImage RankImage RankImage rank_image ,
gray_closing gray_closing GrayClosing GrayClosing GrayClosing gray_closing ,
gray_opening gray_opening GrayOpening GrayOpening GrayOpening gray_opening ,
median_image median_image MedianImage MedianImage MedianImage median_image
Siehe auch
gen_circle gen_circle GenCircle GenCircle GenCircle gen_circle ,
gen_rectangle1 gen_rectangle1 GenRectangle1 GenRectangle1 GenRectangle1 gen_rectangle1 ,
gray_erosion_rect gray_erosion_rect GrayErosionRect GrayErosionRect GrayErosionRect gray_erosion_rect ,
gray_dilation_rect gray_dilation_rect GrayDilationRect GrayDilationRect GrayDilationRect gray_dilation_rect ,
sigma_image sigma_image SigmaImage SigmaImage SigmaImage sigma_image
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