基于Open CASCADE下的点云数据的研究与实现
2010-04-11吴维勇
丁 伟,冯 飞,吴维勇
DING Wei, FENG Fei, WU Wei-yong
(九江学院 信息科学与技术学院,九江 332005)
基于Open CASCADE下的点云数据的研究与实现
The research and realization of cloud data based on Open CASCAD
丁 伟,冯 飞,吴维勇
DING Wei, FENG Fei, WU Wei-yong
(九江学院 信息科学与技术学院,九江 332005)
研究了基于几何内核Open CASCADE的三维建模平台的研究,通过Open CASCADE类库的建模、布尔操作、可视化系统的特性以及与Visual C++的有效结合,针对点云数据的加载进行图形的空间变换,从而实现图形的平移、缩放、旋转。
Open CASCADE;空间变换;点云数据
0 引言
Open CASCADE是一套开放原始码的CAD/CAM/CAE几何模型核心,源自于法国的Matra Datavision公司,Open CASCADE是一个功能强大的三维建模工具,提供了点、线、面、体和复杂形体的显示和交互操作,经过深度开发后可实现纹理、光照、图元填充、渲染等图形操作和放大、缩小、旋转、漫游、模拟飞行、模拟穿越等动态操作。
OpenCascade提供二维和三维几何体的生成、显示和分析。Open CASCADE的基础类提供各种通用服务,如自动动态内存管理(操纵物体的处理)、收藏、例外处理、泛型的向下转型和插件创造。Open CASCADE是面向对象的C++类库,这些类库被分成了六个类库模块(最小类库模块是基础类库模块,最大的类库模块是建模运算类库模块),这些类库模块及其内容如下:
1)基础类库模块(Foundation Classes):内核类(Kernel Classes),数学工具类(Math Utilities);
2)建模数据类模块(Modeling Data):二维几何体(2D Geometry),三维几何体(3D Geometry),几何体工具(Geometry Utilities),拓扑(Topology);
3)建模运算类模块(Modeling Algorithms):基本体结构(Construction of Primitives),布尔操作(Boolean Operations),倒角圆角(Fillets and Chamfers),(Offsets,Drafts Sewing and Sweeps),特征(Features),消除隐藏线(Hidden Line Removal),几何工具(Geometric Tools),拓扑工具(Topological Tools);
4)可视化类模块(Visualization):二维三维通用服务(Services Common to 2D and 3D),二维可视化类(2D Visualization),三维可视化类(3D Visualization);
5)数据交换类模块(Data Exchange):基本图形转换规范(IGES),产品型号数据交换标准(STEP),AP203,AP214,数据扩展(Extended data),exchange (XDE);
6)应用程序框架(Application Framework):数据框架(Data Framework),数据存储(Data Storage),应用程序界面(Application Desktop)。
本文以点云数据的的加载为例,利用Open CASCADE强大的图形处理功能以及Visual C++的良好数据处理能力,开发了实现行图形的空间变换,从而实现图形的平移、缩放、旋转。
1 Open CASCADE应用程序框架
Open CASCADE提供了一个应用程序开发的框架OCAF(Open CASCADE Application Frame),可帮助开发人员快速的利用Open CASCADE进行应用程序的开发。
OCAF提供了应用程序结构,开发者的主要任务就是建立应用程序所需要的数据和程序接口。OCAF的应用程序数据组织方式和其他的CAD不同,在OCAF中,数据结构不是由形体驱动的,而是由参数驱动。
用户通过Open CASCADE 提供的OCAF的生成向导可快速的在Visual C++中生成基于MFC的多文档OCAF框架。生成向导的步骤如下:
1)Open CASCADE应用程序框架在Visual C++中的目录选项卡中添加Open CASCADE下的inc及lib目录;
2)将Open CASCADE下的acafappwizard.awx及usertype.dat复制到Visual C++下的Template及Bin文件夹下;
3)在Visual C++中的Option对话框format选项卡中进行字体格式设置,在Color项目区选择User Defined Keywords。
2 点云数据的显示
本文主要针对规则的兔子点云和牛点云数据进行处理,其数据采样方法为按行扫描。由于得到的物体的点云数据通常是海量的,而且有的物体表面曲率变化较大,形状不规则,所以在做一片点云数据曲面显示的时候,如果点取的太稀疏,不能反映局部曲面曲率变化的大小,如果点取的太密集,那么将给曲面拟合带来很大的计算量。因此,将一片点云数据分割成若干小片,对每个小片分别进行拟合显示,最后把所有小片进行光滑拼接,以达到良好的显示效果。
当节点向量区间分的很小的时候,简捷显示方法能够达到较好的拟合效果。相关理论依据和证明如下:
由上可知,当节点向量区间分的很小的时候,简捷显示方法能够达到较好的拟合效果。处理后的数据通过导入系统,可显示效果。主要代码如下:
Handle(Prs3d_Point Aspect) aPointAspect=new
Prs3d_PointAspect(Aspect_TOM_POINT,Quantity_Color(1,0,0,Quantity_TOC_RGB),2);
Handle(AIS_Drawer) anDrawer=new AIS_Drawer;
anDrawer->SetPointAspect(aPointAspect);
anAISCompound->SetAttributes(anDrawer);
3 点云数据的实现
通过数据处理后,其中牛点云数据中有2904个顶点及5848个面,兔子点云数据中有53921个顶点及104167个面。
3.1 点云数据的空间变换
空间变换,也称几何变换或几何运算, 包括图形的平移、缩放、旋转等.几何运算可改变图形中各物体之间的空间关系,这种运算可以被看成是将物体在图形内移动。
空间变换可如下表示.设(u,v)为源图形上的点,(x, y)为目标图形上的点,则几何变换将源图形上(u,v)处的颜色值与目标图形上(x, y)处的颜色值对应起来(u,v) <—> (x,y)并具有以下关系:
或
其中X(u,v)、 Y(u,v)或U(x,y)、 V(x,y)均为变换.由(1)对应的变换称作向前映射法,而由(2) 对应的变换称作向后映射法[3]。
一个空间变换需要两个独立的算法。首先,需要一个算法来定义几何变换本身, 用来描述每个像素如何从其初始位置“移动”到终止位置,即每个像素的运动。同时,还需要一个用于灰度插值的算法。
Open CASCADE在View类中(V3d_VIew)中有相应的转换函数,可以把当前点转换到3D视图中的对应与重合与屏幕平面上。
在实现的系统中可通过Ctrl+鼠标中间按键(或鼠标中间的小圆球)可实现图形的平移、Ctrl+鼠标左按键可实现图形的缩放、Ctrl+鼠标右按键可实现图形的旋转。
3.2 点云数据的删除与更新
点云数据的删除与更新是前期数据处理的核心。因为无论哪种激光扫描系统得到的数据都含有大量的冗余信息,对所有点云数据进行可视化,并选择删除那些明显是多余信息的数据,既直观也给后续处理减少了工作量,最重要的是可以减小后续处理出错的可能性。代码如下:
3.3 程序运行界面及效果图
程序主界面包括几个区域:菜单栏,图形工具栏,主显示区,三视图显示区,建模控制区。数据加载后显示效果图如图1、图2所示。在图中可执行相关操作。
图1 牛点云显示效果
图2 兔子点云显示效果
4 结束语
在本文中,我们给出了一种简单实用的点云数据的前期可视化操作与管理的方法。针对初始的仅具有的三维空间坐标的点云数据,实现了模型的空间变换操作,并支持点云的动态删除与更新。采用了 Open CASCADE几何内核,由OpenCASCADE提供的数据管理模块实现了复杂的数据管理功能。为图形中的数据点云操作提供了广阔的应用前景。
[1] 0bject libraries application framework uses guide[EB/OL].WWW.0penCASCAD E-org.2006.
[2] 施法中.计算机辅助几何设计与非均匀有理B样条[M].北京:北京航空航天大学出版社,1994:17-25.
[3] 崔锦泰,程正兴.小波分析导引[M].西安交通大学出版社,1995:102-105.
TP241
A
1009-0134(2010)11(下)-0216-03
10.3969/j.issn.1009-0134.2010.11(下).73
2010-09-13
国家自然基金资助项目(60863012);江西省自然科学基金资助项目(0611063);江西省教育厅科技项目(GJJ08435,GJJ09346)
丁伟(1978 -),讲师,硕士,研究方向为图形图像处理及数据库。