

下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、封面作者: PanHongliang僅供個(gè)人學(xué)習(xí)基于MATLAB數(shù)字圖像處理平臺(tái)設(shè)計(jì)摘要數(shù)字圖像處理技術(shù)在各個(gè)行業(yè)得到廣泛的應(yīng)用, 其交互式的圖形界面是操作者方便 使用這些技術(shù)的途徑。本文主要介紹了基于 MATLAB 的圖形用戶界面( GUI )來設(shè)計(jì) 一個(gè)簡單實(shí)用的圖像處理軟件平臺(tái),其中具備圖像處理的常用功能,以滿足用戶的使 用。文章詳細(xì)闡述了一下圖像處理軟件平臺(tái)的設(shè)計(jì)過程。本文的 GUI 設(shè)計(jì)所制作的圖 像處理軟件平臺(tái)可以實(shí)現(xiàn)的功能有五個(gè)模塊:圖像變換、圖像增強(qiáng)、圖像分割、圖像變 形以及其它常用處理。其中也講述了 GUI 的基本常用操作及文件的打開、保存及退 出。文章基本介紹了以上的內(nèi)容,
2、關(guān)于軟件還有許多未能實(shí)現(xiàn)的功能有待于日后的逐步 開發(fā)和學(xué)習(xí)。關(guān)鍵詞: GUI ;圖像變換;圖像增強(qiáng);圖像分割;圖像變形;圖像處理ABSTRACTDigital image processing technology has been widely used in various industries, theirinteractive graphical interface is the way of the operator ease of use of these technologies.Thisarticle mainly introduced the graphical user i
3、nterface (GUI) based on MATLAB to design a simpleand practical platform for the image processing software, Which have commonly used imageprocessing function, in order to meet the users use. The article expounds the design process ofthe image processing software platform. This paper made the GUI desi
4、gn of image processingsoftware platform can realize the function of five modules: image transformation, imageenhancement, image segmentation, image distortion and other commonly used processing. Thebasic common operations of which also tells the story of GUI and file open, save, and exit. Thecontent
5、 of the article introduces the above basic, about software and many fail to realize thefunction of the subject to the gradual development and learning in the future.KeyKey words:words:GUI。 Image transformation。 Image enhancemen。 Image segmentatior。Image deformation。 The image processing目錄1 1 緒論11.1
6、設(shè)計(jì)要求及目的 11.2 課題分析 11.3 總體設(shè)計(jì) 22 2 具體設(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) 62.4.2 頻率域增強(qiáng) 72.5 圖像分割 82.5.1 閾值分割 82.5.2 梯度分割 82.6 圖像變形 102.6.1 翻轉(zhuǎn) 102.6.2 旋轉(zhuǎn) 112.7 其它常用處理 112.7.1 亮度 112.7.2 對(duì)比度 122.7.3 截圖 132.7.4 底片效果 1
7、32.7.5 二值處理 133 3 結(jié)果分析144 4 心得體會(huì)14附錄15基于 MATLAB 數(shù)字圖像處理平臺(tái)設(shè)計(jì)MATLAB 是近幾年來國內(nèi)外使用最為廣泛的優(yōu)秀科技軟件之一。其語法結(jié)構(gòu)簡單, 具有極強(qiáng)的數(shù)值計(jì)算、數(shù)據(jù)分析、圖形繪制及圖像處理等功能。具有高質(zhì)量的圖形可視 化效果和強(qiáng)大的界面設(shè)計(jì)能力。 因而在數(shù)字圖像處理中有著其他語言所無法比擬的優(yōu) 勢(shì)。 圖形用戶界面 (GUI )是提供人機(jī)交互的工具和方法。利用GUI 制作圖像處理軟件能夠?qū)崿F(xiàn)圖像處理的各個(gè)內(nèi)容,主要有:圖像空間變換:鄰域和塊操作;二值圖像操 作;線性濾波和濾波器設(shè)計(jì);變換域處理;圖像分析和增強(qiáng);圖像恢復(fù);圖像壓縮;形 態(tài)學(xué)運(yùn)
8、算等。1 緒論1.1 設(shè)計(jì)要求及目的設(shè)計(jì)要求:以 MATLAB 作為工具,開發(fā)一個(gè)圖像處理軟件。主要進(jìn)行圖像處理的常 用算法。由以下模塊組成:圖像變換;圖像增強(qiáng);圖像分割。按各個(gè)模塊進(jìn)行功能擴(kuò) 充,也可加入其它常用的圖像處理功能。設(shè)計(jì)目的:MATLAB 軟件為數(shù)字圖像處理提供了功能豐富的工具,應(yīng)用MATLAB 友好的界面和實(shí)用高效的指令及模塊,可以使人較快地認(rèn)識(shí)、理解圖像處理的相關(guān)概念, 逐步掌握?qǐng)D像處理的基本方法。此課題的設(shè)計(jì)目的是綜合運(yùn)用MATLAB 工具箱實(shí)現(xiàn)圖像處理的 GUI 程序設(shè)計(jì),學(xué)會(huì)和掌握 GUI 的圖像處理平臺(tái)設(shè)計(jì)。1.2 課題分析此課題利用 MATLAB 的 GUI 程序設(shè)
9、計(jì)一個(gè)簡單實(shí)用的圖像處理程序。該程序具備圖 1.1 整體功能框圖圖像處理的常用功能,以滿足用戶的使用。程序?qū)崿F(xiàn)的圖像處理功能分為 五個(gè)模塊:圖像變換、圖像增強(qiáng)、圖像分割、圖像變形以及其它常用處理。如 圖 1.1 所示。除以上的數(shù)字圖像處理的功能外,該程序還要實(shí)現(xiàn)圖像的讀取顯示、圖像 的保存及退出等基本功能。從而實(shí)現(xiàn)完整的數(shù)字圖像平臺(tái)設(shè)計(jì),具有更好的交 互性。1.3 總體設(shè)計(jì)軟件的總體設(shè)計(jì)界面主要分為兩個(gè)部分:顯示區(qū)域與操作區(qū)域。具體界面 布局如圖 1.2所示。圖 1.2 界面布局顯示區(qū)域:定義兩個(gè)圖形區(qū)域,左面為待處理圖片來顯示載入的原圖像,右面為通過處理后的圖像。操作區(qū)域:通過菜單欄的編輯實(shí)
10、現(xiàn)對(duì)圖像的各種處理,分為文件和編輯兩 大部分。通過文件中的打開操作顯示出處理前的圖像,在編輯中選擇某個(gè)圖像 處理功能后,將在已處理圖片下就會(huì)顯示出處理后的圖片。2 具體設(shè)計(jì)2.1 菜單設(shè)計(jì)通過 Menu Editor 創(chuàng)建菜單欄如圖 2.1 所示。菜單的設(shè)計(jì)主要分為兩大部 分:文件和編輯。文件包含圖像的打開、保存和退出;編輯包含圖像處理功能 的五個(gè)模塊:圖像變換、圖像增強(qiáng)、圖像分割、圖像變形及其它常用處理,還 有各個(gè)模塊的分支。通過此菜單來控制顯示或隱藏功能鍵。以圖 2.1 的傅里葉變換為例,當(dāng)添加上某一菜單后,修改名稱為傅里葉變換,句柄為 FFT,從而會(huì)在 M 文件中自動(dòng)生成傅里葉變換的功能
11、函數(shù)functionFFT_Callback(hObject, eventdata, handles)在此函數(shù)下編寫能夠?qū)崿F(xiàn)傅里葉變換 的程序便能實(shí)現(xiàn)對(duì)圖像的傅里葉變換。圖 2.1 菜單欄2.2 圖像的打開、保存及退出2.2.12.2.1 圖像打開圖像的打開主要是通過以下程序來實(shí)現(xiàn)的:“filename,pathname=uigetfile(*jpg。*.bmp。*tif。*.*,載入圖像)。” 選擇相應(yīng)路徑打開圖像;file=pathname,filename。x=imread(file)。”讀取選中的圖像;imshow(x)。”在顯示區(qū)域上顯示圖像。具體操作如圖 2.2 所示,選擇 文件”
12、菜單中的 打開”后,出現(xiàn) 載入圖像”,選中圖 2.2 圖像的打開想要處理的圖片后點(diǎn)擊打開”即可在顯示區(qū)域中顯示出處理前的圖片。222222 圖像保存圖像的保存主要是通過以下程序來實(shí)現(xiàn)的:“sfilenamsfilepath=uiputfile(*jpg。 *bmp。 *tif。 *,保存圖像文件 ,untitled.jpg)。 ”選擇圖像文件保存的路徑與格式;Sfilefullname=sfilepath ,sfilename。imwrite(handles.img,sfilefullname)?!睂?shí) 現(xiàn)對(duì)圖像的保存。具體操作如圖 2.3 所示,選擇 文件”菜單中的 保存”后,出現(xiàn) 保存圖像文
13、 件”修改文件名后點(diǎn)擊保存”即可將處理后的圖像保存到keshe 的文件夾圖 2.3 圖像的保存下。2.2.32.2.3 程序退出程序的退出是通過“cl?!?“closeall?!?Close(gcf)?!?Clear?!边@些指令來清除指令窗,窗口,內(nèi)存變量及函數(shù)。具體操為選擇 文件”菜單中的 退出”后,便關(guān)閉了執(zhí)行界面的窗口并清除 了指令窗的所有指令。2.3 圖像變換2.3.12.3.1 傅里葉變換傅里葉變換(FFT)實(shí)際上是將信號(hào) f(t)與一組不同頻率的復(fù)正弦作內(nèi)積,這 一組復(fù)正弦是變換的基向量,傅里葉系數(shù)或傅里葉變換是f(t)在這一組基向量上的投影。在圖像處理技術(shù)的發(fā)展過程中,F(xiàn)FT 起
14、著十分重要的作用。它是線性系統(tǒng)分析的一個(gè)有力工具,它能夠定量地分析諸如數(shù)字圖像之類的數(shù)字化系 統(tǒng)。FFT 主要分為連續(xù)傅里葉變換和離散傅里葉變換,在數(shù)字圖像處理中經(jīng)常 用到的是二維離散傅里葉變換。程序中主要是通過二維離散傅里葉變換函數(shù)fft2(),變換后四個(gè)角部分對(duì)應(yīng)于低頻成分, 中央部分對(duì)應(yīng)于高頻成分。 若想使低頻成分出現(xiàn)在中央位置, 則 通過函數(shù) fftshift()將圖像頻譜中心從矩陣的原點(diǎn)移到矩陣中心。從而實(shí)現(xiàn)圖像 的二維傅里葉變換。具體程序見附錄。原圖像及傅里葉變換后的圖像如圖2.4所示。圖 2.4 傅里葉變換2.3.32.3.3 離散余弦變換離散余弦變換(DFT)在圖像處理中占有重
15、要的位置,它實(shí)際上是傅里葉變換 的實(shí)數(shù)部分,但是它比傅里葉變換有更強(qiáng)的信息集中能力。對(duì)于大多數(shù)自然圖 像,DCT 能將大多數(shù)的信息放到較少的系數(shù)上去,因此就更能提高編碼的效 率。程序中主要是通過灰度變換函數(shù)rgb2gray()及二維離散余弦變換函數(shù)dct2()來實(shí)現(xiàn)對(duì)圖像的二維離散余弦變換,具體程序見附錄。其變換后的圖像低頻能量都集中在左上角區(qū)域,而向著右下角方向,頻率越來越高。原圖像及離散余圖 2.5 離散余弦變換弦變換后的圖像如圖 2.5 所示。2.4 圖像增強(qiáng)圖像增強(qiáng)是圖像處理中的一類基本技術(shù),其主要的目的改善圖像的視覺效 果,提高圖像的清晰度。圖像增強(qiáng)能夠擴(kuò)展對(duì)比度,增強(qiáng)圖像中對(duì)象的邊
16、緣, 消除或抑制噪聲或保留圖像中感興趣的某些特性而抑制另一些特性等。圖像增 強(qiáng)方法按其處理所進(jìn)行的空間不同,可分為空間域法和頻率域法。2.4.12.4.1 空間域增強(qiáng)空間域法是在空間域內(nèi)直接對(duì)像素灰度值進(jìn)行運(yùn)算處理,常用的空間域法有圖 像的直接灰度變換和直方圖均衡化,下面分別介紹兩種空域上的圖像增強(qiáng)方 法。(1)灰度變換通過灰度變換可使圖像動(dòng)態(tài)范圍加大,圖像對(duì)比度擴(kuò)展,圖像清晰,特征 明顯,大大改善人眼的視覺效果。程序中主要通過灰度處理函數(shù) rgb2gray ()對(duì)圖像進(jìn)行灰度變換,將彩色圖像 轉(zhuǎn)換成灰度圖像。原圖像及灰度圖像如圖 2.6 所示。圖 2.6 灰度變換(2)直方圖均衡化直方圖均衡
17、化是對(duì)原始圖像中的像素灰度作某種映射變換,使變換后的圖 像灰度的概率密度是均勻分布的,即變換后圖像是一幅灰度級(jí)均勻分布圖像, 這意味著圖像灰度的動(dòng)態(tài)范圍得到了增加,從而可提高圖像的對(duì)比度。程序中主要通過灰度處理函數(shù) rgb2gray ()先對(duì)圖像進(jìn)行灰度變換,然后通過 直方圖均衡化處理函數(shù) histeq ()對(duì)灰度圖像進(jìn)行直方圖均衡化處理。原圖像及直 方圖均衡化后的圖像如圖 2.7 所示。圖 2.7 直方圖均衡化2.4.22.4.2 頻率域增強(qiáng)頻率域法就是在圖像的某種變換域內(nèi),對(duì)圖像的變換值進(jìn)行運(yùn)算,然后通 過逆變換獲得圖像增強(qiáng)效果。這是一種間接處理方法,一般采用二維數(shù)字濾波 方法來進(jìn)行頻率域
18、的圖像增強(qiáng)。(1)低通濾波圖像的邊緣以及噪聲干擾在圖像的頻域上對(duì)應(yīng)于圖像傅里葉變換中的高頻 部分, 而圖像的背景區(qū)則對(duì)應(yīng)于低頻部分, 因此可以用頻域低通濾波法去除圖 像的高頻成分, 以去掉噪聲,使圖像平滑。程序中采用二階巴特沃斯低通濾波器,先用函數(shù)fft2()對(duì)圖像進(jìn)行二維離散傅里葉變換,然后通過低通濾波器進(jìn)行濾波后,再對(duì)濾波后的圖像數(shù)據(jù)通過 ifft2()進(jìn)行傅里葉反變換,從而得到低通濾波后的圖像。如圖2.8 所示。圖 2.8 低通濾波器(2)高通濾波圖像中的邊緣或線條與圖像頻譜中的高頻分量相對(duì)應(yīng), 因此采用高通濾波 器讓高頻分量順利通過,可以使圖像的邊緣或線條變得更清楚,可實(shí)現(xiàn)圖像的 銳化
19、。程序中采用二階巴特沃斯高通濾波器,與低通濾波過程相同,先進(jìn)行傅里 葉變換,然后通過高通濾波器,再進(jìn)行傅里葉反變換,從而得到高通濾波后的 圖像,具體程序見附錄。原圖像及濾波后的圖像如圖 2.9 所示。圖 2.9 高通濾波器2.5 圖像分割圖像分割是一種重要的圖像分析技術(shù)。為了識(shí)別和分析圖像中的目標(biāo),需要將 它們從圖像中分離提取出來,在此基礎(chǔ)上才有可能進(jìn)一步對(duì)目標(biāo)進(jìn)行測量和對(duì) 圖像進(jìn)行利用。圖像分割就是指把圖像分成各具特性的區(qū)域并提取出感興趣目 標(biāo)的技術(shù)和過程。2.5.12.5.1 閾值分割灰度閾值法是把圖像的灰度分成不同的等級(jí),然后用設(shè)置灰度閾值的方法 確定有意義的區(qū)域或欲分割物的邊界,該方法
20、中最簡單的就是二值化的閾值分 割。程序中先通過函數(shù) graythresh()即用 Otsu 方法計(jì)算出全局圖像閾值,再通過 函數(shù)im2bw(,)基于一定閾值將圖像轉(zhuǎn)換成二值圖像。原圖像及閾值分割后的圖 像如圖 2.10 所示。圖 2.10 閾值分割2.5.22.5.2 梯度分割梯度分割即對(duì)圖像進(jìn)行邊緣檢測,圖像邊緣對(duì)圖像識(shí)別和計(jì)算機(jī)分析十分有 用。邊緣能勾劃出目標(biāo)物體,使觀察者一目了然。邊緣蘊(yùn)含了豐富的內(nèi)在信 息,是圖像識(shí)別中抽取圖像特征的重要屬性。(1) Roberts 算子程序中先通過函數(shù) rgb2gray()對(duì)圖像進(jìn)行灰度變換,再通過函數(shù) edge( ,roberts)即用Roberts
21、 算子識(shí)別灰度圖像的輪廓,從而實(shí)現(xiàn)對(duì)圖像的邊緣圖 2.11 Roberts 算子檢測。如圖 2.11 所示。(2) Canny 算子程序中先通過函數(shù) rgb2gray()對(duì)圖像進(jìn)行灰度變換,再通過函數(shù) edge( ,canny)即用Canny 算子識(shí)別灰度圖像的輪廓,如圖2.12 所示。(3) Sobel 算子程序中先通過函數(shù) rgb2gray()進(jìn)行灰度變換,再通過函數(shù) edge( ,sobel)即用Sobel 算子識(shí)別灰度圖像的輪廓,從而實(shí)現(xiàn)對(duì)圖像的邊緣檢測。如圖2.13 所示。圖 2.12 Canny 算子圖 2.13 Sobel 算子2.6 圖像變形2.6.12.6.1 翻轉(zhuǎn)上下翻轉(zhuǎn):
22、程序中通過函數(shù)flipud()對(duì)圖像數(shù)據(jù)矩陣進(jìn)行上下翻轉(zhuǎn),由于彩色圖像不能直接進(jìn)行矩陣翻轉(zhuǎn),因此需要先將彩色圖像通過灰度變換處理后再 進(jìn)行翻轉(zhuǎn),原圖及翻轉(zhuǎn)后的圖像如圖2.14 所示。圖 2.14 上下翻轉(zhuǎn)左右翻轉(zhuǎn):與上下翻轉(zhuǎn)相同,先將圖像進(jìn)行灰度變換后,通過函數(shù) 將圖像數(shù)據(jù)矩陣進(jìn)行左右翻轉(zhuǎn),原圖及翻轉(zhuǎn)后的圖像如圖2.15 所示圖 2.15 左右翻轉(zhuǎn)262262 旋轉(zhuǎn)打開圖片后,選擇 編輯”菜單 圖像變形”中的 旋轉(zhuǎn)”后,執(zhí)行界面會(huì)出現(xiàn) 調(diào)整角度的輸入對(duì)話框,在對(duì)話框中輸入任意角度,則原圖像將會(huì)旋轉(zhuǎn)任意角 度,輸入正數(shù)逆時(shí)針旋轉(zhuǎn),輸入負(fù)數(shù)順時(shí)針旋轉(zhuǎn)。以90 為例,在對(duì)話框中輸入90,則圖像逆時(shí)針
23、旋轉(zhuǎn) 90,如圖 2.16 所示。在程序中由 prompt=調(diào)整角度。來顯示輸入對(duì)話框,函數(shù) inputdlg()創(chuàng)建 對(duì)話框和輸入框,輸入角度后通過函數(shù) imrotate()進(jìn)行相應(yīng)的旋轉(zhuǎn)。圖 2.16 圖像旋轉(zhuǎn)2.7 其它常用處理2.7.12.7.1 亮度當(dāng)在 編輯”菜單中選擇 亮度”后,會(huì)出現(xiàn)調(diào)整倍數(shù)的輸入對(duì)話框,默認(rèn)值為 1,在對(duì)話框中輸入數(shù)值后圖像便會(huì)相應(yīng)變換亮度。輸入數(shù)值小于1 時(shí),圖像變亮,輸入數(shù)值大于 1 時(shí),圖像變暗。程序中通過函數(shù) imadjust()來實(shí)現(xiàn),即 將原圖像的亮度值以輸入數(shù)值描述的曲線關(guān)系映射到新的數(shù)值中,從而實(shí)現(xiàn)亮 度的變化。以輸入值 0.5為例,變換后的圖
24、像如圖 2.17 所示。fliplr()圖 2.17 亮度調(diào)整2.7.22.7.2 對(duì)比度對(duì)比度增強(qiáng):選擇菜單中 對(duì)比度增強(qiáng)”后,彈出輸入?yún)?shù)的對(duì)話框,以輸 入?yún)?shù) 2 為例,對(duì)比度增強(qiáng)后的圖像如圖2.18 所示。程序中通過乘法函數(shù)immultiply()將原圖像數(shù)據(jù)與輸入數(shù)值相乘,從而增強(qiáng)圖像的對(duì)比度。圖 2.18 對(duì)比度增強(qiáng)對(duì)比度減弱:選擇菜單中 對(duì)比度減弱”后,彈出輸入?yún)?shù)的對(duì)話框,同樣 以輸入?yún)?shù)2 為例,對(duì)比度減弱后的圖像如圖 2.19 所示。程序中通過除法函數(shù) imdivide()將原圖像數(shù)據(jù)與輸入數(shù)值相除,從而減弱圖像的對(duì)比度。圖 2.19 對(duì)比度減弱2.7.32.7.3 截圖當(dāng)
25、選擇完菜單中的 截圖”后,鼠標(biāo)箭頭會(huì)變成一個(gè)十字,能夠選擇想要截 取的圖像部分,選中后就會(huì)直接顯示出截取后的圖像,如圖2.20 所示。程序中圖 2.20 截圖通過函數(shù) imcrop()來實(shí)現(xiàn)的,即返回圖像的一個(gè)裁剪區(qū)域,允許用戶以交互方 式使用鼠標(biāo)選定要剪切的區(qū)域。2.7.42.7.4 底片效果程序中通過函數(shù) imcompleme nt()對(duì)圖像數(shù)據(jù)矩陣進(jìn)行取反運(yùn)算,即可實(shí)現(xiàn) 底片效果,原圖像及底片效果的圖像如圖2.21 所示。圖 2.21 底片效果2.7.52.7.5 二值處理二值化即將彩色圖像轉(zhuǎn)換成只有0 和 1 兩個(gè)數(shù)值的圖像,程序中通過二值轉(zhuǎn)換函數(shù) im2bw()將彩色圖像轉(zhuǎn)換為二值圖
26、像。原圖像及轉(zhuǎn)換后的二值圖像如圖 2.22 二值處理圖 2.22 所示。3 結(jié)果分析經(jīng)過我們小組的不斷調(diào)試,軟件已經(jīng)得到了完善,達(dá)到了課設(shè)的基本要求,基于 MATLAB 數(shù)字圖像處理平臺(tái)設(shè)計(jì)能實(shí)現(xiàn)的全部功能如下:(1) 設(shè)計(jì)圖形用戶界面,實(shí)現(xiàn)了圖像的打開、保存及退出(2) 實(shí)現(xiàn)了對(duì)圖像的傅里葉變換及離散余弦變換,其中離散余弦變換只能對(duì)灰度 圖像處理。(3) 實(shí)現(xiàn)了圖像空間域增強(qiáng)包括灰度變換和直方圖均衡化,還有圖像頻率域增強(qiáng) 包括低通濾波器和高通濾波器。其中直方圖均衡化,低通濾波和高通濾波均 只支持對(duì)灰度圖像處理。(4) 實(shí)現(xiàn)了圖像分割:閾值分割和梯度分割,梯度分割有Roberts 算子、 Ca
27、nny算子、Sobel 算子。其中梯度分割需要對(duì)圖像先進(jìn)行灰度變換。(5) 實(shí)現(xiàn)了圖像的翻轉(zhuǎn)和旋轉(zhuǎn)。圖像的翻轉(zhuǎn)只支持灰度圖像。(6) 實(shí)現(xiàn)了圖像的亮度,對(duì)比度的調(diào)整,能夠?qū)D像截圖、做出底片效果及二值 化處理。實(shí)驗(yàn)程序雖然基本實(shí)現(xiàn)了以上這些功能,但遺憾的是有些功能只支持對(duì)灰 度的圖像處理,還不能直接對(duì)彩色圖像進(jìn)行處理。4 心得體會(huì)通過兩周的 MATLAB 課程設(shè)計(jì)實(shí)踐,使我對(duì) MATLAB 的使用有了進(jìn)一步 的了解和熟悉。還記得當(dāng)初我們小組抽到這個(gè)題目的時(shí)候,每個(gè)人看到這個(gè)題 目都無所適從。雖然曾經(jīng)學(xué)過關(guān)于數(shù)字圖像處理的課程,但對(duì)于 MATLAB 的 數(shù)字圖像處理的實(shí)際運(yùn)用并不是很熟悉,特別是
28、對(duì)此次 GUI 設(shè)計(jì)更是沒有絲毫 接觸過的。雖然對(duì)課題感到很懵懂,但在指導(dǎo)老師的提示與指導(dǎo)后,我們開始找到了 解決問題的路徑。我們到圖書館借了幾本相關(guān)的書,又從網(wǎng)上收集了大量的資 料,為這次課設(shè)做了較為充分的準(zhǔn)備,在參考了相關(guān)材料及程序后,我對(duì)自己 要做的課設(shè)內(nèi)容有了進(jìn)一步的了解,并對(duì)MATLAB 的使用有了更深的體會(huì)。當(dāng)然,在課設(shè)的進(jìn)行過程中,我們還是遇到了不少問題。例如,起初由于 我對(duì)句柄使用以及一些函數(shù)使用的不恰當(dāng),使得在對(duì)圖像文件的保存上就遇到 了問題,不過在我們小組的討論研究下輕松的就解決了。隨著課設(shè)的進(jìn)行,對(duì) matlab 的的熟悉度逐步加深。在基本功能已經(jīng)完成的基礎(chǔ)上,我們開始進(jìn)
29、行一 些擴(kuò)張功能的嘗試,比如圖像的旋轉(zhuǎn)、翻轉(zhuǎn),圖像亮度、對(duì)比度的調(diào)整,截圖 等功能,也實(shí)現(xiàn)了較為理想的結(jié)果。雖然這課題最終的功能還不是很完善,但是我還是較為滿意的。本次的課 程設(shè)計(jì),不但鞭策著我去鞏固 MATLAB 的理論知識(shí),還提高了我對(duì) MATLAB 的實(shí)際操作運(yùn)用,使得理論與實(shí)踐相結(jié)合,為進(jìn)一步學(xué) MATLAB 打下了堅(jiān)實(shí) 的基礎(chǔ)。附錄function varargout = keshe(varargin) gui_Singleton = 1。gui_State = struct(gui_Name, mfilename, .gui_Singleton, gui_Singleton, .
30、gui_OpeningFcn, keshe_OpeningFcn, .gui_OutputFcn, keshe_OutputFcn, . gui_LayoutFcn, , .gui_Callback, )。if nargin & ischar(varargin1) gui_State.gui_Callback = str2func(varargin1) 。end if nargoutvarargout1:nargout = gui_mainfcn(gui_State, varargin:) 。 elsegui_mainfcn(gui_State, varargin:) 。end% -f
31、unction keshe_OpeningFcn(hObject, eventdata, handles, varargin)han dles.output = hObjec。 guidata(hObject, handles。)% -function varargout = keshe_OutputFcn(hObject, eventdata, handles) varargout1 =handles.output。% -function open_Callback(hObject, eventdata, handles)% hObject handle to open (see GCBO)
32、% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)filename,pathname=uigetfile(*.jpg 。 *.bmp。 *.tif 。 *.*, 載入圖像 )。 %選擇路徑打開圖像if isequal(file name,O)|isequal(path name,。若 file name 為 0 或 path name 為 0, 即 卩未選中文件errordlg(未選中文件,警告
33、)。建立一個(gè)名為警告的錯(cuò)誤對(duì)話框,內(nèi)容為 未 選中文件”return。elsefile=pathname,filename。 %將文件名和目錄名組合成一個(gè)完整的路徑 x=imread(file)。%讀入圖像set(handles.axes1,HandleVisibility,ON)。 %設(shè)置圖形對(duì)象屬性,可從命令窗口中和 GUIs 中訪問axes(handles.axes。%定義圖形區(qū)域 axeslimshow(x)。顯示圖像set(ha ndles.axes1,Ha ndleVisibility,OFF。 % 設(shè)置圖形對(duì)象屬性,不可從命令窗口中和 GUIs 中訪問axes(handles.a
34、xes2) %定義圖形區(qū)域 axes2imshow(x)%顯示圖像handles.img=x。把圖像發(fā)給 handles.imgguidata(hObject,handles)%把 handles 句柄更新end% -fun cti on save_Callback(hObject, eve ntdata, han dles)% hObject han dle to save (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% - fun cti onexit_Callback(hObjec
35、t, eve ntdata, han dles)% hObject han dle to exit (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% han dles structure with han dles and user data (see GUIDATA)clc)%清除指令窗close all)%關(guān)閉所有句柄可見的窗口close(gcf)%關(guān)閉當(dāng)前窗口clear)%清除內(nèi)存變量和函數(shù)% - fun cti on change_Callback(hObject, eve ntd
36、ata, han dles)% handlesstructure with han dles and user data(see GUIDATA)sfilename ,sfilepath=uiputfile(*jpgif isequal(sfilename,sfilepath,O,O)sfilefullname=sfilepath ,sfilename 的路徑imwrite(ha ndles.img,sfilefullname) else保存圖像文件,untitled.jpg)%返回要保存 的圖 像文 件%如果不是取消保存%將文件名和目錄名組合成一個(gè)完整%保存圖像%彈出一個(gè)名為保存圖像文件的對(duì)
37、話框,內(nèi)容為 取消保存? ”*.bmp)*tif)*,msgbox(取消保存?,保存圖像文件)endfunction enhance_Callback(hObject, eventdata, handles)function fenge_Callback(hObject, eventdata, handles)function file_Callback(hObject, eventdata, handles)function edit_Callback(hObject, eventdata, handles)function fanzhuan_Callback(hObject, eventd
38、ata, 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。i2=im2double(i1) 。f1=fft2(i2) 。%獲取圖像%圖
39、像矩陣轉(zhuǎn)換成雙精度浮點(diǎn)類型%對(duì)圖像進(jìn)行二維離散傅里葉變換fc1=fftshift(f1) 。心i=log(1+abs(fc1)。imshow(i)。% 將變換后的圖象頻譜中心從矩陣的原點(diǎn)移到矩陣的中%對(duì)變換后的圖像矩陣數(shù)據(jù)求絕對(duì)值后取自然對(duì)數(shù)xlabel(傅里葉變換圖像)handles.img=i。guidata(hObject,ha ndles。把 han dies 句柄更新% -function DCT_Callback(hObject, eventdata, handles)% hObject handle to DCT (see GCBO)% eventdata reserved -
40、to be defined in a future version of MATLAB % handlesstructure with handles and user data (see GUIDATA) axes(handles.axes2。)%獲取圖像%灰度變換%對(duì)圖像進(jìn)行二維離散余弦變換%對(duì)變換后的圖像矩陣數(shù)據(jù)求絕對(duì)值后取自然對(duì)數(shù)imshow(j)。xlabel(離散余弦變換圖像) handles.img=j。guidata(hObject,handles。把 handles 句柄更新% -function huidu_Callback(hObject, eventdata, hand
41、les)% 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%定義全局變量axes(handles.axes2。)%定義圖形區(qū)域 axes2T=getimage。%從坐標(biāo)軸獲取圖像數(shù)據(jù)x=rgb2gray(handles.img)。 %利用 rgb2gray 函數(shù)對(duì)源圖像進(jìn)行灰度處理 imshow(x) 。%
42、顯示圖像xlabel(灰度圖像)。% x 軸名為 灰度圖像”handles.img=x。%把圖像發(fā)給 handles.imgguidata(hObject,ha ndles。把 han dies 句柄更新% -j1=handles.img。j2=rgb2gray(j1)。d=dct2(j2)。j=log(abs(d)。function zhifangtu_Callback(hObject, eventdata, handles)% hObject handle to zhifangtu (see GCBO)% eventdata reserved - to be defined in a fu
43、ture version of MATLAB % handlesstructure with handles and user data (see GUIDATA) axes(handles.axes2。)%定義圖形區(qū)域 axes2T=getimage。%從坐標(biāo)軸獲取圖像數(shù)據(jù)x=rgb2gray(handles.img)。 %對(duì)圖像進(jìn)行灰度處理h=histeq(x)。imshow(h)。%對(duì)圖像進(jìn)行直方圖均衡化處理%顯示圖像xlabel(直方圖均衡化后的圖像)。handles.img=h。guidata(hObject,handles。把 handles 句柄更新 %function low_
44、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。)y1=handles.img。%獲取圖像x=rgb2gray(handles.img)。%灰度變換f=double(x)。g=fft2(f) 。g=fftshift(
45、g) 。M,N=size(g)。nn=2。d0=50。%數(shù)據(jù)類型轉(zhuǎn)換為雙精度數(shù)值%二維離散傅里葉變換%將變換后的圖象頻譜中心從矩陣的原點(diǎn)移到矩陣的中心%返回矩陣 g 的大小,即 M 為行數(shù),N 為列數(shù) %二階巴特沃斯低通濾波器%截止頻率 50Hzm=fix(M/2)。n=fix(N/2)。取矩陣 g 的行數(shù)和列數(shù)一半的整數(shù)for i=1:Mfor j=1:N% 循環(huán)d=sqrt(i-m)A2+(j-n)2)。h=1/(1+0.414*(d/d0)A(2*nn)。計(jì)算低通濾波器傳遞函數(shù)result(i,j)=h*g(i,j) 。%結(jié)果返回到 resultend end%將圖象頻譜中心從矩陣的中心
46、移到矩陣的原點(diǎn)%二維離散傅里葉反變換%把矩陣 y2 實(shí)部轉(zhuǎn)換成 8 位無符號(hào)數(shù)據(jù)%顯示低通濾波后的圖像 handles.img=y3。guidata(hObject,handles)。% -% hObject handle to high (seeGCBO)% eventdata reserved - to be defined in a future version of MATLAB % handlesstructure with handles and user data (see GUIDATA) axes(handles.axes2。)x=handles.img。y=rgb2gray
47、(handles.img)。 f=double(y)。k=fft2(f) 。g=fftshift(k) 。M,N=size(g)nn=2。d0=25。m=fix(M/2) fori=1:Mfunctionyuzhi_Callback(hObject,eventdata,handles)result=ifftshift(result) 。y2=ifft2(result) 。y3=uint8(real(y2)。imshow(y3)。xlabel(低通濾波圖像)%把 handles 句柄更新%獲取圖像%灰度變換%數(shù)據(jù)類型轉(zhuǎn)換為雙精度數(shù)值 %二維離散傅里葉變換%將變換后的圖象頻譜中心從矩陣的原點(diǎn)移到矩
48、陣的中心 %返回矩陣 g 的大小,即 M 為行數(shù), N 為列數(shù) %二階%截止頻率 25Hzn=fix(N/2) 。for j=1:N%循環(huán)d=sqrt(i-m)A2+(j-n)2)。if d=d0 h=0。else h=1。end result(i,j)=h*g(i,j) 。endend result=ifftshift(result) 。點(diǎn)八、y2=ifft2(result) 。y3=uint8(real(y2)。imshow(y3)。xlabel( 高 通 濾 波 圖 像 )。handles.img=y3。guidata(hObject,handles)。% -%結(jié)果返回到 result%
49、 將圖象頻譜中心從矩陣的中心移到矩陣的原%二維離散傅里葉反變換%把矩陣 y2 實(shí)部轉(zhuǎn)換成 8 位無符號(hào)數(shù)據(jù)%顯示高通濾波后的圖像%把 han dies 句柄更新% hObject handle to yuzhi (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handlesstructure with handles and user data (see GUIDATA) axes(handles.axes2。)T=getimage。%從坐標(biāo)軸獲取圖像數(shù)據(jù)%用 Otsu 方法計(jì)算全局圖
50、像閾值%基于一定閾值把圖像轉(zhuǎn)換為二值圖像%顯示閾值分割后的圖像 handles.img=BW。guidata(hObject,handles。把 handles 句柄更新% - function tidu_Callback(hObject, eventdata, handles)function kongyu_Callback(hObject, eventdata, handles)function pinyu_Callback(hObject, eventdata, handles)function bianxing_Callback(hObject, eventdata, handles)
51、function qita_Callback(hObject, eventdata, handles)function duibidu_Callback(hObject, eventdata, handles)% -function roberts_Callback(hObject, eventdata, handles)% hObject handle to roberts (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles a
52、nd user data (see GUIDATA)axes(handles.axes2。)T=getimage。%從坐標(biāo)軸獲取圖像數(shù)據(jù)R1=rgb2gray(T)。%灰度變換R2=edge(R1,roberts。用 roberts 算子識(shí)別灰度圖像的輪廓imshow(R2)。%顯示圖像xlabel(Roberts 算子圖像)。handles.img=R2。 guidata(hObject,handles)%把 handles 句柄更新% -function canny_Callback(hObject, eventdata, handles)% hObject handle to canny
53、 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handlesstructure with handles and user data (see GUIDATA)axes(handles.axes2。)T=getimage。C1=rgb2gray(T)。C2=edge(C1,canny。)imshow(C2)。%從坐標(biāo)軸獲取圖像數(shù)據(jù)%灰度變換%用 canny 算子識(shí)別灰度圖像的輪廓level=graythresh(T)。BW=im2bw(T,level) 。imshow(BW) 。
54、xlabel(閾值分割圖像)xlabel(Canny 算子圖像)。handles.img=C2。guidata(hObject,handles)。% - function sobel_Callback(hObject, eventdata, handles)% hObject handle to sobel (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)axes(hand
55、ies.axes2。 )T=getimage。L1=rgb2gray(T)。L2=edge(L1,sobei)。%從坐標(biāo)軸獲取圖像數(shù)據(jù)%灰度變換%用 sobei 算子識(shí)別灰度圖像的輪廓imshow(L2) 。xlabel(Sobel 算子圖像 )。handles.img=L2。guidata(hObject,handles)。% -function xuanzhuan_Callback(hObject, eventdata, handles)% hObject handle to xuanzhuan (see GCBO)% eventdata reserved - to be defined
56、in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)axes(handles.axes2。)T=getimage。%從坐標(biāo)軸獲取圖像數(shù)據(jù)prompt=調(diào)整角度。用于顯示可提示用戶進(jìn)行輸入角度的對(duì)話框defans=0。%對(duì)話框內(nèi)顯示默認(rèn)數(shù)值為 0p=inputdlg(prompt,input,1,defans)。%創(chuàng)建并打開標(biāo)題為 input 的輸入對(duì)話框, 包含 “調(diào)整角度 ”, 輸入框?yàn)?1 行,對(duì)話框中默認(rèn)顯示數(shù)值為 0 p1=str2num(p1) 。 %將字符串
57、轉(zhuǎn)換為數(shù)值f=imrotate(handles.img,p1,bilinear,crop)。 %將圖像 handles.img 饒圖像的中心點(diǎn)旋轉(zhuǎn) p1 度,p1 為正數(shù)逆時(shí)針旋 轉(zhuǎn),為負(fù)數(shù)順時(shí)針旋轉(zhuǎn), bilinear 為使用雙線性插值法, crop 為旋轉(zhuǎn) 后輸出圖像尺寸與原圖像尺寸一樣 imshow(f)。 %顯示旋轉(zhuǎn)后圖像xiabei(旋轉(zhuǎn)后的圖像)。 handles.img=f。guidata(hObject,ha ndles)%把 han dies 句柄更新% -function shangxia_Caiiback(hObject, eventdata, handies)%把han
58、 dies 句柄更%把 han dies 句柄更新% hObject handle to shangxia (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)handles.img=f。guidata(hObject,handles。)% -function zuoyou_Callback(hObject, eventdata, handles)% hObject handl
59、e to zuoyou (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% -function liangdu_Callback(hObject, eventdata, handles)% hObject handle to liangdu (see GCBO)% eventdata reserved - to be defined in a future version
60、of MATLAB % handlesstructure with handles and user data (see GUIDATA) axes(handles.axes2。)T=getimage。%從坐標(biāo)軸獲取圖像數(shù)據(jù)prompt=調(diào)整倍數(shù)。 %用于顯示可提示用戶進(jìn)行輸入亮度倍數(shù)的對(duì)話框 defans=1。%對(duì)話框內(nèi)顯示默認(rèn)數(shù)值為 1p=inputdlg(prompt,input,1,defans)。% 創(chuàng)建并打開標(biāo)題為 input 的輸入對(duì)話框,包含 “調(diào)整倍數(shù) ”,輸入框?yàn)?1 行,對(duì)話框中默認(rèn)顯示數(shù)值為1p1=str2num(p1) 。%將字符串轉(zhuǎn)換為數(shù)值y=imadjust(handle
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 咨詢工程師決策視頻課件
- 2025年醫(yī)藥流通行業(yè)供應(yīng)鏈重構(gòu)與成本控制最佳實(shí)踐報(bào)告
- 2025年虛擬現(xiàn)實(shí)(VR)設(shè)備在虛擬現(xiàn)實(shí)社交中的應(yīng)用現(xiàn)狀與未來發(fā)展趨勢(shì)研究報(bào)告
- 保潔員培訓(xùn)題庫及答案
- 伴性遺傳考試試題及答案
- 醫(yī)療器械臨床試驗(yàn)質(zhì)量管理規(guī)范化與2025年臨床試驗(yàn)數(shù)據(jù)管理報(bào)告
- 中國電子信息行業(yè)運(yùn)行情況月度報(bào)告(2025年1-4月)
- 安全生產(chǎn)知識(shí)培訓(xùn)試題及答案
- 餐飲外賣市場2025年增長瓶頸解析:破局策略與行業(yè)發(fā)展趨勢(shì)報(bào)告
- 2025年快時(shí)尚模式在時(shí)尚零售行業(yè)的數(shù)字化營銷策略與效果評(píng)估報(bào)告001
- 江西省九江市2023–2024學(xué)年八年級(jí)下學(xué)期期末考試道德與法治試題(無答案)
- 2025屆湖南省長郡中學(xué)、雅禮中學(xué)等四校高一物理第二學(xué)期期末經(jīng)典試題含解析
- 野外鉆探施工危險(xiǎn)源辨識(shí)及風(fēng)險(xiǎn)評(píng)價(jià)表
- 保健食品經(jīng)營質(zhì)量管理規(guī)范
- 醫(yī)療器械的風(fēng)險(xiǎn)管理培訓(xùn)
- 2024年湖南省公安廳機(jī)關(guān)警務(wù)輔助人員招聘筆試參考題庫附帶答案詳解
- 中華民族共同體概論課件專家版7第七講 華夷一體與中華民族空前繁盛(隋唐五代時(shí)期)
- 青春期的婦科知識(shí)講座
- 中考語文二輪專題復(fù)習(xí)《詩歌賞析之情感把握復(fù)習(xí)》公開課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì)
- 2023起重機(jī)械安全技術(shù)規(guī)程
- JJF 2088-2023 大型蒸汽滅菌器溫度、壓力、時(shí)間參數(shù)校準(zhǔn)規(guī)范
評(píng)論
0/150
提交評(píng)論