王蓉 李偉
摘 要:根據(jù)目前數(shù)字圖像處理技術(shù)發(fā)展和數(shù)字圖像處理課程的教學(xué)情況,為增強(qiáng)學(xué)生對理論知識(shí)的理解,本文介紹了基于VC++軟件平臺(tái)的數(shù)字圖像處理課程教學(xué)輔助軟件的設(shè)計(jì)和實(shí)現(xiàn)。該軟件主要包括圖像文件操作、圖像變換、圖像增強(qiáng)與復(fù)原、圖像分割和數(shù)學(xué)形態(tài)學(xué)等理論知識(shí),并提供一個(gè)良好的交互式平臺(tái),可以自由調(diào)整各種算法的參數(shù),使學(xué)生在較短的時(shí)間內(nèi)熟悉并掌握數(shù)字圖像處理課程中講述的各種算法和技術(shù)。
關(guān)鍵詞:數(shù)字圖像處理;教學(xué)軟件;VC++
中圖分類號(hào):TP391.41-4 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9599 (2013) 09-0000-02
1 引言
數(shù)字圖像處理是指將利用計(jì)算機(jī)對二維圖像信號(hào)進(jìn)行采集、處理和分析的過程。數(shù)字圖像處理課程是計(jì)算機(jī)視覺、模式識(shí)別和人工智能等專業(yè)的一門重要專業(yè)課程,涉及面廣、實(shí)用性強(qiáng)。數(shù)字圖像處理技術(shù)涉及的環(huán)節(jié)較多,主要包括圖像采集、圖像變換、圖像增強(qiáng)與復(fù)原、圖像分割等,每個(gè)圖像處理環(huán)節(jié)的方法也多種多樣,而且數(shù)字圖像處理技術(shù)的基礎(chǔ)理論和算法比較抽象,對于學(xué)生來說,在課內(nèi)時(shí)間掌握數(shù)字圖像處理課程的主要內(nèi)容有一定難度。現(xiàn)在有大量的圖像處理應(yīng)用軟件,如Photoshop,但這些軟件多是面向廣告設(shè)計(jì)、圖像修飾處理的應(yīng)用軟件,不適合數(shù)字圖像處理技術(shù)的基本知識(shí)和案例教學(xué)。
本文設(shè)計(jì)并實(shí)現(xiàn)了基于VC++開發(fā)環(huán)境下的數(shù)字圖像處理課程的教學(xué)輔助軟件,可以提供數(shù)字圖像處理系統(tǒng)各處理環(huán)節(jié)相關(guān)算法實(shí)現(xiàn)過程的演示,形象生動(dòng)地完成該課程的各教學(xué)單元的授課內(nèi)容,較好地幫助學(xué)生熟悉并消化數(shù)字圖像處理技術(shù)涉及的理論和技術(shù)方法。
2 教學(xué)輔助軟件設(shè)計(jì)
VC++是在Windows平臺(tái)下的專業(yè)軟件開發(fā)平臺(tái),廣泛用于各種軟件的開發(fā)。MFC是Microsoft公司提供的一套類庫,以C++類的形式封裝了Windows的API,是一套面向?qū)ο蟮暮瘮?shù)庫,方便用戶編程。MFC是Win API和C++的結(jié)合,提供了MFC AppWizard自動(dòng)生成框架,利用MFC中提供的各種類,可以簡單地構(gòu)建一個(gè)應(yīng)用程序框架。OpenCV是一個(gè)基于C/C++語言的開源圖像處理函數(shù)庫,包含實(shí)現(xiàn)圖像處理和計(jì)算機(jī)視覺方面的很多通用算法[1],其代碼具有很好的移植性。在安裝好VC++的Windows系統(tǒng)下安裝好OpenCV庫,并對軟件進(jìn)行配置,在工程中配置好所需要包含的庫文件的路徑等,即可方便的調(diào)用OpenCV庫中的函數(shù)。
2.1 軟件設(shè)計(jì)總體結(jié)構(gòu)
本文所設(shè)計(jì)的軟件主要圍繞數(shù)字圖像處理課程的基本知識(shí)和圖像處理技術(shù)涉及的各種方法進(jìn)行架構(gòu)的。軟件基于MFC的AppWizard多文檔應(yīng)用程序框架,并結(jié)合OpenCV庫中的一些圖像處理函數(shù)和設(shè)備無關(guān)位圖DIB的一些操作函數(shù)實(shí)現(xiàn)了多種圖像處理功能,如圖1所示。
2.2 軟件功能設(shè)計(jì)與實(shí)現(xiàn)
數(shù)字圖像處理技術(shù)包含很多環(huán)節(jié),根據(jù)軟件的總體架構(gòu),本軟件主要設(shè)計(jì)了文件操作、圖像變換、圖像增強(qiáng)與復(fù)原、圖像分割和數(shù)學(xué)形態(tài)學(xué)模塊,每個(gè)模塊還設(shè)計(jì)了不同功能塊。各模塊的圖像處理功能均可以對讀入的圖像進(jìn)行連續(xù)處理,本節(jié)展示了部分功能塊的處理過程。
2.2.1 文件操作
文件操作模塊能夠?qū)崿F(xiàn)對圖像等文件的常規(guī)操作,如打開、保存、另存為、打印等功能。本軟件主要處理BMP位圖格式的灰度圖像,通過此模塊可將待處理的圖像讀入到內(nèi)存,以供其他模塊調(diào)用,用于進(jìn)一步圖像處理。對于圖像處理的每個(gè)步驟所得的結(jié)果圖像均可以單獨(dú)顯示,并可進(jìn)行保存等操作。
2.2.2 圖像變換
圖像變換模塊可以實(shí)現(xiàn)位圖的幾何變換和圖像的點(diǎn)運(yùn)算,如圖像平移,水平鏡像,垂直鏡像,圖像縮放,圖像旋轉(zhuǎn),分段線性拉伸,圖像反色,二值化,閾值變換,窗口變換等功能。圖像變換過程中需要設(shè)定的參數(shù)可以通過彈出對話框的方式進(jìn)行設(shè)定,完成人機(jī)交互。
圖2為利用圖像反色和圖像閾值變換處理圖像的效果展示,其中左側(cè)圖為原始lena圖像,中間的圖為對原始lena圖像進(jìn)行反色后得到的圖像,右側(cè)圖為對原始lena圖像進(jìn)行閾值(參數(shù)值設(shè)為200)變換后的圖像。
圖1 數(shù)字圖像處理教學(xué)輔助軟件總體結(jié)構(gòu)圖
圖2 圖像變換處理示意圖
2.2.3 圖像增強(qiáng)與復(fù)原
圖像增強(qiáng)與復(fù)原模塊可以實(shí)現(xiàn)圖像濾波、圖像對比度增強(qiáng)、圖像恢復(fù)等功能,如對圖像添加噪聲、圖像平滑、直方圖均衡化、圖像銳化處理、傅里葉變換、低通濾波、高通濾波、小波變換等處理。在添加噪聲可以選擇高斯噪聲或椒鹽噪聲,圖像平滑可以選擇3*3、5*5、7*7等不同大小的模板進(jìn)行鄰域平均處理和中值濾波處理。圖像直方圖均衡化可以將直方圖分布不均的圖像進(jìn)行調(diào)整,使整幅圖像視覺效果更好。圖像銳化可以實(shí)現(xiàn)梯度銳化和拉普拉斯銳化,能夠提高圖像的對比度。低通濾波可實(shí)現(xiàn)理想低通濾波和巴特沃斯低通濾波,高通濾波可實(shí)現(xiàn)理想高通濾波和巴特沃斯高通濾波。傅里葉變換可以實(shí)現(xiàn)圖像從空間域到頻率域的變換,可以對圖像進(jìn)行一些頻域處理后再進(jìn)行反變換。小波變換可以將圖像分解成一個(gè)低頻概貌子圖像和一系列高頻細(xì)節(jié)子圖像,在變換域?qū)@些子圖像進(jìn)行處理后進(jìn)行反變換可實(shí)現(xiàn)對原圖的修改。
圖3為利用噪聲添加和鄰域平均法的效果展示圖,首先,讀取原始lena圖像(左側(cè)圖像),然后對原始lena圖像添加高斯噪聲(中間圖像),最后利用鄰域平均法( 窗口)對含噪圖像進(jìn)行平滑處理(右側(cè)圖像)。
圖3 圖像平滑處理示意圖
圖4為對圖像進(jìn)行傅里葉變換和低通濾波處理的效果展示圖,左側(cè)圖像為一幅黑色正方形圖像,中間圖像為其傅里葉變換頻譜圖,右側(cè)圖像為進(jìn)行理想低通濾波后的結(jié)果圖。
圖4 圖像濾波處理示意圖
2.2.4 圖像分割
圖像分割模塊可以實(shí)現(xiàn)圖像目標(biāo)分割功能,如圖像邊緣檢測和區(qū)域分割等處理。在圖像邊緣檢測處理中,可以選擇Roberts、Sobel、Prewitt、Laplacian和Canny算子進(jìn)行邊緣檢測。區(qū)域分割處理中可以采用直方圖閾值分割、自適應(yīng)閾值分割和區(qū)域增長的方法,其中直方圖閾值分割的閾值可以通過彈出對話框進(jìn)行參數(shù)選擇。除了上述功能外,此模塊還可以完成邊界跟蹤、Hough直線檢測等功能。邊界跟蹤模塊可以實(shí)現(xiàn)對白色背景的二值圖像中黑色目標(biāo)的邊界跟蹤,對輪廓進(jìn)行提取。Hough直線檢測根據(jù)Hough變換點(diǎn)-線對偶性原理,利用OpenCV中Hough線變換函數(shù),可實(shí)現(xiàn)標(biāo)準(zhǔn)Hough變換和累計(jì)統(tǒng)計(jì)概率Hough變換,將檢測出的直線進(jìn)行標(biāo)注。
圖5為圖像邊緣檢測和直線檢測示意圖,其中左上圖為原始圖像,右上圖為利用Roberts算子進(jìn)行的邊緣檢測結(jié)果圖,左下圖為利用Canny算子進(jìn)行的邊緣檢測結(jié)果圖,右下圖為利用Hough變換檢測直線的結(jié)果圖,檢測出的直線標(biāo)注成紅色。
2.2.5 數(shù)學(xué)形態(tài)學(xué)
數(shù)學(xué)形態(tài)學(xué)模塊可以對圖像進(jìn)行腐蝕、膨脹、開運(yùn)算、閉運(yùn)算,這四個(gè)運(yùn)算是數(shù)學(xué)形態(tài)學(xué)的四個(gè)基本運(yùn)算。數(shù)學(xué)形態(tài)學(xué)的基本思想是用具有一定形態(tài)的結(jié)構(gòu)元素去度量和提取圖像中的對應(yīng)形狀以達(dá)到對圖像分析和識(shí)別的目的[1]。利用這些運(yùn)算并結(jié)合圖像分割模塊可以實(shí)現(xiàn)圖像的邊緣檢測與分割、特征提取、圖像形狀識(shí)別與修改等處理。此外,該模塊還包含擊中擊不中和細(xì)化處理,利用擊中擊不中變換可以進(jìn)行目標(biāo)檢測與定位。
圖6為一個(gè)利用數(shù)學(xué)形態(tài)學(xué)進(jìn)行膨脹的示意圖。首先讀入原始圖像(左側(cè)圖像),然后對其進(jìn)行二值化處理(中間圖像),最后對二值化處理后的圖像進(jìn)行膨脹處理(右側(cè)圖像)。
圖5 圖像邊緣檢測及直線檢測示意圖
圖6 數(shù)學(xué)形態(tài)學(xué)膨脹處理示意圖
3 結(jié)束語
本文所介紹的數(shù)字圖像處理課程教學(xué)輔助軟件可以實(shí)現(xiàn)對圖像的文件操作、圖像變換、圖像增強(qiáng)與復(fù)原、圖像分割和數(shù)學(xué)形態(tài)學(xué)功能。本軟件的開發(fā)可有效地展示數(shù)字圖像處理課程中各種基本算法的實(shí)現(xiàn)過程和處理結(jié)果,有利于加深學(xué)生對該課程理論知識(shí)和實(shí)現(xiàn)技術(shù)的理解與掌握,能夠提高該課程的教學(xué)效果。
參考文獻(xiàn):
[1]陳勝勇,劉勝等.基于opencv的計(jì)算機(jī)視覺技術(shù)實(shí)現(xiàn)[M].北京:科學(xué)出版社,2008.
[2]印月.基于VC++6.0的數(shù)字圖像處理綜合性設(shè)計(jì)實(shí)驗(yàn)[J].實(shí)驗(yàn)科學(xué)與技術(shù),2011,Vol.9(3):10-11.
[3]黎寧,徐曉波,牛征.MATLAB平臺(tái)下圖像處理實(shí)驗(yàn)教學(xué)軟件的實(shí)現(xiàn)[J].電氣電子教學(xué)學(xué)報(bào),2001,Vol.23(5):55-58.
[4]張華,展曉凱.基于VC++的數(shù)字圖像處理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].濰坊學(xué)院學(xué)報(bào),2011,Vol.11(2):15-21.
[5]秦志遠(yuǎn),張占睦,莫華.計(jì)算機(jī)圖像處理可視化軟件設(shè)計(jì)與實(shí)現(xiàn)[J].測繪學(xué)院學(xué)報(bào),2001,Vol.18(1):33-35.
[作者簡介]王蓉(1971-),副教授,博士,漢族,遼寧人,主要研究方向:數(shù)字圖像處理與模式識(shí)別。