MATLAB GUI平台


研究生階段寫的一個小文章,內容膚淺,不過轉載請注明,謝謝!!

摘要:本文主要介紹了基於MATLAB的圖形用戶界面(GUI)來制作圖像處理軟件平台的具體過程和相關技巧,文章主要從幾個方面展開論述:第一,簡單介紹下GUI與GUIDE;第二,介紹以下GUIDE的模板及其操作方法;第三,詳細闡述一下圖像處理軟件平台的制作方法。本文的GUI例子所制作的圖像處理軟件可以實現的功能有:五種常用的邊緣檢測、灰度直方圖的顯示、灰度直方圖的均衡化、對比度自適應直方圖的均衡化、圖片的二值化以及彩色圖片的灰度化。文章基本介紹了以上的內容,關於軟件還有許多未能實現的功能有待於日后的逐步開發,從這個簡單的實例可以讓讀者從感性的方面充分了解MATLAB的圖形用戶界面的相關功能,同時為打算深入學習這一套MATLAB工具集的讀者做一個鋪墊。

關鍵詞:圖形用戶界面;圖像處理;邊緣檢測;MATLAB工具集

一、引言

圖形用於界面(Graphical User Interfaces,GUI)是提供人機交互的工具和方法。GUI是包含圖形對象(如窗口、圖標、菜單和文本)的用戶界面。以某種方式選擇或激活這些對象時,通常會引起動作或者發生變化。一個設計優秀的GUI能夠非常直觀的讓用戶知道如何操作MATLAB界面,並且了解設計者的開發意圖。MATLAB的GUI為開發者提供了一個不脫離MATLAB的開發環境,有助於MATLAB程序的GUI集成。這樣可以使開發者不必理會一大堆煩雜的代碼,簡化程序,但是同樣可以實現向決策者提供圖文並茂的界面,甚至達到多媒體的效果。可以說MATLAB提供了一個簡便的開發環境,可以讓開發者快速上手,提高了開發者的工作效率。

所謂的GUIDE就是圖形用戶界面開發環境(Graphical User Interface Development Environment),它向用戶提供了一系列的創建用戶圖形界面的工具。這些工具大大簡化了GUI設計和生成的過程。GUIDE可以完成的任務有如下兩點:1)輸出GUI。2)GUI編程。GUIDE實際上是一套MATLAB工具集,它主要由七部分組成:版面設計器、屬性編輯器、菜單編輯器、調整工具、對象瀏覽器、Tab順序編輯器、M文件編輯器。

二、GUIDE的操作界面及使用方法的介紹

1.啟動GUIDE  在命令窗口中直接鍵入guide,啟動GUIDE,或者直接點擊MATLAB上   按鈕,會出現如圖1所示的GUIDE Quick Start對話框。利用GUIDE模板創建GUI,或者打開已經存在的GUI,單擊OK按鈕,打開版面設計工具,如圖2所示。在通常狀況下組件面板並不顯示出組件的名稱,如果需要顯示組件名稱,則進行下面的操作:從File菜單中選擇Preferences選項,勾選Show names in component palette選項即可。

 2GUI文件的介紹  GUIDE把GUI設計的內容保存在兩個文件中,它們在第一次保存或運行時生成。一個是FIG文件,擴展名為.Fig,它包含對GUI和GUI組件的完整描述;另外一個是M文件,擴展名為.M,它包含控制GUI的代碼和組件的回調事件代碼。這兩個文件與GUI顯示和編程任務相對應。在版面設計器中創建GUI時,內容保存在FIG文件中;對GUI編程時,內容保存在M文件中。通常情況下在版面設計器工具欄上單擊   圖標可以打開M文件編輯器。圖3所示的編輯器顯示了GUI with Axes and Menu模板的M文件的內容。

                       3.GUIDE環境的設置  用戶可以自定義GUIDE設計環境。在File菜單下選擇Preferences,打開如圖4所示的設置對話框,可以進行相應的設置。

 三、基於GUI的圖像處理軟件平台的設計過程

1.GUIDE版面設計器(即FIG文件)的設計  根據設計需要:首先拖拽兩個圖形窗口(Axes),一個作為待處理圖片區域,另一個作為已處理圖片區域;其次,拖拽六個電子按鈕(Radio Button),作為邊緣檢測操作按鈕以及一個Panel按鈕作為檢測按鈕的支撐面板;第三,拖拽三個按鈕(Push Button),作為灰度變化區域的按鈕;最后,拖拽五個按鈕(Push Button),作為選取/保存圖片及退出等操作按鈕。將上面的所有按鈕及圖形窗口合理的布局,達到美觀工整的效果,本文設計的GUIDE如圖5所示,然后運行一下GUI,系統會自動生成GUI文件。

 

 

 

                    圖5  圖像處理軟件的GUIDE版面

2.選取圖片按鈕的GUI設計  要想設計一個圖像處理的軟件,首先要考慮選取圖片,選取什么格式的圖片,這個是至關重要的,所以先介紹一下選取圖片按鈕的GUI設計方法。上面已經規划好了按鈕的位置,如果想在點擊選取圖片按鈕時,軟件給予響應,需要給按鈕輸入一定的程序代碼,設置代碼的方法如下:右鍵單擊選取圖片按鈕,選擇View Callbacks/ Callback,系統會自動帶設計者進入此按鈕的代碼輸入區域,在下面的空白處輸入如下代碼[1]

