Python版本 以及 C++版本 实现 RGB与YUV之间的转换

一.RGB模型与YUV模型

1. RGB模型

我们知道物理三基色分别是红(Red)、绿(Green)、蓝(Blue)。现代的显示器技术就是通过组合不同强度的红绿蓝三原色,来达成几乎任何一种可见光的颜色。在图像储存中,通过记录每个像素的红绿蓝强度,来记录图像的方法,称为RGB模型 (RGB Model)。常见的图片格式中,PNG和BMP这两种就是基于RGB模型的。

1.1 模型介绍

RGB: 是一种加色模型,将红(Red)、绿(Green)、蓝(Blue)三原色的色光以不同的比例相加,以产生多种多样的色光;且三原色的红绿蓝不可能用其他单色光合成。

  • 浮点表示方式: 取值范围为 0.0 ~ 1.0(如在 OpenGL 中对每个子像素点的表示就是使用这个表示方式)。
  • 整数表示: 取值范围为 0 ~ 255 或者 00 ~ FF(如 RGBA_8888、RGB_565)。

1.2 索引形式

RGB1: 每个像素用 1 个 bit 表示 0,1 两种值,可表示的颜色范围为双色,即最传统的黑和白;需要调色板,不过调色板只包含两种颜色。
RGB4: 每个像素用 4 个 bit 表示,4 个 bit 所能够表示的索引范围是 0~15,共 16 个。也就是可以表示 16 种颜色。即调色板中包含 16 中颜色。
RGB8: 每个像素用 8 个 bit 表示。8 个 bit 所能够表示的索引范围是 0~2

猜你喜欢

转载自blog.csdn.net/sage_wang/article/details/108610697