快好知 kuaihz订阅看过栏目

 

RGB,三原色光模式(英语:RGB color model),又称RGB颜色模型或红绿蓝颜色模型,是一种加色模型,将红(Red)、绿(Green)、蓝(Blue)三原色的色光以不同的比例相加,以产生多种多样的色光。RGB颜色模型的主要目的是在电子系统中检测,表示和显示图像,比如电视和电脑,但是在传统摄影中也有应用。在电子时代之前,基于人类对颜色的感知,RGB颜色模型已经有了坚实的理论支撑。RGB是一种依赖于设备的颜色空间:不同设备对特定RGB值的检测和重现都不一样,因为颜色物质(荧光剂或者染料)和它们对红、绿和蓝的单独响应水平随着制造商的不同而不同,甚至是同样的设备不同的时间也不同。

基本介绍

概述

RGB色彩模式(也翻译为“红绿蓝”,比较少用)是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。

RGB色彩模式使用RGB模型为图像中每一个像素的RGB分量分配一个0~255范围内的强度值。例如:纯红色R值为255,G值为0,B值为0;灰色的R、G、B三个值相等(除了0和255);白色的R、G、B都为255;黑色的R、G、B都为0。RGB图像只使用三种颜色,就可以使它们按照不同的比例混合,在屏幕上重现16777216种颜色。

在 RGB 模式下,每种 RGB 成分都可使用从 0(黑色)到 255(白色)的值。 例如,亮红色使用 R 值 246、G 值 20 和 B 值 50。 当所有三种成分值相等时,产生灰色阴影。 当所有成分的值均为 255 时,结果是纯白色;当该值为 0 时,结果是纯黑色。

应用

目前的显示器大都是采用了RGB颜色标准,在显示器上,是通过电子枪打在屏幕的红、绿、蓝三色发光极上来产生色彩的,目前的电脑一般都能显示32位颜色,约有一百万种以上的颜色。

在led 领域 利用三合一点阵全彩技术, 即在一个发光单元里由RGB三色晶片组成全彩像素。 随着这一技术的不断成熟,led显示技术会给人们带来更加丰富真实的色彩感受。

原理

RGB是从颜色发光的原理来设计定的,通俗点说它的颜色混合方式就好像有红、绿、蓝三盏灯,当它们的光相互叠合的时候,色彩相混,而亮度却等于两者亮度之总和(两盏灯的亮度嘛!),越混合亮度越高,即加法混合。

有色光可被无色光冲淡并变亮。如蓝色光与白光相遇,结果是产生更加明亮的浅蓝色光。知道它的混合原理后,在软件中设定颜色就容易理解了。

红、绿、蓝三盏灯的叠加情况,中心三色最亮的叠加区为白色,加法混合的特点:越叠加越明亮。

红、绿、蓝三个颜色通道每种色各分为255阶亮度,在0时“灯”最弱——是关掉的,而在255时“灯”最亮。当三色数值相同时为无色彩的灰度色,而三色都为255时为最亮的白色,都为0时为黑色。

RGB 颜色称为加成色,因为您通过将 R、G 和 B 添加在一起(即所有光线反射回眼睛)可产生白色。 加成色用于照明光、电视和计算机显示器。 例如,显示器通过红色、绿色和蓝色荧光粉发射光线产生颜色。绝大多数可视光谱都可表示为红、绿、蓝 (RGB) 三色光在不同比例和强度上的混合。 这些颜色若发生重叠,则产生青、洋红和黄。

RGB格式

由于网页(WEB)是基于计算机浏览器开发的媒体,所以颜色以光学颜色RGB(红、绿、蓝)为主。 网页颜色是以16进制代码表示,一般格式为#ZYZABC (字母用数字代替 )如黑色是三个颜色为0,在网页代码便是:#000000。当颜色代码为#AABB11时,可以简写为#AB1表示,如#135与#113355表示同样的颜色。

各种RGB格式

RGB1、RGB4、RGB8都是调色板类型的RGB格式,在描述这些媒体类型的格式细节时,通常会在BITMAPINFOHEADER数据结构后面跟着一个调色板(定义一系列颜色)。它们的图像数据并不是真正的颜色值,而是当前像素颜色值在调色板中的索引。以RGB1(2色位图)为例,比如它的调色板中定义的两种颜色值依次为0x000000(黑色)和0xFFFFFF(白色),那么图像数据001101010111…(每个像素用1位表示)表示对应各像素的颜色为:黑黑白白黑白黑白黑白白白…

