數(shù)字圖像處理-Matlab圖像處理工具箱_第1頁(yè)
數(shù)字圖像處理-Matlab圖像處理工具箱_第2頁(yè)
數(shù)字圖像處理-Matlab圖像處理工具箱_第3頁(yè)
數(shù)字圖像處理-Matlab圖像處理工具箱_第4頁(yè)
數(shù)字圖像處理-Matlab圖像處理工具箱_第5頁(yè)
已閱讀5頁(yè),還剩62頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Matlab圖像處理工具箱一、Matlab簡(jiǎn)介Matlab是MatrixLaboratory的縮寫,是當(dāng)今很流行的科學(xué)計(jì)算軟件。信息技術(shù)、計(jì)算機(jī)技術(shù)發(fā)展到今天,科學(xué)計(jì)算在各個(gè)領(lǐng)域得到了廣泛的應(yīng)用,在諸如控制論、時(shí)間序列分析、系統(tǒng)仿真、圖像信號(hào)處理等方面產(chǎn)生了大量的矩陣及其他計(jì)算問(wèn)題,,Matlab軟件適時(shí)推出,為人們提供了一個(gè)方便的數(shù)值計(jì)算平臺(tái)。Matlab軟件主要由主包、Simulink和工具箱3部分組成。1.1Matlab主包(1)Matlab語(yǔ)言Matlab語(yǔ)言是一種基于矩陣/數(shù)組的高級(jí)語(yǔ)言,它具有流程控制語(yǔ)句、函數(shù)、數(shù)據(jù)結(jié)構(gòu)、輸入輸出,以及面向?qū)ο蟮某绦蛟O(shè)計(jì)特性。(2)Matlab工作環(huán)境Maltlab工作環(huán)境集成了許多工具和程序,用戶用工作環(huán)境中提供的功能完成他們的工作。(3)句柄圖形句柄圖形是Matlab的圖形系統(tǒng),它包括一些高級(jí)命令,用于實(shí)現(xiàn)二維和三維數(shù)據(jù)可視化、圖像處理、動(dòng)畫等功能;還有一些低級(jí)命令,用來(lái)定制圖形的顯示,以及建立Matlab應(yīng)用程序的圖形用戶界面。(4)Matlab數(shù)學(xué)函數(shù)庫(kù)Matlab數(shù)學(xué)函數(shù)庫(kù)是數(shù)學(xué)運(yùn)算的一個(gè)巨大集合,該函數(shù)庫(kù)既包含了各類簡(jiǎn)單函數(shù),也包含了矩陣轉(zhuǎn)置、特征值、貝塞爾函數(shù)、快速傅里葉變換等復(fù)雜函數(shù)。(5)Matlab應(yīng)用程序接口(API)Matlab應(yīng)用程序接口是一個(gè)Matlab語(yǔ)言向C和Fortran等其他高級(jí)語(yǔ)言進(jìn)行交互的庫(kù),包括讀寫Matlab數(shù)據(jù)文件(MAT文件)。1.2Simulink

Simulink是用于動(dòng)態(tài)系統(tǒng)仿真的交互式系統(tǒng)。Simulink允許用戶在屏幕上繪制框圖模擬一個(gè)系統(tǒng),并能夠動(dòng)態(tài)地控制該系統(tǒng)。Simulink采用鼠標(biāo)驅(qū)動(dòng)方式,能夠處理線性、非線性、連續(xù)、離散、多變量以及多級(jí)系統(tǒng)。此外,Simulink還為用戶提供了SimulinkExtensions(擴(kuò)展)和Blocksets3(模塊集)2個(gè)附加項(xiàng)。1.3Matlab工具箱

Matlab工具箱是Matlab用來(lái)解決各個(gè)領(lǐng)域特定問(wèn)題的函數(shù)庫(kù),它是開放式的,可以應(yīng)用,也可以根據(jù)需要進(jìn)行擴(kuò)展。Matlab提供的工具箱為用戶提供了豐富而實(shí)用的資源,工具箱的內(nèi)容非常廣泛,涵蓋了科學(xué)研究的很多門類。目前,已有涉及數(shù)學(xué)、控制、通信、信號(hào)處理、圖像處理、經(jīng)濟(jì)、地理等多種學(xué)科的20多種Matlab工具箱投入應(yīng)用。

二、Matlab常用的基本命令1.常用矩陣的生成

(1)全0矩陣

