陳鵬
(福建省電子產(chǎn)品監(jiān)督檢驗所 福建 福州 350003)
圖像處理被廣泛使用于諸如軍事目標識別[1]和血液測試[1]等不同場合。本研究針對X射線照片進行圖像處理。總的說來,商業(yè)軟件功能相當強大;然而,商業(yè)軟件經(jīng)常是捆綁式的,所以它們無論在費用、物理平臺或者操作上都占用大量資源,這就造成本研究的需要,也就是開發(fā)簡單實用便宜的小型軟件以滿足具體需要。對于X射線圖像處理的研究已經(jīng)有據(jù)可查[2-3]。 本文討論的是基于文件格式為BMP(BitMap的縮寫)的X射線照片進行三維形狀成型,這也方便以后在無損探測等領域中使用神經(jīng)網(wǎng)絡算法對物體的厚度及材料等進行分析。本文利用編程技巧處理X射線照片以便產(chǎn)生三維實物圖像并和商業(yè)軟件進行交互。下述段落給出了軟件開發(fā)、設計原理和結(jié)果的闡述。
X射線照片的獲取途徑很多,包括互聯(lián)網(wǎng)。為了很方便地將此類BMP圖片裝載到圖片框中 (見圖1,軟件采用Visual Basic 6.0編程[4]),本設計編寫了一段子程序用來按比例縮小過大的圖片從而讓整張照片顯示并使得照片的清晰度不受影響。在此步驟之后,Windows的 API(Application Programming Interface的縮寫)函數(shù)被使用來分析圖片中每一像素的R,G,B矢量。 考慮到特定區(qū)域的圖片分析,本設計允許用戶選定具體的矩形區(qū)域進行操作。根據(jù)三維物體幾何學,三維物體的運動,包括平移、旋轉(zhuǎn)、縮放、被遮蔽表面的去除以及上色可以在軟件中實現(xiàn)。同時,本設計采用三角形面片離散地近似表示三維模型,其中所產(chǎn)生的X射線照片像素信息分別以Pro-Engineer軟件(.STL文件)和Paraform[5]軟件(.XYZ文件)相應格式存放。另外,軟件本身不但能夠產(chǎn)生STL格式的文件,而且可以顯示(見圖2)經(jīng) Pro-Engineer軟件所產(chǎn)生的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
由于圖片的區(qū)域可以指定(比如為了檢測物體的缺陷或者分析某部分高度),本軟件考慮利用鼠標選擇矩形區(qū)域。通過拖動鼠標,該矩形區(qū)域可以被指定或者放棄。為了能夠觀看選擇區(qū)域的三維造型,用戶可以和使用Pro-Engineer軟件觀看STL格式文件一樣的方式來查看。同樣,用戶可以使用本軟件來查看上述三維造型。另外,通過和STL數(shù)據(jù)產(chǎn)生類似的方法,點云(point cloud)格式的數(shù)據(jù)(.XYZ文件)也在鼠標拖動下產(chǎn)生。同張金屬重疊(鋁和銅)X射線照片的類似區(qū)域的三維造型分別見圖3(STL格式,本軟件顯示)和圖4(點云格式,商業(yè)軟件顯示)。從圖中可以清楚看出重疊部分包含有臺階,從而確定金屬的塊數(shù)等。
有許多關于三維物體運動控制的參考[6]。相關的控制基本上是原始數(shù)據(jù)包括歸一化及點(本研究就是像素)坐標的矩陣操作。很明顯,每個像素都可以分解為相應的R,G,B矢量。為了能夠?qū)⒔o定圖形繪制成三維,本設計使用了若干API函數(shù)將成功裝載并完全顯示之后的圖片的每個像素的R,G,B矢量產(chǎn)生。本設計將圖5三維坐標系統(tǒng)中的坐標X定義為圖5圖片框中的坐標X的對應項;將圖5三維坐標系統(tǒng)中的坐標Y定義為圖5圖片框中的坐標Y的對應項;將圖5三維坐標系統(tǒng)中的坐標Z定義為圖5圖片框中的像素點(X,Y)的對應R,G,B矢量的合成項。
圖5 圖片框坐標系與三維坐標系Fig.5 Picture box coordinate&3D plot coordinate
當所有的像素點沿著X方向相連(Y為定值),然后再將Y增加1并重復上述步驟時可以形成該圖片的三維圖。而且,表面與底部也將分開 (Z值是個變量可以因具體情況而改變比例)。同時,隱藏線的去除也是必要的,因為靠近讀者的前面的線條會擋住后面線條的視線,這種情況發(fā)生于后面線條的Z值不大于前面線條的Z值的條件下。圖6給出了隱藏線條未去除的錯誤成形情況和采取措施后的情況。
圖6 未使用隱藏線去除和已使用隱藏線去除Fig.6 No hidden line removal&hidden line removal
本設計還包括表面的上色,物體表面的上色需要收集表面數(shù)據(jù)。按圖7所示,將像素格子分開并組成三角形來形成表面??梢詫⑾袼刈鴺硕x成格式如(X1,Y1,Z(X1,Y1)), (X2,Y1,Z(X2,Y1))……,其中 Z 是相關 R,G,B 的復合值。 圖 7 中的三角形被順次連接并進而形成圖中X-Y平面上的投影。軟件根據(jù)前后位置找出看得見的三角形并對其上色,其中還涉及每一個三角形的歸一化(normalization)處理。
當歸一化處理之后,所有的數(shù)據(jù)將被產(chǎn)生成文本格式的STL文件,也就計算出各個三角形頂點坐標值及三角形平面的法向量從而形成實體造型顯示于本軟件界面。另外,當用戶對圖片的運動進行改變(包括旋轉(zhuǎn)移動等)時,軟件便重新進行歸一化以便從相應的視角進行表面的上色。圖8給出了人體X射線照片[7]及相應的上色后的三維造型。
圖7 像素點和三角形矢量的產(chǎn)生Fig.7 Pixel vector&triangle vector generation
文中論述了一種比較簡單易行且實用的基于單張X射線照片的三維造型方法?;诖朔ǖ能浖治鯞MP格式圖片的像素、產(chǎn)生必要的三角形坐標系、計算面矢量值、去除隱藏線并對三角形表面進行上色形成三維圖。軟件產(chǎn)生的數(shù)據(jù)被存儲成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,F(xiàn)riedman 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.