MATLAB圖像處理界面設(shè)計(jì)_第1頁(yè)
MATLAB圖像處理界面設(shè)計(jì)_第2頁(yè)
MATLAB圖像處理界面設(shè)計(jì)_第3頁(yè)
MATLAB圖像處理界面設(shè)計(jì)_第4頁(yè)
MATLAB圖像處理界面設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩27頁(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)介

1、第1章 緒論21.1 課題研究目的及意義21.2 課題分析31.3 MATLAB基本知識(shí)介紹31.3.1 MATLAB的概述31.3.2 MATLAB主要功能31.3.3 MATLAB語(yǔ)言的特點(diǎn)41.3.4 MATLAB在圖像處理中的應(yīng)用52.1 設(shè)計(jì)思路62.2 整體界面6第3章 具體設(shè)計(jì)與功能的實(shí)現(xiàn)83.1 文件83.1.1 打開83.1.2 保存93.1.3 退出103.2 編輯103.2.1 圖片的縮放103.2.2 圖片的翻轉(zhuǎn)123.3 圖像143.3.1 灰度143.3.2 調(diào)整143.4 快捷操作173.4.1 還原173.4.2 旋轉(zhuǎn)183.4.3 裁剪193.4.4 撤銷19

2、3.5 噪聲203.6 濾除噪聲213.7 頻譜分析233.7.1 巴特沃斯低通濾波器233.7.2 高斯高通濾波器243.7.3 頻譜圖253.8 顏色模型轉(zhuǎn)換263.9 直方圖27結(jié)論30致謝31參考文獻(xiàn)32第1章 緒論1.1 課題研究目的及意義數(shù)字圖像處理(Digital Image Processing),就是利用數(shù)字計(jì)算機(jī)或者其他數(shù)字硬件,對(duì)從圖像信息轉(zhuǎn)換而得到的電信號(hào)進(jìn)行某些數(shù)學(xué)運(yùn)算,以提高圖像的實(shí)用性。例如從衛(wèi)星圖片中提取目標(biāo)物的特征參數(shù),三維立體斷層圖像的重建等??偟膩?lái)說(shuō),數(shù)字圖像處理包括點(diǎn)運(yùn)算、幾何處理、圖像增強(qiáng)、圖像復(fù)原、圖像形態(tài)學(xué)處理、圖像編碼、圖像重建、模式識(shí)別等。應(yīng)用

3、MATLAB友好的界面和豐富、實(shí)用、高效的指令及模塊,可以使人較快地認(rèn)識(shí)、理解圖像處理的相關(guān)概念,逐步掌握?qǐng)D像信號(hào)處理的基本方法,進(jìn)而能夠解決相關(guān)的工程和科研中的問(wèn)題。1.2 課題分析 數(shù)字圖像處理技術(shù)在各個(gè)行業(yè)得到廣泛的應(yīng)用。其交互式的圖形界面是操作者方便使用這些技術(shù)的途徑。本題目將編制一個(gè)簡(jiǎn)易的圖形界面讀取各種格式的原始圖像數(shù)據(jù),并對(duì)它們自動(dòng)分析和處理,得到所需要的有用信息,并把相關(guān)的信息顯示出來(lái),以便于工作人員研究分析。本文是基于MATLAB圖形用戶界面進(jìn)行數(shù)字圖像處理軟件包的設(shè)計(jì),詳細(xì)介紹了圖形用戶界面的功能及使用方法,所設(shè)計(jì)軟件包中包括圖像處理技術(shù)的多個(gè)方面,并用MATLAB的圖像處

4、理工具箱進(jìn)行了算法的實(shí)現(xiàn)。1.3 MATLAB基本知識(shí)介紹1.3.1 MATLAB的概述MATLAB 是MATrix LABoratory(“矩陣實(shí)驗(yàn)室”)的縮寫,是由美國(guó)MathWorks 公司開發(fā)的集數(shù)值計(jì)算、符號(hào)計(jì)算和圖形可視化三大基本功能于一體的,功能強(qiáng)大、操作簡(jiǎn)單的語(yǔ)言。是國(guó)際公認(rèn)的優(yōu)秀數(shù)學(xué)應(yīng)用軟件之一。MATLAB的基本數(shù)據(jù)單位是矩陣,它的指令表達(dá)式與數(shù)學(xué),工程中常用的形式十分相似,故用MATLAB來(lái)解算問(wèn)題要比用C,FORTRAN等語(yǔ)言完相同的事情簡(jiǎn)捷得多。MATLAB包括擁有數(shù)百個(gè)內(nèi)部函數(shù)的主包和三十幾種工具包(Toolbox).工具包又可以分為功能性工具包和學(xué)科工具包.功能工

