朱 敏,于光輝,盧洪義,李 朋
(海軍航空工程學院,煙臺 264001)
利用Roberts[1]、Prewitt[2]、Sobel[3]、Canny[4]、Zerocross和Log[5]等邊緣檢測算子檢測出的固體發動機邊緣檢測結果通常大于1個體素,無法準確定位出固體發動機各組成部分的實際邊緣,這將限制后繼缺陷最大直徑、截面周長、表面積、體積等特征參數的精確測量。
二維空間中,單像素化正是一種求取寬度不為1的連續區域的連續中心線的處理方法,通常使用的處理方法包括Hilditch算法[6]、Rosenfeld算法[7]、Zhang并行算法[8]和Deutch算法[9]。本文利用這4種算法對固體發動機斷層圖像邊緣檢測結果實施單像素化處理,比較分析得出適用于固體發動機的單像素化方法,并將此方法拓展,提出一種三維空間中的固體發動機邊緣檢測結果單體素化方法。
Hilditch單像素化算法的步驟如下:對圖像從左向右從上向下按條件處理每個像素,視為一個迭代周期。在每個迭代周期中,對于每一個像素P,如果它同時滿足下述6個條件,則標記它。在當前迭代周期結束時,把所有標記的像素的值設為0(背景)。如果某次迭代周期中不存在標記點(即圖像中所有點都不同時滿足6個條件),則算法結束,原始待單像素化圖像去掉所有標記點即為單像素化后的結果圖像。迭代過程中需同時滿足的6個條件詳見參考文獻[6]。
Rosenfeld單像素化算法的步驟如下:對圖像從左向右從上向下按條件處理每個像素,視為一個迭代周期。在每個迭代周期中,對于每一個像素P,進行以下6步處理。如果某次迭代周期中不存在需要處理的點,則算法結束,原始待單像素化圖像去掉所有被處理點即為單像素化后的結果圖像。迭代中6步處理過程詳見文獻[7]。
Zhang并行單像素化算法的步驟如下:對圖像從左向右從上向下按條件處理每個像素,視為一個迭代周期。在每個迭代周期中,對于每一個像素P,進行以下4個條件的判斷,如果4個條件都滿足,則將P置0。如果某次迭代周期中不存在需要處理的點,則算法結束,原始待單像素化圖像去掉所有被處理點即為單像素化后的結果圖像。迭代中4個判斷條件詳見文獻[8]。
Deutsch單像素化算法的步驟如下:對圖像從左向右從上向下迭代每個像素,視為一個迭代周期。在每個迭代周期中,對于每一個像素P,進行以下5個判斷,如果5個條件都滿足,則將P置0。如果某次迭代周期中不存在需要處理的點,則算法結束,原始待單像素化圖像去掉所有被處理點即為單像素化后結果圖像。迭代中的5個判斷條件詳見文獻[9]。
1.5.1 實驗條件
固體發動機斷層圖像獲取設備為我國自主研制的HICT-X450型固體發動機無損檢測自動化系統[10-11],斷層圖像經邊緣檢測處理后如圖1所示,處理前原始圖像及邊緣檢測算法見文獻[12-13]。
單像素化方法運行計算機配置如下:CPU為酷睿2、主頻1.8 GHZ、內存2 G。
1.5.2 實驗結果分析
分別采用Hilditch算法、Rosenfeld算法、Zhang并行算法和Deutch算法對圖1進行單像素化處理,處理結果如圖2所示。
通過比較可得出:Hilditch算法得到的邊緣在轉折處非常尖銳,Rosenfeld算法得到的邊緣在轉折處也較為尖銳,Zhang算法和Deutsch算法得到的邊緣在轉折處較為平滑。
4種不同的單像素化方法所用的循環迭代次數和總處理時間如表1所示。

圖1 邊緣檢測后的固體發動機斷層圖像

(a)Hilditch (b)Rosenfeld

(c)Zhang (d)Deutsch

方法HilditchRosenfeldZhangDeutsch循環迭代次數48576處理總時間/s5.271.2195.253.789
Hilditch算法用時最長,迭代次數最多,Zhang算法用時和迭代次數次之,不作為單體素化算法的選擇。Rosenfeld算法用時最短,迭代次數最少,Deutsch算法迭代次數比Rosenfeld算法多1次,用時大約是Rosenfeld算法的3倍,但Deutsch算法的單像素化效果較Rosenfeld算法的單像素化效果平滑,因此以Deutsch單像素化算法為基礎,提出一種固體火箭發動機三維數據場邊緣檢測結果的單體素化方法。
與二維邊緣提取類似,三維邊緣提取寬度也較大,因此也需要對提取的發動機三維邊緣進行單體素化。假設體素P的鄰域結構和體素編碼如圖3所示。圖像的邊緣用1表示,背景用0表示。

圖3 P鄰域的結構及編碼
算法的步驟如下:對固體發動機邊緣三維數據場從左向右、從上向下、從前向后迭代每個像素,視為一個迭代周期。在每個迭代周期中,對于每一個像素P,進行以下13個條件的判斷,如果13個條件都滿足,則將P置0。如果某次迭代周期中不存在需要處理的點,則算法結束,原始待細化三維數據場去掉所有被處理點即為細化后的結果。進行判斷的13個條件如下:
(1)2≤x1+x2+x3+x4+x5+x6+x7+x8≤6;
(2)Sx(P)=1;
(3)x1×x3×x5=0或者Sx(x3)≠1;
(4)x7×x3×x5=0或者Sx(x5)≠1;
(5)2≤x1+x9+x13+x11+x5+x16+x18+x14≤6;
(6)Sy(P)=1;
(7)x1×x13×x5=0或者Sy(x13)≠1;
(8)x18×x13×x5=0或者Sy(x5)≠1;
(9)2≤x3+x10+x13+x12+x7+x17+x18+x15≤6;
(10)Sz(P)=1;
(11)x3×x13×x7=0或者Sz(x13)≠1;
(12)x18×x13×x7=0或者Sz(x7)≠1;
(13)P=1。
Sx(P)的含義是圖3中P的鄰域,排成序列x1,x2,x3,x4,x5,x6,x7,x8,x1,序列從0變化到1的次數。
Sy(P)的含義是圖3中P的鄰域,排成序列x1,x9,x13,x11,x5,x16,x18,x14,x1,序列從0變化到1的次數。
Sz(P)的含義是圖3中P的鄰域,排成序列x3,x10,x13,x12,x7,x17,x18,x15,x3,序列從0變化到1的次數。
實驗條件同1.5.1節中所述。圖4為單體素化前后的三維邊緣檢測結果。可見,本文所述方法能夠準確單體素化固體發動機的三維邊緣。

(a)未單體素化 (b)單體素化后
單體素化的邊緣是固體發動機體空間缺陷特征參數精確測量的基礎。通過對Hilditch算法、Rosenfeld算法、Zhang并行算法和Deutch算法等經典二維單像素化方法比較分析,得出Deutsch算法是最適用于固體發動機斷層圖像的單像素化方法,并以此方法為基礎,向三維空間拓展,提出一種固體發動機體空間邊緣檢測結果單體素化方法,經實驗驗證,此方法單體素化結果滿足精確測量的需求。
參考文獻:
[1] Roberts L G.Machine perception of three-dimensional solids[M].Cambridge:MIT Press,1965:159-197.
[2] Prewitt J.Object enhancement and extraction[M].New York: Academic Press,1970:30-45.
[3] Davi L S.A survey of edge detection techniques[J].CGIP,1975,4:248-270.
[4] Canny John.A computational approach to edge detection[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,1986,PAMI-8(6):679-698.
[5] Robinson G S.Edge detection by compass gradient masks[J].CGIP,1975,6(5):753-763.
[6] http://wk.baidu.com/view/78ef110dba1aa8114431d93e.html
[7] 孫燮華.數字圖像處理-Visual C #.NET編程與實驗[M].北京:機械工業出版社,2010:224.
[8] Zhang T Y,Suen C Y.A fast parallel algorithm for thinning digital patterns[J].Comm. ACM,1984,27(3): 236-239.
[9] 孫燮華.數字圖像處理[M].北京:機械工業出版社,2010:175.
[10] 楊興根,侯本學,張存厚. 固體火箭發動機無損檢測自動化系統設計思想[J].飛航導彈,2001,31 (10):41-43.
[11] 楊興根,陳宇杰.固體火箭發動機專用ICT機械掃描系統[J].推進技術,1999,20(6):106-108.
[12] 于光輝,盧洪義,朱敏,等.基于引力模型的固體火箭發動機CT圖像邊緣檢測[J].核電子學與探測技術,2012,32(2):184-187.
[13] 于光輝,盧洪義,朱敏,等.基于引力模型的固體火箭發動機三維數據場邊緣提取[C]//第四屆固體導彈技術學術交流會文集.2012.