實驗一MATLAB數(shù)字圖像處理初步_第1頁
實驗一MATLAB數(shù)字圖像處理初步_第2頁
實驗一MATLAB數(shù)字圖像處理初步_第3頁
實驗一MATLAB數(shù)字圖像處理初步_第4頁
實驗一MATLAB數(shù)字圖像處理初步_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、實驗一 MATLAB數(shù)字圖像處理初步1熟悉及掌握在MATLAB中能夠處理哪些格式圖像。2熟練掌握在MATLAB中如何讀取圖像。3掌握如何利用MATLAB來獲取圖像的大小、顏色、高度、寬度等等相關(guān)信息。4掌握如何在MATLAB中按照指定要求存儲一幅圖像的方法。5圖像間如何轉(zhuǎn)化。6. 了解圖像的算術(shù)運(yùn)算在數(shù)字圖像處理中的初步應(yīng)用。7體會圖像算術(shù)運(yùn)算處理的過程和處理前后圖像的變化。1、數(shù)字圖像的表示和類別一幅圖像可以被定義為一個二維函數(shù)f(x,y),其中x和y是空間(平面)坐標(biāo),f 在任何坐標(biāo)處(x,y)處的振幅稱為圖像在該點(diǎn)的亮度?;叶仁怯脕肀硎竞诎讏D像亮度的一個術(shù)語,而彩色圖像是由單個二維圖像組

2、合形成的。例如,在RGB彩色系統(tǒng)中,一幅彩色圖像是由三幅獨(dú)立的分量圖像(紅、綠、藍(lán))組成的。因此,許多為黑白圖像處理開發(fā)的技術(shù)適用于彩色圖像處理,方法是分別處理三副獨(dú)立的分量圖像即可。圖像關(guān)于x和y坐標(biāo)以及振幅連續(xù)。要將這樣的一幅圖像轉(zhuǎn)化為數(shù)字形式,就要求數(shù)字化坐標(biāo)和振幅。將坐標(biāo)值數(shù)字化成為取樣;將振幅數(shù)字化成為量化。采樣和量化的過程如圖1所示。因此,當(dāng)f的x、y分量和振幅都是有限且離散的量時,稱該圖像為數(shù)字圖像。作為MATLAB基本數(shù)據(jù)類型的數(shù)值數(shù)組本身十分適于表達(dá)圖像,矩陣的元素和圖像的像素之間有著十分自然的對應(yīng)關(guān)系。圖1 圖像的采樣和量化根據(jù)圖像數(shù)據(jù)矩陣解釋方法的不同,MATLAB把其處

3、理為4類: 亮度圖像(Intensity images) 二值圖像(Binary images) 索引圖像(Indexed images) RGB圖像(RGB images)(1) 亮度圖像一幅亮度圖像是一個數(shù)據(jù)矩陣,其歸一化的取值表示亮度。若亮度圖像的像素都是uint8類或uint16類,則它們的整數(shù)值范圍分別是0,255和0,65536。若圖像是double類,則像素取值就是浮點(diǎn)數(shù)。規(guī)定雙精度型歸一化亮度圖像的取值范圍是0,1 (2) 二值圖像一幅二值圖像是一個取值只有0和1的邏輯數(shù)組。而一幅取值只包含0和1的uint8類數(shù)組,在MATLAB中并不認(rèn)為是二值圖像。使用logical函數(shù)可以

4、把數(shù)值數(shù)組轉(zhuǎn)化為二值數(shù)組或邏輯數(shù)組。創(chuàng)建一個邏輯圖像,其語法為: B=logical(A)其中,B是由0和1構(gòu)成的數(shù)值數(shù)組。要測試一個數(shù)組是否為邏輯數(shù)組,可以使用函數(shù): islogical(c)若C是邏輯數(shù)組,則該函數(shù)返回1;否則,返回0。(3) 索引圖像索引顏色通常也稱為映射顏色,在這種模式下,顏色都是預(yù)先定義的,并且可供選用的一組顏色也很有限,索引顏色的圖像最多只能顯示256種顏色。一幅索引顏色圖像在圖像文件里定義,當(dāng)打開該文件時,構(gòu)成該圖像具體顏色的索引值就被讀入程序里,然后根據(jù)索引值找到最終的顏色。 (4) RGB圖像一幅RGB圖像就是彩色像素的一個MN3數(shù)組,其中每一個彩色相似點(diǎn)都是

5、在特定空間位置的彩色圖像相對應(yīng)的紅、綠、藍(lán)三個分量。按照慣例,形成一幅RGB彩色圖像的三個圖像常稱為紅、綠或藍(lán)分量圖像。令fR,fG和fB分別代表三種RGB分量圖像。一幅RGB圖像就利用cat(級聯(lián))操作將這些分量圖像組合成彩色圖像: rgb_image=cat(3,fR,fG,fB)在操作中,圖像按順序放置。 2、數(shù)據(jù)類和圖像類型間的轉(zhuǎn)化表1中列出了MATLAB和IPT為表示像素所支持的各種數(shù)據(jù)類。表中的前8項稱為數(shù)值數(shù)據(jù)類,第9項稱為字符類,最后一項稱為邏輯數(shù)據(jù)類。工具箱中提供了執(zhí)行必要縮放的函數(shù)(見表2)。以在圖像類和類型間進(jìn)行轉(zhuǎn)化。表1-1 MATLAB和IPT支持?jǐn)?shù)據(jù)類型名稱描述do

6、uble雙精度浮點(diǎn)數(shù),范圍為uint8無符號8比特整數(shù),范圍為0 255uint16無符號16比特整數(shù),范圍為0 65536uint32無符號32比特整數(shù),范圍為0 4294967295int8有符號8比特整數(shù),范圍為-128 127int16有符號16比特整數(shù),范圍為-32768 32767int32有符號32比特整數(shù),范圍為-2147483648 2147483647single單精度浮點(diǎn)數(shù),范圍為char字符logical值為0或1表1-2 格式轉(zhuǎn)換函數(shù)名稱將輸入轉(zhuǎn)化為有效的輸入圖像數(shù)據(jù)類im2uint8uint8logical,uint8,uint16和doulbeim2uint16u

7、int16logical,uint8,uint16和doulbemat2graydouble,范圍為0 1doubleim2doubledoublelogical,uint8,uint16和doulbeim2bwlogicaluint8,uint16和double 下面給出讀取、壓縮、顯示一幅圖像的程序(%后面的語句屬于標(biāo)記語句,編程時可不用輸入)I=imread(原圖像名.tif); % 讀入原圖像,tif格式whos I % 顯示圖像I的基本信息imshow(I) % 顯示圖像% 這種格式只適用于jpg格式,壓縮存儲圖像,q是0-100之間的整數(shù)imfinfo filename imwri

8、te(I,filename.jpg,quality,q); imwrite(I,filename.bmp); % 以位圖(BMP)的格式存儲圖像% 顯示多幅圖像,其中n為圖形窗口的號數(shù)figure(n), imshow(filename); gg=im2bw(filename); % 將圖像轉(zhuǎn)為二值圖像figure, imshow(gg) % 顯示二值圖像3、圖像的代數(shù)運(yùn)算代數(shù)運(yùn)算是圖像的標(biāo)準(zhǔn)算術(shù)操作的實現(xiàn)方法,是兩幅輸入圖像之間進(jìn)行的點(diǎn)對點(diǎn)的加、減、乘、除運(yùn)算后得到輸出圖像的過程。如果輸入圖像為A(x,y)和B(x,y),輸出圖像為C(x,y),則圖像的代數(shù)運(yùn)算有如下四種形式: C(x,y)

9、 = A(x,y) + B(x,y) C(x,y) = A(x,y) - B(x,y) C(x,y) = A(x,y) * B(x,y) C(x,y) = A(x,y) / B(x,y)圖像的代數(shù)運(yùn)算在圖像處理中有著廣泛的應(yīng)用,它除了可以實現(xiàn)自身所需的算術(shù)操作,還能為許多復(fù)雜的圖像處理提供準(zhǔn)備。例如,圖像減法就可以用來檢測同一場景或物體生產(chǎn)的兩幅或多幅圖像的誤差。使用MATLAB的基本算術(shù)符(+、-、*、/ 等)可以執(zhí)行圖像的算術(shù)操作,但是在此之前必須將圖像轉(zhuǎn)換為適合進(jìn)行基本操作的雙精度類型。為了更方便地對圖像進(jìn)行操作,MATLAB圖像處理工具箱包含了一個能夠?qū)崿F(xiàn)所有非稀疏數(shù)值數(shù)據(jù)的算術(shù)操作的

10、函數(shù)集合。下表列舉了所有圖像處理工具箱中的圖像代數(shù)運(yùn)算函數(shù)。表1-3 圖像處理工具箱中的代數(shù)運(yùn)算函數(shù)函數(shù)名功能描述Imabsdiff兩幅圖像的絕對差值Imadd兩幅圖像的加法Imcomplement補(bǔ)足一幅圖像Imdivide兩幅圖像的除法Imlincomb計算兩幅圖像的線性組合Immultiply兩幅圖像的乘法imsubtract兩幅圖像的減法使用圖像處理工具箱中的圖像代數(shù)運(yùn)算函數(shù)無需再進(jìn)行數(shù)據(jù)類型間的轉(zhuǎn)換,這些函數(shù)能夠接受uint8和uint16數(shù)據(jù),并返回相同格式的圖像結(jié)果。雖然在函數(shù)執(zhí)行過程中元素是以雙精度進(jìn)行計算的,但是MATLAB工作平臺并不會將圖像轉(zhuǎn)換為雙精度類型。代數(shù)運(yùn)算的結(jié)果

11、很容易超出數(shù)據(jù)類型允許的范圍。例如,uint8數(shù)據(jù)能夠存儲的最大數(shù)值是255,各種代數(shù)運(yùn)算尤其是乘法運(yùn)算的結(jié)果很容易超過這個數(shù)值,有時代數(shù)操作(主要是除法運(yùn)算)也會產(chǎn)生不能用整數(shù)描述的分?jǐn)?shù)結(jié)果。圖像的代數(shù)運(yùn)算函數(shù)使用以下截取規(guī)則使運(yùn)算結(jié)果符合數(shù)據(jù)范圍的要求:超出數(shù)據(jù)范圍的整型數(shù)據(jù)將被截取為數(shù)據(jù)范圍的極值,分?jǐn)?shù)結(jié)果將被四舍五入。例如,如果數(shù)據(jù)類型是uint8,那么大于255的結(jié)果(包括無窮大inf)將被設(shè)置為255。注意:無論進(jìn)行哪一種代數(shù)運(yùn)算都要保證兩幅輸入圖像的大小相等,且類型相同。(1)圖像的加法運(yùn)算圖像相加一般用于對同一場景的多幅圖像求平均效果,以便有效地降低具有疊加性質(zhì)的隨機(jī)噪聲。直接

