1、MATLAB 程式設計入門篇影像顯示與讀寫張智星jangcs.nthu.edu.twhttp:/www.cs.nthu.edu.tw/jang清大資工系 多媒體檢索實驗室MATLAB 程式設計入門篇:影像顯示與讀寫19-1 MATLAB的影像格式n MATLAB 最常處理的影像格式為索引影像( Indexed Images)n 顯示此類型影像的語法如下:image(X)colormap(map)其中 X為影像的資料矩陣, map為色盤矩陣。n 色盤矩陣的大小為 K3, 每個橫列由三個元素所組成,分別是 R(紅 ) 、 G(綠 )、 B(藍 ) ,每個元素的範圍為01n X的值為 1K, 也就是
2、當 X(i, j)的值為 p, 則像素點 (i, j) 的顏色為 map(p, :)這一列的值所決定。MATLAB 程式設計入門篇:影像顯示與讀寫顯示索引影像範例一n 在下例中,我們使用 MATLAB顯示內建的小丑圖。n 範例 19-1: image01.mload clown.mat % 載入小丑影像資料,含變數 X 和 mapimage(X); % 顯示影像colormap(map) % 取用色盤矩陣 MATLAB 程式設計入門篇:影像顯示與讀寫顯示索引影像範例一MATLAB 程式設計入門篇:影像顯示與讀寫顯示索引影像範例二n 由於由 X 是索引影像,因此其最小值是 1, 最大值會等於 m
3、ap 的列數(即可顯示之顏色數目),可驗証如下:n 範例 19-2 : image02.mload clown.mat % 載入小丑影像資料,含變數 X 和 mapfprintf(min(min(X) = %dn, min(min(X);fprintf(max(max(X) = %dn, max(max(X);fprintf(size(map, 1) = %dn, size(map, 1);MATLAB 程式設計入門篇:影像顯示與讀寫顯示索引影像範例二min(min(X) = 1max(max(X) = 81size(map, 1) = 81 由範例可知,此小丑影像共含有 81 種不同的顏色。
4、 MATLAB 程式設計入門篇:影像顯示與讀寫顯示索引影像範例三n 要正確地顯示索引影像則需要正確的色盤,以上面的小丑影像為例,如果使用亂數產生的色盤則會產生下面的結果:n 範例 19-3: image03.mload clown.mat % 載入小丑影像資料,含變數 X 和 mapnewmap = rand(size(map);image(X);colormap(newmap) MATLAB 程式設計入門篇:影像顯示與讀寫顯示索引影像範例三MATLAB 程式設計入門篇:影像顯示與讀寫顯示索引影像範例四n 如果我們的色盤矩陣只有 K 個橫列,但是 X 的某些元素值小於 1 或大於 K, 則 我
5、們可以使用 imagesc指令將 X 的最小值轉換成 1,最大值轉成 K, 其他中間值則依線性關係轉換成介於 1 與 K 的值,舉例如下: n 範例 19-4: imagesc01.m:X = peaks;imagesc(X);colormap(gray);min(min(X) % 顯示 X 的最小值max(max(X) % 顯示 X 的最大值MATLAB 程式設計入門篇:影像顯示與讀寫顯示索引影像範例四ans =-6.5466ans =8.0752n 具有上述特性的影像資料稱為強度影像(Intensity Images), 一般經由數值運算產生的矩陣均屬此類,因此均可由 imagesc 來顯示。