APP下载

基于VTK的激光跟踪测量可视化软件设计

2015-07-02张润宇李月强张滋黎袁江周维虎

计测技术 2015年1期
关键词:绘制可视化图形

张润宇,李月强,张滋黎,袁江,周维虎

(1.北京信息科技大学仪器科学与光电工程学院,北京100192;2.中国科学院光电研究院,北京100094)

基于VTK的激光跟踪测量可视化软件设计

张润宇1,2,李月强1,张滋黎2,袁江2,周维虎2

(1.北京信息科技大学仪器科学与光电工程学院,北京100192;2.中国科学院光电研究院,北京100094)

测量数据的三维可视化是激光跟踪测量数据处理的关键步骤之一。结合大型激光跟踪测量软件系统的开发实践,对VTK技术特点和体系结构进行深入研究,设计实现了对测量数据进行处理和显示的类和接口。在此基础上,基于Microsoft Visual Studio 2010平台,利用C++和VTK技术开发了一款三维测量数据处理及可视化软件,实现了测量点云拟合、三维图形显示以及交互功能,并通过实例验证了软件的有效性和可用性,证明了VTK在工业测量可视化领域具有很大的应用价值。

VTK;三维可视化;测量软件;点云;交互

0 引言

对大尺寸部件的几何特征点、空间尺寸和表面形貌的精密测量在航空航天、汽车、造船等工业领域具有广泛应用。在常见的大尺寸部件的工业测量系统中,激光跟踪测量系统以其便携性、高精度、测量范围大、实时跟踪测量等优点[1],逐渐成为工业测量领域研究的焦点。同时,随着可视化和三维显示技术的快速发展,工业测量三维可视化软件也成为激光跟踪测量系统中不可或缺的得力工具。截至目前,国外有诸多公司推出了工业测量三维可视化软件,例如美国的NRK公司的SA(Spatial Analyzer)软件[2]、美国的Geomagic公司的Geomagic Studio软件[3]等。本文采用面向对象技术设计并实现了一套应用于激光跟踪测量的三维可视化测量软件,该软件基于VTK和MFC框架平台开发而成,其设计良好,操作简便,并最终用实例进行了有效性验证。该软件是为数不多的将VTK技术应用在工业测量领域的国内软件,为其他可视化项目提供了很好的指引和借鉴。

1 VTK技术及其特点

1.1 VTK简介

现有的三维可视化开发工具主要有OpenGL,DirectX,VTK等,其中VTK是由美国Kitware公司负责维护,在医学、能源、地质等领域颇受重用。VTK在OpenGL基础上用C++语言开发而成,采用面向对象设计,并含有对Python,Java,Tcl等语言的接口[4],具有开源和跨平台的特性,发展速度很快。

1.2 VTK特点

1)专注于功能:VTK封装了复杂的底层环境代码和算法处理,并提供了大量的编程接口,使开发人员更专注于高级功能的实现。

2)易于开发:由于采用面向对象设计,VTK封装性很好,可视化管道中各个阶段的数据、处理器均以类和对象的形式使用,大大增强代码的正确性、可读性,便于开发和维护。

3)独一无二的可视化管道设计:VTK与OpenGL,OSG等其他三维可视化开发工具的主要区别就在于VTK采用管道式设计(Pipeline)实现三维显示[5]。原始数据在管道中通过各种过滤器和映射器得到对应的图形结构,再通过相应的图形绘制器绘制成三维图形显示出来,节约大量设计和开发时间,效率高。

可以看出,VTK能应用于如今大多数三维可视化项目中,逐渐成为三维可视化领域中的流行技术。

2 软件框架设计

2.1 VTK和M FC框架的建立

微软基础类库MFC为编写在Windows系统下的VTK程序提供了良好的平台基础。在MFC的视图类窗口上关联VTK窗口,即在VTK绘制窗口函数接口与MFC视图类窗口函数接口之间建立调用关系,以实现初始化MFC和VTK、设置环境变量、复杂交互等功能,具体步骤如图1所示。

