Ch. 2: Image Files and MATLAB

Slides:



Advertisements
Similar presentations
实验安排 本周六和下周六上机时间: 上午: 8 : 30~10 : 00 第一组 上午: 11 : 00~11 : 30 第二组 下午: 14 : 30~16 : 00 第三组.
Advertisements

國立成功大學工程科學系 Department of Engineering Science -National Cheng Kung University 控制與訊號處理實驗室 Control & Signal Processing Lab MATLAB/Simulink 教學.
第一單元 建立java 程式.
台生vs.陸生— 生涯競爭力面面觀 主講人:吳正興
Beijing CSN Technology Inc.
对本书、视频等任何MATLAB问题,作者做到有问必答!
第 9 章 多媒體.
Introduction to Matlab
Matlab教學 Speaker:林昱志 Date:2012/10/18.
1012 MATLAB 教學 彭奕翔 2013/02/27.
色彩基本認識 2010 年 9 月 Hsiu-fen Wang
第2章 数据定义功能 创建表 在关系型数据模型中,表(Table)是最基本的数据结构。
遥感数字图像处理实习.
数字图像处理 刘伯强 山东大学生物医学工程.
Minimum Spanning Trees
CH1 Number Systems and Conversion
Matlab及其应用 鲍文 哈尔滨工业大学 先进动力控制与可靠性研究所
MATLAB介紹.
數位典藏之數位影像處理技術探討 雲端上的寶藏~ 國立新港藝術高中 蘇淵源.
張智星 清大資工系 補充內容:方煒 台大生機系 小幅修改:吳俊仲 長庚機械系
張智星 清大資工系 補充內容:方煒 台大生機系
數位影像處理 2 影像與MATLAB.
第3章 變數、資料型別與運算子.
C 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
1 巨集 2 資料型態 3 物件、屬性、方法與事件 4 陳述式與副函式 5 其他注意事項 6 範例
Matlab M檔案 方煒 台大生機系.
師大資工所助教 羅安鈞 Matlab with DIP 教學 師大資工所助教 羅安鈞
數學與電腦 的初相識 汪群超 個人網址: 變有不可者三,有不可不變者三: 能力未至不可變也、 學識未敷不得變也、 功侯未到不能變也。
C++ 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
数字图像处理(2) 图像文件格式 东北林业大学信息学院 任洪娥
張智星 清大資工系 多媒體檢索實驗室 第九章: 矩陣的處理與運算 張智星 清大資工系 多媒體檢索實驗室.
數位影像壓縮 技術簡介 第四組 陳孝賢.
第三章 基本觀念 電腦繪圖與動畫 (Computer Graphics & Animation) Object Data Image
第14章 其它DSP设计库 14.1 总线控制库 14.2 复数信号库 14.3 Gates库 14.4 状态机函数库
第3章 變數、資料型別與運算子 3-1 變數與資料型別的基礎 3-2 變數的命名與宣告 3-3 資料型別 3-4 運算式與運算子
2 数字图像基础 赵国庆 博士 北京师范大学教育技术学院
多媒體概論報告-BMP 組員名稱: 盧彥良-資料蒐集 周誠哲-資料蒐集
ANSYS基础与入门.
何清波 博士 副教授 中国科学技术大学 精密机械与精密仪器系 安徽合肥 电话:
Source: IEEE Transactions on Image Processing, Vol. 25, pp ,
引 言.
簡易 Visual Studio 2005 C++ 使用手冊
授課教授:張寶基 助教:梁凱雯 郭千豪 音視訊處理實驗室 2014 / 9 / 30
第一單元 建立java 程式.
第三章 基本觀念 電腦繪圖與動畫 (Computer Graphics & Animation) Object Data Image
第 3 章 圖文並茂— 在文件中加入圖片 著作權所有 © 旗標出版股份有限公司.
圖片格式簡介 張啟中.
数学建模 江西财经大学 数学与管理决策系 制作:华长生 华长生制作.
色彩基本認識 2006 年 10 月 Hsiu-fen Wang.
高中二資訊科 數碼圖像.
MATLAB 程式設計入門篇 初探MATLAB
第一次Labview就上手 參考書籍: LabVIEW for Everyone (Jeffrey Travis/Jim Kring)
NSC D 蔣依吾 中山大學資訊工程系 紅外線點目標的檢知法則 Automatic detection of small targets in infrared image sequences containing evolving cloud clutter NSC D
实验教学 MATLAB在行列式和矩阵中的应用 授课教师:杨梦云.
GUI Title and GUI Status
图像的基本知识 《信息隐藏实验教程》教学幻灯片 二(2).
林福宗 清华大学 计算机科学与技术系 2008年9月 2019年5月5日 多媒体技术教程 第4章 彩色数字图像基础 林福宗 清华大学 计算机科学与技术系 2008年9月.
MiRanda Java Interface v1.0的使用方法
數位影像處理 4 點處理.
Hashing Michael Tsai 2017/4/25.
Chapter 15 檔案存取 LabVIEW中的檔案存取函數也可將程式中的資料儲存成Excel或Word檔。只要將欲存取的檔案路徑位址透過LabVIEW中的路徑元件告訴檔案存取函數後,LabVIEW便可將資料存成Excel或Word檔;當然也可以將Excel或Word檔的資料讀入LabVIEW的程式中。
Improvements to the JPEG-LS prediction scheme
Introduction to Matlab
2 Number Systems, Operations, and Codes
專題J組: PDA上四元樹影像解壓縮 暨 漸進式影像傳輸系統
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
Develop and Build Drives by Visual C++ IDE
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
When using opening and closing presentation slides, use the masterbrand logo at the correct size and in the right position. This slide meets both needs.
Presentation transcript:

