天天看點

圖像處理(Matlab)-再次學習如何使用Matlab

一、一些注意事項 (1)任何在Matlab中運作的檔案必須駐留在目前目錄或在搜尋路徑的目錄中。 (2)Matlab和MathWorks工具箱提供的檔案包含在搜尋路徑中。 (3)如果想知道哪些目錄位于搜尋路徑中,或者添加或修改所搜路徑,最簡單的方法是在桌面上從File菜單中選擇Set Path,然後使用Set Path對話框

二、matlab中的數字圖像      概念:一幅圖像被定義為一個而為函數f(x,y),其中,x和y是空間(平面)坐标,f在任何坐标點(x,y)處的振幅稱為圖像在該點的亮度。當f的分量x,y分量和振幅都是有限且離散的變量時,稱該圖像為數字圖像。      坐标表示:設對一幅圖像f(x,y)采樣後,得到了一幅有着M行N列的圖像,我們稱其大小為M x N。       大多數書中圖像原點定義在(x,y)=(0,0)處,沿圖像第一行的下一坐标值為(x,y)=(0,1);然而,工具箱中有兩處不同:      (1)工具箱使用(r,c)而不是(x,y)來表示行和列;      (2)坐标系統的原點在(r,c)=(0,0)處。      特别注意:IPT文檔中将工具箱中的坐标稱為像素坐标,IPT還采用一種較少使用的坐标約定,稱為空間坐标,這種坐标用x表示列,使用y來表示行。

圖像處理(Matlab)-再次學習如何使用Matlab

     圖像表示:      上圖中a坐标對應的圖像表示為:

圖像處理(Matlab)-再次學習如何使用Matlab

     上圖中b坐标對應的圖像表示為:

圖像處理(Matlab)-再次學習如何使用Matlab

     上述兩種表示形式中的任意一個元素都稱為像元、圖元或像素。在Matlab中,圖像将用矩陣來表示,矩陣以變量形式存儲,變量隻能以字母開頭,且隻能由字母、數字和下劃線組成。

三、在Matlab中關于圖像的基本操作      (1)讀取圖像imread,其文法為                 imread('filename')      說明:filename是一個含有圖像檔案全名的字元串(包含任何可用的擴充名)

圖像處理(Matlab)-再次學習如何使用Matlab

示例: >> f=imread('Fig0203(a)(chest-xray).tif');

>> imshow(f); 注:将圖像讀入矩陣f,且參數中使用‘’單引号定界字元串,指令結尾的分号在Matlab中是決定是否輸出運作該指令後的結果。

圖像處理(Matlab)-再次學習如何使用Matlab

>> size(f)

該指令可以得到圖像的行數和列數

>> whos f 該指令可顯示一個數組的附加資訊。

  Name        Size              Bytes  Class    Attributes

  f         494x600            296400  uint8             

示例:

圖像處理(Matlab)-再次學習如何使用Matlab

     (2)顯示圖像imshow      文法1:imshow(f,G)      其中,f是一個圖像數組,G是顯示該圖像的灰階技術,若G為預設,灰階級數為256。      文法2:imshow(f,[low high])      會将所有小于或等于low的值都顯示為黑色,所有大于或等于high的值都顯示為白色。介于low和high之間的值将以預設的級數顯示為中等亮度值。      文法3:imshow(f,[ ])      可以将變量low設定為數組f的最小值,将變量high設定為數組f的最大值。

     (3)儲存圖像imwrite      文法:imwrite(f,'filename')      注意:filename中包含的字元串必須是一種可識别的檔案格式擴充名,如,      imwrite(f,'iamge','tif')      或      imwrite(f,'image.tif')      若filename無路徑資訊,則預設儲存到目前工作目錄中,imwrite還可以有其他參數,具體取決于所選的檔案格式。      一種隻适用于JPEG圖像的函數是imwrite,其文法為,           imwrite(f,'filename.jpg','quality', q)      其中,q是一個0-100之間的整數,由于JPEG壓縮,q越小,圖像的退化越嚴重。      另一種隻适用于tif圖像的文法為,           imwrite(g,'filename.tif','compression','parameter',...,'resolution',[colres rowres])      其中,parameter可以有如下的值之一:           none:表示無壓縮           packbits:表示比特包壓縮(非二值圖像的預設參數)           citt:citt壓縮(二值圖像的預設參數)           1 x 2矩陣[colres rowres]包含兩個參數,分别以每機關中的點數給出圖像的列分辨率和行分辨率

     儲存圖像到硬碟,      (1)使用圖像視窗中的File菜單中的save as即可      (2)指令行存儲,文法為:      print -fno -dfileformat -rresno filename

