matlab課件2007交通第七講圖像處理_第1頁
matlab課件2007交通第七講圖像處理_第2頁
matlab課件2007交通第七講圖像處理_第3頁
matlab課件2007交通第七講圖像處理_第4頁
matlab課件2007交通第七講圖像處理_第5頁
已閱讀5頁,還剩86頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第七講

MATLAB在圖像處理中的應(yīng)用

7.1概述

7.2圖像的讀寫和查詢

7.3圖像的顯示

7.4圖像的算術(shù)運(yùn)算

7.5圖像的幾何操作

7.6線性濾波

7.7圖像的變換

7.8圖像分析和增強(qiáng)

7.9基于區(qū)域的圖像處理

7.1概述7.1.1MATLAB中的圖像和圖像處理工具箱

MATLAB中大多數(shù)圖像是用二維數(shù)組(矩陣)double(64位)浮點型,或uint8(8位無符號整數(shù))、uint16(16位無符號整數(shù))來存儲的,矩陣中的每一個元素對應(yīng)圖像中的一個像素(pixel).

例如:一幅由200行300列不同灰度值的點組成的圖像可以用200X300的矩陣來存儲。對于彩色圖像,如RGB圖像,需要用三維數(shù)組來存儲。7.1.2MATLAB中的圖像類型二值圖像(Binary):圖像的取值為0或1。索引圖像(Indexed,pseudocolor):圖像為mXn矩陣,矩陣元素的值指向顏色映像表(colormap)。灰度圖像(intensity,grayscale,graylevel):圖像為mXn矩陣,矩陣元素的值指的是灰度值。對singleordouble矩陣取值范圍:[0,1],對uint8矩陣取值范圍:[0,255],對uint16矩陣取值范圍:[0,65535],對int16矩陣取值范圍:[-32768,32767]。真彩色圖像(RGB):圖像為mXnX3的矩陣。

二值圖像(Binary)

索引圖像(Indexed)

灰度圖像(Grayscale)

真彩色圖像(Truecolor)gray2ind:Convertagrayscaleimagetoanindexedimage.grayslice:Convertagrayscaleimagetoanindexedimageusingmultilevelthresholding.im2bw:Convertagrayscaleimage,indexedimage,ortruecolorimage,toabinaryimageind2gray:Convertanindexedimagetoagrayscaleimage。7.1.3MATLAB中的圖像類型之間的轉(zhuǎn)換ind2rgb:Convertanindexedimagetoatruecolorimage.mat2gray:Convertadatamatrixtoagrayscaleimage,byscalingthedata.rgb2gray:Convertatruecolorimagetoagrayscaleimage.rgb2ind:Convertatruecolorimagetoanindexedimage.im2uint8rgb2=im2uint8(rgb1)im2uint16im2int16im2singleim2double7.1.4圖像數(shù)據(jù)類型之間的轉(zhuǎn)換用N維數(shù)組來存儲圖像序列

mXnXp的數(shù)組表示p個二維圖像7.1.5圖像序列mXnX3Xp表示

?MATLAB支持下列圖像文件格式:?BMP(MicrosoftWindowsBitmap位圖)?HDF(HierarchicalDataFormat層次數(shù)據(jù))?JPEG(JointPhotographicExpertGroup靜止圖像壓縮標(biāo)準(zhǔn))?PCX(Paintbrush畫刷格式)?PNG(PortableNetworkGraphics可移植網(wǎng)絡(luò)圖像)?TIFF(TaggedImageFileFormat標(biāo)記圖像文件)?XWD(XWindowDump)?GIF(GraphicsInterchangeFormat圖形交換)7.1.5圖像文件格式

7.2圖像的讀寫和查詢7.2.1圖像文件的讀取A=imread(文件名,文件格式)[X,map]=imread(文件名,文件格式)文件名必須在MATLAB的搜索路徑范圍內(nèi),否則需要指出完整的路徑。

RGB=imread(‘football.jpg’);[X,map]=imread(‘trees.tif’);

7.2圖像的讀寫和查詢7.2.2圖像文件的寫入

imwrite(A,filename,fmt):寫圖像A到文件名filename中,格式為fmtimwrite(X,map,filename,fmt):寫索引圖像X和它相連的顏色映像表map到文件名filename中,格式為fmt

例如:imwrite(A,’myfile.jpg’,’Quality’,100);寫圖像矩陣到文件名為myfile.jpg的文件中,參數(shù)‘Quality’,100是控制存入時壓縮比的。

7.2圖像的讀寫和查詢7.2.3圖像文件信息的查詢

