RGB与YUV颜色编码的区别
在图像显示中,⼀张 1280 * 720 ⼤小的图片,就代表着它有 1280 * 720 个像素点。其中每一个像素点的颜色显示都采用 RGB 编码方法,将 RGB 分别取不同的值,就会展示不同的颜⾊。
RGB 图像中,每个像素点都有红、绿、蓝三个原色,其中每种原色都占用 8 bit,也就是1个字节,那 么⼀个像素点也就占用 24 bit,也就是3个字节。
YUV 颜色编码采用的是 明亮度 和 色度 来指定像素的颜色。其中, Y 表示 明亮度 ( LUminance、Luma ),而 U 和 V 表示 色度 ( Chrominance、Chroma )。而 色度 又定义了颜色的两个方面: 色调 和 饱和度 。
为什么要使用YUV 颜色编码?我们要先从 YUV采样格式 说起
YUV 4:4:4 采样,意味着 Y、U、V 三个分量的采样⽐例相同,因此在⽣成的图像里,每个像素的三个分量量信息完整,都是 8 bit ,也就是 1 个字节。
那么按照 YUV4:4:4 采样的码流为: Y0,U0,V0,Y1,U1,V1,Y2,U2,V2,Y3,U3,V3;
最后映射还原的像素点为:
[Y0,U0,V0] ;[Y1,U1,V1] ;[Y2,U2,V2] ;[Y3,U3,V3];
使⽤如上 YUV4:4:4 与使⽤图像 RGB 颜⾊模型图像⼤小是一样的. 并 没有达到节省带宽的目的 。
YUV 4:2:2 采样,意味着 UV分量 是 Y分量 采样的⼀半, Y分量 和 UV分量 按照 2 : 1 的比例采样。
如果水平⽅向有 10 个像素点,那么采样了 10 个 Y分量 ,⽽只采样了 5 个 UV分量 。
那么按照 YUV 4:2:2 采样的码流为:
Y0,U0,Y1,V1,Y2,U2,Y3,V3
其中,每采样过一个像素点,都会采样其 Y分量 ,⽽ U、V分量 就会间隔一个采集一个。
最后映射还原的像素点为:
[Y0,U0,V0] ;[Y1,U1,V1] ;[Y2,U2,V2] ;[Y3,U3,V3];
可以看到 YUV 4:2:2 采样的图像比 RGB 模型图像 节省了三分之一的存储空间 ,在传输时占⽤的带宽也会随之减少。
YUV 4:2:0 采样,并不是指只采样 U分量 ⽽不采样 V分量 。而是指,在每⼀行扫描时,只扫描一种⾊度分量( U 或者 V ),和 Y分量 按照 2 : 1 的⽅式采样。比如,第⼀行扫描时, YU分量 按照 2 : 1 的方式采样,那么第二行扫描时, YV分量 按照 2:1 的方式采样。对于每个色度分量来说,它的⽔平⽅向和竖直方向的采样和 Y分量 相比都是 2:1 。假设第一行扫描了 U 分量 ,第⼆行扫描了 V 分量 ,那么需要扫描两行才能够组成完整的 UV分量
那么按照 YUV 4:2:0 采样的码流为:
Y0 , U0 , Y1 , Y2 , U2 , Y3 , Y5 , V5 , Y6 , Y7 , V7 , Y8
其中,每采样过一个像素点,都会采样其Y分量,⽽U、V分量就会间隔一行按照2 : 1进⾏采样。
最后映射还原的像素点为:
[Y0 U0 V5]、[Y1 U0 V5]、[Y2 U2 V7]、[Y3 U2 V7]、 [Y5 U0 V5]、[Y6 U0 V5]、[Y7 U2 V7]、[Y8 U2 V7]
从映射出的像素点中可以看到,四个 Y分量 是共用了一套 UV分量 ,⽽而且是按照 2*2⼩方格 的形式分布的,相比 YUV 4:2:2 采样中两个 Y分量 共用一套 UV分量 ,这样 更能够节省空间 。
对于图像显示器来说,它是通过 RGB模型 来显示图像的,⽽在传输图像数据时⼜是使⽤ YUV模型 ,这是因为 YUV模型 可以节省带宽。因此就需要采集图像时将 RGB模型 转换到 YUV模型 ,显示时再将 YUV模型 转换为 RGB模型
RGB 到 YUV 的转换,就是将图像所有像素点的 R、G、B 分量转换到 Y、U、V 分量。
2020-07-03 广告