MATLAB 最常處理的影像格式為索引影像(Indexed Images),欲顯示此類影像時,使用語法如下:
image(X); colormap(map); 其中 X 代表影像的資料矩陣,map 則是顯示此影像所必需用到的「色盤矩陣」(Colormap Matrix)或是「顏色對照表」 。一般而言,欲顯示 K 種不同顏色,色盤矩陣必需是一個 K×3 的矩陣,其中每一橫列代表一種顏色,每一顏色由三個元素組成,元素值由 0 至 1,分別代表 R(Red,紅色),G(Green,綠色),B(Blue,藍色)的份量。X 的元素值範圍為 1 至 K,代表每一個像素(Pixel)的顏色。換句話說,若 X (i, j) 的值為 p,則 X (i, j) 此點像素的顏示即由 map (p, :) 所決定,其中 map (p, 1),map (p, 2) 及 map (p, 3) 分別代表紅色、綠色及藍色的份量。
舉例來說,MATLAB 有一個內建的小丑影像,可顯示如下:
由於 X 是索引影像,因此其最小值是 1, 最大值會等於 map 的列數(即「可顯示之顏色數目」),可驗証如下:
由上述範例可知,此小丑影像共含有 81 種不同的顏色。
欲正確地顯示索引影像,需有正確的色盤矩陣,否則顯示出來的顯像會難以辨認,以上述小丑影像為例,如果取用以亂數產生的色盤矩陣,則產生下列效果:
如果我們的色盤矩陣只有 K 個橫列,但是 X 的某些元素值小於 1 或大於 K,那麼如何顯示這個矩陣呢?最簡單的辦法,是將 X 的最小值轉換成 1,最大值轉成 K,其他中間值則依線性關係轉換成介於 1 與 K 的值,再依色盤矩陣來顯示此矩陣。此項轉換工作可由 imagesc 指令直接達成,舉例如下:
在上例中,雖然 X 的最大值為 8.0752,最小值為 -6.5466,但 imagesc 可經由前述的線性轉換過程來顯示影像。具有上述特性的影像資料稱為強度影像(Intensity Images),一般經由數值運算產生的矩陣均屬此類,因此均可由 imagesc 來顯示。
除了索引影像及強度影像外,image 指令亦接受全彩影像(Truecolor Images)。全彩影像可以表示成一個 m×n×3 的矩陣 X,其中 X (:, :, 1) 代表紅色的強度。X (:, :, 2) 代表綠色的強度,X (:, :, 3) 則代表藍色的強度。X 的元素值可以是介於 0 和 1 中間的浮點數,或是介於 0 和 255 中間的 8 位元、不帶符號的整數(uint8,詳情請參閱本章第三節)。舉例來說:
以上即為一張全彩的圖片,完全不需要用到色盤矩陣。(在上列程式碼中,imread 是用來讀入影像檔的指令,詳見本章最後一節。)
MATLAB程式設計:入門篇