魏潤國 ,禹 舜 ,胡東升 ,張高林 ,趙文強(qiáng)
(1.西藏大學(xué)工學(xué)院電子信息系,西藏拉薩850000;2.西藏大學(xué)理學(xué)院數(shù)學(xué)系,西藏拉薩850000)
近些年來,隨著信息化社會的發(fā)展,人工智能和大數(shù)據(jù)日益成熟,這其中就不可避免地涉及到圖像領(lǐng)域的相關(guān)知識。其中數(shù)字圖像處理作為圖像領(lǐng)域的入門基礎(chǔ),對于入門的新人來說,數(shù)字圖像處理的相關(guān)理論知識難以理解。尤其是圖像處理的算法理論性比較強(qiáng),采用普通的編程軟件難以達(dá)到預(yù)期的效果。MATLAB作為一款工程型的軟件,具有強(qiáng)大的運算處理能力。本文設(shè)計了一款基于GUI(GraphicalUser Interface)用戶交互界面的數(shù)字圖形處理仿真系統(tǒng)。其簡單易懂的界面以及符合理論的結(jié)果,對于剛剛?cè)腴T的新人來說,學(xué)習(xí)起來更得心應(yīng)手。該系統(tǒng)具有良好的實用性、用戶交互性。用戶可以形象直觀地感受到數(shù)字圖形處理算法得到的效果以及算法的具體實現(xiàn)步驟,并且該系統(tǒng)具有一定的擴(kuò)展和改進(jìn)空間。
隨著數(shù)字圖像處理技術(shù)的不斷發(fā)展和完善,目前已經(jīng)廣泛應(yīng)用于了各個領(lǐng)域,如農(nóng)牧業(yè)、林業(yè)、環(huán)境、軍事、工業(yè)和醫(yī)學(xué)等等。用戶在使用該系統(tǒng)時,并不需要關(guān)心內(nèi)部所執(zhí)行的操作是如何運行的,而是集中在所提供的界面上。根據(jù)界面所提供的功能就可以方便直觀的得到用戶想要的結(jié)果[2]。這一點充分發(fā)揮了GUI界面友好人機(jī)交互的優(yōu)點。這為數(shù)字信號處理的學(xué)習(xí)提供了一個學(xué)習(xí)平臺,尤其是對數(shù)字圖像處理的初學(xué)者,對于一些相關(guān)技術(shù)的理論和算法不能夠深入理解,本系統(tǒng)可以在數(shù)字圖像處理學(xué)習(xí)方面給予他們幫助。
文中所設(shè)計的系統(tǒng)是利用MATLAB來做的一個人機(jī)友好交互界面的數(shù)字圖像處理系統(tǒng)。本系統(tǒng)功能模塊主要分為圖像的運算、圖像的變換、圖像的增強(qiáng)、圖像的分析、邊緣提取和圖像分割、圖像的二值形態(tài)學(xué)操作等。對每個模塊再進(jìn)行進(jìn)一步的分類,編寫每個模塊下的函數(shù)。在自定義的界面,對每個模塊下的功能函數(shù)再進(jìn)行回調(diào)函數(shù)的編寫,從而完成了該功能的設(shè)計。完成了每個功能函數(shù)的編寫之后,設(shè)計一個主界面,對每個功能模塊進(jìn)行實時調(diào)用,即可完成本系統(tǒng)的設(shè)計。系統(tǒng)功能模塊分布如下:

