MS Matrix to convert between YCbCr and RGB
2009-02-07 20:08
399 查看
// r, g, b, y, u, v are [0, 255]
// Cb = u
// Cr = v
#define MS_YUV4442RGB( y, u, v, r, g, b ) /
I_MACRO_BEGIN /
(r) = (298 * ((y) - 16) + 409 * ((v) - 128) + 128) >> 8; /
(g) = (298 * ((y) - 16) - 100 * ((u) - 128) - 208 * ((v) - 128) + 128) >> 8; /
(b) = (298 * ((y) - 16) + 516 * ((u) - 128) + 128) >> 8; /
CLIP( r, 0, 255 ); /
CLIP( g, 0, 255 ); /
CLIP( b, 0, 255 ); /
I_MACRO_END
// r, g, b, y, u, v are [0, 255]
// Cb = u
// Cr = v
#define MS_RGB2YUV444( r, g, b, y, u, v ) /
I_MACRO_BEGIN /
(y) = (( 66 * (r) + 129 * (g) + 25 * (b) + 128) >> 8) + 16; /
(u) = (( -38 * (r) - 74 * (g) + 112 * (b) + 128) >> 8) + 128; /
(v) = (( 112 * (r) - 94 * (g) - 18 * (b) + 128) >> 8) + 128; /
I_MACRO_END
// Cb = u
// Cr = v
#define MS_YUV4442RGB( y, u, v, r, g, b ) /
I_MACRO_BEGIN /
(r) = (298 * ((y) - 16) + 409 * ((v) - 128) + 128) >> 8; /
(g) = (298 * ((y) - 16) - 100 * ((u) - 128) - 208 * ((v) - 128) + 128) >> 8; /
(b) = (298 * ((y) - 16) + 516 * ((u) - 128) + 128) >> 8; /
CLIP( r, 0, 255 ); /
CLIP( g, 0, 255 ); /
CLIP( b, 0, 255 ); /
I_MACRO_END
// r, g, b, y, u, v are [0, 255]
// Cb = u
// Cr = v
#define MS_RGB2YUV444( r, g, b, y, u, v ) /
I_MACRO_BEGIN /
(y) = (( 66 * (r) + 129 * (g) + 25 * (b) + 128) >> 8) + 16; /
(u) = (( -38 * (r) - 74 * (g) + 112 * (b) + 128) >> 8) + 128; /
(v) = (( 112 * (r) - 94 * (g) - 18 * (b) + 128) >> 8) + 128; /
I_MACRO_END
相关文章推荐
- EBU Matrix to convert between YCbCr and RGB
- ITU601 Matrix to convert between YCbCr and RGB
- ITU709 Matrix to convert between YCbCr and RGB
- Matrix to convert between HSL and RGB
- Matrix to convert between HSV and RGB
- How To Convert Virtual Machines Between VirtualBox and VMware[测试可行]
- How to make conversion between RGB and HSV? [Python sourcecode]
- How to make conversion between RGB and HSV? [Python sourcecode]
- YCbCr to RGB and RGB toYCbCr
- How to Convert Temperature (K) to RGB: Algorithm and Sample Code
- Part 59 to 60 Difference between Convert ToString and ToString,String and StringBuilder
- Algorithm to convert RGB to HSV and HSV to RGB in range 0-255 for both
- YCbCr to RGB and RGB toYCbCr
- C++ String: How to convert between 'CString' and 'std::string'?
- [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]PrI.6.1
- The YCbCr to RGB formula
- Converting Between YUV and RGB
- [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.2.8
- [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.4.1
- [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.5.5