RGB&YUV颜色编码

719 阅读3分钟
  • RGB颜色编码概念

    RGB三个字母分别代表了红(Red)、绿(Green)、蓝(Blue)、三种颜色,这三种颜色被称为三原色,通过将这三个颜色以不同的比例相加,得到各种不同的颜色。
    在图像显示中,一张1080 X 1280大小的图片就有1080 X 1280个像素点,其中每一个像素点都采用用RGB编码方法,将RGB分别取不同的值,就会展示不同的颜色,最后形成一整有颜色的图片 RGB图像中,每个像素点都有红、绿、蓝三个原色,其中每种原色都占用8bit,也就是一个字节,那么一个像素点也就占用了24bit,也就是3字节。所以一张1080 x 1280大小的图片,就占用了1080 x 1280 x 3 /1024/1024=3.95MB存储空间
  • YUV颜色编码概念

YUV 颜⾊编码采⽤的是明亮度和⾊度来指定像素的颜⾊。其中,Y 表示明亮度 (Luminance、Luma),⽽ U 和 V 表示⾊度(Chrominance、Chroma)。⽽⾊度⼜定义了颜⾊的两个⽅⾯:⾊调和饱和度 和RGB表示图像类似,每个像素点都包含Y、U、V分量。但是它的Y和UV分量是可以分离的,如果没有UV分量⼀样可以显示完整的图像,只不过是⿊⽩的.
对于YUV图像来说,并不是每个像素点都需要包含了Y、U、V三个分量,根据不同的采样格式,可以每个Y分量都对应⾃⼰的UV分量,也可以⼏个Y分量共⽤UV分量。

  • YUV采样格式

    • YUV4:4:4

      YUV 4:4:4 采样,意味着 Y、U、V 三个分量的采样⽐例相同,因此在⽣成的图像⾥,每个像素的三个分量信息完整,都是 8 bit,也就 是⼀个字节。(这种采样格式并没有节省单个像素点的空间,所以不推荐使用可以直接使用RGB编码格式了)
    • YUV4:2:2

    YUV 4:2:2 采样,意味着UV分量是Y分量采样的⼀半,Y分量和UV分量按照2 : 1 的⽐例采样。如果⽔平⽅向有 10个像素点,那么采样了10个Y分量,⽽只采样了5个UV分量。
    • YUV4:2:0

    YUV4:2:0采样,并不是指只采样U分量⽽不采样V分量。⽽是指在每⼀⾏扫描时只扫描⼀种⾊度分(U 或者 V),和 Y分量按照2 : 1的⽅式采样。⽐如第⼀⾏扫描时YU按照2 : 1 的⽅式采样,那么第⼆⾏扫描时YV分量按照2:1的⽅式采样。对于每个⾊度分量来说,它的⽔平⽅向和竖直⽅向的采样和Y分量相⽐都是2:1。假设第⼀⾏扫描了U分量,第⼆⾏扫描了V分量,那么需要扫描两⾏才能够组成完整的UV分量
  • RGB-YUV颜色编码转换

对于图像显示器来说,它是通过RGB模型来显示图像的,⽽在传输图像数据时⼜是使⽤YUV模型,这是因为YUV模型可以节省带宽。因此就需要采集图像时将RGB模型转换到YUV模型,显示时再将YUV模型转换为RGB模型
RGB 到 YUV 的转换,就是将图像所有像素点的 R、G、B 分量转换到 Y、U、V 分量。
Y = 0.299 * R + 0.587 * G + 0.114 * B
U = -0.147 * R - 0.289 * G + 0.436 * B
V = 0.615 * R - 0.515 * G - 0.100 * B

R = Y + 1.14 * V
G = Y - 0.39 * U - 0.58 * V
B = Y + 2.03 * U

  • 总结(为什么要用YUV颜色编码)

就是应为YUV可以采用不同的采样格式从而达到节省存储空间的效果,所以使用YUV编码比RGB编码更好,但是计算机又只识别RGB颜色编码,所以使用YUV颜色编码的时候需要有一个颜色编码转换的过程