| Operatoren |
median_rect — Medianfilterung mit rechteckigen Masken.
median_rect(Image : ImageMedian : MaskWidth, MaskHeight : )
median_rect führt eine Medianfilterung des Eingabebildes Image mit einer rechteckigen Maske der Größe MaskWidth × MaskHeight durch und liefert das gefilterte Bild in ImageMedian zurück.
Konzeptuell sortiert der Medianfilter alle Grauwerte innerhalb der Maske aufsteigend und wählt dann den Median der Grauwerte aus. Der Median ist der „mittlere“ der sortierten Grauwerte, d.h. der Grauwert mit dem Rang (Position) (MaskWidth * MaskHeight - 1) / 2 + 1 der sortierten Grauwerte, wobei der Rang 1 dem kleinsten Grauwert und der Rang MaskWidth * MaskHeight dem größten Grauwert innerhalb der Maske entspricht (siehe auch rank_rect).
median_rect kann unter anderem zur Glättung von Bildern, zum Unterdrücken unterwünschter Objekte (z.B. Punkte und Linienstrukturen), die kleiner als die Maske sind, und somit zur Schätzung der Hintergrundbeleuchtung für eine Shading-Korrektur oder als Vorverarbeitung für die dynamische Schwellwertoperation (siehe dyn_threshold) verwendet werden.
median_rect kann bei Verwendung einer quadratischen 3x3 oder 5x5 Filtermaske auf OpenCL Geräten ausgeführt werden.
Werden für MaskWidth oder MaskHeight gerade statt ungerade Werte übergeben, verwendet median_rect an ihrer Stelle die nächstgrößeren ungeraden Werte.
median_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 median_rect für große Masken die schnellste Implementierung des Medianfilters 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 median_image und rank_image verwendete Implementierung schneller als median_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 median_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 median_image und rank_image auch für größere Werte von MaskHeight schneller als median_rect sind.
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
Werteliste (für Compute Devices): 3, 5
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
Werteliste (für Compute Devices): 3, 5
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
Pro Bildpunkt: O(1).
Sind die Parameterwerte korrekt, dann liefert median_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
median_image, rank_rect, rank_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 |