




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、基于MATLAB數(shù)字圖像處理平臺設(shè)計(jì)1 / 26摘 要數(shù)字圖像處理技術(shù)在各個(gè)行業(yè)得到廣泛的應(yīng)用,其交互式的圖形界面是操作者方便使用這些技術(shù)的途徑。本文主要介紹了基于MATLAB的圖形用戶界面(GUI)來設(shè)計(jì)一個(gè)簡單實(shí)用的圖像處理軟件平臺,其中具備圖像處理的常用功能,以滿足用戶的使用。文章詳細(xì)闡述了一下圖像處理軟件平臺的設(shè)計(jì)過程。本文的GUI設(shè)計(jì)所制作的圖像處理軟件平臺可以實(shí)現(xiàn)的功能有五個(gè)模塊:圖像變換、圖像增強(qiáng)、圖像分割、圖像變形以及其它常用處理。其中也講述了GUI的基本常用操作及文件的打開、保存及退出。文章基本介紹了以上的內(nèi)容,關(guān)于軟件還有許多未能實(shí)現(xiàn)的功能有待于日后的逐步開發(fā)和學(xué)習(xí)。關(guān)鍵詞
2、:GUI;圖像變換;圖像增強(qiáng);圖像分割;圖像變形;圖像處理ABSTRACTDigital image processing technology has been widely used in various industries, their interactive graphical interface is the way of the operator ease of use of these technologies.This article mainly introduced the graphical user interface (GUI) based on MATLAB to
3、 design a simple and practical platform for the image processing software, Which have commonly used image processing function, in order to meet the user's use. The article expounds the design process of the image processing software platform. This paper made the GUI design of image processing so
4、ftware platform can realize the function of five modules: image transformation, image enhancement, image segmentation, image distortion and other commonly used processing. The basic common operations of which also tells the story of GUI and file open, save, and exit. The content of the article intro
5、duces the above basic, about software and many fail to realize the function of the subject to the gradual development and learning in the future.Key words: GUI; Image transformation; Image enhancement; Image segmentation; Image deformation; The image processing目 錄1 緒論11.1設(shè)計(jì)要求及目的11.2 課題分析11.3 總體設(shè)計(jì)22
6、具體設(shè)計(jì)22.1 菜單設(shè)計(jì)22.2 圖像的打開、保存及退出32.2.1 圖像打開32.2.2 圖像保存42.2.3程序退出42.3 圖像變換42.3.1 傅里葉變換42.3.3 離散余弦變換52.4 圖像增強(qiáng)52.4.1 空間域增強(qiáng)52.4.2 頻率域增強(qiáng)62.5 圖像分割72.5.1 閾值分割82.5.2 梯度分割82.6 圖像變形92.6.1 翻轉(zhuǎn)92.6.2 旋轉(zhuǎn)102.7 其它常用處理102.7.1 亮度102.7.2 對比度112.7.3 截圖112.7.4 底片效果122.7.5 二值處理123 結(jié)果分析134 心得體會13附錄14基于MATLAB數(shù)字圖像處理平臺設(shè)計(jì)MATLAB是
7、近幾年來國內(nèi)外使用最為廣泛的優(yōu)秀科技軟件之一。其語法結(jié)構(gòu)簡單,具有極強(qiáng)的數(shù)值計(jì)算、數(shù)據(jù)分析、圖形繪制及圖像處理等功能。具有高質(zhì)量的圖形可視化效果和強(qiáng)大的界面設(shè)計(jì)能力。因而在數(shù)字圖像處理中有著其他語言所無法比擬的優(yōu)勢。圖形用戶界面(GUI)是提供人機(jī)交互的工具和方法。利用GUI制作圖像處理軟件能夠?qū)崿F(xiàn)圖像處理的各個(gè)內(nèi)容,主要有:圖像空間變換:鄰域和塊操作;二值圖像操作;線性濾波和濾波器設(shè)計(jì);變換域處理;圖像分析和增強(qiáng);圖像恢復(fù);圖像壓縮;形態(tài)學(xué)運(yùn)算等。1 緒論1.1設(shè)計(jì)要求及目的設(shè)計(jì)要求:以MATLAB作為工具,開發(fā)一個(gè)圖像處理軟件。主要進(jìn)行圖像處理的常用算法。由以下模塊組成:圖像變換;圖像增強(qiáng)
8、;圖像分割。按各個(gè)模塊進(jìn)行功能擴(kuò)充,也可加入其它常用的圖像處理功能。設(shè)計(jì)目的:MATLAB 軟件為數(shù)字圖像處理提供了功能豐富的工具,應(yīng)用MATLAB友好的界面和實(shí)用高效的指令及模塊,可以使人較快地認(rèn)識、理解圖像處理的相關(guān)概念,逐步掌握圖像處理的基本方法。此課題的設(shè)計(jì)目的是綜合運(yùn)用MATLAB工具箱實(shí)現(xiàn)圖像處理的GUI程序設(shè)計(jì),學(xué)會和掌握GUI的圖像處理平臺設(shè)計(jì)。1.2 課題分析圖1.1 整體功能框圖此課題利用MATLAB的GUI程序設(shè)計(jì)一個(gè)簡單實(shí)用的圖像處理程序。該程序具備圖像處理的常用功能,以滿足用戶的使用。程序?qū)崿F(xiàn)的圖像處理功能分為五個(gè)模塊:圖像變換、圖像增強(qiáng)、圖像分割、圖像變形
9、以及其它常用處理。如圖1.1所示。除以上的數(shù)字圖像處理的功能外,該程序還要實(shí)現(xiàn)圖像的讀取顯示、圖像的保存及退出等基本功能。從而實(shí)現(xiàn)完整的數(shù)字圖像平臺設(shè)計(jì),具有更好的交互性。1.3 總體設(shè)計(jì)圖1.2 界面布局軟件的總體設(shè)計(jì)界面主要分為兩個(gè)部分:顯示區(qū)域與操作區(qū)域。具體界面布局如圖1.2所示。顯示區(qū)域:定義兩個(gè)圖形區(qū)域,左面為待處理圖片來顯示載入的原圖像,右面為通過處理后的圖像。操作區(qū)域:通過菜單欄的編輯實(shí)現(xiàn)對圖像的各種處理,分為文件和編輯兩大部分。通過文件中的打開操作顯示出處理前的圖像,在編輯中選擇某個(gè)圖像處理功能后,將在已處理圖片下就會顯示出處理后的圖片。2 具體設(shè)計(jì)2.1 菜單設(shè)計(jì)通過Men
10、u Editor創(chuàng)建菜單欄如圖2.1所示。菜單的設(shè)計(jì)主要分為兩大部分:文件和編輯。文件包含圖像的打開、保存和退出;編輯包含圖像處理功能的五個(gè)模塊:圖像變換、圖像增強(qiáng)、圖像分割、圖像變形及其它常用處理,還有各個(gè)模塊的分支。通過此菜單來控制顯示或隱藏功能鍵。以圖2.1的傅里葉變換為例,當(dāng)添加上某一菜單后,修改名稱為傅里葉變換,句柄為FFT,從而會在M文件中自動生成傅里葉變換的功能函數(shù)function FFT_Callback(hObject, eventdata, handles),在此函數(shù)下編寫能夠?qū)崿F(xiàn)傅里葉變換的程序便能實(shí)現(xiàn)對圖像的傅里葉變換。圖2.1 菜單欄2.2 圖像的打開、保存及退出2.
11、2.1 圖像打開圖像的打開主要是通過以下程序來實(shí)現(xiàn)的:“filename,pathname=uigetfile('*.jpg''*.bmp''*.tif''*.*','載入圖像');” 選擇相應(yīng)路徑打開圖像;“file=pathname,filename; x=imread(file);”讀取選中的圖像;“imshow(x);”在顯示區(qū)域上顯示圖像。圖2.2 圖像的打開 具體操作如圖2.2所示,選擇“文件”菜單中的“打開”后,出現(xiàn)“載入圖像”,選中想要處理的圖片后點(diǎn)擊“打開”,即可在顯示區(qū)域中顯示出處理前的圖片。2
12、.2.2 圖像保存圖像的保存主要是通過以下程序來實(shí)現(xiàn)的:“sfilename,sfilepath=uiputfile('*.jpg''*.bmp''*.tif''*.*','保存圖像文件','untitled.jpg');” 選擇圖像文件保存的路徑與格式;“sfilefullname=sfilepath ,sfilename; imwrite(handles.img,sfilefullname);”實(shí)現(xiàn)對圖像的保存。圖2.3 圖像的保存具體操作如圖2.3所示,選擇“文件”菜單中的“保存”后,出現(xiàn)“保
13、存圖像文件”,修改文件名后點(diǎn)擊“保存”,即可將處理后的圖像保存到keshe的文件夾下。2.2.3程序退出程序的退出是通過“clc;”,“close all;”,“close(gcf);”,“clear;”這些指令來清除指令窗,窗口,內(nèi)存變量及函數(shù)。具體操為選擇“文件”菜單中的“退出”后,便關(guān)閉了執(zhí)行界面的窗口并清除了指令窗的所有指令。2.3 圖像變換2.3.1 傅里葉變換傅里葉變換(FFT)實(shí)際上是將信號f(t)與一組不同頻率的復(fù)正弦作內(nèi)積,這一組復(fù)正弦是變換的基向量,傅里葉系數(shù)或傅里葉變換是f(t)在這一組基向量上的投影。在圖像處理技術(shù)的發(fā)展過程中,F(xiàn)FT起著十分重要的作用。它是線性系統(tǒng)分析
14、的一個(gè)有力工具,它能夠定量地分析諸如數(shù)字圖像之類的數(shù)字化系統(tǒng)。FFT主要分為連續(xù)傅里葉變換和離散傅里葉變換,在數(shù)字圖像處理中經(jīng)常用到的是二維離散傅里葉變換。程序中主要是通過二維離散傅里葉變換函數(shù)fft2(),變換后四個(gè)角部分對應(yīng)于低頻成分,中央部分對應(yīng)于高頻成分。若想使低頻成分出現(xiàn)在中央位置,則通過函數(shù)fftshift()將圖像頻譜中心從矩陣的原點(diǎn)移到矩陣中心。從而實(shí)現(xiàn)圖像的二維傅里葉變換。具體程序見附錄。原圖像及傅里葉變換后的圖像如圖2.4所示。圖2.4 傅里葉變換2.3.3 離散余弦變換離散余弦變換(DFT)在圖像處理中占有重要的位置,它實(shí)際上是傅里葉變換的實(shí)數(shù)部分,但是它比傅里葉變換有更
15、強(qiáng)的信息集中能力。對于大多數(shù)自然圖像,DCT能將大多數(shù)的信息放到較少的系數(shù)上去,因此就更能提高編碼的效率。圖2.5 離散余弦變換程序中主要是通過灰度變換函數(shù)rgb2gray()及二維離散余弦變換函數(shù)dct2()來實(shí)現(xiàn)對圖像的二維離散余弦變換,具體程序見附錄。其變換后的圖像低頻能量都集中在左上角區(qū)域,而向著右下角方向,頻率越來越高。原圖像及離散余弦變換后的圖像如圖2.5所示。2.4 圖像增強(qiáng)圖像增強(qiáng)是圖像處理中的一類基本技術(shù),其主要的目的改善圖像的視覺效果,提高圖像的清晰度。圖像增強(qiáng)能夠擴(kuò)展對比度,增強(qiáng)圖像中對象的邊緣,消除或抑制噪聲或保留圖像中感興趣的某些特性而抑制另一些特性等。圖像增強(qiáng)方法按
16、其處理所進(jìn)行的空間不同,可分為空間域法和頻率域法。2.4.1 空間域增強(qiáng) 空間域法是在空間域內(nèi)直接對像素灰度值進(jìn)行運(yùn)算處理,常用的空間域法有圖像的直接灰度變換和直方圖均衡化,下面分別介紹兩種空域上的圖像增強(qiáng)方法。(1) 灰度變換通過灰度變換可使圖像動態(tài)范圍加大,圖像對比度擴(kuò)展,圖像清晰,特征明顯,大大改善人眼的視覺效果。圖2.6 灰度變換程序中主要通過灰度處理函數(shù)rgb2gray()對圖像進(jìn)行灰度變換,將彩色圖像轉(zhuǎn)換成灰度圖像。原圖像及灰度圖像如圖2.6所示。(2) 直方圖均衡化直方圖均衡化是對原始圖像中的像素灰度作某種映射變換,使變換后的圖像灰度的概率密度是均勻分布的,即變換后圖像是一幅灰度
17、級均勻分布圖像,這意味著圖像灰度的動態(tài)范圍得到了增加,從而可提高圖像的對比度。圖2.7 直方圖均衡化程序中主要通過灰度處理函數(shù)rgb2gray()先對圖像進(jìn)行灰度變換,然后通過直方圖均衡化處理函數(shù)histeq()對灰度圖像進(jìn)行直方圖均衡化處理。原圖像及直方圖均衡化后的圖像如圖2.7所示。2.4.2 頻率域增強(qiáng)頻率域法就是在圖像的某種變換域內(nèi),對圖像的變換值進(jìn)行運(yùn)算,然后通過逆變換獲得圖像增強(qiáng)效果。這是一種間接處理方法,一般采用二維數(shù)字濾波方法來進(jìn)行頻率域的圖像增強(qiáng)。(1) 低通濾波圖像的邊緣以及噪聲干擾在圖像的頻域上對應(yīng)于圖像傅里葉變換中的高頻部分,而圖像的背景區(qū)則對應(yīng)于低頻部分,因此可以用頻
18、域低通濾波法去除圖像的高頻成分,以去掉噪聲,使圖像平滑。圖2.8 低通濾波器程序中采用二階巴特沃斯低通濾波器,先用函數(shù)fft2()對圖像進(jìn)行二維離散傅里葉變換,然后通過低通濾波器進(jìn)行濾波后,再對濾波后的圖像數(shù)據(jù)通過ifft2()進(jìn)行傅里葉反變換,從而得到低通濾波后的圖像。如圖2.8所示。(2) 高通濾波圖像中的邊緣或線條與圖像頻譜中的高頻分量相對應(yīng),因此采用高通濾波器讓高頻分量順利通過,可以使圖像的邊緣或線條變得更清楚,可實(shí)現(xiàn)圖像的銳化。圖2.9 高通濾波器程序中采用二階巴特沃斯高通濾波器,與低通濾波過程相同,先進(jìn)行傅里葉變換,然后通過高通濾波器,再進(jìn)行傅里葉反變換,從而得到高通濾波后的圖像,
19、具體程序見附錄。原圖像及濾波后的圖像如圖2.9所示。2.5 圖像分割 圖像分割是一種重要的圖像分析技術(shù)。為了識別和分析圖像中的目標(biāo),需要將它們從圖像中分離提取出來,在此基礎(chǔ)上才有可能進(jìn)一步對目標(biāo)進(jìn)行測量和對圖像進(jìn)行利用。圖像分割就是指把圖像分成各具特性的區(qū)域并提取出感興趣目標(biāo)的技術(shù)和過程。2.5.1 閾值分割灰度閾值法是把圖像的灰度分成不同的等級,然后用設(shè)置灰度閾值的方法確定有意義的區(qū)域或欲分割物的邊界,該方法中最簡單的就是二值化的閾值分割。圖2.10 閾值分割程序中先通過函數(shù)graythresh()即用Otsu方法計(jì)算出全局圖像閾值,再通過函數(shù)im2bw( , )基于一定閾值將圖像轉(zhuǎn)換成二值
20、圖像。原圖像及閾值分割后的圖像如圖2.10所示。2.5.2 梯度分割 梯度分割即對圖像進(jìn)行邊緣檢測,圖像邊緣對圖像識別和計(jì)算機(jī)分析十分有用。邊緣能勾劃出目標(biāo)物體,使觀察者一目了然。邊緣蘊(yùn)含了豐富的內(nèi)在信息,是圖像識別中抽取圖像特征的重要屬性。(1) Roberts算子圖2.11 Roberts算子程序中先通過函數(shù)rgb2gray()對圖像進(jìn)行灰度變換,再通過函數(shù)edge( ,'roberts') 即用Roberts算子識別灰度圖像的輪廓,從而實(shí)現(xiàn)對圖像的邊緣檢測。如圖2.11所示。(2) Canny算子程序中先通過函數(shù)rgb2gray()對圖像進(jìn)行灰度變換,再通過函數(shù)edge(
21、 ,'canny') 即用Canny算子識別灰度圖像的輪廓,如圖2.12所示。(3) Sobel算子程序中先通過函數(shù)rgb2gray()進(jìn)行灰度變換,再通過函數(shù)edge( ,'sobel') 即用Sobel算子識別灰度圖像的輪廓,從而實(shí)現(xiàn)對圖像的邊緣檢測。如圖2.13所示。圖2.13 Sobel算子圖2.12 Canny算子2.6 圖像變形2.6.1 翻轉(zhuǎn)圖2.14 上下翻轉(zhuǎn)上下翻轉(zhuǎn):程序中通過函數(shù)flipud()對圖像數(shù)據(jù)矩陣進(jìn)行上下翻轉(zhuǎn),由于彩色圖像不能直接進(jìn)行矩陣翻轉(zhuǎn),因此需要先將彩色圖像通過灰度變換處理后再進(jìn)行翻轉(zhuǎn),原圖及翻轉(zhuǎn)后的圖像如圖2.14所示。圖
22、2.15 左右翻轉(zhuǎn)左右翻轉(zhuǎn):與上下翻轉(zhuǎn)相同,先將圖像進(jìn)行灰度變換后,通過函數(shù)fliplr()將圖像數(shù)據(jù)矩陣進(jìn)行左右翻轉(zhuǎn),原圖及翻轉(zhuǎn)后的圖像如圖2.15所示。2.6.2 旋轉(zhuǎn)打開圖片后,選擇“編輯”菜單“圖像變形”中的“旋轉(zhuǎn)”后,執(zhí)行界面會出現(xiàn)調(diào)整角度的輸入對話框,在對話框中輸入任意角度,則原圖像將會旋轉(zhuǎn)任意角度,輸入正數(shù)逆時(shí)針旋轉(zhuǎn),輸入負(fù)數(shù)順時(shí)針旋轉(zhuǎn)。以90為例,在對話框中輸入90,則圖像逆時(shí)針旋轉(zhuǎn)90。,如圖2.16所示。圖2.16 圖像旋轉(zhuǎn)在程序中由prompt='調(diào)整角度'來顯示輸入對話框,函數(shù)inputdlg()創(chuàng)建對話框和輸入框,輸入角度后通過函數(shù)imrotate()
23、進(jìn)行相應(yīng)的旋轉(zhuǎn)。2.7 其它常用處理2.7.1 亮度當(dāng)在“編輯”菜單中選擇“亮度”后,會出現(xiàn)調(diào)整倍數(shù)的輸入對話框,默認(rèn)值為1,在對話框中輸入數(shù)值后圖像便會相應(yīng)變換亮度。輸入數(shù)值小于1時(shí),圖像變亮,輸入數(shù)值大于1時(shí),圖像變暗。程序中通過函數(shù)imadjust()來實(shí)現(xiàn),即將原圖像的亮度值以輸入數(shù)值描述的曲線關(guān)系映射到新的數(shù)值中,從而實(shí)現(xiàn)亮度的變化。以輸入值0.5為例,變換后的圖像如圖2.17所示。圖2.17 亮度調(diào)整2.7.2 對比度圖2.18 對比度增強(qiáng)對比度增強(qiáng):選擇菜單中“對比度增強(qiáng)”后,彈出輸入?yún)?shù)的對話框,以輸入?yún)?shù)2為例,對比度增強(qiáng)后的圖像如圖2.18所示。程序中通過乘法函數(shù)immul
24、tiply()將原圖像數(shù)據(jù)與輸入數(shù)值相乘,從而增強(qiáng)圖像的對比度。圖2.19 對比度減弱對比度減弱:選擇菜單中“對比度減弱”后,彈出輸入?yún)?shù)的對話框,同樣以輸入?yún)?shù)2為例,對比度減弱后的圖像如圖2.19所示。程序中通過除法函數(shù)imdivide()將原圖像數(shù)據(jù)與輸入數(shù)值相除,從而減弱圖像的對比度。2.7.3 截圖圖2.20 截圖當(dāng)選擇完菜單中的“截圖”后,鼠標(biāo)箭頭會變成一個(gè)十字,能夠選擇想要截取的圖像部分,選中后就會直接顯示出截取后的圖像,如圖2.20所示。程序中通過函數(shù)imcrop()來實(shí)現(xiàn)的,即返回圖像的一個(gè)裁剪區(qū)域,允許用戶以交互方式使用鼠標(biāo)選定要剪切的區(qū)域。2.7.4 底片效果圖2.21
25、底片效果程序中通過函數(shù)imcomplement()對圖像數(shù)據(jù)矩陣進(jìn)行取反運(yùn)算,即可實(shí)現(xiàn)底片效果,原圖像及底片效果的圖像如圖2.21所示。2.7.5 二值處理圖2.22 二值處理二值化即將彩色圖像轉(zhuǎn)換成只有0和1兩個(gè)數(shù)值的圖像,程序中通過二值轉(zhuǎn)換函數(shù)im2bw()將彩色圖像轉(zhuǎn)換為二值圖像。原圖像及轉(zhuǎn)換后的二值圖像如圖2.22所示。3 結(jié)果分析經(jīng)過我們小組的不斷調(diào)試,軟件已經(jīng)得到了完善,達(dá)到了課設(shè)的基本要求,基于MATLAB數(shù)字圖像處理平臺設(shè)計(jì)能實(shí)現(xiàn)的全部功能如下:(1) 設(shè)計(jì)圖形用戶界面,實(shí)現(xiàn)了圖像的打開、保存及退出(2) 實(shí)現(xiàn)了對圖像的傅里葉變換及離散余弦變換,其中離散余弦變換只能對灰度圖像處
26、理。(3) 實(shí)現(xiàn)了圖像空間域增強(qiáng)包括灰度變換和直方圖均衡化,還有圖像頻率域增強(qiáng)包括低通濾波器和高通濾波器。其中直方圖均衡化,低通濾波和高通濾波均只支持對灰度圖像處理。(4) 實(shí)現(xiàn)了圖像分割:閾值分割和梯度分割,梯度分割有Roberts算子、Canny算子、Sobel算子。其中梯度分割需要對圖像先進(jìn)行灰度變換。(5) 實(shí)現(xiàn)了圖像的翻轉(zhuǎn)和旋轉(zhuǎn)。圖像的翻轉(zhuǎn)只支持灰度圖像。(6) 實(shí)現(xiàn)了圖像的亮度,對比度的調(diào)整,能夠?qū)D像截圖、做出底片效果及二值化處理。實(shí)驗(yàn)程序雖然基本實(shí)現(xiàn)了以上這些功能,但遺憾的是有些功能只支持對灰度的圖像處理,還不能直接對彩色圖像進(jìn)行處理。4 心得體會通過兩周的MATLAB課程設(shè)計(jì)
27、實(shí)踐,使我對MATLAB的使用有了進(jìn)一步的了解和熟悉。還記得當(dāng)初我們小組抽到這個(gè)題目的時(shí)候,每個(gè)人看到這個(gè)題目都無所適從。雖然曾經(jīng)學(xué)過關(guān)于數(shù)字圖像處理的課程,但對于MATLAB的數(shù)字圖像處理的實(shí)際運(yùn)用并不是很熟悉,特別是對此次GUI設(shè)計(jì)更是沒有絲毫接觸過的。雖然對課題感到很懵懂,但在指導(dǎo)老師的提示與指導(dǎo)后,我們開始找到了解決問題的路徑。我們到圖書館借了幾本相關(guān)的書,又從網(wǎng)上收集了大量的資料,為這次課設(shè)做了較為充分的準(zhǔn)備,在參考了相關(guān)材料及程序后,我對自己要做的課設(shè)內(nèi)容有了進(jìn)一步的了解,并對MATLAB的使用有了更深的體會。當(dāng)然,在課設(shè)的進(jìn)行過程中,我們還是遇到了不少問題。例如,起初由于我對句柄
28、使用以及一些函數(shù)使用的不恰當(dāng),使得在對圖像文件的保存上就遇到了問題,不過在我們小組的討論研究下輕松的就解決了。隨著課設(shè)的進(jìn)行,對matlab的的熟悉度逐步加深。在基本功能已經(jīng)完成的基礎(chǔ)上,我們開始進(jìn)行一些擴(kuò)張功能的嘗試,比如圖像的旋轉(zhuǎn)、翻轉(zhuǎn),圖像亮度、對比度的調(diào)整,截圖等功能,也實(shí)現(xiàn)了較為理想的結(jié)果。雖然這課題最終的功能還不是很完善,但是我還是較為滿意的。本次的課程設(shè)計(jì),不但鞭策著我去鞏固MATLAB的理論知識,還提高了我對MATLAB的實(shí)際操作運(yùn)用,使得理論與實(shí)踐相結(jié)合,為進(jìn)一步學(xué)MATLAB打下了堅(jiān)實(shí)的基礎(chǔ)。附錄function varargout = keshe(varargin)gui
29、_Singleton = 1;gui_State = struct('gui_Name', mfilename, . 'gui_Singleton', gui_Singleton, . 'gui_OpeningFcn', keshe_OpeningFcn, . 'gui_OutputFcn', keshe_OutputFcn, . 'gui_LayoutFcn', , . 'gui_Callback', );if nargin && ischar(varargin1) gui_Sta
30、te.gui_Callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);end% -function keshe_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;guidata(hObject, handles);% -function varargout = keshe_Out
31、putFcn(hObject, eventdata, handles) varargout1 = handles.output;% -function open_Callback(hObject, eventdata, handles)% hObject handle to open (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)filename,pathname=uig
32、etfile('*.jpg''*.bmp''*.tif''*.*','載入圖像'); %選擇路徑打開圖像if isequal(filename,0)|isequal(pathname,0) %若filename為0或pathname為0,即未選中文件 errordlg('未選中文件','警告'); %建立一個(gè)名為警告的錯(cuò)誤對話框,內(nèi)容為“未選中文件” return;else file=pathname,filename; %將文件名和目錄名組合成一個(gè)完整的路徑 x=imread(fi
33、le); %讀入圖像 set(handles.axes1,'HandleVisibility','ON'); %設(shè)置圖形對象屬性,可從命令窗口中和GUIs中訪問 axes(handles.axes1); %定義圖形區(qū)域axes1 imshow(x); %顯示圖像 set(handles.axes1,'HandleVisibility','OFF'); %設(shè)置圖形對象屬性,不可從命令窗口中和GUIs中訪問 axes(handles.axes2); %定義圖形區(qū)域axes2 imshow(x); %顯示圖像 handles.img=x
34、; %把圖像發(fā)給handles.img guidata(hObject,handles); %把handles句柄更新end% -function save_Callback(hObject, eventdata, handles)% hObject handle to save (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)sfilename ,sfilepath=ui
35、putfile('*.jpg''*.bmp''*.tif''*.*','保存圖像文件','untitled.jpg'); %返回要保存的圖像文件 if isequal(sfilename,sfilepath,0,0) %如果不是取消保存 sfilefullname=sfilepath ,sfilename; %將文件名和目錄名組合成一個(gè)完整的路徑 imwrite(handles.img,sfilefullname); %保存圖像 else msgbox('取消保存?','保存
36、圖像文件'); %彈出一個(gè)名為保存圖像文件的對話框,內(nèi)容為“取消保存?” end% -function exit_Callback(hObject, eventdata, handles)% hObject handle to exit (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)clc; %清除指令窗close all; %關(guān)閉所有句柄可見的窗口close(g
37、cf); %關(guān)閉當(dāng)前窗口clear; %清除內(nèi)存變量和函數(shù)% -function change_Callback(hObject, eventdata, handles)function enhance_Callback(hObject, eventdata, handles)function fenge_Callback(hObject, eventdata, handles)function file_Callback(hObject, eventdata, handles)function edit_Callback(hObject, eventdata, handles)functio
38、n fanzhuan_Callback(hObject, eventdata, handles)% -function FFT_Callback(hObject, eventdata, handles)% hObject handle to FFT (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)axes(handles.axes2);i1=handles.img; %獲取
39、圖像i2=im2double(i1); %圖像矩陣轉(zhuǎn)換成雙精度浮點(diǎn)類型f1=fft2(i2); %對圖像進(jìn)行二維離散傅里葉變換fc1=fftshift(f1); %將變換后的圖象頻譜中心從矩陣的原點(diǎn)移到矩陣的中心i=log(1+abs(fc1); %對變換后的圖像矩陣數(shù)據(jù)求絕對值后取自然對數(shù)imshow(i); xlabel('傅里葉變換圖像');handles.img=i;guidata(hObject,handles); %把handles句柄更新% -function DCT_Callback(hObject, eventdata, handles)% hObject h
40、andle to DCT (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)axes(handles.axes2);j1=handles.img; %獲取圖像j2=rgb2gray(j1); %灰度變換d=dct2(j2); %對圖像進(jìn)行二維離散余弦變換j=log(abs(d); %對變換后的圖像矩陣數(shù)據(jù)求絕對值后取自然對數(shù)imshow(j);xlabel('離散余弦
41、變換圖像');handles.img=j;guidata(hObject,handles); %把handles句柄更新% -function huidu_Callback(hObject, eventdata, handles)% hObject handle to huidu (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global T %定義全局變量axe
42、s(handles.axes2); %定義圖形區(qū)域axes2T=getimage; %從坐標(biāo)軸獲取圖像數(shù)據(jù)x=rgb2gray(handles.img); %利用 rgb2gray函數(shù)對源圖像進(jìn)行灰度處理 imshow(x); %顯示圖像xlabel('灰度圖像'); % x軸名為“灰度圖像”handles.img=x; %把圖像發(fā)給handles.imgguidata(hObject,handles); %把handles句柄更新% -function zhifangtu_Callback(hObject, eventdata, handles)% hObject handl
43、e to zhifangtu (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)axes(handles.axes2); %定義圖形區(qū)域axes2T=getimage; %從坐標(biāo)軸獲取圖像數(shù)據(jù)x=rgb2gray(handles.img); %對圖像進(jìn)行灰度處理h=histeq(x); %對圖像進(jìn)行直方圖均衡化處理 imshow(h); %顯示圖像xlabel('直方
44、圖均衡化后的圖像'); handles.img=h;guidata(hObject,handles); %把handles句柄更新% -function low_Callback(hObject, eventdata, handles)% hObject handle to low (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)axes(handles.axes2
45、);y1=handles.img; %獲取圖像x=rgb2gray(handles.img); %灰度變換f=double(x); %數(shù)據(jù)類型轉(zhuǎn)換為雙精度數(shù)值g=fft2(f); %二維離散傅里葉變換g=fftshift(g); %將變換后的圖象頻譜中心從矩陣的原點(diǎn)移到矩陣的中心M,N=size(g); %返回矩陣g的大小,即M為行數(shù),N為列數(shù)nn=2; %二階巴特沃斯低通濾波器d0=50; %截止頻率50Hzm=fix(M/2); n=fix(N/2); %取矩陣g的行數(shù)和列數(shù)一半的整數(shù)for i=1:M for j=1:N % 循環(huán) d=sqrt(i-m)2+(j-n)2); h=1/(1
46、+0.414*(d/d0)(2*nn); %計(jì)算低通濾波器傳遞函數(shù) result(i,j)=h*g(i,j); %結(jié)果返回到result endendresult=ifftshift(result); %將圖象頻譜中心從矩陣的中心移到矩陣的原點(diǎn)y2=ifft2(result); %二維離散傅里葉反變換y3=uint8(real(y2); %把矩陣y2實(shí)部轉(zhuǎn)換成8位無符號數(shù)據(jù)imshow(y3); %顯示低通濾波后的圖像xlabel('低通濾波圖像');handles.img=y3;guidata(hObject,handles); %把handles句柄更新% -functio
47、n high_Callback(hObject, eventdata, handles)% hObject handle to high (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)axes(handles.axes2);x=handles.img; %獲取圖像y=rgb2gray(handles.img); %灰度變換 f=double(y); %數(shù)據(jù)類型轉(zhuǎn)換為雙精度
48、數(shù)值k=fft2(f); %二維離散傅里葉變換g=fftshift(k); %將變換后的圖象頻譜中心從矩陣的原點(diǎn)移到矩陣的中心M,N=size(g); %返回矩陣g的大小,即M為行數(shù),N為列數(shù)nn=2; %二階d0=25; %截止頻率25Hzm=fix(M/2); n=fix(N/2);for i=1:M for j=1:N %循環(huán) d=sqrt(i-m)2+(j-n)2); if d<=d0 h=0; else h=1; end result(i,j)=h*g(i,j); %結(jié)果返回到result endendresult=ifftshift(result); %將圖象頻譜中心從矩陣的中心移到矩陣的原點(diǎn)y2=ifft2(result); %二維離散傅里葉反變換y3=uint8(real(y2); %把矩陣y2實(shí)部轉(zhuǎn)換成8位無符號數(shù)據(jù)imshow(y3); %顯示高通濾波后的圖像xlabel('高通濾波圖像');handles.img=y3;guidata(hObject,handles); %把handles句柄更新% -function yuzhi_Callback(hObject, eventdata, handles)% hObject handle
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電梯贈予合同7篇
- 小產(chǎn)權(quán)轉(zhuǎn)讓合同6篇
- 國際貿(mào)易之間合作合同
- 公司技術(shù)合作合同協(xié)議書
- 2025年中山貨運(yùn)資格證模擬考試題庫
- 2025年揚(yáng)州貨運(yùn)從業(yè)資格證模擬考試下載安裝
- 室內(nèi)裝修合同二5篇
- 的擔(dān)保借款合同7篇
- 觀看湖北消防119宣傳月節(jié)目心得感悟集合4篇
- 在民主生活會上的點(diǎn)評講話模板
- 新質(zhì)生產(chǎn)力與產(chǎn)品創(chuàng)新
- 能力素質(zhì)模型的正確打開方式(分享)
- 2024年河北省公務(wù)員錄用考試《行測》真題及答案解析
- 安保服務(wù)行業(yè)市場調(diào)研分析報(bào)告
- 吉林大學(xué)《微積分AⅠ》2021-2022學(xué)年第一學(xué)期期末試卷
- 現(xiàn)代家政導(dǎo)論-課件 6.1.1認(rèn)識道德與職業(yè)道德
- 《建筑工程施工許可管理辦法》2021年9月28日修訂
- 普通話培訓(xùn)教案1(共5篇)
- 大慶醫(yī)學(xué)高等??茖W(xué)校單招參考試題庫(含答案)
- 綿陽市三臺縣鄉(xiāng)鎮(zhèn)地圖矢量可編輯課件行政區(qū)劃邊界高清(四川省)
- 新疆城市綠地養(yǎng)護(hù)管理標(biāo)準(zhǔn)
評論
0/150
提交評論