圖1 系統(tǒng)功能模塊分布
在搭建GUI交互界面時,在編輯界面進(jìn)行圖形對象的編輯操作時,MATLAB會自動產(chǎn)生相應(yīng)的fig文件。在完成界面的搭建時,MATLAB中產(chǎn)生的fig文件會生成一個和fig文件名相同的m文件,這個腳本文件用于圖形對象所對應(yīng)的回調(diào)函數(shù)的調(diào)用和編寫[2]。
在GUI界面中,句柄圖形的應(yīng)用是重中之重。在MATLAB中,每當(dāng)創(chuàng)建一個圖形對象時,MATLAB內(nèi)部的系統(tǒng)會自動給當(dāng)前創(chuàng)建的對象一個特定的標(biāo)示符,這是區(qū)別其他對象的一個標(biāo)志,這個標(biāo)示符稱為圖形對象的句柄。通過使用這個句柄來訪問對象的屬性,在編寫程序中調(diào)用圖形對象時,也是使用圖形對象的句柄,比如說對該句柄圖形所對應(yīng)的對象進(jìn)行控制,修改其中的屬性,調(diào)用其回調(diào)過程等[2]。
在MATLAB中新建一個GUI對象,選擇Blank GUI,進(jìn)入界面設(shè)計編輯器,如圖2所示。將新建的GUI保存為main_gui,保存后之后在當(dāng)前文件夾下會自動生成main_gui.fig和main_gui.m兩個文件。其中main_gui.fig用來編輯界面,main_gui.m用來編輯界面中所對應(yīng)的回調(diào)函數(shù)。

圖2 界面設(shè)計編輯器界面
在界面設(shè)計編輯器中添加一個Static Text對象和4個Push Button對象,如圖所示。雙擊Static Text對象,進(jìn)入當(dāng)前對象的屬性檢查器,在String選項中,把Static Text改為數(shù)字圖像處理系統(tǒng),并適當(dāng)調(diào)整字體大小。對4個Push Button對象分別設(shè)置組件屬性,將其對象下對應(yīng)的String分別改為進(jìn)入、制作團(tuán)隊、修改建議、退出。同時對4個Push Button的Tag分別改為特定的標(biāo)示字符。編輯保存好之后,在main_gui.m文件中會出現(xiàn)相應(yīng)特定標(biāo)示字符的回調(diào)函數(shù)。例如名稱為制作團(tuán)隊的Push Button下Tag為team,則在main_gui.m中會出現(xiàn)function team_Call?back(hObject,eventdata,handles)回調(diào)函數(shù),在回調(diào)函數(shù)中編寫對象的程序,則點擊對應(yīng)的按鈕后,會執(zhí)行相對應(yīng)的程序。本系統(tǒng)中,主要是利用上述原理來實現(xiàn)對數(shù)字圖像的處理。
選擇文件模塊,可以選擇不同格式的文件進(jìn)行處理,在一定程度上增強(qiáng)了系統(tǒng)的多元性和兼容性。具體代碼如下:

在系統(tǒng)的主界面中有一個修改建議的按鈕,通過點擊按鈕,可以在連接上互聯(lián)網(wǎng)的情況下,及時向后臺反應(yīng)建議,其主要通過發(fā)送郵件的方式來通知后臺。在該按鈕下編輯回調(diào)函數(shù),即可完成上述功能,主要函數(shù)如下。

在上述函數(shù)中,鍵入的主題和內(nèi)容后,編輯框會自動讀取鍵入的內(nèi)容,并將其讀取為字符串格式。在點擊發(fā)送按鈕下,函數(shù)會把鍵入的主題和內(nèi)容中的字符串格式轉(zhuǎn)換為mat格式,便于郵件的發(fā)送。
堅持共建共治,形成食品藥品安全社會管理大格局。加大對創(chuàng)建國家食品安全城市和建設(shè)“食品藥品安全內(nèi)蒙古”的宣傳,引導(dǎo)公眾廣泛參與。目前市民對創(chuàng)建國家食品安全城市的知曉率達(dá)90%以上,滿意度達(dá)70%以上。及時公開公示信息,信息公開率達(dá)100%。加大案件查辦力度,2014年以來,全市共出動執(zhí)法人員10萬余次,移交公安部門立案1200余件并全部結(jié)案,依法關(guān)停企業(yè)和商戶85家。
在修改建議界面輸入主題和內(nèi)容,如圖3所示,點擊發(fā)送按鈕,即可完成建議發(fā)送功能,發(fā)送是以郵件的形式完成發(fā)送的。

