基于MATLAB數(shù)字圖像處理平臺設(shè)計要點_第1頁
基于MATLAB數(shù)字圖像處理平臺設(shè)計要點_第2頁
基于MATLAB數(shù)字圖像處理平臺設(shè)計要點_第3頁
基于MATLAB數(shù)字圖像處理平臺設(shè)計要點_第4頁
基于MATLAB數(shù)字圖像處理平臺設(shè)計要點_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于 matlab 數(shù)字圖像處理平臺設(shè)計摘要數(shù)字圖像處理技術(shù)在各個行業(yè)得到廣泛的應(yīng)用, 其交互式的圖形界面是操作者方便使用這些技術(shù)的途徑。本文主要介紹了基于 matlab 的圖形用戶界面( gui )來設(shè)計一個簡單實用的圖像處理軟件平臺, 其中具備圖像處理的常用功能, 以滿足用戶的使用。 文章詳細(xì)闡述了一下圖像處理軟件平臺的設(shè)計過程。本文的 gui 設(shè)計所制作的圖像處理軟件平臺可以實現(xiàn)的功能有五個模塊:圖像變換、 圖像增強、圖像分割、 圖像變形以及其它常用處理。其中也講述了 gui 的基本常用操作及文件的打開、保存及退出。文章基本介紹 了以上的內(nèi)容,關(guān)于軟件還有許多未能實現(xiàn)的功能有待于日后的逐

2、步開發(fā)和學(xué)習(xí)。關(guān)鍵詞: gui ;圖像變換;圖像增強;圖像分割;圖像變形;圖像處理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

3、on matlab to design a simple and practical platform for the image processing software, which have commonly used image processing function, in order to meet the users use. the article expounds the design process of the image processing software platform. this paper made the gui design of image proces

4、sing software 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 articl

5、e introduces 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 processing31 緒論 11.1 設(shè)計要求及目的 11.2 課題分析 11.

6、3 總體設(shè)計 22 具體設(shè)計 22.1 菜單設(shè)計 22.2 圖像的打開、保存及退出 32.2.1 圖像打開 32.2.2 圖像保存 42.2.3 程序退出 42.3 圖像變換 42.3.1 傅里葉變換 42.3.3 離散余弦變換 52.4 圖像增強 52.4.1 空間域增強 52.4.2 頻率域增強 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

7、 心得體會 13附錄 14基于matlab數(shù)字圖像處理平臺設(shè)計matlab是近幾年來國內(nèi)外使用最為廣泛的優(yōu)秀科技軟件之一。其語法結(jié)構(gòu)簡單,具有極強的數(shù)值計算、數(shù)據(jù)分析、圖形繪制及圖像處理等功能。具有高質(zhì)量的圖形可視化效 果和強大的界面設(shè)計能力。因而在數(shù)字圖像處理中有著其他語言所無法比擬的優(yōu)勢。圖形 用戶界面(gui)是提供人機交互的工具和方法。利用 gui制作圖像處理軟件能夠?qū)崿F(xiàn)圖 像處理的各個內(nèi)容,主要有:圖像空間變換:鄰域和塊操作;二值圖像操作;線性濾波和 濾波器設(shè)計;變換域處理;圖像分析和增強;圖像恢復(fù);圖像壓縮;形態(tài)學(xué)運算等。1緒論1.1 設(shè)計要求及目的設(shè)計要求:以matlab作為工具

8、,開發(fā)一個圖像處理軟件。主要進(jìn)行圖像處理的常 用算法。由以下模塊組成:圖像變換;圖像增強;圖像分割。按各個模塊進(jìn)行功能擴充, 也可加入其它常用的圖像處理功能。設(shè)計目的:matlab軟件為數(shù)字圖像處理提供了功能豐富的工具,應(yīng)用 matlab友 好的界面和實用高效的指令及模塊,可以使人較快地認(rèn)識、理解圖像處理的相關(guān)概念,逐 步掌握圖像處理的基本方法。此課題的設(shè)計目的是綜合運用matlab工具箱實現(xiàn)圖像處理的gui程序設(shè)計,學(xué)會和掌握 gui的圖像處理平臺設(shè)計。1.2 課題分析圖像處理的常用功能,以滿足用戶的使用。程序?qū)崿F(xiàn)的圖像處理功能分為五個模塊:圖像變換、圖像增強、圖像分割、圖像變形以及其它常用

