版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、MATLAB 程式設(shè)計入門篇影像顯示與讀寫,張智星jang@cs.nthu.edu.twhttp://www.cs.nthu.edu.tw/~jang清大資工系 多媒體檢索實驗室,19-1 MATLAB的影像格式,MATLAB 最常處理的影像格式為索引影像(Indexed Images)顯示此類型影像的語法如下:image(X)colormap(map)其中X為影像的資料矩陣,map為色盤矩陣。色盤矩陣的大小
2、為K×3,每個橫列由三個元素所組成,分別是R(紅) 、G(綠)、B(藍(lán)) ,每個元素的範(fàn)圍為0~1X的值為1~K,也就是當(dāng)X(i, j)的值為p,則像素點(diǎn)(i, j) 的顏色為map(p, :)這一列的值所決定。,顯示索引影像範(fàn)例一,在下例中,我們使用MATLAB顯示內(nèi)建的小丑圖。範(fàn)例19-1:image01.m,load clown.mat% 載入小丑影像資料,含變數(shù) X 和 mapimage(X);% 顯示影
3、像colormap(map)% 取用色盤矩陣,顯示索引影像範(fàn)例一,顯示索引影像範(fàn)例二,由於由X 是索引影像,因此其最小值是 1, 最大值會等於 map 的列數(shù)(即「可顯示之顏色數(shù)目」),可驗証如下:範(fàn)例19-2 :image02.m,load clown.mat% 載入小丑影像資料,含變數(shù) X 和 mapfprintf('min(min(X)) = %d\n', min(min(X)));fprintf(
4、'max(max(X)) = %d\n', max(max(X)));fprintf('size(map, 1) = %d\n', size(map, 1));,顯示索引影像範(fàn)例二,min(min(X)) = 1max(max(X)) = 81size(map, 1) = 81 由範(fàn)例可知,此小丑影像共含有 81 種不同的顏色。,顯示索引影像範(fàn)例三,要正確地顯示索引影像則需要正確的色盤,以上
5、面的小丑影像為例,如果使用亂數(shù)產(chǎn)生的色盤則會產(chǎn)生下面的結(jié)果:範(fàn)例19-3:image03.m,load clown.mat% 載入小丑影像資料,含變數(shù) X 和 mapnewmap = rand(size(map));image(X);colormap(newmap),顯示索引影像範(fàn)例三,顯示索引影像範(fàn)例四,如果我們的色盤矩陣只有 K 個橫列,但是 X 的某些元素值小於 1 或大於 K,則我們可以使用imagesc指令將 X
6、的最小值轉(zhuǎn)換成 1,最大值轉(zhuǎn)成 K,其他中間值則依線性關(guān)係轉(zhuǎn)換成介於 1 與 K 的值,舉例如下: 範(fàn)例19-4:imagesc01.m,:,X = peaks;imagesc(X);colormap(gray);min(min(X))% 顯示 X 的最小值max(max(X))% 顯示 X 的最大值,顯示索引影像範(fàn)例四,ans = -6.5466ans = 8.0752具有上述特性的影像資料稱
7、為強(qiáng)度影像(Intensity Images),一般經(jīng)由數(shù)值運(yùn)算產(chǎn)生的矩陣均屬此類,因此均可由 imagesc 來顯示。,顯示索引影像範(fàn)例五,image 指令亦接受全彩影像(Truecolor Images)。全彩影像可以表示成一個 m×n×3 的矩陣 X,其中 X (:, :, 1) 代表紅色的強(qiáng)度。X (:, :, 2) 代表綠色的強(qiáng)度,X (:, :, 3) 則代表藍(lán)色的強(qiáng)度。 X的值的範(fàn)圍可以是下列兩種:介
8、於0~1的浮點(diǎn)數(shù)或是0~255的uint8(詳見本章第三節(jié)) ,舉例來說:範(fàn)例19-5:image04.m,X = imread('annie19980405.jpg');image(X)size(X),顯示索引影像範(fàn)例五,ans = 480 640 3,19-2 影像的顯示與列印,MATLAB 在顯示影像時,會將之置於預(yù)設(shè)的圖軸之中,並以此圖軸的長寬比來成像,因而造成影像的失真。若要以影像本身的
9、長寬比來成像,可加入 axis image,如下: 範(fàn)例19-6:image05.m,load mandrill.mat image(X);colormap(map);axis image,以原影像長寬比例顯示範(fàn)例,將影像對應(yīng)到螢?zāi)簧系狞c(diǎn)的範(fàn)例,若要使影像資料的每一點(diǎn)對應(yīng)至螢?zāi)簧系囊粋€像素(Pixel),可輸入如下: 範(fàn)例19-7:image06.m,load mandrill.mat[m, n] = size(X);fi
10、gure ('unit', 'pixel', 'position', [200, 200, n, m]);image(X);colormap(map);set(gca, 'position', [0, 0, 1, 1]);,範(fàn)例:將影像對應(yīng)到螢?zāi)簧系狞c(diǎn),此範(fàn)例產(chǎn)生圖形如同前一個範(fàn)例,如果你的螢?zāi)唤馕龆容^低,圖形會變大。上述範(fàn)例程式碼中, figure 的 ‘posi
11、tion’ 性質(zhì)為 [200, 200, n, m],代表視窗的左下角位置是 [200, 200](以 pixel 為單位),而視窗的寬度為 n,高度為 m,正好可以符合影像的大小。gca 傳回使用中的圖軸,最後一個敘述將圖軸的位置設(shè)為整個視窗的大小,使用了正規(guī)化的單位 。,19-2 影像的顯示與列印,在列印影像時,MATLAB 會根據(jù)視窗的 Paper position 性質(zhì)來調(diào)整圖形的長寬比,使得印出的影像再度變形。欲防止情況,可
12、用下列指令:>>set(gcf, 'PaperPositionMode', 'auto') 若要使 Paper Position Mode 的預(yù)設(shè)值就是“auto”,可在 startup.m 檔案中加入下一行:set(0, 'DefaultFigurePaperPositionMode', 'auto'),19-3 8-bit影像,在 MATLAB
13、第 5 版之後,提供了 uint8 的資料型態(tài)。由於 uint8 只有 8 個位元,所以能表示的數(shù)值範(fàn)圍為 0 至 255(=28-1) 之間的整數(shù) 。,8-bit影像範(fàn)例,由於 8-bit 影像資料的最小值為 0,和一般的雙精準(zhǔn)索引影像資料相差 1,因此在兩種資料相互轉(zhuǎn)換時,要特別小心。例如:範(fàn)例19-8:uint801.m,load clown.matZ8 = uint8(X-1);% 將 X-1 轉(zhuǎn)成 uint8 的資料
14、型態(tài) close all% 關(guān)掉所有的圖形視窗 image(Z8)colormap(map),8-bit影像範(fàn)例,19-3 8-bit影像,若要將 8-bit 影像轉(zhuǎn)回雙精準(zhǔn)影像,可輸入如下:>> Z64 = double(Z8)+1; uint8 資料型態(tài)亦可用於全彩影像資料,此時每一像素的原色(R,G 或 B)範(fàn)圍為 0 至 255 間的整數(shù),而不再是 0 至 1 的實數(shù)。,19-3 8-bit影像
15、,欲將雙精準(zhǔn)的全彩影像轉(zhuǎn)作 uint8 資料型態(tài),可輸入如下:>> RGB8 = uint8(round(RGB64*255)); 其中 RGB64 為雙精準(zhǔn)的全彩影像資料,而 RGB8 則是 unit8 的 8-bit 影像資料。反之,若欲進(jìn)行反轉(zhuǎn)換,可輸入如下:>> RGB64 = double(RGB8)/255; 關(guān)於影像類別及其資料型態(tài)的關(guān)係,可見下表:,影像類別及型態(tài)關(guān)係表,19-4 影
16、像檔案的讀取與寫入,imread 指令可用於讀取影像檔案。imwrite 則可用於寫入影像檔案。這兩個指令可以處理的影像格式有下列幾種:,imread及imwrite支援的格式,19-4 影像檔案的讀取與寫入,imread 指令可以讀取上述格式的影像檔案,並進(jìn)行必要之轉(zhuǎn)換,如下:對於強(qiáng)度影像,imread 將資料以 uint8 的矩陣(大小為 m×n)傳回。對於索引影像,imread 將資料以 uint8 的矩陣(大小
17、為 m×n)傳回,並同時傳回一個雙精準(zhǔn)的色盤矩陣,其每個元素值介於[0,1]。對於全彩矩陣,imread 將資料以 uint8 的矩陣(大小為 m×n×3)傳回。,使用imread讀取全彩jpg影像,imread 可讀出下列全彩影像:範(fàn)例19-9:uint802.m,RGB = imread('simulinkteam.jpg');image(RGB),使用imread讀取全彩jpg影
18、像,影像檔案寫入範(fàn)例,imwrite 指令可將資料寫成影像檔如下:範(fàn)例19-10:imwrite01.m上述最後一列敘述將會呼叫 Windows 作業(yè)系統(tǒng)下的應(yīng)用程式來開啟 myClown.jpg 檔案。,load clown.matimwrite(X, map, 'myClown.jpg'); !start myClown.jpg,19-4 影像檔案的讀取與寫入,imfinfo 指令可用於傳回影像檔案的各
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- matlab程式設(shè)計入門篇初探matlab
- matlab程式設(shè)計入門篇二維平面繪圖
- matlab程式設(shè)計入門篇程式碼與記憶體之最佳化
- matlab程式設(shè)計入門篇一般數(shù)學(xué)函數(shù)的處理與分析-mirlab
- matlab程式設(shè)計與應(yīng)用
- net程式設(shè)計入門(使用c#)-國立臺灣大學(xué)資訊工程學(xué)系
- 店長手冊(一)入門篇
- vb入門篇之虎虎
- 【入門篇】微博教程
- java程式設(shè)計與資料結(jié)構(gòu)
- 自己動手來裝修-入門篇
- 速成圍棋入門篇(下)答案
- 速成圍棋入門篇(中)答案
- 咖啡教程(新手入門篇)
- 速成圍棋入門篇(中)答案
- 速成圍棋入門篇上答案
- 漢語口語速成(入門篇下)
- vxd程序設(shè)計入門
- proe模具設(shè)計入門
- 六爻解卦入門篇
評論
0/150
提交評論