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