mean_image — Glättung durch Mittelwertbildung.
mean_image(Image : ImageMean : MaskWidth, MaskHeight : )
mean_image führt eine lineare Glättung mit den Grauwerten
aller Eingabebilder (Image) durch. Die Filtermatrix
besteht aus Einsen (gleich gewichtet) und hat die Größe
MaskHeight x MaskWidth. Das Ergebnis der Faltung wird durch
MaskHeight x MaskWidth dividiert. Als Randbehandlung werden die
Grauwerte an den Bildrändern gespiegelt.
Für mean_image sind spezielle Optimierungen unter Verwendung von
SIMD Technologie implementiert. Ob diese tatsächlich zur Anwendung kommen,
kann über den Systemparameter 'mmx_enable'
(siehe set_system)
gesteuert werden. Falls 'mmx_enable' auf 'true' gesetzt
wird (und die verwendete Hardware SIMD Technologie unterstützt), wird die
Berechnung intern unter Verwendung von SIMD Technologie durchgeführt.
Es ist zu beachten, dass der Beschleunigungseffekt von SIMD Technologie
bei großen, kompakten Eingaberegionen am größten ist. Im Einzelfall kann
aber die Ausführung von mean_image, abhängig von der Eingaberegion
und den Hardwareeigenschaften, mit SIMD Technologie auch länger dauern als
ohne.
In jedem Falle wirkt es sich günstig auf das Laufzeitverhalten von
mean_image aus, wenn man die Eingaberegion von Image so
wählt, dass es zu keiner Randbehandlung kommt.
Das Konzept der Glättungsfilter ist in der Einleitung zum Kapitel Filter / Glättung beschrieben.
Werden für MaskHeight oder MaskWidth gerade
statt ungerade Werte übergeben, verwendet die Routine an ihrer
Stelle die nächstgrößeren ungeraden Werte (damit ist der
Schwerpunkt der Filtermaske immer eindeutig bestimmt).
Für real-Bilder wird die Filterantwort intern mit einfach genauer Fließkommaarithmetik (single precision) berechnet. Dies kann zu Überläufen (und damit zu fehlerhaften Ergebnissen) führen, wenn der gesamte Wertebereich von real-Bildern verwendet wird.
mean_image kann für byte-, int2-, uint2-, int4- und real-Bilder auf
OpenCL-Geräten ausgeführt werden, wenn MaskHeight kleiner als
zweimal
die Höhe von Image ist. Der OpenCL Code berechnet die Filterantwort
intern mit 32 bit Integerarithmetik (für real-Bilder wird einfach genaue
Fließkommaarithmetik verwendet). Dies kann zu Überläufen (und damit zu
fehlerhaften Ergebnissen) führen, wenn der gesamte Wertebereich von int4-
oder real-Bildern verwendet wird. Da zur Verbesserung der Laufzeit für eine
MaskWidth größer 9 ein vollständiger Scan jeder Zeile von
Image berechnet wird, kann es in diesem Fall auch bei byte-, int2-
oder uint2-Bildern zu Überläufen kommen, wenn Image sehr breit ist.
In solchen Fällen muss die CPU-Version von mean_image verwendet
werden.
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.
Image (input_object) (multichannel-)image(-array) → object (byte* / int2* / uint2* / int4* / int8 / real* / vector_field) *erlaubt für Compute Devices
Zu glättendes Bild.
ImageMean (output_object) (multichannel-)image(-array) → object (byte / int2 / uint2 / int4 / int8 / real / vector_field)
Geglättetes Bild.
MaskWidth (input_control) extent.x → (integer)
Breite der Filtermaske.
Defaultwert: 9
Wertevorschläge: 3, 5, 7, 9, 11, 15, 23, 31, 43, 61, 101
Typischer Wertebereich: 1
≤
MaskWidth
Minimale Schrittweite: 2
Empfohlene Schrittweite: 2
Restriktion: odd(MaskWidth) && MaskWidth < width(Image) * 2
MaskHeight (input_control) extent.y → (integer)
Höhe der Filtermaske.
Defaultwert: 9
Wertevorschläge: 3, 5, 7, 9, 11, 15, 23, 31, 43, 61, 101
Typischer Wertebereich: 1
≤
MaskHeight
Minimale Schrittweite: 2
Empfohlene Schrittweite: 2
Restriktion: odd(MaskHeight) && MaskHeight < height(Image) * 2
read_image(Image,'fabrik') mean_image(Image,Mean,3,3) dev_display(Mean)
Pro Bildpunkt: O(15).
Sind die Parameterwerte korrekt, dann liefert mean_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.
reduce_domain,
rectangle1_domain
binomial_filter,
gauss_filter,
smooth_image,
mean_image_shape
anisotropic_diffusion,
sigma_image,
convol_image,
gen_lowpass
Foundation