ARM+GPU异构架构下的光线投射算法的OpenGLES实现方法

文档序号:6547645阅读:645来源:国知局
ARM+GPU异构架构下的光线投射算法的OpenGL ES实现方法
【专利摘要】本发明公开了一种ARM+GPU异构架构下的光线投射算法的OpenGL?ES实现方法,所述方法包括如下步骤:步骤一:在ARM中建立显示窗口系统;步骤二:在ARM中获取原始体数据,并将原始体数据重建到三维笛卡尔坐标系下;步骤三:ARM对二维纹理进行排布,并利用OpenGL?ES接口以二维纹理方式导入三维超声体数据;步骤四:GPU接收人机交互指令,计算坐标变换矩阵完成三维成像中的人机交互功能;步骤五:GPU进行光线投射算法的OpenGL?ES实现,并对计算量进行控制;步骤六:GPU绘制显示平面。本发明将传统的基于显卡和Intel处理器的光线投射算法在嵌入式平台下实现,降低了系统开发成本。
【专利说明】ARM+GPU异构架构下的光线投射算法的OpenGL ES实现方

【技术领域】
[0001]本发明涉及嵌入式系统中图像处理及计算机视觉领域的三维成像实现过程,具体涉及ARM+GPU异构系统级芯片(System On Chip, S0C)架构下光线投射算法的OpenGL ES实现。
【背景技术】
[0002]医学超声成像是一种基于超声波的医学影像诊断技术,通过超声换能器向人体发出超声波并接收组织回波,利用超声波的物理特性和人体组织器官声学性质上的差异,显示人体内部的形态学信息,借以进行疾病诊断。其具有无创伤、无辐射、成本低和成像速度快等优点,且具有便携性,能够实时获取图像,故在一般的医疗诊断中,超声成像占有很大比例。特别地,对于胎儿检查,超声成像是四大医学影像中(CT\核磁\PET\超声)唯一能够使用的成像手段。
[0003]传统的二维超声成像系统只能提供人体组织器官某一切面的图像,医生需要根据二维图像在自己的大脑中合成相应的三维结构。这就对医生的熟练程度提出了很高的要求,并在一定程度上影响了临床诊断的准确性,使其在应用上存在一定局限性。尤其对于胎儿检测来说,三维超声成像具有成像直观、定位准确、确诊速度快等优点。因此,在超声诊断系统中研究三维超声成像方法具有重要意义。
[0004]目前广泛使用的3D体绘制成像算法是光线投射算法,它是一种基于图像空间的成像方法,其假设从图像空间的每一个像素向物体空间发出一条光线,在光线穿过物体空间的过程中,对相交体素的光学属性与吸收属性按照一定的方法进行累积,从而形成最后的图像。与其他体绘制算法相比,其成像质量高,且可以设置不同的阈值以显示内部特征;但是光线投射算法计算量较大,在角度变换以及人机交互的时候难以达到实时效果。
[0005]OpenGL是一个跨编程语言、跨平台的2D/3D图形处理库,开发人员可以利用其所提供的顶点着色器与片段着色器自定义渲染算法,实现通用计算。光线投射算法同时包含图形处理和通用计算两个方面,物体的顶点、光栅化、片段处理以及旋转视点变换等属于图形学范畴,沿光线上的积分过程属于通用计算范畴。OpenGL能很好地兼顾这两个方面,直接利用OpenGL的图形管线能够简洁高效的实现图形处理部分,利用OpenGL顶点着色器与片段着色器的可编程能力能实现复杂的算法设计。将OpenGL与GPU相结合,可以很方便地对光线投射算法进行实现。
[0006]随着超声成像设备的便携性、小型化和专科化要求,同时考虑到产品的体积、功耗和性价比,超声诊断系统所选用的处理器的通用计算能力逐渐下降,逐渐以嵌入式处理器替代X86架构的处理器核心。随着技术发展,ARM的计算能力有了巨大的提升,逐渐成为便携设备的主流体系结构。硬件平台计算能力的降低会对超声数据处理模块的实现提出挑战。尤其对于超声系统中的三维成像算法,相比于二维成像算法,数据的吞吐量和计算量通常大两个数量级。如果仅仅依靠ARM处理器难以实现三维超声成像功能,即使采用针对并行处理的单指令多数据(Single Instruction Multiple Data, SIMD)技术,仍然无法达到要求。
[0007]从目前处理器的发展来看,对于嵌入式处理器,通常会携带可用于通用计算的图形处理单元(Graphic Processing Unit, GPU),组合起来形成异构架构,更有利于提高嵌入式处理器的计算能力。以ARM核心为主控的多核SOC芯片通常集成有GPU内核作为三维加速引擎。
[0008]但是,对于ARM+GPU的异构架构,嵌入式GPU存在两个明显的限制:1)并行运算单元少,计算能力弱;2)ARM与GPU共用系统内存,没有专门的高速显存。同时,在嵌入式体系下,专用的开放图形库接口也从OpenGL变成了 OpenGL ES,因此,在OpenGL下开发的成熟的光线投射算法并不能直接应用到嵌入式系统中。

【发明内容】

[0009]本发明针对目前超声设备发展专用性趋势的要求以及成像算法庞大的计算量和数据吞吐,提出了以ARM+GPU异构架构对三维超声成像光线投射算法的实现。ARM核心作为主控芯片负责整个过程中所有的任务调度及预处理工作,GPU核心作为加速引擎,实现并行计算的算法核心,通过OpenGL ES被应用程序调用,实现光线投射算法。本发明将传统的基于显卡和Intel处理器的光线投射算法在嵌入式平台下实现,降低了系统开发成本。
[0010]本发明的目的是通过以下技术方案实现的:
[0011]—种ARM+GPU异构架构下的光线投射算法的OpenGL ES实现方法,包括如下步骤:
[0012]步骤一:在ARM中建立显不窗口系统;
[0013]步骤二:在ARM中获取原始体数据,并将原始体数据重建到三维笛卡尔坐标系下;
[0014]步骤三:ARM对二维纹理进行排布,并利用OpenGL ES接口以二维纹理方式导入三维超声体数据;
[0015]步骤四:GPU接收人机交互指令,计算从物体坐标系到投影坐标系的变换矩阵,完成三维成像中的人机交互功能;
[0016]步骤五:GPU进行光线投射算法的OpenGL ES实现,并对计算量进行控制;
[0017]步骤六:GPU绘制显示平面。
[0018]本发明所述的步骤三中,考虑到嵌入式系统不支持三维纹理导入的情况,给出了二维纹理的排布导入方案。考虑到硬件平台对于二维纹理尺寸的限制,以及在二维纹理中查询体数据时不能精确索的问题,在ARM中给出了数据的具体排布方案,该方案能够解决嵌入式平台数据导入受限问题,具有良好的兼容性。
[0019]本发明所述的步骤四中,针对OpenGL ES的坐标系统定义设计人机交互矩阵,其中包括绕屏幕上两个轴的旋转、放大缩小以及上下左右前后六个观测方向的选择,可以简洁清晰地完成各种人机交互命令,使系统具备人机交互功能。
[0020]本发明所述的步骤五中,运用光线投射算法进行体绘制,针对弱计算能力与大计算量的矛盾,提出了两种计算量控制的方法,包括增大采样步长与减少光线数量;该方法有效的降低了计算量,提高了绘制速度,使人机交互可以满足实时性要求。
[0021]本发明所述系统采用ARM+GPU异构架构实现光线投射算法,ARM核心作为主控芯片负责整个过程中所有的任务调度及预处理工作,GPU核心作为加速引擎,实现并行计算的算法核心,通过OpenGLES被应用程序调用,实现光线投射算法。该实现方案能够显著降低系统开发成本。本发明与现有技术相比,具有如下优点:
[0022]I)系统开发成本低。本发明提出基于ARM+GPU异构SOC芯片的硬件解决方案,该方案的硬件成本远低于基于显卡和Intel处理器的硬件解决方案,适合低端便携产品。SOC芯片中GPU作为加速引擎直接集成在芯片内部,GPU厂商和SOC芯片厂商提供GPU驱动,应用程序通过OpenGL接口直接调用GPU,ARM和操作系统会自动完成两个核心间的任务调度。
[0023]2)良好的兼容性。本发明考虑到一些嵌入式GPU并不支持三维纹理,提出了通过导入二维纹理的方式将三维体数据导入到GPU中,使该实现方法能够解决平台受限问题,具有良好的兼容性。
[0024]3)简洁有效的人机交互方式。本发明针对OpenGL ES的坐标系统定义设计了三种基本三维人机交互操作对应的矩阵变换方法,且三种变换对应到三维观测的不同阶段,相互独立,能够简单清晰地完成人机交互指令。
[0025]4)良好的实时性。嵌入式系统较弱的处理能力,使光线投射算法的经典GPU实现方法在嵌入式设备上难以取得良好的性能,本发明改进了经典实现方法,提出通过计算量控制提高处理速度,又根据实际三维系统的用户操作流提出了速度和质量的折中方式,通过这两方面的改进能够解决嵌入式系统的处理瓶颈,满足用户的需求。
【专利附图】

【附图说明】
[0026]图1为ARM+GPU异构架构下光线投射算法的OpenGL ES实现流程图;
[0027]图2为三维体数据在二维纹理中的排布方式;
[0028]图3为基于OpenGL ES的光线投射原理;
[0029]图4为光线数量控制;
[0030]图5为采样步长为0.002下的渲染效果图;
[0031]图6为采样步长为0.005下的渲染效果图;
[0032]图7为采样步长为0.01下的渲染效果图。
【具体实施方式】
[0033]下面结合附图对本发明的技术方案作进一步的说明,但并不局限于此,凡是对本发明技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的保护范围中。
[0034]本发明的流程图如图1所示,具体步骤如下:
[0035]一、显不窗口系统建立
[0036]OpenGL ES的计算功能虽独立于窗口系统,但是其显示调用过程依赖于窗口系统,需要继承显示系统的上下文环境,所以在应用OpenGL ES的系统中必须首先建立起窗口系统。窗口系统不局限于单一种类,只要支持OpenGL的窗口系统都适用本发明。
[0037]本实施例是基于Android的显示系统建立的。在管理系统界面的XML文件中创建用于输出OpenGL ES渲染结果的显示控件,利用操作系统提供的视图类建立起显示控件和计算之间的联系,通过重载视图的绘制方法来实现窗口建立功能。
[0038]二、数据获取及体数据重建[0039]超声成像一般通过总线方式进行前后端数据的传输,常用的有CPU的内部总线、PCI总线或USB通用串行总线等。数据按照扫查的先后顺序进行传输,对于三维成像功能来说,先扫查同一位置,形成二维切片数据,再扫查不同的切片位置,从而构成三维成像所要使用的原始体数据。对于超声成像特有的扇形扫查或线形扫查方式来说,原始体数据的各个体素并不直接与三维笛卡尔坐标系的坐标点一一对应,因此在体数据渲染之前,需要进行三维体数据重建。
[0040]重建方法是将原始体数据经坐标变换,利用三线性插值将原始体数据重建到三维笛卡尔坐标系下。由于受限于声波的衰减和穿透力,超声成像质量较低,且存在固有的斑点和噪声,故还需要对超声数据进行滤波处理。本发明针对超声图像数据,采用最近邻域插值算法将数据的重建和滤波同步进行。
[0041]在其他应用中,如果原始体数据获取均匀,即与三维笛卡尔坐标点一一对应的话,可以越过此步骤。
[0042]三、OpenGL ES下体数据的纹理导入
[0043]依赖于OpenGL ES的数据传输机制,重建后的体数据需要通过纹理的方式传递给GPU,纹理有二维纹理和三维纹理两种。由于重建之后的体数据本身就是三维的,故采用三维纹理的导入相对简单和直观。
[0044]但是,三维纹理是OpenGL ES标准的可选实现,一些半导体厂商的GPU核心并不支持三维纹理,作为OpenGL ES标准的必要实现,只支持二维纹理载入。因此,在该情况下,就需要研究三维体数据的二维纹理载入方法。
[0045]将三维体数据作为二维纹理载入时,有两个限制条件,一是硬件平台对于二维纹理尺寸的限制;二是在二维纹理中查询体数据时不能精确索引。这决定了不能将三维笛卡尔坐标系下对应的体数据按照切片的方式简单排列,而是要精心设计其纹理的排布方式,使其最终既不会超出硬件平台所支持的最大纹理尺寸,又不会因为纹理查询的不精确而造成较大的偏差。
[0046]本发明提出如图2所示的纹理排布方式:先按照GPU对于纹理的宽度和高度要求,并结合每一张切片的宽度大小,设计纹理的宽度和高度。然后将笛卡尔坐标系下的切片数据按照线数关系排布到纹理中,即先沿纹理宽度方向顺序排布切片的第O条线形成一行,排布满后再沿纹理高度方向向下排布第I条线形成一行,依此类推,当切片数据填满后,从新切片的第O条线开始继续,直到将数据填满纹理。整个纹理的排布操作主要涉及数据在内存中的排布,因此该部分工作由ARM完成。
[0047]数据按照二维纹理排布好后,通过OpenGL ES的二维纹理导入接口,便可以把CPU的内存数据加载到GPU的存储空间中,供GPU后续处理管线使用。
[0048]这种纹理导入的方式决定了纹理查询的准确性。假设要查询(x,y,z)点处的纹理值,先根据z坐标确定其前后切片的索引;确定切片位置后,按照(x,y)的坐标确定待查询体数据在切片内的位置。最终GPU查找出来的体数据是由两个切片内(x,y)位置的像素分别按照双线性插值,再对两个计算结果进行线性插值得到。由于二维纹理的排布关系,能够保证切片内的相邻数据和切片间的相邻数据与体数据真实的空间位置是对应的,因此保证了数据查询的准确性。需要注意的是,二维纹理支持切片内数据的双线性插值,即硬件可以自动计算;切片间的线性插值需要由GPU自行编程计算。[0049]四、接收人机交互指令,计算坐标变换矩阵
[0050]三维成像系统中基本的三种人机交互包括:绕屏幕上两个轴的旋转、放大缩小和上下左右前后六个观测方向的选择。OpenGL ES的图形处理管线中的角度变换功能是通过坐标变换矩阵实现的。人机交互方法是:首先建立基本人机交互指令与空间变换矩阵间的对应关系,然后根据OpenGL ES的坐标定义设计空间变换矩阵。
[0051]系统运行时,人机交互系统每下达一个指令,ARM就按照事先设计的方式修改空间变换矩阵,导入到OpenGL ES的顶点着色器中,在顶点着色器中用顶点的坐标向量乘以空间变换阵就可以得到顶点在空间变换后的坐标。
[0052]本发明设计的人机交互与空间变换矩阵之间的关系是:在世界坐标系中进行将绕屏幕上两个轴的旋转操作,将其对应到物体绕世界坐标系的两个轴的旋转;利用观察坐标系相对世界坐标系的位置关系进行六个观测方向的视角(前后上下左右)选择操作;在投影坐标系中进行放大缩小的操作,将其对应到透射投影阶段近平面位置的改变。实时更新三种操作所对应的矩阵,便可以完成人机交互功能。本发明设计的人机交互的实现方式,使三种人机交互过程就相互独立,任何一个的操作不会对另外两个操作造成影响。
[0053]设计的空间变换矩阵如下:
[0054]物体绕世界坐标系的X轴旋转Θ角对应的旋转矩阵如式(I)所示:
【权利要求】
1.一种ARM+GPU异构架构下的光线投射算法的OpenGL ES实现方法,其特征在于所述方法包括如下步骤: 步骤一:在ARM中建立显示窗口系统; 步骤二:在ARM中获取原始体数据,并将原始体数据重建到三维笛卡尔坐标系下,得到笛卡尔坐标系下的切片数据; 步骤三:ARM对二维纹理进行排布,并利用OpenGL ES接口以二维纹理方式导入三维超声体数据; 步骤四:GPU接收人机交互指令,计算从物体坐标系到投影坐标系的变换矩阵,完成三维成像中的人机交互功能; 步骤五:GPU进行光线投射算法的OpenGL ES实现,并对计算量进行控制; 步骤六:GPU绘制显示平面。
2.根据权利要求1所述的ARM+GPU异构架构下的光线投射算法的OpenGLES实现方法,其特征在于所述步骤三中,二维纹理排布方式如下:先按照GPU对于纹理的宽度和高度要求,并结合每一张切片的宽度大小,设计纹理的宽度和高度;然后将笛卡尔坐标系下的切片数据按照线数关系排布到纹理中。
3.根据权利要求1所述的ARM+GPU异构架构下的光线投射算法的OpenGLES实现方法,其特征在于所述步骤四中,从物体坐标系到投影坐标系的变换矩阵Matrix ojectionViewModel.MsitiriXpr 0jecti0n WorldModelMatrixprojection.Matrixview.Matrix






Model ? 其中,Matrixft ^eetim为投射投影矩阵,MatrixviewS世界坐标系到观察坐标系的变换矩阵,MatrixM odel为物体坐标系到世界坐标系的坐标变换矩阵。
4.根据权利要求3所述的ARM+GPU异构架构下的光线投射算法的OpenGLES实现方法,其特征在于所述物体坐标系到世界坐标系的坐标变换矩阵MatrixM odel如下:
Matri xM odel = KnKlri …Ki …K2K1K0 ; 其中,Ki代表第i次转动物体,Kn代表最近一次的转动。
5.根据权利要求4所述的ARM+GPU异构架构下的光线投射算法的OpenGLES实现方法,其特征在于所述物体绕世界坐标系的X轴旋转Θ角对应的旋转矩阵如式(I)所示:
6.根据权利要求3所述的ARM+GPU异构架构下的光线投射算法的OpenGLES实现方法,其特征在于所述世界坐标系到观察坐标系的变换矩阵Matrixview如下:
7.根据权利要求3所述的ARM+GPU异构架构下的光线投射算法的OpenGLES实现方法,其特征在于所述投射投影矩阵为:
8.根据权利要求1所述的ARM+GPU异构架构下的光线投射算法的OpenGLES实现方法,其特征在于所述步骤五中,采用增大采样步长或减少光线数量的方法对计算量进行控制。
9.根据权利要求8所述的ARM+GPU异构架构下的光线投射算法的OpenGLES实现方法,其特征在于采用通过控制光栅化阶段生成的片段数量来间接控制光线数量。
【文档编号】G06T15/04GK103971396SQ201410225333
【公开日】2014年8月6日 申请日期:2014年5月24日 优先权日:2014年5月24日
【发明者】金晶, 申瑞雪, 贾恒, 沈毅 申请人:哈尔滨工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1