图1 建立VTK和MFC程序框架流程

2.2 软件的设计要求

激光跟踪测量可视化软件主要用于实现用户对激光跟踪仪测量的点云数据的操作,包括数据传输、误差处理、点云拟合、数据库管理,以及三维显示和交互。其中,三维显示包括对点云、直线、平面、圆、球、圆柱、圆锥、曲面等图元的显示,以及误差分析的可视化;交互操作包括平移、旋转、缩放、定位、悬浮信息、生成报表等;数据库管理包括点云数据和各个拟合图形数据的新建、插入、编辑、删除,以及数据库的新建、连接、更新等。

2.3 三维显示和交互模块设计

在三维显示和交互模块中主要设计了两个类,分别是类CVtkSetup和类CVtkEntity。类CVtkSetup负责完成VTK窗口初始化、环境设置和交互操作,而类CVtkEntity负责完成三维显示的实现以及三维显示相关的数值计算、数据构建和条件检查等功能。

作为初始化和交互类,类CVtkSetup定义了VTK窗口及其初始化函数,还包括坐标轴、悬浮信息、误差可视化等交互工具,以及鼠标拖拽查看、选取元素等交互方式。三维显示模块与软件主体的接口也在类CVtkSetup中定义,通过窗口句柄和指针的方式,软件主体可以访问三维显示和交互模块的操作,这样用户在数据处理和三维交互操作之间频繁切换时就做到直接、无缝。

作为三维显示实现类,类CVtkEntity描述了点、直线、平面、球、圆柱、圆锥等图元的属性,包括位置坐标、尺寸、ID号、颜色、误差信息等;此外,针对不同的图元,设计实现了不同的图元数据构建方式,通过与数据库建立连接,导入数据到标准库数据结构中进行显示。具体的类和接口设计如图2所示。

图2 三维显示和交互模块中主要的类和接口示意图

3 软件可视化管道的设计

在完成软件框架和模块设计之后,要实现从数据到三维图形的构建和显示流程。之前提到,VTK主要的特色就是采用可视化管道流程进行三维图形显示。在三维可视化软件里具体分为三个部分,分别是VTK绘制环境构建、图形数据构建、VTK三维可视化,其中图形数据的构建是关键步骤,以下是各部分详细设计流程。

3.1 VTK绘制环境构建流程

构建VTK绘制环境的主要工作在图2中的VtkInitialize函数里实现。绘制器对象Renderer、绘制窗口RenderWindow、交互器对象Interactor、交互方式InteractorStyle以及相机对象Camera、光照对象Light共同构成了绘制环境,其中绘制器对象设置Camera、Light和背景,RenderWindow指定关联的父窗口,并在绘制环境创建完成后开始VTK消息循环。

3.2 图形数据构建流程

图形的显示是三维可视化软件的关键部分,不同类型的图形有不同的数据构建方法。VTK使用数据流方法将原始数据变换成图形数据,构建好的具有正式结构的数据叫做数据集(DataSet),数据集对象由几何和拓扑结构以及属性数据组成[6]。单元格(Cell)是拓扑结构的组成原子,点(Point)是几何结构的组成原子,属性(Property)是单元格与点的附加的属性信息,如误差、测量值等。数据集按结构可分为规则格网(StructuredGrid)、不规则格网(UnstructuredGrid)和多边形数据集(PolygonalData)[7]。对于散乱不规则点云,可用不规则格网表示;而对于有结构的规则的点云,可用多边形数据集或规则格网表示,从而组成三维图形。数据集的分类和结构组成如图3所示。

图3 数据集的分类和结构组成

数据集的构建工作主要在图2中的各个图形显示接口中实现,不同的图形数据需要不同的数据集来表示,一般来说,先用标准库容器Vector读入原始点云数据,然后通过循环按照点的ID将点依次插入到单个图元里,将各个图元插入到单元格阵列(CellArray)中组成拓扑结构,最后创建数据集,并指定其几何结构和拓扑结构[8]。

下面是创建图形数据步骤的主要代码的伪码:

3.3 VTK可视化管道

数据集构建好之后就可以建立可视化管道,数据集依次通过过滤器(Filter)和映射器(Mapper)对数据集进行滤波、映射处理[9],用图形对象(Actor)接收映射后的数据,从而完成了数据集到图形对象的转换,最后把图形对象添加到绘制器中,再由绘制窗口绘制并刷新即可完成三维图形显示。全部的三维可视化管道构建总流程如图4所示。

图4 三维可视化管道构建总流程

4 系统实现

4.1 软件系统界面

本软件在 Visual Studio 2010平台上基于 C++、MFC和VTK共同开发而成,数据库操作通过ADO方式访问Access数据库实现,目前已完成数据读取和编辑、测量点云拟合计算、基本图形的三维显示及人机交互操作等功能。软件界面上方为系统菜单栏和工具栏,下方主视图的左侧是资源浏览视图,右侧是三维显示视图。加载数据库后的软件界面如图5所示。

图5 软件总体界面

4.2 测量数据的处理与显示

4.2.1 数据读取和编辑

本软件可以实现对多种格式点云数据的读取,包括excel格式和txt格式等。同时对系统数据库中的数据可以在菜单项中进行参数编辑、增加、删除等操作。4.2.2 点云拟合算法的选择

本软件当前采用的拟合算法是最小二乘拟合法,当测量的数据点具有代表性,尤其是在已知形状求取参数的情况下使用非常有效[10]。由于激光跟踪测量的点中有许多是特征点,且大多数被测物形状已知,测量点并不太多,因此采用最小二乘拟合算法拟合基础图形是较为合适的。其思想是测量数据和真实数据之间存在一个误差v,也叫残差。使所有测量点的误差的平方和最小,此时求得的参数为无偏估计值,满足条件的方程成为正规方程。

以球面拟合为例,拟合步骤如下:

1)给出球的一般方程:

式中:(X0,Y0,Z0)为球心坐标;R为球半径。

2)按半径R进行最小二乘计算,以(X0,Y0,Z0,R)为待估计参数,线性化得到第i个测量点的误差方程:

式中:vi为第i次观测的残差;,,为解算出的球心坐标作为真实值;Xi,Yi,Zi为球面坐标的观测值;为解算出的球半径的观测值。

3)建立正规方程ATAX=ATV,其中A为向量X的参数矩阵,X=(X0,Y0,Z0,R)T,V=(V1,V2,…,Vn)T。由此解算出待估计参数(X0,Y0,Z0,R),具体计算过程不再赘述。

4.2.3 实验测量数据与三维显示

本软件通过实验用激光跟踪仪测试观测直线、圆、球等得到测量所得点云数据,共203个点,导入数据库后显示所用时间为0.01284 s,点云及其所拟合图形的显示效果如图6所示。

软件根据三维图形整体计算一个包围盒,进行全局显示和缩放,当坐标系或计算单位发生变化时,软件会调用绘制函数应对视图的变化。当鼠标悬停在图形上方时,会显示半透明的悬浮窗描述当前图形的位置、误差信息,用户也可以自定义要显示的信息。当数据库发生变化时,如插入、删除、新建等,软件会进行相应的函数调用,如绘制图形、释放图形资源、清理可视化窗口等。

图6 点云拟合直线及空间中的圆

4.3 交互操作

本软件采用鼠标和快捷键结合的操作方式实现人机交互。用户可通过鼠标完成三维图形的旋转、缩放、平移、拾取、悬停查看等操作;通过工具栏的图标,用户可以打开图形编辑、坐标数据等窗口,操作简洁、流畅。以平移和旋转为例,系统的人机交互操作效果如图7所示,显示坐标系、坐标数据窗口及鼠标悬浮窗口如图8所示。

图7 平移+旋转前后效果

图8 坐标系、坐标数据窗口及悬浮窗口的显示

5 结语