9、處理。如圖 1.1所示。除以上的數(shù)字圖像處理的功能外,該程序還要實現(xiàn)圖像的讀取顯示、圖像的保存及退 出等基本功能。從而實現(xiàn)完整的數(shù)字圖像平臺設(shè)計,具有更好的交互性。1.3 總體設(shè)計軟件的總體設(shè)計界面主要分為兩個部分: 顯示區(qū)域與操作區(qū)域。具體界面布局如圖1.2 所示。圖1.2界面布局顯示區(qū)域:定義兩個圖形區(qū)域,左面為待處理圖片來顯示載入的原圖像,右面為通過 處理后的圖像。操作區(qū)域:通過菜單欄的編輯實現(xiàn)對圖像的各種處理,分為文件和編輯兩大部分。通 過文件中的打開操作顯示出處理前的圖像,在編輯中選擇某個圖像處理功能后,將在已處 理圖片下就會顯示出處理后的圖片。2具體設(shè)計2.1 菜單設(shè)計通過menu

10、 editor b 創(chuàng)建菜單欄如圖2.1所示。菜單的設(shè)計主要分為兩大部分: 文件和編輯。文件包含圖像的打開、保存和退出;編輯包含圖像處理功能的五個模塊:圖 像變換、圖像增強、圖像分割、圖像變形及其它常用處理,還有各個模塊的分支。通過此 菜單來控制顯示或隱藏功能鍵。以圖2.1的傅里葉變換為例,當(dāng)添加上某一菜單后,修改名稱為傅里葉變換,句柄為 fft,從而會在 m文件中自動生成傅里葉變換的功能函數(shù)function fft_callback(hobject,eventdata, handles),在此函數(shù)下編寫能夠?qū)崿F(xiàn)傅里葉變換的程序便能實現(xiàn)對圖像的傅里葉2變換tag:acgelferator: c

11、trl 才 noneya mr mi fditnrulmenu propertieslabel: 德里葉安檢fft一 check mark tuis ftemj separator above this itemok圖2.1菜單欄2.2 圖像的打開、保存及退出2.2.1 圖像打開圖像的打開主要是通過以下程序來實現(xiàn)的:filename,pathname=uigefile(*jpg;*bmp;*tif;*, 載入圖像);選擇相應(yīng)路徑打 開圖像;file=pathname,filename; x=imread(file); “讀取選中的圖像;imshow(x); ”在顯示區(qū)域上顯示圖像。具體操作如圖

12、2.2所示,選擇 文件”菜單中的 打開”后,出現(xiàn) 裁入圖像”,選中想要處圖獴查找范圍a) : | g, 一 向 占摩!,31014232 1366768.jpg171027815 1366 769jpguntitled.jpg文件名國):|171027815_1366_768 jpg圖2.2圖像3打開取消文件類型(1): *.jp理的圖片后點擊打開”,即可在顯示區(qū)域中顯示出處理前的圖片。2.2.2 圖像保存圖像的保存主要是通過以下程序來實現(xiàn)的:“ sfilenam償filepath=uipufile(*jpg;*bmp;*tif;*,保存圖 像文件,untitled.jpg); 選擇圖像文件保

13、存的路徑與格式;sfilefullname=sfilepath ,sfilename; imwrite(handles.img,sfilefullname); ”實現(xiàn)對圖像的保 存。具體操作如圖2.3所示,選擇 文件”菜單中的 保存”后,出現(xiàn) 保存圖像文件”,修改文 件名后點擊 保存”,即可將處理后的圖像保存到keshe的文件夾下。圖2.3圖像的保存2.2.3 程序退出程序的退出是通過“clc;, ” “close a,close(gcf);,clear;”這些指令來清除指令窗, 窗口,內(nèi)存變量及函數(shù)。具體操為選擇 文件”菜單中的 退出”后,便關(guān)閉了執(zhí)行界面的窗口并消除了指令窗的 所有指令。2

14、.3 圖像變換2.3.1 傅里葉變換傅里葉變換(fft)實際上是將信號f與一組不同頻率的復(fù)正弦作內(nèi)積,這一組復(fù)正弦 是變換的基向量,傅里葉系數(shù)或傅里葉變換是f在這一組基向量上的投影。在圖像處理技術(shù)的發(fā)展過程中,fft起著十分重要的作用。它是線性系統(tǒng)分析的一個有力工具,它能 夠定量地分析諸如數(shù)字圖像之類的數(shù)字化系統(tǒng)。fft主要分為連續(xù)傅里葉變換和離散傅里葉變換,在數(shù)字圖像處理中經(jīng)常用到的是二維離散傅里葉變換。程序中主要是通過二維離散傅里葉變換函數(shù)fft2(),變換后四個角部分對應(yīng)于低頻成分,中央部分對應(yīng)于高頻成分。若想使低頻成分出現(xiàn)在中央位置,則通過函數(shù)fftshift()將圖像頻譜中心從矩陣的

15、原點移到矩陣中心。從而實現(xiàn)圖像的二維傅里葉變換。具體程序見附錄。原圖像及傅里葉變換后的圖像如圖 2.4所示待處理圖片已處理圖片16原圖像懂里葉變損圍像圖2.4傅里葉變換2.3.3 離散余弦變換離散余弦變換(dft)在圖像處理中占有重要的位置,它實際上是傅里葉變換的實數(shù)部分,但是它比傅里葉變換有更強的信息集中能力。對于大多數(shù)自然圖像,dct能將大多數(shù)的信息放到較少的系數(shù)上去,因此就更能提高編碼的效率。程序中主要是通過灰度變換函數(shù)rgb2gray()及二維離散余弦變換函數(shù)dct2()來實現(xiàn)對圖 像的二維離散余弦變換,具體程序見附錄。其變換后的圖像低頻能量都集中在左上角區(qū)域, 而向著右下角方向,頻率

16、越來越高。原圖像及離散余弦變換后的圖像如圖2.5所示。待處理圖片原圖像已處理圖片離散雜蘢變換圖像圖2.5離散余弦變換2.4 圖像增強圖像增強是圖像處理中的一類基本技術(shù),其主要的目的改善圖像的視覺效果,提高圖 像的清晰度。圖像增強能夠擴展對比度,增強圖像中對象的邊緣,消除或抑制噪聲或保留 圖像中感興趣的某些特性而抑制另一些特性等。圖像增強方法按其處理所進(jìn)行的空間不 同,可分為空間域法和頻率域法。2.4.1 空間域增強空間域法是在空間域內(nèi)直接對像素灰度值進(jìn)行運算處理,常用的空間域法有圖像的直 接灰度變換和直方圖均衡化,下面分別介紹兩種空域上的圖像增強方法。(1)灰度變換通過灰度變換可使圖像動態(tài)范圍

17、加大,圖像對比度擴展,圖像清晰,特征明顯,大大 改善人眼的視覺效果。程序中主要通過灰度處理函數(shù)rgb2gray()對圖像進(jìn)行灰度變換,將彩色圖像轉(zhuǎn)換成灰度 圖像。原圖像及灰度圖像如圖2.6所示。待處理圖片已處理圖片茨度圖像圖2.6灰度變換(2)直方圖均衡化直方圖均衡化是對原始圖像中的像素灰度作某種映射變換,使變換后的圖像灰度的概 率密度是均勻分布的,即變換后圖像是一幅灰度級均勻分布圖像,這意味著圖像灰度的動 態(tài)范圍得到了增加,從而可提高圖像的對比度。程序中主要通過灰度處理函數(shù)rgb2gray()先對圖像進(jìn)行灰度變換,然后通過直方圖均衡 化處理函數(shù)histeq()對灰度圖像進(jìn)行直方圖均衡化處理。