A=zeros(n):生成n×n的全0矩陣。A=zeros(m,n):生成m×n的全0矩陣。A=zeros(a1,a2,a3,…):生成a1×a2×a3×…的全0矩陣。A=zeros(size(B)):生成與矩陣B大小相同的全0矩陣。(2)全1矩陣A=ones(n):生成n×n的全1矩陣。A=ones(m,n):生成m×n的全1矩陣。A=ones([m,n]):生成m×n的全1矩陣。A=ones(a1,a2,a3,…):生成a1×a2×a3×…的全1矩陣。A=onse(size(B)):生成與矩陣B大小相同的全1矩陣。(3)單位矩陣

A=eye(n):生成n×n的單位矩陣。A=eye(m,n):生成m×n的單位矩陣。A=eye([m,n]):生成m×n的單位矩陣。A=eye(size(B)):生成與矩陣B大小相同的單位矩陣。

(4)均勻分布的隨機(jī)矩陣A=rand(n):生成n×n的隨機(jī)矩陣。A=rand(m,n):生成m×n的隨機(jī)矩陣。A=rand([m,n]):生成m×n的隨機(jī)矩陣。A=rand(a1,a2,a3,…):生成a1×a2×a3×…的隨機(jī)矩陣。A=rand(size(B)):生成與矩陣B大小相同的隨機(jī)矩陣。(5)正態(tài)分布的隨機(jī)矩陣A=randn(n):生成n×n的隨機(jī)矩陣。A=randn(m,n):生成m×n的隨機(jī)矩陣。A=randn([m,n]):生成m×n的隨機(jī)矩陣。A=randn(a1,a2,a3,…):生成a1×a2×a3×…的隨機(jī)矩陣。A=randn(size(B)):生成與矩陣B大小相同的隨機(jī)矩陣。2.簡(jiǎn)單矩陣的生成在Matlab中,可以采用多種不同的方式生成矩陣。(1)直接輸入矩陣元素對(duì)于較小的簡(jiǎn)單矩陣,從鍵盤上直接輸入矩陣是最常用的數(shù)值矩陣創(chuàng)建方法。需要遵循以下幾個(gè)基本原則。①矩陣每行的元素必須用空格或逗號(hào)分開;②在矩陣中,采用分號(hào)或回車表明每行的結(jié)束;③整個(gè)輸入矩陣必須包含在方括號(hào)中。

(2)從外部數(shù)據(jù)文件調(diào)入矩陣元素用Matlab生成的矩陣存儲(chǔ)成二進(jìn)制文件或包含數(shù)值數(shù)據(jù)的文本文件可以生成矩陣。文本文件中,數(shù)據(jù)必須排成一個(gè)數(shù)據(jù)表,數(shù)據(jù)之間用空格分隔,文件的每行包含矩陣的一行,并且每行的元素個(gè)數(shù)必須相等。(3)利用用戶文件創(chuàng)建的M文件矩陣用戶可以使用M文件生成自己的矩陣。M文件是一種包含Matlab代碼的文本文件,這種文件的擴(kuò)展名為.m,所包含的內(nèi)容就是把在Matlab的命令行上輸入的矩陣生成命令存入一個(gè)文件。3.向量的生成Matlab可以采用多種不同的方式生成向量。(1)利用冒號(hào)“:”生成向量冒號(hào)“:”是Matlab中常用算子之一,不僅可以作數(shù)組下標(biāo),對(duì)數(shù)組元素進(jìn)行引用、增加和刪除,還可以用來(lái)生成向量。

冒號(hào)“:”使用下列格式生成均勻等分向量:x=j:k如果j<k,則生成向量x=[j,j+1,j+2,…,k];如果j>k,則生成空向量x=[];x=j:i:k如果i>0且j<k或i<0且j>k,則生成向量x=[j,j+i,j+2i,…,k];如果i>0且j>k或i<0且j<k,則生成空向量x=[];三、圖像處理工具箱簡(jiǎn)介

Matlab是一種基于向量(數(shù)組)而不是標(biāo)量的高級(jí)程序語(yǔ)言,因而Matlab從本質(zhì)上就提供了對(duì)圖像的支持。從圖像的數(shù)字化過(guò)程可以知道,數(shù)字圖像實(shí)際上就是一組有序離散的數(shù)據(jù),使用Matlab可以對(duì)這些離散數(shù)據(jù)形成的矩陣進(jìn)行一次性的處理。1.圖像采集與導(dǎo)出

