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