- RGB
應(yīng)用
目前的顯示器大都是采用了RGB顏色標(biāo)準(zhǔn),在顯示器上,是通過電子槍打在屏幕的紅、綠、藍(lán)三色發(fā)光極上來(lái)產(chǎn)生色彩的,目前的電腦一般都能顯示32位顏色,有一千萬(wàn)種以上的顏色。
電腦屏幕上的所有顏色,都由這紅色綠色藍(lán)色三種色光按照不同的比例混合而成的。一組紅色綠色藍(lán)色就是一個(gè)最小的顯示單位。屏幕上的任何一個(gè)顏色都可以由一組RGB值來(lái)記錄和表達(dá)。
因此這紅色綠色藍(lán)色又稱為三原色光,用英文表示就是R(red)、G(green)、B(blue)。
在電腦中,RGB的所謂“多少”就是指亮度,并使用整數(shù)來(lái)表示。通常情況下,RGB各有256級(jí)亮度,用數(shù)字表示為從0、1、2...直到255。注意雖然數(shù)字最高是255,但0也是數(shù)值之一,因此共256級(jí)。如同2000年到2010年共是11年一樣。
按照計(jì)算,256級(jí)的RGB色彩總共能組合出約1678萬(wàn)種色彩,即256×256×256=16777216。通常也被簡(jiǎn)稱為1600萬(wàn)色或千萬(wàn)色。也稱為24位色(2的24次方)。
在led領(lǐng)域利用三合一點(diǎn)陣全彩技術(shù), 即在一個(gè)發(fā)光單元里由RGB三色晶片組成全彩像素。隨著這一技術(shù)的不斷成熟,led顯示技術(shù)會(huì)給人們帶來(lái)更加豐富真實(shí)的色彩感受。
原理
RGB是從顏色發(fā)光的原理來(lái)設(shè)計(jì)定的,通俗點(diǎn)說它的顏色混合方式就好像有紅、綠、藍(lán)三盞燈,當(dāng)它們的光相互疊合的時(shí)候,色彩相混,而亮度卻等于兩者亮度之總和,越混合亮度越高,即加法混合。
有色光可被無(wú)色光沖淡并變亮。如藍(lán)色光與白光相遇,結(jié)果是產(chǎn)生更加明亮的淺藍(lán)色光。知道它的混合原理后,在軟件中設(shè)定顏色就容易理解了。
紅、綠、藍(lán)三盞燈的疊加情況,中心三色最亮的疊加區(qū)為白色,加法混合的特點(diǎn):越疊加越明亮。
紅、綠、藍(lán)三個(gè)顏色通道每種色各分為255階亮度,在0時(shí)“燈”最弱——是關(guān)掉的,而在255時(shí)“燈”最亮。當(dāng)三色灰度數(shù)值相同時(shí),產(chǎn)生不同灰度值的灰色調(diào),即三色灰度都為0時(shí),是最暗的黑色調(diào);三色灰度都為255時(shí),是最亮的白色調(diào)。
RGB 顏色稱為加成色,因?yàn)槟ㄟ^將 R、G 和 B 添加在一起(即所有光線反射回眼睛)可產(chǎn)生白色。加成色用于照明光、電視和計(jì)算機(jī)顯示器。例如,顯示器通過紅色、綠色和藍(lán)色熒光粉發(fā)射光線產(chǎn)生顏色。絕大多數(shù)可視光譜都可表示為紅、綠、藍(lán) (RGB) 三色光在不同比例和強(qiáng)度上的混合。這些顏色若發(fā)生重疊,則產(chǎn)生青、洋紅和黃。
RGB格式
對(duì)一種顏色進(jìn)行編碼的方法統(tǒng)稱為“顏色空間”或“色域”。用最簡(jiǎn)單的話說,世界上任何一種顏色的“顏色空間”都可定義成一個(gè)固定的數(shù)字或變量。RGB(紅、綠、藍(lán))只是眾多顏色空間的一種。采用這種編碼方法,每種顏色都可用三個(gè)變量來(lái)表示-紅色綠色以及藍(lán)色的強(qiáng)度。記錄及顯示彩色圖像時(shí),RGB是最常見的一種方案。但是,它缺乏與早期黑白顯示系統(tǒng)的良好兼容性。因此,許多電子電器廠商普遍采用的做法是,將RGB轉(zhuǎn)換成YUV顏色空間,以維持兼容,再根據(jù)需要換回RGB格式,以便在電腦顯示器上顯示彩色圖形。
網(wǎng)頁(yè)格式
由于網(wǎng)頁(yè)(WEB)是基于計(jì)算機(jī)瀏覽器開發(fā)的媒體,所以顏色以光學(xué)顏色RGB(紅、綠、藍(lán))為主。網(wǎng)頁(yè)顏色是以16進(jìn)制代碼表示,一般格式為#DEFABC (字母范圍從A-F,數(shù)字從0-9 );如黑色,在網(wǎng)頁(yè)代碼中便是:#000000(在css編寫中可簡(jiǎn)寫為#000)。當(dāng)顏色代碼為#AABB11時(shí),可以簡(jiǎn)寫為#AB1表示,如#135與#113355表示同樣的顏色。
RGB1、RGB4、RGB8都是調(diào)色板類型的RGB格式,在描述這些媒體類型的格式細(xì)節(jié)時(shí),通常會(huì)在BITMAPINFOHEADER數(shù)據(jù)結(jié)構(gòu)后面跟著一個(gè)調(diào)色板(定義一系列顏色)。它們的圖像數(shù)據(jù)并不是真正的顏色值,而是當(dāng)前像素顏色值在調(diào)色板中的索引。以RGB1(2色位圖)為例,比如它的調(diào)色板中定義的兩種顏色值依次為0x000000(黑色)和0xFFFFFF(白色)…(每個(gè)像素用1位表示)表示對(duì)應(yīng)各像素的顏色為:黑黑白白黑白黑白黑白白白…。
RGB555
RGB555是另一種16位的RGB格式,RGB分量都用5位表示(剩下的1位不用)。使用一個(gè)字讀出一個(gè)像素后,這個(gè)字的各個(gè)位意義如下:
高字節(jié) 低字節(jié)
X R R R R R G G G G G B B B B B (X表示不用,可以忽略)
可以組合使用屏蔽字和移位操作來(lái)得到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
RGB565
RGB565使用16位表示一個(gè)像素,這16位中的5位用于R,6位用于G,5位用于B。程序中通常使用一個(gè)字(WORD,一個(gè)字等于兩個(gè)字節(jié))來(lái)操作一個(gè)像素。當(dāng)讀出一個(gè)像素后,這個(gè)字的各個(gè)位意義如下:
高字節(jié) 低字節(jié)
R R R R R G G G G G G B B B B B
可以組合使用屏蔽字和移位操作來(lái)得到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位相互轉(zhuǎn)換的問題
RGB24
RGB24使用24位來(lái)表示一個(gè)像素,RGB分量都用8位表示,取值范圍為0-255。注意在內(nèi)存中RGB各分量的排列順序?yàn)椋築GR BGR BGR…。通常可以使用RGBTRIPLE數(shù)據(jù)結(jié)構(gòu)來(lái)操作一個(gè)像素,它的定義為:
typedef struct tagRGBTRIPLE {
BYTE rgbtBlue; // 藍(lán)色分量
BYTE rgbtGreen; // 綠色分量
BYTE rgbtRed; // 紅色分量
} RGBTRIPLE;
RGB32
RGB32使用32位來(lái)表示一個(gè)像素,RGB分量各用去8位,剩下的8位用作Alpha通道或者不用。(ARGB32就是帶Alpha通道的RGB24。)注意在內(nèi)存中RGB各分量的排列順序?yàn)椋築GRA BGRA BGRA…。通??梢允褂肦GBQUAD數(shù)據(jù)結(jié)構(gòu)來(lái)操作一個(gè)像素,它的定義為:
typedef struct tagRGBQUAD {
BYTE rgbBlue; // 藍(lán)色分量
BYTE rgbGreen; // 綠色分量
BYTE rgbRed; // 紅色分量
BYTE rgbReserved; // 保留字節(jié)(用作Alpha通道或忽略)
} RGBQUAD。
信號(hào)獲取
技術(shù)特點(diǎn)
● 采集計(jì)算機(jī)VGA輸出屏幕、各種非標(biāo)準(zhǔn)相機(jī)的輸出采集設(shè)備、標(biāo)準(zhǔn)或非標(biāo)的RGB分量信號(hào)
● 采集的信號(hào)種類按照接口可為復(fù)合非標(biāo)準(zhǔn)模擬信號(hào),綠路帶同步的/行場(chǎng)分離的RGB分量信號(hào)
● 高分辨率高幀率:1280×1024/40幀;1024×768/60幀;800×600/120幀;
● 最高點(diǎn)頻可達(dá)170M
● 支持硬件任意開窗,二級(jí)縮放,硬件翻轉(zhuǎn)
● 有類似內(nèi)存映射的功能,多個(gè)應(yīng)用程序/進(jìn)程可以共享其采集的圖像數(shù)據(jù);
● 信號(hào)接入丟失感知,無(wú)信號(hào)不藍(lán)屏、死機(jī)
● 硬件控制幀率流量,可在實(shí)際使用中和其它采集卡配合,更有效提高PCI帶寬的利用
● 支持RGB32、RGB24、YUV422、RGB8等采集格式
● 全自動(dòng)行場(chǎng)頻檢測(cè):具有全自動(dòng)行場(chǎng)頻自適應(yīng)能力和信號(hào)自檢測(cè)能力,信源端信號(hào)的變化不需要用戶調(diào)節(jié),完全適合無(wú)人值守應(yīng)用
●編程完全使用微軟提供DirectShow /VFW接口,也可提供基于VC、VB、Delphi等的二次開發(fā)包演示程序和源代碼,
●可使用微軟的AmCap,VidCap,Windows Media Encode,Window Movie Maker、第三方提供的LabView等應(yīng)用軟件
信號(hào)介紹
VGA采集卡/RGB信號(hào)采集卡可采集VGA信號(hào)、標(biāo)準(zhǔn)和非標(biāo)準(zhǔn)RGB分量等信號(hào)源,適用于高精度、高分辨率的圖像采集、高清VGA視頻圖像的存儲(chǔ)、編碼傳輸?shù)纫蟆?/p>
開發(fā)工具
● 操作系統(tǒng)支持:Windows 2000、XP、Vista、7 linux unix等主流操作系統(tǒng).
● SDK支持:VC、VB、Delphi,提供演示程序及演示程序源代碼!
● 驅(qū)動(dòng)支持:DirectX、OpenCV、LabView、
色彩空間
RGB色彩空間根據(jù)實(shí)際使用設(shè)備系統(tǒng)能力的不同,有各種不同的實(shí)現(xiàn)方法。截至2006年,最常用的是24-位實(shí)現(xiàn)方法,也就是紅綠藍(lán)每個(gè)通道有8位或者256色級(jí)?;谶@樣的24-位RGB 模型的色彩空間可以表現(xiàn) 256×256×256 ≈ 1670萬(wàn)色。一些實(shí)現(xiàn)方法采用每原色16位,能在相同范圍內(nèi)實(shí)現(xiàn)更高更精確的色彩密度。這在寬域色彩空間中尤其重要,因?yàn)榇蟛糠滞ǔJ褂玫念伾帕械南鄬?duì)更緊密。
印刷技術(shù)的當(dāng)中的RGB色彩空間主要是指加色法當(dāng)中的三度色彩空間,通過使用不同強(qiáng)度的三原色,紅、綠、藍(lán)色的光線來(lái)組合成不同的色彩,就好像說,如果平時(shí)我們利用掃描儀從印刷品上掃描圖像,原理就是掃描儀閱讀了圖像上面的紅、綠、藍(lán)三色的光亮度,然后把這些量度轉(zhuǎn)換成數(shù)據(jù),當(dāng)顯示器收到這些數(shù)據(jù)的時(shí)候就可以按照程序設(shè)定轉(zhuǎn)換成制定的紅、綠、藍(lán)三原色,其實(shí)他們當(dāng)中是有很多不同顏色的小色塊的,由于這些色塊的像素非常非常的小而且密密麻麻的,所以我們眼睛沒法分辨出來(lái)。
RGB宏
#define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16)))
這是個(gè)帶三個(gè)參數(shù)的宏,
首先將r,g,b強(qiáng)制轉(zhuǎn)換成BYTE型,之后g左移8位,b左移16位,并把結(jié)果分別強(qiáng)制轉(zhuǎn)換成DWORD型,最后將r,左移8位后的g,還有左移16位后的b三者做按位或,所得的結(jié)果強(qiáng)制轉(zhuǎn)換成COLORREF類型。[1]
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.
內(nèi)容來(lái)自百科網(wǎng)