本文设计开发的三维测量数据可视化软件实现了测量数据的读取和编辑、数据拟合及图形的三维显示、人机交互等基本功能。软件运行流畅、有效,操作简洁,易于使用。相对于其他可视化工具,VTK能在较短的时间内开发出更复杂的显示和交互功能,显示效果更好,运行流畅度更高。应该注意到软件目前还达不到SpatialAnalyzer软件的高度,在通用性、集成度、功能性上仍存在差距,但其作为自带软件已有不错的应用,且会持续开发。本软件目前已成功应用于激光跟踪测量系统中,其研发也可为其他工业测量可视化项目提供借鉴,同时也助于发掘VTK在工程测量数据可视化领域的价值。

[1]张博,彭军.激光跟踪测量系统[J].计测技术,2006,26 (4):5-6,41.

[2]New River Kinematics(NRK).Overview of Spatial Analyzer[EB/OL].[2014-10-20].http://www.kinematics.com/ spatialanalyzer/index.php.

[3]Geomagic.Overview of Geomagic Studio[EB/OL].[2014-10-28].http://www.geomagic.com/en/products/studio/overview.

[4]Kitware Inc.Visualizing with VTK a Tutorial[J].IEEE CG&A,2000,9:20-27.

[5]Frédéric Magoulès,Roman Putanowicz.Visualization of large data sets bymixing Tcl and C++interfaces to the VTK library[J].Computers and Structures,2007,85:536-552.

[6]毕林,王李管,陈建宏,等.基于VTK的矿体三维可视化研究与实现[J].计算机工程与应用,2008,44(10): 78-81.

[7]Kitware Inc.The VTK User’s Guide[M].New York:Published by Kitware Inc.,2010.

[8]余翔宇,徐义贤,王彬彬.基于VTK的地质体三维建模实现[J].工程勘察,2014(2):64-72.

[9]罗火灵,许永忠,陈世仲.基于VTK和MFC的医学图像三维重建研究与实现[J].生物医学工程学进展,2010,31 (1):23-28.

[10]贺磊,黄桂平,李广云,等.工业测量数据的可视化方法研究[J].信息工程大学测绘学院学报,2004,12(4): 305-308.

Design of Laser Tracking M easurement Visualization Software Based on VTK

ZHANG Runyu1,2,LIYueqiang1,ZHANG Zili2,YUAN Jiang2,ZHOU Weihu2
(1.School of Instrumentation Science and Opto-electronics Engineering,Beijing Information Science&Technology University,Beijing 100192,China;2.Academy of Opto-electronics,Chinese Academy of Sciences,Beijing 100094,China)

3D visualization ofmeasurement data is one of the key approaches in laser trackingmeasurement data processing.Combiningwith the development of laser trackingmeasurement software system,technical characteristics and architecture of VTK are studied in this paper.The classes and interfaces formeasurement data processing and displaying are also designed and implemented.Furthermore,based on the platform of Microsoft Visual Studio 2010,ameasurement data processing and 3D visualization software is developed using C++and VTK,achieving functions of point cloud fitting,3D graphics display and user interaction.The effectiveness and usability of the software are testified by experiments which show that VTK has great application value and potential in the field of industrymeasurement visualization.

VTK;3D visualization;measuring software;point cloud;interaction

TB92;TP311.52;TN247

A

1674-5795(2015)01-0021-05

10.11823/j.issn.1674-5795.2015.01.05

2014-11-18;

2014-11-26

国家重大科学仪器设备开发专项(2011YQ120022)

张润宇(1989-),男,山东青岛人,硕士研究生,主要研究方向为光电测量软件;李月强(1968-),男,副教授,硕士生导师,主要研究方向为光电测量技术及仪器。

猜你喜欢

绘制可视化图形
基于CiteSpace的足三里穴研究可视化分析
基于Power BI的油田注水运行动态分析与可视化展示
基于CGAL和OpenGL的海底地形三维可视化
“融评”:党媒评论的可视化创新
超萌小鹿课程表
放学后
分图形
找图形
图形变变变
在转变中绘制新蓝图