Ch. 2: Image Files and MATLAB Types of file formats: BMP : Microsoft Bitmap Pattern JPEG : Joint Photo-graphics Experts Group GIF : Graphics Interchange Format TIFF : Tagged Image File Format PNG : Portable Network Graphics HDF : Hierarchical Data Format PCX : PC Paintbrush XWD : X Window Dump ICO : ICOns CUR : CURsor 1

BMP -- without compression, need larger storage JPEG -- lossy compression, need smaller storage GIF -- lossless compression http://zh.wikipedia.org/wiki/Jpeg 剛剛前面有提到 由於 raster image對我們影像處理來說比較好用 所以我接下來只針對這類的影像格式做比較詳細的介紹 這些是常見的點陣圖 第一個是BMP檔 影像最基礎最原始的格式 就是一開始我們講到的 將一張影像視為一個二維陣列 陣列中的每一個格 代表影像中的 每一個pixel 裡面存著該張影像的顏色資訊 這種儲存方式沒有經過壓縮 顏色越多越逼真 是影像很原始的檔案 像我們掃描進來的檔案就是BMP檔 所以相對的他所佔的空間 就會比較大 第二個是我們最常見的JPEG檔 他其實是一種壓縮的技術 我們對影像經過一些前處理之後 經由 discrete cosine transform 轉成頻譜 原本那些離散的影像資訊阿 就被轉成頻率的樣子表現 頻率有的高有的低 那對一張影像來說 頻率高的就是edge較多的地方 頻率低的就是比較平滑的部分 那JPEG壓縮的精神就在於 他將高頻的地方丟掉 之後再轉回來 像這張圖上 原本的圖 牛的毛清清楚楚 也就是edge比較多 但其實我們有些情況不需要連這些牛的毛都看得清清楚楚 這些部分被轉成頻率之後 就是比較高頻的地方 這些資訊會被丟掉 轉回來以後 就像左邊這張圖 牛的毛 沒有看的那麼清楚了 但我們只要知道他還是隻牛就好 如此一來 這種壓縮技術將比較細節的 不重要的部分捨棄 可以節省很多空間 但相對的影像也會失真就是有破壞性的 由於有些資訊被丟掉了 我們沒有辦法再將它們撿回來重填 所以他沒有辦法再從JPEG檔轉回原本的BMP檔 因為我們已經失去一些資訊了 2

Physically, An image file is a binary file, which can be shown in hexadecimal dump. 3

An image file contains (a) Header: Characteristics of image Image size, Color map, Compression method (b) Image data: Pixel values, Index values Example: BMP Format

中間上面是我現在要讀的BMP圖檔 但對電腦來說就是一堆數字 中間這張圖就是我們的contents 左邊是他的記憶體位置 一開始根據標頭檔的規格抓前面兩個 byte 這兩個數字 表示ASCII code 的‘BM’ 在往後抓四個byte 表示這個檔案有多大 所以我這邊框起來的部分就是content中標頭檔的範圍 現在我們知道它是一個BMP檔啦 所以就可以產出這張BMP Information header的table對照取值 往後抓四個byte 這裡紀錄了此張table的大小 電腦才知道 他要抓多少值以後就抓完我要的 information header 再後面四個bytes 就記錄這張影像的寬有多少(瀏覽一下圖) 所以這個範圍內紀錄了這個BMP檔應該要有的資訊 這個部分 會依照每個檔案格式不同而有所不同 接下來就是我們的 data value 像這裡是 RGB 保留位元 有些檔案如果支援透明度阿法 這裡就會有值 所以這大概是一個檔案進來的時候 電腦怎麼讀取的方法 5

How to read a BMP image? C/C++ Program http://www.cs.ucsd.edu/classes/sp03/cse190-b/hw1/

