江健,張琪,王財勇
(中國人民公安大學(xué),北京 100038;2.北京建筑大學(xué),北京 100044)
數(shù)字圖像處理課程是高等院校信息技術(shù)相關(guān)專業(yè)學(xué)生一門重要的專業(yè)課,涉及內(nèi)容主要包括圖像基本變換、圖像增強、圖像復(fù)原、圖像分割等[1]。然而,數(shù)字圖像處理課程設(shè)計上存在著以下幾個難點:首先,數(shù)字圖像處理的理論和算法部分需要掌握許多抽象的數(shù)學(xué)知識,對于初次接觸該門課程的學(xué)生而言,需要較多的精力去學(xué)習(xí)相關(guān)內(nèi)容;其次,常用的圖像處理工具OpenCV 和Skimage 等在使用時需要熟悉編程語言,如Python或Matlab等才能掌握圖像處理過程中的基本操作和函數(shù)使用方法[2-4]。針對以上難點,本文基于OpenCV 和PyQt 設(shè)計了一個數(shù)字圖像處理綜合實驗平臺,該平臺提供了可視化界面以及封裝好的算法模塊,學(xué)生可以通過平臺的可交互參數(shù)欄設(shè)置算法參數(shù),并在圖像顯示欄實時觀察圖像處理結(jié)果。該實驗平臺不僅可以輔助教學(xué),使學(xué)生更容易掌握數(shù)字圖像處理的基本理論和方法,還可以激發(fā)學(xué)生的興趣去深入數(shù)字圖像處理的相關(guān)研究領(lǐng)域。
OpenCV 是一個開源的計算機(jī)視覺算法庫,廣泛應(yīng)用于數(shù)字圖像處理、計算機(jī)視覺和機(jī)器學(xué)習(xí)等領(lǐng)域[5],它提供了豐富的圖像分割、圖像增強、圖像復(fù)原、目標(biāo)檢測等視覺任務(wù)的工具和方法,同時支持多種編程語言,如Python、C++、Java等。PyQt是一種基于Python 的GUI 編程框架,提供了豐富的GUI 組件庫和事件處理機(jī)制,可用于開發(fā)各種GUI 應(yīng)用程序。此外,PyQt還是一個跨平臺的GUI應(yīng)用程序開發(fā)框架,支持多種操作系統(tǒng),例如Windows、MacOS、Linux 等。因此,可在多個平臺上開發(fā)PyQt 應(yīng)用程序,開發(fā)的應(yīng)用程序可跨平臺運行[6-7]。本文開發(fā)的數(shù)字圖像處理綜合實驗平臺調(diào)用了OpenCV 的接口實現(xiàn)算法模塊,并搭配PyQt 的GUI 組件實現(xiàn)可視化。該實驗平臺集良好的實用性、交互性、拓展性、綜合性于一體,熟練掌握該平臺的學(xué)生還可添加更多的圖像處理算法模塊,有利于提高學(xué)生的學(xué)習(xí)興趣和動手實踐能力。
本文基于OpenCV 和PyQt 設(shè)計的數(shù)字圖像處理綜合實驗平臺涵蓋六部分內(nèi)容:圖像基本操作、空間域圖像增強、頻率域圖像增強、圖像退化與復(fù)原、圖像分割、圖像形態(tài)學(xué)處理[8]。在相應(yīng)的部分實現(xiàn)了多種圖像處理算法模塊,實驗平臺總體框架如圖1所示。
圖1 實驗平臺總體框架
實驗平臺的左側(cè)欄包含了圖像基本操作區(qū)域,例如放大縮小、旋轉(zhuǎn)、翻轉(zhuǎn)、窗口自適應(yīng)、直方圖顯示以及保存圖片等操作。最頂部是包含了圖像的空間域增強和頻率域增強、圖像復(fù)原、圖像分割、形態(tài)學(xué)等標(biāo)簽頁,在相應(yīng)的標(biāo)簽頁下是各種算法模塊。界面中心是圖片展示區(qū)域。右側(cè)欄包含了對圖像進(jìn)行操作的記錄區(qū)域以及算法參數(shù)調(diào)整區(qū)域,方便學(xué)生進(jìn)行實驗和探究。另外,通過點擊右鍵可以顯示圖像文件目錄選擇需要進(jìn)行處理的圖像。實驗平臺界面如圖2所示。
圖2 實驗平臺界面
圖3顯示了圖像的放大縮小、旋轉(zhuǎn)、翻轉(zhuǎn)、灰度化、直方圖顯示功能。在系統(tǒng)左側(cè)基本操作欄中,可以選擇相應(yīng)的基礎(chǔ)操作按鈕實現(xiàn)相應(yīng)效果。
圖3 圖像的基本操作
1)直方圖均衡化
圖像直方圖反映圖像像素的分布情況,體現(xiàn)圖像的明暗程度和對比度。分布居中表示明亮度正常,偏左表示偏暗,偏右表示偏亮,狹窄陡峭表示對比度較低,寬平表示對比度較高。直方圖均衡化是一種常見的數(shù)字圖像處理技術(shù),它通過調(diào)整圖像的亮度和對比度,使圖像中的灰度直方圖分布更加均勻,從而提高圖像的視覺效果。
2)平滑濾波器
平滑濾波器用于消除圖像中的噪聲、模糊圖像的邊緣或紋理信息。本文設(shè)計的綜合實驗平臺集成了多種常用的方法,包括高斯、中值、均值、雙邊濾波器,可以在不同場景下選擇使用。此外,通過調(diào)整濾波器核大小參數(shù)可以實現(xiàn)不同的平滑效果。
3)銳化濾波器
銳化濾波器用于增強圖像中的邊緣和紋理信息,其基本思想是將圖像中的每個像素與周圍像素進(jìn)行比較,若差異較大則被保留,否則就被過濾。常用的銳化濾波器包括Laplacian、Sobel和Scharr濾波器。本文設(shè)計的綜合實驗平臺中的銳化算法模塊就集成了這三種濾波器。通過調(diào)整濾波核大小、縮放比例、偏置參數(shù)可以實現(xiàn)不同的銳化效果。
4)空間域圖像增強實例演示
圖4展示了實驗平臺對輸入圖像進(jìn)行直方圖均衡化、圖像平滑和圖像銳化后的結(jié)果,以及參數(shù)調(diào)節(jié)功能。
圖4 空間域圖像增強
1)傅里葉變換
圖像傅里葉變換是一種將圖像從空間域轉(zhuǎn)換到頻率域的數(shù)學(xué)方法,通常使用二維離散傅里葉變換(DFT),其公式如(1)所示:
頻率域轉(zhuǎn)空間域的反變換(IDFT),其公式如(2)所示:
其中x,y代表離散空間域的坐標(biāo),u,v代表離散的頻率域坐標(biāo),M,N代表圖像的大小。
2)低通濾波器
低通濾波器可以在頻率域過濾高頻信息實現(xiàn)圖像的平滑,基本思想是通過設(shè)定閾值來過濾高頻信息。本文設(shè)計的低通濾波器模塊包含了高斯低通濾波器和巴特沃斯低通濾波器。
3)高通濾波器
高通濾波器可以在頻率域過濾低頻信息實現(xiàn)圖像的銳化,基本思想是在頻率域使用1減去低通濾波器的函數(shù),即可得到高通濾波器函數(shù),其公式如(3)所示:
其中HHP(u,v)表示高通濾波器的函數(shù),HLP(u,v)表示低通濾波器的函數(shù)。本文設(shè)計的高通濾波器模塊包含了高斯高通濾波器。
4)頻率域圖像增強演示實例
圖5展示了實驗平臺對圖像進(jìn)行頻率域低通濾波和高通濾波圖像增強的結(jié)果。
圖5 頻率域圖像增強
1)噪聲模型
數(shù)字圖像在獲取和傳輸?shù)倪^程中,常常會受到各種噪聲源的影響,例如圖像采集設(shè)備易受到環(huán)境條件影響以及傳輸信道的干擾噪聲。為了模擬真實的圖像噪聲,本文設(shè)計的噪聲算法模塊集成了常見的噪聲模型,包括高斯噪聲、瑞利噪聲、伽馬噪聲、指數(shù)噪聲、均勻噪聲和椒鹽噪聲模型。
2)圖像退化模型
本文設(shè)計的綜合實驗平臺集成了運動模糊退化模型。運動模糊是指由于物體或相機(jī)在拍攝過程中移動而引起的圖像模糊現(xiàn)象。運動模糊退化函數(shù)模型可由公式(4)建立:
其中T代表周期,u,v代表離散的頻率域坐標(biāo),a,b代表相應(yīng)的變量系數(shù)。
3)圖像復(fù)原模型
本文設(shè)計的綜合實驗平臺提供了逆濾波器和維納濾波器算法模塊來復(fù)原退化的圖像。
逆濾波器的核心思想是用退化圖像的傅里葉變換結(jié)果除以退化模型函數(shù)的傅里葉變換結(jié)果,得到原始圖像的傅里葉變化估計,如公式(5)所示:
其中G(u,v)代表退化圖像的傅里葉變換結(jié)果,H(u,v)代表退化模型函數(shù)的傅里葉變換結(jié)果。F?(u,v)代表原始圖像的傅里葉變化估計。
維納濾波器(最小均方誤差濾波)目標(biāo)是找出一個未被退化的圖像估計,使其與原圖像的均方誤差最小,如公式(6)所示:
其中f代表原圖像,f?代表估計圖像。
4)圖像退化與復(fù)原演示實例
圖6展示了實驗平臺對運動模糊圖像分別使用逆濾波操作和維納濾波操作后的結(jié)果。
圖6 圖像退化與復(fù)原
1)邊緣檢測
Canny邊緣檢測算法是目前較為常用的邊緣檢測算法,它的主要目標(biāo)是找到圖像中最明顯的邊緣并減少噪聲和弱邊緣的影響。本文設(shè)計的邊緣檢測算法模塊使用了Canny算法。
2)直線檢測
Hough變換用于提取圖像中的直線等規(guī)則形狀特征,其基本原理是通過把圖像中的邊緣像素映射到極坐標(biāo)系上,來找到圖像中的直線。本文設(shè)計的直線檢測算法模塊使用了Hough變換。
3)閾值處理
閾值分割通過設(shè)定灰度值閾值來將圖像分成前景和背景兩部分。在進(jìn)行閾值分割時,設(shè)定初始閾值T,對于圖像中的每個像素,如果灰度值大于等于T,則劃分為前景,否則劃分為背景。閾值分割的最后結(jié)果是一張二值圖像,前景為白色,背景為黑色。本文設(shè)計的閾值分割模塊包含了二進(jìn)制閾值法、全局閾值法、局部閾值法、大津法幾個常用的閾值處理算法。
4)圖像分割演示實例
圖7展示了實驗平臺對圖像進(jìn)行邊緣檢測、直線檢測、閾值分割后的結(jié)果。
圖7 圖像分割
本文設(shè)計的綜合實驗平臺在形態(tài)學(xué)處理模塊集成了腐蝕和膨脹、開運算和閉運算以及頂帽操作和黑帽操作等算法。
1)腐蝕和膨脹
腐蝕操作常用于移除圖像的白色部分。膨脹操作常用于填補圖像的黑色部分。
2)開運算和閉運算
開運算操作常用于腐蝕操作后保留對象的輪廓。閉運算操作常用于膨脹操作后保留對象的輪廓。
頂帽操作常用于去除圖像噪聲并提取圖像的邊緣信息,其步驟為先對圖像分別進(jìn)行膨脹操作和腐蝕操作,再將膨脹后的圖像減去腐蝕后的圖像,得到最終的圖像。而黑帽操作的步驟順序與其相反。
3)形態(tài)學(xué)處理演示實例
圖8 展示了實驗平臺對圖像分別進(jìn)行腐蝕和膨脹、開運算和閉運算、頂帽操作和黑帽操作后的結(jié)果。
圖8 形態(tài)學(xué)處理
本文基于OpenCV 和PyQt 設(shè)計開發(fā)了一個數(shù)字圖像處理綜合實驗平臺,集成了圖像基本操作、空間域圖像增強、頻率域圖像增強、圖像退化與復(fù)原、圖像分割、圖像形態(tài)學(xué)處理算法模塊。該實驗平臺具有良好的實用性、交互性、拓展性、綜合性,學(xué)生可以通過調(diào)節(jié)算法參數(shù)來實現(xiàn)不同的圖像處理結(jié)果,從而深入理解數(shù)字圖像處理算法的應(yīng)用場景和實現(xiàn)細(xì)節(jié),提高學(xué)生的動手能力和綜合能力。對于具有一定編程基礎(chǔ)和想要深入該領(lǐng)域的學(xué)生,可以編寫更多的算法模塊使得實驗平臺發(fā)揮出更多的功能,進(jìn)一步提高學(xué)生的科研素質(zhì)和創(chuàng)新能力。