KlassenKlassenKlassenKlassen | | | | Operatoren

scale_imagescale_imageScaleImagescale_imageScaleImageScaleImage (Operator)

Name

scale_imagescale_imageScaleImagescale_imageScaleImageScaleImage — Skalieren von Grauwerten.

Signatur

scale_image(Image : ImageScaled : Mult, Add : )

Herror scale_image(const Hobject Image, Hobject* ImageScaled, double Mult, double Add)

Herror T_scale_image(const Hobject Image, Hobject* ImageScaled, const Htuple Mult, const Htuple Add)

Herror scale_image(Hobject Image, Hobject* ImageScaled, const HTuple& Mult, const HTuple& Add)

HImage HImage::ScaleImage(const HTuple& Mult, const HTuple& Add) const

HImageArray HImageArray::ScaleImage(const HTuple& Mult, const HTuple& Add) const

void ScaleImage(const HObject& Image, HObject* ImageScaled, const HTuple& Mult, const HTuple& Add)

HImage HImage::ScaleImage(const HTuple& Mult, const HTuple& Add) const

HImage HImage::ScaleImage(double Mult, double Add) const

void HOperatorSetX.ScaleImage(
[in] IHUntypedObjectX* Image, [out] IHUntypedObjectX*ImageScaled, [in] VARIANT Mult, [in] VARIANT Add)

IHImageX* HImageX.ScaleImage(
[in] VARIANT Mult, [in] VARIANT Add)

static void HOperatorSet.ScaleImage(HObject image, out HObject imageScaled, HTuple mult, HTuple add)

HImage HImage.ScaleImage(HTuple mult, HTuple add)

HImage HImage.ScaleImage(double mult, double add)

Beschreibung

scale_imagescale_imageScaleImagescale_imageScaleImageScaleImage skaliert die Eingabebilder (ImageImageImageImageImageimage) mittels folgender Transformation:

                     g' := g * Mult + Add
Tritt ein Überlauf oder ein Unterlauf ein, so werden die Werte beschnitten. Dies gilt nicht im Fall von cyclic- und direction-Bildern.

Dieser Operator kann z.B. dafür verwendet werden, die Grauwerte eines Bildes, also das Intervall [GMin,GMax], auf das volle Intervall [0:255] abbzubilden, indem man die Parameter wie folgt wählt:

Min und GMax können z.B. mit dem Operator min_max_graymin_max_grayMinMaxGraymin_max_grayMinMaxGrayMinMaxGray bestimmt werden.

Es ist zu beachten, dass die Laufzeit des Operators von der Wahl der Steuerparameter abhängt. Für häufig verwendete Parameterkombinationen sind spezielle Optimierungen implementiert. Weiterhin sind für int2 und uint2 Bilder spezielle Optimierungen mit Festkommaarithmetik und für byte, int2 und uint2 Bilder spezielle Optimierungen unter Verwendung von SIMD Technologie implementiert. Ob diese tatsächlich zur Anwendung kommen, kann über die Systemparameter 'int_zooming'"int_zooming""int_zooming""int_zooming""int_zooming""int_zooming" und 'mmx_enable'"mmx_enable""mmx_enable""mmx_enable""mmx_enable""mmx_enable" (siehe set_systemset_systemSetSystemset_systemSetSystemSetSystem) gesteuert werden. Falls 'int_zooming'"int_zooming""int_zooming""int_zooming""int_zooming""int_zooming" auf 'true'"true""true""true""true""true" gesetzt wird, wird die intern Berechnung mit Festkommaarithmetik durchgeführt, was zu wesentlich kürzeren Laufzeiten führt. Allerdings ist hier die Genauigkeit der berechneten Grauwerte geringer. Die Abweichung zur genaueren Berechnung (mit 'int_zooming'"int_zooming""int_zooming""int_zooming""int_zooming""int_zooming" = 'false'"false""false""false""false""false") ist normalerweise kleiner als zwei Grauwerte. Falls 'mmx_enable'"mmx_enable""mmx_enable""mmx_enable""mmx_enable""mmx_enable" auf 'true'"true""true""true""true""true" gesetzt wird (und die verwendete Hardware SIMD Technologie unterstützt), wird die Berechnung intern unter Verwendung von SIMD Technologie durchgeführt. In diesem Fall wird der Wert von 'int_zooming'"int_zooming""int_zooming""int_zooming""int_zooming""int_zooming" ignoriert.

