【图像处理基础】RGB与YUV互转之间的一些问题

好久没有写博客,都开始有点生疏了

前几天做了有关RGB于YUV之间互转的研究,先不用管RGB和YUV的格式什么,这里只讲转换

1.浮点运算:直接根据变量取值做算术运算

注意:关于下面的两个公式,我在网上发现了很多这种公式,但是权重都有点不一样,这里我只写我自己用的一种并且成功实现的。

(1)RGB->YUV

根据有关规定,有相应的转置矩阵

下面这个是我实际中使用的算法根据

Y = 0.299R  + 0.587G + 0.114B
U = -0.169R - 0.331G + 0.5B+128
V = 0.500R  - 0.419G - 0.081B +128

(2)YUV->RGB

下面这个是我实际中使用的算法根据

R = Y + 1.403(V-128)
G = Y - 0.343(U-128) - 0.714(V-128)
B = Y + 1.770(U-128)

上面可以看到里面有浮点运算,这会导致耗时很长。下面对浮点计算进行优化

2.移位运算

(1)RGB->YUV

Y = ((R << 6) + (R << 3) + (R << 2) + R + (G << 7) + (G << 4) + (G << 2) + (G << 1) + (B << 4) + (B << 3) + (B << 2) + B) >> 8;
U = (-((R << 5) + (R << 2) + (R << 1)) - ((G << 6) + (G << 3) + (G<< 1)) + ((B << 6) + (B << 5) + (B << 4))) >> 8;
V = ((R << 7) + (R << 4) + (R << 3) + (R << 2) + (R << 1) - ((G << 7) + (G << 2)) - ((B << 4) + (B << 3) + (B << 1))) >> 8;

(2)YUV->RGB

R = ((Y << 8) + ((V << 8) + (V << 5) + (V << 2))) >> 8;
G = ((Y << 8) - ((U << 6) + (U << 5) + (U << 2)) - ((V << 7) + (V << 4) + (V << 2) + V)) >> 8;
B = ((Y << 8) + (U << 9) + (U << 3)) >> 8;

移位运算相对来说可以避免浮点运算的时间消耗。后续想起来什么再补充吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Demo.demo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值