ITU709 Matrix to convert between YCbCr and RGB

[ITU 709: YCbCr <-> RGB]
0    <= Y, R, G, B <= 1
-0.5 <= Cb, Cr     <= 0.5
Y  =  0.2215 * R + 0.7154 * G + 0.0721 * B
Cb = -0.1145 * R - 0.3855 * G + 0.5000 * B
Cr =  0.5016 * R - 0.4556 * G - 0.0459 * B

R  = Y + 0.0000 * Cb + 1.5701 * Cr
G  = Y - 0.1870 * Cb - 0.4664 * Cr
B  = Y - 1.8556 * Cb + 0.0000 * Cr

 

// r, g, b, y are [0, 1]
// u, v are [-0.5, 0.5]
// Cb = u
// Cr = v
#define ITU709_RGB2YUV444( r, g, b, y, u, v )                                                    /
    I_MACRO_BEGIN                                                                                /
    (y) = 0.2215 * (r) + 0.7154 * (g) + 0.0721 * (b);                                            /
    (u) = -0.1145 * (r) - 0.3855 * (g) + 0.500 * (b);                                            /
    (v) = 0.5016 * (r) - 0.4556 * (g) - 0.0459 * (b);                                            /
    CLIP( y, 0, 1.0 );                                                                            /
    CLIP( u, -0.5, 0.5 );                                                                        /
    CLIP( v, -0.5, 0.5 );                                                                        /
    I_MACRO_END

// r, g, b, y are [0, 1]
// u, v are [-0.5, 0.5]
// Cb = u
// Cr = v
#define ITU709_YUV4442RGB( y, u, v, r, g, b )                                                    /
    I_MACRO_BEGIN                                                                                /
    (r) = (y) + 1.5701 * (v);                                                                    /
    (g) = (y) - 0.1870 * (u) - 0.4664 * (v);                                                    /
    (b) = (y) - 1.8556 * (u);                                                                    /
    CLIP( r, 0, 1.0 );                                                                            /
    CLIP( g, 0, 1.0 );                                                                            /
    CLIP( b, 0, 1.0 );                                                                            /
    I_MACRO_END

 

你可能感兴趣的:(Matrix)