Q: 为什么YUV 全为0 的图像是绿色的
A: 图像中常见的颜色编码有两种方式。
1. YUV - 灰度(亮度) + 色差分量
2. RGB - 红绿蓝 三色分量
通常电视, 视频等都采用yuv编码方式, 由于人类对灰度/亮度比较敏感, 而对色差分量不是很敏感。
所以通过yuv编码方式, 可以减少U, V 也即Cb, Cr分量的数量。
故yuv编码方式常见有 YUV 4:4:4, 4:2:2, 4:2:0, 4:1:1, 4:0:0
其中4:4:4 就是完全没压缩的。
4:0:0为完全没有色差分量的, 即我们以前的黑白电视^^
其他都是压缩了部分UV色差分量的。
具体格式可参考fourcc等网站。(后续补充详细)
比如
https://www.jianshu.com/p/6a361e86ccd5
http://liuyang1.github.io/2015/12/29/yuv/
关于YUV全0的图像是绿色图像的原因?
需要提下yuv和rgb之间的转换公式。
根据协议/规范不同, 有挺多种转换公式。
可参考
https://www.fourcc.org/fccyvrgb.php
我取其中一种试试看...
YUV和RGB的转换:
Y = 0.299 R + 0.587 G + 0.114 B
U = -0.1687 R - 0.3313 G + 0.5 B + 128
V = 0.5 R - 0.4187 G - 0.0813 B + 128
R = Y + 1.402 (V-128)
G= Y - 0.34414 (U-128) - 0.71414 (V-128)
B= Y + 1.772 (U-128)
将YUV全0带入公式2,
得出
R = 1.402 * (-128) = -126.598
G = -0.34414(-128) - 0.71414(-128) = 44.04992 + 91.40992 = 135.45984
B = 1.772 * (-128) = -126.228
ok, 差不多就是R = -126, G = 135, B = -126
其中RGB有取值范围, 都是[0, 255]
所以最后就是R=0, G=135, B=0
查看颜色表...
嗯, 是一种深绿色, 和电视和视频种经常会遇到的那种绿色一样!!