圖3 修改建議界面
GUI界面之間的鏈接采用傳統(tǒng)的方式進(jìn)行鏈接。本文采用控件Push Button的方式進(jìn)行切換,在控件Push Button對應(yīng)的回調(diào)函數(shù)下鍵入需要切換界面的m文件名即可完成界面的切換。
MATLAB與圖像處理技術(shù)聯(lián)系起來,已經(jīng)成為數(shù)字圖像處理的首要工具。本文系統(tǒng)設(shè)計所用到的工具就是MATLAB提供的GUI平臺,在該平臺上自定義所需功能,實現(xiàn)一個可視化易于操作的界面,圖4為系統(tǒng)的主界面示意圖。系統(tǒng)主要分為圖像的運算、圖像的變換、圖像的增強(qiáng)、邊緣提取和圖像分割、二值形態(tài)學(xué)操作、圖像分析6大模塊。
在每一個模塊下,又可分為不同的子模塊。圖像的運算模塊又可分為圖像的代數(shù)運算、圖像的幾何操作、圖像的領(lǐng)域和滑塊操作子模塊;圖像的變換模塊又可分為Radon變換、傅里葉變換、圖像壓縮、小波變換、離散余弦變換子模塊;圖像的增強(qiáng)模塊又可分為空域變換增強(qiáng)、空域濾波增強(qiáng)、頻域增強(qiáng)子模塊;邊緣提取和圖像分割模塊又可分為邊緣提取和四叉樹分解子模塊;二值形態(tài)學(xué)操作模塊又可分為二值圖像及其特征提取、二值形態(tài)學(xué)基本運算、基于對象的操作、形態(tài)學(xué)應(yīng)用子模塊;圖像分析模塊又可分為像素提取、圖像輪廓圖、強(qiáng)度描述圖、繪制直方圖子模塊。
系統(tǒng)中包含眾多數(shù)字圖像處理的模塊,針對數(shù)字圖像處理不同方面知識點的學(xué)習(xí),都有相應(yīng)的模塊與之對應(yīng),對于數(shù)字圖像處理的學(xué)習(xí)有很大的促進(jìn)作用。

圖4 系統(tǒng)主界面
其中以LoG檢測算子為例。該算法首先對圖像做高斯濾波,然后再求其拉普拉斯二階導(dǎo)數(shù)。即圖像與高斯函數(shù)的拉普拉斯算子進(jìn)行濾波運算。最后,通過檢測濾波結(jié)果的零交叉可以獲得圖像或物體的邊緣[5]。考慮高斯函數(shù):

其中σ是標(biāo)準(zhǔn)差。這是平滑函數(shù),如果和圖像卷積,將會使圖像變得模糊。模糊的程度由σ的值來決定。這個函數(shù)的拉普拉斯算法是:


出于明顯的原因,這個函數(shù)被稱為LoG。因為求二階導(dǎo)數(shù)是線性操作,所以用?2G(x,y)卷積這幅圖像與先用平滑函數(shù)對圖像卷積,再對結(jié)果進(jìn)行拉普拉斯計算的結(jié)果是一樣的,這是LoG檢測算子的關(guān)鍵概念[6]。圖5為LoG算子檢測效果圖。
在MATLAB中提供了豐富的圖像處理函數(shù),同時利用GUI人機(jī)友好交互的特性,設(shè)計出了基于GUI用戶交互界面的數(shù)字圖形處理仿真系統(tǒng),系統(tǒng)可進(jìn)行算法的快速演示和圖像處理算法的在線仿真。其集成的圖形用戶界面包含了窗口菜單,對話框,按鈕和文本等各種控件,為用戶提供了極大的便利。該系統(tǒng)具有很大的完善空間,用戶可以及時反饋建議,來進(jìn)一步滿足用戶的需要。另外,該系統(tǒng)可以作為數(shù)字圖像處理課程的教學(xué)系統(tǒng),為初學(xué)者的學(xué)習(xí)提供幫助以及推動教學(xué)質(zhì)量和進(jìn)度。

圖5 LoG算子檢測效果圖