MATLAB 程式設計入門篇 影像顯示與讀寫

Slides:



Advertisements
Similar presentations
对本书、视频等任何 MATLAB 问题,作者做到有问必答! 你买的不仅仅是书,更是一种 “ 有问必答 ” 的服务!
Advertisements

第一單元 建立java 程式.
張智星 清大資工系 多媒體檢索實驗室 MATLAB 程式設計進階篇 程式計時 張智星 清大資工系.
MATLAB 程式設計 時間量測 清大資工系 多媒體資訊檢索實驗室.
对本书、视频等任何MATLAB问题,作者做到有问必答!
第 9 章 多媒體.
影像處理 基本架構與應用 影像處理的基本架構 影像處理方塊圖 數位影像的特色 彩色影像與灰階影像的表示 相關研究領域與應用例
第一章 Photoshop CS4概述.
多媒體簡報與製作研習課程 影像處理 2017年4月8日星期六.
第6章 電腦科技的相關應用─影像處理 6-1 影像處理的基本知識 6-2 PhotoImpact 的基本操作 6-3 影像編輯技巧
第9章 平面图像处理基础 9.1 平面图像处理基本概念 9.2 Photoshop基础操作.
色彩基本認識 2010 年 9 月 Hsiu-fen Wang
数字图像处理 刘伯强 山东大学生物医学工程.
Project 2 JMVC code tracing
Outline 區域變數(Local Variables) 全域變數(Global Variables) 基本 I/O 操作
數位影像處理 2 影像與MATLAB.
MATLAB 程式設計入門篇 與Excel試算表的整合
Java程式概觀.
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
数字图像处理(2) 图像文件格式 东北林业大学信息学院 任洪娥
安裝JDK 安裝Eclipse Eclipse 中文化
數位影像壓縮 技術簡介 第四組 陳孝賢.
2 数字图像基础 赵国庆 博士 北京师范大学教育技术学院
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A.
第1章 图像处理基本知识 本章简介: 本章将主要介绍图像处理的基础知识,包括位图与矢量图、图像尺寸与分辨率、文件常用格式、图像色彩模式等。通过对本章的学习,可以快速掌握这些基础知识,有助于更快、更准确地处理图像。
影像處理軟身操 數位影像的基本觀念與實作 劉明玲主講.
第二章 SPSS的使用 2.1 啟動SPSS系統 2.2 結束SPSS系統 2.3 資料分析之相關檔案 2.4 如何使用SPSS軟體.
何清波 博士 副教授 中国科学技术大学 精密机械与精密仪器系 安徽合肥 电话:
Digital Image Processing 數位影像處理
電腦美術設計基本知識.
第一單元 建立java 程式.
網頁程式設計 本章投影片錄自HTML5、CSS3、RWD、jQuery Mobile跨裝網頁設計 陳惠貞 著 碁峰資訊股份有限公司出版
第 3 章 圖文並茂— 在文件中加入圖片 著作權所有 © 旗標出版股份有限公司.
圖片格式簡介 張啟中.
自由軟體在校園之應用 《XnView的認識與教學應用》
第三章 資料型態與輸出控制 本章學習目標 認識Matlab的基本資料型態 練習資料型態的轉換 學習如何控制Matlab的輸出格式
第一章 直角坐標系 1-3 函數圖形.
MATLAB 程式設計入門篇 二維平面繪圖 (part2)
色彩基本認識 2006 年 10 月 Hsiu-fen Wang.
第 5 章 加 入 圖 片.
輸入&輸出 函數 P20~P21.
高中二資訊科 數碼圖像.
張智星 清大資工系 多媒體檢索實驗室 Tree Net Construction 張智星 清大資工系.
CH05. 選擇敘述.
撰寫MATLAB基礎財務程式 柯婷瑱.
挑戰C++程式語言 ──第8章 進一步談字元與字串
电子商务网站开发 第八讲:图像的概念与制作 上海财经大学信息管理与工程学院.
图像的基本知识 《信息隐藏实验教程》教学幻灯片 二(2).
Ogive plot example 說明者:吳東陽 2003/10/10.
林福宗 清华大学 计算机科学与技术系 2008年9月 2019年5月5日 多媒体技术教程 第4章 彩色数字图像基础 林福宗 清华大学 计算机科学与技术系 2008年9月.
MicroSim pspice.
Video 影像 (VideoPlayer 影像播放器、Camcorder 錄影機) 靜宜大學資管系 楊子青
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
MiRanda Java Interface v1.0的使用方法
亂數 隨機產生亂數 Random類別支援的方法: Next多載方法 Next :傳回亂數。
何謂gif動畫? GIF是Graphics Interchange Format的縮寫,意思是「圖像交換格式」
Chapter 15 檔案存取 LabVIEW中的檔案存取函數也可將程式中的資料儲存成Excel或Word檔。只要將欲存取的檔案路徑位址透過LabVIEW中的路徑元件告訴檔案存取函數後,LabVIEW便可將資料存成Excel或Word檔;當然也可以將Excel或Word檔的資料讀入LabVIEW的程式中。
2018 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A.
第十二章 離散小波轉換之相關浮水印技術.
資料表示方法 資料儲存單位.
非負矩陣分解法介紹 報告者:李建德.
第十三章 彩色影像處理.
Programming & Language Telling the computer what to do
第四組 停車場搜尋系統 第四組 溫允中 陳欣暉 蕭積遠 李雅俐.
NFC (近場通訊, Near Field Communication) 靜宜大學資管系 楊子青
Chapter 4 Multi-Threads (多執行緒).
17.1 相關係數 判定係數:迴歸平方和除以總平方和 相關係數 判定係數:迴歸平方和除以總平方和.
Unix指令4-文字編輯與程式撰寫.
InputStreamReader Console Scanner
Presentation transcript:

