王玉文 胡順波



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