[ VIGRA Homepage | Function Index | Class Index | Namespaces | File List | Main Page ]

details XYZ2LabFunctor< T > Class Template Reference VIGRA

Convert standardized tri-stimulus XYZ into perceptual uniform CIE L*a*b*. More...

#include <vigra/colorconversions.hxx>

Public Types

typedef TinyVector< T, 3 > argument_type
 
typedef NumericTraits< T >
::RealPromote 
component_type
 
typedef TinyVector
< component_type, 3 > 
result_type
 
typedef TinyVector
< component_type, 3 > 
value_type
 

Public Member Functions

template<class V >
result_type operator() (V const &xyz) const
 

Detailed Description

template<class T>
class vigra::XYZ2LabFunctor< T >

Convert standardized tri-stimulus XYZ into perceptual uniform CIE L*a*b*.

#include <vigra/colorconversions.hxx>
Namespace: vigra

The functor realizes the transformation

\[ \begin{array}{rcl} L^{*} & = & 116 \left( \frac{Y}{Y_n} \right)^\frac{1}{3}-16 \quad \mbox{if} \quad \frac{216}{24389} < \frac{Y}{Y_n}\\ & & \\ L^{*} & = & \frac{24389}{27} \enspace \frac{Y}{Y_n} \quad \mbox{otherwise} \\ & & \\ a^{*} & = & 500 \left[ \left( \frac{X}{X_n} \right)^\frac{1}{3} - \left( \frac{Y}{Y_n} \right)^\frac{1}{3} \right] \\ & & \\ b^{*} & = & 200 \left[ \left( \frac{Y}{Y_n} \right)^\frac{1}{3} - \left( \frac{Z}{Z_n} \right)^\frac{1}{3} \right] \\ \end{array} \]

where $(X_n, Y_n, Z_n) = (0.950456, 1.0, 1.088754)$ is the reference white point of standard illuminant D65. $L^{*}$ represents the lightness ("brightness") of the color, and $a^{*}, b^{*}$ code the chromaticity. (Instead of the rationals $\frac{216}{24389}$ and $\frac{24389}{27}$, the original standard gives the rounded values 0.008856 and 903.3. As Bruce Lindbloom points out, the rounded values give raise to a discontinuity which is removed by the accurate rationals. This bug will be fixed in future versions of the CIE Lab standard.)

Traits defined:

FunctorTraits::isUnaryFunctor is true (VigraTrueType)

Member Typedef Documentation

typedef NumericTraits<T>::RealPromote component_type

the result's component type

typedef TinyVector<T, 3> argument_type

the functor's argument type

the functor's result type

Deprecated:
use argument_type and result_type

Member Function Documentation

result_type operator() ( V const &  xyz) const

apply the transformation


The documentation for this class was generated from the following file:

© Ullrich Köthe (ullrich.koethe@iwr.uni-heidelberg.de)
Heidelberg Collaboratory for Image Processing, University of Heidelberg, Germany

html generated using doxygen and Python
vigra 1.11.1 (Fri May 19 2017)