王新軍,尚煜珂,李 平
(火箭軍工程大學,西安,710025)
由發(fā)動機故障引起的火箭發(fā)射失敗案例占總案例的1/3[1],因此對火箭發(fā)動機的檢測意義重大。目前,應用于固體火箭發(fā)動機缺陷檢測的無損檢測方法很多,例如超聲[2]、紅外[3]、激光全息[4]、X 射線[5]以及工業(yè) CT圖像[6]等,其中工業(yè)CT圖像的檢測結果較為理想。但是對于一界面的檢測存在邊緣效應以及偽影的影響。對于細小缺陷,如細小的一界面脫粘不易檢測[6]。分水嶺算法的優(yōu)點是魯棒性好,其缺點是過分割和對噪聲敏感[7]。目前所研究的幾種改進算法[8~11]主要應用在醫(yī)學圖像的處理[12]和粘連物體圖像分割處理[13]等方面。本文為了更好地對固體火箭發(fā)動機 CT圖像中缺陷特征進行提取和識別,應用了一種動態(tài)合并準則的改進分水嶺算法。
動態(tài)合并準則是基于一定結構信息的對圖像中灰度差異的一種度量。它測量的是包含極值點的結構而不是極值點本身或者極值點對應流域。由于在動態(tài)合并計算中用不到圖像的形狀和大小等信息,因此不需知道圖像的相關先驗知識。而很多基于marker的分割方法需事先知道圖像中物體的形狀、大小等相關信息。動態(tài)合并準則的計算沒有這個限制,因此具有很好的通用性[14]。
定義兩點間的一條路徑的動態(tài)合并區(qū)間,這條路徑上最高點與最低點之間的高度差即為動態(tài)合并值:
式中 (,)Pxy為x,y之間的路徑;sup為上確界; ()fx為x點的灰度值。
為了抑制過分割,需去除不重要的谷底。因此,需要計算的是谷底的動態(tài)合并值,如圖1所示。
由圖1可知,谷底M與另一個谷底灰度值小于M的流域中一點的所有路徑中,動態(tài)合并值最小的一個就是谷底M的動態(tài)合并值,即:式中 ()DM 為谷底M的動態(tài)合并值;inf為下確界;分別為谷底高度。
圖1 谷底動態(tài)合并示意Fig.1 Dynamic Merging of Grain Bottom
圖1只考慮一維的情況,1()DP和2()DP分別是左右兩個方向不同路徑上連接谷底M和比M低的谷底的動態(tài)合并值,其中1()DP較小, ()DM=1()DP。二維情況也依照此法,只是需要考慮平面內(nèi)所有可能的路徑。
對過分割的抑制過程如圖2所示。
圖2 對過分割的抑制示意Fig.2 A Hint of Over Segmentation
由圖2可知,在對過分割的抑制過程中存在噪聲,受噪聲的影響,出現(xiàn)了很多小的假谷底。直接用分水嶺算法進行分割時會產(chǎn)生很多小的區(qū)域,出現(xiàn)嚴重的過分割現(xiàn)象。為了抑制過分割現(xiàn)象,可做如下處理:a)分別對各個谷底進行計算,算出其動態(tài)合并值;b)根據(jù)動態(tài)合并準則,將計算出的值標注在圖中。
由于噪聲所產(chǎn)生谷底的動態(tài)合并值很小,而真正的谷底M,N的動態(tài)合并值則很大,因此只需設定一個閾值,就可將噪聲所產(chǎn)生的谷底濾掉,從而達到抑制過分割的目的。
改進分水嶺算法的流程如圖3所示。
圖3 改進分水嶺算法流程示意Fig.3 Process of Improving the Watershed Algorithm
b)重排梯度圖。
分水嶺算法對像素處理是按照像素值從小到大的順序進行的。因此,按照圖像的像素值由小到大的順序進行重排,生成原圖像的累積直方圖。由于在計算過程中需頻繁地訪問像素的鄰域,為了加快運算的速度,在重排過程中設定存儲每個像素的 8個鄰域的像素信息,這樣就能直接訪問到像素的鄰域信息。
c)從最小的梯度值開始,逐級處理梯度像素,一邊分割一邊合并,直到進行到梯度最大值,整幅圖像就處理完畢。
為了加快處理進程,應用了先進先出隊列結構。算法執(zhí)行是按照梯度逐步上升處理的,例如處理到梯度級為h時,小于h的梯度都被處理完了。設處理完像素的集合為M,h+1的像素集合為N,M與N的關系有如下3種:a)M與N不相交,說明N為新的流域谷底;b)M與N相交且連通,則把N歸到M對應谷底;c)M
由圖3可知,改進分水嶺算法流程步驟如下:
a)提取梯度圖。
形態(tài)學梯度是指用圖像一次膨脹的結果減去一次腐蝕的結果,算法應用求取形態(tài)學梯度的方法。形態(tài)學梯度圖像g為與N相交但不連通,說明N屬于不同流域,需計算與不同谷底的距離,再將其歸入到相應的流域。具體步驟為:
1)像素入隊:在整個程序的執(zhí)行過程中,存在一個處理隊列,用來將能處理的像素入隊,并且在要處理時出隊。例如處理到梯度級為h的時候,將梯度為h而且包括在鄰域中已經(jīng)處理完的那些點入隊。一次入隊結束后,再將隊內(nèi)的點出隊進行處理。
2)從隊列當中逐個取出像素點,設取出的點為p,計算p鄰域中分水嶺和流域的個數(shù),分別用umNW和表示。
3)根據(jù)umN B和umNW來判斷p輸出。
如果um1N B=,則與p點相鄰流域只有一個,將這個點的輸出賦給p。
4)判斷新谷底出現(xiàn):與前面所述M與N的不相交的情況相對應,此時要對圖像進行重新的掃描來判斷是否有新的谷底出現(xiàn)。
對某型彈體的模型進行CT檢測,外殼為鋼體,在藥柱處人工預制了裂紋缺陷。應用傳統(tǒng)的分水嶺算法和本文的方法處理后,對結果進行比對。CT檢測原圖如圖4所示,應用線性濾波對原圖進行預處理,處理后的效果如圖5所示。
圖4 CT檢測原圖Fig.4 CT Detection Original Map
圖5 預處理后效果Fig.5 Preconditioning Effect Diagram
傳統(tǒng)分水嶺算法處理后的圖像以及本文方法處理后圖像如圖6所示。
圖6 分水嶺算法處理結果Fig.6 Watershed Algorithm Processing Result Diagram
由圖6可知,應用傳統(tǒng)方法處理后的圖像存在明顯的過分割現(xiàn)象,而應用動態(tài)合并準則的分水嶺方法的處理結果對過分割起到了明顯的抑制,對比數(shù)據(jù)如表1所示。
表1 計算錯分概率相關數(shù)據(jù)Tab.1 Calculation of Error Probability Related Data
由表 1可知,本文方法的錯分概率為傳統(tǒng)分水嶺方法的1/10。
在傳統(tǒng)分水嶺算法的基礎之上,進行了基于動態(tài)合并準則分割方法的改進,通過實驗驗證該方法對過分割有了明顯的抑制?;趧討B(tài)合并準則的分水嶺算法不必像區(qū)域生長分割算法一樣需對圖片有較多先驗知識,也不必像邊緣檢測方法那樣檢測到邊緣后還要進行邊緣連接。目前實驗只對裂紋缺陷 CT圖像的處理,后期還會進行其他缺陷的大量實驗,進一步完善算法研究。