MATLAB 程式設計入門篇 影像顯示與讀寫 張智星 (jang@mirlab.org) jang@mirlab.org http://mirlab.org/jang 清大資工系 多媒體檢索實驗室

19-1 MATLAB的影像格式 MATLAB 最常處理的影像格式為索引影像(Indexed Images) 顯示此類型影像的語法如下: image(X) colormap(map) 其中X為影像的資料矩陣,map為色盤矩陣。 色盤矩陣的大小為K×3,每個橫列由三個元素所組成,分別是R(紅) 、G(綠)、B(藍) ,每個元素的範圍為0~1 X的值為1~K,也就是當X(i, j)的值為p,則像素點(i, j) 的顏色為map(p, :)這一列的向量所決定。

索引影像:顯示 使用MATLAB顯示內建的小丑圖。 範例19-1:image01.m load clown.mat % 載入小丑影像資料,含變數 X 和 map image(X); % 顯示影像 colormap(map) % 取用色盤矩陣

索引影像:顯示 欲顯示對應的色盤,可再執行 colorbar,結果如下:

索引影像:驗證索引範圍 範例19-2 :image02.m 由於由X 是索引影像,因此其最小值是 1 ,最大值會等於 map 的列數(即「可顯示之顏色數目」),可驗証如下: 範例19-2 :image02.m load clown.mat % 載入小丑影像資料,含變數 X 和 map fprintf('min(min(X)) = %d\n', min(min(X))); fprintf('max(max(X)) = %d\n', max(max(X))); fprintf('size(map, 1) = %d\n', size(map, 1));

索引影像:驗證索引範圍 min(min(X)) = 1 max(max(X)) = 81 size(map, 1) = 81 由範例可知,此小丑影像共含有 81 種不同的顏色。

索引影像:驗證數值 範例:indexedImage01.m 索引影像的數值可以驗證如下。 load clown.mat % 載入小丑影像資料,含變數 X 和 map subplot(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

索引影像:亂數色盤 要正確地顯示索引影像則需要正確的色盤,以上面的小丑影像為例,如果使用亂數產生的色盤則會產生下面的結果: 範例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 = peaks; imagesc(X); colormap(gray); colorbar; min(min(X)) % 顯示 X 的最小值 max(max(X)) % 顯示 X 的最大值

索引影像:強度影像 ans = -6.5466 8.0752 具有上述特性的影像資料稱為強度影像(Intensity Images),一般經由數值運算產生的矩陣均屬此類,因此均可由 imagesc 來顯示。

全彩影像:顯示 image 指令亦接受全彩影像(Truecolor Images)。全彩影像可以表示成一個 m×n×3 的矩陣 X,其中 X (:, :, 1) 代表R(紅色)的強度。X (:, :, 2) 代表G(綠色)的強度,X (:, :, 3) 則代表B(藍色)的強度。 X的值的範圍可以是下列兩種: 介於0~1的浮點數 0~255的uint8(詳見本章第三節)。 範例19-5:image04.m X = imread('annie19980405.jpg'); image(X); size(X)

全彩影像:顯示 ans = 480 640 3 此時若再下達colorbar 指令,只會顯示內定的色盤,和圖形顯示沒有關係。

19-2 影像的顯示與列印 MATLAB 在顯示影像時,會將之置於預設的圖軸之中,並以此圖軸的長寬比來成像,因而造成影像的失真。若要以影像本身的長寬比來成像,可加入 axis 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(map); set(gca, 'position', [0, 0, 1, 1]);

範例:將影像對應到螢幕上的點 此範例產生圖形如同前一個範例,如果你的螢幕解析度較低,圖形會變大。 上述範例程式碼中, figure 的 ‘position’ 性質為 [200, 200, n, m],代表視窗的左下角位置是 [200, 200](以 pixel 為單位),而視窗的寬度為 n,高度為 m,正好可以符合影像的大小。 gca 傳回使用中的圖軸,最後一個敘述將圖軸的位置設為整個視窗的大小,使用了正規化的單位 。

影像的列印 在列印影像時,MATLAB 會根據視窗的 Paper position 性質來調整圖形的長寬比,使得印出的影像再度變形。欲防止情況,可用下列指令: >>set(gcf, 'PaperPositionMode', 'auto') 若要使 Paper Position Mode 的預設值就是“auto”,可在 startup.m 檔案中加入下一行: set(0, 'DefaultFigurePaperPositionMode', 'auto')

19-3 8-bit影像 在 MATLAB 第 5 版之後,提供了 uint8 的資料型態。

8-bit影像範例 由於 8-bit 影像資料的最小值為 0,和一般的雙精準索引影像資料相差 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 的實數。

8-bit  double 欲將雙精準的全彩影像轉作 uint8 資料型態,可輸入如下: >> RGB8 = uint8(round(RGB64*255)); 其中 RGB64 為雙精準的全彩影像資料,而 RGB8 則是 unit8 的 8-bit 影像資料。反之,若欲進行反轉換,可輸入如下: >> RGB64 = double(RGB8)/255; 關於影像類別及其資料型態的關係,可見下表:

影像類別及型態關係表 資料型態 影像類別 雙精準(Double) uint8 索引影像 (Indexed Images) 影像矩陣大小:m×n 影像資料範圍:介於 [1, k] 的整數 影像資料範圍:介於 [0, k-1] 的整數 色盤矩陣大小:k×3 色盤資料範圍:介於 [0, 1] 的實數 影像顯示指令:image (註:k 的值不大於 256) 強度影像 (Intensity Images) 影像矩陣大小: m×n 影像資料範圍: 任意實數(但通常是[0,1]) 影像資料範圍:介於 [0, 255] 的整數 影像顯示指令:imagesc (色盤通常是灰階) 全彩影像 (Truecolor Images) 影像矩陣大小: m×n×3 影像資料範圍:介於 [0,1] 的實數

19-4 影像檔案的讀取與寫入 imread 指令可用於讀取影像檔案。 imwrite 則可用於寫入影像檔案。 這兩個指令可以處理的影像格式有下列幾種:

imread及imwrite支援的格式 影像檔案格式 副檔名 相關字串 微軟視窗的 Bitmap bmp ‘bmp’ 階層式資料格式 (Hierarchical Data Format) hdf ‘hdf’ Joint Photographic Expert Group jpg 或 jpeg ‘jpg’ 或 ‘jpeg’ 微軟視窗的 Paintbrush pcx ‘pcx’ 可攜式網路圖形 (Portable Network Graphics) png ‘png’ 標記式影像檔案格式 (Tagged Image File Format) tiff ‘tif’ 或 ‘tiff’ X視窗傾印 (X Windows Dump) xwd ‘xwd’ 圖形交換格式 (Graphic Interchange Format) (第六版才支援) gif ‘gif’

imread 指令 imread 指令可以讀取上述格式的影像檔案,並進行必要之轉換,如下: 對於強度影像,imread 將資料以 uint8 的矩陣(大小為 m×n)傳回。 對於索引影像,imread 將資料以 uint8 的矩陣(大小為 m×n)傳回,並同時傳回一個雙精準的色盤矩陣,其每個元素值介於[0,1]。 對於全彩矩陣,imread 將資料以 uint8 的矩陣(大小為 m×n×3)傳回。

使用imread讀取全彩jpeg影像 imread 可讀出下列全彩影像: 範例19-9:imread01.m RGB = imread('simulinkteam.jpg'); image(RGB) ; 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

imfinfo指令 imfinfo 指令可傳回影像檔案的各項資訊,例如: 對於不同的檔案格式,imfinfo 傳回的資訊項目可能有所不同。 info1=imfinfo('simulinkteam.jpg') info2=imfinfo('sbtree.gif') 對於不同的檔案格式,imfinfo 傳回的資訊項目可能有所不同。

imfinfo執行結果 info1=imfinfo(‘simulinkteam.jpg') Filename: 'simulinkteam.jpg' FileModDate: '28-三月-2000 17:30:36' FileSize: 24071 Format: 'jpg' FormatVersion: '' Width: 234 Height: 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 那些影像檔案格式支援全彩影像?哪一些支援索引影像?