KlassenKlassenKlassenKlassen | | | | Operatoren

linear_trans_colorT_linear_trans_colorLinearTransColorlinear_trans_colorLinearTransColorLinearTransColor (Operator)

Name

linear_trans_colorT_linear_trans_colorLinearTransColorlinear_trans_colorLinearTransColorLinearTransColor — Affine Transformation der Farbwerte eines mehrkanaligen Bildes.

Signatur

linear_trans_color(Image : ImageTrans : TransMat : )

Herror T_linear_trans_color(const Hobject Image, Hobject* ImageTrans, const Htuple TransMat)

Herror linear_trans_color(Hobject Image, Hobject* ImageTrans, const HTuple& TransMat)

HImage HImage::LinearTransColor(const HTuple& TransMat) const

HImageArray HImageArray::LinearTransColor(const HTuple& TransMat) const

void LinearTransColor(const HObject& Image, HObject* ImageTrans, const HTuple& TransMat)

HImage HImage::LinearTransColor(const HTuple& TransMat) const

void HOperatorSetX.LinearTransColor(
[in] IHUntypedObjectX* Image, [out] IHUntypedObjectX*ImageTrans, [in] VARIANT TransMat)

IHImageX* HImageX.LinearTransColor([in] VARIANT TransMat)

static void HOperatorSet.LinearTransColor(HObject image, out HObject imageTrans, HTuple transMat)

HImage HImage.LinearTransColor(HTuple transMat)

Beschreibung

linear_trans_colorlinear_trans_colorLinearTransColorlinear_trans_colorLinearTransColorLinearTransColor führt eine affine Transformation der Farbwerte des mehrkanaligen Bildes ImageImageImageImageImageimage aus und gibt das Ergebnis in ImageTransImageTransImageTransImageTransImageTransimageTrans zurück. Die affine Abbildung der Farbwerte wird durch die Transformationsmatrix TransMatTransMatTransMatTransMatTransMattransMat beschrieben. Wenn n die Anzahl der Kanäle in ImageImageImageImageImageimage und m die Anzahl der Kanäle in ImageTransImageTransImageTransImageTransImageTransimageTrans sind, ist TransMatTransMatTransMatTransMatTransMattransMat eine homogene m × (n+1) Matrix, die zeilenweise abgespeichert ist. Homogen heißt, dass in der linken m × n Untermatrix von TransMatTransMatTransMatTransMatTransMattransMat eine lineare Transformation der Farbwerte enthalten ist, während in der letzten Spalte von TransMatTransMatTransMatTransMatTransMattransMat ein konstanter Versatz der Farbwerte beschrieben wird. Die Transformationsmatrix wird typischerweise mit gen_principal_comp_transgen_principal_comp_transGenPrincipalCompTransgen_principal_comp_transGenPrincipalCompTransGenPrincipalCompTrans 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_transgen_principal_comp_transGenPrincipalCompTransgen_principal_comp_transGenPrincipalCompTransGenPrincipalCompTrans 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 TransMatTransMatTransMatTransMatTransMattransMat 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'"yiq""yiq""yiq""yiq""yiq" in trans_from_rgbtrans_from_rgbTransFromRgbtrans_from_rgbTransFromRgbTransFromRgb skaliert die Zeilen der Matrix (außer dem konstanten Versatz) noch geeignet.

Um einen Verlust von Information zu vermeiden, liefert linear_trans_colorlinear_trans_colorLinearTransColorlinear_trans_colorLinearTransColorLinearTransColor als Ausgabe ein Bild vom Typ real zurück. Falls ein anderer Bildtyp gewünscht ist, kann dieser mit convert_image_typeconvert_image_typeConvertImageTypeconvert_image_typeConvertImageTypeConvertImageType erzeugt werden.

Achtung

linear_trans_colorlinear_trans_colorLinearTransColorlinear_trans_colorLinearTransColorLinearTransColor 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.

Parallelisierung

Parameter

ImageImageImageImageImageimage (input_object)  multichannel-image(-array) objectHImageHImageHImageHImageXHobject (byte / direction / cyclic / int1 / int2 / uint2 / int4 / real)

Mehrkanaliges Grauwertbild.

ImageTransImageTransImageTransImageTransImageTransimageTrans (output_object)  multichannel-image(-array) objectHImageHImageHImageHImageXHobject * (real)

Mehrkanaliges Ausgabebild.

TransMatTransMatTransMatTransMatTransMattransMat (input_control)  real-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Transformationsmatrix für die Farbwerte.

Ergebnis

Sind die Parameterwerte korrekt, dann liefert linear_trans_colorlinear_trans_colorLinearTransColorlinear_trans_colorLinearTransColorLinearTransColor den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

gen_principal_comp_transgen_principal_comp_transGenPrincipalCompTransgen_principal_comp_transGenPrincipalCompTransGenPrincipalCompTrans

Nachfolger

convert_image_typeconvert_image_typeConvertImageTypeconvert_image_typeConvertImageTypeConvertImageType

Alternativen

principal_compprincipal_compPrincipalCompprincipal_compPrincipalCompPrincipalComp, trans_from_rgbtrans_from_rgbTransFromRgbtrans_from_rgbTransFromRgbTransFromRgb, trans_to_rgbtrans_to_rgbTransToRgbtrans_to_rgbTransToRgbTransToRgb

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren