3 #include "../utility.h"
7 template<
class T>
inline YUV<T>::YUV(T
const& y, T
const& u, T
const& v){
8 yuv_[0] = y; yuv_[1] = u; yuv_[2] = v;
11 for(
int i = 0; i < 3; i++){
16 template<
class T>
inline T
YUV<T>::y()
const {
return yuv_[0]; }
17 template<
class T>
inline T
YUV<T>::u()
const {
return yuv_[1]; }
18 template<
class T>
inline T
YUV<T>::v()
const {
return yuv_[2]; }
20 return yuv_[std::min((
size_t)3 - 1, i)];
22 template<
class T>
inline T
YUV<T>::vuy(
size_t i)
const {
return yuv(2-i);}
24 template<
class T>
inline T
YUV<T>::y(T
const& val){
return (yuv_[0]=val);}
25 template<
class T>
inline T
YUV<T>::u(T
const& val){
return (yuv_[1]=val);}
26 template<
class T>
inline T
YUV<T>::v(T
const& val){
return (yuv_[2]=val);}
27 template<
class T>
inline T
YUV<T>::yuv(
size_t i, T
const& val){
28 i = std::min((
size_t)3 - 1, i);
29 return (yuv_[i] = val);
31 template<
class T>
inline T
YUV<T>::vuy(
size_t i, T
const& val){
32 return yuv(2 - i, val);
37 inline YUVf::YUVf(
double const& y,
double const& u,
double const& v):
YUV(y, u, v){ }
47 template<
class RGB_T,
class YUV_T>
inline void RGB_to_YUV(
53 double y = 0.299 * r + 0.587 * g + 0.114 * b;
54 double u = -0.169 * r - 0.331 * g + 0.500 * b + 0.5;
55 double v = 0.500 * r - 0.419 * g - 0.081 * b + 0.5;
60 template<
class YUV_T,
class RGB_T>
inline void YUV_to_RGB(
66 double r = y - 0.00093 * (u - 0.5) + 1.401687 * (v - 0.5);
67 double g = y - 0.34370 * (u - 0.5) - 0.714170 * (v - 0.5);
68 double b = y + 1.77216 * (u - 0.5) - 0.000990 * (v - 0.5);
virtual T rMax() const =0
T normalize(T lower, T upper, T value)
(value-lower)/(upper-lower)
virtual T yMin() const =0
virtual T bMax() const =0
virtual T vMax() const =0
T denormalize(T lower, T upper, T _ratio)
(lower+_ratio*(upper-lower))
virtual T bMin() const =0
void RGB_to_YUV(RGB< RGB_T > const &rgb, YUV< YUV_T > *yuv)
virtual T yMax() const =0
void YUV_to_RGB(YUV< YUV_T > const &yuv, RGB< RGB_T > *rgb)
virtual T vMin() const =0
virtual T gMax() const =0
virtual T rMin() const =0
virtual T gMin() const =0
virtual T uMax() const =0
virtual T uMin() const =0