李榮
摘要:數(shù)字圖像處理課程是一項以實驗為主的教學課程,其教學目的就是利用各向難易程度的教學實驗,讓學生掌握數(shù)字圖像處理技術(shù),增強學生的自主學習能力。很多學生已經(jīng)學習過Java語言,但是對Image J 軟件并不是非常了解,所以,開展實驗教學的基礎(chǔ)首先是讓學生理解其含義,同時還要學會使用Image J 插件的代碼模板。教師在教學中會根據(jù)現(xiàn)有的數(shù)字圖像處理代碼,科學性的對現(xiàn)有插件進行適當擴展,便于學生深入學習。
關(guān)鍵詞:Java語言;Image J平臺;圖像處理;教學方案
中圖分類號:G642 文獻標識碼:A 文章編號:1009-3044(2016)36-0146-03
隨著數(shù)字化設(shè)備的廣泛使用,讓數(shù)字圖像處理的難度大大增強。為了能在現(xiàn)有形勢下滿足數(shù)字圖像處理的要求,許多大學高校陸續(xù)開設(shè)了和數(shù)字圖像處理相關(guān)的實驗課程,有的專業(yè)還將其列入專業(yè)課領(lǐng)域,學時長達一個學期甚至一個學年。數(shù)字圖像處理的原理是根據(jù)數(shù)學信號演變而來的,兩者有著密不可分的聯(lián)系,學校在教學過程中,一般會將數(shù)字圖像處理課程分為理論教學部分和實驗研究兩個模塊。數(shù)字圖像處理的重點,還在于試驗探究課程的學習,因此,科學巧妙的安排試驗內(nèi)容是試驗教學中的重中之重。
1數(shù)字圖像處理課程實驗教學簡介
1.1 MATLAB 的數(shù)字圖像處理課程實驗教學特點
在國內(nèi)知名高校的計算機科學與技術(shù)專業(yè)的數(shù)字圖像處理課程實驗課堂上,學生使用的電腦系統(tǒng)基本上全部是 Windows 操作系統(tǒng),其教學系統(tǒng)有2種,第一種是C 和 C ++ 語言,第二種則是Math Works 公司開發(fā)的 MATLAB 軟件,,開發(fā)實驗工具借助微軟公司的平臺,主要框架是MFC 框架和 Open CV 庫。
Math Works 公司開發(fā)的 MATLAB 軟件主要適用于處理向量和矩陣,其設(shè)計的初衷就是處理此類問題。因此,MATLAB在向量和矩陣開發(fā)方面是比較專業(yè)的,其優(yōu)點主要表現(xiàn)為:操作簡便且功能多樣、信息處理能力強等,被廣泛利用于科學研究和新產(chǎn)品的開發(fā)設(shè)計項目之中。 MATLAB事實上就是一種編程語言,也可以看成是一個Python 的高級腳本語言,在使用時只需要利用MATLAB 本身內(nèi)置的函數(shù)來解決一些程序性的問題。事實上,我們可以認為MATLAB 屬于一種交互式的平臺,內(nèi)部帶有一種弱型的腳本語言,使用過程中,不需要在內(nèi)存和分配和釋放上擔憂,就可以實現(xiàn)與C /C + + 短時間交互。另外,MATLAB中還有一個圖像處理工具箱,其功能十分完整,里面涵蓋的一系列的各種圖像的處理方法,在數(shù)字圖像處理過程中,可以借助模塊中自帶的各種函數(shù)分析以及解決問題,其功能模塊提升了MATLAB 軟件的實用價值。從而讓此軟件在數(shù)字圖像處理和實驗課程設(shè)計方面得到了廣泛的應用,并得到了國內(nèi)許多高校師生的普遍認可。同時,MATLAB 軟件還可以實現(xiàn)跨平臺交流,不管是什么操作系統(tǒng),都可以安裝MATLAB 軟件來進行各種實驗研究。
1.2 MFC 的數(shù)字圖像處理課程實驗教學特點
另一種數(shù)字圖像處理課程的實驗教學是借助微軟的 Windows 平臺,利用Visual Studio作為開發(fā)工具,C 和 C ++是普遍使用的開發(fā)語言,開發(fā)框架則是MFC。目前,國內(nèi)的許多高校中計算機科學與技術(shù)專業(yè)初學的程序設(shè)計課程一般是C 語言,所以學生幾乎對C語言都是十分了解的,在很多數(shù)字圖像處理和數(shù)據(jù)分析過程中,借助C語言來分析問題非常普遍。學生在C語言的使用過程中,一般都會使用到指針訪問數(shù)字圖像數(shù)據(jù),使用過程中常常需要手動進行內(nèi)存的分配和釋放。這樣做的不足之處是學生在利用C語言來分析問題的時候,經(jīng)常不會刻意地去關(guān)注數(shù)字圖像處理內(nèi)容,會分散注意力。同時C語言中也沒有接口函數(shù)在圖形用戶界面中使用,這就讓C語言的實用性大大縮減,學生只能利用C語言來完成一些簡單的程序設(shè)計,而不能進行快速實現(xiàn)函數(shù)和圖型用戶界面的交互。
近年來,伴隨著C ++ 語言快速發(fā)展,許多大學高校計算機相關(guān)專業(yè)學習的方向逐漸向C ++語言程序設(shè)計轉(zhuǎn)變。學生在進行數(shù)字圖像處理中也經(jīng)常會用到C + + 語言。其主要還是借助于微軟相關(guān)平臺,讓學生借助MFC 框架來進行數(shù)字圖像實驗的相關(guān)研究,這是一項非常重要的實驗內(nèi)容。
2 Image J 的數(shù)字圖像處理實驗教學設(shè)計
2.1采用 Image J 的原因
在前文的分析中,許多高校計算機科學與技術(shù)相關(guān)專業(yè)的課程學習,可以嘗試使用Image J 軟件來解決一些數(shù)字圖像處理問題,學生可以對此進行深入研究和討論。
Image J是美國科學家開發(fā)的一項數(shù)字圖像處理和分析軟件,其功能非常強大,用途廣泛,受到世界各國很多生物學家和醫(yī)學家的廣泛推崇,可以廣泛適用在很多醫(yī)學研究之中。Image J語言是在Java 語言的基礎(chǔ)之上編寫的,只要電腦中含有Java 虛擬機的操作系統(tǒng),就可以支持Image J軟件的運行。Image J自身的代碼具有開放性的特點,只需在Image J 的相關(guān)網(wǎng)站上就可以實現(xiàn)源程序和文檔的免費下載,學生可以根據(jù)需要免費下載Image J 的源代碼,并對其運行原理做研究分析。學生完全可以借助Image J中相應的插件,在研究過程中把不同圖像數(shù)字處理方法轉(zhuǎn)換成相應的插件。通過 Java 虛擬機和 Image J 提供的動態(tài)插件加載功能,學生可以實現(xiàn)源代碼的更改,按照自己的想法去編譯就可以接進行加載和運行,不需要重新啟動軟件,這就是軟件特有的“熱 拔 插 ”的功能。 Image J 的運行圖像如圖 1 所示。
2.2 Image J 的插件架構(gòu)系統(tǒng)
Image J中大量的菜單命令都是一個個插件,只要輸入相關(guān)命令,就可以運行相關(guān)程序,同時可以借助Image J某些插件的功能實現(xiàn)功能拓展。每一個插件都是以Java為主要接口,最后保存在特有的文件夾中。許多自定義的插件一般可以借助Image J中自帶的編輯器去編輯,還可以把自己想要編輯的文字、軟件在Image J 的插件記錄器中記錄,可以生成自己想要的新型插件。
在軟件的實際運行過程中,都可以在 Image J 里編譯和運行這些插件。但是我們自己在Image J中編寫的插件需要保存在一個特定的文件夾,此文件夾作為Image J中的子文件夾。帶有下劃線的文件才能默認儲存在這個特定的子文件夾中。在Image J 中常見的 3 種類型的插件: 1) 無需圖像作為輸入的插件,此類插件需要 Plug In 接口;2) 插件過濾器,此類插件需要圖像作為輸入,所以需要 Plug In Filter 接口;3)自己構(gòu)建圖形用戶界面的插件,此類插件需要繼承 Plug In Frame 類。
3 Image J 的數(shù)字圖像處理實驗教學案例展示
3.1灰度圖像反轉(zhuǎn)
在實驗課初期,許多學生對Image J插件的開發(fā)和運行原理不是很熟悉,因此,教師往往會提供開展實驗所要利用的模板,學生按照模板開展相關(guān)實驗,最后加以拓展。文章利用2個案例來說明借助Image J平臺來開展圖像處理課程的實驗。從這2個實際案例中我們可以看到Image J軟件對于數(shù)字圖像處理作用重大。
第 1 種插件模擬的功能是灰度圖像反轉(zhuǎn)。其插件程序代碼如下:
[import ij.*; import ij.plugin.filter.PlugInFilter;import ij.process.*; import java.awt.*; public class Inverter_implements PlugInFilter{/* 實現(xiàn) PlugInFilter 接口*/public int setup(String arg,ImagePlus imp) {/* 只支持對8位灰度圖灰度圖像* /return DOES_8G;}public void run(ImgaeProcessor ip){/*獲取圖像的像素數(shù)組*/Byte pixels=(byte )ip.getPixels();/*獲取圖像的寬度*/int width=ip.getWidth(); /*獲取圖像的高度*/int height=ip.getHeighit();int offset,i; /* 處理圖像的每一行*/for (int y=0; y 3.2圖像濾波 在數(shù)字圖像處理課程理論教學中,圖像濾波是一項重要的知識,實驗的目的主要讓學生掌握圖像平滑和圖像銳化。比如:在開展圖像濾波實驗中,學生一般會用到兩種不同模式算法,第一種是不可分離式算法,第二種則是可分離式算法。一種大小為 m × n 的數(shù)字濾波器,其中的每一個像素,不可分離算法的時間復雜度為 O( m × n) ,可分離算法的時間復雜度為 O( m + n) ,可以看出不可分離的復雜度要遠遠高于可分離算法。這就要求學生對不同分辨率的兩種圖像進行兩種算法的測試,測試完成后需要對兩種測試結(jié)果進行比較,對兩種算法的時間進行比較,可以清楚的體會到兩種算法的不同之處。通過對兩種算法的實驗后,學生可以直觀地看出可分離算法在運算時間上具有非常大的優(yōu)勢。 4實驗結(jié)果分析 從實驗結(jié)合可看出 Image J 1.49的圖像均值濾波的測試時間,測試環(huán)境為: 512 × 512 的灰度圖像,JDK 1. 8. 0_60,Intel Core i3 /2. 33 GHz,4 GB RAM。可分離算法相對于不可分離算法的優(yōu)勢,尤其是當濾波器尺寸明顯變大以后更加清晰。 5結(jié)束語 文章重點闡述了Image J 的數(shù)字圖像處理實驗教學案例設(shè)計在數(shù)字圖像處理理論教學中的運用,豐富了數(shù)字圖像處理理論的教學方法。計算機科學與技術(shù)專業(yè)學生通過對Image J的學習,一方面豐富了自己的文化視野,提高了自身的專業(yè)知識水平,另一方面也培養(yǎng)了自身的創(chuàng)新能力,借助Image J去創(chuàng)新研究出更多的數(shù)字圖像處理算法。 參考文獻: [1] 王冉,趙錫源.數(shù)字圖像處理技術(shù)現(xiàn)狀與展望[J].中小企業(yè)管理與科技(中旬刊),2016(3). [2] 朱莉玲.數(shù)字圖像處理技術(shù)與應用研究[J].信息系統(tǒng)工程,2016(4). [3] 毛曉琦.關(guān)于對數(shù)字圖像處理技術(shù)的有效探討[J].電子技術(shù)與軟件工程,2016(16).