魏潤(rùn)國(guó) ,禹 舜 ,胡東升 ,張高林 ,趙文強(qiáng)
(1.西藏大學(xué)工學(xué)院電子信息系,西藏拉薩850000;2.西藏大學(xué)理學(xué)院數(shù)學(xué)系,西藏拉薩850000)
近些年來,隨著信息化社會(huì)的發(fā)展,人工智能和大數(shù)據(jù)日益成熟,這其中就不可避免地涉及到圖像領(lǐng)域的相關(guān)知識(shí)。其中數(shù)字圖像處理作為圖像領(lǐng)域的入門基礎(chǔ),對(duì)于入門的新人來說,數(shù)字圖像處理的相關(guān)理論知識(shí)難以理解。尤其是圖像處理的算法理論性比較強(qiáng),采用普通的編程軟件難以達(dá)到預(yù)期的效果。MATLAB作為一款工程型的軟件,具有強(qiáng)大的運(yùn)算處理能力。本文設(shè)計(jì)了一款基于GUI(GraphicalUser Interface)用戶交互界面的數(shù)字圖形處理仿真系統(tǒng)。其簡(jiǎn)單易懂的界面以及符合理論的結(jié)果,對(duì)于剛剛?cè)腴T的新人來說,學(xué)習(xí)起來更得心應(yīng)手。該系統(tǒng)具有良好的實(shí)用性、用戶交互性。用戶可以形象直觀地感受到數(shù)字圖形處理算法得到的效果以及算法的具體實(shí)現(xiàn)步驟,并且該系統(tǒng)具有一定的擴(kuò)展和改進(jìn)空間。
隨著數(shù)字圖像處理技術(shù)的不斷發(fā)展和完善,目前已經(jīng)廣泛應(yīng)用于了各個(gè)領(lǐng)域,如農(nóng)牧業(yè)、林業(yè)、環(huán)境、軍事、工業(yè)和醫(yī)學(xué)等等。用戶在使用該系統(tǒng)時(shí),并不需要關(guān)心內(nèi)部所執(zhí)行的操作是如何運(yùn)行的,而是集中在所提供的界面上。根據(jù)界面所提供的功能就可以方便直觀的得到用戶想要的結(jié)果[2]。這一點(diǎn)充分發(fā)揮了GUI界面友好人機(jī)交互的優(yōu)點(diǎn)。這為數(shù)字信號(hào)處理的學(xué)習(xí)提供了一個(gè)學(xué)習(xí)平臺(tái),尤其是對(duì)數(shù)字圖像處理的初學(xué)者,對(duì)于一些相關(guān)技術(shù)的理論和算法不能夠深入理解,本系統(tǒng)可以在數(shù)字圖像處理學(xué)習(xí)方面給予他們幫助。
文中所設(shè)計(jì)的系統(tǒng)是利用MATLAB來做的一個(gè)人機(jī)友好交互界面的數(shù)字圖像處理系統(tǒng)。本系統(tǒng)功能模塊主要分為圖像的運(yùn)算、圖像的變換、圖像的增強(qiáng)、圖像的分析、邊緣提取和圖像分割、圖像的二值形態(tài)學(xué)操作等。對(duì)每個(gè)模塊再進(jìn)行進(jìn)一步的分類,編寫每個(gè)模塊下的函數(shù)。在自定義的界面,對(duì)每個(gè)模塊下的功能函數(shù)再進(jìn)行回調(diào)函數(shù)的編寫,從而完成了該功能的設(shè)計(jì)。完成了每個(gè)功能函數(shù)的編寫之后,設(shè)計(jì)一個(gè)主界面,對(duì)每個(gè)功能模塊進(jìn)行實(shí)時(shí)調(diào)用,即可完成本系統(tǒng)的設(shè)計(jì)。系統(tǒng)功能模塊分布如下:
圖1 系統(tǒng)功能模塊分布
在搭建GUI交互界面時(shí),在編輯界面進(jìn)行圖形對(duì)象的編輯操作時(shí),MATLAB會(huì)自動(dòng)產(chǎn)生相應(yīng)的fig文件。在完成界面的搭建時(shí),MATLAB中產(chǎn)生的fig文件會(huì)生成一個(gè)和fig文件名相同的m文件,這個(gè)腳本文件用于圖形對(duì)象所對(duì)應(yīng)的回調(diào)函數(shù)的調(diào)用和編寫[2]。
在GUI界面中,句柄圖形的應(yīng)用是重中之重。在MATLAB中,每當(dāng)創(chuàng)建一個(gè)圖形對(duì)象時(shí),MATLAB內(nèi)部的系統(tǒng)會(huì)自動(dòng)給當(dāng)前創(chuàng)建的對(duì)象一個(gè)特定的標(biāo)示符,這是區(qū)別其他對(duì)象的一個(gè)標(biāo)志,這個(gè)標(biāo)示符稱為圖形對(duì)象的句柄。通過使用這個(gè)句柄來訪問對(duì)象的屬性,在編寫程序中調(diào)用圖形對(duì)象時(shí),也是使用圖形對(duì)象的句柄,比如說對(duì)該句柄圖形所對(duì)應(yīng)的對(duì)象進(jìn)行控制,修改其中的屬性,調(diào)用其回調(diào)過程等[2]。
在MATLAB中新建一個(gè)GUI對(duì)象,選擇Blank GUI,進(jìn)入界面設(shè)計(jì)編輯器,如圖2所示。將新建的GUI保存為main_gui,保存后之后在當(dāng)前文件夾下會(huì)自動(dòng)生成main_gui.fig和main_gui.m兩個(gè)文件。其中main_gui.fig用來編輯界面,main_gui.m用來編輯界面中所對(duì)應(yīng)的回調(diào)函數(shù)。
圖2 界面設(shè)計(jì)編輯器界面
在界面設(shè)計(jì)編輯器中添加一個(gè)Static Text對(duì)象和4個(gè)Push Button對(duì)象,如圖所示。雙擊Static Text對(duì)象,進(jìn)入當(dāng)前對(duì)象的屬性檢查器,在String選項(xiàng)中,把Static Text改為數(shù)字圖像處理系統(tǒng),并適當(dāng)調(diào)整字體大小。對(duì)4個(gè)Push Button對(duì)象分別設(shè)置組件屬性,將其對(duì)象下對(duì)應(yīng)的String分別改為進(jìn)入、制作團(tuán)隊(duì)、修改建議、退出。同時(shí)對(duì)4個(gè)Push Button的Tag分別改為特定的標(biāo)示字符。編輯保存好之后,在main_gui.m文件中會(huì)出現(xiàn)相應(yīng)特定標(biāo)示字符的回調(diào)函數(shù)。例如名稱為制作團(tuán)隊(duì)的Push Button下Tag為team,則在main_gui.m中會(huì)出現(xiàn)function team_Call?back(hObject,eventdata,handles)回調(diào)函數(shù),在回調(diào)函數(shù)中編寫對(duì)象的程序,則點(diǎn)擊對(duì)應(yīng)的按鈕后,會(huì)執(zhí)行相對(duì)應(yīng)的程序。本系統(tǒng)中,主要是利用上述原理來實(shí)現(xiàn)對(duì)數(shù)字圖像的處理。
選擇文件模塊,可以選擇不同格式的文件進(jìn)行處理,在一定程度上增強(qiáng)了系統(tǒng)的多元性和兼容性。具體代碼如下:
在系統(tǒng)的主界面中有一個(gè)修改建議的按鈕,通過點(diǎn)擊按鈕,可以在連接上互聯(lián)網(wǎng)的情況下,及時(shí)向后臺(tái)反應(yīng)建議,其主要通過發(fā)送郵件的方式來通知后臺(tái)。在該按鈕下編輯回調(diào)函數(shù),即可完成上述功能,主要函數(shù)如下。
在上述函數(shù)中,鍵入的主題和內(nèi)容后,編輯框會(huì)自動(dòng)讀取鍵入的內(nèi)容,并將其讀取為字符串格式。在點(diǎn)擊發(fā)送按鈕下,函數(shù)會(huì)把鍵入的主題和內(nèi)容中的字符串格式轉(zhuǎn)換為mat格式,便于郵件的發(fā)送。
堅(jiān)持共建共治,形成食品藥品安全社會(huì)管理大格局。加大對(duì)創(chuàng)建國(guó)家食品安全城市和建設(shè)“食品藥品安全內(nèi)蒙古”的宣傳,引導(dǎo)公眾廣泛參與。目前市民對(duì)創(chuàng)建國(guó)家食品安全城市的知曉率達(dá)90%以上,滿意度達(dá)70%以上。及時(shí)公開公示信息,信息公開率達(dá)100%。加大案件查辦力度,2014年以來,全市共出動(dòng)執(zhí)法人員10萬余次,移交公安部門立案1200余件并全部結(jié)案,依法關(guān)停企業(yè)和商戶85家。
在修改建議界面輸入主題和內(nèi)容,如圖3所示,點(diǎn)擊發(fā)送按鈕,即可完成建議發(fā)送功能,發(fā)送是以郵件的形式完成發(fā)送的。
圖3 修改建議界面
GUI界面之間的鏈接采用傳統(tǒng)的方式進(jìn)行鏈接。本文采用控件Push Button的方式進(jìn)行切換,在控件Push Button對(duì)應(yīng)的回調(diào)函數(shù)下鍵入需要切換界面的m文件名即可完成界面的切換。
MATLAB與圖像處理技術(shù)聯(lián)系起來,已經(jīng)成為數(shù)字圖像處理的首要工具。本文系統(tǒng)設(shè)計(jì)所用到的工具就是MATLAB提供的GUI平臺(tái),在該平臺(tái)上自定義所需功能,實(shí)現(xiàn)一個(gè)可視化易于操作的界面,圖4為系統(tǒng)的主界面示意圖。系統(tǒng)主要分為圖像的運(yùn)算、圖像的變換、圖像的增強(qiáng)、邊緣提取和圖像分割、二值形態(tài)學(xué)操作、圖像分析6大模塊。
在每一個(gè)模塊下,又可分為不同的子模塊。圖像的運(yùn)算模塊又可分為圖像的代數(shù)運(yùn)算、圖像的幾何操作、圖像的領(lǐng)域和滑塊操作子模塊;圖像的變換模塊又可分為Radon變換、傅里葉變換、圖像壓縮、小波變換、離散余弦變換子模塊;圖像的增強(qiáng)模塊又可分為空域變換增強(qiáng)、空域?yàn)V波增強(qiáng)、頻域增強(qiáng)子模塊;邊緣提取和圖像分割模塊又可分為邊緣提取和四叉樹分解子模塊;二值形態(tài)學(xué)操作模塊又可分為二值圖像及其特征提取、二值形態(tài)學(xué)基本運(yùn)算、基于對(duì)象的操作、形態(tài)學(xué)應(yīng)用子模塊;圖像分析模塊又可分為像素提取、圖像輪廓圖、強(qiáng)度描述圖、繪制直方圖子模塊。
系統(tǒng)中包含眾多數(shù)字圖像處理的模塊,針對(duì)數(shù)字圖像處理不同方面知識(shí)點(diǎn)的學(xué)習(xí),都有相應(yīng)的模塊與之對(duì)應(yīng),對(duì)于數(shù)字圖像處理的學(xué)習(xí)有很大的促進(jìn)作用。
圖4 系統(tǒng)主界面
其中以LoG檢測(cè)算子為例。該算法首先對(duì)圖像做高斯濾波,然后再求其拉普拉斯二階導(dǎo)數(shù)。即圖像與高斯函數(shù)的拉普拉斯算子進(jìn)行濾波運(yùn)算。最后,通過檢測(cè)濾波結(jié)果的零交叉可以獲得圖像或物體的邊緣[5]??紤]高斯函數(shù):
其中σ是標(biāo)準(zhǔn)差。這是平滑函數(shù),如果和圖像卷積,將會(huì)使圖像變得模糊。模糊的程度由σ的值來決定。這個(gè)函數(shù)的拉普拉斯算法是:
出于明顯的原因,這個(gè)函數(shù)被稱為L(zhǎng)oG。因?yàn)榍蠖A導(dǎo)數(shù)是線性操作,所以用?2G(x,y)卷積這幅圖像與先用平滑函數(shù)對(duì)圖像卷積,再對(duì)結(jié)果進(jìn)行拉普拉斯計(jì)算的結(jié)果是一樣的,這是LoG檢測(cè)算子的關(guān)鍵概念[6]。圖5為L(zhǎng)oG算子檢測(cè)效果圖。
在MATLAB中提供了豐富的圖像處理函數(shù),同時(shí)利用GUI人機(jī)友好交互的特性,設(shè)計(jì)出了基于GUI用戶交互界面的數(shù)字圖形處理仿真系統(tǒng),系統(tǒng)可進(jìn)行算法的快速演示和圖像處理算法的在線仿真。其集成的圖形用戶界面包含了窗口菜單,對(duì)話框,按鈕和文本等各種控件,為用戶提供了極大的便利。該系統(tǒng)具有很大的完善空間,用戶可以及時(shí)反饋建議,來進(jìn)一步滿足用戶的需要。另外,該系統(tǒng)可以作為數(shù)字圖像處理課程的教學(xué)系統(tǒng),為初學(xué)者的學(xué)習(xí)提供幫助以及推動(dòng)教學(xué)質(zhì)量和進(jìn)度。
圖5 LoG算子檢測(cè)效果圖