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
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
相关文章推荐
- MS Matrix to convert between YCbCr and RGB
- ITU601 Matrix to convert between YCbCr and RGB
- EBU Matrix to convert between YCbCr and RGB
- Matrix to convert between HSL and RGB
- Matrix to convert between HSV and RGB
- How to Convert Temperature (K) to RGB: Algorithm and Sample Code
- YCbCr to RGB and RGB toYCbCr
- How to make conversion between RGB and HSV? [Python sourcecode]
- How to make conversion between RGB and HSV? [Python sourcecode]
- How To Convert Virtual Machines Between VirtualBox and VMware[测试可行]
- Algorithm to convert RGB to HSV and HSV to RGB in range 0-255 for both
- YCbCr to RGB and RGB toYCbCr
- Part 59 to 60 Difference between Convert ToString and ToString,String and StringBuilder
- C++ String: How to convert between 'CString' and 'std::string'?
- How To Share The Internet Connection Between Mac and PC
- Java-convert between INT and STRING
- How To Pass Arrays Between Visual Basic and C
- parse string once and convert it to float
- What is the difference between LINQ to SQL and LINQ to Entities?
- google-gson - A Java library to convert JSON to Java objects and vice-versa