RGB色彩模式
套用
目前的顯示器大都是採用了RGB顏色標準,在顯示器上,是通過
電子槍打在螢幕的紅、綠、藍三色發光極上來產生色彩的,目前的電腦一般都能顯示32位顏色,有一千萬種以上的顏色。
電腦螢幕上的所有顏色,都由這紅色綠色藍色三種色光按照不同的比例
混合而成的。一組紅色綠色藍色就是一個最小的顯示單位。螢幕上的任何一個顏色都可以由一組RGB值來記錄和表達。
因此這紅色綠色藍色又稱為三原色光,用英文表示就是R(red)、G(green)、B(blue)。
在電腦中,RGB的所謂“多少”就是指亮度,並使用整數來表示。通常情況下,RGB各有256級亮度,用數字表示為從0、1、2...直到255。注意雖然數字最高是255,但0也是數值之一,因此共256級。如同2000年到2010年共是11年一樣。
按照計算,256級的RGB色彩總共能組合出約1678萬種色彩,即256×256×256=16777216。通常也被簡稱為1600萬色或千萬色。也稱為24位色(2的24次方)。
在
led領域利用三合一點陣全彩技術, 即在一個發光單元里由RGB三色晶片組成全彩像素。隨著這一技術的不斷成熟,led顯示技術會給人們帶來更加豐富真實的色彩感受。
原理
RGB是從顏色發光的原理來設計定的,通俗點說它的顏色混合方式就好像有紅、綠、藍三盞燈,當它們的光相互疊合的時候,色彩相混,而亮度卻等於三者亮度之總和,越混合亮度越高,即加法混合。
紅、綠、藍三盞燈的疊加情況,中心三色最亮的疊加區為白色,加法混合的特點:越疊加越明亮。
紅、綠、藍三個
顏色通道每種色各分為256階亮度,在0時“燈”最弱——是關掉的,而在255時“燈”最亮。當三色灰度數值相同時,產生不同灰度值的灰色調,即三色灰度都為0時,是最暗的黑色調;三色灰度都為255時,是最亮的白色調。
RGB 顏色稱為加成色,因為您通過將 R、G 和 B 添加在一起(即所有光線反射回眼睛)可產生白色。加成色用於照明光、電視和計算機顯示器。例如,顯示器通過紅色、綠色和藍色螢光粉發射光線產生顏色。絕大多數可視光譜都可表示為紅、綠、藍 (RGB) 三色光在不同比例和強度上的混合。這些顏色若發生重疊,則產生青、
洋紅和黃。
RGB格式
對一種顏色進行編碼的方法統稱為“
顏色空間”或“
色域”。用最簡單的話說,世界上任何一種顏色的“顏色空間”都可定義成一個固定的數字或變數。RGB(紅、綠、藍)只是眾多顏色空間的一種。採用這種編碼方法,每種顏色都可用三個變數來表示-紅色綠色以及藍色的強度。記錄及顯示彩色圖像時,RGB是最常見的一種方案。但是,它缺乏與早期黑白顯示系統的良好兼容性。因此,許多電子電器廠商普遍採用的做法是,將RGB轉換成
YUV顏色空間,以維持兼容,再根據需要換回RGB格式,以便在電腦顯示器上顯示彩色圖形。
網頁格式
由於網頁(WEB)是基於計算機瀏覽器開發的媒體,所以顏色以光學顏色RGB(紅、綠、藍)為主。網頁顏色是以16進制代碼表示,一般格式為#DEFABC (字母範圍從A-F,數字從0-9 );如黑色,在
網頁代碼中便是:#000000(在css編寫中可簡寫為#000)。當顏色代碼為#AABB11時,可以簡寫為#AB1表示,如#135與#113355表示同樣的顏色。
RGB1、RGB4、RGB8都是
調色板類型的RGB格式,在描述這些媒體類型的格式細節時,通常會在BITMAPINFOHEADER數據結構後面跟著一個調色板(定義一系列顏色)。它們的圖像數據並不是真正的顏色值,而是當前像素顏色值在調色板中的索引。以RGB1(2色
點陣圖)為例,比如它的調色板中定義的兩種顏色值依次為0x000000(黑色)和0xFFFFFF(白色)…(每個像素用1位表示)表示對應各像素的顏色為:黑黑白白黑白黑白黑白白白…。
RGB555
RGB555是另一種16位的RGB格式,RGB分量都用5位表示(剩下的1位不用)。使用一個字讀出一個像素後,這個字的各個位意義如下:
高位元組 低位元組
X R 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 0x001FR = (wPixel & RGB555_MASK_RED) >> 10; // 取值範圍0-31G = (wPixel & RGB555_MASK_GREEN) >> 5; // 取值範圍0-31B = wPixel & RGB555_MASK_BLUE; // 取值範圍0-31
RGB565
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 0x001FR = (wPixel & RGB565_MASK_RED) >> 11; // 取值範圍0-31G = (wPixel & RGB565_MASK_GREEN) >> 5; // 取值範圍0-63B = 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位相互轉換的問題
RGB24
RGB24使用24位來表示一個像素,RGB分量都用8位表示,取值範圍為0-255。注意在記憶體中RGB各分量的排列順序為:BGR BGR BGR…。通常可以使用RGBTRIPLE數據結構來操作一個像素,它的定義為:
typedef struct tagRGBTRIPLE {BYTE rgbtBlue; // 藍色分量BYTE rgbtGreen; // 綠色分量BYTE rgbtRed; // 紅色分量} RGBTRIPLE;
RGB32
RGB32使用32位來表示一個像素,RGB分量各用去8位,剩下的8位用作Alpha
通道或者不用。(ARGB32就是帶Alpha通道的RGB24。)注意在記憶體中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色彩空間主要是指加色法當中的三度色彩空間,通過使用不同強度的三原色,紅、綠、藍色的光線來組合成不同的色彩,就好像說,如果平時我們利用掃瞄器從印刷品上掃描圖像,原理就是掃瞄器閱讀了圖像上面的紅、綠、藍三色的光亮度,然後把這些量度轉換成數據,當顯示器收到這些數據的時候就可以按照程式設定轉換成制定的紅、綠、藍三原色,其實他們當中是有很多不同顏色的小色塊的,由於這些色塊的像素非常非常的小而且密密麻麻的,所以我們眼睛沒法分辨出來。
常見顏色
顏色名稱 | 紅色值 Red | 綠色值 Green | 藍色值 Blue |
黑色 | 0 | 0 | 0 |
藍色 | 0 | 0 | 255 |
綠色 | 0 | 255 | 0 |
青色 | 0 | 255 | 255 |
紅色 | 255 | 0 | 0 |
洋紅色 | 255 | 0 | 255 |
黃色 | 255 | 255 | 0 |
白色 | 255 | 255 | 255 |
以上顏色為常用的基本顏色。
顏色選擇器
顏色選擇器是指利用程式實現R、G、B三色的分配,來實現顏色的選擇,利用顏色選擇器可以選擇出所有的顏色,總共有256*256*256種,同時可以實時的預覽顏色,這就使得顏色的選擇多種多樣,並且非常方便。
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 );
The return value is the resultant RGB color as a
COLORREFvalue.
byRed
The intensity of the red color.
byGreen
The intensity of the green color.
byBlue
The intensity of the blue color.
RGB顏色函式
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()函式使用下述公式計算表示顏色的長整數:Red+ 256 * Green+65536 *Blue其中,Blue代表藍色分量,Green代表綠色分量,Red代表紅色分量。各分量中,數值越小,亮度越低,數值越大,亮度越高。