info=imfinfo(filename):從圖像文件中查詢其信息,包括文件名、路徑、格式、版本號、文件修改時間、文件大小、圖像寬度和長度、每個像素的位數(shù)、圖像類型等。

例如:info=imfinfo('football.jpg')

7.3圖像的顯示7.3.1標(biāo)準(zhǔn)圖像顯示imshow(I,n)imshow(I,[lowhigh])imshow(X,map)……參考MATLAB幫助moon=imread('moon.tif');imshow(moon);或者:imshow('moon.tif');moon=getimage

7.3圖像的顯示7.3.2圖像的特殊顯示技術(shù)添加顏色條顯示多幀圖像陣列多圖的顯示紋理映射

7.3圖像的顯示7.3.2圖像的特殊顯示技術(shù)添加顏色條

RGB=imread('saturn.png');I=rgb2gray(RGB);h=[121;000;-1-2-1];I2=filter2(h,I);imshow(I2,[]),colorbar

7.3圖像的顯示7.3.2圖像的特殊顯示技術(shù)顯示多幀圖像陣列多幀的單幀顯示多幀的一次性顯示將多幀陣列轉(zhuǎn)化為電影

多幀的單幀顯示

loadmriimshow(D(:,:,:,7))多幀的一次性顯示

loadmrimontage(D,map)將多幀陣列轉(zhuǎn)化為電影

loadmrimov=immovie(D,map);movie(mov)

7.3圖像的顯示7.3.2圖像的特殊顯示技術(shù)多圖的顯示

例1.多幅圖像在不同窗口顯示[X1,map1]=imread('forest.tif');[X2,map2]=imread('trees.tif');imshow(X1,map1),figure,imshow(X2,map2)

7.3圖像的顯示7.3.2圖像的特殊顯示技術(shù)多圖的顯示

例2.多幅圖像在同一窗口顯示[X1,map1]=imread('forest.tif');[X2,map2]=imread('trees.tif');subplot(1,2,1),imshow(X1,map1)subplot(1,2,2),imshow(X2,map2)※使用同一個顏色映像表,產(chǎn)生不能接受的顯示結(jié)果,使用subimage可以改變這一情況

7.3圖像的顯示7.3.2圖像的特殊顯示技術(shù)多圖的顯示

例3.多幅圖像在同一窗口顯示[X1,map1]=imread('forest.tif');[X2,map2]=imread('trees.tif');subplot(1,2,1),subimage(X1,map1)subplot(1,2,2),subimage(X2,map2)※subimage在顯示之前,將圖像轉(zhuǎn)換為真彩色,因此避免了colormap的共享問題。

7.3圖像的顯示7.3.2圖像的特殊顯示技術(shù)紋理映射:將圖像顯示在一個特定的參數(shù)曲面上

warp:MATLAB中利用插值算法將圖像映射到曲面網(wǎng)格上

例.將peppers.png圖像紋理映射到圓柱面和球面

[x,y,z]=cylinder;I=imread('peppers.png');subplot(1,2,1),warp(x,y,z,I);[x,y,z]=sphere(50);subplot(1,2,2),warp(x,y,z,I);

7.4圖像的算術(shù)運(yùn)算圖像的加法imadd圖像的減法imsubtract圖像的乘法immultiply圖像的除法imdivide圖像的補(bǔ)plement圖像的絕對值的差imabsdiff圖像的線性組合b

7.4圖像的算術(shù)運(yùn)算I=imread('rice.png');I2=imread('cameraman.tif');K=imdivide(imadd(I,I2),2);%notmendedK=b(.5,I,.5,I2);%mended

7.5圖像的幾何操作圖像的縮放imresize圖像的旋轉(zhuǎn)imrotate圖像的剪裁imcrop圖像的一般幾何變換imtransform

7.5.1圖像的插值運(yùn)算最近鄰插值方法(Nearestneighbor)雙線性插值方法(Bilinear)雙三次插值方法(Bicubic)

7.5.2圖像的縮放和旋轉(zhuǎn)B=imresize(A,m,method)B=imresize(A,[mrowsncols],method)I=imread('circuit.tif');J=imresize(I,1.25);imshow(I)figure,imshow(J)I=imread('circuit.tif');J=imresize(I,[100150],'bilinear');imshow(I)figure,imshow(J)

7.5.2圖像的縮放和旋轉(zhuǎn)B=imrotate(A,angle,method,’crop’)I=imread('circuit.tif');J=imrotate(I,35,'bilinear');imshow(I)figure,imshow(J)如果:J=imrotate(I,35,‘bilinear’,’crop’);結(jié)果的區(qū)別?

