顏色空間(一)——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%之間的值則使得畫素可以透過背景顯示出來,就像透過玻璃(半透明性)。