基于VTK的室外场景三维重建

第18卷增刊2                                    系
统  仿  真  学  报©                                  V ol. 18 Suppl.2
2006年8月                                    Journal of System Simulation                                      Aug., 2006
基于VTK 的室外场景三维重建
杨丽萍1,2,张爱武1,刘晓萌1
(1.首都师范大学三维信息获取与应用教育部重点实验室, 北京 100037; 2.包头师范学院计算机科学系, 包头 014030)
摘  要:采用VC++6.0作为开发平台,引入三维可视化类库VTK ,实现了激光扫描数据的几何建模。通过数据压缩、平面分割减少数据量,并分别采用Delaunay 三角化、轮廓线和MarchingCubes 等不同的建模方法,重建室外真实三维场景。
关键词:可视化类库VTK ;三维重建;三角化;轮廓线;MarchingCubes
中图分类号:TP391.9      文献标识码:A      文章编号:1004-731X (2006) S2-0411-03
3D Reconstruction of Outdoor Scenes Based on Visualization Toolkit
YANG Li-ping 1, 2, ZHANG Ai-wu 1, LIU Xiao-meng 1
(1.Ministry of Education Key Laboratory on 3D Information Acquisition & Application, Capital Normal University, Beijing 100037, China;
2.Computer Science Department, Baotou Normal Institute, Baotou 014030, China)
Abstract: 3D Visualization Toolkit was employed using VC++6.0 to create 3D geometric model from laser data. Firstly, data was reduced through plane segmentation. And then, different modeling methods were used to reconstruct 3D outdoor scenes, such as Delaunay 3D 、Contour 、Marching Cubes.
Key words: visualization toolkit; 3D reconstruction; triangulation; contour; MarchingCubes
引  言
三维重建的任务是从二维图像中或从激光扫描得到的散乱点中抽取三维信息,通过对这些信息进行分类、综合等一系列处理,在三维空间中重新构造起图像中的或真实物体的相应形体。因此,三维重建是通常的几何作图或摄影成像过程的逆过程。近几年来,三维重建得到很大发展,它的成果可应用于城市数字化、自然景观维护、三维识别、三维游戏、建筑结构调查、光照分析、城市规划与管理、街道的空间信息分析、任务模拟、训练、仿真、战略规划等方面,因此,三维重建有很好的发展前景。
VTK(Visualization Toolkit)是美国Kitware 公司开发的一套C++类库,它吸收了众多优秀的图像处理和图形生成算法,是一个源代码开放、面向对象的计算机图形、可视化技术及图像处理软件系统,可在C++、Tcl 、Java 、Python 语言环境下使用。具有如下技术特点:(1)封装了目前许多优秀的三维数据场可视化算法,可方便地对数据集进行各种变换和操作。(2)支持多种语言环境,并具有多种程序语言之间的代码转换功能。(3)可移植性:跨平台使用可在Windows 系统或Unix 系统中运行。(4)可扩充性:它是开放源代码的,因此,开发人员可对源代码修改或增加自己的新类。(5)生成
收稿日期:2006-05-07
修回日期:2006-06-09 基金项目:国家科技部十五科技攻关项目(2004BA810B); 北京市属市管高等学校“学术创新团队计划”项目、北京市教委科技发展计划项目(KM200610028012)。
作者简介:杨丽萍(1979-),女,山西人,硕士,研究方向为三维空间信息获取与表达;张爱武(1972-),
女,博士,教授,研究方向为三维数据可视化、逆向工程、图像图形、计算机视觉与模式识别。
图像的速度快,图像质量优秀。
1  激光数据的三维重建
由激光扫描仪获取的数据称为深度数据,因为这些数据包含了被扫描物的距离等几何信息。许多激光扫描仪的扫描过程都是逐行逐列的,因此,扫描得到的数据表现为一种矩阵的形式,即深度图像或距离图像。
2  三维建模前的预处理
2.1 数据压缩
近年来,激光三维扫描技术取得了巨大的发展,并广泛应用到各领域,使得对三维数据的处理和压缩逐渐成为研究热点。应用三维扫描技术获取的原始数据是一种点云数据,这种点云数据是一个空间数据的集合,数据点之间是离散的、散乱分布的,同时点云又是一个海量数据的集合,通常含有大量的数据点,存储量巨大,必须对原始点云数据进行压缩,才能在计算机上进行存储。如果基于原始数据进行模型的构建,其网格的数据量就相应的非常大,会给计算机的运算带来过大的压力。这些网格数据无法被快速地处理,交互式应用也就不能很好地实现。所以在保证模型表面局部细节的前提下,必
须进行一定的数据压缩,去除冗余数据,以减小计算的时间复杂度,同时也可以良好地设计模型的输出接口,方便其它系统对模型的接收。因此,数据的各种处理,如数据建模、模型显示等也必须针对压缩后的数据来处理。
2.2 平面分割
平面分割是将距离图像分割成若干互不相交的子区域,
2006年8月系统仿真学报                                          Aug., 2006
且每一区域可拟合成一个多项式曲面。可采用点的局部平面拟合来实现平面分割,同时将处于同一平面上的三角网格用平面片来描述,也可以压缩数据量。算法如下:首先对深度图像中的每一个点做一个局部的平面拟合,拟合的目的是为了求出该点的法向量,同时抛弃那些拟合不好的点。然后进入归并阶段,引入同向性和共面性两个相似性度量,通过对当前点和其领域点进行相似性判断,选择是否执行归并操作。当依次遍历完所有的点并做完归并操作后,得到了一组点的集合,每个集合上的点都处于相同的平面,就实现了平面分割。
3  三维建模
主要使用三维可视化类库VTK进行建模,分别采用不同的建模算法,如Delaunay三角化建模、轮廓线
建模、MarchingCubes建模。比较了各种建模的效果,Delaunay三角化建模采用多边形来对物体的表面进行拟合,这是最常用的一种方法,由于空间任意三点总能到通过它们的平面,因此,经常被选用的多边形是三角形。计算量也比较小,但是忽略了物体内部的信息,这是它的一个缺点。轮廓线建模是较早提出根据体数据绘制三维图形的一个算法。它是在二维数据切片(DataSlice)中逐一提取闭合的等值线,然后将相邻切片的等值线相连接,形成曲面网格逼近等值表面。所以这是一个基于面的体视化算法,它依据物体的空间顺序遍历体数据,对每个数据切片,定义一个阈值,出与阈值相对应的等值闭合曲线,这个过程对相邻切片而言是独立的。这种方法比较简单,但是有很大的实用性,在很多领域都有应用。MarchingCubes建模采用空间分解的方法,对空间体元进行不断的切割处理,最后得到一个由规则体构成的非规则复杂物体的近似。这种方法包括有物体的内在信息,从而实现体数据的表达。
3.1 三角化建模
3.1.1 构造表面格网
采用三维可视化类库VTK中的vtkDelaunay3D类实现表面格网的构造:
vtkPolyData*profile=vtkPolyData::New( );
profile->SetPoints(points); 这里points为vtkPoints点集
vtkDelaunay3D*del=vtkDelaunay3D::New( );
del->SetInput(profile);
del->BoundingTriangulationOn( );
del->SetTolerance(0.01);
del->SetAlpha(3);
当输入不同的数据点集时,以上程序建模后的效果如图1,图2。
图1  主楼入口三角化建模效果图图2  北区图书馆三角化建模效果图3.1.2 三角网消减
由于激光扫描设备精度高,所获得的数据集往往非常巨大。对人头进行扫描,所获得的三角形数量一般为30万个。对于这些复杂的网格模型,常用的商业三维图形处理软件无法处理和编辑这样大的数据量。现有计算机硬件也无法进行具有高度真实感的实时绘制,所以必须根据数据之间存在冗余的特点,对所得的三维网格进行压缩。本研究采用三维可视化类库VTK中的vtkDecimatePro类实现三角面片的消减。
3.1.3 三角网平滑
对于一般的表面描述方法构造的三维表面,总要通过一定的方法进行平滑处理,才能达到比较满意的效果。本研究采用三维可视化类库VTK中的vtkSmoothPolyDataFilter类和vtkPolyDataNormals类实现三角网片的平滑。
3.2 轮廓线建模
采用三维可视化类库VTK中的vtkContourFilter类实现轮廓线建模:
vtkGaussianSplatter*popSplatter=vtkGaussianSplatter::New( );
popSplatter->SetInput(profile);
popSplatter->SetSampleDimensions(50,50,50);
popSplatter->SetRadius(0.05);
popSplatter->ScalarWarpingOff( );
vtkContourFilter *popSurface = vtkContourFilter::New( );
popSurface->SetInput(popSplatter->GetOutput( ));
popSurface->SetValue(0,0.01);
建模后的效果如图3,图4:
图3  主楼入口轮廓线建模效果图图4  北区图书馆轮廓线建模效果图3.3MarchingCubes建模
3.3.1MC方法求等值面的算法流程
(1) 将三维离散规则数据场分层读入内存;
(2) 扫描两层数据,逐个构造体元,每个体元中的8个角点取自相邻的两层;
(3) 将体元每个角点的函数值与给定的等值面值C0作比较,根据比较结果,构造该体元的状态表;
(4) 根据状态表,得出将与等值面有交点的体元边界;
(5) 通过线性插值方法,计算出体元边界与等值面的交点;
(6) 利用中心差分方法,求出体元各角点处的法向,再通过线性插值方法,求出三角形各顶点处的法向;
(7) 根据各三角面片各顶点的坐标值及法向量绘制等值面图象。
3.3.2 MC方法需要解决的难题
(1) 确定包含等值面的体元
2006年8月杨丽萍, 等:基于VTK的室外场景三维重建Aug., 2006
由于每个体元有8个角点,每个角点可能有0,1两个状态,共有256个不同的状态。可以利用旋转对称性和倒置对称性将256种不同状态简化为如下14种(图5):
图5  包含等值面的体元状态图标志设计教案
可以用一个字节的空间构造一个体元状态表,状态表中的每一位表示体元中一个角点的0或1的状态。根据这一状态表,可以判断当前体元属于上述14种状态的哪一种,以及等值面将与哪些边相交。
(2) 求等值面与体元边界的交点
当三维离散数据场的密度较高,也就是说当每个体元很小时,可以假定函数值沿体元边界呈线性变化。因此,等值面与体元边界的交点可以通过该边两端点函数值的线性插值求出。求出了等值面与体元边界的交点以后,就可以将这些交点连接成三角形或多边性,形成等值面的一部分。
(3) 求等值面的法向
为了利用图形硬件显示等值面图象,必须给出形成等值面的各三角面片的法向。对于等值面上的每一点,其沿面的切线方向的梯度分量应该是零,因此,该点的梯度矢量的方向也就代表了等值面在该点的法向。直接计算三角面片的法向是费时的,而且,为了消除各三角面片之间明暗度的不连续变化,只要给出三角面片各顶点处的法向并采用哥罗德(Gouraud)模型绘制各三角面片就行了。MC方法采用中心差分计算出体元各角点处的梯度,然后再一次通过体元边界两端点处梯度的线性插值求出三角面片各顶点的梯度,也就是各顶点处的法向,从而实现面的绘制。中心差分方法求梯度的公式如下:
Grad_x=f (x i+1, y j, z k)-f (x i-1, y j, z k)/2△x
Grad_y=f (x i, y j+1, z k)-f (x i, y j-1, z k)/2△y
Grad_z=f (x i ,y j ,z k+1)-f (x i, y j, z k-1)/2△z
其中,f (x i, y j, z k)表示三维数据场中某数据点的函数值。3.3.3 MC算法程序实现
采用三维可视化类库VTK中的vtkMarchingCubes类实现建模:
vtkMergePoints *locator=vtkMergePoints::New( );
locator->SetDivisions(32,32,46);
locator->RetainCellListsOff( );
locator->SetNumberOfPointsPerBucket(2);
locator->AutomaticOff( );
vtkMarchingCubes *iso=vtkMarchingCubes::New( );
iso->SetInput(v16->GetOutput( ));
iso->SetValue(0,1150);
iso->ComputeGradientsOn( );
iso->ComputeScalarsOff( );
iso->SetLocator(locator);
建模后的效果如图6,图7:
图6主楼入口MarchingCubes  图7北区图书馆MarchingCubes  建模效果图建模效果图
4  特征线提取
特征线的提取是计算机视觉检测的基础,在图像处理和模式识别中有着极其重要的地位和作用,特别是在工业检测中应用广泛。本研究在所建三维场景模型的基础上,采用三维可视化类库VTK中的vtkFeatureEdges类实现了模型特征线的提取。主要程序段如下:
vtkFeatureEdges*fe=vtkFeatureEdges::New( );  //得到特征线
fe->SetInput(iso->GetOutput( ));
fe->SetBoundaryEdges(1);
fe->SetFeatureEdges(1);
fe->SetFeatureAngle(20);      //设置角度的阈值
fe->SetManifoldEdges(0);
模型提取特征线后的结果如图8,图9:
图8  主楼入口模型图9 北区图书馆模型
提取特征线后的效果图提取特征线后的效果图
5  结论
本文采用VC++6.0作为开发平台,引入三维可视化类库VTK,分别采用不同的建模方法,如Delaunay三角化建模、轮廓线建模、MarchingCubes建模,实现了激光扫描数据的建模。这些精确的三维模型
不仅能够提供场景可视化和虚拟漫游方面的功能,更可以满足数据的存档、测量和分析等更高层次的需求。这一类需求尤其适用于城市数字化、城市规划与管理、自然景观维护、三维识别、街道的空间信息分析、建筑结构调查等领域,有明确的应用前景和巨大的商业价值。
参考文献:
[1] P K Allen, A Troccoli, B Smith, S Murray, I Stamos, M Leordeanu.
New methods for digital modeling of historic sites [J]. IEEE Comp Graph and Applic (S0272-1716), 2003, 23(6): 32-41.
[2] Besl PJ, Mckay N D. A method for registration of 3-D shapes [J].
IEEE Transactions on Pattern Analysis and Machine Intelligence (S0162-8828), 1992, 14(2): 239-256.
2006年8月杨磊, 等:基于地球3D场景的飞行器运动轨道仿真Aug., 2006
可供用户输入飞行轨道坐标数据。支持多行输入。
(3) Color单选按钮
定义了红、黄、青三种选择性按钮。可供用户选择轨道显示颜。
(4) 东西半球单选按钮
可供用户选择东西半球两种观察角度。
(5) Information按钮
单击该命令按钮,可在MATLAB命令框内输出软件系统功能的说明文字。
(6) Close按钮
244uu关闭整个图形用户界面。
(7) Turn按钮
根据用户输入的方位角和仰角,旋转地球3D模型。
下面以Draw命令按钮为例说明控件对象的建立和定义。
MATLAB提供了用于建立控件对象的函数uicontrol,其调用格式为:
句柄对象=uicontrol(属性名1,属性值1,属性名2,属性值2,…)
本系统定义Draw命令按钮的属性主要包括Style属性、Position属性、String属性以及Callback属性。
定义Draw命令按钮的MATLAB程序代码如下:
labelStr='Draw';
DrawHndl=uicontrol( ...
'Style','pushbutton', ...
'Units','normalized', ...
撒旦诗篇
'Position',[0.75 0.88 0.21 0.05], ...
'String',labelStr, ...
'backgroundcolor',[0.8 0.7 0.9],...
'foregroundcolor',[0.4 0.4 0.4]);
set(DrawHndl,'callback','fu1');
其中,在set()函数中,fu1即为包含坐标变换模块和飞行轨道显示模块的M文件名。其他控件类型的定义与此类似,这里不再一一赘述。
5  软件系统的应用
下面以仿真实例说明软件系统的使用。首先运行图形用户界面的M文件,如图5所示。然后输入三组不同的飞行轨道矢量数据,单击Draw命令按钮,即可在图形界面左侧的地球3D场景中显示飞行运动轨道。同时,用户也可以输入方位角及仰角,通过单击Turn命令按钮,任意旋转地球3D模型,从多种角度观察飞行运动轨道。仿真结果如下图6所示。
图6  基于地球3D场景的飞行器运动轨道仿真
6  结论
随着我国航天事业的发展,飞行器运动的可视化仿真已逐渐成为重要的技术手段。本文针对当前的研究现状,对地球3D参考体以及地球引力场中飞行器运动轨迹的建模与显示进行了深入的研究与探讨。最后在MATLAB环境下设计和实现了基于地球3D场景的飞行器运动轨道仿真软件系统,获得了满意的可视化效果。该软件系统能够为飞行器建模与仿真、虚拟飞行试验、实时系统及计算机控制等飞行器设计各研究领域提供一个较高逼真度和可信度的三维可视化场景,具有一定的实用价值。
参考文献:
[1] 贾沛然, 陈克俊, 何力. 运程道学 [M]. 长沙: 国防科技大
学出版社, 1993.
[2] 施晓红, 周佳. 精通GUI图形界面编程 [M]. 北京: 北京大学出
版社, 2003.
[3] 刘卫国. MATLAB程序设计与应用 [M]. 北京: 高等教学出版社,
2002.
(上接第413页)
[3] Yokoya N, Levine M D. Range image segmentation based on
differential geometry: A hybrid approach [J]. IEEE Transactions on鼠齿盘
Pattern Analysis and Machine Intelligence (S0162-8828), 1989, 11(6):
643-649.
[4] J Hu, S You, U  Neumann. Approaches to Large-Scale Urban
Modeling [J]. IEEE Computer Graphics and Applications (S0272-1716), 2003, 23(6): 62-69. [5] P Allen, I Stamos, A Troccoli, etc. 3D Modeling of Historic Sites
Using Range and Image Data [J]. IEEE Int. Conf. on Robotics & Automation (S1050-4729), 2003, 1(1): 145-150.
[6] 唐泽圣, 等. 三维数据场可视化 [M]. 北京: 清华大学出版社,宋育英
项链的主人公
1999, 12(2).
[7] 梁荣华, 陈纯, 潘志庚, 等. 一种面向三维点集的快速表面重构算
法 [J]. 中国图象图形学报, 2003, 8A(1): 63-67.

本文发布于:2024-09-24 20:31:56,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/90891.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   建模   等值
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议