scale_imagescale_imageScaleImagescale_imageScaleImageScaleImage kann für byte-, int1-, int2-, uint2-, int4-, real-, direction-, cyclic-, und complex-Bilder auf OpenCL Geräten ausgeführt werden. Da OpenCL 1.0 aber nur einfache genaue Fließkommaunterstützung voraussetzt und nicht alle Rundungsarten unterstützt werden, kann das Ergebnis der OpenCL-Implementierung geringfügig von dem der skalaren oder der SIMD-Implementierung abweichen.

Achtung

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 scale_imagescale_imageScaleImagescale_imageScaleImageScaleImage, abhängig von der Eingaberegion und den Hardwareeigenschaften, mit SIMD Technologie länger dauern als ohne. In diesem Falle lässt sich die Verwendung von SIMD Technologie durch set_system(::'mmx_enable','false':)set_system("mmx_enable","false")SetSystem("mmx_enable","false")set_system("mmx_enable","false")SetSystem("mmx_enable","false")SetSystem("mmx_enable","false") verhindern.

Parallelisierung

Parameter

ImageImageImageImageImageimage (input_object)  (multichannel-)image(-array) objectHImageHImageHImageHImageXHobject (byte* / int1* / int2* / uint2* / int4* / int8 / real* / direction* / cyclic* / complex*) *erlaubt für Compute Devices

Bild(er), dessen/deren Grauwerte skaliert werden sollen.

ImageScaledImageScaledImageScaledImageScaledImageScaledimageScaled (output_object)  (multichannel-)image(-array) objectHImageHImageHImageHImageXHobject * (byte* / int1* / int2* / uint2* / int4* / int8 / real* / direction* / cyclic* / complex*) *erlaubt für Compute Devices

Ergebnisbild(er) durch die Skalierung

MultMultMultMultMultmult (input_control)  number HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Grauwertskalierung.

Defaultwert: 0.01

Wertevorschläge: 0.001, 0.003, 0.005, 0.008, 0.01, 0.02, 0.03, 0.05, 0.08, 0.1, 0.5, 1.0

Minimale Schrittweite: 0.001

Empfohlene Schrittweite: 0.1

AddAddAddAddAddadd (input_control)  number HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Grauwertverschiebung.

Defaultwert: 0

Wertevorschläge: 0, 10, 50, 100, 200, 500

Minimale Schrittweite: 0.01

Empfohlene Schrittweite: 1.0

Beispiel (HDevelop)

* Complement of the gray values:
scale_image(Image,Invert,-1.0,255.0)

Beispiel (C)

/* simulation of invert for type 'byte' */
byte_invert(Hobject In, Hobject *out)
{
  scale_image(In,Out,-1.0,255.0);
}

Beispiel (HDevelop)

* Complement of the gray values:
scale_image(Image,Invert,-1.0,255.0)

Beispiel (HDevelop)

* Complement of the gray values:
scale_image(Image,Invert,-1.0,255.0)

Beispiel (HDevelop)

* Complement of the gray values:
scale_image(Image,Invert,-1.0,255.0)

Beispiel (HDevelop)

* Complement of the gray values:
scale_image(Image,Invert,-1.0,255.0)

Ergebnis

scale_imagescale_imageScaleImagescale_imageScaleImageScaleImage liefert den Wert 2 (H_MSG_TRUE), falls die Parameter korrekt sind. Das Verhalten bei leerer Eingabe (keine Eingabebilder vorhanden) lässt sich mittels set_system(::'no_object_result',<Result>:)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>) festlegen. Ansonsten wird eine Fehlerbehandlung durchgeführt.

Vorgänger

min_max_graymin_max_grayMinMaxGraymin_max_grayMinMaxGrayMinMaxGray

Alternativen

mult_imagemult_imageMultImagemult_imageMultImageMultImage, add_imageadd_imageAddImageadd_imageAddImageAddImage, sub_imagesub_imageSubImagesub_imageSubImageSubImage

Siehe auch

min_max_graymin_max_grayMinMaxGraymin_max_grayMinMaxGrayMinMaxGray

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren