linear_trans_color — Affine Transformation der Farbwerte eines mehrkanaligen Bildes.
linear_trans_color(Image : ImageTrans : TransMat : )
linear_trans_color führt eine affine Transformation der
Farbwerte des mehrkanaligen Bildes Image aus und gibt das
Ergebnis in ImageTrans zurück. Die affine Abbildung der
Farbwerte wird durch die Transformationsmatrix TransMat
beschrieben. Wenn n die Anzahl der Kanäle in Image und
m die Anzahl der Kanäle in ImageTrans sind, ist
TransMat eine homogene m × (n+1)
Matrix, die zeilenweise abgespeichert ist. Homogen heißt, dass in
der linken m × n Untermatrix von TransMat
eine lineare Transformation der Farbwerte enthalten ist, während in
der letzten Spalte von TransMat ein konstanter Versatz der
Farbwerte beschrieben wird. Die Transformationsmatrix wird
typischerweise mit gen_principal_comp_trans erzeugt.
Insbesondere kann ein Bild auf seine ersten m Hauptachsen
projiziert werden, indem die ersten m × (n+1)
Werte der Transformation, die von gen_principal_comp_trans
zurückgeliefert wird, selektiert werden. Die Transformation kann
aber auch direkt spezifiziert werden. So kann eine Transformation
von RGB nach YIQ, die durch folgende affine Abbildung gegeben ist
durch folgende Wahl von TransMat erreicht werden:
[0.299,0.587,0.114,0.0,0.599,-0.276,-0.324,127.5,0.214,-0.522,0.309,127.5]
Hierbei ist zu beachten, dass die obige Transformation unnormalisiert
ist, d.h. die Werte können den Bereich [0,255] verlassen. Die
Transformation 'yiq' in trans_from_rgb skaliert die
Zeilen der Matrix (außer dem konstanten Versatz) noch geeignet.
Um einen Verlust von Information zu vermeiden, liefert
linear_trans_color als Ausgabe ein Bild vom Typ real zurück.
Falls ein anderer Bildtyp gewünscht ist, kann dieser mit
convert_image_type erzeugt werden.
linear_trans_color kann auf OpenCL-Geräten ausgeführt werden,
sofern das Eingangsbild nicht mehr als neun Kanäle besitzt und auf ein
Bild transformiert wird, das nicht mehr als drei Kanäle enthält.
Da das Ergebnis mit einfacher Genauigkeit berechnet wird, kann es von dem
mit der CPU berechneten Ergebnis abweichen.
Image (input_object) multichannel-image(-array) → object (byte / direction / cyclic / int1 / int2 / uint2 / int4 / real)
Mehrkanaliges Grauwertbild.
ImageTrans (output_object) multichannel-image(-array) → object (real)
Mehrkanaliges Ausgabebild.
TransMat (input_control) real-array → (real)
Transformationsmatrix für die Farbwerte.
Sind die Parameterwerte korrekt, dann liefert
linear_trans_color den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine
Fehlerbehandlung durchgeführt.
principal_comp,
trans_from_rgb,
trans_to_rgb
Foundation