圖像采集工具箱提供了大量的函數(shù)用于采集圖像和視頻信號(hào)。該工具箱支持的硬件設(shè)備包括工業(yè)標(biāo)準(zhǔn)的PC圖像采集卡和相應(yīng)的設(shè)備。Matlab的ImageProcessingToolbox支持多種圖像數(shù)據(jù)格式,這些圖像文件格式主要有JPEG、TIFF、HDF、HDF.EOS和DICOM。同時(shí),Matlab中還可以導(dǎo)入/導(dǎo)出AVI格式的數(shù)據(jù)文件,支持其他工業(yè)標(biāo)準(zhǔn)的數(shù)據(jù)文件格式。2.圖像分析與增強(qiáng)

Matlab的ImageProcessingToolbox提供了大量的用于圖像處理的函數(shù),利用這些函數(shù),可以分析圖像數(shù)據(jù),獲取圖像細(xì)節(jié)信息,并且設(shè)計(jì)相應(yīng)的濾波算子,濾除圖像數(shù)據(jù)所包含的噪聲。圖像處理工具箱還提供了Radon變換(來(lái)重構(gòu)圖像,而離散余弦變換(JPEG圖像壓縮核心算法)可以作為實(shí)現(xiàn)新的壓縮算法的核心。在圖像處理工具箱中還包含了眾多數(shù)學(xué)形態(tài)學(xué)函數(shù),這些函數(shù)可以用于處理灰度圖像或者二值圖像,可以快速實(shí)現(xiàn)邊緣檢測(cè)、圖像去噪、骨架提取和粒度測(cè)定等算法。此外還包含一些專用的數(shù)學(xué)形態(tài)學(xué)函數(shù),例如填充處理、峰值檢測(cè)、分水嶺分割等,且所有的數(shù)學(xué)形態(tài)學(xué)函數(shù)都可以處理多維圖像數(shù)據(jù)。3.圖像處理

圖像處理工具箱提供了很多高層次的圖像處理函數(shù),這些函數(shù)包括排列、變換和銳化等操作。同樣,利用這些函數(shù)能夠完成裁減圖像和尺寸變換等操作。4.數(shù)據(jù)可視化

Matlab本身就是功能強(qiáng)大的數(shù)據(jù)可視化工具,可以通過(guò)各種形式顯示分析數(shù)據(jù),例如灰度直方圖、等高線、蒙太奇混合、像素分析、圖層變換及材質(zhì)貼圖等。利用可視化的圖形,不僅能夠評(píng)估圖形圖像的特性,還能夠分析圖像中的色彩分布情況。5.算法開發(fā)與發(fā)布

Matlab允許用戶自己開發(fā)算法,并且將其封裝起來(lái),不斷擴(kuò)展到工具箱函數(shù)中。此外,也可以在支持Matlab的平臺(tái)上共享用戶所開發(fā)的算法,并將算法同已有的C代碼結(jié)合在一起,完成算法的發(fā)布工作。除此之外,Matlab還可以將用戶開發(fā)的GUI、圖像處理算法等應(yīng)用程序發(fā)布為C或者C++源代碼,進(jìn)而編譯生產(chǎn)COM組件或者Java接口,將Matlab開發(fā)的算法同其他開發(fā)工具結(jié)合起來(lái)。四、Matlab中的圖像類型及類型轉(zhuǎn)換1.圖像和圖像數(shù)據(jù)

Matlab中的數(shù)字圖像是由一個(gè)或多個(gè)矩陣表示的。這意味著Matlab強(qiáng)大的矩陣運(yùn)算功能完全可以應(yīng)用于圖像,那些適用于矩陣運(yùn)算的語(yǔ)法對(duì)Matlab中的數(shù)字圖像同樣適用。在缺省的情況下,Matlab將圖像中的數(shù)據(jù)存儲(chǔ)為雙精度類型(double),即64bit浮點(diǎn)數(shù)。這種存儲(chǔ)方法的優(yōu)點(diǎn)在于,使用中不需要數(shù)據(jù)類型的轉(zhuǎn)換,因?yàn)閹缀跛械腗atlab及其工具箱函數(shù)都可以使用double作為參數(shù)類型。然而對(duì)于圖像存儲(chǔ)來(lái)說(shuō),用64bit表示圖像數(shù)據(jù)會(huì)導(dǎo)致巨大的存儲(chǔ)量,所以Matlab還支持圖像數(shù)據(jù)的另一種類型無(wú)符號(hào)整型(uint8),即圖像矩陣中的每個(gè)數(shù)據(jù)占用1個(gè)字節(jié)。Matlab及工具箱中的大多數(shù)操作及函數(shù)(比如最基本的矩陣相加)都不支持uint8類型。uint8的優(yōu)勢(shì)僅在于節(jié)省存儲(chǔ)空間,在涉及運(yùn)算時(shí)將其轉(zhuǎn)換成double型。2.圖像處理工具箱所支持的圖像類型

