應用MATLAB語言進行數(shù)字圖像處理_第1頁
應用MATLAB語言進行數(shù)字圖像處理_第2頁
應用MATLAB語言進行數(shù)字圖像處理_第3頁
應用MATLAB語言進行數(shù)字圖像處理_第4頁
應用MATLAB語言進行數(shù)字圖像處理_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、應用MATLAB語言進行數(shù)字圖像處理 一、前言 MATLAB是集數(shù)值計算,符號運算及圖形處理等強大功能于一體的科學計算語言。作為強大的科學計算平臺,它幾乎能夠滿足所有的計算需求。自MATLAB4.0問世以來,MATLAB語言就一直受到工程應用的各個領域的學者和工程師們的關注。2001年Mathworks公司又推出了強大的MATLAB升級版本MATLAB6.0,使其在符號運算和圖形處理功能上得到了進一步完善。除此之外,新版本的MATLAB還增強了它的各種應用工具箱,使MATLAB的應用面越來越廣,功能也越來越強大。因此MATLAB已成為最為普遍的計算工具之一。 MATLAB軟件具有很強的開放性和

2、適用性。在保持內(nèi)核不便的情況下,MATLAB可以針對不同的應用學科推出相應的工具箱(toolbox)。目前,MATLAB已經(jīng)把工具箱延伸到了科學研究和工程應用的諸多領域,諸如數(shù)據(jù)采集、概率統(tǒng)計、信號處理、圖像處理和物理仿真等,都在工具箱(Toolbox)家族中有自己的一席之地。此外,MATLAB還支持用戶用自己編寫的M文件(MATLAB的程序文件)組成自己的工具箱,極大的方便了用戶的使用和維護。本文想就MATLAB中提供的圖像處理工具箱(Image Processing Toolbox)的使用作一些實例方面的介紹。 二、MATLAB數(shù)字圖像處理 MATLAB全稱是Matrix Laborato

3、ry(矩陣實驗室),一開始它是一種專門用于矩陣數(shù)值計算的軟件,從這一點上也可以看出,它在矩陣運算上有自己獨特的特點。實際上MATLAB中的絕大多數(shù)的運算都是通過矩陣這一形式進行的。這一特點也就決定了MATLAB在處理數(shù)字圖像上的獨特優(yōu)勢。理論上講,圖像是一種二維的連續(xù)函數(shù),然而在計算機上對圖像進行數(shù)字處理的時候,首先必須對其在空間和亮度上進行數(shù)字化,這就是圖像的采樣和量化的過程。二維圖像進行均勻采樣,就可以得到一幅離散化成M×N樣本的數(shù)字圖像,該數(shù)字圖像是一個整數(shù)陣列,因而用矩陣來描述該數(shù)字圖像是最直觀最簡便的了。而MATLAB的長處就是處理矩陣運算,因此用MATLAB處理數(shù)字圖像非

4、常的方便。 MATLAB支持五種圖像類型,即索引圖像、灰度圖像、二值圖像、RGB圖像和多幀圖像陣列;支持BMP、GIF、HDF、JPEG、PCX、PNG、TIFF、XWD、CUR、ICO等圖像文件格式的讀,寫和顯示。MATLAB對圖像的處理功能主要集中在它的圖像處理工具箱(Image Processing Toolbox)中。圖像處理工具箱是由一系列支持圖像處理操作的函數(shù)組成,可以進行諸如幾何操作、線性濾波和濾波器設計、圖像變換、圖像分析與圖像增強、二值圖像操作以及形態(tài)學處理等圖像處理操作。下面用一些實例進行簡單說明: 1、圖像的讀取 MATLAB中從圖像文件中讀取數(shù)據(jù)用函數(shù)imread(),

5、這個函數(shù)的作用就是將圖像文件的數(shù)據(jù)讀入矩陣中,此外還可以用imfinfo()函數(shù)查看圖像文件的信息(見例1) %例1:圖像數(shù)據(jù)及圖像信息的讀取 imfinfo e:matlabworktuxiangGirl.bmp %讀取圖像信息 A,M=imread('e:matlabworktuxiangGirl.bmp','bmp');  %圖像數(shù)據(jù)的讀取,將圖像數(shù)據(jù)放入矩陣A中,顏色數(shù)據(jù)放入矩陣M中 imshow(A,M);title('原圖像'); M(:,1)=0;%將顏色數(shù)據(jù)矩陣的一列置零 figure imshow(A,M);title

6、('改變顏色后的圖像') 圖1 圖像數(shù)據(jù)的讀取  MATLAB還提供了將數(shù)據(jù)寫入一個文件的函數(shù)imwrite以及不同類型文件相互轉換的函數(shù),在此就不一一贅述了,可以參考MATLAB 的幫助文件。 2、灰度直方圖及直方圖均衡化 灰度直方圖用于顯示圖像的灰度值分布情況,是數(shù)字圖像處理中最簡單和最實用的工具。MATLAB中提供了專門繪制直方圖的函數(shù)imhist()。用它可以很簡單的繪制出一幅圖像的灰度直方圖(見例2)。 %例2:直方圖的顯示 imshow('e:matlabworktuxiangGirl.bmp');title('原圖像')

7、%顯示原圖像 A=imread('e:matlabworktuxiangGirl.bmp','bmp'); figure;imhist(A),title('對應直方圖') 圖2 直方圖的顯示  在圖像處理中,點運算是簡單而又重要的一種技術,其中最常用的一種應用就是直方圖的均衡化(見例3)。 %例3:直方圖均衡化 imshow('e:matlabworktuxiangGirl2.bmp');title('原圖像') I=imread('e:matlabworktuxiangGirl2.bmp'

8、;,'bmp'); figure;imhist(I),title('對應直方圖') %從得到的直方圖可以看出,圖像的對比度很低,灰度級集中在70-160范圍內(nèi),如果只取 %這個范圍內(nèi)的灰度,并擴展到0,255,則會明顯增強圖像對比度 J=imadjust(I,70/255 160/255,); figure;imshow(J),title('經(jīng)灰度級調(diào)整后的圖') figure;imhist(J),title('灰度級調(diào)整后的直方圖') %MATLAB還提供了histeq函數(shù)(自動直方圖均衡化) K=histeq(I); figu

