基本介紹
概述
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顔色标準,在顯示器上,是通過電子槍打在屏幕的紅、綠、藍三色發光極上來産生色彩的,目前的電腦一般都能顯示32位顔色,約有一百萬種以上的顔色。
在led領域利用三合一點陣全彩技術,即在一個發光單元裡由RGB三色晶片組成全彩像素。随着這一技術的不斷成熟,led顯示技術會給人們帶來更加豐富真實的色彩感受。
原理
RGB是從顔色發光的原理來設計定的,通俗點說它的顔色混合方式就好像有紅、綠、藍三盞燈,當它們的光相互疊合的時候,色彩相混,而亮度卻等于兩者亮度之總和(兩盞燈的亮度嘛!),越混合亮度越高,即加法混合。
有色光可被無色光沖淡并變亮。如藍色光與白光相遇,結果是産生更加明亮的淺藍色光。知道它的混合原理後,在軟件中設定顔色就容易理解了。
紅、綠、藍三盞燈的疊加情況,中心三色最亮的疊加區為白色,加法混合的特點:越疊加越明亮。
紅、綠、藍三個顔色通道每種色各分為255階亮度,在0時“燈”最弱——是關掉的,而在255時“燈”最亮。當三色數值相同時為無色彩的灰度色,而三色都為255時為最亮的白色,都為0時為黑色。
RGB顔色稱為加成色,因為您通過将R、G和B添加在一起(即所有光線反射回眼睛)可産生白色。加成色用于照明光、電視和計算機顯示器。例如,顯示器通過紅色、綠色和藍色熒光粉發射光線産生顔色。絕大多數可視光譜都可表示為紅、綠、藍(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≈670萬色。一些實現方法采用每原色16位,能在相同範圍内實現更高更精确的色彩密度。這在寬域色彩空間中尤其重要,因為大部分通常使用的顔色排列的相對更緊密。
印刷技術的當中的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 )
注意:如果其中有一個參數的值超過255,不會顯示任何錯誤,但這個參數會被當做255。
函數說明
可以接受顔色說明的應用程序的方法和屬性期望這個說明是一個代表RGB顔色值的數值。一個RGB顔色值指定紅、綠、藍三原色的相對亮度,生成一個用于顯示的特定顔色。
用法RGB()函數使用下述公式計算表示顔色的長整數:65536 *Blue + 256 * Green+Red其中,Blue代表藍色分量,Green代表綠色分量,Red代表紅色分量。各分量中,數值越小,亮度越低,數值越大,亮度越高。
顔色選擇器
顔色選擇器是指利用程序實現R、G、B三色的分配,來實現顔色的選擇,利用顔色選擇器可以選擇出所有的顔色,總共有256*256*256種,同時可以實時的預覽顔色,這就使得顔色的選擇多種多樣,并且非常方便。


