5、具包用來(lái)擴(kuò)充MATLAB的符號(hào)計(jì)算,可視化建模仿真,文字處理及實(shí)時(shí)控制等功能.學(xué)科工具包是專業(yè)性比較強(qiáng)的工具包,控制工具包,信號(hào)處理工具包,通信工具包等都屬于此類.開放性使MATLAB廣受用戶歡迎.除內(nèi)部函數(shù)外,所有MATLAB主包文件和各種工具包都是可讀可修改的文件,用戶通過(guò)對(duì)源程序的修改或加入自己編寫程序構(gòu)造新的專用工具包.1.3.2 MATLAB主要功能它是一種用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計(jì)算的高級(jí)技術(shù)計(jì)算語(yǔ)言和交互式環(huán)境。使用它,可以較使用傳統(tǒng)的編程語(yǔ)言,如C、C+等,更快的解決技術(shù)計(jì)算問(wèn)題。高級(jí)語(yǔ)言可用于技術(shù)計(jì)算;開發(fā)環(huán)境可對(duì)代碼、文件和數(shù)據(jù)進(jìn)行管理;數(shù)學(xué)函數(shù)可用于線性

6、代數(shù)、統(tǒng)計(jì)、傅立葉分析、篩選、優(yōu)化以及數(shù)值積分等;二維和三維圖形函數(shù)可用于可視化數(shù)據(jù);各種工具可用于構(gòu)建自定義的圖形用戶界面;各種函數(shù)可將基于matlab的算法與外部應(yīng)用程序和語(yǔ)言;其應(yīng)用范圍非常廣,包括信號(hào)和圖像處理、通迅、控制系統(tǒng)設(shè)計(jì)、測(cè)試和測(cè)量等眾多應(yīng)用領(lǐng)域。1.3.3 MATLAB語(yǔ)言的特點(diǎn)一種語(yǔ)言之所以能如此迅速地普及,顯示出如此旺盛的生命力,是由于它有著不同于其他語(yǔ)言的特點(diǎn),正如同F(xiàn)ORTRAN和C等高級(jí)語(yǔ)言使人們擺脫了需要直接對(duì)計(jì)算機(jī)硬件資源進(jìn)行操作一樣,被稱作為第四代計(jì)算機(jī)語(yǔ)言的MATLAB,利用其豐富的函數(shù)資源,使編程人員從繁瑣的程序代碼中解放出來(lái)。MATLAB最突出的特點(diǎn)就

7、是簡(jiǎn)潔。MATLAB用更直觀的,符合人們思維習(xí)慣的代碼,代替了C和FORTRAN語(yǔ)言的冗長(zhǎng)代碼。MATLAB給用戶帶來(lái)的是最直觀,最簡(jiǎn)潔的程序開發(fā)環(huán)境。以下簡(jiǎn)單介紹一下MATLAB的主要特點(diǎn)。(1)語(yǔ)言簡(jiǎn)潔緊湊,使用方便靈活,庫(kù)函數(shù)極其豐富。MATLAB程序書寫形式自由,利用起豐富的庫(kù)函數(shù)避開繁雜的子程序編程任務(wù),壓縮了一切不必要的編程工作。由于庫(kù)函數(shù)都由本領(lǐng)域的專家編寫,用戶不必?fù)?dān)心函數(shù)的可靠性??梢哉f(shuō),用MATLAB進(jìn)行科技開發(fā)是站在專家的肩膀上。(2)運(yùn)算符豐富。由于MATLAB是用C語(yǔ)言編寫的,MATLAB提供了和C語(yǔ)言幾乎一樣多的運(yùn)算符,靈活使用MATLAB的運(yùn)算符將使程序變得極為簡(jiǎn)

8、短。 (3)MATLAB既具有結(jié)構(gòu)化的控制語(yǔ)句(如for循環(huán),while循環(huán),break語(yǔ)句和if語(yǔ)句),又有面向?qū)ο缶幊痰奶匦浴#?)程序限制不嚴(yán)格,程序設(shè)計(jì)自由度大。例如,在MATLAB里,用戶無(wú)需對(duì)矩陣預(yù)定義就可使用。(5)程序的可移植性很好,基本上不做修改就可以在各種型號(hào)的計(jì)算機(jī)和操作系統(tǒng)上運(yùn)行。(6)MATLAB的圖形功能強(qiáng)大。在FORTRAN和C語(yǔ)言里,繪圖都很不容易,但在MATLAB里,數(shù)據(jù)的可視化非常簡(jiǎn)單。MATLAB還具有較強(qiáng)的編輯圖形界面的能力。(7)MATLAB的缺點(diǎn)是,它和其他高級(jí)程序相比,程序的執(zhí)行速度較慢。由于MATLAB的程序不用編譯等預(yù)處理,也不生成可執(zhí)行文件,

