Name
dual_rankdual_rankDualRankdual_rankDualRankDualRank — Opening, Median und Closing mit Kreis- oder Rechteckmaske.
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
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)
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.
- 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.
Form der Maske.
Defaultwert:
'circle'
"circle"
"circle"
"circle"
"circle"
"circle"
Werteliste: 'circle'"circle""circle""circle""circle""circle", 'square'"square""square""square""square""square"
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
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
read_image(Image,'fabrik')
dual_rank(Image,ImageOpening,'circle',10,10,'mirrored')
disp_image(ImageOpening,WindowHandle)
read_image(&Image,"fabrik");
dual_rank(Image,&ImageOpening,"circle",10,10,"mirrored");
disp_image(ImageOpening,WindowHandle);
read_image(Image,'fabrik')
dual_rank(Image,ImageOpening,'circle',10,10,'mirrored')
disp_image(ImageOpening,WindowHandle)
read_image(Image,'fabrik')
dual_rank(Image,ImageOpening,'circle',10,10,'mirrored')
disp_image(ImageOpening,WindowHandle)
read_image(Image,'fabrik')
dual_rank(Image,ImageOpening,'circle',10,10,'mirrored')
disp_image(ImageOpening,WindowHandle)
read_image(Image,'fabrik')
dual_rank(Image,ImageOpening,'circle',10,10,'mirrored')
disp_image(ImageOpening,WindowHandle)
Pro Bildpunkt: O(sqrt(F) * 10) mit F =
Fläche des strukturierenden Elementes.
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.
read_imageread_imageReadImageread_imageReadImageReadImage
thresholdthresholdThresholdthresholdThresholdThreshold,
dyn_thresholddyn_thresholdDynThresholddyn_thresholdDynThresholdDynThreshold,
sub_imagesub_imageSubImagesub_imageSubImageSubImage,
regiongrowingregiongrowingRegiongrowingregiongrowingRegiongrowingRegiongrowing
rank_imagerank_imageRankImagerank_imageRankImageRankImage,
gray_closinggray_closingGrayClosinggray_closingGrayClosingGrayClosing,
gray_openinggray_openingGrayOpeninggray_openingGrayOpeningGrayOpening,
median_imagemedian_imageMedianImagemedian_imageMedianImageMedianImage
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
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
Foundation