7.5.3圖像的剪裁B=imcrop(A)B=imcrop(X,map)

用戶可以用鼠標(biāo)選取區(qū)域,也可以在函數(shù)中定義圖像的矩形區(qū)域參數(shù)I=imread('circuit.tif');J=imcrop(I);figure,imshow(J)上面剪切圖像J也可以用:J=imcrop(I,[604010090]);其中位置矢量表示為:[xminyminwidthheight].

7.5.4圖像的一般幾何變換B=imtransform(A,TFORM,INTERP)

它根據(jù)變換結(jié)構(gòu)(TFORM)變換二維圖像A,變換結(jié)構(gòu)TFORM是由maketform函數(shù)或cp2tform函數(shù)返回的,INTERP可以取’nearest’,‘bilinear’(默認(rèn)值)或’bicubic’

7.5.4圖像的一般幾何變換B=imtransform(A,TFORM,INTERP)I=imread('cameraman.tif');tform=maketform('affine',[100;0.510;001]);J=imtransform(I,tform);imshow(J),figure,imshow(J)

7.6圖像的線性濾波濾波是一種圖像修正或增強(qiáng)技術(shù)。可以突出圖像的某些特征,也可以刪除另一些特征。圖像濾波的本質(zhì)是一種鄰域操作,輸出圖像的任一個像素值都是通過輸入圖像對應(yīng)的像素鄰域內(nèi)的像素值利用一定的算法得到的。圖像的線性濾波就是輸出圖像任一個像素值都是通過輸入圖像對應(yīng)的像素鄰域內(nèi)的像素值線性組合得到的。圖像的線性濾波是通過卷積來完成的。

7.6圖像的線性濾波二維卷積函數(shù)conv2濾波函數(shù)filter2圖像濾波imfilter預(yù)定義濾波器fspecial

7.6.1二維卷積函數(shù)conv2

A=[

17241815235714164613202210121921311182529]h=[816357492]

C=conv2(A,h)卷積步驟:關(guān)于卷積核的中心,旋轉(zhuǎn)卷積核180度?;瑒泳矸e核,將卷積核的中心位于圖像矩陣的每一個元素。將旋轉(zhuǎn)后的卷積核作為權(quán)重,乘以對應(yīng)的矩陣元素求加權(quán)和計算卷積輸出(2,4)C=conv2(A,B)C=conv2(A,B,shape)A:輸入圖像,B:卷積核,C:輸出圖像,若A大小為ma×na,B大小為mb×nb,則C大小為(ma+mb-1)×(na+nb-1)shape指定卷積運(yùn)算的范圍:shape=‘full’(thedefault),返回全部二維卷積結(jié)果shape=‘same’,返回與A同樣大小的卷積中心部分shape=‘valid’,不考慮邊界補(bǔ)零,返回C大小為(ma-mb+1)×(na-nb+1)7.6.2相關(guān)運(yùn)算實現(xiàn)濾波:filter2相關(guān)運(yùn)算(correlation)滑動相關(guān)核,將相關(guān)核的中心位于圖像矩陣的每一個元素。將相關(guān)核作為權(quán)重,乘以對應(yīng)的矩陣元素求加權(quán)和用相關(guān)運(yùn)算實現(xiàn)濾波的函數(shù)是filter2B=filter2(h,A)計算相關(guān)輸出(2,4)7.6.3圖像的線性濾波imfilterB=imfilter(A,H,option1,option2,…)A:多維圖像陣列,H:多維濾波器,option1,option2…決定邊緣上的處理方法,輸出圖像大小,采用與filter2相同的方法還是卷積的方法。例:利用imfilter函數(shù)實現(xiàn)均值濾波

I=imread('coins.png');h=ones(5,5)/25;I2=imfilter(I,h);imshow(I),title('OriginalImage');figure,imshow(I2),title('FilteredImage')imfilter輸入輸出的數(shù)據(jù)類型是一樣的A=magic(5)h=[-101];imfilter(A,h)可以看到輸出有負(fù)值,所以有時候在imfilter前用類型轉(zhuǎn)換,避免這種情況。A=uint8(magic(5))imfilter(A,h)option:相關(guān)和卷積imfilter既可以用相關(guān),也可以用卷積實現(xiàn)濾波操作,缺省是相關(guān)。A=magic(5);h=[-101]imfilter(A,h)%filterusingcorrelationimfilter(A,h,'conv')

