隨著計算機與信息技術的高速發展,數字圖像處理技術得到快速的發展,目前已成為計算機科學、醫學、生物學、工程學、信息科學等領域各學科之間學習和研究的對象。但是數字圖像處理這門學科需要編寫大量的代碼,才能顯示數字圖像處理的效果,例如圖像增強,圖像復原等。隨著 GUI(圖形用戶界面)的廣泛流行,構想設計一個交互式界面,通過窗口、菜單方便地進行操作,展示 MATLAB 平臺下的開發技術。一個好的界面不僅有利于用戶快速掌握程序的操作流程,有效地使用程序,也有利于開發者在科研實踐和工程實踐中的廣泛應用,尤其是在圖形處理技術、人工智能技術等方面。本系統設計的 GUI 實現了對圖像處理實驗的演示,主要功能有:圖像取反,灰度處理,直方圖均衡化和直方圖規定化,裁剪,基本鏡像和旋轉,縮放,亮度、對比度調節,幾種噪聲的添加與濾除,邊緣信息檢測等。
1.GUI 平臺介紹
圖形用戶界面(Graphical User Interfaces, GUI)是MATLAB 軟件中提供人機交互的工具和方法,包含窗口、光標、按鍵、菜單、說明文字等對象構成的一個用戶界面。如果讀者想向別人提供應用程序,想進行某種技術、方法、效果的演示,想制作一個可供反復使用且操作簡便的專用工具,那么 MATLAB 軟件中的 GUI 為程序開發者打開了一扇窗口,不但可以提供圖文并茂的交互界面,簡化程序編寫過程,并且提高開發者的工作效率。GUI 主要由七部分組成:版面設計器、屬性編輯器、菜單編輯器、調整工具、對象瀏覽器、Tab 順序編輯器、M 文件編輯器。
實現一個 GUI 的過程包括兩個基本任務:一個是 GUI的組件布局,另一個是 GUI 組件變成。在 MATLAB 中,Guide(Graphical User Interface Development Environment,圖形用戶界面開發環境)是一個組件布局工具集,能夠生成用戶所需的組件資源并保存在一個 FIG 文件中;其次,Guide還可以生成一個包含 GUI 初始化和發布控制代碼的 M 文件,該文件為回調函數(用戶在圖形界面中激活某一控件時要執行的函數)提供了一個框架.FIG 文件,擴展名為。Fig,它包含對 GUI 和 GUI 組件的完整描述;M 文件,擴展名為。M,它包含控制 GUI 的代碼和組件的回調事件代碼。
這兩個文件與 GUI 顯示和編程任務相對應。在版面設計器中創建 GUI 時,內容保存在 FIG 文件中;對 GUI 編程時,內容保存在 M 文件中.圖 1 是 GUI 程序運行的主要流程圖。只有清楚圖形用戶界面的運行流程,才能對整個程序編寫運籌帷幄,有助于高效編寫程序代碼?!緢D1】
2.GUI 平臺的設計
該系統是用于演示數字圖像處理課程中具體的處理效果,例如圖像增強、圖像變換及圖像還原等。它以窗口的形式提供給用戶一個可視化的操控平臺,從功能上主要分為兩個模塊,即用戶管理界面,效果參數設置界面。完成后的效果圖如圖 2 所示?!緢D2】
2.1 用戶管理界面模塊
用戶管理界面包括“打開”、“保存”、“原圖”、“撤銷”、“退出”5 個按鈕。
(1)打開文件的代碼主要用 uigetfile()函數,uigetfile()函數可以設置文件類型,設置文件路徑名,返回的文件名等。這部分主要通過[filename,pathname]=uigetfile({'*.jpg';'*.bmp';'*tif';'*.*'},'openfile‘)選擇相應路徑打開圖像;通過file=[pathname,filename]; x=imread(file);讀取選中的圖像;最后,通過 imshow(x);在顯示區域上顯示圖像。
(2)保存文件的代碼主要用 uiputfile()函數,可以獲取保存數據名稱,并實現任意路徑保存。與打開文件類似,通過對話框的形式來保存圖像數據。本段程序主要通過使用[filename,pathname]=uiputfile( {'*.jpg';'*bmp';'*.tif';'*.*'},'save','untitled.jpg' ) ; 語 句 中 的uiputfile 函數選擇文件名和路徑,并用 i=getimage(gca);取出坐標 2 變換后的圖像數據保存到變量 i,最后用 imwrite函數,把數據 i 存到指定的目錄下。
(3)撤銷按鈕的代碼通過設置一個全局變量 T,通過T=getimage 把上一次操作后的圖像信息賦予全局變量 T.點擊“撤銷”鍵時,通過 imshow(T);將圖像返回到上一步操作后的狀態。達到撤銷的效果。
(4)原圖的代碼實現通過設置一個全局變量 S,保存原始圖像路徑,在點擊“還原”鍵時,重新讀取該全局變量。并通過 f=imshow(y);,將還原的圖像顯示,達到還原的效果。
(5)退出的代碼實現通過通過 clc 清屏,用 close 關閉窗口,用 clear 清除變量,實現退出功能.
2.2 效果參數設置界面模塊
該模塊主要包括圖像灰度、直方圖處理,圖像幾何變換,添加噪聲及濾波和圖像形態學處理部分。主要實現圖像取反、灰度處理、直方圖均衡化和直方圖規定化、圖像裁剪、水平和垂直鏡像、圖像旋轉、縮放和亮度調節等功能。
(1)圖像取反,對圖像求反是將原圖灰度值翻轉,例如對灰度圖像取反,則直觀效果就是使黑變白,使白變黑。主要程序是通過 f=imcomplement(*.img)函數實現圖像取反。Imshow(f);顯示結果。
(2)灰度處理,彩色圖像轉化成為灰度圖像的過程稱為圖像灰度化處理。主要程序是通過 x=rgb2gray(*.img)函數實現,語句中的 rgb2gray(*.img)函數,將圖像轉化為灰度圖像,通過 imshow(x)顯示結果,實現灰度圖像的轉化。
(3)直方圖均衡化,直方圖均衡化處理是把圖像對比度加大,增大圖像反差,使圖像許多細節變得清晰。直方圖均衡化是圖像增強中主要的一種方法。直方圖均衡化通過histeq(x)函數實現,由于此函數只能對灰度圖像進行直方圖均衡,因此應先將圖像轉化為灰度圖像。
(4)圖像幾何變換包括鏡像、縮放、旋轉等效果。圖像鏡像包含水平鏡像和垂直鏡像。圖像縮放有三種方法:最近鄰插值算法,雙線性插值法和雙三次插值法。圖像縮放的函數是 imresize( )。圖像旋轉采用 imrotate( )函數對圖像進行旋轉。
(5)添加噪聲,在數字圖像處理中,常用的噪聲類型有:椒鹽噪聲、高斯噪聲。椒鹽噪聲椒鹽噪聲是由圖像傳感器,傳輸信道,解碼處理等產生的黑白相間的亮暗點噪聲.添加椒鹽噪聲通過 f=imnoise(*.img,'salt & pepper',p1);實現。P1 參數通過輸入對話框的形式得到。參數值取 0 至 1 范圍內任意數,輸入值越大,噪聲越明顯。高斯噪聲,高斯噪聲是指它的概率密度函數服從高斯分布(即正態分布)的一類噪聲.添加高斯噪聲通過 f=imnois(e*.img,'gaussian',p1,p2);實現。
(6)圖像濾波,圖像濾波主要包括中值濾波、均值濾波、逆諧濾波等,即在盡量保留圖像細節特征的條件下對目標圖像的噪聲進行抑制,是數字圖像處理中的重要操作。中值濾波,中值(median)濾波器用模板所覆蓋的區域中像素的中間值作為濾波結果,中值濾波的主要功能就是讓與周圍像素灰度值的差比較大的像素改取與周圍像素值接近的值,從而可以消除孤立的噪聲點??梢?,中值濾波對消除脈沖噪聲有良好效果。中值濾波通過 k=medfilt2(*.img);實現。均值濾波,主要采用 f=imfilter(*,fspecial('average',p))函數實現,p 是采用的模版數。
(7)圖像形態學處理,包括圖像腐蝕、膨脹、銳化、退化、邊緣檢測等。邊緣檢測是圖形處理和計算機視覺中的基本問題,邊緣檢測的目的是標識數字圖像中亮度變化明顯的點.邊緣檢測通過 f=edge(*.img,'canny’);語句中的 edge函數進行邊緣檢測,此功能可對灰度圖像進行處理,在處理前需將圖像轉化為灰度圖像“canny”是指邊緣檢測的類型。
3.結束語
本系統把數字圖像處理課程主要的實驗內容進行了程序編寫,最終完成了人機交互界面 GUI 的設計。在使用方面,可以直接把該系統應用于數字圖像處理課程的輔助性教學中,使得課程的講授和分析過程更直觀可視化,更易控制和更容易接受。
[參考文獻]
[1] 陳垚光,毛濤濤,王玲。 精通 MATLAB GUI 設計[M]. 北京:電子工業出版社,2013.
[2] 技術蛀蟲[EB/OL].
[3] 馬曉路,劉倩,胡開云,等。 MATLAB 圖像處理從入門到精通[M]. 北京:中國鐵道出版社,2013.
[4] 蘇岫,趙冬至,黃鳳榮,等。 基于高空間分辨率的紅樹林衛星遙感監測技術進展[J]. 熱帶海洋學報,2011,(3)。
[5] 譚永杰,曹彥,王永亮 圖像噪聲類型識別研究[J]. 周口師范學院學報,2013,(5)。
[6] 盧萌,趙合計。 一種改進的小波自適應邊緣檢測算法[J]. 計算機應用研究,2011,(1)。