9、程序?yàn)榻忉寛?zhí)行,所以速度較慢。(8)功能強(qiáng)大的工具箱是MATLAB的另一特色。MATLAB包含兩個(gè)部分:核心部分和各種可選的工具箱。核心部分中有數(shù)百個(gè)核心內(nèi)部函數(shù)。其工具箱又分為兩類:功能性工具箱和學(xué)科性工具箱。功能性工具箱主要用來(lái)擴(kuò)充其符號(hào)計(jì)算功能,圖示建模仿真功能,文字處理功能以及與硬件實(shí)時(shí)交互功能。功能性工具箱用于多種學(xué)科。而學(xué)科性工具箱是專業(yè)性比較強(qiáng)的,如control,toolbox, signl processing toolbox,commumnication toolbox等。這些工具箱都是由該領(lǐng)域內(nèi)學(xué)術(shù)水平很高的專家編寫的,所以用戶無(wú)需編寫自己學(xué)科范圍內(nèi)的基礎(chǔ)程序,而直接進(jìn)行

10、高、精、尖的研究。(9)源程序的開放性。開放性也許是MATLAB最受人們歡迎的特點(diǎn)。除內(nèi)部函數(shù)以外,所有MATLAB的核心文件和工具箱文件都是可讀可改的源文件,用戶可通過(guò)對(duì)源文件的修改以及加入自己的文件構(gòu)成新的工具箱。1.3.4 MATLAB在圖像處理中的應(yīng)用圖像處理工具包是由一系列支持圖像處理操作的函數(shù)組成的。所支持的圖像處理操作有:圖像的幾何操作、鄰域和區(qū)域操作、圖像變換、圖像恢復(fù)與增強(qiáng)、線性濾波和濾波器設(shè)計(jì)、變換(DCT變換等) 、圖像分析和統(tǒng)計(jì)、二值圖像操作等。下面就MATLAB 在圖像處理中各方面的應(yīng)用分別進(jìn)行介紹。 (1) 圖像文件格式的讀寫和顯示。MATLAB 提供了圖像文件讀入

11、函數(shù) imread(),用來(lái)讀取如:bmp、tif、tiffpcx 、jpg 、gpeg 、hdf、xwd等格式圖像文;圖像寫出函數(shù) imwrite() ,還有圖像顯示函數(shù) image()、imshow()等等。 (2) 圖像處理的基本運(yùn)算。MATLAB 提供了圖像的和、差等線性運(yùn)算 ,以及卷積、相關(guān)、濾波等非線性算。例如,conv2(I,J)實(shí)現(xiàn)了I,J兩幅圖像的卷積。(3) 圖像變換。MATLAB 提供了一維和二維離散傅立葉變換(DFT) 、快速傅立葉變換(FFT) 、離散余弦變換 (DCT) 及其反變換函數(shù),以及連續(xù)小波變換(CWT)、離散小波變換(DWT)及其反變換。(4) 圖像的分析

12、和增強(qiáng)。針對(duì)圖像的統(tǒng)計(jì)計(jì)算MATLAB 提供了校正、直方圖均衡、中值濾波、對(duì)比度調(diào)整、自適應(yīng)濾波等對(duì)圖像進(jìn)行的處理。(5) 圖像的數(shù)學(xué)形態(tài)學(xué)處理。針對(duì)二值圖像,MATLAB 提供了數(shù)學(xué)形態(tài)學(xué)運(yùn)算函數(shù);腐蝕(Erode)、膨脹(Dilate)算子,以及在此基礎(chǔ)上的開 (Open)、閉(Close)算子、厚化 (Thicken) 、薄化 (Thin) 算子等豐富的數(shù)學(xué)形態(tài)學(xué)運(yùn)算。以上所提到的 MATLAB在圖像中的應(yīng)用都是由相應(yīng)的MATLAB函數(shù)來(lái)實(shí)現(xiàn)的,使用時(shí),只需按照函數(shù)的調(diào)用語(yǔ)法正確輸入?yún)?shù)即可。具體的用法可參考MATLAB豐富的幫助文檔。圖像邊緣對(duì)圖像識(shí)別和計(jì)算機(jī)分析十分有用,在MATLA

