基于GPU的三维图像数据渲染方法及设备

文档序号:25590742发布日期:2021-06-22 17:07阅读:199来源:国知局
基于GPU的三维图像数据渲染方法及设备

本发明涉及计算机图形学中的三维可视化渲染技术,具体涉及一种基于gpu的三维图像数据渲染方法及设备。



背景技术:

随着计算机硬件平台的不断发展,数值计算模拟的规模也不断增大,所产生的数据量也已经达到tb甚至pb量级,对于海量数据的可视化处理是当今可视化研究的热点与难点问题。由于等值面提取方式是捕捉海量数据典型特征的一种常用方法,因而近年来,海量数据的等值面提取方法一直是国内外可视化领域研究的重点。在众多的等值面提取方法中,marchingcubes算法凭借其原理简单、易于实现的优点,成为了目前海量数据等值面提取的公认标准算法,在各个应用领域中均得到广泛应用。

marchingcubes算法是面绘制的经典算法,它是一种基于体素的三维重建算法,marchingcube算法也被称为等值面提取算法(isosurfaceextraction)。marchingcubes算法对每一个体素提取它的等值面,基于每个立方体素顶点的灰度值,算法先要设定想要提取的表面的阈值,根据这个阈值对每个体素的顶点分为大于阈值和小于阈值的两类,最终提取出表面。一个立方体的8个顶点均有大于或小于两种情况,所以一共有256种提取的表面,又根据正方体的对称性可以缩减至15种。

图像数据渲染是图像可视化过程中的重要步骤,现有的很多是基于opengl固定渲染管线(如vtk中的实现)进行渲染。随着三维渲染技术的发展,图形处理单元(graphicsprocessingunit,gpu)的使用极大加快了三维图形实时渲染的效率和效果。事实证明在浮点运算、并行计算等部分与图形渲染相关的计算方面,gpu可以提供数十倍乃至数百倍于cpu的性能。现有的基于opengl的固定渲染管线技术并没有充分发挥gpu的性能,在阈值发生变化时,需要重新进行一次完整的计算过程,而且与用户交互性较差。



技术实现要素:

鉴于现有技术的不足,本发明提供了一种基于gpu的三维图像数据渲染方法及设备,以提升三维图像重建过程中与用户交互性能以及提高图像可视化效果和性能。

为了实现上述的目的,本发明采用了如下的技术方案:

一种基于gpu的三维图像数据渲染方法,其包括:

获取三维图像数据并计算顶点数据,设置顶点数组对象和顶点缓冲对象;

基于glsl编辑顶点着色器、几何着色器和片元着色器并加载在gpu中;

在gpu中由顶点着色器读入顶点数据并发送给几何着色器;

在gpu中由几何着色器根据顶点数据进行图元信息计算,所述图元信息计算包括顶点坐标空间转换、法向量空间转换、光照计算;

在gpu中由片元着色器根据图元信息计算结果计算图元的颜色值并绑定顶点数组对象,将处理后的图元信息写入显卡缓存区;

根据显卡缓存区中的图元信息进行可视化表达。

其中,所述获取三维图像数据是采用marchingcubes算法获取,包括:

将待处理对象对应的整体区域的区域信息读入三维数组;

从三维数组中提取一个体元,成为当前体元,同时获取该体元顶点信息;

将当前体元的顶点的值与给定的等值面的值进行比较,得到该体元的状态;

根据当前体元的状态索引,找出与等值面相交的体元棱边,并采用线性插值的方法,计算出各个交点的位置坐标;

计算通过该体元中的各棱边交点的平面,以该平面法向方向、各棱边交点作为顶点,得到整体面片,获取整体三维图像数据。

其中,gpu中还设置有图元装配模块,由顶点着色器读入顶点数据先发送至图元装配模块,由图元装配模块根据顶点数据装配成指定形状的图元再发送至几何着色器,几何着色器根据图元形式的顶点数据进行图元信息计算。

其中,所述指定形状的图元为点、线或三角形。

其中,几何着色器根据顶点数据以及用户在交互界面输入的指令参数进行图元信息计算。

其中,所述用户在交互界面输入的指令参数包括用户通过键盘和/或鼠标输入的旋转、放大、缩小、平移或等值面阈值的指令参数。

其中,片元着色器采用phong模型根据图元信息计算结果计算图元的颜色值。

本发明还提供了一种基于gpu的三维图像数据渲染设备,其包括:

一个或多个处理器,所述处理器设置有gpu;

存储器,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上所述的基于gpu的三维图像数据渲染方法。

本发明实施例提供的基于gpu的三维图像数据渲染方法,在三维图像可视化处理过程中,采用基于glsl(openglshadinglanguage)编写的顶点着色器(vertexshader)、几何着色器(geometryshader)和片元着色器(fragmentshader),即,采用可编程渲染管线利用gpu的计算能力对三维体图像(例如医学影像)进行绘制,减轻了cpu计算负担,实现简单,参数可调从而提升了三维图像重建过程中与用户的交互性能,并且也提高了图像可视化效果和性能。

附图说明

图1是本发明实施例提供的三维图像数据渲染方法的工作流程图;

图2是本发明实施例提供的三维图像数据渲染设备的结构示意图;

图3是按照本发明的渲染方法获得一个三维图像的示例性图示;

图4是针对图3按照本发明的方法执行旋转指令的三维图像的示例性图示;

图5是针对图3按照本发明的方法执行放大指令的三维图像的示例性图示;

图6是针对图3按照本发明的方法执行缩小指令的三维图像的示例性图示;

图7是针对图3按照本发明的方法执行变更等值面阈值的三维图像的示例性图示。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明的具体实施方式进行详细说明。这些优选实施方式的示例在附图中进行了例示。附图中所示和根据附图描述的本发明的实施方式仅仅是示例性的,并且本发明并不限于这些实施方式。