圖像處理工具箱支持4種圖像類型,它們是:真彩色圖像(RGBimages)索引色圖像(indeximages)灰度圖像(intensityimages)二值圖像(binaryimages)此外,Matlab還支持由多幀圖像組成的圖像序列。3.真彩色圖像

真彩色圖像用R、G、B3個(gè)分量表示1個(gè)像素的顏色,所以對(duì)1個(gè)尺寸為m×n的真彩色圖像來(lái)說(shuō),其數(shù)據(jù)結(jié)構(gòu)就是一個(gè)m×n×3的多維數(shù)組。如果要讀取圖像中(100,50)處的像素值,可以查看三元組(100,50,1∶3).真彩色圖像可用雙精度存儲(chǔ),此時(shí)亮度值的范圍是[0,1]。比較符合習(xí)慣的存儲(chǔ)方法是用無(wú)符號(hào)整型存儲(chǔ),亮度值的范圍為[0,255]。圖1真彩色圖像的結(jié)構(gòu)4.索引色圖像

Matlab中的索引色圖像包含2個(gè)結(jié)構(gòu),一個(gè)是調(diào)色板;另外一個(gè)是圖像數(shù)據(jù)矩陣。調(diào)色板是一個(gè)有3列和若干行的色彩映像矩陣,矩陣的每行都代表一種色彩,通過(guò)3個(gè)分別代表紅、綠、藍(lán)顏色強(qiáng)度的雙精度數(shù),形成一種特定的顏色。需要注意的是Matlab中的調(diào)色板的色彩強(qiáng)度是[0,1]中的浮點(diǎn)數(shù),0代表最暗,1代表最亮。圖2索引色圖像的結(jié)構(gòu)5.灰度圖像

存儲(chǔ)灰度圖像只需要一個(gè)數(shù)據(jù)矩陣,數(shù)據(jù)類型可以是double,值域?yàn)閇0,1],也可以是uint8,值域[0,255]。6.二值圖像與灰度圖像相同,二值圖像只需一個(gè)數(shù)據(jù)矩陣,每個(gè)像素只有2個(gè)灰度值。二值圖像可以采用uint8或double類型存儲(chǔ),工具箱中以二值圖像作為返回結(jié)果的函數(shù)都使用uint8類型。圖4是一幅二值圖像的結(jié)構(gòu)圖4二值圖像的結(jié)構(gòu)7.圖像序列

圖像處理工具箱支持將多幀圖像連接成圖像序列。圖像序列是一個(gè)四維的數(shù)組,圖像幀的序號(hào)在圖像的長(zhǎng)、寬、顏色深度之后構(gòu)成第四維。比如一個(gè)包含了5幅400×300真彩色圖像的序列,其大小為400×300×5。要將分散的圖像合并成圖像序列可以使用Matlab的cat函數(shù),前提是各圖像的尺寸必須相同,如果是索引色圖像,調(diào)色板也必須是一樣的。

比如要將A1、A2、A3、A4、A5五幅圖像合并成一個(gè)圖像序列A,Matlab語(yǔ)句為A=cat(4,A1,A2,A3,A4,A5)也可以從圖像序列中抽出1幀,比如語(yǔ)句FRM3=MULTI(:、:、:、3)是將序列MULTI中的第3幀抽出來(lái)賦給矩陣FRM3。8.Matlab圖像類型轉(zhuǎn)換

工具箱中提供了許多圖像類型轉(zhuǎn)換的函數(shù),從這些函數(shù)的名稱就可以看出它們的功能。(1)dither函數(shù)

功能:圖像抖動(dòng)。格式:X=dither(I1,map)bw=dither(I2)(2)gray2ind函數(shù)功能:將灰度圖像轉(zhuǎn)換成索引圖像。格式:[X,map]=gray2ind(I,n)