global im   %定義一個全局變量im

[filename,pathname]=...

    uigetfile({'*.*';'*.bmp';'*.tif';'*.png'},'select picture');  %選擇圖片路徑

str=[pathname filename];  %合成路徑+文件名

im=imread(str);   %讀取圖片

axes(handles.axes1);  %使用第一個axes

imshow(im);  %顯示圖片

寫完上述代碼后,保存M文件,然后運行GUI,現在就可以實現選擇圖片的功能了。當然有選取就要考慮存儲已處理好的圖片,這就引出了存儲圖片按鈕的GUI設計。

3.存儲圖片按鈕的GUI設計  同樣右鍵單擊存儲圖片按鈕,選擇View Callbacks/ Callback,進去M文件后在下面的空白處輸入如下代碼[2]

global BW  %定義處理后的圖片BW這個全局變量

[filename,pathname,filterindex]=...

    uiputfile({'*.bmp';'*.tif';'*.png'},'save picture');存儲圖片路徑

if filterindex==0

return  %如果取消操作,返回

else

str=[pathname filename];  %合成路徑+文件名

axes(handles.axes2);  %使用第二個axes

imwrite(BW,str);  %寫入圖片信息,即保存圖片

end

4.邊緣檢測按鈕組的GUI設計  本文設計的GUI主要包含了五種最常用的檢測算法(即roberts、sobel、prewitt、log、canny檢測),右鍵單擊Panel面板,選擇View Callbacks/ SelectionChangeFcn,進入M文件后在空白處輸入如下代碼[3]

global im

global BW  %定義全局變量

str=get(hObject,'string');  %拿到所選按鈕的名稱

axes(handles.axes2);   %使用第二個axes

 switch str   %選擇語句

    case'Initial'  %點擊原圖按鈕

        imshow(im);  %顯示原圖

    case'Roberts'  %點擊Roberts邊緣檢測按鈕

        BW=edge(im,'roberts');

        imshow(BW);

    case'Sobel'  %點擊Sobel邊緣檢測按鈕

        BW=edge(im,'sobel');

        imshow(BW);

    case'Prewitt'  %點擊Prewitt邊緣檢測按鈕

        BW=edge(im,'prewitt');

        imshow(BW);

    case'Log'  %點擊Log邊緣檢測按鈕      

        BW=edge(im,'log');

        imshow(BW);

    case'Canny'  %點擊Canny邊緣檢測按鈕

        BW=edge(im,'canny');

        imshow(BW);

end;

5.退出按鈕的GUI設計  同樣右鍵單擊退出按鈕,選擇View Callbacks/ Callback,進入M文件中,在空白處輸入如下代碼:

close(gcf)  %關閉當前Figure窗口句柄

其他按鈕代碼的設置都與上面敘述的大同小異,相關圖像處理程序代碼請參考MATLAB7.0圖形圖像處理[4],在這里將不再累述。

四、圖像處理軟件的運行舉例

    運行GUI,將生成圖像處理的軟件平台,它可以實現的功能有:五種常用的邊緣檢測、灰度直方圖的顯示、灰度直方圖的均衡化、對比度自適應直方圖的均衡化、圖片的二值化以及彩色圖片的灰度化。現在運行軟件並舉些相關圖像處理實例。

1.灰度圖片邊緣檢測的舉例  首先選擇一幅名字為lena256的灰度圖片,依次選擇五種檢測按鈕,比較各種邊緣檢測的處理效果,通過對比,發現Canny

算子對圖片的邊緣檢測效果比較好,其檢測效果如圖6所示,其它4種算子檢測后的效果如圖7所示。

                       2.灰度圖片的直方圖顯示舉例  選取名字為cameraman的灰度圖片,點擊直方圖的顯示按鈕,此灰度圖片的直方圖分布將顯示在第二個axes中,其處理結果如圖8所示。

                       3.彩色圖片的二值化和灰度化處理舉例  選取名字為Water lilies的彩色圖片,分別點擊二值化和灰度化按鈕並保存處理后的圖片,其處理后的圖片效果如圖9所示。

  

五、結束語

    由於MATLAB強大的工程計算和仿真能力,使越來越多的用戶從原來的開發環境轉到MATLAB上來。現在絕大多數MATLAB開發者都是一些從事一定領域的研究者,他們使用其他的開發環境設計GUI不緊編程復雜、而且學習困難,往往需要花費大量時間在編程上。但是,MATLAB提供了一個簡便的開發環境,可以讓開發着快速上手,提高了開發者的工作效率。本文詳細向讀者介紹了MATLAB的GUI的制作方法,通過這個例子,可以清楚的了解GUIDE的設計方法及相關圖像處理代碼的編輯,使讀者從感性的角度認識GUIDE的功能及使用方法,可以說為初學者提供了一個學習平台,打下堅實的基礎

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM