课件MATLAB程式设计方案入门篇影像显示与读写.ppt

上传人:本田雅阁 文档编号:3363721 上传时间:2019-08-18 格式:PPT 页数:34 大小:1.11MB
返回 下载 相关 举报
课件MATLAB程式设计方案入门篇影像显示与读写.ppt_第1页
第1页 / 共34页
课件MATLAB程式设计方案入门篇影像显示与读写.ppt_第2页
第2页 / 共34页
课件MATLAB程式设计方案入门篇影像显示与读写.ppt_第3页
第3页 / 共34页
课件MATLAB程式设计方案入门篇影像显示与读写.ppt_第4页
第4页 / 共34页
课件MATLAB程式设计方案入门篇影像显示与读写.ppt_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《课件MATLAB程式设计方案入门篇影像显示与读写.ppt》由会员分享,可在线阅读,更多相关《课件MATLAB程式设计方案入门篇影像显示与读写.ppt(34页珍藏版)》请在三一文库上搜索。

1、MATLAB 程式設計入門篇 影像顯示與讀寫,張智星 (jangmirlab.org) jangmirlab.org http:/mirlab.org/jang 清大資工系 多媒體檢索實驗室,19-1 MATLAB的影像格式,MATLAB 最常處理的影像格式為索引影像(Indexed Images) 顯示此類型影像的語法如下: image(X) colormap(map) 其中X為影像的資料矩陣,map為色盤矩陣。 色盤矩陣的大小為K3,每個橫列由三個元素所組成,分別是R(紅) 、G(綠)、B(藍) ,每個元素的範圍為01 X的值為1K,也就是當X(i, j)的值為p,則像素點(i, j) 的

2、顏色為map(p, :)這一列的向量所決定。,索引影像:顯示,使用MATLAB顯示內建的小丑圖。 範例19-1:image01.m,load clown.mat % 載入小丑影像資料,含變數 X 和 map image(X); % 顯示影像 colormap(map) % 取用色盤矩陣,索引影像:顯示,欲顯示對應的色盤,可再執行 colorbar,結果如下:,索引影像:驗證索引範圍,由於由X 是索引影像,因此其最小值是 1 ,最大值會等於 map 的列數(即可顯示之顏色數目),可驗証如下: 範例19-2 :image02.m,load clown.mat % 載入小丑影像資料,含變數 X 和

3、map fprintf(min(min(X) = %dn, min(min(X); fprintf(max(max(X) = %dn, max(max(X); fprintf(size(map, 1) = %dn, size(map, 1);,索引影像:驗證索引範圍,min(min(X) = 1 max(max(X) = 81 size(map, 1) = 81 由範例可知,此小丑影像共含有 81 種不同的顏色。,索引影像:驗證數值,索引影像的數值可以驗證如下。 範例:indexedImage01.m,load clown.mat % 載入小丑影像資料,含變數 X 和 map subplot(

4、2,2,1); image(X); axis image subplot(2,2,2); image(X(1:100, 1:100); axis image subplot(2,2,3); image(X(1:3, 1:3); axis image X(1:3, 1:3) subplot(2,2,4); image(69); axis image colorbar colormap(map);,索引影像:驗證數值,結果:,ans = 2 2 2 61 69 69 69 61 69,索引影像:亂數色盤,要正確地顯示索引影像則需要正確的色盤,以上面的小丑影像為例,如果使用亂數產生的色盤則會產生下面

5、的結果: 範例19-3:image03.m,load clown.mat % 載入小丑影像資料,含變數 X 和 map newmap = rand(size(map); image(X); colormap(newmap) ; colorbar;,索引影像:亂數色盤,由於色盤是亂數產生,所以每次結果都不一樣:,索引影像:強度影像,如果我們的色盤矩陣只有 K 個橫列,但是 X 的某些元素值小於 1 或大於 K,則我們可以使用imagesc指令將 X 的最小值轉換成 1,最大值轉成 K,其他中間值則依線性關係轉換成介於 1 與 K 的值,舉例如下: 範例19-4:imagesc01.m,:,X =

6、 peaks; imagesc(X); colormap(gray); colorbar; min(min(X) % 顯示 X 的最小值 max(max(X) % 顯示 X 的最大值,索引影像:強度影像,ans = -6.5466 ans = 8.0752 具有上述特性的影像資料稱為強度影像(Intensity Images),一般經由數值運算產生的矩陣均屬此類,因此均可由 imagesc 來顯示。,全彩影像:顯示,image 指令亦接受全彩影像(Truecolor Images)。全彩影像可以表示成一個 mn3 的矩陣 X,其中 X (:, :, 1) 代表R(紅色)的強度。X (:, :,

7、 2) 代表G(綠色)的強度,X (:, :, 3) 則代表B(藍色)的強度。 X的值的範圍可以是下列兩種: 介於01的浮點數 0255的uint8(詳見本章第三節)。 範例19-5:image04.m,X = imread(annie19980405.jpg); image(X); size(X),全彩影像:顯示,ans = 480 640 3 此時若再下達colorbar 指令,只會顯示內定的色盤,和圖形顯示沒有關係。,19-2 影像的顯示與列印,MATLAB 在顯示影像時,會將之置於預設的圖軸之中,並以此圖軸的長寬比來成像,因而造成影像的失真。若要以影像本身的長寬比來成像,可加入 axi

8、s image,如下: 範例19-6:image05.m,load mandrill.mat image(X); colormap(map); axis image,以原影像長寬比例顯示範例,亦可下達axis normal來觀看MATLAB的預設顯示結果。,將影像對應到螢幕上的點的範例,若要使影像資料的每一點對應至螢幕上的一個像素(Pixel),可輸入如下: 範例19-7:image06.m,load mandrill.mat m, n = size(X); figure (unit, pixel, position, 200, 200, n, m); image(X); colormap(m

9、ap); set(gca, position, 0, 0, 1, 1);,範例:將影像對應到螢幕上的點,此範例產生圖形如同前一個範例,如果你的螢幕解析度較低,圖形會變大。 上述範例程式碼中, figure 的 position 性質為 200, 200, n, m,代表視窗的左下角位置是 200, 200(以 pixel 為單位),而視窗的寬度為 n,高度為 m,正好可以符合影像的大小。 gca 傳回使用中的圖軸,最後一個敘述將圖軸的位置設為整個視窗的大小,使用了正規化的單位 。,影像的列印,在列印影像時,MATLAB 會根據視窗的 Paper position 性質來調整圖形的長寬比,使得印

10、出的影像再度變形。欲防止情況,可用下列指令: set(gcf, PaperPositionMode, auto) 若要使 Paper Position Mode 的預設值就是“auto”,可在 startup.m 檔案中加入下一行: set(0, DefaultFigurePaperPositionMode, auto),19-3 8-bit影像,在 MATLAB 第 5 版之後,提供了 uint8 的資料型態。 由於 uint8 只有 8 個位元,所以能表示的數值範圍為 0 至 255(=28-1) 之間的整數 。,8-bit影像範例,由於 8-bit 影像資料的最小值為 0,和一般的雙精準

11、索引影像資料相差 1,因此在兩種資料相互轉換時,要特別小心。例如: 範例19-8:uint801.m,load clown.mat Z8 = uint8(X-1); % 將 X-1 轉成 uint8 的資料型態 close all % 關掉所有的圖形視窗 image(Z8); colormap(map); colorbar;,8-bit影像範例,8-bit double,若要將 8-bit 影像轉回雙精準影像,可輸入如下: Z64 = double(Z8)+1; uint8 資料型態亦可用於全彩影像資料,此時每一像素的原色(R,G 或 B)範圍為 0 至 255 間的整數,而不再是 0 至 1

12、 的實數。,8-bit double,欲將雙精準的全彩影像轉作 uint8 資料型態,可輸入如下: RGB8 = uint8(round(RGB64*255); 其中 RGB64 為雙精準的全彩影像資料,而 RGB8 則是 unit8 的 8-bit 影像資料。反之,若欲進行反轉換,可輸入如下: RGB64 = double(RGB8)/255; 關於影像類別及其資料型態的關係,可見下表:,影像類別及型態關係表,19-4 影像檔案的讀取與寫入,imread 指令可用於讀取影像檔案。 imwrite 則可用於寫入影像檔案。 這兩個指令可以處理的影像格式有下列幾種:,imread及imwrite支

13、援的格式,imread 指令,imread 指令可以讀取上述格式的影像檔案,並進行必要之轉換,如下: 對於強度影像,imread 將資料以 uint8 的矩陣(大小為 mn)傳回。 對於索引影像,imread 將資料以 uint8 的矩陣(大小為 mn)傳回,並同時傳回一個雙精準的色盤矩陣,其每個元素值介於0,1。 對於全彩矩陣,imread 將資料以 uint8 的矩陣(大小為 mn3)傳回。,使用imread讀取全彩jpeg影像,imread 可讀出下列全彩影像: 範例19-9:imread01.m,RGB = imread(simulinkteam.jpg); image(RGB) ;

14、axis image; class(RGB),使用imread讀取索引影像,imread 可讀出下列索引影像: imread02.m,X, map = imread(sbtree.gif); image(X); colormap(map); colorbar;,影像檔案寫入範例,imwrite 指令可將資料寫成影像檔如下: 範例19-10:imwrite01.m 上述最後一列敘述將會呼叫 Windows 作業系統下的應用程式來開啟 myClown.jpg 檔案。,load clown.mat imwrite(X, map, myClown.jpg); !start myClown.jpg,im

15、finfo指令,imfinfo 指令可傳回影像檔案的各項資訊,例如: info1=imfinfo(simulinkteam.jpg) info2=imfinfo(sbtree.gif) 對於不同的檔案格式,imfinfo 傳回的資訊項目可能有所不同。,imfinfo執行結果,info1=imfinfo(simulinkteam.jpg) info1 = Filename: simulinkteam.jpg FileModDate: 28-三月-2000 17:30:36 FileSize: 24071 Format: jpg FormatVersion: Width: 234 Height:

16、126 BitDepth: 24 ColorType: truecolor FormatSignature: NumberOfSamples: 3 CodingMethod: Huffman CodingProcess: Sequential Comment: 1x70 char,info2=imfinfo(sbtree.gif) info2 = Filename: sbtree.gif FileModDate: 10-九月-1997 14:53:14 FileSize: 7121 Format: GIF FormatVersion: 87a Width: 99 Height: 80 BitDepth: 8 ColorType: indexed FormatSignature: GIF87a BackgroundColor: 0 AspectRatio: 0 ColorTable: 256x3 double Interlaced: no,Quiz,那些影像檔案格式支援全彩影像?哪一些支援索引影像?,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1