13、B中,函數(shù) edge()用于灰度圖像邊緣的提取,它支持六種不同的邊緣提取方法,即Sobel方法、Prewitt 方法、Robert 方法,Laplacian2Gaussian方法、過(guò)零點(diǎn)方法和Canny方法。第2章 整體設(shè)計(jì)2.1 設(shè)計(jì)思路利用matlab的GUI程序設(shè)計(jì)一個(gè)簡(jiǎn)單實(shí)用的圖像處理程序。該程序應(yīng)具備圖像處理的常用功能,以滿足用戶的使用?,F(xiàn)設(shè)計(jì)程序有以下基本功能:1)圖像的讀取和保存。2)設(shè)計(jì)圖形用戶界面,讓用戶能夠?qū)D像進(jìn)行任意的亮度和對(duì)比度變化調(diào)整,顯示和對(duì)比變換前后的圖像。3)設(shè)計(jì)圖形用戶界面,讓用戶能夠用鼠標(biāo)選取圖像感興趣區(qū)域,顯示和保存該選擇區(qū)域。4)圖像直方圖統(tǒng)計(jì)和直方圖

14、均衡,要求顯示直方圖統(tǒng)計(jì),比較直方圖均衡后的效果。5)編寫程序通過(guò)最近鄰插值和雙線性插值等算法將用戶所選取的圖像區(qū)域進(jìn)行放大和縮小整數(shù)倍的操作,并保存。6)能對(duì)圖像加入各種噪聲,并通過(guò)幾種濾波算法實(shí)現(xiàn)去噪并顯示結(jié)果。2.2 整體界面圖2.2.1 總體設(shè)計(jì)界面布局圖2.2.2 菜單欄的設(shè)計(jì)圖2.2.3 功能切換選擇組顯示區(qū)域:左側(cè)顯示原圖,右側(cè)顯示操作的圖片操作區(qū)域:上方菜單欄:包括文件、編輯、圖像編輯等功能左側(cè)快捷操作:包含一些常用操作,還原、旋轉(zhuǎn)、裁剪、撤銷下方功能切換選擇組:包含一些圖片處理的常用操作,噪聲、濾除噪聲、頻譜分析等。 第3章 具體設(shè)計(jì)與功能的實(shí)現(xiàn)3.1 文件3.1.1 打開為

15、了讓使用者更方便的使用,所以在設(shè)計(jì)的時(shí)候,通過(guò)對(duì)話框的形式來(lái)選擇文件,選擇uigetfile函數(shù)來(lái)實(shí)現(xiàn),uigetfile函數(shù)顯示一個(gè)打開文件對(duì)話框,該對(duì)話框自動(dòng)列出當(dāng)前路徑下的目錄和文件,由于這個(gè)GUI程序的操作對(duì)象是圖像文件,所以設(shè)置這里的缺省后綴名為“.bmp”。Uigetfile函數(shù)的調(diào)用格式為name,path=yigetfile(), 在按下對(duì)話框中的執(zhí)行按鈕“打開”后,返回選擇的文件名和路徑,分別保存到“name”和“path”中。如果按下取消按鈕或是發(fā)生錯(cuò)誤,則返回值是0。 根據(jù)返回值的情況,如果是0,則彈出提示錯(cuò)誤的對(duì)話框,否則,通過(guò)imread函數(shù)讀出圖像數(shù)據(jù),把圖像數(shù)據(jù)賦

16、值給全局變量handles.img。程序如下所示:filename,pathname=uigetfile(*.jpg;*.bmp;*.tif;*.*,載入圖像);if isequal(filename,0)|isequal(pathname,0) errordlg(沒(méi)有選中文件,載入圖片失敗); return;else file=pathname,filename; global S %設(shè)置一個(gè)全局變量S,保存初始圖像路徑,以便之后的還原操作 S=file; x=imread(file); set(handles.axes1,HandleVisibility,ON); axes(handles

17、.axes1); imshow(x); set(handles.axes1,HandleVisibility,OFF); axes(handles.axes2); imshow(x); handles.img=x; guidata(hObject,handles);End (a) (b)圖3.1.1 (a)(b)載入新圖像3.1.2 保存同樣也通過(guò)對(duì)話框的形式來(lái)保存圖像數(shù)據(jù),通過(guò)uigetfile函數(shù)選擇文件名和路徑,用getimage(gca)取出坐標(biāo)2變換后的圖像數(shù)據(jù)保存到變量i,最后用imwrite函數(shù),把數(shù)據(jù)i存到指定的文件。程序如下所示:sfilename ,sfilepath=ui