Open CV Download ftp://140.122.184.4:9876 影像處理區 資源下載 Setting http://iammic.pixnet.net/blog/post/34304039-visual studio-2010%EF%BC%9Aopencv-2.3- %E4%BD%BF%E7%94%A8-webcam 8

// 0讀進灰階圖, 1讀進彩色圖 9

GIF Format Header Name Size Description Signature 6 bytes ‘GIF87a’ or ‘GIF89a’ Global Descriptor 7 bytes Global descriptor Width 2 bytes Width in pixels Height Height in pixels Flags Bit 7 Global descriptor flags Global color map Bits 4-6 Color resolution bits Bit 3 Pixel bits Bit 2-0 Background color 1 bytes +1=color depth Aspect Ratio 好 所以就依照這個方法 GIF檔也是這樣 只是他的標頭檔的table跟剛剛我們講的BMP不同 但道理一樣 這邊我們就不看了 10

GIF Format 11

Example 這裡也是一樣 因為編碼的不同 這些ASCII code 就都不一樣了 像這裡一開始 他的signature 就是 GIF89a 12

Input/Output a color image C(R,G,B). Homework 1: Input/Output a color image C(R,G,B). 2. Transform the color image C into a grayscale image I by I = (R+G+B)/3 ; Output image I. 13

Homework 1. Input a color image C(R,G,B); 2. Transform the color image C into a grayscale image G by G = (R+G+B)/3 ; 3. Show the input and output images C and G. 14

◎ MATLAB 1. Introduction ○ MATLAB: (a) A data analysis and visualization tool (b) Powerful for matrix operations, graphics, and programming ○ Toolbox – a set of programs designed to support a particular task e.g., image-processing toolbox

○ Function – accepts parameters and produces output: matrix, string, graph, or figure e.g., sin, imread, imclose ○ Command – e.g., >> sin(pi/3) >> c = imread(‘cameraman.tif’); >> a = imclose(b); ; : Not display the result on the screen

Multiple commands can be put on a single line, which are separated by commas All data are considered to be matrices e.g. single value -- 1×1 matrix string -- 1×n matrix of characters

2. Use of MATLAB ○ Command window ○ prompt >>

○ Addition, subtraction, multiplication, division, exponentiation e.g., >> 2+2

○ Default format: Internal: double precision Display : 8 decimal places * Entering format returns to the default format

sqrt, log, log10 pi : built-in constant

3. Variables and Workspace Variable: for storing value a and b are displayed in the short format

Internally, MATLAB stores their full values Further calculations

3.1. Workspace -- contains all variables, their data types and sizes To open: (1) use View menu, choose Workspace (2) use whos function Function who lists variables only

