王玉文 胡順波
摘要:數(shù)字圖像處理課程的形態(tài)學(xué)主要是從幾何學(xué)的角度分析圖像,不同于課程前面章節(jié)從空域和頻域角度分析圖像,因而難以被學(xué)生理解和接受。文章探討形態(tài)學(xué)、空間域和頻率域運(yùn)算三個(gè)主要課程內(nèi)容之間的聯(lián)系,闡述形態(tài)學(xué)基本操作的空間域卷積和頻率域乘積的實(shí)現(xiàn)步驟。仿真實(shí)驗(yàn)結(jié)果表明,形態(tài)學(xué)操作可以通過(guò)空間域卷積和頻率域乘積實(shí)現(xiàn),它們是密切聯(lián)系在一起的。
關(guān)鍵詞:數(shù)字圖像處理;形態(tài)學(xué);腐蝕;膨脹;卷積;頻率
中圖分類(lèi)號(hào):TP393? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2022)18-0074-03
開(kāi)放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
1 引言
新工科自2016年提出以來(lái),形成了三個(gè)綱領(lǐng)性文件:“復(fù)旦共識(shí)”“天大行動(dòng)”和“北京指南”,揭示了新工科的特質(zhì):引領(lǐng)性、通寬性、前瞻性、交叉性、開(kāi)放性和實(shí)踐性[1-2]。新工科是主動(dòng)應(yīng)對(duì)新一輪科技革命與產(chǎn)業(yè)變革的戰(zhàn)略發(fā)展新需求,對(duì)應(yīng)的是新興產(chǎn)業(yè),如人工智能、智能制造、機(jī)器人、云計(jì)算等,當(dāng)然也包括傳統(tǒng)工科專(zhuān)業(yè)的升級(jí)改造[3]。數(shù)字圖像處理作為計(jì)算機(jī)、通信、信息、人工智能等專(zhuān)業(yè)方向的重要課程,在新工科的智能處理方向建設(shè)中起重要作用。融會(huì)貫通數(shù)字圖像處理的理論框架,串聯(lián)形態(tài)學(xué)、空間域處理和頻率域處理的關(guān)系[4-5],有助于數(shù)字圖像處理課程的教學(xué)工作,促進(jìn)學(xué)生對(duì)這門(mén)課程的學(xué)習(xí)和掌握。
形態(tài)學(xué)處理在數(shù)字圖像處理課程中,常單獨(dú)作為一個(gè)章節(jié)。主要從幾何學(xué)的角度,定義數(shù)學(xué)形態(tài)學(xué)的一些算法,執(zhí)行處理任務(wù)[6]。從理論上講,形態(tài)學(xué)好像和其他章節(jié)關(guān)系不大,相對(duì)難以被學(xué)生理解和接受。但這部分內(nèi)容可以和整個(gè)數(shù)字圖像處理的理論框架(空間域處理和頻率域處理)密切相關(guān)。空(間)域處理的核心是卷積運(yùn)算,頻(率)域處理的核心是乘積操作,卷積定理是他們之間的橋梁和紐帶。本文將先說(shuō)明形態(tài)學(xué)的基本概念:膨脹和腐蝕,然后再探討其“空域卷積,頻域乘積”實(shí)現(xiàn),最后給出具體實(shí)現(xiàn)步驟和實(shí)驗(yàn)結(jié)果。
2 形態(tài)學(xué)中腐蝕和膨脹的基本概念
假設(shè)[A]表示二值圖像,[B]表示一個(gè)二值模板,[C]是圖像[A]中數(shù)值為1(目標(biāo))的像素集合,結(jié)構(gòu)元[D]是模板[B]中數(shù)值為1的像素集合,則[B]對(duì)[A]的腐蝕操作定義如下:
[A?B=z]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (1)
z表示像素。[Dz]表示當(dāng)模板[B]的中心平移到z位置處,[A]在[B]為1位置處(結(jié)構(gòu)元[D])的像素集合。在像素z處,如果滿足條件[Dz?C],即[A]在結(jié)構(gòu)元[D]對(duì)應(yīng)的所有[D]個(gè)位置處的像素值都為1,則腐蝕圖像在像素z位置處取值1;否則取值0。[D]表示集合[D]中的元素總數(shù)目。
同理,非反轉(zhuǎn)結(jié)構(gòu)元版本[7]的膨脹操作的數(shù)學(xué)定義如下:
[A⊕B=z]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(2)
當(dāng)模板[B]的中心平移到z位置處,[A]在結(jié)構(gòu)元對(duì)應(yīng)位置處的所有[D]個(gè)像素中,只要有一個(gè)像素值為1,則膨脹圖像在像素z位置處取值為1;否則為0。
3 腐蝕和膨脹的卷積實(shí)現(xiàn)
設(shè)二值圖像[A]的大小為[M×N],模板[B]的大小為[m×n],[m=2a+1],[n=2b+1]。則他們之間(線性)卷積的定義如下:
[A?Bx,y=s=-aat=-bbBs,tA(x-s,y-t)]? ? ? ?(3)
上述卷積操作可以用八個(gè)字來(lái)概括:反轉(zhuǎn),平移,相(點(diǎn))乘,累加。首先,繞模板[B]的中心原點(diǎn)反轉(zhuǎn);然后,把反轉(zhuǎn)后的模板平移到[x,y]處;對(duì)應(yīng)[m×n]個(gè)位置處的像素值相乘;最后,把[m×n]個(gè)乘積項(xiàng)累加到一起,得到卷積在[x,y]處的輸出值。本文中,“線性卷積”簡(jiǎn)稱(chēng)“卷積”。
從卷積、腐蝕和膨脹的定義可見(jiàn),共同點(diǎn)是都需要平移操作。其不同點(diǎn)體現(xiàn)在如下兩個(gè)方面:1)卷積運(yùn)算對(duì)模板[B]先進(jìn)行反轉(zhuǎn),再進(jìn)行平移,而腐蝕和膨脹運(yùn)算對(duì)模板[B]直接進(jìn)行平移操作,不需要反轉(zhuǎn);2)腐蝕和膨脹使用了集合關(guān)系進(jìn)行定義,而卷積使用了代數(shù)運(yùn)算進(jìn)行定義。所以,針對(duì)這兩個(gè)不同點(diǎn),對(duì)卷積運(yùn)算和運(yùn)算后的輸出圖像做如下設(shè)計(jì):1)[B=imrotateB,180?,center],即模板[B]和[B]互為反轉(zhuǎn)關(guān)系,這將保證卷積運(yùn)算與腐蝕、膨脹運(yùn)算在進(jìn)行平移操作時(shí)候,使用相同的模板;2)對(duì)卷積的結(jié)果[A?B]進(jìn)行二值化處理,得到二值圖像[E]:
[Ex,y=1A?Bx,y≥T0A?Bx,y 如果閾值[T]取數(shù)值1,則二值圖像[E]等于膨脹圖像,[E=A⊕B]。如果閾值[T]取數(shù)值[D](相對(duì)于圖像[A],無(wú)卷積出界點(diǎn)的區(qū)域),或在圖像[A]四個(gè)邊界附近取[D∩A](相對(duì)于圖像[A],存在卷積出界點(diǎn)的區(qū)域),則二值圖像[E]等于腐蝕圖像,[E=A?B]。這樣,通過(guò)卷積運(yùn)算和后續(xù)處理,實(shí)現(xiàn)了形態(tài)學(xué)的腐蝕和膨脹。 綜上,通過(guò)空間域卷積運(yùn)算,實(shí)現(xiàn)腐蝕和膨脹的主要步驟如下: 1)輸入二值圖像[A]和模板[B]; 2)對(duì)模板[B]進(jìn)行反轉(zhuǎn),得到反轉(zhuǎn)后的模板[B]; 3)對(duì)[A]和[B]進(jìn)行卷積操作,得到卷積結(jié)果[Gp]=[conv2A,B]; 4)對(duì)[Gp]進(jìn)行裁剪,保留大小和[A]相同的中間部分,記為[G]; 5)類(lèi)似公式(4),對(duì)[G]進(jìn)行二值化處理,得到二值圖像[E]。當(dāng)閾值分別取1和[D](當(dāng)模板出界,[D∩A])時(shí),對(duì)應(yīng)[E]分別是膨脹圖像和腐蝕圖像。 裁剪操作目的是得到和輸入二值圖像[A]同樣大小的圖像。如果省略該步驟,則得到全尺寸為[M+m-1×N+n-1]的輸出圖像。步驟4)和5)交換順序,可得到相同結(jié)果。 4 腐蝕和膨脹的頻率域?qū)崿F(xiàn) 二維離散卷積定理說(shuō)明周期卷積可以通過(guò)頻率域乘積來(lái)實(shí)現(xiàn)。而在線性移不變系統(tǒng)中,系統(tǒng)的真實(shí)輸出,是輸入圖像與單位沖擊響應(yīng)的線性卷積。所以如何使圖像和模板的周期卷積等于線性卷積,是頻率域乘積求線性卷積的關(guān)鍵。但是,由于離散傅里葉變換具有周期性,導(dǎo)致在使用卷積定理時(shí),二維數(shù)字圖像在空間域不再認(rèn)定為單張圖片,而是認(rèn)定為周期性出現(xiàn)的。進(jìn)而,導(dǎo)致了使用‘頻域乘積,再進(jìn)行離散傅里葉反變換計(jì)算線性卷積的時(shí)候,會(huì)發(fā)生空間域的周期纏繞錯(cuò)誤。為了避免這種空間域的周期纏繞錯(cuò)誤,需要對(duì)輸入圖像和模板,通過(guò)0填充進(jìn)行周期延拓。當(dāng)填充足夠多的0時(shí),空間域圖像就無(wú)法纏繞在一起。此時(shí),通過(guò)頻域乘積計(jì)算的周期卷積,其有效部分就等于線性卷積。所以,我們可以通過(guò)頻率域乘積,來(lái)實(shí)現(xiàn)空間域的線性卷積,進(jìn)而實(shí)現(xiàn)腐蝕和膨脹。 圖1給出線性卷積、周期卷積和補(bǔ)0后周期卷積的計(jì)算對(duì)比示意圖。[4×4]黑色數(shù)字部分表示原始圖像,[3×3]紅色數(shù)字部分表示對(duì)稱(chēng)模板。圖中,模板的中心都對(duì)應(yīng)原始圖像的右下角值為7的位置,此時(shí)其三種卷積的輸出值分別如下:1)線性卷積,1?6+1?4+1?5+1?7+(1?0)?5=22; 2)周期卷積,1?6+1?4+1?5 +1?7 +1?8 +1?2 + 1?3+ 1?1=36;3)補(bǔ)0后周期卷積,1?6+1?4+1?5+1?7+(1?0)?5=22。由圖1可見(jiàn),由于離散傅里葉變換引入了周期性,導(dǎo)致了周期卷積的纏繞錯(cuò)誤,在圖像邊界處的周期卷積和線性卷積結(jié)果不一致。通過(guò)在原圖像的行和列進(jìn)行補(bǔ)0(紫色)操作,消除了周期卷積的纏繞錯(cuò)誤,從而使補(bǔ)0后的周期卷積和線性卷積結(jié)果相同。 綜上所述,通過(guò)頻率域乘積,實(shí)現(xiàn)腐蝕和膨脹運(yùn)算的主要步驟如下: 1)輸入二值圖像[A]和模板[B]; 2)對(duì)模板[B]進(jìn)行反轉(zhuǎn),得到反轉(zhuǎn)后的模板[B]; 3)對(duì)[A]和[B]進(jìn)行0填充,得到[Ap]和[Bp]: [Apx,y=Ax,y0≤x≤M-1 和 0≤y≤N-10M≤x≤P 或 N≤y≤Q ], [Bpx,y=Bx,y0≤x≤m-1 和 0≤y≤n-10m≤x≤P 或 n≤y≤Q]。 其中,[P≥M+m-1,? Q≥N+n-1]; 4)分別對(duì)[Ap]和[Bp]進(jìn)行二維離散傅里葉變換,得到[FAp=fft2Ap],[FBp=fft2Bp]; 5)頻域乘積,對(duì)[FAp]和[FBp]進(jìn)行對(duì)應(yīng)元素相乘,即哈達(dá)瑪乘積,得到頻域?yàn)V波結(jié)果[FG p]=[FAp?FBp]; 6)對(duì)[FGp]進(jìn)行二維離散傅里葉反變換,得到[Gp]=[ ifft2FGp]。 7)對(duì)[Gp]進(jìn)行裁剪,保留大小和輸入圖像[A]相同的中間部分,記為[G]。 8)同上節(jié)步驟5)。 步驟7)和8)可以交換順序,就是先進(jìn)行二值化,再進(jìn)行裁剪,也能得到同樣的結(jié)果。在實(shí)際的頻率域?qū)崿F(xiàn)過(guò)程中,考慮離散傅里葉正變換和反變換過(guò)程中的數(shù)值離散化誤差和計(jì)算精度誤差,閾值可以取稍微小一點(diǎn)的數(shù)值,[T=T-ε],[ε]是很小的正數(shù)。 5 實(shí)驗(yàn) 使用Matlab語(yǔ)言編程,分別對(duì)具有簡(jiǎn)單邊緣的仿真圖像和具有復(fù)雜邊緣的人物圖像進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果分別見(jiàn)圖2和圖3。實(shí)驗(yàn)代碼在Github上公開(kāi)[8]。 在圖2中,(a)是原始彩色圖像,大小為[385×512],含有六種簡(jiǎn)單圖形目標(biāo);(b)是對(duì)稱(chēng)模板[B],大小為[25×25],每個(gè)元素值都為1,[D=625];(c)是由(a)生成的二值圖像[A],即先通過(guò)rgb2gray函數(shù)把彩色圖像(a)轉(zhuǎn)換為灰度圖像,然后通過(guò)二值化處理獲得;(d)是腐蝕圖像;(e)是膨脹圖像。 因?yàn)閷?duì)于定義法、空域卷積法和頻域乘積法,都得到了完全一樣的實(shí)驗(yàn)結(jié)果[8],所以腐蝕圖像(d)和膨脹圖像(e)僅畫(huà)出一次,代表三類(lèi)實(shí)現(xiàn)方案的結(jié)果。當(dāng)使用定義法的時(shí)候,腐蝕運(yùn)算、膨脹運(yùn)算分別用imerode、imdilate函數(shù);當(dāng)使用空域卷積法的時(shí)候,主要用帶有‘same參數(shù)的conv2函數(shù)來(lái)實(shí)現(xiàn);對(duì)于頻域乘積法,主要使用了fft2、矩陣點(diǎn)乘運(yùn)算、ifft2函數(shù)來(lái)編程實(shí)現(xiàn)。 對(duì)實(shí)際人物的二值圖像,我們也做了類(lèi)似實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如圖3所示。在圖3中,(a)是原始二值圖像[A],大小為[269×221],具有相對(duì)復(fù)雜的輪廓;(b)是對(duì)稱(chēng)模板[B],大小為[11×11],為1的像素占據(jù)中間菱形區(qū)域,剩余四角部分的像素值為0,[D=61]。因?yàn)閇A]下邊界附近存在白色目標(biāo)區(qū)域,所以,當(dāng)使用空域卷積法和頻域乘積法的進(jìn)行腐蝕操作時(shí)候,存在卷積出界點(diǎn)的腐蝕區(qū)域,閾值采用前文中的出界點(diǎn)策略計(jì)算方法,實(shí)現(xiàn)代碼見(jiàn)鏈接 [8]。(c)是腐蝕圖像,(d)是膨脹圖像。同樣地,三類(lèi)方法得到相同的腐蝕圖像和膨脹圖像[8]。 以上兩個(gè)實(shí)驗(yàn)表明,無(wú)論對(duì)腐蝕運(yùn)算,還是膨脹運(yùn)算,三類(lèi)實(shí)現(xiàn)方案都可以得到同樣的結(jié)果,所以這三類(lèi)實(shí)現(xiàn)方案可以相互轉(zhuǎn)換。形態(tài)學(xué)、空間域卷積和頻率域乘積三者之間是密切聯(lián)系在一起的。這樣,把數(shù)字圖像處理課程中凌亂的三塊知識(shí)點(diǎn)統(tǒng)一起來(lái)。此外,卷積是現(xiàn)在流行的深度學(xué)習(xí)中卷積神經(jīng)網(wǎng)絡(luò)的基本模塊,把這三個(gè)概念進(jìn)行外延,就和深度學(xué)習(xí)和人工智能相聯(lián)系。 6 結(jié)論 本文對(duì)形態(tài)學(xué)腐蝕和膨脹運(yùn)算,給出了三類(lèi)實(shí)現(xiàn)方案:定義法、空域卷積法、頻域乘積法。這三類(lèi)實(shí)現(xiàn)方案可以從理論上和算法上相互轉(zhuǎn)換,并通過(guò)實(shí)驗(yàn),驗(yàn)證了三類(lèi)方案能得到同樣結(jié)果。因而,從概念和算法中理順數(shù)字圖像處理中三大板塊(空間域處理、頻率域處理、形態(tài)學(xué)處理)的區(qū)別和聯(lián)系,洞悉腐蝕運(yùn)算和膨脹運(yùn)算的空域卷積和頻域乘積的實(shí)現(xiàn)細(xì)節(jié)。通過(guò)腐蝕運(yùn)算或膨脹運(yùn)算,可以來(lái)定義其他更復(fù)雜的形態(tài)學(xué)運(yùn)算,例如開(kāi)、閉運(yùn)算、擊中-擊不中變換等。這些復(fù)雜形態(tài)學(xué)運(yùn)算也可以通過(guò)空域卷積實(shí)現(xiàn),或頻域乘積來(lái)實(shí)現(xiàn)。 參考文獻(xiàn): [1] 周端明,沈燕培.習(xí)近平科技創(chuàng)新重要論述指引新工科建設(shè)的方向[J].高等工程教育研究,2021(4):1-7. [2] 趙繼,謝寅波.新工科建設(shè)與工程教育創(chuàng)新[J].高等工程教育研究,2017(5):13-17,41. [3] 徐艷,朱孔偉.“數(shù)字信號(hào)處理”課程思政教學(xué)的融入點(diǎn)探索[J].教育教學(xué)論壇,2021(7):117-120. [4] 楊森泉,丁凡,陳景華,劉建軍,胡松喜.新工科背景下數(shù)字圖像處理課程實(shí)訓(xùn)改革與實(shí)踐[J].物聯(lián)網(wǎng)技術(shù),2021,11(7):126-127+130. [5] 唐曉芬,郭輝.以創(chuàng)新能力培養(yǎng)為目標(biāo)的數(shù)字圖像處理課程教學(xué)改革研究[J].計(jì)算機(jī)教育,2021(8):112-115,120. [6] Rafael C. Gonzalez, Richard E. Woods. 數(shù)字圖像處理(第四版)[M]. 阮秋琦,阮宇智,譯. 北京:電子工業(yè)出版社, 2020:454-467. [7] Dilate image. Matlab imdilate[EB/OL]. https://www.mathworks.com/help/images/ref/ imdilate.html. [8] Hu Shunbo. dilation_erosion_conv_freq[EB/OL]. https://github.com/hushunbo/dilation_ erosion_conv_freq. 【通聯(lián)編輯:王力】