18、 原圖像及直方圖均衡化后的圖像如 圖2.7所示。待處理圖片原圖像已處理圖片直方圖均衡化啟的圖像圖2.7直方圖均衡化2.4.2 頻率域增強頻率域法就是在圖像的某種變換域內(nèi),對圖像的變換值進(jìn)行運算,然后通過逆變換獲 得圖像增強效果。這是一種間接處理方法,一般采用二維數(shù)字濾波方法來進(jìn)行頻率域的圖 像增強。(1)低通濾波圖像的邊緣以及噪聲干擾在圖像的頻域上對應(yīng)于圖像傅里葉變換中的高頻部分,而圖 像的背景區(qū)則對應(yīng)于低頻部分,因此可以用頻域低通濾波法去除圖像的高頻成分,以去掉 噪聲,使圖像平滑。程序中采用二階巴特沃斯低通濾波器,先用函數(shù)fft2()對圖像進(jìn)行二維離散傅里葉變換,然后通過低通濾波器進(jìn)行濾波后

19、,再對濾波后的圖像數(shù)據(jù)通過ifft2()進(jìn)行傅里葉反變換,從而得到低通濾波后的圖像。如圖 2,8所示。圖2.8低通濾波器(2)高通濾波圖像中的邊緣或線條與圖像頻譜中的高頻分量相對應(yīng),因此采用高通濾波器讓高頻分 量順利通過,可以使圖像的邊緣或線條變得更清楚,可實現(xiàn)圖像的銳化。程序中采用二階巴特沃斯高通濾波器,與低通濾波過程相同,先進(jìn)行傅里葉變換,然 后通過高通濾波器,再進(jìn)行傅里葉反變換,從而得到高通濾波后的圖像,具體程序見附錄。 原圖像及濾波后的圖像如圖2,9所示。圖2.9高通濾波器2.5 圖像分割圖像分割是一種重要的圖像分析技術(shù)。為了識別和分析圖像中的目標(biāo),需要將它們從 圖像中分離提取出來,在

20、此基礎(chǔ)上才有可能進(jìn)一步對目標(biāo)進(jìn)行測量和對圖像進(jìn)行利用。圖 像分割就是指把圖像分成各具特性的區(qū)域并提取出感興趣目標(biāo)的技術(shù)和過程。2.5.1 閾值分割灰度閾值法是把圖像的灰度分成不同的等級,然后用設(shè)置灰度閾值的方法確定有意義 的區(qū)域或欲分割物的邊界,該方法中最簡單的就是二值化的閾值分割。程序中先通過函數(shù)graythresh()即用otsu方法計算出全局圖像閾值,再通過函數(shù)im2bw(,)基于一定閾值將圖像轉(zhuǎn)換成二值圖像。原圖像及閾值分割后的圖像如圖2.10所待處理圖片闕值分割圖像已處理圖片圖2.10閾值分割2.5.2 梯度分割梯度分割即對圖像進(jìn)行邊緣檢測,圖像邊緣對圖像識別和計算機分析十分有用。邊

21、緣 能勾劃出目標(biāo)物體,使觀察者一目了然。邊緣蘊含了豐富的內(nèi)在信息,是圖像識別中抽取 圖像特征的重要屬性。roberts算子程序中先通過函數(shù)rgb2gray()對圖像進(jìn)行灰度變換,再通過函數(shù)edge( ,roberts)即用roberts算子識別灰度圖像的輪廓,從而實現(xiàn)對圖像的邊緣檢測。如圖 2.11所示。待處理圖片原圖像已處理圖片robe心算了圖像圖 2.11 roberts 算子(2) canny 算子程序中先通過函數(shù)rgb2gray()對圖像進(jìn)行灰度變換,再通過函數(shù)edge( ,canny)即用canny算子識別灰度圖像的輪廓,如圖 2.12所示。sobel算子程序中先通過函數(shù)rgb2gr

22、ay()進(jìn)行灰度變換,再通過函數(shù) edge( ,sobel)即用sobel算2.13所示。待處理圖片原圖像已處理圖片canny算子圖像子識別灰度圖像的輪廓,從而實現(xiàn)對圖像的邊緣檢測。如圖圖2.12 canny算子待處理圖片原圖像已處理圖片sobel算子圖像圖2.13 sobel算子2.6 圖像變形2.6.1 翻轉(zhuǎn)上下翻轉(zhuǎn):程序中通過函數(shù)flipud()對圖像數(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ù)fliplr()將