18、putfile(*.jpg;*.bmp;*.tif;*.*,保存圖像文件,untitled.jpg); if isequal(sfilename,sfilepath,0,0) sfilefullname=sfilepath ,sfilename; imwrite(handles.img,sfilefullname); else msgbox(取消保存,保存失敗); End圖3.1.2 圖像的保存3.1.3 退出退出程序如下所示: close(gcf);3.2 編輯3.2.1 圖片的縮放圖3.2.1 編輯菜單下的縮放功能 在MATLAB中,用函數(shù)imresize來(lái)實(shí)現(xiàn)對(duì)圖像的放大或縮小。該函數(shù)的

19、調(diào)用格式如下: Bimresize(A,m,method) 其中:參數(shù)method用于指定插值的方法,可選的值為“nearest”(最近鄰法),“bilinear”(雙線性插值)、“bicubic”(雙三次插值),缺省值為“nearest”。 Bimresizee(Am,method)表示返回原圖A的m倍放大圖像(m小于1時(shí)實(shí)際上是縮小);圖3.2.2 輸入縮放倍數(shù)圖3.2.3 放大后的圖片圖3.2.5縮小后的圖片圖3.2.6 各文件的大小圖片上并不能夠看出放大縮小后圖片的明顯變化,從文件大小可以看到明顯差別,縮放的程序如下:% 最鄰近插值function Untitled_20_Callba

20、ck(hObject, eventdata, handles)global Taxes(handles.axes2);T=getimage;prompt=輸入縮放倍數(shù):;defans=2;p=inputdlg(prompt,input,1,defans);p1=str2num(p1);f=imresize(handles.img,p1,nearest); %用最鄰近插值法實(shí)現(xiàn)圖片的縮放 imshow(f);handles.img=f;guidata(hObject,handles);% 雙線性插值function Untitled_21_Callback(hObject, eventdata,

21、 handles)global Taxes(handles.axes2);T=getimage;prompt=輸入縮放倍數(shù):;defans=1;p=inputdlg(prompt,input,1,defans);p1=str2num(p1);f=imresize(handles.img,p1,bilinear); %用雙線性插值法實(shí)現(xiàn)圖片的縮小 imshow(f);handles.img=f;guidata(hObject,handles);3.2.2 圖片的翻轉(zhuǎn)圖3.2.1 編輯菜單下的翻轉(zhuǎn)功能 函數(shù)flipud是實(shí)現(xiàn)一個(gè)二維矩陣的上下翻轉(zhuǎn),如a=1 2;3 4,經(jīng)過(guò)該函數(shù)處理后,原矩陣變?yōu)?/p>

22、3 4;1 2;所以利用該函數(shù)也可以對(duì)圖像進(jìn)行上下翻轉(zhuǎn)處理。但由于該函數(shù)針對(duì)二維數(shù)據(jù)的處理,所以在翻轉(zhuǎn)前需要先對(duì)圖片進(jìn)行灰度處理。3.2.2.1 左右翻轉(zhuǎn)圖3.2.2.1.1 圖像的左右翻轉(zhuǎn)3.2.2.2 上下翻轉(zhuǎn)圖3.2.2.1.1 圖像的上下翻轉(zhuǎn)程序如下所示:% 左右翻轉(zhuǎn)function Untitled_14_Callback(hObject, eventdata, handles)global Taxes(handles.axes2);T=getimage;f=fliplr(handles.img);imshow(f);handles.img=f;guidata(hObject,han

23、dles);%上下翻轉(zhuǎn)function Untitled_15_Callback(hObject, eventdata, handles)global Taxes(handles.axes2);T=getimage;f=flipud(handles.img);imshow(f);handles.img=f;guidata(hObject,handles);3.3 圖像 圖像菜單包括灰度處理、亮度調(diào)整和對(duì)比度調(diào)整。圖3.3.1 圖像菜單 3.3.1 灰度 可利用rgb2gray(X)函數(shù)對(duì)其他圖像進(jìn)行灰度圖像的轉(zhuǎn)化。效果如下圖所示:圖3.3.1.1 圖片的灰度處理程序如下所示:function

24、Untitled_18_Callback(hObject, eventdata, handles)global Taxes(handles.axes2);T=getimage;x=rgb2gray(handles.img); %灰度處理imshow(x);handles.img=x;guidata(hObject,handles);3.3.2 調(diào)整3.3.2.1亮度 亮度的調(diào)整分為增強(qiáng)和減弱,函數(shù)調(diào)用格式分別為:f=immultiply(handles.img,p1); f=imdivide(handles.img,p1); 亮度增強(qiáng)操作:圖3.3.2.1.1輸入亮度增強(qiáng)倍數(shù)圖3.3.2.1.