¨ RGB565使用16位表示一个像素,这16位中的5位用于R,6位用于G,5位用于B。程序中通常使用一个字(WORD,一个字等于两个字节)来操作一个像素。当读出一个像素后,这个字的各个位意义如下:

高字节 低字节

R R R R R G G G G G G B B B B B

可以组合使用屏蔽字和移位操作来得到RGB各分量的值:

#define RGB565_MASK_RED 0xF800

#define RGB565_MASK_GREEN 0x07E0

#define RGB565_MASK_BLUE 0x001F

R = (wPixel & RGB565_MASK_RED) >> 11; // 取值范围0-31

G = (wPixel & RGB565_MASK_GREEN) >> 5; // 取值范围0-63

B = wPixel & RGB565_MASK_BLUE; // 取值范围0-31

#define RGB(r,g,b) (unsigned int)( (r/0x08 << 11) | (g/0x08 << 6) | b/0x08 )

#define RGB(r,g,b) (unsigned int)( (r/0x08 << 10) | (g/0x08 << 5) | b/0x08 )

该代码可以解决24位与16位相互转换的问题

¨ RGB555是另一种16位的RGB格式,RGB分量都用5位表示(剩下的1位不用)。使用一个字读出一个像素后,这个字的各个位意义如下:

高字节 低字节

X R R R R G G G G G B B B B B (X表示不用,可以忽略)

可以组合使用屏蔽字和移位操作来得到RGB各分量的值:

#define RGB555_MASK_RED 0x7C00

#define RGB555_MASK_GREEN 0x03E0

#define RGB555_MASK_BLUE 0x001F

R = (wPixel & RGB555_MASK_RED) >> 10; // 取值范围0-31

G = (wPixel & RGB555_MASK_GREEN) >> 5; // 取值范围0-31

B = wPixel & RGB555_MASK_BLUE; // 取值范围0-31

¨ RGB24使用24位来表示一个像素,RGB分量都用8位表示,取值范围为0-255。注意在内存中RGB各分量的排列顺序为:BGR BGR BGR…。通常可以使用RGBTRIPLE数据结构来操作一个像素,它的定义为:

typedef struct tagRGBTRIPLE {

BYTE rgbtBlue; // 蓝色分量

BYTE rgbtGreen; // 绿色分量

BYTE rgbtRed; // 红色分量

} RGBTRIPLE;

¨ RGB32使用32位来表示一个像素,RGB分量各用去8位,剩下的8位用作Alpha通道或者不用。(ARGB32就是带Alpha通道的RGB32。)注意在内存中RGB各分量的排列顺序为:BGRA BGRA BGRA…。通常可以使用RGBQUAD数据结构来操作一个像素,它的定义为:

typedef struct tagRGBQUAD {

BYTE rgbBlue; // 蓝色分量

BYTE rgbGreen; // 绿色分量

BYTE rgbRed; // 红色分量

BYTE rgbReserved; // 保留字节(用作Alpha通道或忽略)

} RGBQUAD。

信号获取

技术特点

● 采集计算机VGA输出屏幕、各种非标准相机的输出采集设备、标准或非标的RGB分量信号

● 采集的信号种类按照接口可为复合非标准模拟信号,绿路带同步的/行场分离的RGB分量信号

● 高分辨率高帧率:1280×1024/40帧;1024×768/60帧;800×600/120帧;

● 最高点频可达170M

● 支持硬件任意开窗,二级缩放,硬件翻转

● 有类似内存映射的功能,多个应用程序/进程可以共享其采集的图像数据;

● 信号接入丢失感知,无信号不蓝屏、死机

● 硬件控制帧率流量,可在实际使用中和其它采集卡配合,更有效提高PCI带宽的利用

● 支持RGB32、RGB24、YUV422、RGB8等采集格式

● 全自动行场频检测:具有全自动行场频自适应能力和信号自检测能力,信源端信号的变化不需要用户调节,完全适合无人值守应用

●编程完全使用微软提供DirectShow /VFW接口,也可提供基于VC、VB、Delphi等的二次开发包演示程序和源代码,

