音视频基础知识-色彩空间

日常生活中接触得比较多的是 RGB 色彩空间,所有的颜色可以通过三原色产生,这 三原色 就是 Red (红),Green(绿),Blue(蓝)。但是还有另一种比较常用的色彩空间是 YUV, 用于编码和存储则比较好。
RGB 色彩空间更适合图像采集和显示, YUV 空间用于编码和存储则比较好。在存储和编码之前,RGB 图像要转换为 YUV 图像,而 YUV 图像在 显示之前通常有必要转换回 RGB。无论是 RGB 还是 YUV,他们都是 表达 色彩信息的一种方式
YUV 色彩空间,Y 代表 亮度,U代表色调,V代表色饱和度。 YCbCr ,把它当成是 YUV 就行,实际上 YCbCr 才是比较准确的术语。
经过大量研究实验表明,视觉系统 对 色度 的敏感度 是远小于 亮度的。所以可以对 色度 采用更小的采样率来压缩数据,对亮度采用正常的采样率即可,这样压缩数据不会对视觉体验产生太大的影响。

YUV采样格式
YUV444格式跟RGB相似 一个像素占位是8+8+8=24bit(3个字节)
YUV422格式 一个像素占位是8+8/2+8/2=16bit(2个字节)
YUV420格式 一个像素占位是8+8/2+8*0=12bit(1.5个字节)

例如原始数据有8个像素点

1. YUV444和原数据一样[yuv,yuv,yuv,yuv,yuv,yuv,yuv,yuv] 每像素占位3字节

2. YUV422  数据 [yu,yv,yu,yv,yu,yv,yu,yv] ,每像素占位2字节

3. YUV420  数据 [yu,y,yu,y,yv,y,yv,y] ,每像素平均占位1.5字节,因为占位少,视觉体验几乎没有变化,所以大多数视频编码使用这格式

YUV存储方式

1.打包模式Packed 按像素点存放,

如YUV444格式 [yuv1,yuv2,yuv3,yuv4,yuv5,yuv6,yuv7,yuv8]

2.平面模式Planar YUV分开存放

如YUV444格式 
  [y1,y2,y3,y4,y5,y6,y7,y8]
  [u1,u2,u3,u4,u5,u6,u7,u8]
  [v1,v2,v3,v4,v5,v6,v7,v8]

3.半平面模式Semi-Planar Y单独存放,UV一起存放

如YUV444格式 
  [y1,y2,y3,y4,y5,y6,y7,y8]
  [uv1,uv2,uv3,uv4,uv5,uv6,uv7,uv8]

为方便查阅,通过表格整理一下:

关键顺序”那一项没有Y时,Y都是单独存放

RGB格式转换成YUV格式公式

1. 归一化操作  我们知道RGB取值范围是[0~255], 归一化操作是(除以255)当前值/255.0 那么它的值范围[0~1]

2. RGB转YUV公式

Kr+Kg+Kb=1
Y=Kr*R+Kg*G+Kb*B
U=B−Y
V=R−Y

上面公式中的 K 是一个权重因子
Kr 代表 R红色通道的权重
Kg 代表 G绿色通道的权重
Kb 代表 B蓝色通道的权重


因为 K 权重因子是需要经过大量的实验才能得到,所以产生了以下标准
1. BT.601标准[1]——标清数字电视(SDTV)
Y=0.299R+0.587G+0.114B


2. BT.709标准[2]——高清数字电视(HDTV)
Y=0.2126R+0.7152G+0.0722B


3. BT.2020标准[3]——超高清数字电视(UHDTV)
Y=0.2627R+0.6780G+0.0593B

我们用 BT.601标准[1]——标清数字电视(SDTV) 为例推算出UV值

U =B−Y= B-(0.299R+0.587G+0.114B)= -0.299R - 0.587G + 0.886B

V = R−Y = R - (0.299R+0.587G+0.114B)= 0.701R-0.587G- 0.114B

这样UV分区取值范围是[?~?]多少,知道取值范围之后需要归一化操作
知道RGB取值范围是[0~1]
U的最大值是 [R=0,G=0,B=1]时0.886
U的最小值是 [R=1,G=1,B=0]时-0.886
U取值范围是[-0.886~0.886]归一化操作,
U=(-0.299R - 0.587G +0.886B)* (1/(0.886*2)) = 0.564*(-0.299R - 0.587G +0.886B) = -0.168R - 0.331G + 0.499B 
同理推出 V值

V=V=(0.701R-0.587G- 0.114B)*(1/(0.701*2)) = 0.499R - 0.418G - 0.081B

最终公式

Y=0.299R+0.587G+0.114B

U = -0.168R - 0.331G + 0.499B 

V==0.499R - 0.418G - 0.081B

用相同方式也能推算出不同标准下 RGB到YUV的转换公式

感谢大家的支持,如要问题欢迎提问指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

指掀涛澜天下惊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值