25、1亮度增強(qiáng)效果亮度減弱操作:圖3.3.2.1.1輸入亮度減弱倍數(shù) 圖3.3.2.1.1亮度減弱效果 %亮度增強(qiáng)global Taxes(handles.axes2);T=getimage;prompt=增強(qiáng)倍數(shù);defans=1;p=inputdlg(prompt,input,1,defans);p1=str2num(p1);f=immultiply(handles.img,p1); imshow(f);handles.img=f;guidata(hObject,handles);% 亮度減弱function Untitled_23_Callback(hObject, eventdata, h

26、andles)global Taxes(handles.axes2);T=getimage;prompt=減弱倍數(shù);defans=1;p=inputdlg(prompt,input,1,defans);p1=str2num(p1);f=imdivide(handles.img,p1); imshow(f);handles.img=f;guidata(hObject,handles);3.3.2.2 對(duì)比度對(duì)比度調(diào)整的函數(shù)調(diào)用格式為:y=imadjust(handles.img, , ,p1);輸入的值大于一則增強(qiáng)對(duì)比度,小于一則減小對(duì)比度圖3.3.2.2.1 輸入調(diào)整倍數(shù)圖3.3.2.2.2

27、圖像對(duì)比度的增強(qiáng)和減弱(左一為原圖)其程序如下所示:%對(duì)比度的調(diào)整function Untitled_19_Callback(hObject, eventdata, handles)axes(handles.axes2);T=getimage;prompt=輸入倍數(shù);defans=1;p=inputdlg(prompt,input,1,defans);p1=str2num(p1);y=imadjust(handles.img, , ,p1);imshow(y);handles.img=y;guidata(hObject,handles);3.4 快捷操作 快捷操作欄在界面的左側(cè),包含還原、旋轉(zhuǎn)

28、、裁剪(截圖)和撤銷。3.4.1 還原%還原function pushbutton1_Callback(hObject, eventdata, handles)global Saxes(handles.axes2);y=imread(S);f=imshow(y);handles.img=y;guidata(hObject,handles); 圖3.4.1 快捷操作3.4.2 旋轉(zhuǎn) 用函數(shù)imrotate來(lái)實(shí)現(xiàn)對(duì)圖像的插值旋轉(zhuǎn)。 該函數(shù)的調(diào)用格式如下:Bimrotate(A,angle,method,crop) 其中,參數(shù)method用于指定插值的方法,可選的值可以有三種,分別為鄰近插值,雙線性

29、插值,雙三次插值,缺省時(shí)為鄰近插值,參數(shù)angle代表旋轉(zhuǎn)的角度。圖3.4.2.1 輸入旋轉(zhuǎn)角度圖3.4.2.2 將圖像旋轉(zhuǎn)30度程序如下所示:%用雙線性插值法進(jìn)行圖像的任意角度的旋轉(zhuǎn)function pushbutton3_Callback(hObject, eventdata, handles)global Taxes(handles.axes2);T=getimage;prompt=Angle:;defans=0;p=inputdlg(prompt,input,1,defans);p1=str2num(p1);f=imrotate(handles.img,p1,bilinear,crop

30、); %用雙線性插值法進(jìn)行旋轉(zhuǎn)imshow(f);handles.img=f;guidata(hObject,handles);3.4.3 裁剪在MATLAB中,用函數(shù)imcrop實(shí)現(xiàn)對(duì)圖像的剪切操作。該操作剪切的是圖像中的一個(gè)矩形子圖,用戶可以通過(guò)參數(shù)指定這個(gè)矩形四個(gè)頂點(diǎn)的坐標(biāo),也可以交互地用鼠標(biāo)選取這個(gè)矩形。Imcrop函數(shù)的調(diào)用格式如下: y=imcrop(handles.img);圖3.4.3.1 剪切后的圖像程序如下所示:%圖像的裁剪(截圖)function pushbutton2_Callback(hObject, eventdata, handles)global Taxes(h

31、andles.axes2);T=getimage;x=imcrop(handles.img); imshow(x);handles.img=x;guidata(hObject,handles);3.4.4 撤銷 撤銷上一步的操作。通過(guò)另設(shè)一個(gè)全局變量T保存是上一次操作后的圖像。實(shí)現(xiàn)程序如下所示:function pushbutton4_Callback(hObject, eventdata, handles)axes(handles.axes2);global Timshow(T); handles.img=T;guidata(hObject,handles); 該程序段只是簡(jiǎn)單的顯示圖像的功

