网上说当YUV分量全部为零的时候,显示为绿色,从这个公式里怎么推测出来只有绿色分量呢?

来源:9-5 什么是YUV

weixin_慕UI7314011

2021-06-13

写回答

2回答

慕妹3585395

2024-04-04

1. YUV转RGB有很多版本,其中一个版本是ITU-R BT.601标准,也就是标清电视(SDTV)系统的转换公式为:

R = 1.164383 * (Y - 16) + 1.596027 * (V - 128) 

G = 1.164383 * (Y - 16) - 0.391762 * (U - 128) - 0.812968 * (V - 128) 

B = 1.164383 * (Y - 16) + 2.017232 * (U - 128)

把Y = U = V = 0 带入:

R = 1.164383 * (-16) + 1.596027 * (-128) ≈ -139.2 + -199.6 = -338.8 ≈ 0 (由于RGB值理论上应介于[0,255]之间,超出范围的值会被裁剪到0) 

G = 1.164383 * (-16) - 0.391762 * (-128) - 0.812968 * (-128) ≈ -18.6 + 50.1 + 104.4 ≈ 135.9 ≈ 128 (由于实际应用中可能有饱和度限制,这里接近于128) 

B = 1.164383 * (-16) + 2.017232 * (-128) ≈ -18.6 - 258.1 ≈ -276.7 ≈ 0 (同样超出范围被裁剪到0)

确实结果是【R, G, B】=【0, 128, 0】, 应该是很深的一个绿色。


2. 视频教程中的YUV转RGB,YUV全为0的时候,【R,G,B】= 【0, 0, 0】, 应该是显示黑色吧。

R = Y + 1.13983 * V = 0

G = Y - 0.39465 * U - 0.58060 * V = 0 

B = Y + 2.03211 * U = 0

0
0

李超

2021-06-14

最终显示到屏幕上是RGB,YUV到RGB有换算公式,你可以自己算一下

0
1
慕妹3585395
1. 如果按照您视频教程中的公式,即: R=Y+1.140*V G=Y-0.394*U-0.581*V B=Y+2.032*U 那么计算出来的RGB=[0, 0, 0],即黑色。 2. 如果按照https://fourcc.org/fccyvrgb.php的公式,即: B = 1.164(Y - 16) + 2.018(U - 128) G = 1.164(Y - 16) - 0.813(V - 128) - 0.391(U - 128) R = 1.164(Y - 16) + 1.596(V - 128) 那么转换出来的RGB=[-126, 135, -126],格式化为RGB=[0, 135, 0],确实类似深绿色。 不过我的问题是:这个RGB和YUV的转换关系,网上一搜有一堆不一样的。请问这个目前是没有一个标准化的公式吗?公式的不同又受到哪些变量的影响呢?采样格式的不同,或者是电视领域的厂商的不同?
2024-04-04
共1条回复

音视频小白系统入门课 音视频基础+ffmpeg原理

掌握音视频采集、编解码、RTMP传输协议等核心基础

2318 学习 · 813 问题

查看课程