張鑫+吳娛+平子良+丁啟蘭+金小溪
摘 要: 數(shù)字圖像處理涉及面廣,實用性強的特點,而現(xiàn)有的數(shù)字圖像處理實驗平臺體系結構復雜,不適合初學者學習,缺少緊扣教材的實驗系統(tǒng),學生很難深入理解數(shù)字圖像處理的技術原理。在此采用Matlab的圖形用戶界面環(huán)境(GUI)設計,研制開發(fā)了相應的實驗教學平臺,其涵蓋了數(shù)字圖像處理中的幾何變換、圖像增強、圖像平滑、邊緣與分割、假彩色編碼等內(nèi)容。該實驗平臺界面友好,具有較強的可移植性和可擴展性,可以幫助學生更切實地掌握有關數(shù)字圖像處理的內(nèi)容。
關鍵詞: 數(shù)字圖像處理; Matlab; GUI; 實驗平臺
中圖分類號: TN919?34 文獻標識碼: A 文章編號: 1004?373X(2014)18?0006?03
Design digital image processing experimental platform based on Matlab GUI
ZHANG Xin, WU Yu, PING Zi?liang, DING Qi?lan, JIN Xiao?xi
(Century College, Beijing University of Posts and Telecommunications, Beijing 102101, China)
Abstract: According to the characteristics of digital image processing, the architecture of existing digital image processing experimental platform is too complex to be appropriate for abecedarian to learn. For lack of the experimental platform which is close to teaching material, students understand the theory of digital image processing hardly. A corresponding experimental platform was designed and developed by graphic user interface (GUI) of Matlab. It includes image geometric transformation, enhancement, smoothing, edge, segmentation and false color encoding in the process of digital image processing. This experimental platform has friendly interface, high portability and scalability, and can help students understand the content of the digital image processing profoundly.
Keywords: digital image processing; Matlab; GUI; experimental platform
0 引 言
《數(shù)字圖像處理》是電子信息類專業(yè)非常重要的專業(yè)課[1]。目前對該門課程的安排,各院校一般都是理論教學與實驗教學相結合[2],學生通過上機實驗,提高動手編程能力,增進對數(shù)字圖像處理流程的認識,加深對數(shù)字圖像處理理論知識的理解。在實驗教學中,各高校通常采用Matlab,VC++軟件等進行編程,由于缺少緊扣教材的實驗系統(tǒng),學生很難深入理解數(shù)字圖像處理的技術原理[3]。
基于上述分析,為便于學生系統(tǒng)、全面的掌握該門課程的基本原理和經(jīng)典算法,本文利用Matlab軟件創(chuàng)建數(shù)字圖像處理實驗教學平臺的用戶圖形界面(GUI),開發(fā)了一個針對教學的可視化、系統(tǒng)化“數(shù)字圖像處理實驗教學”軟件,為學生提供一個數(shù)字圖像處理技術的算法演示及模擬開發(fā)的GUI平臺,幫助學生掌握數(shù)字圖像處理的基本原理和內(nèi)容,熟悉并消化圖像處理的技術方法,了解圖像處理的較新研究領域。利用軟件Matlab平臺建設了一個集良好的可視化、開放性、交互性于一體的數(shù)字圖像處理實驗教學平臺。
1 實驗平臺的總體設計
本文利用Matlab的GUI來設計人機交互的圖形用戶界面[4],設有圖像顯示坐標軸、下拉菜單、按鈕等功能來完成不同功能模塊的實現(xiàn)和函數(shù)的調用。
1.1 實驗平臺總體結構
該實驗平臺以北京郵電大學世紀學院《數(shù)字圖像處理》這門課程的內(nèi)容為基本點,結合實驗教學的課時安排,按照圖像處理技術實驗教學的特點來設計該實驗平臺系統(tǒng)的整體框架[5]。
該實驗平臺具體框圖如圖1 所示。
圖1 基于Matlab GUI的數(shù)字圖像處理實驗平臺系統(tǒng)結構圖
此實驗平臺的主界面采用Matlab GUI菜單項設計,在主界面中點擊任一子模塊,就可打開相應子模塊界面,具體界面實現(xiàn)如圖2所示。
圖2 實驗平臺主界面設計圖
該實驗平臺主要包括圖像處理中的幾何變換、圖像增強、圖像平滑、邊緣與分割、假彩色編碼等模塊內(nèi)容,其中,幾何變換模塊主要包含了圖像平移、圖像鏡像、圖像旋轉、圖像錯切、比例縮放、復合變換等功能;圖像增強由線性變換、行對數(shù)變換、直方圖均衡化、直方圖規(guī)定化、索引/二值圖像等5個功能塊組成;圖像平滑主要包括模擬噪聲生成、鄰域平均、中值濾波、巴特沃斯低通濾波、指數(shù)型低通濾波、梯形低通濾波、Sobel 算子濾波、空域高通濾波等功能模塊;邊緣與分割分為圖像分割、Hough變換、邊緣檢測等3個模塊;假彩色編碼包括RGB空間偽彩色編碼、灰度彩色變換法編碼和頻率偽彩色編碼等三個功能模塊。
1.2 功能設計
圖像的幾何變換是指圖像處理中對圖像平移、旋轉、放大和縮小[6]這些簡單變換以及變換中灰度內(nèi)插處理等。圖3所示為在圖像幾何變換模塊中,對選定圖像進行復合變換的效果圖。該復合變換式將原有圖像向下平移50像素,向右平移50像素,并用白色填充空白部分,再對其做垂直鏡像,然后旋轉30°。該變換的主要代碼如下:
B(50+1:H(1),50+1:H(2),1:H(3))=I(1:H(1)?50,
1:H(2)?50,1:H(3));
C(1:H(1),1:H(2),1:H(3))=B(H(1):?1:1,
1:H(2),1:H(3));
D=imrotate(C,30,′nearest′);
圖3 幾何變換中的復合變換效果圖
圖4所示為圖像增強功能模塊中的灰度圖像線性變換子模塊處理界面,該模塊不僅可以處理灰度圖像,還可處理彩色圖像。在選擇該算法時,實驗平臺會先判斷輸圖像是否為灰度圖像,若是,則直接處理圖像,若不是,則會先彩色圖像轉換為灰度圖像,再做后續(xù)處理。其m文件部分代碼如下:
axes(handles.axes_dst) ;
d = length(size(img_src));
if d==3
image=rgb2gray(img_src);
elseif d==2
image=img_src;
end
J=imadjust(image,[0.15 0.5],[0 1]);
imshow(J);title(′線性變換后的灰度圖′);
axes(handles.axes_srcl) ;
imhist(image);title(′原灰度直方圖′);
axes(handles.axes_dstl) ;
imhist(J);title(′線性變換后的灰度直方圖′);
setappdata(handles.figure_zengqiang,′bChanged′,true);
set(handles.srcl_save,′Enable′,′on′);
set(handles.dstl_save,′Enable′,′on′);
圖5所示為圖像邊緣檢測模塊界面,該界面可同時顯示三種不同算子實現(xiàn)圖像邊緣檢測的效果圖及原圖,以便學生在實驗的過程中進行直觀對比。其主要代碼如下:
BW1=edge(image,′sobel′,0.1);
BW2=edge(image,′roberts′,0.1);
BW4=edge(image,′log′,0.01);
圖4 灰度圖像線性變換子模塊處理界面
圖5 圖像邊緣檢測模塊界面
2 實驗平臺的特點
基于Matlab GUI數(shù)字圖像處理實驗平臺具有以下特點:
(1) 內(nèi)容豐富,涵蓋圖像處理領域的大部分內(nèi)容,具有很強的可移植性和可擴展性,可在教學的過程中有目的性的進行更改,增刪不同的功能模塊,以便達到更好的教學效果。
(2) 界面友好,方便操作[7],可在同一界面同時顯示處理前和處理后的圖像。對于某些需要確定參數(shù)的算法,該實驗平臺上設置了不同的初始參數(shù)值,學生也可以自己動手調節(jié)參數(shù)值。針對同一數(shù)字圖像處理算法,該實驗平臺課可同時展示三種不同參數(shù)的處理效果,通過比較不同參數(shù)條件下的圖像處理效果,使學生理解有關參數(shù)變化對處理結果的影響。
(3) 教師在教學過程中,可以方便地演示圖像處理的某一內(nèi)容的處理結果,在進行理論教學的同時使學生知道該處理對圖像的影響,從而加深學生對該理論和內(nèi)容的理解。
(4) 通過該實驗平臺仿真試驗可選出最佳的處理方法、步驟和參數(shù)設置,然后再編寫程序,從而有針對性的對算法加以改進,減少了學生對同一圖像處理過程的不同處理方法的重復編程時間,便于學生對有關算法進行改進或創(chuàng)新。
3 結 語
針對北京郵電大學世紀學院《數(shù)字圖像處理》實踐教學的現(xiàn)狀,設計實現(xiàn)了基于Matlab GUI的數(shù)字圖像處理實驗平臺。該實驗平臺用戶界面友好,交互性強,可拓展性好。根據(jù)我院信息類不同專業(yè)的教學特點,在教學的過程中,可自行修改模塊設置,增刪特色模塊,使學生對數(shù)字圖像處理的相關理論有比較深刻的理解,從而提升《數(shù)字圖像處理》課程的實踐教學效果。
參考文獻
[1] 張穎穎,黃義定,王紅娟.關于“數(shù)字圖像處理”實驗的任務模塊化教學模式的探索[J].實驗室科學,2012(6):52?54.
[2] 安平,王朔中.建立在Matlab平臺上的數(shù)字圖像處理教學實驗系統(tǒng)[J].實驗室研究與探索,2001(1):61?62.
[3] 王帆,劉慧.基于Matlab GUI的數(shù)字圖像處理實驗平臺設計[J].中國科技信息,2011(7):124?125.
[4] 陳壵光.精通Matlab GUI設計[M].北京:電子工業(yè)出版社,2008.
[5] 楊順遼,李澤軍.基于Visual C++的數(shù)字圖像處理實驗軟件開發(fā)[J].國土資源高等職業(yè)教育研究,2011(7):25?28.
[6] 張德豐.數(shù)字圖像處理:Matlab版[M].北京:人民郵電出版社,2009.
[7] 南洋,周靜,孟開元,等.基于Matlab的GUI的界面設計[J].石油儀器,2008(12):76?78.
1.2 功能設計
圖像的幾何變換是指圖像處理中對圖像平移、旋轉、放大和縮小[6]這些簡單變換以及變換中灰度內(nèi)插處理等。圖3所示為在圖像幾何變換模塊中,對選定圖像進行復合變換的效果圖。該復合變換式將原有圖像向下平移50像素,向右平移50像素,并用白色填充空白部分,再對其做垂直鏡像,然后旋轉30°。該變換的主要代碼如下:
B(50+1:H(1),50+1:H(2),1:H(3))=I(1:H(1)?50,
1:H(2)?50,1:H(3));
C(1:H(1),1:H(2),1:H(3))=B(H(1):?1:1,
1:H(2),1:H(3));
D=imrotate(C,30,′nearest′);
圖3 幾何變換中的復合變換效果圖
圖4所示為圖像增強功能模塊中的灰度圖像線性變換子模塊處理界面,該模塊不僅可以處理灰度圖像,還可處理彩色圖像。在選擇該算法時,實驗平臺會先判斷輸圖像是否為灰度圖像,若是,則直接處理圖像,若不是,則會先彩色圖像轉換為灰度圖像,再做后續(xù)處理。其m文件部分代碼如下:
axes(handles.axes_dst) ;
d = length(size(img_src));
if d==3
image=rgb2gray(img_src);
elseif d==2
image=img_src;
end
J=imadjust(image,[0.15 0.5],[0 1]);
imshow(J);title(′線性變換后的灰度圖′);
axes(handles.axes_srcl) ;
imhist(image);title(′原灰度直方圖′);
axes(handles.axes_dstl) ;
imhist(J);title(′線性變換后的灰度直方圖′);
setappdata(handles.figure_zengqiang,′bChanged′,true);
set(handles.srcl_save,′Enable′,′on′);
set(handles.dstl_save,′Enable′,′on′);
圖5所示為圖像邊緣檢測模塊界面,該界面可同時顯示三種不同算子實現(xiàn)圖像邊緣檢測的效果圖及原圖,以便學生在實驗的過程中進行直觀對比。其主要代碼如下:
BW1=edge(image,′sobel′,0.1);
BW2=edge(image,′roberts′,0.1);
BW4=edge(image,′log′,0.01);
圖4 灰度圖像線性變換子模塊處理界面
圖5 圖像邊緣檢測模塊界面
2 實驗平臺的特點
基于Matlab GUI數(shù)字圖像處理實驗平臺具有以下特點:
(1) 內(nèi)容豐富,涵蓋圖像處理領域的大部分內(nèi)容,具有很強的可移植性和可擴展性,可在教學的過程中有目的性的進行更改,增刪不同的功能模塊,以便達到更好的教學效果。
(2) 界面友好,方便操作[7],可在同一界面同時顯示處理前和處理后的圖像。對于某些需要確定參數(shù)的算法,該實驗平臺上設置了不同的初始參數(shù)值,學生也可以自己動手調節(jié)參數(shù)值。針對同一數(shù)字圖像處理算法,該實驗平臺課可同時展示三種不同參數(shù)的處理效果,通過比較不同參數(shù)條件下的圖像處理效果,使學生理解有關參數(shù)變化對處理結果的影響。
(3) 教師在教學過程中,可以方便地演示圖像處理的某一內(nèi)容的處理結果,在進行理論教學的同時使學生知道該處理對圖像的影響,從而加深學生對該理論和內(nèi)容的理解。
(4) 通過該實驗平臺仿真試驗可選出最佳的處理方法、步驟和參數(shù)設置,然后再編寫程序,從而有針對性的對算法加以改進,減少了學生對同一圖像處理過程的不同處理方法的重復編程時間,便于學生對有關算法進行改進或創(chuàng)新。
3 結 語
針對北京郵電大學世紀學院《數(shù)字圖像處理》實踐教學的現(xiàn)狀,設計實現(xiàn)了基于Matlab GUI的數(shù)字圖像處理實驗平臺。該實驗平臺用戶界面友好,交互性強,可拓展性好。根據(jù)我院信息類不同專業(yè)的教學特點,在教學的過程中,可自行修改模塊設置,增刪特色模塊,使學生對數(shù)字圖像處理的相關理論有比較深刻的理解,從而提升《數(shù)字圖像處理》課程的實踐教學效果。
參考文獻
[1] 張穎穎,黃義定,王紅娟.關于“數(shù)字圖像處理”實驗的任務模塊化教學模式的探索[J].實驗室科學,2012(6):52?54.
[2] 安平,王朔中.建立在Matlab平臺上的數(shù)字圖像處理教學實驗系統(tǒng)[J].實驗室研究與探索,2001(1):61?62.
[3] 王帆,劉慧.基于Matlab GUI的數(shù)字圖像處理實驗平臺設計[J].中國科技信息,2011(7):124?125.
[4] 陳壵光.精通Matlab GUI設計[M].北京:電子工業(yè)出版社,2008.
[5] 楊順遼,李澤軍.基于Visual C++的數(shù)字圖像處理實驗軟件開發(fā)[J].國土資源高等職業(yè)教育研究,2011(7):25?28.
[6] 張德豐.數(shù)字圖像處理:Matlab版[M].北京:人民郵電出版社,2009.
[7] 南洋,周靜,孟開元,等.基于Matlab的GUI的界面設計[J].石油儀器,2008(12):76?78.
1.2 功能設計
圖像的幾何變換是指圖像處理中對圖像平移、旋轉、放大和縮小[6]這些簡單變換以及變換中灰度內(nèi)插處理等。圖3所示為在圖像幾何變換模塊中,對選定圖像進行復合變換的效果圖。該復合變換式將原有圖像向下平移50像素,向右平移50像素,并用白色填充空白部分,再對其做垂直鏡像,然后旋轉30°。該變換的主要代碼如下:
B(50+1:H(1),50+1:H(2),1:H(3))=I(1:H(1)?50,
1:H(2)?50,1:H(3));
C(1:H(1),1:H(2),1:H(3))=B(H(1):?1:1,
1:H(2),1:H(3));
D=imrotate(C,30,′nearest′);
圖3 幾何變換中的復合變換效果圖
圖4所示為圖像增強功能模塊中的灰度圖像線性變換子模塊處理界面,該模塊不僅可以處理灰度圖像,還可處理彩色圖像。在選擇該算法時,實驗平臺會先判斷輸圖像是否為灰度圖像,若是,則直接處理圖像,若不是,則會先彩色圖像轉換為灰度圖像,再做后續(xù)處理。其m文件部分代碼如下:
axes(handles.axes_dst) ;
d = length(size(img_src));
if d==3
image=rgb2gray(img_src);
elseif d==2
image=img_src;
end
J=imadjust(image,[0.15 0.5],[0 1]);
imshow(J);title(′線性變換后的灰度圖′);
axes(handles.axes_srcl) ;
imhist(image);title(′原灰度直方圖′);
axes(handles.axes_dstl) ;
imhist(J);title(′線性變換后的灰度直方圖′);
setappdata(handles.figure_zengqiang,′bChanged′,true);
set(handles.srcl_save,′Enable′,′on′);
set(handles.dstl_save,′Enable′,′on′);
圖5所示為圖像邊緣檢測模塊界面,該界面可同時顯示三種不同算子實現(xiàn)圖像邊緣檢測的效果圖及原圖,以便學生在實驗的過程中進行直觀對比。其主要代碼如下:
BW1=edge(image,′sobel′,0.1);
BW2=edge(image,′roberts′,0.1);
BW4=edge(image,′log′,0.01);
圖4 灰度圖像線性變換子模塊處理界面
圖5 圖像邊緣檢測模塊界面
2 實驗平臺的特點
基于Matlab GUI數(shù)字圖像處理實驗平臺具有以下特點:
(1) 內(nèi)容豐富,涵蓋圖像處理領域的大部分內(nèi)容,具有很強的可移植性和可擴展性,可在教學的過程中有目的性的進行更改,增刪不同的功能模塊,以便達到更好的教學效果。
(2) 界面友好,方便操作[7],可在同一界面同時顯示處理前和處理后的圖像。對于某些需要確定參數(shù)的算法,該實驗平臺上設置了不同的初始參數(shù)值,學生也可以自己動手調節(jié)參數(shù)值。針對同一數(shù)字圖像處理算法,該實驗平臺課可同時展示三種不同參數(shù)的處理效果,通過比較不同參數(shù)條件下的圖像處理效果,使學生理解有關參數(shù)變化對處理結果的影響。
(3) 教師在教學過程中,可以方便地演示圖像處理的某一內(nèi)容的處理結果,在進行理論教學的同時使學生知道該處理對圖像的影響,從而加深學生對該理論和內(nèi)容的理解。
(4) 通過該實驗平臺仿真試驗可選出最佳的處理方法、步驟和參數(shù)設置,然后再編寫程序,從而有針對性的對算法加以改進,減少了學生對同一圖像處理過程的不同處理方法的重復編程時間,便于學生對有關算法進行改進或創(chuàng)新。
3 結 語
針對北京郵電大學世紀學院《數(shù)字圖像處理》實踐教學的現(xiàn)狀,設計實現(xiàn)了基于Matlab GUI的數(shù)字圖像處理實驗平臺。該實驗平臺用戶界面友好,交互性強,可拓展性好。根據(jù)我院信息類不同專業(yè)的教學特點,在教學的過程中,可自行修改模塊設置,增刪特色模塊,使學生對數(shù)字圖像處理的相關理論有比較深刻的理解,從而提升《數(shù)字圖像處理》課程的實踐教學效果。
參考文獻
[1] 張穎穎,黃義定,王紅娟.關于“數(shù)字圖像處理”實驗的任務模塊化教學模式的探索[J].實驗室科學,2012(6):52?54.
[2] 安平,王朔中.建立在Matlab平臺上的數(shù)字圖像處理教學實驗系統(tǒng)[J].實驗室研究與探索,2001(1):61?62.
[3] 王帆,劉慧.基于Matlab GUI的數(shù)字圖像處理實驗平臺設計[J].中國科技信息,2011(7):124?125.
[4] 陳壵光.精通Matlab GUI設計[M].北京:電子工業(yè)出版社,2008.
[5] 楊順遼,李澤軍.基于Visual C++的數(shù)字圖像處理實驗軟件開發(fā)[J].國土資源高等職業(yè)教育研究,2011(7):25?28.
[6] 張德豐.數(shù)字圖像處理:Matlab版[M].北京:人民郵電出版社,2009.
[7] 南洋,周靜,孟開元,等.基于Matlab的GUI的界面設計[J].石油儀器,2008(12):76?78.