9、re;imshow(K),title('經(jīng)直方圖均衡化后的圖') figure;imhist(K),title('直方圖均衡化后的直方圖') 圖3 直方圖均衡化  3、圖像的代數(shù)運算 代數(shù)運算是指對兩幅輸入圖像進行點對點的加、減、乘和除計算而得到輸出圖像的運算。對于相加和相乘的情形,可能不止有兩幅圖像參加運算。圖像相加的一個重要應用是對同一場景的多幅圖像求平均值。這點被經(jīng)常用來有效地降低加性(additive)隨機噪聲的影響(見例4) %例4:圖象加噪聲再通過多次相加求平均的方法祛除噪聲 I,M=imread('e:matlabworktuxi

10、angGirl.bmp','bmp'); J=imnoise(I,'salt & pepper',0.005); subplot(1,2,1),imshow(I,M),title('原圖象'); subplot(1,2,2),imshow(J,M),title('加噪聲后圖象'); K=zeros(128); for i=1:100 J=imnoise(I,'salt & pepper',0.005); J1=im2double(J); K=K+J1; end K=K/100; %求圖像的平

11、均 figure;imshow(K),title('相加求平均后的圖象'); 圖4 多次平均去噪聲  4、圖像濾波處理 在數(shù)字圖像處理中,常常會遇到圖像中混雜有許多的噪聲。因此,在進行圖像處理中,有時要先進行祛除噪聲的工作。最常用的祛除噪聲的方法是用濾波器進行濾波處理。MATLAB的圖像處理工具箱里也設計了許多的濾波器。如均值濾波器、中值濾波器、維納濾波器等。用戶可以很方便的運用一些函數(shù)完成數(shù)字濾波工作。(見例5)。 %例5:用濾波器祛除圖象噪聲(分別用均值濾波,中值濾波,及維納濾波器祛除加入高斯噪聲的圖象) I=imread('e:matlabworktux

12、iangGirl.bmp','bmp'); J=imnoise(I,'gaussian',0,0.002);%加入高斯噪聲 %進行均值濾波 h=fspecial('average',3); I2=uint8(round(filter2(h,I); %進行中值濾波 I3=medfilt2(J,3,3); %進行維納濾波 I4=wiener2(J,3,3); %進行一次維納濾波 I5=wiener2(I4,3,3);%進行二次維納濾波 subplot(2,3,1),imshow(I),title('原圖象') subplot(

13、2,3,2),imshow(J),title('加噪聲圖象') subplot(2,3,3),imshow(I2),title('均值濾波后圖象') subplot(2,3,4),imshow(I3),title('中值濾波后圖象') subplot(2,3,5),imshow(I4),title('維納濾波后圖象') subplot(2,3,6),imshow(I5),title('兩次維納濾波后圖象') 圖5 濾波器祛除圖像噪聲    5、傅立葉變換 傅立葉變換是線性系統(tǒng)分析的一個有力的工具

14、。它在圖像處理,特別是在圖像增強、復原和壓縮中,扮演著非常重要的作用。實際中一般采用一種叫做快速傅立葉變換(FFT)的方法,MATLAB中的fft2指令用于得到二維FFT的結果,ifft2指令用于得到二維FFT逆變換的結果。(見例6) %例6:近似沖擊函數(shù)的二維快速傅立葉變換(FFT) x=1:99;y=1:99; X,Y=meshgrid(x,y); A=zeros(99,99); A(49:51,49:51)=1; B=fft2(A); subplot(1,2,1),imshow(A),xlabel('空域圖象'); subplot(1,2,2),imshow(B),xla

15、bel('時域圖象'); figure subplot(1,2,1),mesh(X,Y,A),xlabel('空域'),grid on; subplot(1,2,2),mesh(X,Y,abs(B),xlabel('時域'),grid on; 圖6 近似沖擊函數(shù)的傅立葉變換      6、圖像壓縮 在圖像的變換和壓縮中,常常用到離散余弦變換(DCT)。DCT具有能使圖像的最重要的信息集中在DCT的幾個系數(shù)上的性能。正是基于此,DCT通常應用于圖像的壓縮。(見例7) %例7:DCT變換用于圖象的壓縮實例 I=imrea

16、d('e:matlabworktuxiangGirl.bmp','bmp'); I=im2double(I); T=dctmtx(8); B=blkproc(I,8,8,'P1*x*P2',T,T'); mask=1,1,1,1,0,0,0,0 1,1,1,0,0,0,0,0 1,1,0,0,0,0,0,0 1,0,0,0,0,0,0,0 0,0,0,0,0,0,0,0 0,0,0,0,0,0,0,0 0,0,0,0,0,0,0,0 0,0,0,0,0,0,0,0 B2=blkproc(B,8,8,'P1.*x',mask); I2=blkproc(B2,8,8,'P1*x*P2',T',T); imshow(I),title('原圖象'); figure,imshow(I2),title('變換后的圖象'); 圖7 DCT變換用于圖像壓縮  可以看出,盡管由于85%的DCT系數(shù)被拋棄而使恢復后的圖像質(zhì)量有所降低,圖像內(nèi)容仍能清晰可辨,達到了圖像壓縮的目的。 三、結語 當然,MATLA

溫馨提示

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

評論

0/150

提交評論