天天看點

音視訊基礎知識-RGB音視訊基礎知識-RGB

音視訊基礎知識-RGB

1)RGB基礎知識

1.RGB簡介

RGB色彩就是常說的光學三原色,R代表Red(紅色),G代表Green(綠色),B代表Blue(藍色)。, 每一種顔色值的範圍是0~255,是以每一個顔色用1個位元組=8個bit便可完全在計算機内部表示出來。而R, G, B不同的組合幾乎産生了所有的顔色,當然自然界中的顔色比這些要遠遠豐富很多,采用R, G, B的方式,如果以24色深表示的話,在計算機中可表示的顔色數量有2^8* 2 ^8 * 2 ^8 = 16777216中顔色。

音視訊基礎知識-RGB音視訊基礎知識-RGB

2.常見顔色和透明度

  • 顔色
顔色名稱 紅色值 Red 綠色值 Green 藍色值 Blue
黑色
藍色 255
綠色 255
青色 255 255
紅色 255
亮紫色(洋紅色) 255 255
黃色 255 255
白色 255 255 255
  • 常用階次透明度16進制對照表
透明度 16進制表示
100% 00
95% 0D
90% 1A
85% 26
80% 33
75% 40
70% 4D
65% 59
60% 66
55% 73
50% 80
45% 8C
40% 99
35% A6
30% B3
25% BF
20% CC
15% D9
10% E6
5% F2
0% FF

3.高位位元組和低位位元組

計算機記憶體中一個位元組的位相當于二進制數的位,這意味着最低有效位表示1,倒數第二個有效位表示2×1或2,倒數第三個有效位表示2×2×1或4,依此類推。如果用記憶體中的兩個位元組表示一個16位的數,那麼其中的一個位元組将存放最低的8位有效位,而另一個位元組将存放最高的8位有效位,見圖。存放最低的8位有效位的位元組被稱為最低有效位位元組或低位位元組,而存放最高的8位有效位的位元組被稱為最高有效位位元組或高位位元組。

音視訊基礎知識-RGB音視訊基礎知識-RGB

4.RGB格式

1.像素格式

RGB 像素格式中的 bit 存儲的是每一個像素點的 R,G,B 值。

1.RGB16格式

RGB16資料格式主要有二種:RGB565和RGB555。

  • RGB565

    一個像素用16個bit = 2個位元組表示 ,R=5、G=6、B=5。其中, 低位元組的前5位用來表示B(BLUE),低位元組的後三位+高位元組的前三位用來表示G(Green),高位元組的後5位用來表示R(RED)。

    音視訊基礎知識-RGB音視訊基礎知識-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 )
           
  • RGB555

    一個像素用16個bit = 2個位元組,但是最高位不用,R=5 G=5 B=5

    音視訊基礎知識-RGB音視訊基礎知識-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
           

2.RGB24(RGB888)

一個像素用24個bit = 3個位元組來表示,R=8 G=8 B=8

音視訊基礎知識-RGB音視訊基礎知識-RGB
根據RGB565的存儲方式,即可得到擷取R,G,B分量的值。現假設計算機中存儲某一個像素點的變量為color, 資料類型為int. 那麼則有:

R = color & 0x0000FF00; 
 
G = color & 0x00FF0000; 
 
B = color & 0xFF000000;
           

3.RGB32

一個像素用32個bit = 4個位元組 來表示,R=8 G=8 B=8,存儲順序為B, G, R,最後8個位元組保留。

音視訊基礎知識-RGB音視訊基礎知識-RGB
根據RGB565的存儲方式,即可得到擷取R,G,B分量的值。現假設計算機中存儲某一個像素點的變量為color, 資料類型為short. 那麼則有:

R = color & 0x0000FF00; 
 
G = color & 0x00FF0000; 
 
B = color & 0xFF000000; 
 
A = color & 0x000000FF;
           

2)參考資料

像素格式RGB