请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

正在回答 回答被采纳积分+3

2回答

慕妹3585395 2024-04-04 22:29:29

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 回复 有任何疑惑可以回复我~
李超 2021-06-14 07:13:31

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

0 回复 有任何疑惑可以回复我~
  • 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 07:00:02
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信