Name
gamma_imagegamma_imageGammaImagegamma_imageGammaImageGammaImage — Berechnen der Gamma-Kodierung oder Gamma-Dekodierung eines Bildes.
Herror gamma_image(const Hobject Image, Hobject* GammaImage, double Gamma, double Offset, double Threshold, double MaxGray, const char* Encode)
Herror T_gamma_image(const Hobject Image, Hobject* GammaImage, const Htuple Gamma, const Htuple Offset, const Htuple Threshold, const Htuple MaxGray, const Htuple Encode)
Herror gamma_image(Hobject Image, Hobject* GammaImage, const HTuple& Gamma, const HTuple& Offset, const HTuple& Threshold, const HTuple& MaxGray, const HTuple& Encode)
HImage HImage::GammaImage(const HTuple& Gamma, const HTuple& Offset, const HTuple& Threshold, const HTuple& MaxGray, const HTuple& Encode) const
HImageArray HImageArray::GammaImage(const HTuple& Gamma, const HTuple& Offset, const HTuple& Threshold, const HTuple& MaxGray, const HTuple& Encode) const
void GammaImage(const HObject& Image, HObject* GammaImage, const HTuple& Gamma, const HTuple& Offset, const HTuple& Threshold, const HTuple& MaxGray, const HTuple& Encode)
HImage HImage::GammaImage(double Gamma, double Offset, double Threshold, const HTuple& MaxGray, const HString& Encode) const
HImage HImage::GammaImage(double Gamma, double Offset, double Threshold, double MaxGray, const HString& Encode) const
HImage HImage::GammaImage(double Gamma, double Offset, double Threshold, double MaxGray, const char* Encode) const
void HOperatorSetX.GammaImage(
[in] IHUntypedObjectX* Image, [out] IHUntypedObjectX** GammaImage, [in] VARIANT Gamma, [in] VARIANT Offset, [in] VARIANT Threshold, [in] VARIANT MaxGray, [in] VARIANT Encode)
IHImageX* HImageX.GammaImage(
[in] double Gamma, [in] double Offset, [in] double Threshold, [in] VARIANT MaxGray, [in] BSTR Encode)
static void HOperatorSet.GammaImage(HObject image, out HObject gammaImage, HTuple gamma, HTuple offset, HTuple threshold, HTuple maxGray, HTuple encode)
HImage HImage.GammaImage(double gamma, double offset, double threshold, HTuple maxGray, string encode)
HImage HImage.GammaImage(double gamma, double offset, double threshold, double maxGray, string encode)
gamma_imagegamma_imageGammaImagegamma_imageGammaImageGammaImage führt eine allgemeine Gamma-Kodierung oder
Gamma-Dekodierung des Eingabebildes ImageImageImageImageImageimage durch und liefert
das Ergebnisbild in GammaImageGammaImageGammaImageGammaImageGammaImagegammaImage zurück. Eine allgemeine
Gamma-Kodierung kann wie folgt beschrieben werden:
/ g
| m * ( (1+o) * (G/m) - o ) , t < G/m <= 1
G' = <
| s*G , 0 <= G/m <= t
\
Hierbei ist G' der Gamma-kodierte Grauwert, G der lineare
Grauwert, g = GammaGammaGammaGammaGammagamma, o =
OffsetOffsetOffsetOffsetOffsetoffset, m = MaxGrayMaxGrayMaxGrayMaxGrayMaxGraymaxGray, t = ThresholdThresholdThresholdThresholdThresholdthreshold
und s ein Faktor, der aus GammaGammaGammaGammaGammagamma, OffsetOffsetOffsetOffsetOffsetoffset,
ThresholdThresholdThresholdThresholdThresholdthreshold und MaxGrayMaxGrayMaxGrayMaxGrayMaxGraymaxGray so berechnet wird, dass der
lineare und exponentielle Teil der Transformation stetig sind.
In analoger Weise kann eine allgemeine Gamma-Dekodierung wie folgt
beschrieben werden:
/ 1/g
| m * ( ( G'/m + o ) / (1+o) ) , t' < G'/m <= 1
G = <
| G'/s , 0 <= G'/m <= t'
\
Hierbei haben die Variablen dieselbe Bedeutung wie bei der
Gamma-Kodierung und es gilt t' = s*t.
So kann zum Beispiel die Gamma-Kodierung oder Gamma-Dekodierung, die
von der sRGB-Norm gefordert wird, durch GammaGammaGammaGammaGammagamma = 1.0/2.4,
OffsetOffsetOffsetOffsetOffsetoffset = 0.055 und ThresholdThresholdThresholdThresholdThresholdthreshold = 0.0031308
erhalten werden, während die Gamma-Kodierung oder Gamma-Dekodierung,
die von der HDTV-Videonorm gefordert wird, durch GammaGammaGammaGammaGammagamma =
0.45, OffsetOffsetOffsetOffsetOffsetoffset = 0.099 und ThresholdThresholdThresholdThresholdThresholdthreshold = 0.018
erhalten werden kann. In jedem Fall sollte MaxGrayMaxGrayMaxGrayMaxGrayMaxGraymaxGray auf
einen Wert gesetzt werden, der zum Bildtyp von ImageImageImageImageImageimage passt
(z.B. 255.0 für Byte-Bilder).
gamma_imagegamma_imageGammaImagegamma_imageGammaImageGammaImage kann für byte-, uint2-, und real-Bilder auf OpenCL
Geräten ausgeführt werden. Da die Operation in einfach statt wie auf der
CPU doppelt genauer Fließkommadarstellung berechnet wird, kann das Ergebnis
der OpenCL-Implementierung geringfügig von dem der CPU-Implementierung
abweichen.
- Unterstützt OpenCL Compute Devices.
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Automatisch parallelisiert auf Tupelebene.
- Automatisch parallelisiert auf Kanalebene.
- Automatisch parallelisiert auf Domainebene.
Gamma-Koeffizient des exponentiellen Teils der
Transformation.
Defaultwert: 0.416666666667
Wertevorschläge: 0.416666666667, 0.45
Versatz des exponentiellen Teils der Transformation.
Defaultwert: 0.055
Wertevorschläge: 0.055, 0.099
Grauwert, für den die Transformation von linear nach
exponentiell wechselt.
Defaultwert: 0.0031308
Wertevorschläge: 0.0031308, 0.018
Maximaler Grauwert des Eingabebildtyps.
Defaultwert: 255.0
Wertevorschläge: 1.0, 255.0, 511.0, 1023.0, 4095.0, 16383.0, 65535.0
Berechnung einer Gamma-Kodierung, falls
'true'"true""true""true""true""true", ansonsten einer Gamma-Dekodierung.
Defaultwert:
'true'
"true"
"true"
"true"
"true"
"true"
Werteliste: 'false'"false""false""false""false""false", 'true'"true""true""true""true""true"
pow_imagepow_imagePowImagepow_imagePowImagePowImage
sqrt_imagesqrt_imageSqrtImagesqrt_imageSqrtImageSqrtImage,
exp_imageexp_imageExpImageexp_imageExpImageExpImage,
log_imagelog_imageLogImagelog_imageLogImageLogImage
Erik Reinhard, Erum Arif Khan, Ahmet Oguz Akyüz, Garret M. Johnson:
„Color Imaging: Fundamentals and Applications.“ A K Peters, Ltd.,
2008.
CEI/IEC 61966-2-1:1999: „Colour management -- Default RGB colour
space -- sRGB.“
ITU-R BT.709-5: „Parameter values for the HDTV standards for
production and international programme exchange.“
Foundation