| Operatoren |
rank_rect — Rangfilterung mit rechteckigen Rangmasken.
rank_rect(Image : ImageRank : MaskWidth, MaskHeight, Rank : )
rank_rect führt eine Rangfilterung des Eingabebildes Image mit einer rechteckigen Maske der Größe MaskWidth × MaskHeight durch und liefert das gefilterte Bild in ImageRank zurück.
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 MaskWidth * MaskHeight dem größten Grauwert innerhalb der Maske. Für Rank = (MaskWidth * MaskHeight - 1) / 2 + 1 liefert rank_rect den Median zurück (siehe median_rect). Für Rank = 1 entspricht rank_rect einer Grauwerterosion (siehe gray_erosion_rect, gray_erosion_shape und gray_erosion), für Rank = MaskWidth * MaskHeight entspricht rank_rect einer Grauwertdilatation (siehe gray_dilation_rect, gray_dilation_shape und gray_dilation).
rank_rect 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_rect 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. MaskWidth * MaskHeight etwas höhere bzw. niedrigere Werte für Rank zu wählen.
Werden für MaskHeight oder MaskWidth gerade statt ungerade Werte übergeben, verwendet rank_rect an ihrer Stelle die nächstgrößeren ungeraden Werte.
rank_rect verwendet einen Algorithmus mit konstanter Laufzeit pro Pixel, so dass die Laufzeit des Operators nur von der Eingabebildgröße und nicht von der Maskengröße abhängt. Daher ist rank_rect für große Masken die schnellste Implementierung des Rangfilters in HALCON. Abhängig von der Rechnerarchitektur (Prozessortyp, Verfügbarkeit von SIMD-Befehlen wie SSE2 oder MMX, Cachegröße und -durchsatz, Speicherdurchsatz) ist für kleine Werte von MaskHeight die in rank_image verwendete Implementierung schneller als rank_rect. Typischerweise ist das für MaskHeight 15 der Fall, kann aber z.B. bei nicht vorhandenen SIMD-Befehlen und langsamem Speicher auch für größere Werte von MaskHeight 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 Werte von MaskHeight schneller als rank_rect ist.
rank_rect sollte weder mit Rank = 1 zur Berechnung einer Grauwerterosion noch mit Rank = MaskWidth * MaskHeight zur Berechnung einer Grauwertdilatation verwendet werden. In diesen Fällen sind die Operatoren gray_erosion_rect oder gray_erosion_shape bzw. gray_dilation_rect oder gray_dilation_shape für fast alle Maskengrößen schneller als rank_rect.
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.
Gefiltertes Bild.
Breite der Filtermaske.
Defaultwert: 15
Wertevorschläge: 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 31, 49, 51, 61, 71, 81, 91, 101
Typischer Wertebereich: 3 ≤ MaskWidth ≤ 4095
Minimale Schrittweite: 2
Empfohlene Schrittweite: 2
Höhe der Filtermaske.
Defaultwert: 15
Wertevorschläge: 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 31, 49, 51, 61, 71, 81, 91, 101
Typischer Wertebereich: 3 ≤ MaskHeight ≤ 4095
Minimale Schrittweite: 2
Empfohlene Schrittweite: 2
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
Minimale Schrittweite: 1
Empfohlene Schrittweite: 2
Restriktion: 1 <= Rank && Rank <= MaskWidth * MaskHeight
Pro Bildpunkt: O(1).
Sind die Parameterwerte korrekt, dann liefert rank_rect 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.
threshold, dyn_threshold, regiongrowing
rank_image, median_rect, median_image
gray_erosion_rect, gray_dilation_rect, gray_erosion_shape, gray_dilation_shape, gray_erosion, gray_dilation
S. Perreault, P. Hébert; „Median Filtering in Constant Time“;
IEEE Transactions on Image Processing, vol. 16, no. 9,
pp. 2389-2394, 2007.
D. Cline, K.B. White, P.K. Egbert; „Fast 8-Bit Median Filtering
Based On Separability“; International Conference on Image
Processing, vol. V, pp. 281-284, 2007.
Foundation
| Operatoren |