23、圖像數(shù)據(jù)矩陣進(jìn)行左右翻轉(zhuǎn),原圖及翻轉(zhuǎn)后的圖像如圖2.15所示。待處理圖片原圖像已處理圖片左右翻轉(zhuǎn)后的圖像圖2.15左右翻轉(zhuǎn)2.6.2 旋轉(zhuǎn)打開圖片后,選擇 編輯”菜單圖像變形”中的 旋轉(zhuǎn)”后,執(zhí)行界面會出現(xiàn)調(diào)整角度的 輸入對話框,在對話框中輸入任意角度,則原圖像將會旋轉(zhuǎn)任意角度,輸入正數(shù)逆時針旋 o 轉(zhuǎn),輸入負(fù)數(shù)順時針旋轉(zhuǎn)。以90為例,在對話框中輸入90,則圖像逆時針旋轉(zhuǎn)90 ,如 圖2.16所示。在程序中由prompt=調(diào)整角度;來顯示輸入對話框,函數(shù)inputdlg()創(chuàng)建對話框和輸 入框,輸入角度后通過函數(shù)imrotate()進(jìn)行相應(yīng)的旋轉(zhuǎn)。待處理圖片原圖像已處理圖片旋轉(zhuǎn)由的圖像圖2.1

24、6圖像旋轉(zhuǎn)2.7 其它常用處理2.7.1 亮度當(dāng)在編輯”菜單中選擇亮度”后,會出現(xiàn)調(diào)整倍數(shù)的輸入對話框,默認(rèn)值為1,在對話框中輸入數(shù)值后圖像便會相應(yīng)變換亮度。輸入數(shù)值小于1時,圖像變亮,輸入數(shù)值大于1時,圖像變暗。程序中通過函數(shù)imadjust()來實現(xiàn),即將原圖像的亮度值以輸入數(shù)值描述 的曲線關(guān)系映射到新的數(shù)值中,從而實現(xiàn)亮度的變化。以輸入值0.5為例,變換后的圖像如圖2.17所示。圖2.17亮度調(diào)整2.7.2對比度對比度增強:選擇菜單中 對比度增強”后,彈出輸入?yún)?shù)的對話框,以輸入?yún)?shù) 2為 例,對比度增強后的圖像如圖 2.18所示。程序中通過乘法函數(shù)immultiply()將原圖像數(shù)據(jù)

25、與輸入數(shù)值相乘,從而增強圖像的對比度。待處理圖片已處理圖片原圖像對比度增強的圖像圖2.18對比度增強對比度減弱:選擇菜單中 對比度減弱”后,彈出輸入?yún)?shù)的對話框,同樣以輸入?yún)?shù)2為例,對比度減弱后的圖像如圖2.19所示。程序中通過除法函數(shù)imdivide()將原圖像數(shù)據(jù) 與輸入數(shù)值相除,從而減弱圖像的對比度。待處理圖片已處理圖片對比度減弱的西像圖2.19對比度減弱2.7.3截圖當(dāng)選擇完菜單中的 截圖”后,鼠標(biāo)箭頭會變成一個十字,能夠選擇想要截取的圖像部分,選中后就會直接顯示出截取后的圖像,如圖 2.20所示。程序中通過函數(shù)imcrop()來實待處理圖片已處理圖片原圖像圖2.20截圖現(xiàn)的,即返回

26、圖像的一個裁剪區(qū)域,允許用戶以交互方式使用鼠標(biāo)選定要剪切的區(qū)域。2.7.4 底片效果程序中通過函數(shù)imcomplement()對圖像數(shù)據(jù)矩陣進(jìn)行取反運算,即可實現(xiàn)底片效果, 原圖像及底片效果的圖像如圖2.21所示。待處理圖片已處理圖片原圖傀底片圖像圖2.21底片效果2.7.5 二值處理二值化即將彩色圖像轉(zhuǎn)換成只有0和1兩個數(shù)值的圖像,程序中通過二值轉(zhuǎn)換函數(shù)im2bw()將彩色圖像轉(zhuǎn)換為二值圖像。原圖像及轉(zhuǎn)換后的二值圖像如圖2.22所示圖2.22二值處理3 結(jié)果分析經(jīng)過我們小組的不斷調(diào)試,軟件已經(jīng)得到了完善,達(dá)到了課設(shè)的基本要求,基于matlab 數(shù)字圖像處理平臺設(shè)計能實現(xiàn)的全部功能如下:(1)

