RGB颜色空间

781 阅读2分钟

RGB是常用的一种颜色空间,红绿蓝三原色的意思,R=Red、G=Green、B=Blue。通常使用在视频采集和显示的场景。

显示器上,每一个像素单位都是由红色绿色蓝色三种色光按照不同比例混合而成,屏幕上的任何一个颜色都可以由一个RGB值来记录和表达。

RGB三个数值的多少是亮度,通常是[0,255]的数值。当三种色光的亮度值相同时,表现为灰度色彩(黑色,白色,灰色)。

RGB和YUV是颜色空间,而jpg/bmp之类的是图片格式,但也有yuv格式的图片。 比如bmp,像是没有压缩的格式。

blog:bmp转yuv

格式与存储

名称 bits 描述 排列格式
RGB565 16 R/G/B分别使用5、6、5位 高RRRRRGGG GGGBBBBB低
RGB555 16 R/G/B各使用5位,空闲1位 高XRRRRRGGG GGGBBBBB低
RGB24 24 R/G/B各使用8位 高BGRBGR...BGR低
RGB32 32 R/G/B各使用8位,剩下8位不用
ARGB32 32 R/G/B各使用8位,剩下8位表示Alpha通道 BGRA BGRA...BGRA

与YUV的转换

Y = 0.299R + 0.587G + 0.114B

U = -0.147R - 0.289G + 0.436B(+128)

V = 0.615R - 0.515G - 0.100B(+128)

R = Y + 1.14V

G = Y - 0.39U - 0.58V

B = Y + 2.03U

【需要注意的是,RGB与YUV的转换有一些不同公式,需要自己选择合适的计算方法。如果在嵌入式平台涉及到计算量的优化,可以将浮点型改为整数型,减少乘法计算改为移位操作,更进一步的可以预先计算好一些数值,把计算改成查表法,但需要注意表的设计,不能占用过多内存】

应用场景

在图像采集的时候,以及图像显示场景