四、資料類型

圖像處理(Matlab)-再次學習如何使用Matlab

五、圖像類型

(1)亮度圖像(Intensity) (2)二值圖像(Binary images) (3)索引圖像(Indexed images) (4)RGB圖像(RGB images)      注意:其中的二值圖像是一個取值隻有0和1的邏輯數組,一個取值隻包含0和1的uint8類數組,在matlab中不認為是二值圖像。      在提到一幅圖像時,是指一幅“data_class image_type圖像”,資料類型+圖像類型

六、類型轉換      (1)資料類型之間的轉換           B = data_class(A)      (2)圖像類型之間的轉換

圖像處理(Matlab)-再次學習如何使用Matlab

     im2uint8将輸入中所有小于0的值設定為0,而将輸入中所有大于1的值設定為255,再将所有的其他值乘以255,将得到的結果四舍五入為最接近的整數後,完成轉換。      要把一個都變了類的任意數組轉換成取值範圍為[0,1]的歸一化double類數組,可以通過mat2gray完成,其基本文法為:      g = mat2gray(A,[Amin,Amax])      其中,g的取值範圍是0~1,參數是為了在轉換時将A中小于Amin的值在g中轉換為0,将A中大于Amax的值在g中轉換為1,語句:      g = mat2gray(A);      将A中實際的最小值和最大值分别賦給Amin,Amax。若輸入為double類,輸出也為double類。      函數im2double将輸入轉換為double類,若輸入是uint8類,uint6 類或logical類,則函數im2double将其轉換為範圍[0,1]間的double類,若輸入已經是double類,則該函數傳回一個與輸入相等的數組。      亮度圖像和二值圖像之間的轉換,函數im2bw的文法為,           g = im2bw(f,T)      該函數通過門檻值處理,将一幅亮度圖像f轉換為一幅二值圖像g,該函數自動将輸出二值圖像聲明為一個logical數組,T的取值範圍是[0,1]内。

七、Matlab中的索引      (1)數組索引      維數為1 x N的數組稱為行向量,使用轉置符(.')可将行向量轉換為列向量,Matlab 中向量的元素使用方括号括起,并由空格或逗号隔開。      V = [1 3 5 7 9] 或 V = [1,3,5,7,9]      存取資料塊,使用冒号(:),如要存取v的前三個元素,可以使用語句           V(1:3)      使用如下語句存取第三個到最後一個元素:           V(3:end)      其中,end表示向量中的最後一個元素,若V是一個向量,則V(:)産生一個列向量,而語句V(1:end)産生一個行向量;索引并不限于連續的元素,如:V(1:2:end)      函數linspace的文法為           x = linspace(a,b,n)      該語句産生一個n個元素的行向量x,這n個元素之間線性地隔開并且包含a與b。      一個向量也可以作為另一個向量的索引,如:           V([1 4 5])

(2)矩陣索引      矩陣索引與數組索引類似,隻是從一維變為二維索引

八、M函數程式設計簡介      M檔案可以是簡單執行一系列Matlab語句的腳本,也可以是接收變量并産生一個或多個輸出的函數;M檔案由文本編輯器建立,并以filename.m形式的檔案名存儲,M檔案函數的組成部分為:      函數定義行      H1行      幫助文本      函數體      指令

     函數定義形式為           function [outputs] = name(inputs)      函數名必須以字母開頭,後面可以跟字母、數字、下劃線的任意組合,但不允許有空格。函數名最長不能超過63個字元,超過此長度将被忽略。      H1行是第一個文本行,他是當個注釋行,其前面為函數定義行,H1行與函數定義行間無空行或前導空格,一般是對函數的高度摘要,以便于快速了解函數功能。      幫助文本是緊跟在H1行後面的文本塊,二者之間無空行,提供注釋或線上幫助。      函數體包含了所有執行計算并給出輸出變量指派的Matlab代碼。      符号'%'後面非H1行或幫助文本的所有行可看做函數注釋行。

九、運算符

圖像處理(Matlab)-再次學習如何使用Matlab
圖像處理(Matlab)-再次學習如何使用Matlab
圖像處理(Matlab)-再次學習如何使用Matlab
圖像處理(Matlab)-再次學習如何使用Matlab
圖像處理(Matlab)-再次學習如何使用Matlab
圖像處理(Matlab)-再次學習如何使用Matlab