呂金坤,王明泉,蔡文濤
(中北大學儀器科學與動態(tài)測試教育部重點實驗室,山西 太原 030051)
責任編輯:時 雯
由于邊緣檢測是圖像處理中最基礎(chǔ)的內(nèi)容之一,所以國內(nèi)外專家學者對邊緣檢測進行了深入的研究,相關(guān)的算法也非常之多。隨著科學技術(shù)和現(xiàn)代工業(yè)的飛速發(fā)展,邊緣檢測被應用在越來越廣泛的領(lǐng)域,從而它仍是圖像處理中需要研究的重點課題。
圖像最本質(zhì)的特征是邊緣。數(shù)學形態(tài)學作為新興圖像邊緣檢測方法的其中一種,具有簡化圖像數(shù)據(jù)、除去不相干結(jié)構(gòu)、保持圖像的基本形態(tài)特征、易于硬件實現(xiàn)等特點,可以有效彌補經(jīng)典邊緣檢測方法的不足?;诖?,本文提出了基于數(shù)學形態(tài)學和圖像融合相結(jié)合的圖像邊緣檢測算法MDY,得到了比較好的效果。
在邊緣檢測中,經(jīng)典算法都是基于掩模求卷積的方法來實現(xiàn)邊緣檢測的,如Roberts算子和Sobel算子。Roberts算子對陡峭的低噪聲圖像處理效果較好。文獻[1]針對Roberts算法代碼執(zhí)行效率最高,但對噪聲十分敏感的特點,給出了一種基于濾波技術(shù)的改進Roberts算法。Sobel算子對噪聲較多和灰度漸變的圖像處理得較好,但是在進行邊緣檢測中也檢測出了一些偽邊緣,降低了檢測定位精度。文獻[2]給出了一種基于改進Sobel模板的灰色關(guān)聯(lián)分析邊緣檢測算法,可以獲得很好的邊緣特性。拉普拉斯算子是一種二階導數(shù)算子[3],平滑和微分合并后的算子就是高斯—拉普拉斯算子(LOG算子)。LOG算子定位精度高,檢測到的邊緣的連續(xù)性較好,但是其對噪聲很敏感。Canny算子在邊緣檢測過程中具有誤碼率低、定位精度高等優(yōu)點。但固定大小的高斯濾波器不能滿足對具有不同尺度大小的邊緣結(jié)構(gòu)檢測的要求。文獻[4]依據(jù)LOG算子和Canny算子各自的優(yōu)點,提出了兩者相結(jié)合的邊緣檢測方法。
由于圖像邊緣檢測往往要結(jié)合幾種方法才能得出最佳效果,沒有一種方法是萬能的。所以為了更加完整、不受噪聲影響地檢測圖像邊緣,本文采用一種新的圖像邊緣檢測方法MDY算法對圖像進行邊緣檢測。該算法的思路為:將含有待檢測的目標物的圖像復制一份,并將這幅復制的圖像通過數(shù)學形態(tài)學的方法整個擴大一個像素。隨后用原圖進行圖像相減運算,便可獲得目標物邊緣。
數(shù)學形態(tài)學是一種數(shù)學分析方法,它是以嚴格的數(shù)學集合論為基礎(chǔ)的一門新興學科,其基本思想是采用具有一定形態(tài)的結(jié)構(gòu)元素去度量并提取圖像中的對應形狀[5-6]。數(shù)學形態(tài)學有4種基本運算:膨脹、腐蝕、開啟和閉合。
定義1:設(shè)F表示一幅圖像,B為結(jié)構(gòu)元素,則F被B膨脹的運算定義為
膨脹與腐蝕是互為對偶的運算,因此,F(xiàn)被B腐蝕的運算定義為
式中:Fc表示F的補集;表示B的映射。
定義2:設(shè)F表示一幅圖像,B為結(jié)構(gòu)元素,則F關(guān)于B開運算定義為
開運算和閉運算也是互為對偶的運算,所以F關(guān)于B閉運算的定義為
式中:“?”表示開運算符號;“·”表示閉運算符號。
膨脹是一種擴張變換,是對圖像外部做濾波處理;而腐蝕則是一種收縮變換,是對圖像內(nèi)部做濾波處理。這兩種變換都對灰度值變化明顯的圖像邊緣較為敏感。形態(tài)開運算具有平滑圖像輪廓的功能,但閉運算一般能填補輪廓上的縫隙。因此,形態(tài)學算子經(jīng)常被用于對圖像的邊緣進行檢測、降噪。
得到的邊緣信息并不能真正反映該圖像的邊緣信息,只有融合為一幅圖像,才是最終的邊緣。在圖像融合的過程中,融合規(guī)則的選取直接影響圖像的質(zhì)量。在像素級的融合方法中,基于單像素點的融合方法雖然簡單且計算量少,但效果往往不太理想。因此,本文采用基于像素點鄰域特征的圖像融合規(guī)則。
ImageJ[7]是一個基于Java的公共的圖像處理軟件,它由National Institutes of Health開發(fā)??蛇\行于Microsoft Windows,Mac OS,Mac OS X,Linux,和 Sharp Zaurus PDA等多種平臺。ImageJ通過Java插件被設(shè)計為開放體系結(jié)構(gòu),用戶可以安裝圖像處理、分析方面的插件,這些插件都可以使用內(nèi)置的編輯器和編譯器,適當?shù)剡\用插件可以解決多數(shù)圖像處理的問題。ImageJ支持圖像棧(stack)功能,即在一個窗口里可以以多線程的形式層疊多個圖像,并行處理。只要內(nèi)存允許,ImageJ能打開任意多的圖像進行處理。
Step1:圖像去背景操作。通過指令Subtract Background實現(xiàn)。該命令可以使圖像的直方圖由雙峰的變?yōu)閱畏宓?,便于閾值的選取和二值化。
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算子、數(shù)學形態(tài)學算子、小波變化方法對圖1的工業(yè)CT原始圖像進行邊緣檢測試驗。邊緣檢測結(jié)果如圖2所示。
圖1 工業(yè)CT原始圖像
圖2 邊緣檢測結(jié)果
對比各算法的邊緣檢測結(jié)果可以得知,本文采用的新的圖像邊緣檢測算法MDY對邊緣的檢測具有抗噪性好,邊緣細節(jié)豐富且輪廓比較清晰、光滑、無斷點和斷裂邊緣的優(yōu)點,為下一步進行圖像分割做好了充分的準備。由于是在ImageJ上編程實現(xiàn)該算法,該算法能夠以一個按鈕的形式存在,方便用戶操作,節(jié)省時間,并且可以對多幅圖片進行并行處理。
本文在檢測工業(yè)CT圖像邊緣方面提出了一種新的方法。圖2g是本文提出的算法對工業(yè)CT圖像進行邊緣檢測的結(jié)果,可明顯地觀測到本文提出的算法在檢測圖像邊緣方面優(yōu)于其他方法,且降噪效果更好。
[1]盤莉莉,劉曉剛,胡慶輝.一種改進的roberts算法在焊縫識別中的應用研究[J].電焊機,2010,40(7):42-44.
[2]梁娟,侯海虹.基于改進Sobel模板的灰色關(guān)聯(lián)分析邊緣檢測算法[J].電視技術(shù),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]岡薩雷斯.數(shù)字圖像處理[M].阮秋琦,譯.3版.北京:電子工業(yè)出版社,2011.
[7] The Java Language[EB/OL].[2012-05-12].http://java.sun.com.