一引論
現代教育理論認為[1]:全面實施素質教育,傳統教學陳舊的教學手段和簡單的教學技術在當今世界的多層次教學、演示教學、實驗教學等現代化課堂教學中就顯得力不從心。隨著計算機技術的發展,在課堂教學中采用多媒體手段變得越來越普遍。但是,多媒體教學絕不是僅僅采用PowerPoint、Authorware、Flash等媒體制作軟件將黑板教學原封不動的搬到計算機中來,多媒體教學應該是融合原先黑板教學的精髓———教學內容準確、推演邏輯性強的特點,同時展現原黑板教學所不能展示的特性,如:生動、形象、視覺效果好等,將教學的內容同所采用的媒體技術進行深層次的融合。PowerPoint通用性強,易學易用;具有強大的制作功能,文字編輯能力強、段落格式豐富、文件格式多樣、繪圖手段齊全、色彩表現能力強;PowerPoint具有一定的程序設計功能,提供VBA功能,可以融合VB進行開發,提供了同其他程序交互的功能。
MATLAB是美國MathWorks公司自20世紀80年代中期推出的數學處理軟件,具有優秀的數值計算和卓越的數據可視化能力。它集成了計算、可視化和編程于一個易用的環境中,在此環境下,問題和解答都表達為我們熟悉的數學符號,是演草紙式的計算工具。典型的應用有:數學和計算、算法開發、建模,模擬和原形化、數據分析,探索和可視化、科學與工程制圖、應用開發,包括圖形用戶界面的建立等。MATLAB的基本數據元素是無須定義維數的數組,這讓我們能解決很多技術計算的問題,尤其是可以用二維矩陣很好表達的數字圖像處理問題,所要花的時間僅僅是用一種標量非交互語言(例如C或Fortran)寫一個程序時間的一小部分。
姚錦繡老師在“MATLAB應用在圖像處理教學中的探討”[1]一文中,提出了將MATLAB應用在圖像處理教學中的觀點,認為引進MATLAB語言可以快速實現模擬仿真,提高教學效率,使學生獲得具體生動的印象,凝聚學生的注意力和觀察力,激發起求知欲望和興趣,并結合直方圖和閾值分割的教學實例,闡述了MATLAB同數字圖像處理教學相結合的優越性。張國琴老師[2]、孫學巖老師[3]和常靚老師[4]分別撰文闡述MATLAB在數字圖像處理教學中的應用,文中利用MATLAB豐富的IPT工具箱功能,例證了MATLAB在數字圖像教學中的作用,得到結論:有利于圖像處理問題講解的形象化、具體化,有利于提高學生們的學習興趣。彭曉明老師[5]和張博夫老師[6]分別就MATLAB環境下進行數字圖像處理實驗教學進行了有意義的探討,尤其是彭曉明老師利用MATLAB設計了由易到難的10組實驗題目,涵蓋了圖像預處理的各個方面。但是這些文獻均缺乏將MATLAB應用于數字圖像處理教學的基本框架,缺乏MATLAB同PowerPoint相結合,實現無縫連接方面的闡述。
數字圖像處理涉及多門學科:電子信息工程、通信工程、信號與信息處理、計算機應用與軟件、工程數學等[7],要想講解如此眾多學科的內在聯系,分析圖像特征的挖掘、圖像處理算法的設計以及算法性能的評測,僅僅靠黑板教學不能滿足要求,僅僅憑借多媒體處理軟件也無法展現數字圖像處理的精髓,均達不到應有的教學效果。我們需要在數字圖像處理的教學中綜合應用MATLAB和PowerPoint兩大軟件,同數字圖像處理的各個知識點有機的結合起來,利用MATLAB展示圖像特征的提取、圖像算法的設計和算法性能的評測,利用PowerPoint形象直觀的展示教學內容,提高教學效果。
要在PowerPoint中調用MATLAB功能,實現二者的連接,就必須借助于ActiveX技術。MATLAB即可以作ActiveX自動化控制器去操縱其他應用程序,也能作為ActiveX自動化服務器而被其它應用程序所操縱[8]。利用PowerPoint作為媒體展示的平臺,MATLAB將作為ActiveX服務器,在VBA中使用MATLAB具體方法如下:
開啟MA TLAB自動化服務器功能
Dim Matlab As Object
SetMatlab = CreateObject“ (M at lab. Application”)
VBA與MATLAB交換數據
Matlab.GetFullMatrix(varname As String, workspace As String,[out] XReal As Double, [out] XImag As Double):將MA TLAB中的一個矩陣變量傳送到VB程序中一個1維或2維數組中;
Matlab.PutFullMatrix ([in] varname As String, [in] workspace As String, [in] xreal As Double, [in] ximag As Double):將VB程序中一個1維或2維數組傳送到MA TLAB中的一個矩陣變量中;
VBA中執行MATLAB語句
Matlab.Execute(command As String) As String:該函數輸入參數為字符串類型變量,它可以包含任何合法MA TLAB命令,執行Execute方法將調用MATLAB,并執行一條由Command字符串決定的MATLAB命令,并將結果以字符串形式進行輸出,同時命令所產生的任何圖形窗口都將被直接顯示在屏幕上。
采用ActiveX技術調用MATLAB功能,一方面省去了啟用MATLAB集成開發環境所消耗的資源,提高了演示的速度;另一方面,不用在PowerPoint和MATLAB之間來回切換程序,保持了多媒體展示環境的統一,提高了教學的課堂效果。
本文將數字圖像處理按著自身的特點分為圖像特征分析、圖像處理算法設計和算法性能分析與驗證三個方面。將PowerPoint和MATLAB相結合,由PowerPoint負責文字和公式的展示,由MATLAB來完成后臺仿真,取得了較好的教學效果。下面我以數字圖像處理的基本技術直方圖均衡化為例從理論的講解,算法的設計、效果的展示和算法性能的評測三個方面設計PowerPoint和MATLAB相結合的課堂教學方法。
二直方圖均衡化理論部分的講授安排
講解直方圖均衡化關鍵要解決的問題是:如何讓學生理解為什么要均衡化處理、怎么均衡化處理、均衡化處理有什么樣的效果。首先通過PowerPoint精心展示MATLAB處理的灰度偏暗、灰度偏白、灰度動態分布范圍較窄和灰度范圍比較寬的同一幅圖像及其對應的灰度直方圖,讓學生們鑒別四幅圖像哪一幅視覺效果更好。進一步分析灰度直方圖具有什么樣形狀的圖像視覺效果會好一些。通過視覺的對比得到結論:若一幅圖像其像素占有全部的可能的灰度等級并且分布均勻,則圖像有較高的對比度和多變的灰度等級[9]。
下一步是如何尋找能夠使直方圖均衡化的方法。理論的教學內容應該進行精心的選擇,適應學生的學習范圍和能力范圍,一方面對學生要有一定的挑戰性,另一方面不要打擊學生的學生學習積極性,要很好的平衡。理論部分的講授不可避免的涉及到公式和算法的演算,這一部分采用PowerPoint進行展示無疑具有更大的優勢。但是,在講授的過程中來回的進行不同應用程序間的切換,不可避免的會打亂教學步驟,難免造成學生注意力的分散,本文采用VBA技術實現了Matlab同Powerpoint的無縫連接,保證了教學的連續性,獲取了較好的教學效果。下面是實際的VBA程序供同行參考,指證。
VBA語句:
Private Sub CommandButton1_Click()
Dim MCommnad As String
Dim matlab As Object
Set matlab = CreateObject(\"Matlab.application\") matlab.Execute(\"set(gcf,’visible’,’off’);\")
MCommnad = TextBox1.Value
matlab.Execute(MCommnad)
matlab.Execute (\"print(gcf,’-dbmp’,’c:\\a.bmp’);\") Image1.Picture = LoadPicture(\"c:\\a.bmp\")
SlideShowWindows(1).View.GotoSlide 2
End Sub
三直方圖均衡化的算法設計
直方圖均衡化既可以采用Matlab提供的直方圖函數來實現,也可以采用Matlab語言以編程的方式實現,為了讓學生們更深刻的理解直方圖均衡化的理論和方法,教師在講授的過程中應該要求學生們首先采用語言編程的方式來實現。
下面是我們在實際的授課過程中編寫的程序,供讀者參考:
function imagehist(imagefile)
originimage = imread(imagefile);
originimage = rgb2gray (originimage); %%讀取RGB圖像,并轉為灰度圖
[m,n] = size(originimage); originhist = zeros(1,256);
for k = 0:255%%計算原圖像的灰度直方圖,并歸一化
originhist(k+1) = length(find(originimage == k))/(m*n);
end
subplot(221),imshow(originimage); subplot(222),bar(0:255,originhist,’r’);
equalgray = zeros(1,256);
for k = 1: 256%%求累積分布函數for i = 1:k
equalgray(k) = originhist(i)+equalgray(k); end end
equalgray = round ((equalgray*255) + 0.5); equalhist = zeros(1,256);
for i = 0:255 temp = find(equalgray == i); if isempty(temp)
equalhist(i+1) = 0; else
equalhist(i+1)=sum(originhist(temp)); end
end
subplot(223),bar(0:255,equalhist,’b’); equalimage = originimage; for i = 0:255
temp = find(originimage == i); if ~isempty(temp)
equalimage(temp) = equalgray(i+1); end
end
subplot(224),imshow(equalimage); end
四直方圖均衡化的算法性能分析
向學生們講解了直方圖均衡化的理論和設計方法,學生親手設計了直方圖均衡化的程序后,應該安排學生們對直方圖均衡化的算法進行性能分析,這是圖像處理算法設計的必備步驟。采用Matlab語言首先讓學生們實現均衡化處理前后的對比顯示;接著實現自己設計的算法和Matlab算法的執行效率比較;兩個同學為一組,互相對比,比較各自算法的執行效率,并研究執行效率的差別和原因,激發起學生們積極探討改進算法效率的興趣,推進學生們對于數字圖像處理強烈的求知欲,強烈的探討相關技術和相關參考工具的積極解決問題的欲望。
總之,將powerpoint和Matlab的特點和優點相互補充,充分達到課堂教學形象生動、講解精確的目的,較好的發揮了現在多媒體的優勢。文字和理論公式的講解采用Powerpoint進行,理論的演示和算法的設計、算法的驗證采用Matlab進行驗證,取得較好的教學效果!
參考文獻
[1]姚錦秀,鄭勝林,潘保昌. MATLAB應用在圖像處理教學中的探討[J].廣東工業大學學報,2004, 4(6).
[2]張國琴,吳周橋. MATLAB在數字圖像處理教學中的應用[J].武漢科技學院學報,2005,18(10).
[3]孫學巖. Matlab在數字圖像處理教學中的應用[J].濰坊學院學報,2008,8(6).
[4]常靚,陳志國.Matlab在圖像處理教學中的應用[J].黑龍江科技信息,2009.
[5]彭曉明.基于MATLAB的數字圖像處理課程的教學實驗設計[J].高等教育研究,2009, 26(1): 60-62.
[6]張博夫,梁凱琦. MATLAB環境下的數字圖像處理實驗入門[J].實驗科學與技術.2008(2): 52-53,116.
[7]周國輝,俞蘭芳,張軍.數字圖像處理及工程應用[M].哈爾濱:東北林業大學出版社, 2010.
[8]李喆,張宏立. Powerpoint與MATLAB接口實現[J].新疆大學學報(自然科學版),2005, 22(3): 338-341.
[9]姚敏.數字圖像處理[M].北京:機械工業出版社, 2006.