zoom_image_size — Skalieren von Bildern auf eine vorgegebene Größe.
zoom_image_size(Image : ImageZoom : Width, Height, Interpolation : )
zoom_image_size vergrößert das Bild Image auf die
durch Width und Height vorgegebene Größe. Der
Parameter Interpolation gibt dabei die Art der verwendeten
Interpolationsmethode an (siehe affine_trans_image). Die
Domäne des Eingabebildes wird ignoriert, d.h. es wird die volle
Domäne des Bildrechtecks angenommen.
Falls der Systemparameter 'int_zooming' auf 'true'
gesetzt ist, kann die intern verwendete Integer-Arithmetik in den
folgenden drei Fällen zu Fehlern führen: Zum einen kann das
Ergebnisbild leicht fehlerhafte Grauwerte enthalten, wenn
zoom_image_size auf ein uint2 oder int2 Bild mit hohem
Dynamikbereich (das heißt, Bilder mit Werten nahe an den Grenzen der
entsprechenden Typen) angewendet wird und gleichzeitig
Skalierungsfaktoren (Verhältnis von Ausgabe- zu Eingabebildgröße)
kleiner als 0.5 verwendet werden.
Zum zweiten können undefinierte Grauwerte am unteren und am rechten
Bildrand entstehen, wenn für Interpolation ein anderer Wert als
'nearest_neighbor' gewählt wird, ein großer
Skalierungsfaktor angewendet wird und außerdem ein großes
Ergebnisbild entsteht. Die maximale Breite
dieses Randes mit undefinierten Grauwerten kann mit der Formel
abgeschätzt werden, wobei S den Skalierungsfaktor in
einer Dimension und I die Größe des Ausgabebildes in der
entsprechenden Dimension darstellt.
Zum dritten können undefinierte Grauwerte an allen Bildrändern entstehen,
wenn für Interpolation 'nearest_neighbor' gewählt wird,
es sich um ein Real-Bild handelt, und wenn sowohl Eingabe- als auch
Ergebnisbild groß sind.
In allen Fällen wird empfohlen,
den Systemparameter 'int_zooming' mittels
set_system auf 'false' zu setzen.
Wird 'nearest_neighbor' als Interpolationsmethode gesetzt, können die Ergebnisse für verschiedene Bildtypen leicht voneinander abweichen. Grund dafür sind Bildtyp-spezifische Optimierungen des Interpolationsverfahrens.
zoom_image_size wird nicht intern parallelisiert, wenn
Width und Height den halben Dimensionen von
Image entsprechen. Außerdem erfolgt keine interne
Parallelisierung für
Interpolation='nearest_neighbor'.
zoom_image_size kann auf OpenCL-Geräten ausgeführt werden,
wenn das Eingangsbild die maximale Größe für Bildobjekte des
ausgewählten Gerätes nicht überschreitet. Aus numerischen Gründen
kann es dabei zu geringfügigen Abweichungen des Ergebnisses
gegenüber der Ausführung auf der CPU kommen.
Image (input_object) (multichannel-)image(-array) → object (byte* / int2* / uint2* / real*) *erlaubt für Compute Devices
Eingabebild
ImageZoom (output_object) (multichannel-)image(-array) → object (byte / int2 / uint2 / real)
Skaliertes Ausgabebild.
Width (input_control) extent.x → (integer)
Breite des Zielbildes.
Default: 512
Wertevorschläge: 128, 256, 512
Wertebereich:
2
≤
Width
≤
512
Minimale Schrittweite: 1
Empfohlene Schrittweite: 10
Height (input_control) extent.y → (integer)
Höhe des Zielbildes.
Default: 512
Wertevorschläge: 128, 256, 512
Wertebereich:
2
≤
Height
≤
512
Minimale Schrittweite: 1
Empfohlene Schrittweite: 10
Interpolation (input_control) string → (string)
Art der Interpolation.
Default: 'constant'
Werteliste: 'bicubic', 'bilinear', 'constant', 'nearest_neighbor', 'weighted'
read_image(Image,'monkey') dev_display (Image) zoom_image_size(Image,ZoomImage,200,200,'constant') dev_display (ZoomImage)
zoom_image_factor,
affine_trans_image,
hom_mat2d_scale
hom_mat2d_scale,
affine_trans_image
Foundation