12、采集的圖像品質(zhì)一般都較好,不需要進(jìn)行加法運(yùn)算處理,但是對于那些經(jīng)過長距離模擬通訊方式傳送的圖像(如衛(wèi)星圖像),這種處理是必不可少的。在MATLAB中,如果要進(jìn)行兩幅圖像的加法,或者給一幅圖像加上一個常數(shù),可以調(diào)用imadd函數(shù)來實現(xiàn)。imadd函數(shù)將某一幅輸入圖像的每一個像素值與另一幅圖像相應(yīng)的像素值相加,返回相應(yīng)的像素值之和作為輸出圖像。imadd函數(shù)的調(diào)用格式如下:Z = imadd(X,Y)其中,X和Y表示需要相加的兩幅圖像,返回值Z表示得到的加法操作結(jié)果。圖像加法在圖像處理中應(yīng)用非常廣泛。例如,以下代碼使用加法操作將圖2.1中的(a)、(b)兩幅圖像疊加在一起:I = imread(r

13、ice.tif);J = imread(cameraman.tif);K = imadd(I,J);imshow(K);疊加結(jié)果如圖2.2所示。 圖2.1 待疊加的兩幅圖像 圖2.2 疊加后的圖像效果(2)圖像的減法運(yùn)算圖像減法也稱為差分方法,是一種常用于檢測圖像變化及運(yùn)動物體的圖像處理方法。圖像減法可以作為許多圖像處理工作的準(zhǔn)備步驟。例如,可以使用圖像減法來檢測一系列相同場景圖像的差異。圖像減法與閾值化處理的綜合使用往往是建立機(jī)器視覺系統(tǒng)最有效的方法之一。在利用圖像減法處理圖像時往往需要考慮背景的更新機(jī)制,盡量補(bǔ)償由于天氣、光照等因素對圖像顯示效果造成的影響。在MATLAB中,使用imsub

14、tract函數(shù)可以將一幅圖像從另一幅圖像中減去,或者從一幅圖像中減去一個常數(shù)。imsubtract函數(shù)將一幅輸入圖像的像素值從另一幅輸入圖像相應(yīng)的像素值中減去,再將這個結(jié)果作為輸出圖像相應(yīng)的像素值。imsubtract函數(shù)的調(diào)用格式如下:Z = imsubtract(X,Y);其中,Z是X-Y操作的結(jié)果。以下代碼首先根據(jù)原始圖像(如圖2.4(a)所示)生成其背景亮度圖像,然后再從原始圖像中將背景亮度圖像減去,從而生成圖2.4(b)所示的圖像:rice = imread(rice.tif);background = (rice, strel(disk,15);rice2 = imsubtract

15、(rice, background);subplot(1,2,1);imshow(rice);subplot(1,2,2);imshow(rice2); 圖2.4 原始圖像、減去背景圖像如果希望從圖像數(shù)據(jù)I的每一個像素減去一個常數(shù),可以將上述調(diào)用格式中的Y替換為一個指定的常數(shù)值,例如:Z = imsubtract(I,50);減法操作有時會導(dǎo)致某些像素值變?yōu)橐粋€負(fù)數(shù),對于uint8或uint16類型的數(shù)據(jù),如果發(fā)生這種情況,那么imsubtract函數(shù)自動將這些負(fù)數(shù)截取為0。為了避免差值產(chǎn)生負(fù)值,同時避免像素值運(yùn)算結(jié)果之間產(chǎn)生差異,可以調(diào)用函數(shù)imabsdiff。imabsdiff將計算兩幅圖

16、像相應(yīng)像素差值的絕對值,因而返回結(jié)果不會產(chǎn)生負(fù)數(shù)。該函數(shù)的調(diào)用格式與imsubtract函數(shù)類似。(3)圖像的乘法運(yùn)算兩幅圖像進(jìn)行乘法運(yùn)算可以實現(xiàn)掩模操作,即屏蔽掉圖像的某些部分。一幅圖像乘以一個常數(shù)通常被稱為縮放,這是一種常見的圖像處理操作。如果使用的縮放因子大于1,那么將增強(qiáng)圖像的亮度,如果因子小于1則會使圖像變暗??s放通常將產(chǎn)生比簡單添加像素偏移量自然得多的明暗效果,這是因為這種操作能夠更好地維持圖像的相關(guān)對比度。此外,由于時域的卷積或相關(guān)運(yùn)算與頻域的乘積運(yùn)算對應(yīng),因此乘法運(yùn)算有時也被作為一種技巧來實現(xiàn)卷積或相關(guān)處理。在MATLAB中,使用immultiply函數(shù)實現(xiàn)兩幅圖像的乘法。im