在此,还需要说明的是,为了避免因不必要的细节而模糊了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的结构和/或处理步骤,而省略了与本发明关系不大的其他细节。

本实施例提供了一种三维图像数据渲染方法,参阅图1,该方法包括步骤:

s10、获取三维图像数据并计算顶点数据,设置顶点数组对象和顶点缓冲对象。

本实施例中,在图形处理单元(graphicsprocessingunit,gpu)的前端处理器采用marchingcubes算法获取三维图像数据,具体包括以下步骤:

(1)、将待处理对象对应的整体区域的区域信息读入三维数组。

(2)、从三维数组中提取一个体元,成为当前体元,同时获取该体元顶点信息;例如8个顶点的值,坐标等。

(3)、将当前体元的顶点的值与给定的等值面的值进行比较,得到该体元的状态。

(4)、根据当前体元的状态索引,找出与等值面相交的体元棱边,并采用线性插值的方法,计算出各个交点的位置坐标。

(5)、计算通过该体元中的各棱边交点的平面,以该平面法向方向、各棱边交点作为顶点,得到整体面片,获取整体三维图像数据。

将三维图像数据输入到gpu之后,由gpu中的相应功能模块计算获取顶点数据,设置顶点数组对象(vertexarraryobject,vao)和顶点缓冲对象(vertexbufferobject,vbo)。顶点数据是一个属性,包括位置坐标、法线、颜色等。顶点缓冲对象vbo是在显卡存储空间中开辟出的一块内存缓存区,用于存储顶点的各类属性信息,如顶点坐标,顶点法向量,顶点颜色数据等。在渲染时,可以直接从vbo中取出顶点的各类属性数据,由于vbo在显存而不是在内存中,处理效率更高。vao是一个保存了所有顶点数据属性的状态结合,它存储了顶点数据的格式以及顶点数据所需的vbo对象的引用。vao本身并没有存储顶点的相关属性数据,这些信息是存储在vbo中的,vao相当于是对很多个vbo的引用,把一些vbo组合在一起作为一个对象统一管理。执行vao绑定之后其后的所有vbo配置都是这个vao对象的一部分,可以说vbo是对顶点属性信息的绑定,vao是对很多个vbo的绑定。

s20、基于glsl(openglshadinglanguage)编辑顶点着色器(vertexshader)、几何着色器(geometryshader)和片元着色器(fragmentshader)并加载在gpu中。

s30、在gpu中由顶点着色器读入顶点数据并发送给几何着色器。

本发明实施例中,gpu中还设置有图元装配(primitiveassembly)模块,由顶点着色器读入顶点数据先发送至图元装配模块,由图元装配模块根据顶点数据装配成指定形状的图元再发送至几何着色器,几何着色器根据图元形式的顶点数据进行图元信息计算。具体地,所述指定形状的图元为点、线或三角形。

s40、在gpu中由几何着色器根据顶点数据进行图元信息计算,所述图元信息计算包括顶点坐标空间转换、法向量空间转换、光照计算。

具体地,几何着色器根据顶点数据以及用户在交互界面输入的指令参数进行图元信息计算。其中,所述用户在交互界面输入的指令参数包括用户通过键盘和/或鼠标输入的旋转、放大、缩小、平移或等值面阈值的指令参数。

s50、在gpu中由片元着色器根据图元信息计算结果计算图元的颜色值并绑定顶点数组对象vao,将处理后的图元信息写入显卡缓存区。

具体地,片元着色器根据接收到的顶点坐标和法向量,根据主程序传入的颜色信息以及相机位置信息,采用phong模型计算颜色值,并根据相机位置采用手电筒模型提高光照真实效果。

s60、根据显卡缓存区中的图元信息进行可视化表达。

本实施例还提供了一种三维图像数据渲染设备,如图2所示,所述三维图像数据渲染设备包括:处理器10、存储器20、输入装置30和输出装置40,处理器10中设置有cpu和gpu。三维图像数据渲染设备中处理器10的数量可以是一个或多个,图2中以一个处理器10为例;三维图像数据渲染设备中的处理器10、存储器20、输入装置30和输出装置40可以通过总线或其他方式连接。

其中,存储器20作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块。处理器10通过运行存储在存储器20中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现本发明前述实施例中的三维图像数据渲染方法。输入装置30可用于接收图像数据、输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置40可包括显示屏等显示设备,例如,显示图像。

图3是按照本发明以上实施例的的渲染方法设备获得一个三维图像的示例性图示;图4是针对图3按照本发明的方法执行旋转指令的三维图像的示例性图示;图5是针对图3按照本发明的方法执行放大指令的三维图像的示例性图示;图6是针对图3按照本发明的方法执行缩小指令的三维图像的示例性图示;图7是针对图3按照本发明的方法执行变更等值面阈值的三维图像的示例性图示。参阅图3至图6,在交互功能方面,用户可以通过拖动鼠标实现物体的旋转以及通过键盘交互实现相机(观察点)拉近(放大)和远离(缩小)物体。对比图3和图7,两者虽然都是渲染同一个体数据,然而因为阈值大小不同导致渲染内容(等值面)不同,用户可以随时调整阈值并实时观察渲染效果的变化,这些都是实时交互。

综上所述,本发明实施例提供的基于gpu的三维图像数据渲染方法,在三维图像可视化处理过程中,采用基于glsl编写的顶点着色器、几何着色器和片元着色器,即,采用可编程渲染管线利用gpu的计算能力对三维体图像进行绘制,减轻了cpu计算负担,实现简单,参数可调从而提升了三维图像重建过程中与用户的交互性能,并且也提高了图像可视化效果和性能。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

需要指出的是,上述实施例仅为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1