

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、封面作者: PanHongliang僅供個人學習基于MATLAB數字圖像處理平臺設計摘要數字圖像處理技術在各個行業得到廣泛的應用, 其交互式的圖形界面是操作者方便 使用這些技術的途徑。本文主要介紹了基于 MATLAB 的圖形用戶界面( GUI )來設計 一個簡單實用的圖像處理軟件平臺,其中具備圖像處理的常用功能,以滿足用戶的使 用。文章詳細闡述了一下圖像處理軟件平臺的設計過程。本文的 GUI 設計所制作的圖 像處理軟件平臺可以實現的功能有五個模塊:圖像變換、圖像增強、圖像分割、圖像變 形以及其它常用處理。其中也講述了 GUI 的基本常用操作及文件的打開、保存及退 出。文章基本介紹了以上的內容,
2、關于軟件還有許多未能實現的功能有待于日后的逐步 開發和學習。關鍵詞: GUI ;圖像變換;圖像增強;圖像分割;圖像變形;圖像處理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、設計要求及目的 11.2 課題分析 11.3 總體設計 22 2 具體設計22.1 菜單設計 22.2 圖像的打開、保存及退出 32.2.1 圖像打開 32.2.2 圖像保存 42.2.3 程序退出 42.3 圖像變換 42.3.1 傅里葉變換 42.3.3 離散余弦變換 52.4 圖像增強 52.4.1 空間域增強 62.4.2 頻率域增強 72.5 圖像分割 82.5.1 閾值分割 82.5.2 梯度分割 82.6 圖像變形 102.6.1 翻轉 102.6.2 旋轉 112.7 其它常用處理 112.7.1 亮度 112.7.2 對比度 122.7.3 截圖 132.7.4 底片效果 1
7、32.7.5 二值處理 133 3 結果分析144 4 心得體會14附錄15基于 MATLAB 數字圖像處理平臺設計MATLAB 是近幾年來國內外使用最為廣泛的優秀科技軟件之一。其語法結構簡單, 具有極強的數值計算、數據分析、圖形繪制及圖像處理等功能。具有高質量的圖形可視 化效果和強大的界面設計能力。 因而在數字圖像處理中有著其他語言所無法比擬的優 勢。 圖形用戶界面 (GUI )是提供人機交互的工具和方法。利用GUI 制作圖像處理軟件能夠實現圖像處理的各個內容,主要有:圖像空間變換:鄰域和塊操作;二值圖像操 作;線性濾波和濾波器設計;變換域處理;圖像分析和增強;圖像恢復;圖像壓縮;形 態學運
8、算等。1 緒論1.1 設計要求及目的設計要求:以 MATLAB 作為工具,開發一個圖像處理軟件。主要進行圖像處理的常 用算法。由以下模塊組成:圖像變換;圖像增強;圖像分割。按各個模塊進行功能擴 充,也可加入其它常用的圖像處理功能。設計目的:MATLAB 軟件為數字圖像處理提供了功能豐富的工具,應用MATLAB 友好的界面和實用高效的指令及模塊,可以使人較快地認識、理解圖像處理的相關概念, 逐步掌握圖像處理的基本方法。此課題的設計目的是綜合運用MATLAB 工具箱實現圖像處理的 GUI 程序設計,學會和掌握 GUI 的圖像處理平臺設計。1.2 課題分析此課題利用 MATLAB 的 GUI 程序設
9、計一個簡單實用的圖像處理程序。該程序具備圖 1.1 整體功能框圖圖像處理的常用功能,以滿足用戶的使用。程序實現的圖像處理功能分為 五個模塊:圖像變換、圖像增強、圖像分割、圖像變形以及其它常用處理。如 圖 1.1 所示。除以上的數字圖像處理的功能外,該程序還要實現圖像的讀取顯示、圖像 的保存及退出等基本功能。從而實現完整的數字圖像平臺設計,具有更好的交 互性。1.3 總體設計軟件的總體設計界面主要分為兩個部分:顯示區域與操作區域。具體界面 布局如圖 1.2所示。圖 1.2 界面布局顯示區域:定義兩個圖形區域,左面為待處理圖片來顯示載入的原圖像,右面為通過處理后的圖像。操作區域:通過菜單欄的編輯實
10、現對圖像的各種處理,分為文件和編輯兩 大部分。通過文件中的打開操作顯示出處理前的圖像,在編輯中選擇某個圖像 處理功能后,將在已處理圖片下就會顯示出處理后的圖片。2 具體設計2.1 菜單設計通過 Menu Editor 創建菜單欄如圖 2.1 所示。菜單的設計主要分為兩大部 分:文件和編輯。文件包含圖像的打開、保存和退出;編輯包含圖像處理功能 的五個模塊:圖像變換、圖像增強、圖像分割、圖像變形及其它常用處理,還 有各個模塊的分支。通過此菜單來控制顯示或隱藏功能鍵。以圖 2.1 的傅里葉變換為例,當添加上某一菜單后,修改名稱為傅里葉變換,句柄為 FFT,從而會在 M 文件中自動生成傅里葉變換的功能
11、函數functionFFT_Callback(hObject, eventdata, handles)在此函數下編寫能夠實現傅里葉變換 的程序便能實現對圖像的傅里葉變換。圖 2.1 菜單欄2.2 圖像的打開、保存及退出2.2.12.2.1 圖像打開圖像的打開主要是通過以下程序來實現的:“filename,pathname=uigetfile(*jpg。*.bmp。*tif。*.*,載入圖像)。” 選擇相應路徑打開圖像;file=pathname,filename。x=imread(file)。”讀取選中的圖像;imshow(x)。”在顯示區域上顯示圖像。具體操作如圖 2.2 所示,選擇 文件”
12、菜單中的 打開”后,出現 載入圖像”,選中圖 2.2 圖像的打開想要處理的圖片后點擊打開”即可在顯示區域中顯示出處理前的圖片。222222 圖像保存圖像的保存主要是通過以下程序來實現的:“sfilenamsfilepath=uiputfile(*jpg。 *bmp。 *tif。 *,保存圖像文件 ,untitled.jpg)。 ”選擇圖像文件保存的路徑與格式;Sfilefullname=sfilepath ,sfilename。imwrite(handles.img,sfilefullname)。”實 現對圖像的保存。具體操作如圖 2.3 所示,選擇 文件”菜單中的 保存”后,出現 保存圖像文
13、 件”修改文件名后點擊保存”即可將處理后的圖像保存到keshe 的文件夾圖 2.3 圖像的保存下。2.2.32.2.3 程序退出程序的退出是通過“cl。” “closeall。” Close(gcf)。” Clear。”這些指令來清除指令窗,窗口,內存變量及函數。具體操為選擇 文件”菜單中的 退出”后,便關閉了執行界面的窗口并清除 了指令窗的所有指令。2.3 圖像變換2.3.12.3.1 傅里葉變換傅里葉變換(FFT)實際上是將信號 f(t)與一組不同頻率的復正弦作內積,這 一組復正弦是變換的基向量,傅里葉系數或傅里葉變換是f(t)在這一組基向量上的投影。在圖像處理技術的發展過程中,FFT 起
14、著十分重要的作用。它是線性系統分析的一個有力工具,它能夠定量地分析諸如數字圖像之類的數字化系 統。FFT 主要分為連續傅里葉變換和離散傅里葉變換,在數字圖像處理中經常 用到的是二維離散傅里葉變換。程序中主要是通過二維離散傅里葉變換函數fft2(),變換后四個角部分對應于低頻成分, 中央部分對應于高頻成分。 若想使低頻成分出現在中央位置, 則 通過函數 fftshift()將圖像頻譜中心從矩陣的原點移到矩陣中心。從而實現圖像 的二維傅里葉變換。具體程序見附錄。原圖像及傅里葉變換后的圖像如圖2.4所示。圖 2.4 傅里葉變換2.3.32.3.3 離散余弦變換離散余弦變換(DFT)在圖像處理中占有重
15、要的位置,它實際上是傅里葉變換 的實數部分,但是它比傅里葉變換有更強的信息集中能力。對于大多數自然圖 像,DCT 能將大多數的信息放到較少的系數上去,因此就更能提高編碼的效 率。程序中主要是通過灰度變換函數rgb2gray()及二維離散余弦變換函數dct2()來實現對圖像的二維離散余弦變換,具體程序見附錄。其變換后的圖像低頻能量都集中在左上角區域,而向著右下角方向,頻率越來越高。原圖像及離散余圖 2.5 離散余弦變換弦變換后的圖像如圖 2.5 所示。2.4 圖像增強圖像增強是圖像處理中的一類基本技術,其主要的目的改善圖像的視覺效 果,提高圖像的清晰度。圖像增強能夠擴展對比度,增強圖像中對象的邊
16、緣, 消除或抑制噪聲或保留圖像中感興趣的某些特性而抑制另一些特性等。圖像增 強方法按其處理所進行的空間不同,可分為空間域法和頻率域法。2.4.12.4.1 空間域增強空間域法是在空間域內直接對像素灰度值進行運算處理,常用的空間域法有圖 像的直接灰度變換和直方圖均衡化,下面分別介紹兩種空域上的圖像增強方 法。(1)灰度變換通過灰度變換可使圖像動態范圍加大,圖像對比度擴展,圖像清晰,特征 明顯,大大改善人眼的視覺效果。程序中主要通過灰度處理函數 rgb2gray ()對圖像進行灰度變換,將彩色圖像 轉換成灰度圖像。原圖像及灰度圖像如圖 2.6 所示。圖 2.6 灰度變換(2)直方圖均衡化直方圖均衡
17、化是對原始圖像中的像素灰度作某種映射變換,使變換后的圖 像灰度的概率密度是均勻分布的,即變換后圖像是一幅灰度級均勻分布圖像, 這意味著圖像灰度的動態范圍得到了增加,從而可提高圖像的對比度。程序中主要通過灰度處理函數 rgb2gray ()先對圖像進行灰度變換,然后通過 直方圖均衡化處理函數 histeq ()對灰度圖像進行直方圖均衡化處理。原圖像及直 方圖均衡化后的圖像如圖 2.7 所示。圖 2.7 直方圖均衡化2.4.22.4.2 頻率域增強頻率域法就是在圖像的某種變換域內,對圖像的變換值進行運算,然后通 過逆變換獲得圖像增強效果。這是一種間接處理方法,一般采用二維數字濾波 方法來進行頻率域
18、的圖像增強。(1)低通濾波圖像的邊緣以及噪聲干擾在圖像的頻域上對應于圖像傅里葉變換中的高頻 部分, 而圖像的背景區則對應于低頻部分, 因此可以用頻域低通濾波法去除圖 像的高頻成分, 以去掉噪聲,使圖像平滑。程序中采用二階巴特沃斯低通濾波器,先用函數fft2()對圖像進行二維離散傅里葉變換,然后通過低通濾波器進行濾波后,再對濾波后的圖像數據通過 ifft2()進行傅里葉反變換,從而得到低通濾波后的圖像。如圖2.8 所示。圖 2.8 低通濾波器(2)高通濾波圖像中的邊緣或線條與圖像頻譜中的高頻分量相對應, 因此采用高通濾波 器讓高頻分量順利通過,可以使圖像的邊緣或線條變得更清楚,可實現圖像的 銳化
19、。程序中采用二階巴特沃斯高通濾波器,與低通濾波過程相同,先進行傅里 葉變換,然后通過高通濾波器,再進行傅里葉反變換,從而得到高通濾波后的 圖像,具體程序見附錄。原圖像及濾波后的圖像如圖 2.9 所示。圖 2.9 高通濾波器2.5 圖像分割圖像分割是一種重要的圖像分析技術。為了識別和分析圖像中的目標,需要將 它們從圖像中分離提取出來,在此基礎上才有可能進一步對目標進行測量和對 圖像進行利用。圖像分割就是指把圖像分成各具特性的區域并提取出感興趣目 標的技術和過程。2.5.12.5.1 閾值分割灰度閾值法是把圖像的灰度分成不同的等級,然后用設置灰度閾值的方法 確定有意義的區域或欲分割物的邊界,該方法
20、中最簡單的就是二值化的閾值分 割。程序中先通過函數 graythresh()即用 Otsu 方法計算出全局圖像閾值,再通過 函數im2bw(,)基于一定閾值將圖像轉換成二值圖像。原圖像及閾值分割后的圖 像如圖 2.10 所示。圖 2.10 閾值分割2.5.22.5.2 梯度分割梯度分割即對圖像進行邊緣檢測,圖像邊緣對圖像識別和計算機分析十分有 用。邊緣能勾劃出目標物體,使觀察者一目了然。邊緣蘊含了豐富的內在信 息,是圖像識別中抽取圖像特征的重要屬性。(1) Roberts 算子程序中先通過函數 rgb2gray()對圖像進行灰度變換,再通過函數 edge( ,roberts)即用Roberts
21、 算子識別灰度圖像的輪廓,從而實現對圖像的邊緣圖 2.11 Roberts 算子檢測。如圖 2.11 所示。(2) Canny 算子程序中先通過函數 rgb2gray()對圖像進行灰度變換,再通過函數 edge( ,canny)即用Canny 算子識別灰度圖像的輪廓,如圖2.12 所示。(3) Sobel 算子程序中先通過函數 rgb2gray()進行灰度變換,再通過函數 edge( ,sobel)即用Sobel 算子識別灰度圖像的輪廓,從而實現對圖像的邊緣檢測。如圖2.13 所示。圖 2.12 Canny 算子圖 2.13 Sobel 算子2.6 圖像變形2.6.12.6.1 翻轉上下翻轉:
22、程序中通過函數flipud()對圖像數據矩陣進行上下翻轉,由于彩色圖像不能直接進行矩陣翻轉,因此需要先將彩色圖像通過灰度變換處理后再 進行翻轉,原圖及翻轉后的圖像如圖2.14 所示。圖 2.14 上下翻轉左右翻轉:與上下翻轉相同,先將圖像進行灰度變換后,通過函數 將圖像數據矩陣進行左右翻轉,原圖及翻轉后的圖像如圖2.15 所示圖 2.15 左右翻轉262262 旋轉打開圖片后,選擇 編輯”菜單 圖像變形”中的 旋轉”后,執行界面會出現 調整角度的輸入對話框,在對話框中輸入任意角度,則原圖像將會旋轉任意角 度,輸入正數逆時針旋轉,輸入負數順時針旋轉。以90 為例,在對話框中輸入90,則圖像逆時針
23、旋轉 90,如圖 2.16 所示。在程序中由 prompt=調整角度。來顯示輸入對話框,函數 inputdlg()創建 對話框和輸入框,輸入角度后通過函數 imrotate()進行相應的旋轉。圖 2.16 圖像旋轉2.7 其它常用處理2.7.12.7.1 亮度當在 編輯”菜單中選擇 亮度”后,會出現調整倍數的輸入對話框,默認值為 1,在對話框中輸入數值后圖像便會相應變換亮度。輸入數值小于1 時,圖像變亮,輸入數值大于 1 時,圖像變暗。程序中通過函數 imadjust()來實現,即 將原圖像的亮度值以輸入數值描述的曲線關系映射到新的數值中,從而實現亮 度的變化。以輸入值 0.5為例,變換后的圖
24、像如圖 2.17 所示。fliplr()圖 2.17 亮度調整2.7.22.7.2 對比度對比度增強:選擇菜單中 對比度增強”后,彈出輸入參數的對話框,以輸 入參數 2 為例,對比度增強后的圖像如圖2.18 所示。程序中通過乘法函數immultiply()將原圖像數據與輸入數值相乘,從而增強圖像的對比度。圖 2.18 對比度增強對比度減弱:選擇菜單中 對比度減弱”后,彈出輸入參數的對話框,同樣 以輸入參數2 為例,對比度減弱后的圖像如圖 2.19 所示。程序中通過除法函數 imdivide()將原圖像數據與輸入數值相除,從而減弱圖像的對比度。圖 2.19 對比度減弱2.7.32.7.3 截圖當
25、選擇完菜單中的 截圖”后,鼠標箭頭會變成一個十字,能夠選擇想要截 取的圖像部分,選中后就會直接顯示出截取后的圖像,如圖2.20 所示。程序中圖 2.20 截圖通過函數 imcrop()來實現的,即返回圖像的一個裁剪區域,允許用戶以交互方 式使用鼠標選定要剪切的區域。2.7.42.7.4 底片效果程序中通過函數 imcompleme nt()對圖像數據矩陣進行取反運算,即可實現 底片效果,原圖像及底片效果的圖像如圖2.21 所示。圖 2.21 底片效果2.7.52.7.5 二值處理二值化即將彩色圖像轉換成只有0 和 1 兩個數值的圖像,程序中通過二值轉換函數 im2bw()將彩色圖像轉換為二值圖
26、像。原圖像及轉換后的二值圖像如圖 2.22 二值處理圖 2.22 所示。3 結果分析經過我們小組的不斷調試,軟件已經得到了完善,達到了課設的基本要求,基于 MATLAB 數字圖像處理平臺設計能實現的全部功能如下:(1) 設計圖形用戶界面,實現了圖像的打開、保存及退出(2) 實現了對圖像的傅里葉變換及離散余弦變換,其中離散余弦變換只能對灰度 圖像處理。(3) 實現了圖像空間域增強包括灰度變換和直方圖均衡化,還有圖像頻率域增強 包括低通濾波器和高通濾波器。其中直方圖均衡化,低通濾波和高通濾波均 只支持對灰度圖像處理。(4) 實現了圖像分割:閾值分割和梯度分割,梯度分割有Roberts 算子、 Ca
27、nny算子、Sobel 算子。其中梯度分割需要對圖像先進行灰度變換。(5) 實現了圖像的翻轉和旋轉。圖像的翻轉只支持灰度圖像。(6) 實現了圖像的亮度,對比度的調整,能夠對圖像截圖、做出底片效果及二值 化處理。實驗程序雖然基本實現了以上這些功能,但遺憾的是有些功能只支持對灰 度的圖像處理,還不能直接對彩色圖像進行處理。4 心得體會通過兩周的 MATLAB 課程設計實踐,使我對 MATLAB 的使用有了進一步 的了解和熟悉。還記得當初我們小組抽到這個題目的時候,每個人看到這個題 目都無所適從。雖然曾經學過關于數字圖像處理的課程,但對于 MATLAB 的 數字圖像處理的實際運用并不是很熟悉,特別是
28、對此次 GUI 設計更是沒有絲毫 接觸過的。雖然對課題感到很懵懂,但在指導老師的提示與指導后,我們開始找到了 解決問題的路徑。我們到圖書館借了幾本相關的書,又從網上收集了大量的資 料,為這次課設做了較為充分的準備,在參考了相關材料及程序后,我對自己 要做的課設內容有了進一步的了解,并對MATLAB 的使用有了更深的體會。當然,在課設的進行過程中,我們還是遇到了不少問題。例如,起初由于 我對句柄使用以及一些函數使用的不恰當,使得在對圖像文件的保存上就遇到 了問題,不過在我們小組的討論研究下輕松的就解決了。隨著課設的進行,對 matlab 的的熟悉度逐步加深。在基本功能已經完成的基礎上,我們開始進
29、行一 些擴張功能的嘗試,比如圖像的旋轉、翻轉,圖像亮度、對比度的調整,截圖 等功能,也實現了較為理想的結果。雖然這課題最終的功能還不是很完善,但是我還是較為滿意的。本次的課 程設計,不但鞭策著我去鞏固 MATLAB 的理論知識,還提高了我對 MATLAB 的實際操作運用,使得理論與實踐相結合,為進一步學 MATLAB 打下了堅實 的基礎。附錄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、)。建立一個名為警告的錯誤對話框,內容為 未 選中文件”return。elsefile=pathname,filename。 %將文件名和目錄名組合成一個完整的路徑 x=imread(file)。%讀入圖像set(handles.axes1,HandleVisibility,ON)。 %設置圖形對象屬性,可從命令窗口中和 GUIs 中訪問axes(handles.axes。%定義圖形區域 axeslimshow(x)。顯示圖像set(ha ndles.axes1,Ha ndleVisibility,OFF。 % 設置圖形對象屬性,不可從命令窗口中和 GUIs 中訪問axes(handles.a
34、xes2) %定義圖形區域 axes2imshow(x)%顯示圖像handles.img=x。把圖像發給 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)%關閉所有句柄可見的窗口close(gcf)%關閉當前窗口clear)%清除內存變量和函數% - 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)%返回要保存 的圖 像文 件%如果不是取消保存%將文件名和目錄名組合成一個完整%保存圖像%彈出一個名為保存圖像文件的對
37、話框,內容為 取消保存? ”*.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、像矩陣轉換成雙精度浮點類型%對圖像進行二維離散傅里葉變換fc1=fftshift(f1) 。心i=log(1+abs(fc1)。imshow(i)。% 將變換后的圖象頻譜中心從矩陣的原點移到矩陣的中%對變換后的圖像矩陣數據求絕對值后取自然對數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。)%獲取圖像%灰度變換%對圖像進行二維離散余弦變換%對變換后的圖像矩陣數據求絕對值后取自然對數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。)%定義圖形區域 axes2T=getimage。%從坐標軸獲取圖像數據x=rgb2gray(handles.img)。 %利用 rgb2gray 函數對源圖像進行灰度處理 imshow(x) 。%
42、顯示圖像xlabel(灰度圖像)。% x 軸名為 灰度圖像”handles.img=x。%把圖像發給 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。)%定義圖形區域 axes2T=getimage。%從坐標軸獲取圖像數據x=rgb2gray(handles.img)。 %對圖像進行灰度處理h=histeq(x)。imshow(h)。%對圖像進行直方圖均衡化處理%顯示圖像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。%數據類型轉換為雙精度數值%二維離散傅里葉變換%將變換后的圖象頻譜中心從矩陣的原點移到矩陣的中心%返回矩陣 g 的大小,即 M 為行數,N 為列數 %二階巴特沃斯低通濾波器%截止頻率 50Hzm=fix(M/2)。n=fix(N/2)。取矩陣 g 的行數和列數一半的整數for i=1:Mfor j=1:N% 循環d=sqrt(i-m)A2+(j-n)2)。h=1/(1+0.414*(d/d0)A(2*nn)。計算低通濾波器傳遞函數result(i,j)=h*g(i,j) 。%結果返回到 resultend end%將圖象頻譜中心從矩陣的中心
46、移到矩陣的原點%二維離散傅里葉反變換%把矩陣 y2 實部轉換成 8 位無符號數據%顯示低通濾波后的圖像 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 句柄更新%獲取圖像%灰度變換%數據類型轉換為雙精度數值 %二維離散傅里葉變換%將變換后的圖象頻譜中心從矩陣的原點移到矩
48、陣的中心 %返回矩陣 g 的大小,即 M 為行數, N 為列數 %二階%截止頻率 25Hzn=fix(N/2) 。for j=1: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) 。點八、y2=ifft2(result) 。y3=uint8(real(y2)。imshow(y3)。xlabel( 高 通 濾 波 圖 像 )。handles.img=y3。guidata(hObject,handles)。% -%結果返回到 result%
49、 將圖象頻譜中心從矩陣的中心移到矩陣的原%二維離散傅里葉反變換%把矩陣 y2 實部轉換成 8 位無符號數據%顯示高通濾波后的圖像%把 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。%從坐標軸獲取圖像數據%用 Otsu 方法計算全局圖
50、像閾值%基于一定閾值把圖像轉換為二值圖像%顯示閾值分割后的圖像 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。%從坐標軸獲取圖像數據R1=rgb2gray(T)。%灰度變換R2=edge(R1,roberts。用 roberts 算子識別灰度圖像的輪廓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)。%從坐標軸獲取圖像數據%灰度變換%用 canny 算子識別灰度圖像的輪廓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)。%從坐標軸獲取圖像數據%灰度變換%用 sobei 算子識別灰度圖像的輪廓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。%從坐標軸獲取圖像數據prompt=調整角度。用于顯示可提示用戶進行輸入角度的對話框defans=0。%對話框內顯示默認數值為 0p=inputdlg(prompt,input,1,defans)。%創建并打開標題為 input 的輸入對話框, 包含 “調整角度 ”, 輸入框為 1 行,對話框中默認顯示數值為 0 p1=str2num(p1) 。 %將字符串
57、轉換為數值f=imrotate(handles.img,p1,bilinear,crop)。 %將圖像 handles.img 饒圖像的中心點旋轉 p1 度,p1 為正數逆時針旋 轉,為負數順時針旋轉, bilinear 為使用雙線性插值法, crop 為旋轉 后輸出圖像尺寸與原圖像尺寸一樣 imshow(f)。 %顯示旋轉后圖像xiabei(旋轉后的圖像)。 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。%從坐標軸獲取圖像數據prompt=調整倍數。 %用于顯示可提示用戶進行輸入亮度倍數的對話框 defans=1。%對話框內顯示默認數值為 1p=inputdlg(prompt,input,1,defans)。% 創建并打開標題為 input 的輸入對話框,包含 “調整倍數 ”,輸入框為 1 行,對話框中默認顯示數值為1p1=str2num(p1) 。%將字符串轉換為數值y=imadjust(handle
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《審計理論與實踐》課件
- 臨床痛風患者飲食控制措施與食物選擇
- 2025浙江省采購合同范本
- 《示范課件答辯》課件
- 2025年:探討委托開發合同的法律風險與管理策略
- 2025杭州市食用菌菌棒訂購合同示范文本
- 《中國制造課件展示》
- 跌倒護理安全警示教育專題會
- 2025年建筑工地門衛勞動合同
- 《創新性烘焙技術的探索與應用》課件
- 2024年中考數學模擬考試試卷-帶答案(北師大版)
- 含油污水處理操作規程
- 基于STM32的停車場智能管理系統
- 起重機械安全風險管控清單(日管控、周排查、月調度)
- 中藥飲片處方審核培訓課件
- 客戶回訪表完整版本
- 2024年天貓運營月度計劃
- 毒蛇咬傷事故專項應急預案
- 巖溶地區建筑地基基礎技術規范
- 數學家牛頓的故事
- 新人教版高二語文選擇性必修下冊必背篇目
評論
0/150
提交評論