呂金坤,王明泉,蔡文濤
(中北大學儀器科學與動態測試教育部重點實驗室,山西 太原 030051)
責任編輯:時 雯
由于邊緣檢測是圖像處理中最基礎的內容之一,所以國內外專家學者對邊緣檢測進行了深入的研究,相關的算法也非常之多。隨著科學技術和現代工業的飛速發展,邊緣檢測被應用在越來越廣泛的領域,從而它仍是圖像處理中需要研究的重點課題。
圖像最本質的特征是邊緣。數學形態學作為新興圖像邊緣檢測方法的其中一種,具有簡化圖像數據、除去不相干結構、保持圖像的基本形態特征、易于硬件實現等特點,可以有效彌補經典邊緣檢測方法的不足。基于此,本文提出了基于數學形態學和圖像融合相結合的圖像邊緣檢測算法MDY,得到了比較好的效果。
在邊緣檢測中,經典算法都是基于掩模求卷積的方法來實現邊緣檢測的,如Roberts算子和Sobel算子。Roberts算子對陡峭的低噪聲圖像處理效果較好。文獻[1]針對Roberts算法代碼執行效率最高,但對噪聲十分敏感的特點,給出了一種基于濾波技術的改進Roberts算法。Sobel算子對噪聲較多和灰度漸變的圖像處理得較好,但是在進行邊緣檢測中也檢測出了一些偽邊緣,降低了檢測定位精度。文獻[2]給出了一種基于改進Sobel模板的灰色關聯分析邊緣檢測算法,可以獲得很好的邊緣特性。拉普拉斯算子是一種二階導數算子[3],平滑和微分合并后的算子就是高斯—拉普拉斯算子(LOG算子)。LOG算子定位精度高,檢測到的邊緣的連續性較好,但是其對噪聲很敏感。Canny算子在邊緣檢測過程中具有誤碼率低、定位精度高等優點。但固定大小的高斯濾波器不能滿足對具有不同尺度大小的邊緣結構檢測的要求。文獻[4]依據LOG算子和Canny算子各自的優點,提出了兩者相結合的邊緣檢測方法。
由于圖像邊緣檢測往往要結合幾種方法才能得出最佳效果,沒有一種方法是萬能的。所以為了更加完整、不受噪聲影響地檢測圖像邊緣,本文采用一種新的圖像邊緣檢測方法MDY算法對圖像進行邊緣檢測。該算法的思路為:將含有待檢測的目標物的圖像復制一份,并將這幅復制的圖像通過數學形態學的方法整個擴大一個像素。隨后用原圖進行圖像相減運算,便可獲得目標物邊緣。
數學形態學是一種數學分析方法,它是以嚴格的數學集合論為基礎的一門新興學科,其基本思想是采用具有一定形態的結構元素去度量并提取圖像中的對應形狀[5-6]。數學形態學有4種基本運算:膨脹、腐蝕、開啟和閉合。
定義1:設F表示一幅圖像,B為結構元素,則F被B膨脹的運算定義為

膨脹與腐蝕是互為對偶的運算,因此,F被B腐蝕的運算定義為

式中:Fc表示F的補集;表示B的映射。
定義2:設F表示一幅圖像,B為結構元素,則F關于B開運算定義為

開運算和閉運算也是互為對偶的運算,所以F關于B閉運算的定義為

式中:“?”表示開運算符號;“·”表示閉運算符號。
膨脹是一種擴張變換,是對圖像外部做濾波處理;而腐蝕則是一種收縮變換,是對圖像內部做濾波處理。這兩種變換都對灰度值變化明顯的圖像邊緣較為敏感。形態開運算具有平滑圖像輪廓的功能,但閉運算一般能填補輪廓上的縫隙。因此,形態學算子經常被用于對圖像的邊緣進行檢測、降噪。
得到的邊緣信息并不能真正反映該圖像的邊緣信息,只有融合為一幅圖像,才是最終的邊緣。在圖像融合的過程中,融合規則的選取直接影響圖像的質量。在像素級的融合方法中,基于單像素點的融合方法雖然簡單且計算量少,但效果往往不太理想。因此,本文采用基于像素點鄰域特征的圖像融合規則。
ImageJ[7]是一個基于Java的公共的圖像處理軟件,它由National Institutes of Health開發。可運行于Microsoft Windows,Mac OS,Mac OS X,Linux,和 Sharp Zaurus PDA等多種平臺。ImageJ通過Java插件被設計為開放體系結構,用戶可以安裝圖像處理、分析方面的插件,這些插件都可以使用內置的編輯器和編譯器,適當地運用插件可以解決多數圖像處理的問題。ImageJ支持圖像棧(stack)功能,即在一個窗口里可以以多線程的形式層疊多個圖像,并行處理。只要內存允許,ImageJ能打開任意多的圖像進行處理。
Step1:圖像去背景操作。通過指令Subtract Background實現。該命令可以使圖像的直方圖由雙峰的變為單峰的,便于閾值的選取和二值化。
Step2:采用中值濾波Median對原圖像進行濾波去噪。
Step3:復制 Duplicate。
Step4:腐蝕 Process—Binary——Options,Iterations=1,Process—Binary—Erode。
Step5:圖像相減 Process——Image Calculator—Subtract。
利用宏語言編寫代碼使其自動操作,部分核心代碼為

寫好之后將文件名命名為“StartupMacros”。通過Plugins—Macros—Install安裝之后,下次再運行ImageJ時該操作就會自動加載,以一個命令按扭的形式存在。
為了驗證MDY算法的效果,分別用Roberts算子、Sobel算子、LOG算子、Canny算子、數學形態學算子、小波變化方法對圖1的工業CT原始圖像進行邊緣檢測試驗。邊緣檢測結果如圖2所示。

圖1 工業CT原始圖像

圖2 邊緣檢測結果
對比各算法的邊緣檢測結果可以得知,本文采用的新的圖像邊緣檢測算法MDY對邊緣的檢測具有抗噪性好,邊緣細節豐富且輪廓比較清晰、光滑、無斷點和斷裂邊緣的優點,為下一步進行圖像分割做好了充分的準備。由于是在ImageJ上編程實現該算法,該算法能夠以一個按鈕的形式存在,方便用戶操作,節省時間,并且可以對多幅圖片進行并行處理。
本文在檢測工業CT圖像邊緣方面提出了一種新的方法。圖2g是本文提出的算法對工業CT圖像進行邊緣檢測的結果,可明顯地觀測到本文提出的算法在檢測圖像邊緣方面優于其他方法,且降噪效果更好。
[1]盤莉莉,劉曉剛,胡慶輝.一種改進的roberts算法在焊縫識別中的應用研究[J].電焊機,2010,40(7):42-44.
[2]梁娟,侯海虹.基于改進Sobel模板的灰色關聯分析邊緣檢測算法[J].電視技術,2012,36(9):22-23.
[3]管力明,李磊,林劍.基于改進LOG算子的圖像邊緣檢測方法[J].機電工程,2010,27(12):114-115.
[4]賀強,晏立.基于LOG和Canny算子的邊緣檢測算法[J].計算機工程,2011,37(3):211-212.
[5] RIVEST J F.Morphological operators on complex signals[J].Signa1 Processing,2004,84(1):133-139.
[6]岡薩雷斯.數字圖像處理[M].阮秋琦,譯.3版.北京:電子工業出版社,2011.
[7] The Java Language[EB/OL].[2012-05-12].http://java.sun.com.