当前位置: 首页 > 专利查询>东北大学专利>正文

一种基于OpenCL的移动立方体方法技术

技术编号:10106796 阅读:127 留言:0更新日期:2014-06-01 21:51
一种基于OpenCL的移动立方体方法,属于三维重建技术领域,运行于装有OpenCL计算设备的计算机上;读取三维图像,初始化OpenCL环境;并行地扫描三维图像中所有体素的边,判断是否存在等值面顶点;并行地计算等值面顶点的坐标和法向量;并行地扫描所有体素,计算体素索引,并行地查询体素中存在的三角形数量;并行地查询体素中三角形顶点所在边,生成三维模型。基于OpenCL技术对算法进行并行加速;先遍历体素中的边生成顶点,再遍历体素生成三维模型,消除内存冗余。

【技术实现步骤摘要】
【专利摘要】,属于三维重建
,运行于装有OpenCL计算设备的计算机上;读取三维图像,初始化OpenCL环境;并行地扫描三维图像中所有体素的边,判断是否存在等值面顶点;并行地计算等值面顶点的坐标和法向量;并行地扫描所有体素,计算体素索引,并行地查询体素中存在的三角形数量;并行地查询体素中三角形顶点所在边,生成三维模型。基于OpenCL技术对算法进行并行加速;先遍历体素中的边生成顶点,再遍历体素生成三维模型,消除内存冗余。【专利说明】—种基于OpenCL的移动立方体方法
本专利技术属于三维重建
,具体涉及。
技术介绍
在三维重建技术,可以分为多视角三维重建和三维图像重建两大类。多视角三维重建是指对一个场景不同视角的图像进行重建,而三维图像重建是指对三维图像进行处理,从图像中提取有效的信息并加以显示的过程。三维图像重建又分为两类方法,体绘制和面绘制。其中,面绘制是指从图像中提取感兴趣区域的三维表面模型,再用传统图形学的方法加以显示;而体绘制则是直接对图像进行投影,生成绘制结果图像。移动立方体方法,是一种从三维图像中重建出等值面三维模型的方法,属于面绘制。该方法的原理是假设三维图像是在空间中均匀分布的数据场,遍历所有体素,在每个体素内独立生成等值面,所有等值面的集合即构成等值面三维模型。体素是指三维图像中,某一层中相邻的构成一个正方形的四个像素与相邻层中对应的四个像素总计八个像素所构成的正方体。OpenCL (Open Computing Language)技术为异构平台提供了一个编写程序,尤其是并行程序的开放框架标准。异构平台所指由CPU、GPU及其他处理器组成的体系结构。OpenCL由编写内核程序的语言和控制平台的API组成。目前与OpenGL同样由KhronosGroup开发和维护。OpenCL的代码即可以在GPU上执行,也可以在CPU上执行,大大提高了代码的可移植性。OpenCL标准的制定由相应的标准委员会完成,因此能够实现跨厂商、跨平台的异构计算。GPU由于其高并发性,在并行计算中效率优于CPU,因此被认为是OpenCL计算设备的首选。NVIDIA在其OpenCL示例代码中给出了一个移动立方体方法的OpenCL实现,该实现可以代表现有的基于OpenCL的移动立方体方法。该实现首先扫描体素,查询体素内存在的三角形数量;为顶点坐标和法向量分配内存;再次扫描体素,生成顶点和三角形。这种方式的缺点在于,体素的边是被相邻的体素所共享的,因此边上存在的等值面顶点会被重复生成,产生数据冗余。本专利技术基于OpenCL技术对算法进行并行加速;先遍历体素中的边生成顶点,再遍历体素生成三维模型,消除内存冗余。
技术实现思路
本专利技术针对移动立方体方法重建时间长,现有并行实现存在冗余数据的缺陷,提出了。,运行于装有OpenCL计算设备的计算机上,包括以下步骤: 步骤1:读取三维图像,初始化OpenCL环境; 步骤2:并行地扫描三维图像中所有体素的边,判断是否存在等值面顶点; 步骤3:并行地计算等值面顶点的坐标和法向量; 步骤4:并行地扫描所有体素,计算体素索引,查询体素中存在的三角形数量; 步骤5:并行地查询体素中三角形顶点所在边,生成三维模型。所述步骤I读取三维图像,初始化OpenCL环境,具体步骤如下: 步骤1.1:将三维图像读取至内存中; 步骤1.2:查询OpenCL平台,创建OpenCL上下文环境,创建OpenCL消息队列,编译OpenCL程序,创建OpenCL核函数; 步骤1.3:创建OpenCL缓冲对象,与读入的三维图像绑定。所述步骤2并行地扫描三维图像中所有体素的边,判断是否存在等值面顶点,具体步骤如下: 步骤2.1:设定等值面阈值V ; 步骤2.2:为顶点标识位分配内存,创建OpenCL缓冲对象与该数据绑定; 步骤2.3:执行边扫描核函数,并行地扫描所有体素的边,如果体素中一条边的两个端点灰度值均大于或均小于V,将这条边对应的顶点标识位设为0,否则设为I ; 步骤2.4:为顶点标识位前缀分配内存,采用前缀和算法计算顶点标识位前缀; 步骤2.5:为顶点标识位压缩数据分配内存,遍历顶点标识位,计算顶点标识位压缩数据。所述步骤3并行地计算等值面顶点的坐标和法向量,具体步骤如下: 步骤3.1:为顶点坐标与法向量分配内存,创建OpenCL缓冲对象与两项数据绑定; 步骤3.2:执行计算顶点核函数,并行地计算顶点的坐标与法向量; 步骤3.3:将顶点坐标与法向量从OpenCL缓冲对象读回内存。所述步骤4并行地扫描所有体素,计算体素索引,查询体素中存在的三角形数量,具体步骤如下: 步骤4.1:为体素索引、三角形数量和三角形标识位分配内存,创建OpenCL缓冲对象与两项数据绑定; 步骤4.2:执行计算体素索引核函数,并行地计算体素索引; 步骤4.3:为三角形数量前缀和三角形标志位前缀分配内存,创建OpenCL缓冲对象与两项数据绑定,采用步骤2.4中的前缀和算法计算三角形数量前缀和三角形标志位前缀;步骤4.4:为三角形标识位压缩数据分配内存,采用步骤2.5的方法对三角形标识位进行压缩,得到三角形标识位压缩数据。所述步骤5并行地查询体素中三角形顶点所在边,生成三维模型,具体步骤如下: 步骤5.1:为三角形索引分配内存,创建OpenCL缓冲对象与其绑定; 步骤5.2:执行生成三维模型核函数,并行地计算三角形索引; 步骤5.3:将三角形索引从OpenCL缓冲对象读回内存。所述的步骤3.2执行计算顶点核函数,并行地计算顶点的坐标与法向量,具体步骤如下: 步骤3.2.1:并行地扫描顶点标识位压缩数据,顶点标识位压缩数据中每个值对应一条存在顶点的边,计算顶点坐标; 步骤3.2.2:计算顶点法向量; 步骤3.2.3:对N进行单位化运算,将C与N写入对应的顶点坐标与法向量OpenCL缓冲对象中,写入位置为EOSi。所述的步骤4.2执行计算体素索引核函数,并行地计算体素索引,具体步骤如下: 步骤4.2.1:并行地扫描所有体素,计算体素索引; 步骤4.2.2:根据体素索引查询三角形数量表,获取三角形数量; 步骤4.2.3:如果三角形数量为0,将三角形标识位设为0,否则设为I。所述的步骤5.2执行生成三维模型核函数,并行地计算三角形索引,具体步骤如下: 步骤5.2.1:并行地扫描三角形标识位压缩数据,三角形标识位压缩数据中每一个值对应一个存在三角形的体素,根据对应的体素索引,查询三角形位置表,获取三角形顶点所在边; 步骤5.2.2:将顶点所在边对应的顶点标识位前缀写入对应的三角形索引OpenCL缓冲对象中,写入位置为当前体素对应的三角形数量前缀。【专利附图】【附图说明】图1是本专利技术的流程图; 图2是三维图像中体素间共享边的示意图。【具体实施方式】下面结合附图与实施例对本专利技术做进一步的详细说明。基于OpenCL技术实现移动立方体方法,并选用AMD Raedon HD 6850 GPU作为OpenCL移动设备。在移动立方体方法中,体素间在生成三维模型时彼此独立,因此可以利用GPU的高并发性有效缩短运行时间。三维图像中的体素的边,实际是被相邻的多个体素共享,本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:姜慧研于超项飞
申请(专利权)人:东北大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1