陳鵬
(福建省電子產品監督檢驗所 福建 福州 350003)
圖像處理被廣泛使用于諸如軍事目標識別[1]和血液測試[1]等不同場合。本研究針對X射線照片進行圖像處理。總的說來,商業軟件功能相當強大;然而,商業軟件經常是捆綁式的,所以它們無論在費用、物理平臺或者操作上都占用大量資源,這就造成本研究的需要,也就是開發簡單實用便宜的小型軟件以滿足具體需要。對于X射線圖像處理的研究已經有據可查[2-3]。 本文討論的是基于文件格式為BMP(BitMap的縮寫)的X射線照片進行三維形狀成型,這也方便以后在無損探測等領域中使用神經網絡算法對物體的厚度及材料等進行分析。本文利用編程技巧處理X射線照片以便產生三維實物圖像并和商業軟件進行交互。下述段落給出了軟件開發、設計原理和結果的闡述。
X射線照片的獲取途徑很多,包括互聯網。為了很方便地將此類BMP圖片裝載到圖片框中 (見圖1,軟件采用Visual Basic 6.0編程[4]),本設計編寫了一段子程序用來按比例縮小過大的圖片從而讓整張照片顯示并使得照片的清晰度不受影響。在此步驟之后,Windows的 API(Application Programming Interface的縮寫)函數被使用來分析圖片中每一像素的R,G,B矢量。 考慮到特定區域的圖片分析,本設計允許用戶選定具體的矩形區域進行操作。根據三維物體幾何學,三維物體的運動,包括平移、旋轉、縮放、被遮蔽表面的去除以及上色可以在軟件中實現。同時,本設計采用三角形面片離散地近似表示三維模型,其中所產生的X射線照片像素信息分別以Pro-Engineer軟件(.STL文件)和Paraform[5]軟件(.XYZ文件)相應格式存放。另外,軟件本身不但能夠產生STL格式的文件,而且可以顯示(見圖2)經 Pro-Engineer軟件所產生的STL文件格式的各種文件。

圖1 裝載X射線圖像Fig.1 Loading the X-ray image

圖2 STL文件顯示Fig.2 STL file display

圖3 STL格式Fig.3 STL format

圖4 點云格式Fig.4 Point cloud format
由于圖片的區域可以指定(比如為了檢測物體的缺陷或者分析某部分高度),本軟件考慮利用鼠標選擇矩形區域。通過拖動鼠標,該矩形區域可以被指定或者放棄。為了能夠觀看選擇區域的三維造型,用戶可以和使用Pro-Engineer軟件觀看STL格式文件一樣的方式來查看。同樣,用戶可以使用本軟件來查看上述三維造型。另外,通過和STL數據產生類似的方法,點云(point cloud)格式的數據(.XYZ文件)也在鼠標拖動下產生。同張金屬重疊(鋁和銅)X射線照片的類似區域的三維造型分別見圖3(STL格式,本軟件顯示)和圖4(點云格式,商業軟件顯示)。從圖中可以清楚看出重疊部分包含有臺階,從而確定金屬的塊數等。
有許多關于三維物體運動控制的參考[6]。相關的控制基本上是原始數據包括歸一化及點(本研究就是像素)坐標的矩陣操作。很明顯,每個像素都可以分解為相應的R,G,B矢量。為了能夠將給定圖形繪制成三維,本設計使用了若干API函數將成功裝載并完全顯示之后的圖片的每個像素的R,G,B矢量產生。本設計將圖5三維坐標系統中的坐標X定義為圖5圖片框中的坐標X的對應項;將圖5三維坐標系統中的坐標Y定義為圖5圖片框中的坐標Y的對應項;將圖5三維坐標系統中的坐標Z定義為圖5圖片框中的像素點(X,Y)的對應R,G,B矢量的合成項。

圖5 圖片框坐標系與三維坐標系Fig.5 Picture box coordinate&3D plot coordinate
當所有的像素點沿著X方向相連(Y為定值),然后再將Y增加1并重復上述步驟時可以形成該圖片的三維圖。而且,表面與底部也將分開 (Z值是個變量可以因具體情況而改變比例)。同時,隱藏線的去除也是必要的,因為靠近讀者的前面的線條會擋住后面線條的視線,這種情況發生于后面線條的Z值不大于前面線條的Z值的條件下。圖6給出了隱藏線條未去除的錯誤成形情況和采取措施后的情況。

圖6 未使用隱藏線去除和已使用隱藏線去除Fig.6 No hidden line removal&hidden line removal
本設計還包括表面的上色,物體表面的上色需要收集表面數據。按圖7所示,將像素格子分開并組成三角形來形成表面。可以將像素坐標定義成格式如(X1,Y1,Z(X1,Y1)), (X2,Y1,Z(X2,Y1))……,其中 Z 是相關 R,G,B 的復合值。 圖 7 中的三角形被順次連接并進而形成圖中X-Y平面上的投影。軟件根據前后位置找出看得見的三角形并對其上色,其中還涉及每一個三角形的歸一化(normalization)處理。
當歸一化處理之后,所有的數據將被產生成文本格式的STL文件,也就計算出各個三角形頂點坐標值及三角形平面的法向量從而形成實體造型顯示于本軟件界面。另外,當用戶對圖片的運動進行改變(包括旋轉移動等)時,軟件便重新進行歸一化以便從相應的視角進行表面的上色。圖8給出了人體X射線照片[7]及相應的上色后的三維造型。

圖7 像素點和三角形矢量的產生Fig.7 Pixel vector&triangle vector generation
文中論述了一種比較簡單易行且實用的基于單張X射線照片的三維造型方法。基于此法的軟件分析BMP格式圖片的像素、產生必要的三角形坐標系、計算面矢量值、去除隱藏線并對三角形表面進行上色形成三維圖。軟件產生的數據被存儲成STL文件格式或者點云文件格式。通過金屬重疊照片分析和人體胸部射線照片分析表明本軟件較好地顯示出X射線圖片的三維成形造型效果。

圖8 人體射線照片及三維圖Fig.8 X-ray image and the 3D plot
[1]Hecht-Nielsen R.Neural networks for image analysis[C]//Neural Networks for Vision and Image Processing.Massachusetts:The MIT Press,1992:449-460.
[2]Wojcik R,Majewski S,Parker F R,et al.Single shot dual energy reverse geometry X-radiography [C]//Nuclear Science Symposium.USA:IEEE,1996:811-815.
[3]Engler P,Friedman W D.Review of dual-energy computed tomography techniques[J].Material Evaluation,1990,48(5):623-629.
[4]楊章偉.Visual Basic完全自學寶典[M].北京:清華大學出版社,2008.
[5]Paraform Inc.Paraform Software.[EB/OL].[2003-04-08].http://www.paraform.com.
[6]Stephens R.Visual Basic (r)graphics programming:handson applications and advanced color development[M].2nd ed.[s.l.]:John Wiley&Sons,1999.
[7]X-ray Image.[EB/OL].[2012-12-01].http://edu.glogster.com/media/4/26/12/85/26128508.jpg.