音視訊基礎知識-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中顔色。
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位有效位的位元組被稱為最高有效位位元組或高位位元組。
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)。
#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
#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
根據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個位元組保留。
根據RGB565的存儲方式,即可得到擷取R,G,B分量的值。現假設計算機中存儲某一個像素點的變量為color, 資料類型為short. 那麼則有:
R = color & 0x0000FF00;
G = color & 0x00FF0000;
B = color & 0xFF000000;
A = color & 0x000000FF;
2)參考資料
像素格式RGB