APP下载

基于CUDA体绘制的固体火箭发动机虚拟内窥镜技术*

2018-08-27卢洪义

弹箭与制导学报 2018年4期
关键词:内窥镜视点漫游

李 朋,卢洪义,王 鑫,伍 鹏

(海军航空大学,山东烟台 264001)

0 引言

虚拟内窥镜技术是随着图像处理技术发展而出现的新技术,对于固体火箭发动机而言,通过对装药星孔表面进行虚拟内窥镜观测不仅可以对缺陷的位置、状态进行近一步的了解,而且可以对工业内窥镜较难进入的部位进行检测,对于工业内窥镜的检测也可以起到引导作用。

目前基于人体CT数据的虚拟内窥镜技术的研究内容较多[1-6],但是由于固体火箭发动机CT扫描数据的数据量较大,为满足虚拟内窥镜的实时成像要求,需要对其成像过程进行加速方法的研究。光线投影体绘制算法是固体火箭发动机三维成像时最常用的绘制方法[7-11]。随着计算机技术的发展,硬件加速光线投影体绘的过程成为可能[12-14],为此引入CUDA(compute unified device architecture,统一计算设备架构)加速研究。文中首先结合固体火箭发动机CT扫描体数据,针对其光线投影体绘制过程进行了加速方法的研究;其次通过距离变换提取发动机星孔的中心路径,实现了自动漫游和引导手动漫游的虚拟内窥镜实时成像。

1 基于CUDA的光线投影体绘制实现

1.1 光线投影体绘制原理

光线投影法是固体火箭发动机体绘制中最常采用的绘制算法,具有绘制效果好,易编程并行计算的优点。其原理如图1所示,从视点到投影平面的每一个像素点发射一条光线,穿过三维体数据场,并按照从前到后的顺序进行采样点光属性的混合叠加,最后的和值为该像素点的灰度值,最终得到完整的二维投影图像。每一个采样点的光属性值有透明值和光强度值。CT扫描体数据中每点的光属性值通过传递函数来进行确定和调节。一般采用的是基于灰度的传递函数,根据灰度值范围,将体空间中的点分类,并赋予相应的数值。采样点处的光强度和不透明度由插值算法得出,最常用的插值算法为三线性插值[1]。如图2所示,对任一采样点其三次插值如式(1)所示。

Vp=V0(1-x)(1-y)(1-z)+V1(1-x)y(1-z)+
V2(1-x)(1-y)z+V3(1-x)yz+V4x(1-y)(1-
z)+V5xy(1-z)+V6x(1-y)z+V7xyz

(1)

图2 三线性插值

由光线投影体绘制算法的原理可以看出:

1)算法的大部分时间花在采样点插值和累加过程中。如果选择1024×1024的分辨率进行绘制,则每计算一次三维效果需要计算106条由视点发出的光线。每条光线在体数据场中等距取值,若固体火箭发动机间隔5 mm扫描一次,则对于长度1 200 mm的固体火箭发动机CT扫描数据,至少需采样240次,即每次需要插值240次来获取采样点,那么仅插值次数的数量级将到108,若要提高成像质量则需要插值次数更多,可以看出整个体绘制过程的计算量非常庞大,而对于虚拟内窥镜技术每次移动视点都需要对整个数据场进行重新绘制,对实时性要求较高。

2)从视点发出的光线总数为图像的像素点总数之和,每条光线的计算只与该条光线穿过的体数据场点的光属性值有关,光线之间没有关联。通过并行运算可以提高算法的绘制速度。

在对固体火箭发动机进行虚拟内窥的过程中需要从每一个内窥镜视点对发动机进行实时绘制,每次移动视点或是转动视角都需要对变化的体数据场进行重新绘制,其计算数量远高于只用于三维观察的单次绘制,对实时性要求较高。因此选择基于硬件加速对体绘制过程进行加速。

1.2 基于CUDA的体绘制加速