27、 設(shè)計圖形用戶界面,實現(xiàn)了圖像的打開、保存及退出(2) 實現(xiàn)了對圖像的傅里葉變換及離散余弦變換,其中離散余弦變換只能對灰度圖像處理。(3) 實現(xiàn)了圖像空間域增強包括灰度變換和直方圖均衡化,還有圖像頻率域增強包括低通濾波器和高通濾波器。其中直方圖均衡化,低通濾波和高通濾波均只支持對灰度圖像處理。(4)實現(xiàn)了圖像分割:閾值分割和梯度分割,梯度分割有 roberts算子、canny算子、sobel 算子。其中梯度分割需要對圖像先進(jìn)行灰度變換。(5) 實現(xiàn)了圖像的翻轉(zhuǎn)和旋轉(zhuǎn)。圖像的翻轉(zhuǎn)只支持灰度圖像。(6) 實現(xiàn)了圖像的亮度,對比度的調(diào)整,能夠?qū)D像截圖、做出底片效果及二值化處理。實驗程序雖然基本實現(xiàn)

28、了以上這些功能,但遺憾的是有些功能只支持對灰度的圖像處理,還不能直接對彩色圖像進(jìn)行處理。4 心得體會通過兩周的 matlab 課程設(shè)計實踐, 使我對 matlab 的使用有了進(jìn)一步的了解和熟悉。還記得當(dāng)初我們小組抽到這個題目的時候,每個人看到這個題目都無所適從。雖然曾經(jīng)學(xué)過關(guān)于數(shù)字圖像處理的課程,但對于 matlab 的數(shù)字圖像處理的實際運用并不是很熟悉,特別是對此次gui 設(shè)計更是沒有絲毫接觸過的。雖然對課題感到很懵懂,但在指導(dǎo)老師的提示與指導(dǎo)后,我們開始找到了解決問題的路徑。我們到圖書館借了幾本相關(guān)的書,又從網(wǎng)上收集了大量的資料,為這次課設(shè)做了較為充分的準(zhǔn)備, 在參考了相關(guān)材料及程序后,

29、我對自己要做的課設(shè)內(nèi)容有了進(jìn)一步的了解,并對 matlab 的使用有了更深的體會。當(dāng)然,在課設(shè)的進(jìn)行過程中,我們還是遇到了不少問題。例如,起初由于我對句柄使用以及一些函數(shù)使用的不恰當(dāng),使得在對圖像文件的保存上就遇到了問題,不過在我們小組的討論研究下輕松的就解決了。隨著課設(shè)的進(jìn)行,對matlab 的的熟悉度逐步加深。在基本功能已經(jīng)完成的基礎(chǔ)上,我們開始進(jìn)行一些擴張功能的嘗試,比如圖像的旋轉(zhuǎn)、翻轉(zhuǎn),圖像亮度、對比度的調(diào)整,截圖等功能,也實現(xiàn)了較為理想的結(jié)果。雖然這課題最終的功能還不是很完善,但是我還是較為滿意的。本次的課程設(shè)計,不但鞭策著我去鞏固 matlab 的理論知識, 還提高了我對matla

30、b 的實際操作運用, 使得理論與實踐相結(jié)合,為進(jìn)一步學(xué) matlab 打下了堅實的基礎(chǔ)。附錄function varargout = keshe(varargin)gui_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(varargi

31、n1)gui_state.gui_callback = str2func(varargin1);endif nargoutvarargout1:nargout = gui_mainfcn(gui_state, varargin:);elsegui_mainfcn(gui_state, varargin:);end% function keshe_openingfcn(hobject, eventdata, handles, varargin)handles.output = hobject;guidata(hobject, handles);% function varargout = kes