17、multiply函數(shù)將兩幅圖像相應(yīng)的像素值進(jìn)行元素對元素的乘法操作(MATLAB點(diǎn)乘),并將乘法的運(yùn)算結(jié)果作為輸出圖形相應(yīng)的像素值。immulitply函數(shù)的調(diào)用格式如下:Z = immulitply(X,Y)其中,Z=X*Y。例如,以下代碼將使用給定的縮放因子對圖2.5(a)所示的圖像進(jìn)行縮放,從而得到如圖2.5(b)所示的較為明亮的圖像:I = imread(moon.tif);J = immultiply(I,1.2);subplot(1,2,1);imshow(I);subplot(1,2,2);imshow(J); 圖2.5 原圖和乘以因子1.5 的圖像uint8圖像的乘法操作一般都

18、會發(fā)生溢出現(xiàn)象。Immultiply函數(shù)將溢出的數(shù)據(jù)截取為數(shù)據(jù)類型的最大值。為了避免產(chǎn)生溢出現(xiàn)象,可以在執(zhí)行乘法操作之前將uint8圖像轉(zhuǎn)換為一種數(shù)據(jù)范圍較大的圖像類型,例如uint16。(4)圖像的除法運(yùn)算除法運(yùn)算可用于校正成像設(shè)備的非線性影響,這在特殊形態(tài)的圖像(如斷層掃描等醫(yī)學(xué)圖像)處理中常常用到。圖像除法也可以用來檢測兩幅圖像間的區(qū)別,但是除法操作給出的是相應(yīng)像素值的變化比率,而不是每個像素的絕對差異,因而圖像除法也稱為比率變換。在MATLAB中使用imdivide函數(shù)進(jìn)行兩幅圖像的除法。imdivide函數(shù)對兩幅輸入圖像的所有相應(yīng)像素執(zhí)行元素對元素的除法操作(點(diǎn)除),并將得到的結(jié)果作

19、為輸出圖像的相應(yīng)像素值。imdivide函數(shù)的調(diào)用格式如下:Z = imdivide(X,Y)其中,Z=X/Y。例如,以下代碼將圖4所示的兩幅圖像進(jìn)行除法運(yùn)算,請將這個結(jié)果和減法操作的結(jié)果相比較,對比它們之間的不同之處:Rice = imread(rice.tif);I = double(rice);J= I * 0.43 + 90;Rice2 = uint8(J);Ip = imdivide(rice, rice2);Imshow(Ip, );除法操作的結(jié)果如圖2.6所示。 圖2.6 原圖和減背景后的圖像相除的圖像效果1利用imread( )函數(shù)讀取一幅圖像,假設(shè)其名為strawberry.

20、tif,存入一個數(shù)組中;2利用whos 命令提取該讀入圖像strawberry.tif的基本信息;3利用imshow()函數(shù)來顯示這幅圖像;4利用imfinfo函數(shù)來獲取圖像文件的壓縮,顏色等等其他的詳細(xì)信息;5利用imwrite()函數(shù)來壓縮這幅圖象,將其保存為一幅壓縮了像素的jpg文件,設(shè)為strawberry.jpg;語法:imwrite(原圖像,新圖像,quality,q), q取0-100。6同樣利用imwrite()函數(shù)將最初讀入的tif圖象另存為一幅bmp圖像,設(shè)為strawberry.bmp。7用imread()讀入圖像:Lenna.jpg 和camema.jpg;8用imfinfo()獲取圖像Lenna.jpg和camema.jpg 的大??;9用figure,imshow()分別將Lenna.jpg和camema.jpg顯示出來,觀察兩幅圖像的質(zhì)量。10用im2bw將一幅灰度圖像轉(zhuǎn)化為

溫馨提示

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

最新文檔

評論

0/150

提交評論