32、能,其中全局變量T中儲(chǔ)存的是上一步操作處理后的圖像信息。在以上的各段功能程序段中可見均有 “T=getimage;”,此句把當(dāng)前操作前的圖像,即上一次操作后的圖像信息賦予全局變量T。3.5 噪聲 經(jīng)常用到的噪聲有三種,高斯噪聲,椒鹽噪聲,乘性噪聲,可以通過(guò)以下三個(gè)函數(shù)來(lái)實(shí)現(xiàn):y=imnoise(handles.img,gaussian,p1,p2);%高斯噪聲y=imnoise(x,salt & pepper,p1); %椒鹽噪聲y=imnoise(handles.img,speckle,p1); %乘性噪聲 圖3.5.1 噪聲疊加噪聲后的圖像如下圖所示: (a) (b)(c) (d)圖3.5

33、.2 三種噪聲的疊加效果(a)原圖(b)疊加椒鹽噪聲(c)疊加高斯噪聲(d)疊加乘性噪聲程序如下所示:function radiobutton1_Callback(hObject, eventdata, handles)axes(handles.axes2);x=(handles.img);y=imnoise(x,salt & pepper,0.04); %疊加0.04的椒鹽噪聲imshow(y);imwrite(y,salt.jpg);title(添加椒鹽噪聲)function radiobutton2_Callback(hObject, eventdata, handles)axes(ha

34、ndles.axes2);x=(handles.img);y=imnoise(x,gaussian,0,0.05); %疊加0.05的高斯噪聲imshow(y);imwrite(y,gaussian.jpg);title(添加高斯噪聲)function radiobutton3_Callback(hObject, eventdata, handles)axes(handles.axes2);x=(handles.img);y=imnoise(x,speckle,0.05); %疊加0.05的乘性噪聲imshow(y);imwrite(y,speckle.jpg);title(添加乘性噪聲)3.

