| Operatoren |
rank_image — Rangfilterung mit beliebigen Masken.
rank_image führt eine Rangfilterung des Eingabebildes Image mit einer Maske, die durch die Region Mask beschrieben wird, durch und liefert das gefilterte Bild in ImageRank zurück. Die Form der Maske kann beliebig gewählt werden und z.B. mit Operatoren wie gen_circle oder draw_region erzeugt werden. Die Position der Maske spielt dabei keine Rolle, da der Schwerpunkt der Maskenregion als Referenzpunkt der Maske verwendet wird.
Konzeptuell sortiert der Rangfilter alle Grauwerte innerhalb der Maske aufsteigend und wählt dann den Grauwert mit dem Rang Rank aus. Dabei entspricht der Rang 1 dem kleinsten Grauwert und der Rang A dem größten Grauwert innerhalb der Maske. Hierbei ist A die Fläche von Mask (siehe area_center). Für Rank = (A - 1) / 2 + 1 liefert rank_image den Median zurück (siehe median_image). Für Rank = 1 entspricht rank_image einer Grauwerterosion (siehe gray_erosion_rect, gray_erosion_shape und gray_erosion), für Rank = A entspricht rank_rect einer Grauwertdilatation (siehe gray_dilation_rect, gray_dilation_shape und gray_dilation).
rank_image kann unter anderem zur Rauschunterdrückung oder zum Unterdrücken unerwünschter Objekte, die kleiner als die Maske sind, verwendet werden. Außerdem ist rank_image unempfindlicher gegenüber Rauschen als die entsprechenden Operatoren der Grauwertmorpholgie. Um eine robustere Version der Grauwertmorphologie zu erhalten, empfiehlt es sich daher, anstatt 1 bzw. A etwas höhere bzw. niedrigere Werte für Rank zu wählen.
Bei der Filterung kann über Margin zwischen verschiedenen Randbehandlungen 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.
rank_image verwendet einen Algorithmus mit einer Laufzeit pro Pixel, die von der Anzahl der Sehnen der Maske Mask abhängt. Daher ist rank_image für rechteckige Masken mit einer großen Maskenhöhe langsamer als rank_rect. Die genaue Maskenhöhe, ab der rank_rect schneller ist, ist abhängig von der Rechnerarchitektur (Prozessortyp, Verfügbarkeit von SIMD-Befehlen wie SSE2 oder MMX, Cachegröße und -durchsatz, Speicherdurchsatz). Typischerweise ist das für eine Maskenhöhe > 15 der Fall, kann aber z.B. bei nicht vorhandenen SIMD-Befehlen und langsamem Speicher auch erst für größere Maskenhöhen zutreffen.
Weiterhin ist zu beachten, dass rank_rect aufgrund der rekursiven Implementierung die Filterantwort intern auf dem kleinsten umschließenden Rechteck der Region des Bildes berechnet. Falls die Region nur einen sehr kleinen Teil des umschließenden Rechtecks abdeckt, kann es daher vorkommen, dass rank_image auch für größere Maskenhöhen schneller als rank_rect ist.
rank_image sollte weder mit Rank = 1 zur Berechnung einer Grauwerterosion noch mit Rank = A zur Berechnung einer Grauwertdilatation verwendet werden. In diesen Fällen sind die Operatoren gray_erosion_rect, gray_erosion_shape oder gray_erosion bzw. gray_dilation_rect, gray_dilation_shape oder gray_dilation typischerweise schneller als rank_image.
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.
Zu filterndes Bild.
Filtermaske.
Gefiltertes Bild.
Rang des Ausgabegrauwerts.
Defaultwert: 5
Wertevorschläge: 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 31, 49, 51, 61, 71, 81, 91, 101
Typischer Wertebereich: 1 ≤ Rank ≤ 4095
Minimale Schrittweite: 1
Empfohlene Schrittweite: 2
Randbehandlung.
Defaultwert: 'mirrored'
Wertevorschläge: 'mirrored', 'cyclic', 'continued', 0, 30, 60, 90, 120, 150, 180, 210, 240, 255
read_image (Image, 'fabrik') draw_region (Region, WindowHandle) rank_image (Image, Region, ImageRank, 5, 'mirrored') dev_display(ImageRank)
Pro Bildpunkt: O(N), wobei N die Anzahl der Sehnen von Mask ist (siehe runlength_features).
Sind die Parameterwerte korrekt, dann liefert rank_image den Wert 2 (H_MSG_TRUE). Das Verhalten bei leerer Eingabe (keine Eingabebilder vorhanden) lässt sich mittels set_system('no_object_result',<Result>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
read_image, draw_region, gen_circle, gen_rectangle1, gen_rectangle2
threshold, dyn_threshold, regiongrowing
rank_rect, median_image, median_rect
gray_erosion_rect, gray_dilation_rect, gray_erosion_shape, gray_dilation_shape, gray_erosion, gray_dilation
T.S. Huang, G.J. Yang, G.Y. Tang; „A Fast Two-Dimensional Median
Filtering Algorithm“; IEEE Transactions on Acoustics, Speech, and
Signal Processing, vol. 27, no. 1, pp. 13-18, 1979.
R. Haralick, L. Shapiro; „Computer and Robot Vision“;
Addison-Wesley, 1992, pp. 318-320.
Foundation
| Operatoren |