%filterusingconvolutionoption:邊界補(bǔ)零(zero-padding)和邊界復(fù)制(borderreplication)邊界補(bǔ)零(zero-padding):缺省option:邊界補(bǔ)零(zero-padding)和邊界復(fù)制(borderreplication)邊界補(bǔ)零(zero-padding):缺省I=imread('eight.tif');h=ones(5,5)/25;I2=imfilter(I,h);imshow(I),title('OriginalImage');figure,imshow(I2),title('FilteredImagewithBlackBorder')缺點:濾波得到的圖像邊緣有一個darkbandoption:邊界補(bǔ)零(zero-padding)和邊界復(fù)制(borderreplication)邊界復(fù)制(borderreplication)option:邊界補(bǔ)零(zero-padding)和邊界復(fù)制(borderreplication)邊界復(fù)制(borderreplication)

I3=imfilter(I,h,'replicate');figure,imshow(I3);title('FilteredImagewithBorderReplication')imfilter還有其他的邊界補(bǔ)充選項,參考imfilter的幫助多維濾波imfilter既可以處理多維圖像,也可以處理多維濾波器。用一個二維濾波器對一個三維圖像濾波,相當(dāng)于對三維圖像的每個平面進(jìn)行二維濾波。例:用同樣的濾波器對一個真彩色圖像的每個顏色平面進(jìn)行濾波。%ReadinanRGBimageanddisplayitrgb=imread('peppers.png');imshow(rgb);%Filtertheimageanddisplayit.h=ones(5,5)/25;rgb2=imfilter(rgb,h);figure,imshow(rgb2)imfilter與filter2、conv2的關(guān)系:filter2、conv2、convn:將輸入轉(zhuǎn)換為double類型,輸出也是double的,輸入總是補(bǔ)零(zeropadded),不支持其他的邊界補(bǔ)充選項。imfilter:不將輸入轉(zhuǎn)換為double,輸出只與輸入同類型,有靈活的邊界補(bǔ)充選項7.6.4預(yù)定義濾波器h=fspecial(type,parameters)例:應(yīng)用“unsharpmasking”濾波器對圖像進(jìn)行濾波I=imread('moon.tif');h=fspecial('unsharp');I2=imfilter(I,h);imshow(I),title('OriginalImage')figure,imshow(I2),title('FilteredImage')※關(guān)于fspecial的參數(shù)選擇參見help7.7圖像的變換圖像的一般數(shù)學(xué)表示是用兩個空域變量的函數(shù)表示,(x,y)表示一個特定點的位置,f(x,y)表示(x,y)處的圖像灰度值。圖像的變換就是把圖像表達(dá)成另一種表示方法。例如傅立葉變換是把圖像表示為變化的頻率、相位和振幅的復(fù)指數(shù)的和,這就是頻率域。圖像的變換在圖像的分析、增強(qiáng)、特征提取、圖像壓縮等許多領(lǐng)域被廣泛應(yīng)用。7.7圖像的變換傅立葉變換(FourierTransform)離散余弦變換(DiscreteCosineTransform)7.7.1傅立葉變換

(FourierTransform)f(m,n)是一個二維離散空域變量(m,n)的函數(shù),那么f(m,n)的二維離散傅立葉(DFT)定義為:二維離散傅立葉的逆變換(IDFT)為:7.7.1傅立葉變換