4. Matrices Enter a matrix e.g., >> a=[[4 -2 -4 7; 1 5 -3 2; 6 -8 -5 -6; -7 3 0 1]

4.1. Matrix Elements m(i,j) corresponds to m(i+r(j-1))

Extract multiple values from a matrix >> 2:7 ans = 2 3 4 5 6 7 >> 2:3:16 ans = 2 5 8 11 14

>> a(2,1:3) ans = 1 5 -3 >> a(2:4,3) -3 -5 >> a(2:3,3:4) ans = -3 2 -5 -6 >> a(3,:) 6 -8 -5 -6 >> a(:,2) >> a(:)

4.2. Matrix Operations -- add, subtract, multiply, invert power 2 4 -7 -4 5 6 3 -2 1 -8 -5 -3 0 -6 7 -1

○ Geometric operations

○ Dot operators Dot multiplication c(i,j) = a(i,j) × b(i,j)

Dot division >> a./b Warning: Divide by zero. ans = 2.0000 -0.5000 0.5714 -1.7500 0.2000 0.8333 -1.0000 -1.0000 6.0000 1.0000 1.0000 2.0000 -Inf -0.5000 0 -1.0000

Dot power Dot reciprocal

4.3. Constructing Matrices -- zeros, ones, rand, randn, floor Zero matrices >> zeros(5) ans = 0 0 0 0 0

>> zeros(3,5) ans = 0 0 0 0 0 * zeros(m,n,o,p,…) zero(a)

Random integer matrices

A(i,j) = i+j-1

4.4. Vectorization

MATHLAB 介面 1 2 3 4

1 Current Directory -目前檔案所存放的路徑 2 Workspace -顯示目前工作環境中,所有的變數與其數值 3 Command Window -輸入指令與資料之介面 4 Command History -顯示層經在Command Window所用過的指令

基本指令 Enter:執行指令或輸入資料 分號(;): 1.置放於指令結尾處,使其不顯示執行過 程與結 果,但仍會執行輸入之指令 2.在輸入陣列資料時,用於每一個列(row)的結尾 範例:A=[1,2,3;4,5,6] 加 減 乘 除(+、-、×、÷):基本四則運算符號

冒號(:): 1. 產生數列 格式: 起始:公差:結束 或 起始:結束 範例 A=1:2:10 A=[1 3 5 7 9 10] 2. for-loop iteration 格式 for i=1:10 程式碼 end

sin( 徑度 ) cos( 徑度 ) tan( 徑度 ) 三角函數: sin( 徑度 ) cos( 徑度 ) tan( 徑度 ) csc( 徑度 ) sec( 徑度 ) cot( 徑度 ) pi=3.1416 繪圖指令: 折線圖: plot ( x , y ) 長條圖: bar ( x , width ) 產生圖表視窗: figure( number ) 標題:title ( ‘字串’ ) ─放在figure 之後

矩陣宣告: 1. 零矩陣:陣列之內容值(element)皆為0 格式: A = zeros( m , n , … ) 產生m-by-n 之陣列 2. 壹矩陣:陣列之內容值(element)皆為1 格式: A = ones( m , n , … ) 格式轉換 1. 轉換成double:A=double(A) ─計算用 2. 轉換成uint8 :A=uint8(A) ─影像顯示用

陣列運算 基本矩陣運算(Matrix operation) 1.加法運算(+): A+B 2.減法運算(-):A-B 4.次方運算(^): A^c (c is a constant) 元素對元素運算(Array operation): 1. Array multiply(.*): A.*B 矩陣A之元素個別對矩陣B之元素,進行乘法運算 2. Array power(.^); A.^c 矩陣A之元素各別進行次方運算

轉置矩陣運算(Matrix transpose): B=inv(A) 反矩陣運算(Matrix inverse): B=A’

Example:

方程式求解 解法一 解法二 ( for matlab ) A = [4,5;2,1]; b = [10;2]; x = A\b

影像處理指令 讀取影像 imread( ) IM=imread(‘c:\example\pic1.bmp') 輸出影像 imwrite( ) imwrite(TM , 'c:\example\OM1.bmp' , 'bmp' ); imwrite(矩陣名稱, '路徑' , '格式') 顯示影像 imshow( ) imshow(TM); imshow(影像矩陣);

彩色轉灰階 rgb2gray() TM=rgb2gray(IM); 灰階陣列= rgb2gray ( RGB陣列 ) mat2gray():將矩陣轉換成gray scale [0-1] mat2gray(IM) mat2gray(影像矩陣) 取得影像尺寸 size() [height width] = size ( IM ) 取得影像尺寸imfinfo() info = imfinfo ( '檔案路徑' )

RGB to HSI:將RGB的色彩模型轉換成HSI TM = rgb2hsv ( IM ) [h s v] = rgb2hsv ( IM ) HSI to RGB:將HSI的色彩模型轉換成RGB TM2 = hsv2rgb(TM) [ r g b ] = hsv2rgb(TM) RGB to YCbCr:將RGB的色彩模型轉換成YCbCr TM = hsv2rgb(IM) YCbCr to RGB:將YCbCr轉換成RGB

影像濾波器: OM = imfilter (IM, Mask, option1, option2 ) OM:輸出的影像矩陣 IM:輸入的影像矩陣 Mask:處理時所用的mask(window) option:設定邊界的處理與輸出的影像大小 定義Mask: 1. 宣告適當大小的矩陣,並填入數值作為weight 2. Mask= fspecial ( '樣式' , 大小 )

Mask的種類:

Order-statistic filter: OM = ordfilt2 ( TM, order, domain) domain:定義mask的大小 order:指定序數n 範例: 3×3 Median filter OM = ordfilt2 (TM, 5, ones(3,3) )

Histogram of an image: imhist (IM, bin) IM:輸入的影像矩陣(gray-scale) bin:間格數(預設為256) Histogram equalization: OM = histeq ( IM) OM:histogram equaliztion的結果 IM:輸入的影像矩陣

OM = edge ( TM, 'detector' , threshold , … ) detector:定義尋找edge的方法 Edge detection: OM = edge ( TM, 'detector' , threshold , … ) detector:定義尋找edge的方法 threshold:定義edge強度的門檻值 edge只能用在gray-scale的影像 detector 'prewitt' 'roberts' 'sobel' 'log' 'zerocross' 'canny'

Dilation: OM = imdilate ( TM, SE) SE:定義使用的structuring element (mask) Erosion: OM = imerode ( TM, SE) Closing: OM = imclose ( TM, SE) Opening: OM = imopen ( TM, SE)

Structuring element: SE = strel ( shape , 大小 ); shape:定義structuring element的形狀