彩色圖像:每個像素由R、G、B三個分量表示,每個通道取值范圍0~255。數據類型一般為8位無符號整形。
灰度圖像:每個像素只有一個采樣顏色的圖像,這類圖像通常顯示為從最暗黑色到最亮的白色的灰度。
二值圖像(黑白圖像):每個像素點只有兩種可能,0和1.0代表黑色,1代表白色。數據類型通常為1個二進制位。
索引圖像:類似於查字典,為了解決彩色圖像消耗空間大的問題,一般應用於色彩構成比較簡單的場景。
索引圖像包括一個數據矩陣X,一個顏色映像矩陣Map。其中Map是一個包含三列、若干行的數據陣列,其中每個元素的值均為[0, 1]之間的雙精度浮點型數據。Map矩陣的每一行分別表示紅色、綠色和藍色的顏色值。在MATLAB中,索引圖像是從像素值到顏色映射表值的“直接映射”。像素顏色由數據矩陣X作為索引指向矩陣Map進行索引,例如,值1指向矩陣Map中的第一行,值2指向第二行,以此類推。
補充一張圖幫助理解:
圖中圓圈內的就是索引圖像的索引表,下面的就是其對應RGB顏色表。
圖中小圓圈處的索引號是5,對應RGB顏色的第5行,所以該處RGB顏色實際是0.2902 0.0627 0.0627
索引圖像的作用就是體積小,方便傳輸,只需要把索引表傳輸過去,接收方用對應的RGB顏色表還原就行。
[X,map] = rgb2ind(RGB,n)
- 使用最小方差量化和抖動將 RGB 圖像轉換為索引圖像 X。map 最多包含 n 個顏色。n 必須小於或等於 65,536。
function IndexImg(Imgname)%索引圖像
I_rgb = imread(Imgname);
[I_index64,Map64] = rgb2ind(I_rgb,64);
[I_index256,Map256] = rgb2ind(I_rgb,256);
figure(1)
subplot(2,1,1),imagesc(I_rgb),title('Origin');
subplot(2,1,2),imagesc(I_index64),colormap(Map64),title('Index_Img64');
figure(2)
subplot(2,1,1),imagesc(I_rgb),title('Origin');
subplot(2,1,2),imagesc(I_index256),colormap(Map256),title('Index_Img256');
end
Map64對應64種顏色!
Map64 =
0.0863 0.0902 0.1020
0.5686 0.5255 0.3569
0.2078 0.2941 0.4510
0.7647 0.7176 0.5529
0.3137 0.2980 0.2039
0.3412 0.5216 0.7725
0.8667 0.8431 0.7529
0.2471 0.3922 0.6431
0.2157 0.2118 0.1490
0.4667 0.6078 0.8078
0.4314 0.4000 0.2667
0.6196 0.7137 0.8588
0.3686 0.3961 0.4510
0.1529 0.2078 0.2824
0.5176 0.5412 0.5843
0.4667 0.6235 0.8745
0.7020 0.7765 0.8824
0.2431 0.2980 0.3647
0.8706 0.9255 0.9843
0.4000 0.5647 0.8353
0.2784 0.4667 0.7412
0.2196 0.3333 0.5412
0.5020 0.4627 0.3020
0.1294 0.1490 0.1804
0.6196 0.5843 0.4275
0.6588 0.6353 0.5608
0.7490 0.8353 0.9843
0.4784 0.5608 0.7412
0.5412 0.6588 0.8784
0.3725 0.3373 0.2157
0.3843 0.4627 0.6275
0.6039 0.6510 0.7569
0.5686 0.7020 0.9412
0.1882 0.2431 0.3490
0.4588 0.4549 0.4471
0.2784 0.2549 0.1843
0.6824 0.7804 0.9765
0.2902 0.3412 0.4510
0.4157 0.4039 0.3490
0.3608 0.5569 0.9294
0.2824 0.3725 0.5490
0.1490 0.1490 0.1255
0.7529 0.7412 0.7020
0.3059 0.4157 0.6353
0.3255 0.3373 0.3529
0.3490 0.4667 0.7020
0.4039 0.5412 0.7647
0.1216 0.1686 0.2471
0.5529 0.5294 0.4431
0.8157 0.8745 0.9843
0.4431 0.4627 0.5412
0.7961 0.8510 0.9059
0.6941 0.6314 0.4392
0.2275 0.2471 0.2784
0.3059 0.3098 0.2745
0.5373 0.6667 0.9333
0.2000 0.2157 0.2157
0.5294 0.6392 0.8078
0.4941 0.4667 0.3686
0.3765 0.3490 0.2706
0.9529 0.9725 0.9882
0.4549 0.6196 0.9725
0.6235 0.7294 0.9490
0.3725 0.4196 0.5412
K>> size(Map64)
ans =
64 3
K>> size(I_index256)
ans =
1080 1920
輸出圖片:

處理圖像的函數
其中用到的工具箱函數:
| 函數 | 目的 |
|---|---|
| dither | 采用抖動從RGB圖像創建索引圖像 |
| grayslice | 采用閾值處理從灰度圖像創建索引圖像 |
| gray2ind | 從灰度圖像創建索引圖像 |
| ind2gray | 從索引圖像創建灰度圖像 |
| rgb2ind | 從RGB圖像創建索引圖像 |
| ind2rgb | 從索引圖像創建RGB圖像 |
| rgb2gray | 從RGB圖像創建灰度圖像 |
| im2bw | 從灰度、索引、RGB圖象創建二值圖 |
| mat2gray | 從數據矩陣創建灰度圖像 |
