基于X射线照片的三维造型重构
2013-08-10陈鹏
陈鹏
(福建省电子产品监督检验所 福建 福州 350003)
图像处理被广泛使用于诸如军事目标识别[1]和血液测试[1]等不同场合。本研究针对X射线照片进行图像处理。总的说来,商业软件功能相当强大;然而,商业软件经常是捆绑式的,所以它们无论在费用、物理平台或者操作上都占用大量资源,这就造成本研究的需要,也就是开发简单实用便宜的小型软件以满足具体需要。对于X射线图像处理的研究已经有据可查[2-3]。 本文讨论的是基于文件格式为BMP(BitMap的缩写)的X射线照片进行三维形状成型,这也方便以后在无损探测等领域中使用神经网络算法对物体的厚度及材料等进行分析。本文利用编程技巧处理X射线照片以便产生三维实物图像并和商业软件进行交互。下述段落给出了软件开发、设计原理和结果的阐述。
1 软件开发
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(点云格式,商业软件显示)。从图中可以清楚看出重叠部分包含有台阶,从而确定金属的块数等。
2 设计原理及结果
有许多关于三维物体运动控制的参考[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
3 结束语
文中论述了一种比较简单易行且实用的基于单张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.