●可使用微软的AmCap,VidCap,Windows Media Encode,Window Movie Maker、第三方提供的LabView等应用软件

信号简介

VGA采集卡/RGB信号采集卡可采集VGA信号、标准和非标准RGB分量等信号源,适用于高精度、高分辨率的图像采集、高清VGA视频图像的存储、编码传输等要求。

开发工具

● 操作系统支持:Windows 2000、XP、Vista、7 linux unix等主流操作系统.

● SDK支持:VC、VB、Delphi,提供演示程序及演示程序源代码!

● 驱动支持:DirectX、OpenCV、LabView、

色彩空间

RGB色彩空间根据实际使用设备系统能力的不同,有各种不同的实现方法。截至2006年,最常用的是24-位实现方法,也就是红绿蓝每个通道有8位或者256色级。基于这样的24-位RGB 模型的色彩空间可以表现 256×256×256 ≈ 1670万色。一些实现方法采用每原色16位,能在相同范围内实现更高更精确的色彩密度。这在宽域色彩空间中尤其重要,因为大部分通常使用的颜色排列的相对更紧密。

印刷技术的当中的RGB色彩空间主要是指加色法当中的三度色彩空间,通过使用不同强度的三原色,红、绿、蓝色的光线来组合成不同的色彩,就好像说,如果平时我们利用扫描仪从印刷品上扫描图像,原理就是扫描仪阅读了图像上面的红、绿、蓝三色的光亮度,然后把这些量度转换成数据,当显示器收到这些数据的时候就可以按照程序设定转换成制定的红、绿、蓝三原色,其实他们当中是有很多不同颜色的小色块的,由于这些色块的像素非常非常的小而且密密麻麻的,所以我们眼睛没法分辨出来。

RGB宏

#define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16)))

这是个带三个参数的宏,

首先将r,g,b强制转换成BYTE型,之后g左移8位,b左移16位,并把结果分别强制转换成DWORD型,最后将r,左移8位后的g,还有左移16位后的b三者做按位或,所得的结果强制转换成COLORREF类型。

TheRGBmacro selects a red, green, blue (RGB) color based on the arguments supplied and the color capabilities of the output device.

COLORREF RGB( BYTE byRed, BYTE byGreen, BYTE byBlue );

Return value

The return value is the resultant RGB color as aCOLORREFvalue.

Parameters

byRed

The intensity of the red color.

byGreen

The intensity of the green color.

byBlue

The intensity of the blue color.

颜色函数

RGB函数执行成功时返回由指定分量确定的颜色,用长整数表示。用于表示一个RGB(红绿蓝)颜色值.

语法

RGB (RedAs Integer ,GreenAs Integer ,BlueAs Integer )

部分描述
red必要参数; Integer类型 。数值范围从 0 到 255,表示颜色的红色成份。
green必要参数; Integer类型 。数值范围从 0 到 255,表示颜色的绿色成份。
blue必要参数; Integer类型 。数值范围从 0 到 255,表示颜色的蓝色成份。

注意: 如果其中有一个参数的值超过 255 ,不会显示任何错误,但这个参数会被当做 255。

函数说明

可以接受颜色说明的应用程序的方法和属性期望这个说明是一个代表 RGB 颜色值的数值。一个 RGB 颜色值指定红、绿、蓝三原色的相对亮度,生成一个用于显示的特定颜色。

用法RGB()函数使用下述公式计算表示颜色的长整数:65536 *Blue + 256 * Green+Red其中,Blue代表蓝色分量,Green代表绿色分量,Red代表红色分量。各分量中,数值越小,亮度越低,数值越大,亮度越高。

常见颜色

颜色名称红色值 Red绿色值 Green蓝色值 Blue
黑色000
蓝色00255
绿色02550
青色0255255
红色25500
洋红色2550255
黄色2552550
白色255255255

以上颜色为常用的基本颜色。

颜色选择器

颜色选择器是指利用程序实现R、G、B三色的分配,来实现颜色的选择,利用颜色选择器可以选择出所有的颜色,总共有256*256*256种,同时可以实时的预览颜色,这就使得颜色的选择多种多样,并且非常方便。

投稿
非常不爽,删了吧! 相关词条:其他 模式