




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、PAGE 數(shù)字圖像處理實驗(shyn)講義目 錄 TOC o 1-3 h z u HYPERLINK l _Toc283668575 實驗(shyn)一 數(shù)字圖像的基本操作 實驗四 圖像的空域濾波 PAGEREF _Toc283668578 h 15 HYPERLINK l _Toc283668579 實驗五 圖像的邊緣檢測 PAGEREF _Toc283668579 h 20 HYPERLINK l _Toc283668580 實驗六 圖像變換及其頻域處理 PAGEREF _Toc283668580 h 24PAGE 42實驗(shyn)一 數(shù)字圖像的基本操作一、實驗(shyn)目的初步(c
2、hb)了解MATLAB語言的基本用法,掌握MATLAB語言中圖像數(shù)據(jù)與信息的讀寫方法;掌握在MATLAB中繪制灰度直方圖的方法;熟悉在MATLAB中對圖像的類型、圖像文件的格式進行轉(zhuǎn)換的方法.二、實驗原理MATLAB是集數(shù)值計算,符號運算及圖形處理等強大功能于一體的科學計算語言。作為強大的科學計算平臺,它幾乎能夠滿足所有的計算需求。MATLAB軟件具有很強的開放性和適用性。在保持內(nèi)核不便的情況下,MATLAB可以針對不同的應(yīng)用學科推出相應(yīng)的工具箱(toolbox)。目前,MATLAB已經(jīng)把工具箱延伸到了科學研究和工程應(yīng)用的諸多領(lǐng)域,諸如數(shù)據(jù)采集、概率統(tǒng)計、信號處理、圖像處理和物理仿真等,都在工
3、具箱(Toolbox)家族中有自己的一席之地。在實驗中我們主要用到MATLAB提供圖像處理工具箱(Image Processing Toolbox)。1、MATLAB與數(shù)字圖像處理MATLAB全稱是Matrix Laboratory(矩陣實驗室),一開始它是一種專門用于矩陣數(shù)值計算的軟件,從這一點上也可以看出,它在矩陣運算上有自己獨特的特點。實際上MATLAB中的絕大多數(shù)的運算都是通過矩陣這一形式進行的。這一特點也就決定了MATLAB在處理數(shù)字圖像上的獨特優(yōu)勢。理論上講,圖像是一種二維的連續(xù)函數(shù),然而在計算機上對圖像進行數(shù)字處理的時候,首先必須對其在空間和亮度上進行數(shù)字化,這就是圖像的采樣和量
4、化的過程。二維圖像進行均勻采樣,就可以得到一幅離散化成MN樣本的數(shù)字圖像,該數(shù)字圖像是一個整數(shù)陣列,因而用矩陣來描述該數(shù)字圖像是最直觀最簡便的了。而MATLAB的長處就是處理矩陣運算,因此用MATLAB處理數(shù)字圖像非常的方便。MATLAB支持五種圖像類型,即索引圖像、灰度圖像、二值圖像、RGB圖像和多幀圖像陣列;支持BMP、GIF、HDF、JPEG、PCX、PNG、TIFF、XWD、CUR、ICO等圖像文件格式的讀、寫和顯示。MATLAB對圖像的處理功能主要集中在它的圖像處理工具箱(Image Processing Toolbox)中。圖像處理工具箱是由一系列支持圖像處理操作的函數(shù)組成,可以進
5、行諸如幾何操作、線性濾波和濾波器設(shè)計、圖像變換、圖像分析與圖像增強、二值圖像操作以及形態(tài)學處理等圖像處理操作。2、MATLAB語言(yyn)的基本操作MATLAB語言是一種運算紙型的運算語言,其特點就是(jish)與平時在運算紙上書寫運算的形式相同,這使得它成為一種比較容易掌握的語言;其變量均以矩陣向量形式表示(單獨一個數(shù)據(jù)可以認為是一維向量);其程序語法類似于C語言,只要有一點C語言基礎(chǔ)的人可以很快掌握。針對數(shù)字圖像處理的需要,可以重點掌握以下幾個內(nèi)容:矩陣、向量的輸入和操作(包括如何輸入一個矩陣,如何產(chǎn)生一個全零全一的矩陣,如何對一個矩陣的行列元素進行讀取、寫入);矩陣與向量的基本運算(包
6、括加、減、點乘等)主要介紹一下如何讀取矩陣(j zhn)的指定行或指定列,舉例說明:x=4:6 %產(chǎn)生一個一維數(shù)組,范圍從4到6,步長為1x = 4 5 6插入:通過對x進行插入運算創(chuàng)建矩陣A A=x-3; x; x+3 %當然也可以用別的方法產(chǎn)生A矩陣此處只作為示例A = 1 2 3 4 5 6 7 8 9提?。禾崛的前兩行和后兩列形成矩陣C。 C=A(1:2, 2:3)C = 2 3 5 6置零:將矩陣A 的第二行第二列的元素置零 A(2,2)=0A = 1 2 3 4 0 6 7 8 9將矩陣(j zhn)A的第一列全置1A(:,1)=1A = 1 2 3 1 0 6 1 8 9強調(diào)一
7、下矩陣的乘法(chngf)與矩陣的點乘的不同,舉例說明:A=eye(2) %產(chǎn)生(chnshng)二維單位矩陣A = 1 0 0 1 B=1,2;3,4 %直接法輸入矩陣B = 1 2 3 4 A.*B %求A與B的點積(即兩矩陣中對應(yīng)元素分別相乘ans = 1 0 0 4 A*B %求A與B的乘積(符合矩陣乘積原則A的列數(shù)與B的行數(shù)相等)ans = 1 2 3 4其他的一些用法請參考教科書。3、MATLAB中圖像文件的讀/寫(a)imreadimread函數(shù)用于讀入各種圖像文件,其一般的用法為X,MAP=imread( filename, fmt)其中,X為讀出的圖像數(shù)據(jù),MAP為顏色表數(shù)據(jù)
8、(或稱調(diào)色板,亦即顏色索引矩陣,對灰度圖像和RGB彩色圖像,該MAP為空矩陣),fmt為圖像的格式(可以(ky)缺省),filename為讀取的圖像文件(可以加上文件的路徑)。例:X,MAP=imread(flowers.tif, tif)(b)imwriteimwrite函數(shù)用于輸出圖像,其語法(yf)格式為:imwrite(X, MAP, filename, fmt)imwrite(X, MAP, filename, fmt) 按照(nzho)fmt指定的格式將圖像數(shù)據(jù)矩陣X和調(diào)色板MAP寫入文件filename。(c)imfinfoimfinfo函數(shù)用于讀取圖像文件的有關(guān)信息,其語法格式
9、為imfinfo(filename, fmt)imfinfo函數(shù)返回一個結(jié)構(gòu)info,它反映了該圖像的各方面信息,其主要數(shù)據(jù)包括:文件名(路徑)、文件格式、文件格式版本號、文件的修改時間、文件的大小、文件的長度、每個像素的位數(shù)(BitDepth)、圖像的類型(ColorType)、顏色表矩陣(Colormap)等等。例:imfinfo(rice.tif)ans = Filename: D:MATLAB6p1toolboximagesimdemosrice.tif FileModDate: 26-Oct-1996 06:11:58 FileSize: 65966 Format: tif Form
10、atVersion: Width: 256 Height: 256 BitDepth: 8 ColorType: grayscale FormatSignature: 73 73 42 0 ByteOrder: little-endian NewSubfileType: 0 BitsPerSample: 8 Compression: Uncompressed PhotometricInterpretation: BlackIsZero StripOffsets: 8x1 double SamplesPerPixel: 1 RowsPerStrip: 32 StripByteCounts: 8x
11、1 double XResolution: 72 YResolution: 72 ResolutionUnit: Inch Colormap: PlanarConfiguration: Chunky TileWidth: TileLength: TileOffsets: TileByteCounts: Orientation: 1 FillOrder: 1 GrayResponseUnit: 0.0100 MaxSampleValue: 255 MinSampleValue: 0 Thresholding: 1ImageDescription: 1x166 char4、MATLAB中圖像文件的
12、顯示(xinsh)MATLAB圖像處理工具箱提供了imshow函數(shù)(hnsh)來顯示各種圖像,其語法如下:imshow(I, n)或imshow(I_BW);imshow(X, MAP);imshow(I_RGB)其中imshow(I, n)用于顯示灰度圖像(t xin),I是圖像數(shù)據(jù)矩陣,n為灰度級數(shù)目(n可缺省,缺省值為256)。其它的分別用于顯示二值圖像、索引色圖像和RGB真彩色圖像。另外,對RGB彩色圖像,還可以用imshow( RGB(:, :, 1) )、imshow( RGB(:, :, 2) )、imshow( RGB(:, :, 3) )分別顯示RGB圖像的R、G、B三個分量
13、(注意:這樣顯示出的圖像是以各分量值為對應(yīng)的灰度值所顯示的灰度圖像)。需要顯示多幅圖像時,可以使用figure語句,它的功能就是打開一個新的圖像顯示窗口。也可以使用subplot函數(shù)將多幅圖像顯示在同一個圖像顯示窗口的不同區(qū)域位置。例:I=imread(rice.tif);imshow(I);J=imread(flowers.tif);figure, imshow(J);或 I=imread(rice.tif);subplot(1,2,1), Imshow(I);J=imread(flowers.tif);subplot(1,2,2), imshow(J);5、MATLAB中灰度直方圖的顯示(
14、xinsh)MATLAB圖像處理工具箱提供了imhist函數(shù)來計算和顯示圖像的直方圖,imhist函數(shù)的語法(yf)格式為:imhist(I, n)imhist(X, MAP)其中(qzhng)imhist(I,n)計算和顯示灰度圖像I的直方圖,n為指定的灰度級數(shù)目,默認值為256。imhist(X, MAP)計算和顯示索引色圖像X的直方圖,map為調(diào)色板。例:I = imread(rice.tif);imshow(I)figure, imhist(I)6、圖像類型的轉(zhuǎn)換圖像的類型主要有二值圖像、灰度圖像、索引圖像和RGB彩色圖像。一幅圖像的類型可以根據(jù)讀入的圖像數(shù)據(jù)的特點加以判斷。假設(shè)圖像“
15、flowers.tif”的大小為NM,讀取圖像X,MAP=imread(flowers.tif, tif)。對灰度圖像來說:X為NM矩陣、MAP為空矩陣;對索引圖像:X為NM矩陣,而MAP不是空矩陣,一般為2563矩陣;對RGB圖像:X為NM3三維矩陣,MAP為空矩陣。另外根據(jù)用imfinfo函數(shù)讀取的圖像文件的有關(guān)信息也可以確定圖像的類型。圖像類型之間的轉(zhuǎn)換有時非常有用。下表是MATLAB提供的圖像類型轉(zhuǎn)換函數(shù)函 數(shù)功 能dither使用抖動方法,將灰度圖像變成二值圖像或由RGB圖像創(chuàng)建索引圖像gray2ind根據(jù)一幅灰度圖像創(chuàng)建索引圖像grayslice使用閾值截取方法,根據(jù)一幅灰度圖像創(chuàng)
16、建索引圖像im2bw使用閾值截取法,將灰度圖像、索引圖像或RGB圖像轉(zhuǎn)換為二值圖像ind2gray根據(jù)一幅索引圖像創(chuàng)建一幅灰度圖像ind2rgb根據(jù)一幅索引圖像創(chuàng)建一幅RGB圖像mat2gray通過數(shù)據(jù)縮放,在根據(jù)矩陣數(shù)據(jù)創(chuàng)建一幅灰度圖像rgb2gray根據(jù)一幅RGB圖像創(chuàng)建一幅灰度圖像rgb2ind根據(jù)一幅RGB圖像創(chuàng)建一幅索引圖像上表中函數(shù)有類似的調(diào)用格式:函數(shù)的輸入?yún)?shù)是圖像數(shù)據(jù)(shj)矩陣(如果是索引圖像,那么輸入?yún)?shù)還包括調(diào)色板),返回值是轉(zhuǎn)換后的圖像(包括索引圖像的調(diào)色板),只有函數(shù)im2bw的調(diào)用格式不同,其輸入?yún)?shù)中還包括一個截取閾值(y zh),超過此閾值的像素被截取為1否
17、則為0。如:“I_RGB, MAP=imread(flowers.tif); I_GRAY=rgb2gray(I_RGB);”將RGB圖像(t xin)轉(zhuǎn)換為灰度圖像。7、圖像文件格式的轉(zhuǎn)換圖像文件格式之間的轉(zhuǎn)換,可以間接利用圖像讀寫函數(shù)來完成;首先使用imread函數(shù)按照原有的圖像格式進行圖像讀取,然后調(diào)用imwrite函數(shù)對圖像進行保存,并指定圖像的保存格式。如將BMP格式轉(zhuǎn)換為PNG格式: bitmap=imread(mybitmap.bmp, bmp) imwrite(bitmap, mybitmap.png, png)三、實驗內(nèi)容及要求1、自建一個文件夾,將給定的實驗用樣本圖像復(fù)制到
18、文件夾。用MATLAB在自建的文件夾中建立example1.m程序文件。在這個文件的程序中,將girl.bmp圖像文件讀出,用到imread,imfinfo等文件,將這個圖像顯示出來(用imshow)。觀察數(shù)字圖像數(shù)據(jù)的特點,了解一下數(shù)字圖像在MATLAB中的處理就是處理一個矩陣;根據(jù)圖像文件信息和圖像數(shù)據(jù)矩陣的特點,確定圖像的類型,體會彩色圖像、索引圖像、灰度圖像各自數(shù)據(jù)的特點。選擇其它圖像,重復(fù)上述內(nèi)容,比較不同類型圖像的數(shù)據(jù)特點。2、選擇一幅RGB彩色圖像,分別顯示出原圖像和R、G、B三個分量圖像(用subplot函數(shù)顯示在同一窗口中),觀察對比(dub)它們的特點,體會不同顏色所對應(yīng)的
19、R、G、B分量的不同之處。3、選擇一幅索引彩色圖像,將圖像文件讀出,并將這個圖像顯示出來。嘗試修改MAP顏色(yns)矩陣的值(即改變MAP矩陣的某些矩陣元素的值),再將圖像顯示出來,觀察圖像顏色的變化。4、選擇一幅灰度圖像,顯示圖像及其該圖像的灰度直方圖。選擇其它(qt)圖像進行顯示,觀察比較圖像的對比度與其灰度直方圖之間的關(guān)系。5、選擇一幅RGB彩色圖像,進行圖像各類型之間的相互轉(zhuǎn)換,顯示并比較各圖像。實驗二 圖像的灰度變換增強實驗(shyn)目的理解數(shù)字圖像處理中點運算(yn sun)的基本作用;2、掌握對比度調(diào)整(tiozhng)與灰度直方圖均衡化的方法。二、實驗原理1、對比度調(diào)整如果
20、原圖像f(x, y)的灰度范圍是m, M,我們希望對圖像的灰度范圍進行線性調(diào)整,調(diào)整后的圖像g(x, y)的灰度范圍是n, N,那么下述變換:就可以實現(xiàn)這一要求。MATLAB圖像處理工具箱中提供的imadjust函數(shù),可以實現(xiàn)上述的線性變換對比度調(diào)整。imadjust函數(shù)的語法格式為:J = imadjust(I,low_in high_in, low_out high_out)J = imadjust(I, low_in high_in, low_out high_out)返回原圖像I經(jīng)過對比度調(diào)整后的新圖像J。其中l(wèi)ow_in high_in為原圖像中要變換的灰度范圍,low_out hi
21、gh_out指定了變換后的灰度范圍,灰度范圍可以用 空矩陣表示默認范圍,默認值為0, 1(注意:灰度范圍只能在01之間)。例:I = imread(pout.tif);J = imadjust(I, 0.3 0.7, ); %輸出灰度范圍為默認范圍,即為0, 1imshow(I), figure, imshow(J) 不使用(shyng)imadjust函數(shù),利用matlab語言直接編程也很容易實現(xiàn)灰度圖像的對比度調(diào)整。但運算的過程(guchng)中應(yīng)當注意以下問題,由于我們讀出的圖像數(shù)據(jù)一般(ybn)是uint8型,而在MATLAB的矩陣運算中要求運算變量為double型(雙精度型)。因此讀
22、出的圖像數(shù)據(jù)不能直接進行運算,必須將圖像數(shù)據(jù)轉(zhuǎn)換成雙精度型數(shù)據(jù)。MATLAB中提供了這樣的圖像數(shù)據(jù)類型轉(zhuǎn)換函數(shù):im2double函數(shù),其語法格式為:I2 = im2double(I1)該函數(shù)將I1的各元素除以255后轉(zhuǎn)換為01內(nèi)的雙精度型數(shù)據(jù)。運算之后的圖像數(shù)據(jù)再顯示時可以再轉(zhuǎn)化成uint8型,格式為:I3 = im2uint8 (I2)該函數(shù)將I2的各元素乘以255后轉(zhuǎn)換為0255內(nèi)的uint8型數(shù)據(jù),其中小于0的元素均設(shè)置為0,大于255的元素均設(shè)置為255。線性運算示例:K1=imread(pout.tif);I=im2double(K1);J=I*0.43;K2=im2uint8(J
23、);subplot(1,2,1), imshow(K1)subplot(1,2,2), imshow(K2)非線性運算示例:K1=imread(pout.tif);I=double(K1);Dm=double(max(max(K1);J=( Dm/2)*(1+(1/sin(pi/4)*sin(pi/2)*(I/Dm)-0.5);K2=uint8(J);subplot(1,2,1), imshow(K1)subplot(1,2,2), imshow(K2)注意(zh y):函數(shù)(hnsh)double、uint8與im2double、im2uint8不同(b tn),它們僅僅對數(shù)據(jù)作類型轉(zhuǎn)換,而
24、不對數(shù)據(jù)作范圍限定。2、直方圖均衡化直方圖均衡化的目的是將原始圖像的直方圖變?yōu)榫夥植嫉男问?,即將一已知灰度概率密度分布的圖像,經(jīng)過某種變換變成一幅具有均勻灰度概率密度分布的新圖像,從而改善圖像的灰度層次。MATLAB圖像處理工具箱中提供的histeq函數(shù),可以實現(xiàn)直方圖的均衡化。對于灰度圖像,histeq函數(shù)的基本調(diào)用格式為J=histeq(I, n)該函數(shù)返回原圖像I經(jīng)過直方圖均衡化處理后的新圖像J。n為指定的均衡化后的灰度級數(shù),缺省值為64。例:I = imread(pout.tif);J = histeq(I);subplot(2,2,1), imshow(I);subplot(2,2
25、,2), imhist(I, 64);subplot(2,2,3), imshow(J);subplot(2,2,4), imhist(J, 64); 對于(duy)索引圖像,調(diào)用(dioyng)格式為:Newmap=histeq(X, map)返回值Newmap將是輸出(shch)圖像的新的調(diào)色板。利用matlab語言直接編程也很容易實現(xiàn)直方圖均衡化處理。三、實驗內(nèi)容及要求1、用MATLAB在自建的文件夾中建立example2.m程序文件。在這個文件程序中,將girl2.bmp(或pout.tif、lenna2.bmp等)一幅灰度圖像文件讀出,顯示它的圖像及灰度直方圖(可以發(fā)現(xiàn)其灰度值集中在
26、一段區(qū)域)。用imadjust函數(shù)將它的灰度值調(diào)整到0,1之間,并觀察調(diào)整后的圖像與原圖像的差別,調(diào)整后的灰度直方圖與原灰度直方圖的區(qū)別;改變灰度值調(diào)整范圍,觀察調(diào)整后的圖像的變化及其與原圖像的差別,調(diào)整后的灰度直方圖的變化及其與原灰度直方圖的區(qū)別。進一步利用改變圖像灰度值調(diào)整范圍,實現(xiàn)圖像的明暗反轉(zhuǎn),觀察比較原圖與反轉(zhuǎn)后的圖像。2、讀取一幅灰度圖像,不調(diào)用imadjust函數(shù),利用MATLAB語言直接自編程序?qū)崿F(xiàn)圖像的對比度調(diào)整和圖像的反轉(zhuǎn)。3、讀取一幅灰度圖像,用histeq函數(shù)將原始圖像的灰度直方圖均衡化,同時觀察均衡化后的圖像與前面圖像的差別,均衡化后的灰度直方圖與前面的灰度直方圖的區(qū)
27、別。實驗三 圖像的幾何變換與代數(shù)運算一、實驗(shyn)目的理解(lji)圖像幾何變換的基本概念與定義;掌握在MATLAB中進行(jnxng)插值運算的方法;理解數(shù)字圖像處理中代數(shù)運算的基本作用;掌握在MTLAB中對圖像進行代數(shù)運算的方法。運用MATLAB語言進行圖像的插值縮放和插值旋轉(zhuǎn)。二、實驗原理幾何運算可改變圖像中各物體之間的空間關(guān)系。這種運算可以被看成是將(各)物體在圖像內(nèi)移動。一個幾何運算需要兩個獨立的算法。首先,需要一個算法來定義空間變換本身,用它來描述每個像素如何從其初始位置“移動”到終止位置,即每個像素的“運動”。同時,還需要一個用于灰度插值的算法,這是因為,在一般情況下,輸入
28、圖像的位置坐標(x,y)為整數(shù),而輸出圖像的位置坐標為非整數(shù),反過來也如此。因此插值就是對變換之后的整數(shù)坐標位置的像素值進行估計。MATLAB提供了一些函數(shù)實現(xiàn)這些功能。插值是常用的數(shù)學運算,通常是利用曲線擬合的方法,通過離散的采樣點建立一個連續(xù)函數(shù)來逼近真實的曲線,用這個重建的函數(shù)便可以求出任意位置的函數(shù)值。最近鄰插值是最簡便的插值,在這種算法中,每一個插值輸出像素的值就是在輸入圖像中與其最臨近的采樣點的值。該算法的數(shù)學表示為: 如果最近鄰插值是工具箱函數(shù)默認使用的插值方法,而且這種插值方法的運算量非常小。不過,當圖像中包含像素之間灰度級變化的細微結(jié)構(gòu)時,最近鄰插值法會在圖像中產(chǎn)生人工的痕跡
29、。雙線性插值法的輸出像素值是它在輸入圖像中22領(lǐng)域采樣點的平均值,它根據(jù)某像素周圍4個像素的灰度值在水平和垂直兩個方向上對其插值。設(shè),和是要插值點的坐標,則雙線性插值的公式為:把按照上式計算出來的值賦予(fy)圖像幾何變換對應(yīng)于處的像素(xin s),即可實現(xiàn)雙線性插值。雙三次(sn c)插值的插值核為三次函數(shù),其插值鄰域的大小為44。它的插值效果比較好,但相應(yīng)的計算量也比較大,在這里不做討論。1、圖像的縮放MATLAB圖像處理工具箱中的函數(shù)imresize可以用上述的三種方法對圖像進行插值縮放,如果不指定插值方法,則默認為最鄰近插值法。imresize函數(shù)的語法格式為:B = imresiz
30、e(A, m, method)上式返回原圖像A的m倍放大的圖像(m小于1時效果是縮小)。這里參數(shù)method用于指定插值的方法,可選用的值為nearest(最鄰近法),bilinear(雙線性插值),bicubic(雙三次插值),默認為nearest。例:I = imread(ic.tif);J = imresize(I, 1.25);imshow(I), title(原圖像)figure,imshow(J), title(放大后的圖像) 2、圖像的旋轉(zhuǎn)在工具箱中的函數(shù)imrotate可用上述三種方法對圖像進行插值旋轉(zhuǎn),默認(mrn)的插值方法也是最鄰近插值法。imrotate的語法(yf)格
31、式為:B = imrotate(A, angle, method)函數(shù)imrotate對圖像進行(jnxng)旋轉(zhuǎn),參數(shù)method用于指定插值的方法,可選用的值為nearest(最鄰近法),bilinear(雙線性插值),bicubic(雙三次插值),默認為nearest。一般說來旋轉(zhuǎn)后的圖像會比原圖大,超出原圖部分值為0。例:I = imread(rice.tif);J = imrotate(I, 30, bilinear);imshow(I); title(原圖像)figure, imshow(J); title(旋轉(zhuǎn)后的圖像) 代數(shù)運算是指對兩幅輸入圖像進行點對點的加、減、乘或除運算而
32、得到輸出圖像的運算。對于相加和相乘的情形,可能不止有兩幅圖像參加運算。在一般情況下,輸入情況之一可能為常數(shù)。四種圖像處理代數(shù)運算的數(shù)學表達式如下:其中A(x,y)和B(x,y)為輸入圖像,而C(x,y)為輸出圖像。還可以通過適當?shù)慕M合形成涉及幾幅圖像的復(fù)合(fh)代數(shù)運算方程。在MATLAB中,我們可以用函數(shù)imread很容易的得到數(shù)字圖像的圖像數(shù)據(jù)矩陣(即A(x,y)和B(x,y)),有了這些矩陣后我們只要適當?shù)卦O(shè)計(shj)代數(shù)運算的形式并寫出方程,就可以得到一個輸出圖像的矩陣(即C(x,y))。圖像相加的一個重要應(yīng)用是對同一場景的多幅圖像求平均值。這點被經(jīng)常用來有效的降低加性隨機噪聲的影
33、響。在求平均值的過程中,圖像的靜止(jngzh)部分不會改變,而對每一幅圖像,各不相同的噪聲圖案則累積很慢。對M幅圖像進行平均,使圖像中每一點的平方信噪比提高了M倍,幅度信噪比是功率信噪比的平方根,因此達到了提高信噪比降低噪聲的作用。本次實驗要求完成人為的往一幅圖像中加入隨機噪聲,并通過多次相加求平均的方法降低所加入的噪聲對圖像的影響。在MATLAB中提供了給圖像加入噪聲的函數(shù)imnoise,imnoise的語法格式為J = imnoise(I, type)J = imnoise(I, type, parameters)其中J = imnoise(I, type)返回對原始圖像I添加典型噪聲的
34、有噪圖像J。參數(shù)type和parameters用于確定噪聲的類型和相應(yīng)的參數(shù)。下面的命令是對圖像eight.tif分別加入高斯噪聲、椒鹽噪聲和乘性噪聲,其結(jié)果如圖所示:例:I = imread(eight.tif);J1 = imnoise(I, gaussian, 0, 0.02);J2 = imnoise(I, salt & pepper, 0.02);J3 = imnoise(I, speckle, 0.02);subplot(2,2,1), imshow(I), title(原圖像);subplot(2,2,2), imshow(J1), title(加高斯噪聲);subplot(2,
35、2,3), imshow(J2), title(加椒鹽噪聲);subplot(2,2,4), imshow(J3), title(加乘性噪聲);在MATLAB程序語言中,分號的用處為不顯示程序運算中的中間結(jié)果,這在一定程度上使系統(tǒng)運算的效率增高,因此在不需知道中間結(jié)果的情況下,可以用分號作為一個句子(j zi)的結(jié)尾,而不顯示該句運算的中間結(jié)果。代數(shù)運算(yn sun)中需要有若干幅帶有隨機噪聲的圖像數(shù)據(jù),在這里我們運用MATLAB中的FOR循環(huán)語句來完成產(chǎn)生多幅帶有噪聲的圖像數(shù)據(jù)及將這些圖像數(shù)據(jù)進行相加運算。MATLAB中FOR END循環(huán)的用法如下:for end循環(huán)(xnhun)這種循環(huán)
36、允許一組命令以固定的和預(yù)定的次數(shù)重復(fù),循環(huán)的一般形式為:for variable = expression statementsend舉例如下:例:%一個簡單的for循環(huán)的例子。for i=1:10; y(i)=i;end;y %顯示y的結(jié)果y = 1 2 3 4 5 6 7 8 9 10為了得到最大的速度,在for循環(huán)被執(zhí)行之前,應(yīng)預(yù)先分配數(shù)組。例如前面所考慮的這一種情況,在for循環(huán)內(nèi)每執(zhí)行一次命令,向量y的維數(shù)增加1。這樣(zhyng)就使得MATLAB每通過一次循環(huán)對y分配更多的內(nèi)存,這當然要花費一定的時間。為了可以不執(zhí)行這個步驟,for循環(huán)的例子應(yīng)重寫為:y=zeros(1,10);
37、for i=1:10; y(i)=i;end;y另外(ln wi),再次強調(diào)一下,在實際的對圖像處理過程中,由于我們讀出的圖像數(shù)據(jù)一般是unit8型,而在MATLAB的矩陣(j zhn)運算中要求所有的運算變量為double型(雙精度型)。因此讀出的圖像數(shù)據(jù)不能直接進行相加求平均,因此必須先使用一個函數(shù)將圖像數(shù)據(jù)轉(zhuǎn)換成雙精度型數(shù)據(jù),然后再進行相加運算。運算完成后,在圖像顯示前再將圖像數(shù)據(jù)轉(zhuǎn)換為uint8型。MATLAB中提供了這樣的函數(shù):im2double,uint8,double等函數(shù)。作為一個示例,現(xiàn)將剛剛顯示的加有噪聲的圖像進行相加求平均以消除圖像的噪聲。在圖像中我們給圖像加的是均值為0
38、,方差為0.02的高斯噪聲,將圖像相加了一百遍,再求其平均值。程序如下:%例圖像加噪聲再通過多次相加求平均的方法祛除噪聲I, M = imread(eight.tif);J = imnoise(I, gaussian, 0, 0.02);subplot(1,2,1), imshow(I, M), title(原圖像);subplot(1,2,2), imshow(J, M), title(加噪聲后圖像);m, n = size(I);K = zeros(m, n);for i = 1 : 100 J = imnoise(I, gaussian, 0, 0.02); J1 = im2double
39、(J); K = K + J1;endK = K / 100; %求圖像的平均figure; imshow(K), title(相加求平均后的圖像);三、實驗內(nèi)容(nirng)及要求讀出girl.bmp等一幅(y f)灰度圖像并顯示。將圖像放大1.5倍,插值方法使用三種不同方法,顯示放大后的圖像,比較不同插值方法的結(jié)果(ji gu)有什么不同。將圖像放大到其它倍數(shù),重復(fù)實驗。圖像縮小0.8、0.5倍,插值方法使用三種不同方法,顯示并比較結(jié)果有什么差異。圖像分別順時針旋轉(zhuǎn)30度、45度,插值方法使用三種不同方法,顯示旋轉(zhuǎn)后的圖像并比較結(jié)果有什么不同。給原圖像加入高斯噪聲、椒鹽噪聲、乘性噪聲后并與
40、原圖顯示在同一圖像對話框中,觀察比較幾幅圖像的特點結(jié)果。改變噪聲參數(shù),再比較結(jié)果。運用for循環(huán),分別將20幅、100幅和500幅加有隨機高斯噪聲的圖像進行(jnxng)相加并求其平均值,將幾種求平均后的圖像顯示在同一圖像對話框中,比較其結(jié)果。運用for循環(huán),分別將100幅加有不同類型噪聲的圖像(t xin)進行相加再求平均值,在同一圖像對話框中顯示求平均后的圖像,比較其結(jié)果。 MACROBUTTON MTEditEquationSection2 Equation Chapter 1 Section 1 SEQ MTEqn r h * MERGEFORMAT SEQ MTSec r 1 h *
41、 MERGEFORMAT SEQ MTChap r 1 h * MERGEFORMAT 實驗四 圖像的空域(kngy)濾波一、實驗(shyn)目的1、理解(lji)圖像空域濾波的基本定義及目的;2、掌握圖像(t xin)空域濾波的基本原理及方法;3、掌握用MATLAB語言實現(xiàn)圖像的空域濾波的方法。二、實驗原理1、均值濾波均值濾波是在空間域?qū)D像進行平滑處理的一種方法,易于實現(xiàn),效果也挺好。設(shè)噪聲(m,n)是加性噪聲,其均值為0,方差(噪聲功率)為2,而且噪聲與圖像f(m,n)不相關(guān)。其有噪聲的圖像f(m, n)為: (4.1)經(jīng)均值濾波處理后的圖像g(m, n)為: (4.2)其中s是(m,
42、n)點的領(lǐng)域內(nèi)的點集。除了對噪聲有上述假定之外,該算法還基于這樣一種假設(shè):圖像是由許多灰度值相近的小塊組成。這個假設(shè)大體上反映了許多圖像的結(jié)構(gòu)特征。(4.2)式表達的算法是由某像素領(lǐng)域內(nèi)各點灰度值的平均值來代替該像素原來的灰度值??捎媚K反映領(lǐng)域平均算法的特征。對于四點領(lǐng)域和八點領(lǐng)域,可分別由下述摸板表征:(4.3)(4.4)模版沿水平和垂直兩個方向逐點移動,相當于用這樣一個模塊與圖像進行卷積運算,從而(cng r)平滑了整幅圖像。模版內(nèi)各系數(shù)和為1,用這樣的模版處理常數(shù)圖像時,圖像沒有變化;對一般圖像處理后,整幅圖像灰度的平均值可不變。2、中值濾波(lb)中值濾波(lb)是一種非線性處理技術(shù)
43、,能抑制圖像中的噪聲。它是基于圖像的這樣一種特性:噪聲往往以孤立的點的形式出現(xiàn),這些點對應(yīng)的象素很少,而圖像則是由像素數(shù)較多、面積較大的小塊構(gòu)成。在一維的情況下,中值濾波器是一個含有奇數(shù)個像素的窗口。在處理之后,位于窗口正中的像素的灰度值,用窗口內(nèi)各像素灰度值的中值代替。例如若窗口長度為5,窗口中像素的灰度值為80、90、200、110、120,則中值為110,因為按小到大(或大到?。┡判蚝螅谌坏闹凳?10。于是原理的窗口正中的灰度值200就由110取代。如果200是一個噪聲的尖峰,則將被濾除。然而,如果它是一個信號,則濾波后就被消除,降低了分辨率。因此中值濾波在某些情況下抑制噪聲,而在另
44、一些情況下卻會抑制信號。中值濾波很容易推廣到二維的情況。二維窗口的形式可以是正方形、近似圓形的或十字形的。在圖像增強的具體應(yīng)用中,中值濾波只能是一種抑制噪聲的特殊工具,在處理中應(yīng)監(jiān)視其效果,以決定最終是否采用這種方案。實施過程中的關(guān)鍵問題是探討一些快速算法。MATLAB中提供了卷積運算的函數(shù)命令conv2,其語法格式為:C = conv2(A, B)C = conv2(A, B)返回(fnhu)矩陣A和B的二維卷積C。若A為mana的矩陣(j zhn),B為mbnb的矩陣(j zhn),則C的大小為(ma+mb+1)(na+nb+1)。例:A=magic(5)A = 17 24 1 8 15
45、23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 B=1 2 1 ; 0 2 0; 3 1 3B = 1 2 1 0 2 0 3 1 3 C=conv2(A, B)C = 17 58 66 34 32 38 15 23 85 88 35 67 76 16 55 149 117 163 159 135 67 79 78 160 161 187 129 51 23 82 153 199 205 108 75 30 68 135 168 91 84 9 33 65 126 85 104 15 27MATLAB圖像處理工具箱提供了基于卷積的圖像濾
46、波函數(shù)filter2。filter2的語法格式為:Y = filter2(h, X)其中Y = filter2(h,X)返回圖像X經(jīng)算子h濾波后的結(jié)果,默認返回圖像Y與輸入圖像X大小相同。其實filter2和conv2是等價的。MATLAB在計算filter2時先將卷積核旋轉(zhuǎn)180度,再調(diào)用conv2函數(shù)進行計算。fspecial函數(shù)用于創(chuàng)建預(yù)定義的濾波算子,其語法格式為:h = fspecial(type)h = fspecial(type, parameters)參數(shù)(cnsh)type指定算子類型,parameters指定相應(yīng)的參數(shù),具體格式為:type=average,為均值濾波,參數(shù)
47、parameters為n,代表(dibio)模版尺寸,用向量表示,默認值為3,3。type= gaussian,為高斯低通濾波器,參數(shù)parameters有兩個,n表示模版尺寸(ch cun),默認值為3,3,sigma表示濾波器的標準差,單位為像素,默認值為0.5。type= laplacian,為拉普拉斯算子,參數(shù)parameters為alpha,用于控制拉普拉斯算子的形狀,取值范圍為0,1,默認值為0.2。type= log,為拉普拉斯高斯算子,參數(shù)parameters有兩個,n表示模版尺寸,默認值為3,3,sigma為濾波器的標準差,單位為像素,默認值為0.5type= prewitt
48、,為prewitt算子,用于邊緣增強,無參數(shù)。type= sobel,為著名的sobel算子,用于邊緣提取,無參數(shù)。type= unsharp,為對比度增強濾波器,參數(shù)alpha用于控制濾波器的形狀,范圍為0,1,默認值為0.2。下面舉一個均值濾波的例子:I=imread(rice.tif);J=imnoise(I, salt & pepper, 0.02);h=fspecial(average, 3);I2=filter2(h, J); % 本句也可改寫為:I2 = imfilter(J, h),注意二者的不同。subplot(1,3,1), imshow(I), title(原圖像);su
49、bplot(1,3,2), imshow(J), title(加噪聲圖像);subplot(1,3,3), imshow(I2, ), title(均值濾波后圖像);(注意“imshow(I2, )”中的參數(shù)“ ”!它表示由程序自動調(diào)整圖像數(shù)據(jù)的類型與范圍,以便正確顯示圖像)程序執(zhí)行的結(jié)果如圖:在MATLAB圖像處理工具箱中,提供了medfilt2函數(shù)用于實現(xiàn)(shxin)二維中值濾波。Medfilt2函數(shù)(hnsh)的語法格式為:B = medfilt2(A) %用33的濾波(lb)窗口對圖像A進行中值濾波。B = medfilt2(A,m n) %用指定大小為mn的窗口對圖像A進行中值濾波
50、。以下舉例說明:I=imread(rice.tif);J=imnoise(I, gaussian, 0.02);I2=medfilt2(J, 3, 3);subplot(1,3,1), imshow(I), title(原圖像);subplot(1,3,2), imshow(J), title(加噪聲圖像);subplot(1,3,3), imshow(I2), title(中值濾波后圖像);運行的結(jié)果如圖;三、實驗要求1、讀出“girl.bmp”等一幅灰度圖像。給讀出的圖像加入高斯噪聲。2、分別采用不同大小的模板對加有噪聲的圖像進行均值濾波,在一個圖形顯示窗口(chungku)中顯示原圖像、
51、加有噪聲的圖像及均值濾波的圖像。比較結(jié)果。3、分別采用不同大小的模板對加有噪聲(zoshng)的圖像進行中值濾波,在一個圖形(txng)顯示窗口中顯示原圖像、加有噪聲的圖像及中值濾波的圖像。比較結(jié)果。4、采用相同大小的模板對加有噪聲的圖像分別進行均值濾波和中值濾波,在一個圖形顯示窗口中顯示原圖像、加有噪聲的圖像、均值濾波的圖像及中值濾波的圖像。比較結(jié)果。改變加入噪聲類型,再重復(fù)之。實驗五 圖像的邊緣檢測一、實驗(shyn)目的1、理解圖像(t xin)邊緣提取的基本概念;2、熟悉進行邊緣提取(tq)的基本方法;3、掌握用MATLAB語言進行圖像邊緣提取的方法。二、實驗原理圖像理解是圖像處理的一
52、個重要分支,他研究為完成某一任務(wù)需要從圖像中提取哪些有用的信息,以及如何利用這些信息解釋圖像。邊緣檢測技術(shù)對于處理數(shù)字圖像非常重要,因為邊緣是所要提取目標和背景的分界線,提取出邊緣才能將目標和背景區(qū)分開來。在圖像中,邊界表明一個特征區(qū)域的終結(jié)和另一個特征區(qū)域的開始,邊界所分開區(qū)域的內(nèi)部特征或?qū)傩允且恢碌?,而不同的區(qū)域內(nèi)部的特征或?qū)傩允遣煌?,邊緣檢測正是利用物體和背景在某種圖像特性上的差異來實現(xiàn)的,這些差異包括灰度,顏色或者紋理特征。邊緣檢測實際上就是檢測圖像特征發(fā)生變化的位置。由于噪聲和模糊的存在,檢測到的邊界可能會變寬或在某些點處發(fā)生間斷,因此,邊界檢測包括兩個基本內(nèi)容:首先抽取出反映灰度
53、變化的邊緣點,然后剔除某些邊界點或填補邊界間斷點,并將這些邊緣連接成完整的線。邊緣檢測的方法大多數(shù)是基于方向?qū)?shù)掩模求卷積的方法。導(dǎo)數(shù)算子具有突出灰度變化的作用,對圖像運用導(dǎo)數(shù)算子,灰度變化較大的點處算得的值比較高,因此可將這些導(dǎo)數(shù)值作為相應(yīng)點的邊界強度,通過設(shè)置門限的方法,提取邊界點集。一階導(dǎo)數(shù)與是最簡單的導(dǎo)數(shù)算子,它們分別求出了灰度在x和y方向上的變化率,而方向上的灰度變化率可以用下面式子計算:對于數(shù)字圖像,應(yīng)該采用差分運算代替求導(dǎo),相對應(yīng)的一階差分為:方向(fngxing)差分為:函數(shù)(hnsh)f在某點的方向?qū)?shù)(do sh)取得最大值的方向是,方向?qū)?shù)的最大值是稱為梯度模。利用梯度模
54、算子來檢測邊緣是一種很好的方法,它不僅具有位移不變性,還具有各向同性。為了運算簡便,實際中采用梯度模的近似形式,如:、及等。另外,還有一些常用的算子,如Roberts算子和Sobel算子。Roberts算子的表達式為:Sobel算子的表達式為:X方向算子: y方向算子:其中,由于Sobel算子是濾波算子的形式,用于提取邊緣。我們可以利用快速卷積函數(shù),簡單有效,因此應(yīng)用很廣泛。拉普拉斯高斯(LoG)算法是一種二階邊緣檢測方法。它通過尋找圖像灰度值中二階微分中的過零點(Zero Crossing)來檢測邊緣點。其原理為,灰度級變形成的邊緣經(jīng)過微分算子形成一個單峰函數(shù),峰值位置對應(yīng)邊緣點;對單峰函數(shù)
55、進行微分,則峰值處的微分值為0,峰值兩側(cè)符號相反,而原先的極值點對應(yīng)于二階微分中的過零點,通過檢測過零點即可將圖像的邊緣提取出來。MATLAB的圖像處理工具箱中提供的edge函數(shù)可以實現(xiàn)檢測邊緣的功能,其語法格式如下:BW = edge(I, sobel)BW = edge(I, sobel, direction)BW = edge(I, roberts)BW = edge(I, log)這里BW = edge(I, sobel)采用Sobel算子進行邊緣檢測。BW = edge(I, sobel, direction)可以指定算子方向,即:direction = horizontal,為水平
56、方向;direction = vertical,為垂直(chuzh)方向;direction = both,為水平和垂直兩個(lin )方向。BW = edge(I, roberts)和BW = edge(I, log)分別為用Roberts算子和拉普拉斯高斯算子進行邊緣(binyun)檢測。例:用三種算子進行邊緣檢測。I=imread(eight.tif);imshow(I)BW1=edge(I, roberts);figure, imshow(BW1), title(用Roberts算子)BW2=edge(I, sobel);figure, imshow(BW2), title(用Sobe
57、l算子)BW3=edge(I, log);figure, imshow(BW3), title(用拉普拉斯高斯算子)三、實驗(shyn)要求讀取一幅灰度圖像(t xin)顯示。分別用Roberts、Sobel和拉普拉斯高斯算子(sun z)對圖像進行邊緣檢測。比較三種算子處理的結(jié)果。用不同方向(水平、垂直、水平和垂直)的Sobel算子對圖像進行邊緣檢測。比較三種情況的結(jié)果。讀取其它圖像,重復(fù)邊緣檢測實驗。實驗六 圖像變換及其頻域處理一、實驗(shyn)目的1、理解離散(lsn)傅立葉變換的基本原理;2、掌握應(yīng)用MATLAB語言(yyn)進行FFT及逆變換的方法;3、熟悉圖像在頻域中的濾波處理方法,應(yīng)用MATLAB語言實現(xiàn)簡單的濾波處理。二、實驗原理1、傅立葉變換的基本知識在圖像處理的廣泛應(yīng)用領(lǐng)域中,傅立葉變換起著
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中學生法制安全教育知識
- 小吃店蛋糕房創(chuàng)業(yè)計劃
- 嬰兒哭鬧原因識別育嬰師試題及答案
- 教學常規(guī)檢查與反饋機制計劃
- 公共演講社團提升方案計劃
- 小班多元智能的發(fā)展路徑計劃
- 建立聯(lián)結(jié)學校社團網(wǎng)絡(luò)計劃
- 2024行業(yè)趨勢及育嬰師試題及答案
- Excel在賬務(wù)處理中的應(yīng)用
- 投資咨詢在風險控制中的角色:2024年試題及答案
- 中藥飲片處方點評表-副本(文檔良心出品)
- DL-T 5605-2021太陽能熱發(fā)電廠蒸汽發(fā)生系統(tǒng)設(shè)計規(guī)范-PDF解密
- 學校雙重預(yù)防體系建設(shè)指導(dǎo)書
- 螺螄粉出口貿(mào)易的現(xiàn)狀及策略分析
- 2024年江蘇省蘇州市中考數(shù)學一模練習卷
- 米什金貨幣金融學英文版習題答案chapter1英文習題
- 家政聘用合同模板
- 防汛應(yīng)急預(yù)案培訓(xùn)課件
- 公交駕駛員心理健康輔導(dǎo)培訓(xùn)
- 樁基施工安全培訓(xùn)課件
- 人大代表履職知識講座
評論
0/150
提交評論