(3)grayslice函數(shù)功能:通過(guò)設(shè)定閾值將灰度圖像轉(zhuǎn)換成索引色圖像。格式:X=grayslice(I,n)X=grayslice(I,v)(4)imb2bw函數(shù)

功能:將灰度圖像、索引色圖像和真彩色圖像轉(zhuǎn)化成二值圖像。格式:BW=im2bw(I,level)BW=im2bw(X,map,level)BW=im2bw(RGB,level)(5)ind2gray函數(shù)功能:將索引圖像轉(zhuǎn)換成灰度圖像。格式:I=Ind2gray(X,map)(6)ind2rgb函數(shù)

功能:將索引色圖像轉(zhuǎn)換成真彩色圖像。格式:RGB=ind2rgb(X,map)(7)mat2gray函數(shù)

功能:將一個(gè)數(shù)據(jù)矩陣轉(zhuǎn)換成一幅灰度圖像。格式:I=mat2gray(A,[aminamax])I=mat2gray(A)(8)rgb2gray函數(shù)功能:將一幅真彩色圖像轉(zhuǎn)換成灰度圖像。格式:I=rgb2gray(RGB)newmap=rgb2gray(map)(9)rgb2ind函數(shù)功能:將真彩色圖像轉(zhuǎn)換成索引色圖像。格式:RGB=rgb2ind(X,map)

9.圖像文件的讀寫和查詢

Matlab為用戶提供了特殊的函數(shù),用于從圖像格式的文件中讀寫圖像數(shù)據(jù)。其中,讀取圖形文件格式的圖像需要用imread函數(shù),寫入一個(gè)圖形文件格式的圖像需要調(diào)用imwrite函數(shù);而獲取圖形文件格式的圖像的信息需要調(diào)用imfinfo\ind2rgb函數(shù),以Mat文件加載或保存矩陣數(shù)據(jù)用load\save函數(shù),顯示加載到Matlab中的圖像用image\imagesc。

(1)圖形圖像文件的讀取利用函數(shù)imread可以完成圖形圖像文件的讀取操作,其語(yǔ)法如下:A=imread(filename,fmt)[X,map]=imread(filename,fmt)[…]=imread(filename)[…]=imread(filename,idx)(只對(duì)TIF格式的文件)[…]=imread(filename,ref)(只對(duì)HDF格式的文件)

imread函數(shù)可以從任何Matlab支持的圖形文件中以特定的位寬讀取圖像。通常情況下,讀取的大多數(shù)圖像均為8bit。當(dāng)這些圖像加載到內(nèi)存中時(shí),Matlab就將其存儲(chǔ)在類uint8中。此外,Matlab還支持16bit的PNG和TIF圖像,所以,當(dāng)讀取這類文件時(shí),Matlab就將其存儲(chǔ)在類uint16中。需要注意的是,對(duì)于索引圖像來(lái)說(shuō),即使圖像陣列的本身為類uint8或類uint16,imread函數(shù)仍然將顏色映像表讀取并存儲(chǔ)到一個(gè)雙精度的浮點(diǎn)類型的陣列中。(2)圖形圖像文件的寫入(保存)

利用imwrite函數(shù)可以完成圖形圖像文件的讀取操作,其語(yǔ)法如下imwrite(A,filename,fmt)imwrite(X,map,filename,fmt)imwrite(...,filename)imwrite(...,parameter,value)當(dāng)利用imwrite函數(shù)保存圖像時(shí),Matlab缺省的保存方式就是將其簡(jiǎn)化到uint8的數(shù)據(jù)格式。在Matlab中使用的許多圖像都是8bit,并且大多數(shù)的圖像文件并不需要雙精度的浮點(diǎn)數(shù)據(jù)。與讀取圖形圖像文件類似,Matlab就將其存儲(chǔ)在16bit的數(shù)據(jù)中。(3)圖形圖像文件信息的查詢

Matlab提供了imfinfo函數(shù)用于從圖像文件中查詢其信息。所獲取的信息依文件類型的不同而不同。但是不管哪種類型的圖像文件,至少包含下面的內(nèi)容。文件名。(如果該文件不在當(dāng)前路徑下,還包含該文件的完整路徑。)文件格式;文件格式的版本號(hào);文件修改時(shí)間;文件的字節(jié)大??;圖像的寬度(像素);圖像的長(zhǎng)度(像素);每個(gè)像素的位數(shù);圖像類型。即該圖像是RGB(真彩)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論