1. 程式人生 > >顏色空間(一)——RGB色彩模式

顏色空間(一)——RGB色彩模式

RGB色彩模式是工業界的一種顏色標準,目前的顯示器大都是採用了RGB顏色標準。

自然界中,畫畫用的顏料最基本的顏色稱為三原色。由紅、黃、藍組成。

而這裡所說的是光學中的三基色。由紅、綠、藍構成。

那麼計算機中是怎麼儲存各個畫素的資訊呢?

首先、先明確一點,R、G、B顏色分量值的物理含義是灰度值,也就是我們俗稱的亮暗。

儲存RGB有多種格式。如RGB24(RGB888)、RGB565、RGB555等、以及RGB32(RGBA)。

RGB24(RGB888)

RGB24是最實用的一種儲存方式。每一個顏色分量都用1Byte(1位元組)儲存,即8Bit(8位),範圍0~255。

由高到低儲存 R、G、B。

這裡不做過多解釋(太常見了)。

RGB565

RGB565是用16位空間儲存。

地址由高到低:R R R R R   G G G G G G   B B B B B

                         5位R            6位G                5位B

RGB555

RGB555也是用16位空間儲存。不同的是最高位不做處理(無意義)

地址由高到低:X   R R R R R   G G G G G    B B B B B

                               5位R            5位G                5位B

涉及到幾種模式的轉換問題

我就寫一種rgb24 →  rgb565的虛擬碼(很簡單吧)

B = rgb24[0] >> 3 & 0x001F;
G = rgb24[1] >> 2 << 5 & 0x07E0;
R = rgb24[2] >> 3 << 11 & 0xF8;
color = R | G | B;

很容易理解。RGB565 或者 RGB555 是 RGB24的壓縮形式

那麼它們之間的轉化就會造成精度的降低。

RGB32(RGBA)

RGBA是RGB24多加了alpha通道(不透明度引數)。在0%和100%之間的值則使得畫素可以透過背景顯示出來,就像透過玻璃(半透明性)。