您的位置:首页 > 其它

ITU709 Matrix to convert between YCbCr and RGB

2009-02-07 19:54 666 查看
[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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: