鄒煥新,周石琳
(國防科技大學(xué)電子科學(xué)與工程學(xué)院,湖南長沙 410073)
“數(shù)字圖像處理”課程內(nèi)容多、概念抽象、實踐性強,單純通過理論教學(xué)很難使學(xué)生深入理解和掌握數(shù)字圖像處理的基本概念、基本原理和基本方法,許多算法都需要借助軟件進行編程和效果演示,因此,進行相應(yīng)的實驗教學(xué)是必不可少的。通過實驗教學(xué),不僅可以將枯燥的理論知識直觀化、通俗化、趣味化,而且還可以培養(yǎng)學(xué)生的計算機編程能力及獨立思考能力[1-5]。
市場上流行的圖像處理商用軟件(如PhotoShop等),與實際教學(xué)過程中的教學(xué)內(nèi)容脫節(jié)太大。我們在VC++.NET[6]平臺上構(gòu)建了數(shù)字圖像處理交互式的教學(xué)實驗系統(tǒng),該系統(tǒng)有助于學(xué)生通過實驗直觀地認(rèn)識和掌握圖像處理的原理和用途。
本實驗教學(xué)系統(tǒng)是按照“數(shù)字圖像處理”課程的具體要求并基于VC++.NET平臺構(gòu)建而成的。系統(tǒng)在構(gòu)建過程中充分吸收了其它類似實驗系統(tǒng)的優(yōu)點,并結(jié)合課程實際教學(xué)情況進行了適當(dāng)?shù)臄U展和完善,形成了以下幾個特點。
(1)直接服務(wù)于“數(shù)字圖像處理”課程的教學(xué)需要。教師在給學(xué)生講授相關(guān)理論之后,就可以運行本實驗系統(tǒng),利用系統(tǒng)提供的相關(guān)的功能模塊對輸入的圖像進行處理,得出處理結(jié)果,還可以對輸入和輸出的圖像進行比較分析。
(2)實驗系統(tǒng)與課程教材緊密結(jié)合,涵蓋面廣,基本上把教材上的相關(guān)內(nèi)容和基本算法用軟件模塊實現(xiàn)。同時,為便于學(xué)生直觀理解課程內(nèi)容,在軟件功能模塊的實現(xiàn)過程中均采用原理性的算法[5]。
(3)采用人性化的開發(fā)理念,使操作具有較強的靈活性。根據(jù)當(dāng)前實施的操作可以通過按鍵顯示相應(yīng)的原理,這些原理可以由教師在線或離線動態(tài)編輯,非常適合教師在課堂上演示實驗。學(xué)生既可以比較處理前后的圖像,又能看到相關(guān)的原理解釋。
(4)實驗教學(xué)系統(tǒng)基本上包括了圖像處理的所有內(nèi)容,而且引入了圖像處理領(lǐng)域較新的研究成果,使學(xué)生能夠了解圖像處理的研究進展。
(5)實驗系統(tǒng)對學(xué)生采取源代碼完全開放的策略,這使得學(xué)生在課程學(xué)習(xí)、畢業(yè)設(shè)計或課程設(shè)計、攻讀研究生或者是參加工作后均可以基于系統(tǒng)已經(jīng)構(gòu)建的框架,進一步研制功能更完善和性能更好的圖像處理系統(tǒng)。
實驗教學(xué)系統(tǒng)框架采用基于VC++.NET的多文檔模塊化程序設(shè)計。所組成的13個模塊有如下功能。
(l)視覺特性模塊—包括同時對比度效應(yīng)、馬赫帶效應(yīng)以及對數(shù)模型等;
(2)圖像顯示模塊—包括 Bayer抖動顯示、Floyd-Steinberg抖動顯示等;
(3)圖像點運算模塊—包括圖像反色、線性變換、閾值變換、窗口變換和灰度拉伸等;
(4)幾何變換模塊—包括圖像的平移、圖像的縮放、圖像的鏡像變換(垂直和水平)、圖像的轉(zhuǎn)置和圖像的旋轉(zhuǎn)等;
(5)正交變換模塊—包括Fourier變換、離散余弦變換、沃爾什變換、哈達瑪變換、霍特林變換和小波變換等;
(6)形態(tài)學(xué)變換模塊—包括二值圖像和灰度圖像的膨脹運算、腐蝕運算、開運算和閉運算等;
(7)圖像增強模塊—包括對比度增強、圖像平滑去噪、圖像銳化、圖像模板卷積及其過程演示、頻域濾波、同態(tài)濾波和偽彩色增強等;
(8)圖像恢復(fù)模塊—包括簡單逆濾波、可分離的最小二乘恢復(fù)、不可分離的最小二乘恢復(fù)、Wiener濾波和最大熵恢復(fù)等;
(9)圖像編碼模塊—包括Huffman編碼、香農(nóng)-費諾編碼、行程編碼、算術(shù)編碼、位平面編碼、LZW編碼和JPEG編碼等;
(10)圖像分割模塊—包括基于閾值的分割方法、基于邊緣的分割方法、基于區(qū)域的分割方法以及基于特定理論的分割方法等;
(11)圖像配準(zhǔn)模塊—演示一種基于特征點匹配的圖像配準(zhǔn)方法;
(12)特征提取模塊—演示圖像中形狀特征的提取方法,例如長、寬、面積、周長、圓度、偏心率、主軸方向和代數(shù)不變矩等幾何特征參數(shù)的提取;
(13)圖像識別模塊—介紹模板匹配模型。
VC++.NET是一種面向?qū)ο蟮目梢暬幊坦ぞ?,它提供的AppWizard應(yīng)用程序向?qū)茏詣由蓱?yīng)用程序的標(biāo)準(zhǔn)框架,因此,實驗教學(xué)系統(tǒng)基于MDI應(yīng)用程序框架來構(gòu)建。此外,根據(jù)VC++.NET面向?qū)ο蠹夹g(shù)中的對象封裝特點,針對構(gòu)建系統(tǒng)的具體需求,設(shè)計了多個與基本操作和功能模塊對應(yīng)的對象類,主要包括:CDib,CDither,CPixelOperation,CGeometricTransform,COrthogonalTransform,CMorphologicalTransform,CEnhance,CRestoration,CCode,CSegmentation,CRegistration,CFeatureExtraction 和CRecognition等。由于在VC++.NET的MFC中,以CBitmap類代表DDB(設(shè)備相關(guān)位圖)圖像,這方便了編程人員對DDB的使用。
然而,在通常情況下不會把DDB圖像存儲成文件,因此,使用更多的是DIB(設(shè)備無關(guān)位圖)圖像,但是MFC并沒有提供專門的類來處理DIB文件,因此有必要設(shè)計可以重復(fù)使用的CDib類,專門用來處理DIB圖像。在此,CDib類的設(shè)計參考了編程書籍和網(wǎng)絡(luò)共享源代碼,并對其進行了適當(dāng)?shù)男薷暮蛿U展。該類提供對DIB圖像的基本操作,包括裝載位圖、獲取位圖相關(guān)信息、創(chuàng)建調(diào)色板和繪制位圖等主要功能。而其它的對象類則直接封裝了與各個功能模塊對應(yīng)的屬性和方法。
在開放源代碼的策略下,教師和學(xué)生等使用人員可在現(xiàn)有類的基礎(chǔ)上,根據(jù)程序代碼中詳細(xì)注釋的中文說明,方便地對它們進行繼承和派生,以創(chuàng)建更加專門的、功能更加強大的符合實際需求的對象類。在此基礎(chǔ)上進一步完善本實驗教學(xué)系統(tǒng)的各項功能,而這也正是構(gòu)建實驗教學(xué)系統(tǒng)的初衷之一。
(1)圖像正交變換
以圖像的Fourier變換為例,分析幅度譜和相位譜的特點及其作用。圖像Fourier變換的幅度譜和相位譜及僅利用幅度譜或相位譜的重建結(jié)果如圖1所示。從圖中可以看出,幅度譜和相位譜對于完整地重建一幅圖像是必不可少的,僅利用幅度譜重建的圖像是不可辨認(rèn)的,而僅利用相位譜重建的圖像則存在著嚴(yán)重的質(zhì)量退化。
圖1 圖像幅度譜和相位譜及其重建結(jié)果
利用不同圖像(Zebra圖像和Cheetah圖像,兩幅圖像尺寸大小相同)的幅度譜和相位譜以及交叉重建的結(jié)果如圖2所示。
從圖中可以看出,相位譜比幅度譜在圖像的視覺效果中起著更加重要的作用,而幅度譜則通常更多地應(yīng)用于圖像的分析計算中。其中,圖2(d)為用Zebra相位和Cheetah幅度交叉重建的圖像,圖2(h)為用Cheetah相位和Zebra進行幅度交叉后重建的圖像。
(2)圖像增強
以圖像的直方圖均衡為例。直方圖是圖像最基本的統(tǒng)計特征,它反映的是圖像的灰度值的分布情況。直方圖均衡的目的是使圖像在整個灰度值動態(tài)變化范圍內(nèi)的分布均勻化,改善圖像的亮度分布狀態(tài),增強圖像的視覺效果,是圖像預(yù)處理中涉及最廣泛的基本概念之一。圖3示出了直方圖均衡前后的圖像及其直方圖對比。從圖可以看出,經(jīng)過直方圖均衡之后,原始圖像的對比度加大了,直方圖分布相對來說更加均勻,圖像看起來更加清晰。
圖2不同圖像幅度譜和相位譜交叉重建
圖3 直方圖均衡圖像及直方圖對比
(3)圖像配準(zhǔn)
圖像配準(zhǔn)就是將不同時間、不同傳感器(成像設(shè)備)或不同條件下(天候、照度、攝像位置和角度等)獲取的兩幅或多幅圖像進行匹配、疊加的過程,廣泛地應(yīng)用于遙感數(shù)據(jù)分析、計算機視覺和圖像處理等領(lǐng)域。通過特征點匹配,建立兩幅圖像之間的對應(yīng)關(guān)系,確定相應(yīng)幾何變換參數(shù),對兩幅圖像中的一幅進行幾何變換以實現(xiàn)圖像配準(zhǔn)。圖4示出了對兩幅圖像進行配準(zhǔn)的結(jié)果。從圖上可見,經(jīng)過特征點匹配之后,待配準(zhǔn)圖像已經(jīng)很好地校正到與參考圖像相同的觀察方向和分辨率上,并進行了適當(dāng)?shù)牟眉簦瑥亩鵀楹罄m(xù)的變化檢測與分析過程奠定了良好的基礎(chǔ)。
圖4 兩幅圖像的配準(zhǔn)結(jié)果
本實驗教學(xué)系統(tǒng)構(gòu)建的最初目的是直接應(yīng)用于本科生“數(shù)字圖像處理”課程的教學(xué),已在我校信息工程專業(yè)本科生的課程教學(xué)中采用,取得了如下較好的效果。
(1)學(xué)生普遍歡迎和接受本實驗教學(xué)模式,能夠在實際動手操作中理解和掌握相關(guān)知識和技能,學(xué)習(xí)積極性有很大提高;
(2)很好地激發(fā)了學(xué)生的創(chuàng)造性,學(xué)生能夠通過查閱文獻或創(chuàng)新思路來優(yōu)化系統(tǒng)模塊算法,而有些知識是課堂上沒有講過的;
(3)學(xué)生在實際編程改進和完善功能模塊算法過程中,加深了對數(shù)字圖像處理基本知識和概念的掌握;
(4)鍛煉和增強了學(xué)生之間的協(xié)作和互助精神,學(xué)生在交流的同時加深了對知識的理解;
(5)實驗教學(xué)系統(tǒng)的使用實際上也在一定程度上有助于提高學(xué)生的“數(shù)字圖像處理”課程考核成績,從統(tǒng)計來看,提高幅度約為10%。
此外,本實驗系統(tǒng)不僅適用于本科生“數(shù)字圖像處理”課程實驗教學(xué),還推廣應(yīng)用于我校研究生“數(shù)字圖像分析”課程的實驗教學(xué)中,并取得了預(yù)期的效果。為了使本系統(tǒng)在課程實驗教學(xué)中發(fā)揮更大的作用,還需對其不斷完善,如系統(tǒng)應(yīng)該盡可能兼容各種格式的圖像、對大圖像的處理速度還需進一步優(yōu)化、增加更多的原理性算法功能模塊等,這是本實驗系統(tǒng)后續(xù)需要進一步加強和完善的地方。
[1] 黎寧,徐曉波,牛征.Matlab平臺下圖像處理實驗教學(xué)軟件的實現(xiàn)[J].南京:電氣電子教學(xué)學(xué)報,2001,23(5):55-56
[2] 張坤華,紀(jì)震.“數(shù)字圖像處理”可視化教學(xué)體系探索[J].南京:電氣電子教學(xué)學(xué)報,2007,29(1):113-115
[3] 盛利元,李宏言,孫克輝.“數(shù)字圖像處理”實驗教學(xué)探索與實驗軟件研究[J].南京:電氣電子教學(xué)學(xué)報,2005,27(3):75-77
[4] 張秀榮,孟和達來.數(shù)字圖像處理系統(tǒng)的開發(fā)與研究[J].長沙:湖南師范大學(xué)自然科學(xué)學(xué)報,2011,34(6):35-39
[5] 張秉仁,韋仁會,高游等.數(shù)字圖像處理實驗教學(xué)系統(tǒng)的開發(fā)及其應(yīng)用[J].北京:實驗技術(shù)與管理,2004,21(3):87-90
[6] 曉東,王勝海等.Visual C++.NET中文版實用培訓(xùn)教程[M].北京:清華大學(xué)出版社,2002