灰阶 16-235和0-255的由来
灰阶 16-235和0-255的由来
电视视频的标准色域:BT.709,这个标准的色彩范围和sRGB的色彩范围一样,唯一的不同就是灰阶为16-235。在BT.709的规定中,亮度分量在8bit深度下,取值范围是16-235.
电视采用16-235原因:
- a. 模拟信号转为数字信号时,数字信号在超过电平上限时处理不完善,不能像模拟信号那样在顶端平缓过度,为了确保瞬时峰值电平不会超限,所以留了一小部分空间。
- b. 在黑白电视机和彩色电视机共存时代,彩色电视机为了兼容黑白电视机,彩色电视机的彩色信号必须被压缩,为了截去最不敏感的色彩信息,色差分量就此而来(YUV:Y是亮度,UV是色度;YPbPr,YCbCr等)。RGB的0-255模式无法运作于黑白电视上,因为带宽有限,因此需要改用色差分量来传输,并压缩至16-235的色阶范围。
逐行输出和隔行输出:
- 由于要兼容黑白电视,原有的电视带宽不够,因此隔行输出模式产生,将一副电视机拆分为两个场输出,由于电视机的扫描速度快,人眼不会察觉,但是却能省下了一半的信号带宽。YPbPr表示逐行扫描色差输出,YCbCr表示隔行扫描色差输出。
现象:
- PC使用0-255,电视摄像机使用16-235,由于电视视频先入为主,大部分视频默认为16-235,当放到电脑上看的时候,会出现黑场不会是最黑的0,白场最白的也不是255。
- 0-255下色彩显示会更真实,但是黑的会黑一片,白的会白一片,细节会有丢失。16-235去掉了两头色系,不会很黑很白,但是会有朦胧感,能看到细节。
16-235和0-255之间的转换
- 0-255 RGB -> 16-235 YUV 的过程,叫做YC压缩
- 16-235 YUV -> 0-255 RGB 的过程,叫做YC伸张
ITU-R BT.601里面规定了RGB<–>YUV的转换式,视频转为MPEG的时候,数据范围0-255的RGB要转为YUV的时候,要先做数据范围的压缩,把范围压缩成16-235,
然后才转成YUV存储起来。相反MPEG解压缩的时候,Y:16-235,UV:16-240扩展为0-255RGB
- a. 转MPEG的时候没有YC压缩,储存0-255YUV,播放时不可做YC伸张,否则0-255的灰阶会被扩展到-19~278,8bit(0-255数据范围)深度下,超出的数据范围的数据会被去掉,导致画面对比过强,色彩会崩
- b. 转MPEG的时候做YC压缩,储存16-235YUV,播放一定要做YC伸张,否则显示的是16-235RGB,数据范围变小,纯白不是[255,255,255],纯黑不是[0,0,0],色彩黯淡,有朦胧感
- c. 输入RGB数据范围为0-255,转MPEG做压缩,转16-235YUV
- d. 输入RGB数据范围为16-235,转MPEG不做压缩,转16-235YUV
ref