[发明专利]一种基于地面激光雷达三维扫描的树木枝干参数提取方法有效
申请号: | 201310136260.7 | 申请日: | 2013-04-18 |
公开(公告)号: | CN103258345A | 公开(公告)日: | 2013-08-21 |
发明(设计)人: | 张怀清;高士增;刘闽;鞠洪波;蒋娴 | 申请(专利权)人: | 中国林业科学研究院资源信息研究所 |
主分类号: | G06T17/00 | 分类号: | G06T17/00;G01B11/00 |
代理公司: | 北京市商泰律师事务所 11255 | 代理人: | 毛燕生 |
地址: | 100091*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 地面 激光雷达 三维 扫描 树木 枝干 参数 提取 方法 | ||
1.一种基于地面激光雷达三维扫描的树木枝干参数提取方法,含有以下步骤,利用地面三维激光扫描仪为数据获取平台,扫描得到树木枝干点云数据,将树木枝干点云数据分割成不同的部分,沿树高方向分层;利用凸包算法提取树木不同高度的点云等值线,在相邻等值线间使用三角网生长算法构建树木枝干三角网;合并树木不同部分的三角网格,构建出树木枝干的整体三角网模型;使用射线碰撞检测技术提取树木枝干参数,与实际测量值对比误差在5%以内。
2.根据权利要求1所述的一种基于地面激光雷达三维扫描的树木枝干参数提取方法,其特征在于含有以下步骤,
步骤1、点云数据获取步骤,
使用地面三维激光扫描仪对树木进行扫描的步骤如下:
(1)测站设计步骤,
根据样木的位置、大小形态和主要测树因子,设计各扫描站和控制点的位置;要求每站之间至少有三个控制点重合,使点云数据能够统一到仪器坐标系统下;
(2)全局扫描步骤,
在选定的测站上架设扫描仪进行扫描,为提高扫描速度,全局扫描可采用低精度扫描;扫描仪根据软件环境中设置的参数(行、列数和扫描的分辨率等)自动进行扫描;
(3)局部扫描步骤,
每测站完成全局扫描后,均需要对包括所有控制点的单株树木区域进行精细扫描;扫描前,应根据需要的点的数量设置合适的扫描精度;
通过以上3步就完成了一个测站上的样木数据采集,得到了一幅点云图;需要从不同的侧面采集2~3个测站的数据用来构建整个树木三维模型;
步骤2、点云数据分割步骤,
扫描完成后,对每株样木所有站点的点云数据进行配准,手动删除样木周围物体的扫描点,分离出样木的点云数据,并去除噪声;通过坐标变换将点云数据的坐标原点设置为树木的根部,且树木的主干大致平行于Y轴,然后依据树木的分枝特征,将树木不同部位的点云数据分别导出,编号后合并,树木枝干的分割分为第一枝干、第二枝干、第三枝干、第四枝干、第五枝干、第六枝干等等;
步骤3、点云数据的等值线提取步骤,
3.1提取等值线折线步骤,
采用凸包算法提取每层点云数据的等值线折线;每层数据中,假设同一编号枝干的点集:P={P0,…,Pn-1},n为点的数量,其凸包是一个最小的凸多边形Q,并且满足P中的所有点或者在Q上,或者在Q的内部;使用不同编号枝干上的点云构建不同的凸包,凸包的数量等于点云层中枝条的数量,凸包算法的过程如下:
计算点集最左边的点为凸包的顶点的起点P0;
遍历P中其他所有点,计算有向向量P0Pi;
如果P中的其他点全部在向量P0Pi的同一侧,则Pi为凸包的下一个顶点;
此过程执行后,按照任意两点的顺序把点按极角自动顺时针或逆时针排序;而左侧或右侧的判断则可以用矢量点积性质来实现;
3.2内部离散点的归类步骤,
QiQi+1是当前折线上连接凸包中相邻两点的一条线段,Pj为凸包内部尚未加入到折线上的一个离散点;对于点Pj,应该归类于其最近的折线线段,并且该点在线段的投影Pj0应该在线段上;连接QiPj和Qi+1Pj两条线段,组成三角形QiQi+1Pj;
可以用角度判别法进行判断投影点Pj0是否在线段QiQi+1上;计算出三角形QiQi+1Pj的两个内角α和β,依据平面几何的知识,可以得到以下的判别条件:
假如α和β中有一个角度大于90°,那么投影点Pj0在线段QiQi+1外;
假如α和β中有一个角度等于90°,那么投影点Pj0位于Qi或Qi+1点上;
假如α和β全部小于90°,那么投影点Pj0在QiQi+1内部;
对每个尚未归类的点Pj,计算该点到当前等值线各线段的投影点,利用上述方法判断投影点是否在其对应的线段上,然后利用该点到各线段的距离,对Pj归类;每个待定点只能归类于α和β均小于90°并且距离最近的线段;
采用上述方法对当前的等值线和待定点进行归类后,对于凸包折线的每条线段,重新计算其和归类到该线段的待定点的凸包,由此得到局部区域的凸包;然后将所有的局部凸包在原凸包折线的线段处断开,得到不闭合的折线段;按顺序将前后折线段进行连接,即得到下一级折线;
运用此迭代的凸包算法方法可以保证每次迭代完成后的相邻层之间的等值线不会产生边缘交叉的问题;第一次调用凸包算法得到的是一个凸多边形,对此凸多边形继续使用凸包算法得到的局部区域也是凸多边形,但是合并一系列的局部凸多边形之后得到的等值线却是凹多边形;对凹多边形在次进行剩余点的归类和调用凸包算法,得到的仍旧是凹多边形;除第一次调用凸包算法的到的是凸多边形,以后每次迭代后的合并结果都是凹多边形;调用凸包算法完成后,剩下的每个待定点和当前折线的拓扑关系是一致的,在折线的内部或者外部;奇数次迭代之后的待定点都在折线的外部;偶数次迭代之后的待定点都在折线的内部;
步骤4、构建树木枝干三角网步骤,
4.1Delaunay三角网生长算法步骤,
采用扩张的生长算法,构建Delaunay三角网;首先找出点集中最近两点连成一条边,按照Delaunay构网原则找出第三点连接成初始三角形,再以该三角形的每一条边为基线扩展连接相邻离散点,直到所有离散点都包括在三角网中;根据提取的相邻等值线的特点,设计算法步骤如下:
(1)按照等值线中点的连接顺序,排列等值线中的所有点;
(2)连接第一条等值线中的前两个点P0P1作为初始基线;
(3)找出距离初始基线中点最近且不和初始基线在同一条直线上的点Px作为初始三角形的第三个顶点,连接成初始三角形P0P1Px;
(4)以初始三角形中的一条新边P1Px为新的初始基线,由直角三角形的性质可以得出,
在P1Px的右侧距离P1Px的中点Pm最近的点只能是P3或Px+1,比较P3Pm和Px+1Pm的大小,取距离较小的点为下一点;
(5)重复第4步,直到两条等值线上的点全部包括在三角网中;
对于树木同一枝干中的相邻等值线,迭代调用以上算法,构建出其Delaunay三角网;
4.2模型文件输出步骤,
使用.X文件存储树木枝干Delaunay三角网模型,不仅可以存储模型的基本数据,例如顶点坐标、颜色、法向量、纹理信息等,而且.x文件自身具有很大的灵活性;对于树木不同部分的枝干,可以在.X文件中使用框架(Frame)对其进行组织和管理;框架仅仅是一个外壳,在框架中通常需要包含具体的网格和一个框架变化矩阵;其中框架变换矩阵用于指定该框架包含的部分在整个模型中的初始位置;
通过XNA素材管线可以很方便的加载.x文件网格模型,进而在图形程序中使用;另外,利用射线碰撞拾取技术可以拾取到模型中任意位置的三角形,有利于树木形态结构参数的提取;
步骤5、树木枝干参数提取步骤,
通过三维场景中的射线碰撞检测技术可以有效提取树木枝干参数,其原理是获取屏幕坐标并转化成图形系统的视口坐标,给该点加上不同的深度,计算拾取射线,并将射线和模型变换到同一坐标系中,判断射线是否和模型碰撞;如果碰撞,计算出射线和模型中三角形的交点;
5.1定义观察射线步骤,
在三维矢量空间中,观察射线用以表示方向,由两个矢量定义:一个表示起点,另一个表示方向,射线的方程可以写成:
P(t)=P0+ut (1)
式中,P0是射线的起点位置,u是用来描述射线方向的向量,可以用两个点的矢量差来表示;
使用取景、投影变换将三维空间内的Vector3类型顶点坐标进行坐标变换后,结果还是一个Vector3类型数据,其中X、Y成员存储顶点在屏幕上的位置;另外,用Z成员存储了顶点的深度值,该深度值在[0,1]内,0表示顶点在近裁剪面,1表示顶点在远裁剪面,这些数据存储在深度缓冲区中;
因此,在屏幕坐标系下,观察射线两个顶点的三维坐标值可以表示为为:P0(x1,x2,0)和P1(x1,x2,1),那么,观察射线的方向u=P0-P1;
5.2屏幕坐标的转换步骤,
碰撞检测首先要将观察射线从当前的屏幕坐标系转换到世界坐标系;通过视口转换矩阵将世界坐标系中的三维坐标点转换成屏幕坐标点,
假设投影窗口上的点P′=(Px′,Py′,Pz′),通过视口变换产生屏幕上的点S=(Sx,Sy),即:
当视口的起点为(0,0)时,得到:Px′=2Sx/W-1,Py′=-2Sy/H+1;通过以上变换将P0、P1转换到世界坐标系下,进而得到世界坐标系下的观察射线;
5.3树木参数计算步骤,
获取观察射线后,即可遍历树木模型中的所有枝干,找出与射线相交的枝干,然后遍历此枝干中的三角形,计算观察射线与三角形所在平面的交点,最后判断该交点是否在三角形区域内,从而获取所有拾取到的三角形以及准确的交点,得到树木的各种参数;
步骤6、实例验证及分析步骤,
选取一株3年生落叶后的马褂木,使用FARO Laser Scanner Photon120三维激光扫描仪按照以上数据获取方法对树木进行扫描;扫描完成后,使用扫描软件配准样木所有站点的点云数据,删除样木周围物体的扫描点,分离出样木的点云数据,并去除噪声;
导出点云数据时,通过坐标变换将点云数据的坐标原点设置为树木的根部,且树木的主干大致平行于Y轴,然后依据树木的分枝特征,将树木不同部位的点云数据分别导出,编号后合并;使用集成开发工具Visual Studio.Net,运用C#语言结合多媒体编程接口DirectX,编程实现树木枝干Delaunay三角网模型的提取,使用射线碰撞检测技术提取树木枝干参数;
6.1等值线模型构建步骤,
样木树高为2.26m,取dz=10mm对点云分层,运用以上等值线提取方法,提取每层点云数据中不同枝干的等值线,取dz=100mm,提取树木冠型等值线模型;
在没有先验等值线知识和建立点云对象模型的条件下,利用迭代的凸包算法可以有效的对离散点数据进行连接,形成点云的等值线模型;模型中相邻层两条等值线之间不会产生边缘交叉的问题;
6.2Delaunay三角网模型步骤,
以提取的等值线模型为基础,在模型中相邻两条等值线间采用三角网生长算法提取相邻等值线间的Delaunay三角网。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国林业科学研究院资源信息研究所,未经中国林业科学研究院资源信息研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310136260.7/1.html,转载请声明来源钻瓜专利网。