(FourierTransform)二維離散傅立葉(DFT)變換的系數(shù):離散傅立葉(DFT)的計算:fft、fft2、fftn:分別實現(xiàn)一維、二維和n維離散快速傅立葉變換(DFT)ifft、ifft2、ifftn:分別實現(xiàn)一維、二維和n維離散快速傅立葉逆變換(IDFT)例:圖像傅立葉變換和幅值1.產(chǎn)生圖像矩陣,包括一個矩形區(qū)域f=zeros(30,30);f(5:24,13:17)=1;imshow(f,'InitialMagnification','fit')2.計算和顯示f的傅立葉變換F=fft2(f);F2=log(abs(F));figure,imshow(F2,[-15],'InitialMagnification','fit');colormap(jet);colorbar上圖:傅立葉變換的取樣很粗,且零頻率系數(shù)不像傳統(tǒng)的那樣顯示在圖像中心,而是顯示在左上角。為獲得傅立葉變換較精細(xì)的取樣,采用補(bǔ)零的方法。3.補(bǔ)零和計算f的傅立葉變換F=fft2(f,256,256);F2=log(abs(F));figure,imshow(F2,[-15],'InitialMagnification','fit');colormap(jet);colorbar4.將零頻系數(shù)移動到圖像中心F=fft2(f,256,256);F2=fftshift(F);figure,imshow(log(abs(F2)),[-15],'InitialMagnification','fit');colormap(jet);colorbar傅立葉變換的應(yīng)用:線性濾波器的頻率響應(yīng)線性濾波器的脈沖響應(yīng)的傅立葉變換給出該濾波器的頻率響應(yīng)。freqz2計算和顯示濾波器的頻率響應(yīng)。例:顯示高斯濾波器的頻率響應(yīng)h=fspecial('gaussian');freqz2(h)傅立葉變換的應(yīng)用:快速卷積兩個空域函數(shù)卷積的傅立葉變換等于這兩個函數(shù)傅立葉變換的乘積。例:A=magic(3);B=ones(3);A(8,8)=0;B(8,8)=0;C=ifft2(fft2(A).*fft2(B));C=C(1:5,1:5);C=real(C)傅立葉變換的應(yīng)用:圖像特征識別例:在一幅包含文字的圖像中查找字母a1、Readinthesampleimagebw=imread('text.png');2、Createatemplateformatchingbyextractingtheletter"a"fromtheimagea=bw(32:45,88:98);imshow(bw);figure,imshow(a);傅立葉變換的應(yīng)用:3、Computethecorrelationofthetemplateimagewiththeoriginalimagebyrotatingthetemplateimageby180oandthenusingtheFFT-basedconvolutiontechniqueC=real(ifft2(fft2(bw).*fft2(rot90(a,2),256,256)));figure,imshow(C,[])%Scaleimagetoappropriatedisplayrange.傅立葉變換的應(yīng)用:4、findthemaximumpixelvalueandthendefineathresholdvaluethatislessthanthismaximum.Thelocationsofthesepeaksareindicatedbythewhitespotsinthethresholdedcorrelationimage.

max(C(:))ans=68.0000thresh=60;%Useathresholdthat'salittlelessthanmax.

figure,imshow(C>thresh)%Displayshowingpixelsoverthreshold.7.7.2離散余弦變換

(DiscreteCosineTransform)通常對于一幅圖像的DCT,其重要的可視信息集中在DCT的少數(shù)系數(shù)上。正是基于這一特性,DCT經(jīng)常被用于圖像壓縮應(yīng)用。例如,DCT是國際標(biāo)準(zhǔn)有損圖像壓縮算法JPEG的核心。7.7.2離散余弦變換

(DiscreteCosineTransform)一個M×N矩陣A的DCT定義為:7.7.2離散余弦變換

(DiscreteCosineTransform)DCT的逆變換:7.7.2離散余弦變換

(DiscreteCosineTransform)MATLAB中計算DCT:dct2函數(shù)使用dct變換矩陣,由dctmtx返回7.7.2離散余弦變換

(DiscreteCosineTransform)MATLAB中計算DCT:dct2,idct2函數(shù)使用dct變換矩陣,由dctmtx返回7.8圖像分析和增強(qiáng)7.8.1圖像的像素值及其統(tǒng)計1、提供特定像素的數(shù)據(jù)值(灰度值或顏色值)pixval:交互顯示像素數(shù)據(jù)值

imshowcanoe.tifpixvalimpixel:返回被選中點或選中區(qū)域像素的數(shù)據(jù)值,用戶可在參數(shù)中提供像素坐標(biāo),也可通過鼠標(biāo)選取。

imshowcanoe.tifvals=impixel7.8圖像分析和增強(qiáng)7.8.1圖像的像素值及其統(tǒng)計2、圖像像素值剖面圖形improfile:沿著圖像中一條直線或折線段計算和繪制圖像像素值的圖形。C=improfileC=improfile(I,xi,yi)imshowpeppers.pngimprofile7.8圖像分析和增強(qiáng)7.8.1圖像的像素值及其統(tǒng)計3、圖像輪廓圖imcontour:顯示一幅灰度圖像的輪廓圖。I=imread('rice.png');imshow(I)figure,imcontour(I,3)7.8圖像分析和增強(qiáng)7.8.1圖像的像素值及其統(tǒng)計4、圖像直方圖imhist:顯示灰度圖像或索引圖像的灰度分布,創(chuàng)建圖形窗口繪制出每一灰度級對應(yīng)像素個數(shù)的柱狀圖。I=imread('rice.png');imshow(I)figure,imhist(I)7.8圖像分析和增強(qiáng)7.8.1圖像的像素值及其統(tǒng)計5、樣本統(tǒng)計量和有關(guān)區(qū)域?qū)傩缘囊恍┝繕?biāo)準(zhǔn)的圖像統(tǒng)計函數(shù):mean2std2corr2分別計算圖像矩陣元素的均值、標(biāo)準(zhǔn)差和兩個相同矩陣的相關(guān)系數(shù)。選定圖像區(qū)域

溫馨提示

  • 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

提交評論