32、he_outputfcn(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

33、=uigetfile(*.jpg;*.bmp;*.tif;*.*, 載入圖像 );%選擇路徑打開圖像if isequal(filename,0)|isequal(pathname,0) %f filename 為 0 或 pathname為 0,即未選中文件 errordlg(未選中文件,警告);建立一個名為警告的錯誤對話框,內(nèi)容為 朱選中文件 return;elsefile=pathname,filename;%將文件名和目錄名組合成一個完整的路徑x=imread(file);%讀入圖像set(handles.axes1,handlevisibility,on);%設(shè)置圖形對象屬性,可從命令

34、窗口中和guis 中訪問axes(handles.axes1);%定義圖形區(qū)域axes1imshow(x); %顯示圖像set(handles.axes1,handlevisibility,off);%設(shè)置圖形對象屬性,不可從命令窗口中和guis 中訪問axes(handles.axes2);%定義圖形區(qū)域axes2imshow(x);%顯示圖像handles.img=x;%把圖像發(fā)給 handles.imgguidata(hobject,handles);%把 handles句柄更新end %function save_callback(hobject, eventdata, handles

35、) % 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=uipufile(*jpg;*bmp;*tif;*,保存圖像文件,untitled.jpg);%返回要保存的圖像文件if isequal(sfilename,sfilepath,0,0) sfilefullname=sfile

36、path ,sfilename; imwrite(handles.img,sfilefullname);elsemsgbox(取消保存?,保存圖像文件);%如果不是取消保存%將文件名和目錄名組合成一個完整的路徑%保存圖像%彈出一個名為保存圖像文件的對話框,內(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% han

37、dles structure with handles and user data (see guidata)clc;%清除指令窗close all;%關(guān)閉所有句柄可見的窗口close(gcf); %關(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_cal

38、lback(hobject, eventdata, handles)function edit_callback(hobject, eventdata, handles)function 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 matlabaxes(hand

39、les.axes2);i1=handles.img;i2=im2double(i1);f1=fft2(i2);fc1=fftshift(f1);i=log(1+abs(fc1);% handles structure with handles and user data (see guidata)%獲取圖像%圖像矩陣轉(zhuǎn)換成雙精度浮點類型%對圖像進(jìn)行二維離散傅里葉變換%將變換后的圖象頻譜中心從矩陣的原點移到矩陣的中心%對變換后的圖像矩陣數(shù)據(jù)求絕對值后取自然對數(shù)imshow(i);xlabel(傅里葉變換圖像);handles.img=i;guidata(hobject,handles);%把 h

40、andles句柄更新% function dct_callback(hobject, eventdata, handles)% hobject handle to dct (see gcbo)% eventdata reserved - to be defined in a future version of matlab % handles structure with handles and user data (see guidata)%獲取圖像 %灰度變換 %對圖像進(jìn)行二維離散余弦變換 %對變換后的圖像矩陣數(shù)據(jù)求絕對值后取自然對數(shù)%把handles句柄更新axes(handles.ax

41、es2); j1=handles.img;j2=rgb2gray(j1);d=dct2(j2);j=log(abs(d);imshow(j);xlabel(離散余弦變換圖像);handles.img=j;guidata(hobject,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 structu

42、re 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ù)對源圖像進(jìn)行灰度處理imshow(x);%顯示圖像xlabel(灰度圖像);% x軸名為灰度圖像”handles.img=x;%把圖像發(fā)給handles.imgguidata(hobject,handles); %把handles句柄更新% function zhifangtu_callback(

43、hobject, eventdata, handles)% hobject handle to zhifangtu (see gcbo)% eventdata reserved - to be defined in a future version of matlab% handles structure withhandles 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)行直

44、方圖均衡化處理imshow(h);%顯示圖像xlabel(i方圖均衡化后的圖像);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

45、guidata)axes(handles.axes2);y1=handles.img;x=rgb2gray(handles.img);f=double(x);g=fft2(f);g=fftshift(g);m,n=size(g);nn=2;d0=50;m=fix(m/2); n=fix(n/2);for i=1:m%獲取圖像%灰度變換%數(shù)據(jù)類型轉(zhuǎn)換為雙精度數(shù)值% 二維離散傅里葉變換% 將變換后的圖象頻譜中心從矩陣的原點移到矩陣的中心% 返回矩陣 g 的大小,即 m 為行數(shù), n 為列數(shù)%二階巴特沃斯低通濾波器%截止頻率 50hz%取矩陣g 的行數(shù)和列數(shù)一半的整數(shù)for j=1:n% 循環(huán)d=s

46、qrt(i-m)a2+(j-n)a2);h=1/(1+0.414*(d/d0)a(2*nn);%計算低通濾波器傳遞函數(shù)result(i,j)=h*g(i,j);%結(jié)果返回到 resultendresult=ifftshift(result);y2=ifft2(result);y3=uint8(real(y2);imshow(y3);xlabel(低通濾波圖像);handles.img=y3;guidata(hobject,handles);%將圖象頻譜中心從矩陣的中心移到矩陣的原點%二維離散傅里葉反變換%把矩陣y2 實部轉(zhuǎn)換成8 位無符號數(shù)據(jù)%顯示低通濾波后的圖像%把handles句柄更新%

47、function 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);k=fft2(f);g=fftshi

48、ft(k);m,n=size(g);nn=2;d0=25;m=fix(m/2); n=fix(n/2);for i=1:m%獲取圖像%灰度變換%數(shù)據(jù)類型轉(zhuǎn)換為雙精度數(shù)值%二維離散傅里葉變換%將變換后的圖象頻譜中心從矩陣的原點移到矩陣的中心%返回矩陣 g 的大小,即 m 為行數(shù), n 為列數(shù)%二階%截止頻率 25hz% 循環(huán)endd=sqrt(i-m)a2+(j-n)a2);if d=d0h=0;else h=1;endresult(i,j)=h*g(i,j);endendresult=ifftshift(result);y2=ifft2(result);y3=uint8(real(y2);im

49、show(y3);xlabel(高通濾波圖像);handles.img=y3;guidata(hobject,handles);% %結(jié)果返回到 result% 將圖象頻譜中心從矩陣的中心移到矩陣的原點% 二維離散傅里葉反變換% 把矩陣 y2 實部轉(zhuǎn)換成8 位無符號數(shù)據(jù)% 顯示高通濾波后的圖像%把handles句柄更新function yuzhi_callback(hobject, eventdata, handles)% hobject handle to yuzhi (see gcbo)% eventdata reserved - to be defined in a future ver

50、sion of matlab % handles structure with handles and user data (see guidata)%從坐標(biāo)軸獲取圖像數(shù)據(jù)%用 otsu 方法計算全局圖像閾值%基于一定閾值把圖像轉(zhuǎn)換為二值圖像%顯示閾值分割后的圖像%把handles句柄更新axes(handles.axes2);t=getimage; level=graythresh(t);bw=im2bw(t,level); imshow(bw);xlabel( 閾值分割圖像);handles.img=bw;guidata(hobject,handles);% function tidu_c

51、allback(hobject, eventdata, handles)function kongyu_callback(hobject, eventdata, handles)function pinyu_callback(hobject, eventdata, handles)function bianxing_callback(hobject, eventdata, handles)function qita_callback(hobject, eventdata, handles)function duibidu_callback(hobject, eventdata, handles

52、)% 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 and user data (see guidata)axes(handles.axes2);t=getimage;%從坐標(biāo)軸獲取圖像數(shù)據(jù)r1=rgb2gray(t); %灰度變換r2=edge(r1,rober

53、ts);%用roberts算子識別灰度圖像的輪廓imshow(r2);%顯示圖像xlabel(roberts 算子圖像);handles.img=r2;guidata(hobject,handles) %把 handles句柄更新% function canny_callback(hobject, eventdata, handles)% hobject handle to canny (see gcbo)% eventdata reserved - to be defined in a future version of matlab % handles structure with han

54、dles and user data (see guidata) axes(handles.axes2);%從坐標(biāo)軸獲取圖像數(shù)據(jù)%灰度變換%用 canny 算子識別灰度圖像的輪廓%把handles句柄更新t=getimage;c1=rgb2gray(t);c2=edge(c1,canny);imshow(c2);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 matlabaxes(handles.axes2);t=getimage;l1=rgb2gray(t);l2=edge(l1,sobel);% handles structure with handles and user data (see guidata)%從坐標(biāo)軸獲取圖像數(shù)據(jù)%灰度變換%用sobel算子識別灰度圖像

溫馨提示

  • 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

提交評論