37 #ifndef VIGRA_COLORCONVERSIONS_HXX
38 #define VIGRA_COLORCONVERSIONS_HXX
42 #include "mathutil.hxx"
43 #include "rgbvalue.hxx"
44 #include "functortraits.hxx"
51 template<
class ValueType>
52 inline ValueType gammaCorrection(
double value,
double gamma)
54 typedef typename NumericTraits<ValueType>::RealPromote Promote;
55 return NumericTraits<ValueType>::fromRealPromote(
56 RequiresExplicitCast<Promote>::cast(
58 ? -std::pow(-value, gamma)
59 : std::pow(value, gamma)));
62 template<
class ValueType>
63 inline ValueType gammaCorrection(
double value,
double gamma,
double norm)
65 typedef typename NumericTraits<ValueType>::RealPromote Promote;
66 return NumericTraits<ValueType>::fromRealPromote(
67 RequiresExplicitCast<Promote>::cast(
69 ? -norm*std::pow(-value/norm, gamma)
70 : norm*std::pow(value/norm, gamma)));
73 template<
class ValueType>
74 inline ValueType sRGBCorrection(
double value,
double norm)
77 typedef typename NumericTraits<ValueType>::RealPromote Promote;
78 return NumericTraits<ValueType>::fromRealPromote(
79 RequiresExplicitCast<Promote>::cast(
82 : norm*(1.055*std::pow(value, 0.41666666666666667) - 0.055)));
85 template<
class ValueType>
86 inline ValueType inverse_sRGBCorrection(
double value,
double norm)
89 typedef typename NumericTraits<ValueType>::RealPromote Promote;
90 return NumericTraits<ValueType>::fromRealPromote(
91 RequiresExplicitCast<Promote>::cast(
94 : norm*VIGRA_CSTD::pow((value + 0.055)/1.055, 2.4)));
276 template <
class From,
class To = From>
317 detail::gammaCorrection<To>(rgb[0], 0.45, max_),
318 detail::gammaCorrection<To>(rgb[1], 0.45, max_),
319 detail::gammaCorrection<To>(rgb[2], 0.45, max_));
322 static std::string targetColorSpace()
332 class RGB2RGBPrimeFunctor<unsigned char, unsigned char>
334 unsigned char lut_[256];
342 typedef TinyVector<unsigned char, 3>
value_type;
346 for(
int i=0; i<256; ++i)
348 lut_[i] = detail::gammaCorrection<unsigned char>(i, 0.45, 255.0);
354 for(
int i=0; i<256; ++i)
356 lut_[i] = detail::gammaCorrection<unsigned char>(i, 0.45, max);
361 TinyVector<unsigned char, 3>
operator()(V
const & rgb)
const
363 return TinyVector<unsigned char, 3>(lut_[rgb[0]], lut_[rgb[1]], lut_[rgb[2]]);
366 static std::string targetColorSpace()
372 template <
class From,
class To>
373 class FunctorTraits<RGB2RGBPrimeFunctor<From, To> >
374 :
public FunctorTraitsBase<RGB2RGBPrimeFunctor<From, To> >
377 typedef VigraTrueType isUnaryFunctor;
404 template <
class From,
class To = From>
445 detail::sRGBCorrection<To>(rgb[0], max_),
446 detail::sRGBCorrection<To>(rgb[1], max_),
447 detail::sRGBCorrection<To>(rgb[2], max_));
450 static std::string targetColorSpace()
460 class RGB2sRGBFunctor<unsigned char, unsigned char>
462 unsigned char lut_[256];
470 typedef TinyVector<unsigned char, 3>
value_type;
474 for(
int i=0; i<256; ++i)
476 lut_[i] = detail::sRGBCorrection<unsigned char>(i, 255.0);
482 for(
int i=0; i<256; ++i)
484 lut_[i] = detail::sRGBCorrection<unsigned char>(i, max);
489 TinyVector<unsigned char, 3>
operator()(V
const & rgb)
const
491 return TinyVector<unsigned char, 3>(lut_[rgb[0]], lut_[rgb[1]], lut_[rgb[2]]);
494 static std::string targetColorSpace()
500 template <
class From,
class To>
501 class FunctorTraits<RGB2sRGBFunctor<From, To> >
502 :
public FunctorTraitsBase<RGB2sRGBFunctor<From, To> >
505 typedef VigraTrueType isUnaryFunctor;
529 template <
class From,
class To = From>
554 : max_(255.0), gamma_(1.0/0.45)
561 : max_(max), gamma_(1.0/0.45)
569 detail::gammaCorrection<To>(rgb[0], gamma_, max_),
570 detail::gammaCorrection<To>(rgb[1], gamma_, max_),
571 detail::gammaCorrection<To>(rgb[2], gamma_, max_));
574 static std::string targetColorSpace()
585 class RGBPrime2RGBFunctor<unsigned char, unsigned char>
587 unsigned char lut_[256];
595 typedef TinyVector<unsigned char, 3>
value_type;
599 for(
int i=0; i<256; ++i)
601 lut_[i] = detail::gammaCorrection<unsigned char>(i, 1.0/0.45, 255.0);
607 for(
int i=0; i<256; ++i)
609 lut_[i] = detail::gammaCorrection<unsigned char>(i, 1.0/0.45, max);
614 TinyVector<unsigned char, 3>
operator()(V
const & rgb)
const
616 return TinyVector<unsigned char, 3>(lut_[rgb[0]], lut_[rgb[1]], lut_[rgb[2]]);
619 static std::string targetColorSpace()
625 template <
class From,
class To>
626 class FunctorTraits<RGBPrime2RGBFunctor<From, To> >
627 :
public FunctorTraitsBase<RGBPrime2RGBFunctor<From, To> >
630 typedef VigraTrueType isUnaryFunctor;
657 template <
class From,
class To = From>
697 detail::inverse_sRGBCorrection<To>(rgb[0], max_),
698 detail::inverse_sRGBCorrection<To>(rgb[1], max_),
699 detail::inverse_sRGBCorrection<To>(rgb[2], max_));
702 static std::string targetColorSpace()
712 class sRGB2RGBFunctor<unsigned char, unsigned char>
714 unsigned char lut_[256];
722 typedef TinyVector<unsigned char, 3>
value_type;
726 for(
int i=0; i<256; ++i)
728 lut_[i] = detail::inverse_sRGBCorrection<unsigned char>(i, 255.0);
734 for(
int i=0; i<256; ++i)
736 lut_[i] = detail::inverse_sRGBCorrection<unsigned char>(i, max);
741 TinyVector<unsigned char, 3>
operator()(V
const & rgb)
const
743 return TinyVector<unsigned char, 3>(lut_[rgb[0]], lut_[rgb[1]], lut_[rgb[2]]);
746 static std::string targetColorSpace()
752 template <
class From,
class To>
753 class FunctorTraits<sRGB2RGBFunctor<From, To> >
754 :
public FunctorTraitsBase<sRGB2RGBFunctor<From, To> >
757 typedef VigraTrueType isUnaryFunctor;
826 typedef detail::RequiresExplicitCast<component_type> Convert;
831 result[0] = Convert::cast(0.412453*red + 0.357580*green + 0.180423*blue);
832 result[1] = Convert::cast(0.212671*red + 0.715160*green + 0.072169*blue);
833 result[2] = Convert::cast(0.019334*red + 0.119193*green + 0.950227*blue);
837 static std::string targetColorSpace()
847 class FunctorTraits<RGB2XYZFunctor<T> >
848 :
public FunctorTraitsBase<RGB2XYZFunctor<T> >
851 typedef VigraTrueType isUnaryFunctor;
904 : gamma_(1.0/ 0.45), max_(max)
911 typedef detail::RequiresExplicitCast<component_type> Convert;
912 component_type red = detail::gammaCorrection<component_type>(rgb[0]/max_, gamma_);
913 component_type green = detail::gammaCorrection<component_type>(rgb[1]/max_, gamma_);
914 component_type blue = detail::gammaCorrection<component_type>(rgb[2]/max_, gamma_);
916 result[0] = Convert::cast(0.412453*red + 0.357580*green + 0.180423*blue);
917 result[1] = Convert::cast(0.212671*red + 0.715160*green + 0.072169*blue);
918 result[2] = Convert::cast(0.019334*red + 0.119193*green + 0.950227*blue);
922 static std::string targetColorSpace()
933 class FunctorTraits<RGBPrime2XYZFunctor<T> >
934 :
public FunctorTraitsBase<RGBPrime2XYZFunctor<T> >
937 typedef VigraTrueType isUnaryFunctor;
965 typedef typename NumericTraits<T>::RealPromote component_type;
1003 typedef detail::RequiresExplicitCast<component_type> Convert;
1004 component_type red = Convert::cast( 3.2404813432*xyz[0] - 1.5371515163*xyz[1] - 0.4985363262*xyz[2]);
1005 component_type green = Convert::cast(-0.9692549500*xyz[0] + 1.8759900015*xyz[1] + 0.0415559266*xyz[2]);
1006 component_type blue = Convert::cast( 0.0556466391*xyz[0] - 0.2040413384*xyz[1] + 1.0573110696*xyz[2]);
1007 return value_type(NumericTraits<T>::fromRealPromote(red * max_),
1008 NumericTraits<T>::fromRealPromote(green * max_),
1009 NumericTraits<T>::fromRealPromote(blue * max_));
1012 static std::string targetColorSpace()
1019 class FunctorTraits<XYZ2RGBFunctor<T> >
1020 :
public FunctorTraitsBase<XYZ2RGBFunctor<T> >
1023 typedef VigraTrueType isUnaryFunctor;
1047 typedef typename NumericTraits<T>::RealPromote component_type;
1050 component_type max_;
1073 : gamma_(0.45), max_(component_type(255.0))
1080 : gamma_(0.45), max_(max)
1088 typedef detail::RequiresExplicitCast<component_type> Convert;
1089 component_type red = Convert::cast( 3.2404813432*xyz[0] - 1.5371515163*xyz[1] - 0.4985363262*xyz[2]);
1090 component_type green = Convert::cast(-0.9692549500*xyz[0] + 1.8759900015*xyz[1] + 0.0415559266*xyz[2]);
1091 component_type blue = Convert::cast( 0.0556466391*xyz[0] - 0.2040413384*xyz[1] + 1.0573110696*xyz[2]);
1092 return value_type(NumericTraits<T>::fromRealPromote(detail::gammaCorrection<component_type>(red, gamma_) * max_),
1093 NumericTraits<T>::fromRealPromote(detail::gammaCorrection<component_type>(green, gamma_) * max_),
1094 NumericTraits<T>::fromRealPromote(detail::gammaCorrection<component_type>(blue, gamma_) * max_));
1097 static std::string targetColorSpace()
1104 class FunctorTraits<XYZ2RGBPrimeFunctor<T> >
1105 :
public FunctorTraitsBase<XYZ2RGBPrimeFunctor<T> >
1108 typedef VigraTrueType isUnaryFunctor;
1167 kappa_(24389.0/27.0),
1168 epsilon_(216.0/24389.0)
1175 if(xyz[1] == NumericTraits<T>::zero())
1177 result[0] = NumericTraits<component_type>::zero();
1178 result[1] = NumericTraits<component_type>::zero();
1179 result[2] = NumericTraits<component_type>::zero();
1183 typedef detail::RequiresExplicitCast<component_type> Convert;
1187 : 116.0 * VIGRA_CSTD::pow((
double)xyz[1], gamma_) - 16.0);
1188 component_type denom = Convert::cast(xyz[0] + 15.0*xyz[1] + 3.0*xyz[2]);
1192 result[1] = Convert::cast(13.0*L*(uprime - 0.197839));
1193 result[2] = Convert::cast(13.0*L*(vprime - 0.468342));
1198 static std::string targetColorSpace()
1204 double gamma_, kappa_, epsilon_;
1208 class FunctorTraits<XYZ2LuvFunctor<T> >
1209 :
public FunctorTraitsBase<XYZ2LuvFunctor<T> >
1212 typedef VigraTrueType isUnaryFunctor;
1249 ikappa_(27.0/24389.0)
1258 if(luv[0] == NumericTraits<T>::zero())
1260 result[0] = NumericTraits<component_type>::zero();
1261 result[1] = NumericTraits<component_type>::zero();
1262 result[2] = NumericTraits<component_type>::zero();
1266 typedef detail::RequiresExplicitCast<component_type> Convert;
1267 component_type uprime = Convert::cast(luv[1] / 13.0 / luv[0] + 0.197839);
1268 component_type vprime = Convert::cast(luv[2] / 13.0 / luv[0] + 0.468342);
1270 result[1] = Convert::cast(
1273 : VIGRA_CSTD::pow((luv[0] + 16.0) / 116.0, gamma_));
1274 result[0] = Convert::cast(9.0*uprime*result[1] / 4.0 / vprime);
1275 result[2] = Convert::cast(((9.0 / vprime - 15.0)*result[1] - result[0])/ 3.0);
1280 static std::string targetColorSpace()
1286 double gamma_, ikappa_;
1290 class FunctorTraits<Luv2XYZFunctor<T> >
1291 :
public FunctorTraitsBase<Luv2XYZFunctor<T> >
1294 typedef VigraTrueType isUnaryFunctor;
1350 kappa_(24389.0/27.0),
1351 epsilon_(216.0/24389.0)
1359 typedef detail::RequiresExplicitCast<component_type> Convert;
1360 component_type xgamma = Convert::cast(std::pow(xyz[0] / 0.950456, gamma_));
1361 component_type ygamma = Convert::cast(std::pow((
double)xyz[1], gamma_));
1362 component_type zgamma = Convert::cast(std::pow(xyz[2] / 1.088754, gamma_));
1366 : 116.0 * ygamma - 16.0);
1369 result[1] = Convert::cast(500.0*(xgamma - ygamma));
1370 result[2] = Convert::cast(200.0*(ygamma - zgamma));
1374 static std::string targetColorSpace()
1380 double gamma_, kappa_, epsilon_;
1384 class FunctorTraits<XYZ2LabFunctor<T> >
1385 :
public FunctorTraitsBase<XYZ2LabFunctor<T> >
1388 typedef VigraTrueType isUnaryFunctor;
1427 ikappa_(27.0/24389.0)
1435 typedef detail::RequiresExplicitCast<component_type> Convert;
1439 : std::pow((lab[0] + 16.0) / 116.0, gamma_));
1440 component_type ygamma = Convert::cast(std::pow((
double)Y, 1.0 / gamma_));
1441 component_type X = Convert::cast(std::pow(lab[1] / 500.0 + ygamma, gamma_) * 0.950456);
1442 component_type Z = Convert::cast(std::pow(-lab[2] / 200.0 + ygamma, gamma_) * 1.088754);
1450 static std::string targetColorSpace()
1456 double gamma_, ikappa_;
1460 class FunctorTraits<Lab2XYZFunctor<T> >
1461 :
public FunctorTraitsBase<Lab2XYZFunctor<T> >
1464 typedef VigraTrueType isUnaryFunctor;
1540 return xyz2luv(rgb2xyz(rgb));
1543 static std::string targetColorSpace()
1549 RGB2XYZFunctor<T> rgb2xyz;
1550 XYZ2LuvFunctor<component_type> xyz2luv;
1554 class FunctorTraits<RGB2LuvFunctor<T> >
1555 :
public FunctorTraitsBase<RGB2LuvFunctor<T> >
1558 typedef VigraTrueType isUnaryFunctor;
1634 return xyz2lab(rgb2xyz(rgb));
1637 static std::string targetColorSpace()
1643 RGB2XYZFunctor<T> rgb2xyz;
1644 XYZ2LabFunctor<component_type> xyz2lab;
1648 class FunctorTraits<RGB2LabFunctor<T> >
1649 :
public FunctorTraitsBase<RGB2LabFunctor<T> >
1652 typedef VigraTrueType isUnaryFunctor;
1669 typedef typename NumericTraits<T>::RealPromote component_type;
1702 return xyz2rgb(luv2xyz(luv));
1705 static std::string targetColorSpace()
1712 class FunctorTraits<Luv2RGBFunctor<T> >
1713 :
public FunctorTraitsBase<Luv2RGBFunctor<T> >
1716 typedef VigraTrueType isUnaryFunctor;
1733 typedef typename NumericTraits<T>::RealPromote component_type;
1773 return xyz2rgb(lab2xyz(lab));
1776 static std::string targetColorSpace()
1783 class FunctorTraits<Lab2RGBFunctor<T> >
1784 :
public FunctorTraitsBase<Lab2RGBFunctor<T> >
1787 typedef VigraTrueType isUnaryFunctor;
1856 return xyz2luv(rgb2xyz(rgb));
1859 static std::string targetColorSpace()
1865 RGBPrime2XYZFunctor<T> rgb2xyz;
1866 XYZ2LuvFunctor<component_type> xyz2luv;
1870 class FunctorTraits<RGBPrime2LuvFunctor<T> >
1871 :
public FunctorTraitsBase<RGBPrime2LuvFunctor<T> >
1874 typedef VigraTrueType isUnaryFunctor;
1943 return xyz2lab(rgb2xyz(rgb));
1946 static std::string targetColorSpace()
1952 RGBPrime2XYZFunctor<T> rgb2xyz;
1953 XYZ2LabFunctor<component_type> xyz2lab;
1957 class FunctorTraits<RGBPrime2LabFunctor<T> >
1958 :
public FunctorTraitsBase<RGBPrime2LabFunctor<T> >
1961 typedef VigraTrueType isUnaryFunctor;
1978 typedef typename NumericTraits<T>::RealPromote component_type;
2018 return xyz2rgb(luv2xyz(luv));
2021 static std::string targetColorSpace()
2028 class FunctorTraits<Luv2RGBPrimeFunctor<T> >
2029 :
public FunctorTraitsBase<Luv2RGBPrimeFunctor<T> >
2032 typedef VigraTrueType isUnaryFunctor;
2049 typedef typename NumericTraits<T>::RealPromote component_type;
2089 return xyz2rgb(lab2xyz(lab));
2092 static std::string targetColorSpace()
2099 class FunctorTraits<Lab2RGBPrimeFunctor<T> >
2100 :
public FunctorTraitsBase<Lab2RGBPrimeFunctor<T> >
2103 typedef VigraTrueType isUnaryFunctor;
2185 typedef detail::RequiresExplicitCast<component_type> Convert;
2191 result[0] = Convert::cast(0.299*red + 0.587*green + 0.114*blue);
2192 result[1] = Convert::cast(-0.1687358916*red - 0.3312641084*green + 0.5*blue);
2193 result[2] = Convert::cast(0.5*red - 0.4186875892*green - 0.0813124108*blue);
2197 static std::string targetColorSpace()
2207 class FunctorTraits<RGBPrime2YPrimePbPrFunctor<T> >
2208 :
public FunctorTraitsBase<RGBPrime2YPrimePbPrFunctor<T> >
2211 typedef VigraTrueType isUnaryFunctor;
2228 typedef typename NumericTraits<T>::RealPromote component_type;
2230 component_type max_;
2267 typedef detail::RequiresExplicitCast<component_type> Convert;
2268 component_type nred = Convert::cast(ypbpr[0] + 1.402*ypbpr[2]);
2269 component_type ngreen = Convert::cast(ypbpr[0] - 0.3441362862*ypbpr[1] - 0.7141362862*ypbpr[2]);
2270 component_type nblue = Convert::cast(ypbpr[0] + 1.772*ypbpr[1]);
2271 return result_type(NumericTraits<T>::fromRealPromote(nred * max_),
2272 NumericTraits<T>::fromRealPromote(ngreen * max_),
2273 NumericTraits<T>::fromRealPromote(nblue * max_));
2276 static std::string targetColorSpace()
2283 class FunctorTraits<YPrimePbPr2RGBPrimeFunctor<T> >
2284 :
public FunctorTraitsBase<YPrimePbPr2RGBPrimeFunctor<T> >
2287 typedef VigraTrueType isUnaryFunctor;
2368 typedef detail::RequiresExplicitCast<component_type> Convert;
2374 result[0] = Convert::cast(0.299*red + 0.587*green + 0.114*blue);
2375 result[1] = Convert::cast(0.596*red - 0.274*green - 0.322*blue);
2376 result[2] = Convert::cast(0.212*red - 0.523*green + 0.311*blue);
2380 static std::string targetColorSpace()
2390 class FunctorTraits<RGBPrime2YPrimeIQFunctor<T> >
2391 :
public FunctorTraitsBase<RGBPrime2YPrimeIQFunctor<T> >
2394 typedef VigraTrueType isUnaryFunctor;
2411 typedef typename NumericTraits<T>::RealPromote component_type;
2413 component_type max_;
2450 typedef detail::RequiresExplicitCast<component_type> Convert;
2451 component_type nred = Convert::cast(yiq[0] + 0.9548892043*yiq[1] + 0.6221039350*yiq[2]);
2452 component_type ngreen = Convert::cast(yiq[0] - 0.2713547827*yiq[1] - 0.6475120259*yiq[2]);
2453 component_type nblue = Convert::cast(yiq[0] - 1.1072510054*yiq[1] + 1.7024603738*yiq[2]);
2454 return result_type(NumericTraits<T>::fromRealPromote(nred * max_),
2455 NumericTraits<T>::fromRealPromote(ngreen * max_),
2456 NumericTraits<T>::fromRealPromote(nblue * max_));
2459 static std::string targetColorSpace()
2466 class FunctorTraits<YPrimeIQ2RGBPrimeFunctor<T> >
2467 :
public FunctorTraitsBase<YPrimeIQ2RGBPrimeFunctor<T> >
2470 typedef VigraTrueType isUnaryFunctor;
2551 typedef detail::RequiresExplicitCast<component_type> Convert;
2557 result[0] = Convert::cast(0.299*red + 0.587*green + 0.114*blue);
2558 result[1] = Convert::cast(-0.1471376975*red - 0.2888623025*green + 0.436*blue);
2559 result[2] = Convert::cast(0.6149122807*red - 0.5149122807*green - 0.100*blue);
2563 static std::string targetColorSpace()
2573 class FunctorTraits<RGBPrime2YPrimeUVFunctor<T> >
2574 :
public FunctorTraitsBase<RGBPrime2YPrimeUVFunctor<T> >
2577 typedef VigraTrueType isUnaryFunctor;
2594 typedef typename NumericTraits<T>::RealPromote component_type;
2596 component_type max_;
2633 typedef detail::RequiresExplicitCast<component_type> Convert;
2634 component_type nred = Convert::cast(yuv[0] + 1.140*yuv[2]);
2635 component_type ngreen = Convert::cast(yuv[0] - 0.3946517044*yuv[1] - 0.580681431*yuv[2]);
2636 component_type nblue = Convert::cast(yuv[0] + 2.0321100920*yuv[1]);
2637 return result_type(NumericTraits<T>::fromRealPromote(nred * max_),
2638 NumericTraits<T>::fromRealPromote(ngreen * max_),
2639 NumericTraits<T>::fromRealPromote(nblue * max_));
2642 static std::string targetColorSpace()
2649 class FunctorTraits<YPrimeUV2RGBPrimeFunctor<T> >
2650 :
public FunctorTraitsBase<YPrimeUV2RGBPrimeFunctor<T> >
2653 typedef VigraTrueType isUnaryFunctor;
2724 typedef detail::RequiresExplicitCast<component_type> Convert;
2730 result[0] = Convert::cast(16.0 + 65.481*red + 128.553*green + 24.966*blue);
2731 result[1] = Convert::cast(128.0 - 37.79683972*red - 74.20316028*green + 112.0*blue);
2732 result[2] = Convert::cast(128.0 + 112.0*red - 93.78601998*green - 18.21398002*blue);
2736 static std::string targetColorSpace()
2746 class FunctorTraits<RGBPrime2YPrimeCbCrFunctor<T> >
2747 :
public FunctorTraitsBase<RGBPrime2YPrimeCbCrFunctor<T> >
2750 typedef VigraTrueType isUnaryFunctor;
2767 typedef typename NumericTraits<T>::RealPromote component_type;
2769 component_type max_;
2806 typedef detail::RequiresExplicitCast<component_type> Convert;
2807 component_type y = Convert::cast(ycbcr[0] - 16.0);
2808 component_type cb = Convert::cast(ycbcr[1] - 128.0);
2809 component_type cr = Convert::cast(ycbcr[2] - 128.0);
2811 component_type nred = Convert::cast(0.00456621*y + 0.006258928571*cr);
2812 component_type ngreen = Convert::cast(0.00456621*y - 0.001536322706*cb - 0.003188108420*cr);
2813 component_type nblue = Convert::cast(0.00456621*y + 0.007910714286*cb);
2814 return result_type(NumericTraits<T>::fromRealPromote(nred * max_),
2815 NumericTraits<T>::fromRealPromote(ngreen * max_),
2816 NumericTraits<T>::fromRealPromote(nblue * max_));
2819 static std::string targetColorSpace()
2826 class FunctorTraits<YPrimeCbCr2RGBPrimeFunctor<T> >
2827 :
public FunctorTraitsBase<YPrimeCbCr2RGBPrimeFunctor<T> >
2830 typedef VigraTrueType isUnaryFunctor;
2936 inline TinyVector<float, 3>
2937 polar2Lab(
double color,
double brightness,
double saturation)
2939 double angle = (color+39.9977)/180.0*M_PI;
2940 double normsat = saturation*133.809;
2943 result[0] = float(100.0*brightness);
2951 TinyVector<float, 3>
2954 return polar2Lab(polar[0], polar[1], polar[2]);
2974 TinyVector<float, 3>
2978 result[1] = float(lab[0]/100.0);
2979 double angle = (lab[1] == 0.0 && lab[2] == 0.0)
2982 result[0] = angle < 0.0 ?
2983 float(angle + 360.0) :
2985 result[2] = float(
VIGRA_CSTD::sqrt(lab[1]*lab[1] + lab[2]*lab[2])/133.809);
3022 inline TinyVector<float, 3>
3023 polar2Luv(
double color,
double brightness,
double saturation)
3025 double angle = (color+12.1727)/180.0*M_PI;
3026 double normsat = saturation*179.04;
3029 result[0] = float(100.0*brightness);
3036 TinyVector<float, 3>
3039 return polar2Luv(polar[0], polar[1], polar[2]);
3059 TinyVector<float, 3>
3063 result[1] = float(luv[0]/100.0);
3064 double angle = (luv[1] == 0.0 && luv[2] == 0.0)
3067 result[0] = angle < 0.0 ?
3068 float(angle + 360.0) :
3107 inline TinyVector<float, 3>
3110 double angle = (color+18.6481)/180.0*M_PI;
3111 double normsat = saturation*0.533887;
3114 result[0] = float(brightness);
3121 TinyVector<float, 3>
3144 TinyVector<float, 3>
3148 result[1] = float(ypbpr[0]);
3149 double angle = (ypbpr[1] == 0.0 && ypbpr[2] == 0.0)
3152 result[0] = angle < 0.0 ?
3153 float(angle + 360.0) :
3155 result[2] = float(
VIGRA_CSTD::sqrt(ypbpr[1]*ypbpr[1] + ypbpr[2]*ypbpr[2])/0.533887);
3192 inline TinyVector<float, 3>
3195 double angle = (color+18.6482)/180.0*M_PI;
3196 double normsat = saturation*119.591;
3199 result[0] = float(brightness*219.0 + 16.0);
3206 TinyVector<float, 3>
3229 TinyVector<float, 3>
3233 result[1] = float((ycbcr[0]-16.0)/219.0);
3234 double cb = ycbcr[1]-128.0;
3235 double cr = ycbcr[2]-128.0;
3236 double angle = (cb == 0.0 && cr == 0.0)
3239 result[0] = angle < 0.0 ?
3240 float(angle + 360.0) :
3279 inline TinyVector<float, 3>
3282 double angle = (color-19.5807)/180.0*M_PI;
3283 double normsat = saturation*0.632582;
3286 result[0] = float(brightness);
3293 TinyVector<float, 3>
3316 TinyVector<float, 3>
3320 result[1] = float(yiq[0]);
3321 double angle = (yiq[1] == 0.0 && yiq[2] == 0.0)
3324 result[0] = angle < 0.0 ?
3325 float(angle + 360.0) :
3327 result[2] = float(
VIGRA_CSTD::sqrt(yiq[1]*yiq[1] + yiq[2]*yiq[2])/0.632582);
3364 inline TinyVector<float, 3>
3367 double angle = (color+13.4569)/180.0*M_PI;
3368 double normsat = saturation*0.632324;
3371 result[0] = float(brightness);
3378 TinyVector<float, 3>
3401 TinyVector<float, 3>
3405 result[1] = float(yuv[0]);
3406 double angle = (yuv[1] == 0.0 && yuv[2] == 0.0)
3409 result[0] = angle < 0.0 ?
3410 float(angle + 360.0) :
3412 result[2] = float(
VIGRA_CSTD::sqrt(yuv[1]*yuv[1] + yuv[2]*yuv[2])/0.632324);
TinyVector< From, 3 > argument_type
Definition: colorconversions.hxx:283
TinyVector< float, 3 > polar2YPrimeUV(double color, double brightness, double saturation)
Init Y'UV color triple from polar representation.
Definition: colorconversions.hxx:3365
RGBPrime2LuvFunctor(component_type max)
Definition: colorconversions.hxx:1847
result_type operator()(V const &xyz) const
Definition: colorconversions.hxx:1001
Convert standardized sRGB into non-linear (raw) RGB.
Definition: colorconversions.hxx:658
TinyVector< float, 3 > yPrimePbPr2Polar(V const &ypbpr)
Create polar representation form Y'PbPr.
Definition: colorconversions.hxx:3145
Lab2RGBPrimeFunctor(component_type max)
Definition: colorconversions.hxx:2080
result_type operator()(argument_type const &rgb) const
Definition: colorconversions.hxx:566
TinyVector< T, 3 > result_type
Definition: colorconversions.hxx:1063
TinyVector< To, 3 > value_type
Definition: colorconversions.hxx:672
RGBPrime2YPrimeIQFunctor()
Definition: colorconversions.hxx:2352
TinyVector< T, 3 > argument_type
Definition: colorconversions.hxx:2604
XYZ2LabFunctor< component_type >::result_type result_type
Definition: colorconversions.hxx:1609
NumericTraits< T >::RealPromote component_type
Definition: colorconversions.hxx:1601
sRGB2RGBFunctor(component_type max)
Definition: colorconversions.hxx:688
TinyVector< T, 3 > argument_type
Definition: colorconversions.hxx:1914
TinyVector< component_type, 3 > result_type
Definition: colorconversions.hxx:1417
TinyVector< T, 3 > result_type
Definition: colorconversions.hxx:2425
Convert non-linear (gamma corrected) R'G'B' into non-linear (raw) RGB.
Definition: colorconversions.hxx:530
FixedPoint16< 2, OverflowHandling > atan2(FixedPoint16< IntBits, OverflowHandling > y, FixedPoint16< IntBits, OverflowHandling > x)
Arctangent. Accuracy better than 1/3 degree (9 significant bits).
Definition: fixedpoint.hxx:1654
NumericTraits< T >::RealPromote component_type
Definition: colorconversions.hxx:2152
NumericTraits< To >::RealPromote component_type
Definition: colorconversions.hxx:423
Convert perceptual uniform CIE L*a*b* into standardized tri-stimulus XYZ.
Definition: colorconversions.hxx:1403
TinyVector< component_type, 3 > value_type
Definition: colorconversions.hxx:2347
result_type operator()(V const &rgb) const
Definition: colorconversions.hxx:1632
TinyVector< From, 3 > argument_type
Definition: colorconversions.hxx:664
NumericTraits< To >::RealPromote component_type
Definition: colorconversions.hxx:548
RGBPrime2YPrimePbPrFunctor(component_type max)
Definition: colorconversions.hxx:2176
TinyVector< float, 3 > yPrimeCbCr2Polar(V const &ycbcr)
Create polar representation form Y'CbCr.
Definition: colorconversions.hxx:3230
sRGB2RGBFunctor()
Definition: colorconversions.hxx:681
RGBPrime2YPrimeCbCrFunctor()
Definition: colorconversions.hxx:2708
result_type operator()(V const &ypbpr) const
Definition: colorconversions.hxx:2265
TinyVector< To, 3 > value_type
Definition: colorconversions.hxx:544
XYZ2LabFunctor< component_type >::result_type value_type
Definition: colorconversions.hxx:1613
RGBPrime2LabFunctor(component_type max)
Definition: colorconversions.hxx:1934
Convert non-linear (gamma corrected) R'G'B' into perceptual uniform CIE L*a*b*.
Definition: colorconversions.hxx:1904
TinyVector< component_type, 3 > result_type
Definition: colorconversions.hxx:2699
YPrimeIQ2RGBPrimeFunctor()
Definition: colorconversions.hxx:2434
result_type operator()(V const &rgb) const
Definition: colorconversions.hxx:2549
result_type operator()(V const &rgb) const
Definition: colorconversions.hxx:2722
XYZ2RGBFunctor< T >::result_type value_type
Definition: colorconversions.hxx:1997
TinyVector< T, 3 > argument_type
Definition: colorconversions.hxx:798
NumericTraits< T >::RealPromote component_type
Definition: colorconversions.hxx:1507
result_type operator()(V const &rgb) const
Definition: colorconversions.hxx:314
XYZ2RGBPrimeFunctor()
Definition: colorconversions.hxx:1072
linalg::TemporaryMatrix< T > sin(MultiArrayView< 2, T, C > const &v)
NumericTraits< T >::RealPromote component_type
Definition: colorconversions.hxx:1409
TinyVector< From, 3 > argument_type
Definition: colorconversions.hxx:411
result_type operator()(V const &rgb) const
Definition: colorconversions.hxx:1538
result_type operator()(V const &rgb) const
Definition: colorconversions.hxx:442
XYZ2RGBFunctor(component_type max)
Definition: colorconversions.hxx:994
XYZ2RGBPrimeFunctor(component_type max)
Definition: colorconversions.hxx:1079
Convert perceptual uniform CIE L*u*v* into linear (raw) RGB.
Definition: colorconversions.hxx:1667
TinyVector< T, 3 > argument_type
Definition: colorconversions.hxx:1155
RGB2sRGBFunctor()
Definition: colorconversions.hxx:428
TinyVector< T, 3 > argument_type
Definition: colorconversions.hxx:1059
Convert perceptual uniform CIE L*a*b* into non-linear (gamma corrected) R'G'B'.
Definition: colorconversions.hxx:2047
TinyVector< T, 3 > argument_type
Definition: colorconversions.hxx:2156
TinyVector< T, 3 > result_type
Definition: colorconversions.hxx:978
XYZ2RGBFunctor< T >::result_type value_type
Definition: colorconversions.hxx:1687
TinyVector< component_type, 3 > result_type
Definition: colorconversions.hxx:2343
RGBPrime2YPrimeUVFunctor()
Definition: colorconversions.hxx:2535
RGBPrime2RGBFunctor(component_type max)
Definition: colorconversions.hxx:560
TinyVector< component_type, 3 > value_type
Definition: colorconversions.hxx:2703
TinyVector< float, 3 > polar2YPrimeIQ(double color, double brightness, double saturation)
Init Y'IQ color triple from polar representation.
Definition: colorconversions.hxx:3280
TinyVector< T, 3 > argument_type
Definition: colorconversions.hxx:2060
XYZ2RGBFunctor< T >::result_type result_type
Definition: colorconversions.hxx:1993
NumericTraits< To >::RealPromote component_type
Definition: colorconversions.hxx:676
TinyVector< T, 3 > argument_type
Definition: colorconversions.hxx:1989
XYZ2LabFunctor< component_type >::result_type value_type
Definition: colorconversions.hxx:1922
YPrimePbPr2RGBPrimeFunctor()
Definition: colorconversions.hxx:2251
TinyVector< T, 3 > value_type
Definition: colorconversions.hxx:2429
NumericTraits< T >::RealPromote component_type
Definition: colorconversions.hxx:2518
TinyVector< To, 3 > result_type
Definition: colorconversions.hxx:287
RGB2RGBPrimeFunctor()
Definition: colorconversions.hxx:300
RGBPrime2YPrimePbPrFunctor()
Definition: colorconversions.hxx:2169
Convert non-linear (gamma corrected) R'G'B' into standardized tri-stimulus XYZ.
Definition: colorconversions.hxx:873
RGBPrime2LuvFunctor()
Definition: colorconversions.hxx:1840
TinyVector< component_type, 3 > value_type
Definition: colorconversions.hxx:891
TinyVector< T, 3 > argument_type
Definition: colorconversions.hxx:2522
TinyVector< T, 3 > argument_type
Definition: colorconversions.hxx:1744
TinyVector< float, 3 > lab2Polar(V const &lab)
Create polar representation form L*a*b*.
Definition: colorconversions.hxx:2975
RGB2LabFunctor()
Definition: colorconversions.hxx:1618
RGBPrime2YPrimeUVFunctor(component_type max)
Definition: colorconversions.hxx:2542
TinyVector< T, 3 > argument_type
Definition: colorconversions.hxx:1605
RGB2LabFunctor(component_type max)
Definition: colorconversions.hxx:1625
TinyVector< T, 3 > value_type
Definition: colorconversions.hxx:2785
YPrimeUV2RGBPrimeFunctor(component_type max)
Definition: colorconversions.hxx:2624
Convert non-linear (gamma corrected) R'G'B' into perceptual uniform CIE L*u*v*.
Definition: colorconversions.hxx:1817
TinyVector< T, 3 > argument_type
Definition: colorconversions.hxx:1413
Lab2RGBFunctor(component_type max)
Definition: colorconversions.hxx:1764
result_type operator()(V const &yiq) const
Definition: colorconversions.hxx:2448
TinyVector< T, 3 > result_type
Definition: colorconversions.hxx:2608
YPrimeUV2RGBPrimeFunctor()
Definition: colorconversions.hxx:2617
RGB2LuvFunctor(component_type max)
Definition: colorconversions.hxx:1531
NumericTraits< To >::RealPromote component_type
Definition: colorconversions.hxx:295
RGB2XYZFunctor()
Definition: colorconversions.hxx:811
RGBPrime2XYZFunctor()
Definition: colorconversions.hxx:896
Convert Y'PbPr color difference components into non-linear (gamma corrected) R'G'B'.
Definition: colorconversions.hxx:2226
RGB2LuvFunctor()
Definition: colorconversions.hxx:1524
FFTWComplex< R >::NormType norm(const FFTWComplex< R > &a)
norm (= magnitude)
Definition: fftw3.hxx:1037
TinyVector< T, 3 > argument_type
Definition: colorconversions.hxx:883
RGB2sRGBFunctor(component_type max)
Definition: colorconversions.hxx:435
TinyVector< From, 3 > argument_type
Definition: colorconversions.hxx:536
result_type operator()(V const &rgb) const
Definition: colorconversions.hxx:2183
Convert perceptual uniform CIE L*a*b* into linear (raw) RGB.
Definition: colorconversions.hxx:1731
RGBPrime2RGBFunctor()
Definition: colorconversions.hxx:553
RGB2XYZFunctor(component_type max)
Definition: colorconversions.hxx:818
XYZ2LuvFunctor< component_type >::result_type value_type
Definition: colorconversions.hxx:1519
Convert perceptual uniform CIE L*u*v* into non-linear (gamma corrected) R'G'B'.
Definition: colorconversions.hxx:1976
Convert standardized tri-stimulus XYZ into perceptual uniform CIE L*a*b*.
Definition: colorconversions.hxx:1328
NumericTraits< T >::RealPromote component_type
Definition: colorconversions.hxx:2691
result_type operator()(V const &ycbcr) const
Definition: colorconversions.hxx:2804
TinyVector< T, 3 > argument_type
Definition: colorconversions.hxx:974
Convert linear (raw) RGB into standardized sRGB.
Definition: colorconversions.hxx:405
XYZ2RGBFunctor()
Definition: colorconversions.hxx:987
NumericTraits< T >::RealPromote component_type
Definition: colorconversions.hxx:1910
TinyVector< float, 3 > polar2Luv(double color, double brightness, double saturation)
Init L*u*v* color triple from polar representation.
Definition: colorconversions.hxx:3023
TinyVector< T, 3 > argument_type
Definition: colorconversions.hxx:2695
TinyVector< component_type, 3 > value_type
Definition: colorconversions.hxx:2164
TinyVector< T, 3 > value_type
Definition: colorconversions.hxx:2246
Luv2RGBPrimeFunctor(component_type max)
Definition: colorconversions.hxx:2009
YPrimeCbCr2RGBPrimeFunctor()
Definition: colorconversions.hxx:2790
TinyVector< To, 3 > result_type
Definition: colorconversions.hxx:415
XYZ2LuvFunctor< component_type >::result_type value_type
Definition: colorconversions.hxx:1835
TinyVector< component_type, 3 > result_type
Definition: colorconversions.hxx:887
result_type operator()(V const &lab) const
Definition: colorconversions.hxx:1771
TinyVector< T, 3 > argument_type
Definition: colorconversions.hxx:2777
TinyVector< T, 3 > argument_type
Definition: colorconversions.hxx:2238
result_type operator()(V const &rgb) const
Definition: colorconversions.hxx:1854
XYZ2RGBFunctor< T >::result_type result_type
Definition: colorconversions.hxx:1683
Luv2RGBPrimeFunctor()
Definition: colorconversions.hxx:2002
result_type operator()(V const &lab) const
Definition: colorconversions.hxx:1433
TinyVector< To, 3 > value_type
Definition: colorconversions.hxx:291
NumericTraits< T >::RealPromote component_type
Definition: colorconversions.hxx:794
TinyVector< float, 3 > yPrimeIQ2Polar(V const &yiq)
Create polar representation form Y'IQ.
Definition: colorconversions.hxx:3317
Convert standardized tri-stimulus XYZ into non-linear (gamma corrected) R'G'B'.
Definition: colorconversions.hxx:1045
Convert linear (raw) RGB into perceptual uniform CIE L*a*b*.
Definition: colorconversions.hxx:1588
TinyVector< component_type, 3 > value_type
Definition: colorconversions.hxx:2530
NumericTraits< T >::RealPromote component_type
Definition: colorconversions.hxx:1823
result_type operator()(V const &xyz) const
Definition: colorconversions.hxx:1086
Convert non-linear (gamma corrected) R'G'B' into Y'PbPr color difference components.
Definition: colorconversions.hxx:2139
TinyVector< float, 3 > polar2YPrimePbPr(double color, double brightness, double saturation)
Init Y'PbPr color triple from polar representation.
Definition: colorconversions.hxx:3108
result_type operator()(V const &luv) const
Definition: colorconversions.hxx:1700
Convert non-linear (gamma corrected) R'G'B' into Y'IQ components.
Definition: colorconversions.hxx:2322
Class for fixed size vectors.This class contains an array of size SIZE of the specified VALUETYPE...
Definition: accessor.hxx:940
NumericTraits< T >::RealPromote component_type
Definition: colorconversions.hxx:1233
XYZ2RGBFunctor< T >::result_type result_type
Definition: colorconversions.hxx:1748
TinyVector< component_type, 3 > result_type
Definition: colorconversions.hxx:2160
XYZ2LuvFunctor< component_type >::result_type result_type
Definition: colorconversions.hxx:1831
TinyVector< T, 3 > result_type
Definition: colorconversions.hxx:2242
XYZ2LabFunctor< component_type >::result_type result_type
Definition: colorconversions.hxx:1918
RGB2RGBPrimeFunctor(component_type max)
Definition: colorconversions.hxx:307
Convert linear (raw) RGB into standardized tri-stimulus XYZ.
Definition: colorconversions.hxx:788
result_type operator()(argument_type const &rgb) const
Definition: colorconversions.hxx:824
TinyVector< component_type, 3 > result_type
Definition: colorconversions.hxx:1241
double gamma(double x)
The gamma function.
Definition: mathutil.hxx:1587
TinyVector< component_type, 3 > value_type
Definition: colorconversions.hxx:1421
TinyVector< component_type, 3 > result_type
Definition: colorconversions.hxx:1159
Lab2RGBPrimeFunctor()
Definition: colorconversions.hxx:2073
Convert linear (raw) RGB into non-linear (gamma corrected) R'G'B'.
Definition: colorconversions.hxx:277
result_type operator()(V const &rgb) const
Definition: colorconversions.hxx:1941
TinyVector< component_type, 3 > value_type
Definition: colorconversions.hxx:1346
TinyVector< component_type, 3 > value_type
Definition: colorconversions.hxx:1163
TinyVector< T, 3 > result_type
Definition: colorconversions.hxx:2781
XYZ2RGBFunctor< T >::result_type value_type
Definition: colorconversions.hxx:1752
TinyVector< float, 3 > yPrimeUV2Polar(V const &yuv)
Create polar representation form Y'UV.
Definition: colorconversions.hxx:3402
TinyVector< To, 3 > value_type
Definition: colorconversions.hxx:419
Lab2XYZFunctor()
Definition: colorconversions.hxx:1425
TinyVector< component_type, 3 > result_type
Definition: colorconversions.hxx:1342
YPrimeIQ2RGBPrimeFunctor(component_type max)
Definition: colorconversions.hxx:2441
Convert Y'CbCr color difference components into non-linear (gamma corrected) R'G'B'.
Definition: colorconversions.hxx:2765
TinyVector< T, 3 > argument_type
Definition: colorconversions.hxx:1338
TinyVector< T, 3 > argument_type
Definition: colorconversions.hxx:2421
RGBPrime2YPrimeCbCrFunctor(component_type max)
Definition: colorconversions.hxx:2715
TinyVector< component_type, 3 > value_type
Definition: colorconversions.hxx:806
XYZ2RGBFunctor< T >::result_type value_type
Definition: colorconversions.hxx:2068
Convert Y'IQ color components into non-linear (gamma corrected) R'G'B'.
Definition: colorconversions.hxx:2409
result_type operator()(argument_type const &rgb) const
Definition: colorconversions.hxx:694
TinyVector< T, 3 > argument_type
Definition: colorconversions.hxx:1827
TinyVector< float, 3 > luv2Polar(V const &luv)
Create polar representation form L*u*v*.
Definition: colorconversions.hxx:3060
result_type operator()(V const &luv) const
Definition: colorconversions.hxx:1255
TinyVector< T, 3 > value_type
Definition: colorconversions.hxx:2612
TinyVector< T, 3 > argument_type
Definition: colorconversions.hxx:2339
Convert linear (raw) RGB into perceptual uniform CIE L*u*v*.
Definition: colorconversions.hxx:1494
YPrimePbPr2RGBPrimeFunctor(component_type max)
Definition: colorconversions.hxx:2258
RGBPrime2XYZFunctor(component_type max)
Definition: colorconversions.hxx:903
TinyVector< component_type, 3 > value_type
Definition: colorconversions.hxx:1245
result_type operator()(V const &yuv) const
Definition: colorconversions.hxx:2631
TinyVector< T, 3 > argument_type
Definition: colorconversions.hxx:1511
Convert perceptual uniform CIE L*u*v* into standardized tri-stimulus XYZ.
Definition: colorconversions.hxx:1227
NumericTraits< T >::RealPromote component_type
Definition: colorconversions.hxx:1151
Convert Y'UV color components into non-linear (gamma corrected) R'G'B'.
Definition: colorconversions.hxx:2592
Convert non-linear (gamma corrected) R'G'B' into Y'CbCr color difference components.
Definition: colorconversions.hxx:2678
TinyVector< float, 3 > polar2Lab(double color, double brightness, double saturation)
Init L*a*b* color triple from polar representation.
Definition: colorconversions.hxx:2937
Convert non-linear (gamma corrected) R'G'B' into Y'UV components.
Definition: colorconversions.hxx:2505
TinyVector< To, 3 > result_type
Definition: colorconversions.hxx:668
TinyVector< float, 3 > polar2YPrimeCbCr(double color, double brightness, double saturation)
Init Y'CbCr color triple from polar representation.
Definition: colorconversions.hxx:3193
result_type operator()(V const &rgb) const
Definition: colorconversions.hxx:2366
result_type operator()(argument_type const &rgb) const
Definition: colorconversions.hxx:909
NumericTraits< T >::RealPromote component_type
Definition: colorconversions.hxx:2335
YPrimeCbCr2RGBPrimeFunctor(component_type max)
Definition: colorconversions.hxx:2797
result_type operator()(V const &xyz) const
Definition: colorconversions.hxx:1357
Lab2RGBFunctor()
Definition: colorconversions.hxx:1757
TinyVector< component_type, 3 > result_type
Definition: colorconversions.hxx:2526
linalg::TemporaryMatrix< T > cos(MultiArrayView< 2, T, C > const &v)
Convert standardized tri-stimulus XYZ into perceptual uniform CIE L*u*v*.
Definition: colorconversions.hxx:1145
NumericTraits< T >::RealPromote component_type
Definition: colorconversions.hxx:879
RGBPrime2YPrimeIQFunctor(component_type max)
Definition: colorconversions.hxx:2359
TinyVector< To, 3 > result_type
Definition: colorconversions.hxx:540
result_type operator()(V const &luv) const
Definition: colorconversions.hxx:2016
TinyVector< T, 3 > value_type
Definition: colorconversions.hxx:1067
Convert standardized tri-stimulus XYZ into linear (raw) RGB.
Definition: colorconversions.hxx:963
SquareRootTraits< FixedPoint< IntBits, FracBits > >::SquareRootResult sqrt(FixedPoint< IntBits, FracBits > v)
square root.
Definition: fixedpoint.hxx:616
result_type operator()(V const &lab) const
Definition: colorconversions.hxx:2087
TinyVector< T, 3 > argument_type
Definition: colorconversions.hxx:1679
NumericTraits< T >::RealPromote component_type
Definition: colorconversions.hxx:1334
RGBPrime2LabFunctor()
Definition: colorconversions.hxx:1927
XYZ2RGBFunctor< T >::result_type result_type
Definition: colorconversions.hxx:2064
XYZ2LuvFunctor< component_type >::result_type result_type
Definition: colorconversions.hxx:1515
TinyVector< component_type, 3 > result_type
Definition: colorconversions.hxx:802
TinyVector< T, 3 > argument_type
Definition: colorconversions.hxx:1237
TinyVector< T, 3 > value_type
Definition: colorconversions.hxx:982