关于YUV和YCbCr的一些知识。

视频编解码器,是指一个能够对数字视频进行压缩或者解压缩的程序或者设备。通常这种压缩属于有损数据压缩。该技术通过数字化的普及而发展起来。模拟信号有着保密性差、抗干扰能力弱的缺点,当然数字信号在进行模/数转换时也有着量化误差的缺点。
模数转换包括采样、保持、量化和编码。由于水平的限制我就不一一详述了。
典型的数字视频编解码器的第一步是将从摄像机输入的视频从RGB色度空间转换到YCbCr色度空间。
转换到YCbCr色度空间会带来两点好处:1)这样做部分的解除了色度信号中的相关性,提高了可压缩能力。2)这样做将亮度信号分离出来,而亮度信号对视觉感觉是最重要的,相对来说色度信号对视觉感觉就不是那么重要,可以抽样到较低的分辨率(4:2:0或者4:2:2)而不影响人观看的感觉。
yCbCr和RGB的转换:
Y’ = 0.257*R' + 0.504*G' + 0.098*B' + 16 
Cb' = -0.148*R' - 0.291*G' + 0.439*B' + 128 
Cr' = 0.439*R' - 0.368*G' - 0.071*B' + 128 
R' = 1.164*(Y’-16) + 1.596*(Cr'-128) 
G' = 1.164*(Y’-16) - 0.813*(Cr'-128) - 0.392*(Cb'-128) 
B' = 1.164*(Y’-16) + 2.017*(Cb'-128)
在这个时候我们就不得不提到YUV色度了,有人说YUV色度就是yCbCr色度……
但是就换算公式来说:
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是用于电视视频输出的,(电视指的一般是模拟电视。)yCbCr是用于视频编码的,我们在h.264,mpeg等编码标准中用的yuv其实是YcbCr,大家不要被名称搞混淆了。而TUV是模拟信号转换为电视信号的输出色度。

一个RGB图像可以在捕捉之后转换为YCbCr格式用来减少存储和传输负担。在显示图象之前,再转回为RGB.
接下来我就顺便讲一下10bit:
10bit当然不是10bit的rgb。一般电脑显示器显示的也只有8bit,而且人眼能识别的也就是8bit,再高人眼也识别不了。
但是很可怜的是,数字信号往往是有损的,如果我们采用8bit的编码,真正输出rgb颜色才6bit多一点。这对视频影音的脑残粉是忍受不能的。
你们想想,从摄像机输入的rgb先转换为编码标准x.264(以x.264为例)。其实就是将它转换成YCbCr。而我们解码以电脑显示器的方式输出的话一般是rgb输出的吧。这一来一回,数字信号的误差就使色度折损过重,如果你用的是x.264 hi10p(就是10bit)的话色度折损之后的色度也能被人眼所接受了。
简单的说,8bit视频编码能发挥8bit RGB的颜色,不足17%。特别是在颜色暗淡的时候,8bit视频一圈圈的色带,更是颜色精度不够的铁证。
这时候,10bit 编码就显得有必要了。10bit 编码的色度可以发挥接近100%,比起8bit视频来说颜色精度大大提高。换言之,如果你用的是8bit显示器(没人到今天在用电子管示波器吧?),那么10bit视频才能完全发挥它的威力。
(以上10bit部分部分来源于littlepox的理论)

猜你喜欢

转载自blog.csdn.net/coloriy/article/details/83380610