CUDA是英伟达公司于2007年针对GPU(graphic processing unit,图形处理器)通用计算而设计的C语言风格的编程接口,其目的是将CPU和GPU并用,充分利用二者的优点。通过CUDA,能够方便的针对英伟达系列的显卡GPU进行并行运算的程序设计,这给固体火箭发动机CT扫描体数据的光线投影体绘制算法的并行计算提供了条件。

基于CUDA的光线投影体绘制流程图如图3所示,步骤如下:

1)在CPU端读入固体火箭发动机CT探伤系列图像。经过预处理后,将内存中的体数据加载到GPU的全局存储器中,并与三维纹理绑定。

2)确定传递函数,将旋转矩阵和视点位置存储到GPU常数存储器中。

3)进入当前视点条件下的内核函数中,确定线程块与线程对应的光线,对每条光线按相同流程进行计算。

4)将每条光线的计算结果返回CPU端进行成像显示。

图3 基于CUDA的光线投影体绘制流程图

2 虚拟内窥镜技术实现

固体火箭发动机虚拟内窥镜观测原理如图4所示,与三维直接成像观测所采用的成像算法都是光线投影体绘制,不同的地方在于,内窥镜的视点位于三维体数据场的内部。一般虚拟内窥镜的视点的移动方案有三种:基于设定路径移动的自动漫游,手动移动视点的手动漫游及沿设定路径手动步进的引导漫游。由于固体火箭发动机数据较大,纯手动漫游,视点容易陷入体数据的内部起不到在星孔内观察内表面的观测效果,因此文中选择基于设定路径的自动漫游和引导漫游方法。

图4 虚拟内窥镜原理示意图

基于路径的视点漫游方法首先需要对漫游的路径进行提取,对于固体火箭发动机而言,需要提取星孔的中心路径,选择距离变换作为中心路径提取方法,步骤如下:

1)图像二值化

根据装药与星孔在CT扫描图像上的不同灰度值,将星孔提取,并二值化,设定星孔部分灰度值为1,其余部分为0,即将星孔选为目标区域。

2)用八邻域跟踪的方法跟踪出内窥镜检测管道的边界轮廓

逐行扫描整幅图像。若搜索到的是管道内的点,则分别检测包围该点的8个邻近点,若邻近点有像素值为0的点,则记录该点为边缘点,进一步检查该点的8个邻点,把满足相应准则的邻点并入边缘点集合,不断重复该操作,直到没有邻点满足跟踪准则为止。然后用检测准则继续寻找,当找到满足检测准则且不属于任何已生成边缘的像素点后,开始下个边缘的生长,直到没有满足检测标准的像素点为止。这样就得到CT图像上需检测管道的边缘图。

3)对边缘图进行距离变换

对于图像上的任意一点pk,则该点到边界的距离的正负定义如式(2)所示:

(2)

即如果点pk位于目标区域,则其距离值大于0;如果点pk位于目标区域外,则其距离值小于0;如果点pk位于边界上,则其距离值等于0。

4)选取中心点

每幅CT图像按以上步骤处理,选取距离最大值处为该幅图像中心点,若距离数值相同则取第一点为中心点,图像像素点处理顺序为从左至右,由上至下。得到中心点在三维数据场中的三维坐标,其中x、y方向坐标由该幅图像的像素点位置决定,z方向坐标由该幅图片在系列图片中的顺序及CT每次的扫描距离决定。

5)中心路径三次样条插值拟合

由于CT扫描时扫描间距的数值相对于CT图像的分辨率相差较大,直接采用每幅图像的中心点连接成的路径不够平滑,在某些位置会出现视点的跳跃,因此利用样条函数进行三次插值拟合,拟合出的路径即为视点的移动路径。

在[a,b]中取(n+1)个插值点:a=x0

①S(xk)=yk(k=0,1,…,n);

②在每个小区间[xk,xk+1](k=0,1,…,n-1)上S(x)是三次多项式,记为Sk(x);

③S(x)在[a,b]上二阶连续可微。

则由条件②得:

S(x)={Sk(x),x∈[xk,xk+1],k=0,1,…,n-1}

Sk(x)=akx3+bkx2+ckx+dk

其中:ak,bk,ck,dk为待定系数,共4n个。由条件③得:

容易看出共含有(4n-2)个方程,为确定S(x)的4n个待定参数,尚需再给两个条件。

在提取路径后,视点便可以沿星孔中心路径移动,通过第二节的加速体绘制,可以实现实时成像。进一步通过实验验证以上算法。

3 实验及结果

对240张像素大小为597×960的星孔型固体火箭发动机系列CT图像进行虚拟内窥镜观测。使用的计算机主频为2.9 GHz。内存为2 G,显卡为英伟达GeForce 605,具有48个流处理器,1 G显存。编程语言为C++,编译平台为VS2010,系统为Microsoft Windows 7旗舰版。

发动机中间段图像基本一致,序列图像部分如图5所示。其中距探测头部距离为300 mm处有一宽5 mm、深60 mm的裂纹,三维成像后通过虚拟内窥镜沿星孔中心路径对发动机进行虚拟内窥镜检测。

图5 固体火箭发动机系列CT图像

1)图像分割并计算距离图

对分割后的星孔二值图像进行距离变换,得到如图6所示的CT图像星孔边缘距离图。由距离图可以看出,星孔部分越靠近中心亮度越高,验证了距离变换提取星孔中心的可行性。

图6 固体火箭发动机系列CT图像星孔边缘距离图

2)中心路径提取、平滑

选择每幅CT星孔边缘距离图中灰度值最大的一个点作为中心点,经过三次样条插值后其效果如图7所示,为具体表现中心路径相对于固体火箭发动机星孔的位置,将星孔进行三维体绘制,并将其光属性值调整为半透明。由图7可以看出,提取的中心路径是一条平滑的曲线。中心路径基本与星孔的实际中心线重合。由距离变换提取固体火箭发动机星孔中心路径是可行的。

图7 中心路径三维空间显示

3)自动漫游

设置视点沿中心路径自动前进,视角固定正对前方,得到系列内窥镜图像如图8所示。

图8 自动漫游下内窥镜图像

4)引导手动漫游

设置视点前进方向为每次沿中心路径步进,视角由鼠标控制转动,得到系列内窥镜图像如图9所示。通过手动漫游可以对距探测起始处300 mm位置上的裂纹进行观察。

图9 手动漫游下内窥镜图像

4 结论

文中针对固体火箭发动机CT扫描体数据进行了虚拟内窥镜观测技术研究。得到主要结论如下:

1)固体火箭发动机CT图像三维体绘制采用的光线投影算法,满足并行计算特点,通过基于CUDA的编程接口,实现了固体火箭发动机三维图像的硬件加速绘制。但是由于是基于硬件加速,会受到硬件性能的影响,其影响主要体现在:一是由于显卡不同,可并行处理的线程数,加速效果有差异;二是GPU处理数据时需将所有数据读入显卡内存,目前,固体火箭发动机CT扫描数据量基本在600 MB到1 GB大小,因此显卡内存的大小至少为1 GB。

2)基于距离变换能够提取出固体火箭发动机体数据的中心路径,基于文中实验可以看出提取的中心路径基本位于星孔的中心处。与理论中心的偏差主要是由在图像分割和边缘检测的过程中所产生的误差造成。

3)基于中心路径的漫游能够将视点固定在星孔中心处,有利于对装药表面进行观测。若不限定在中心处,手动操作可能将视点移动到装药内部,没有方向,无法将视点移动到观察的部位。

4)对固体火箭发动机星孔外的其它位置进行虚拟内窥镜观测,都可以按照文中的方法进行处理。相比于传统内窥镜,虚拟内窥镜不受实际尺寸的影响,能够对细小空隙的内部进行观测。

猜你喜欢

内窥镜视点漫游
舒适护理在鼻内窥镜术后鼻腔填塞患者护理中的应用
一种具有附加内窥镜功能的医疗管
电子内窥镜临床评价要求探讨
内窥镜技术研究进展
霹雳漫游堂
霹雳漫游堂
环境视点
让你每天一元钱,物超所值——《今日视点—2014精萃》序
边走边看:漫游海底 梦想成真
寻找新的视点