ITU709 Matrix to convert between YCbCr and RGB

本文介绍 ITU709 标准下 YCbCr 与 RGB 色彩空间之间的转换公式,并提供了具体的宏定义实现,有助于理解不同色彩空间之间的相互转换过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值