35、6 濾除噪聲圖3.6.1噪聲的濾除這里選擇三種濾波方法,k=medfilt2(handles.noise_img);%中值濾波k=wiener2(handles.noise_img,5,5);%自適應(yīng)濾波k=filter2(fspecial(average,3),handles.noise_img)/255;%平滑濾波 此處以椒鹽噪聲的濾除為例:(a) (b)(c) (d) (e)圖3.6.2 三種噪聲的濾除方法(a)原圖(b)添加椒鹽噪聲(c)中值濾波(d)線性濾波(e)自適應(yīng)濾波程序如下所示:%中值濾波function radiobutton4_Callback(hObject, even

36、tdata, handles)axes(handles.axes2);k=medfilt2(handles.img);imshow(k);handles.img=k;guidata(hObject,handles);%線性濾波function radiobutton5_Callback(hObject, eventdata, handles)axes(handles.axes2);T=getimage;h=1 1 1;1 1 1;1 1 1;H=h/9;i=double(handles.img);k=convn(i,h);imshow(k,);handles.img=k;guidata(hOb

37、ject,handles);%自適應(yīng)濾波function radiobutton6_Callback(hObject, eventdata, handles)axes(handles.axes2);T=getimage;k=wiener2(handles.img,5,5);imshow(k);handles.img=k;guidata(hObject,handles);3.7 頻譜分析圖3.7.1 頻譜分析3.7.1 巴特沃斯低通濾波器經(jīng)過(guò)巴特沃斯低通濾波器處理后的圖像如下圖所示: 圖3.7.1.1 低通濾波器濾波后function radiobutton8_Callback(hObject,

38、 eventdata, handles)axes(handles.axes2);x=(handles.img);y1=imnoise(x,salt & pepper);f=double(y1); % 數(shù)據(jù)類型轉(zhuǎn)換 g=fft2(f); % 傅立葉變換g=fftshift(g); % 轉(zhuǎn)換數(shù)據(jù)矩陣M,N=size(g); nn=2; % 二階巴特沃斯低通濾波器d0=50; %截止頻率為50m=fix(M/2); n=fix(N/2);for i=1:M for j=1:N d=sqrt(i-m)2+(j-n)2); h=1/(1+0.414*(d/d0)(2*nn); %計(jì)算低通濾波器傳遞函數(shù)

39、result(i,j)=h*g(i,j); endendresult=ifftshift(result);y2=ifft2(result);y3=uint8(real(y2);imshow(y3); % 顯示濾波處理后的圖像imwrite(y3,butterdi.jpg);3.7.2 高斯高通濾波器經(jīng)過(guò)高斯高通濾波器處理后的圖像如下圖所示:圖3.7.2.1 高通濾波器濾波后function radiobutton9_Callback(hObject, eventdata, handles)axes(handles.axes2);x=(handles.img);y1=imnoise(x,gaus

40、sian);f=double(y1); % 數(shù)據(jù)類型轉(zhuǎn)換k=fft2(f); % 傅立葉變換g=fftshift(k); % 轉(zhuǎn)換數(shù)據(jù)矩陣M,N=size(g);nn=2;d0=25; %截止頻率為25m=fix(M/2); n=fix(N/2);for i=1:M for j=1:N d=sqrt(i-m)2+(j-n)2); % 計(jì)算高通濾波器傳遞函數(shù) if d=d0 h=0; else h=1; end result(i,j)=h*g(i,j); endendresult=ifftshift(result);y2=ifft2(result);y3=uint8(real(y2);imsho

41、w(y3);imwrite(y3,gaussiangao.jpg);3.7.3 頻譜圖為了得到圖像的頻譜圖,先要對(duì)數(shù)據(jù)進(jìn)行傅里葉變換,用fft2函數(shù)對(duì)二維數(shù)據(jù)進(jìn)行快速傅里葉變換,同時(shí)為了更好的觀察頻譜圖,需要把fft2變換后的數(shù)據(jù)進(jìn)行平移,利用fftshift函數(shù),把快速傅里葉變換的DC 組件移到光譜中心。這樣圖像能量的低頻成分將集中到頻譜中心,圖像上的邊緣、線條細(xì)節(jié)信息等高頻成分將分散在圖像頻譜的邊緣。如下圖所示:圖3.7.3.1 頻譜圖程序如下所示:function radiobutton11_Callback(hObject, eventdata, handles)axes(handle

42、s.axes2);x=(handles.img);J2=fft2(x); %傅立葉變換K2=fftshift(J2); %轉(zhuǎn)換數(shù)據(jù)矩陣imshow(log(abs(K2),); %顯示頻譜圖3.8 顏色模型轉(zhuǎn)換圖3.8.1 顏色模型轉(zhuǎn)換RGB顏色模型到HSV模型的轉(zhuǎn)換程序: axes(handles.axes2);x=(handles.img);if isrgb(x) HSV=rgb2hsv(x); imshow(HSV);else msgbox(灰度圖像,不能轉(zhuǎn)換,轉(zhuǎn)換失敗);end轉(zhuǎn)換后的結(jié)果為:圖3.8.2 RGB模式轉(zhuǎn)HSV模式轉(zhuǎn)化為ntsc和ycbcr模型,只要改為相應(yīng)的函數(shù)即可。函

43、數(shù)如下: rgb2ntsc(x); % rgb模型轉(zhuǎn)ntsc模型rgb2ycbcr(x); % rgb模型轉(zhuǎn)ycbcr模型圖3.8.3 RGB模式轉(zhuǎn)NTSC模式和YCBCR模式3.9 直方圖圖3.9.1 直方圖用imhist函數(shù)對(duì)圖像數(shù)據(jù)進(jìn)行直方圖統(tǒng)計(jì),其調(diào)用格式如下: x=imhist(handles.img(:,:,1); bar(horz,x); 其中,x矩陣的數(shù)據(jù)是0255灰度值的統(tǒng)計(jì)個(gè)數(shù),如果直接對(duì)x矩陣數(shù)據(jù)進(jìn)行圖形圖顯示,由于有256個(gè)數(shù)據(jù),在坐標(biāo)系中就會(huì)很密集,為了更清楚的顯示條形圖,所以在程序設(shè)計(jì)時(shí),把x數(shù)據(jù)進(jìn)行部分提取,x1=x(1:10:256);horz=1:10:256

44、;bar(horz,x1);除了顯示數(shù)據(jù)的直方圖統(tǒng)計(jì)外,還可以對(duì)圖像進(jìn)行均衡處理,所用到的函數(shù)是histeq,這兩個(gè)函數(shù)同樣只使用于二維數(shù)據(jù),所以也要先對(duì)二維圖像進(jìn)行灰度處理。圖3.9.2 直方圖均衡圖3.9.3 直方圖統(tǒng)計(jì)程序如下所示:%直方圖均衡function radiobutton15_Callback(hObject, eventdata, handles)global Taxes(handles.axes2);T=getimage;h=histeq(handles.img); imshow(h);handles.img=h;guidata(hObject,handles);% 直方圖統(tǒng)計(jì)function radiobutton16_Callback(hObject, eventdata, handles)axes(handles.axes2);x=imhist(handles.img); x1=x(1:10:256);horz=1:10:256;bar(horz,x1);axis(-10 255 0 15000);set(handles.axes2,xtick,0:50:255);set(handles.axes2,ytick,0:2000:15000); 結(jié)論通過(guò)本次課程設(shè)計(jì),使自己對(duì)MATLAB GUI設(shè)計(jì)流程有了比較深刻的體會(huì),同時(shí)也了解了一般軟

溫馨提示

  • 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)論