基于文件的机载激光雷达点云数据快速显示方法

文档序号:5844970阅读:225来源:国知局

专利名称::基于文件的机载激光雷达点云数据快速显示方法
技术领域
:本发明涉及机载激光雷达领域,尤其涉及基于文件的机载激光雷达点云数据快速显示方法。
背景技术
:激光雷达测量(LIDAR)是从20世纪中后期逐步发展起来的一门新兴技术,可以应用于地球科学的许多领域。20世纪90年代前后,随着GPS动态定位和高精度姿态测量等技术的成熟,集成LIDAR、GPS以及INS(惯性导航系统)的机载激光雷达系统研制成功,为我们获得高时空分辨率的地球空间信息提供了全新的技术手段。目前欧美等发达国家先后研制出了多套商业化的机载激光雷达系统。机载激光雷达系统通常包括一个单束窄带激光器和一个接收系统。激光器产生并向地面发射一束红外光脉冲,在地物上产生反射,并最终为接收器所接收。接收器准确地测量光脉冲从发射到被反射回的传播时间。鉴于光速已知,则激光传播的距离可以被精确的测量。结合从GPS得到的激光器的瞬时位置和从INS得到的激光器瞬时姿态,就可以准确地计算出每一个地面光斑的三维坐标。早期的激光器的发射频率只有每秒数次脉冲,发展到目前每秒钟可达15万次以上,产生的数据量非常大。机载激光雷达产生的空间数据称为"点云"。点云文件记录的是点的三维坐标,是地表模型的直接体现。为了方便硬件厂商、软件厂商以及用户之间进行数据交换和共享,美国摄影测量与遥感协会(ASPRS)下属的LIDAR委员会制定了LIDAR数据存储的标准格式——LAS格式。LAS格式经过一段时间的发展,目前最新的版本是2.0,实际应用中通常使用1.1版本。可视化是LIDAR点云数据分类、建筑物检测和重建的关键性基础工作之一。一个专业的处理人员通过观察点云文件来获得地表及地物的直观印象,并分析出有价值的信息,据此正确地判断分类、检测和重建的效果。同时,可视化也可以使研究的结果更加容易被人接受。近几十年来在地学领域中,学者们对大数据量的DEM、DSM和三维城市模型的可视化等内容进行了深入的探讨,发展出了一系列适合地学领域数据可视化应用的LoD(LevelofDetail)算法和三维目标的空间索引等算法。然而,单纯对点云数据进行可视化的研究却不多。由于点云数据量较大,传统的简化方法不适合简化点云数据,以及计算机速度和内存限制等各方面原因,大量LIDAR点云数据的可视化问题仍旧没有得到很好的解决。现有的机载激光雷达点云数据处理商业软件在点云绘制显示实现上有两个缺陷1.数据量的限制现有的机载激光雷达点云数据处理商业软件的点云绘制方案均基于内存,必须首先通过文件读取操作将点云文件载入内存,速度慢且存在数据量的限制。随着激光硬件设备的迅速发展,当前的商业机载激光雷达系统脉冲频率可以达到150kHz以上。如瑞士Leica公司最新的商业系统ALS60,最高脉冲频率可以达到160kHz。假设在实际作业中,机载激光雷达系统以100kHz的频率工作,数据以标准LAS1.1格式存储,则一段15分钟长的航带所产生的点云文件最大可达2.52Gbyte。现有的商业处理软件无法直接浏览这样的大型点云文件,即使在高配置的计算机环境下,也必须耗费大量的物理内存空间和较长的文件读取时间。2.绘制策略的缺陷现有的机载激光雷达点云数据处理商业软件中点云的绘制策略均为整体绘制,一次刷新需要对所有的点进行处理,运算量非常大,大量的CPU计算资源被占用,导致软件长时间无法响应其他消息。目前,有科研人员针对机载激光雷达点云文件的快速绘制进行研究。大多是从点云的地理坐标出发,利用视场裁切的方法减少一次绘制时提交给计算机的数据量。但是这种方法必须首先对点云按照地理坐标建立索引,比如顺序四叉树等等。索引建立的过程往往也会耗费大量的读取和计算时间,仍然不能满足快速绘制的需求。
发明内容本发明的目的在于现有的机载激光雷达点云数据处理商业软件在绘制大型点云文件上的缺陷,提供一种Win32环境下直接基于机载激光雷达点云文件的快速显示方法。本发明的技术方案采用计算机实现快速显示,包括以下步骤,步骤l,使用内存映射机载激光雷达点云数据的点云文件;步骤2,对点云文件中的点云数据分段,即将点云数据平均分为包含相同点数的若干段落,并对各段落内的点分配序号;步骤3,进行点云全景初始绘制,实现方式为对步骤2所分得各段落的一个相同某序号点批量绘制;步骤4,利用计算机CPU空闲时间进行点云渐进式细化绘制,所述点云渐进式细化绘制被分为若干次细化绘制操作实现,每次细化绘制操作是对步骤2所分得各段落中的相同某序号点批量绘制,各次细化绘制操作中点的序号不同。而且,步骤3中,显示步骤2所分得各段落的第一个相同序号点。本发明提供了一种直接基于机载激光雷达点云文件的渐进细化式快速显示方法。该方法能够在没有任何预处理的情况下,可以在普通配置的计算机环境下进行巨型点云文件的快速绘制,为点云数据的分析和处理提供方便的浏览操作。本发明所提供技术方案尤其适合用于Win32环境下。图1是Win32系统内存映射文件示意图;图2是点云数据分段的方式示意图;图3是本发明的点云渐进式细化绘制的示意图;图4是本发明实施例的流程具体实施例方式下文将参照附图和实施例对本发明的具体实施方案进行更详细的说明(1)使用内存映射点云文件;机载激光雷达点云数据以文件形式存放,称为点云文件。本发明实施例以W頂32系统下具体实现为例,说明用计算机的内存映射存储点云文件。W頂32系统引入了面向进程的独立虚拟地址,并以页(page)为基本单位实现虚拟地址与RAM地址的对应。与虚拟内存一样,内存映射文件可以用来保留一个地址空间的区域,并将物理存储器提交给该区域。它们之间的差别是,内存映射文件的物理存储器来自一个已经位于磁盘上的文件,而不是系统的页文件。一旦该文件被映射,就可以将整个文件像已经加载的内存的数据一样直接通过指针访问。使用内存映射文件来访问磁盘上的数据文件可以不必对文件执行VO操作,并且可以不必对文件内容进行缓存。因此在处理大文件处理时,内存映射文件将表示出卓越的优势。为了便于本领域技术人员理解参考,提供了现有Win32系统内存映射文件示意图,参见附图1:计算机硬盘上的文件经过内存映射文件的过程,映射到计算机的物理内存,物理内存中存放有从文件映射到内存中的数据。两个不同的进程1和2的虚拟内存中分别执行文件的不同操作(例如显示),记为文件操作1、2。可见利用内存映射文件技术,可以同时在不同的进程中对文件同一块或不同块数据进行处理。(2)点云文件分段ASPRS定义的LAS1.1格式文件的结构参见表1:表l<table>tableseeoriginaldocumentpage5</column></row><table>可见其中分为3个部份a.LAS格式文件头b.LAS格式可变长记录c.点云数据其中点云数据部分每个回波点以一个单独的数据结构存储,按照回波的次序依次排列,如表中"第一个点数据"、"第二个点数据"..."最后一个点数据"。点云文件映射到内存后,为了后续的渐进式绘制,将点云数据平均分为若干段落,每个段落分配相同数目的点数据。为段落中的点数据分配序号,可以方便准确地执行具体绘制任务,可以根据点云文件中的顺序对段落中的点数据依次编号。本发明实施时,每进行一次绘制,都是绘制各个段落中相同序号的一个点。分段操作并没有将文件进行真正意义上的分割,只是计算出每个段落的起止位置。为了使每次绘制时提交给CPU的点数量不至于过大,具体实施可以根据CPU性能预先设置一个最大单次绘制点数maX_draW_COimt,分段时则可令文件的分段数为file—segmen1^count,其值等于maX-drawjount。LAS1.1格式文件的文件头中提供了文件包含点云总数,假设为total_point_count,另设每个段落的长度为segment_point_count,贝U:ftotoaljriit—cxinlAfflK一dra^jmitif《max一ctcaw—count<totcalpoint—rount)totaljrirt—courtif(iax_draw_oouiit>=totoal_point_oount》点云数据分段的示意图参见图2:图中一个矩形代表Las格式的点云文件中的一个点数据;图中"segment—point—count"代表每个段落中的点的个数,即段落的长度;图中"fina^segment—point—count"代表最后一个段落中的点的个数;图中"total_point_count"代表点云文件包含点的总数。最后一段的实际长度可能小于max_draw_count,应该为final_segment_point_count=totoal_point_count%max_draw_coimt其中,公式中%表示取余计算。(3)点云全景初始绘制当用户提出查看点云的请求时,计算机系统会接收到刷新消息,开始响应请求进行绘制。因为点云数据量庞大,所以为了得到良好的视觉效果,本发明提出先对机载激光雷达点云数据的全景进行描绘,这种提供全景的绘制只是绘制步骤2所分得各段落的一个相同某序号点。实施例中,点云全景初始绘制只绘制每个段落的第l个点。具体实施时,也可以选择其它序号的点,例如每个段落的第2个点。考虑到最后一个段落的实际长度可能小于其它段落,绘制每个段落的第1个点属于最优选方案。绘制时需要获得点的三维坐标(X,Y,Z),LAS1.1格式单个点数据存储结构参见表2:表2项目数据类型x坐标长整型(long)Y坐标长整型(long)Z坐标长整型(long)<table>tableseeoriginaldocumentpage7</column></row><table>按照LAS1.1格式标准,"回波次数"、"回波序号"、"扫描方向标记"、"航带边缘标记"四个属性共占用一个字节(BYTE),其中"回波次数"占用1、2、3三个bit位;"回波序号"占用4、5、6三个bit位;"扫描方向标记"占用第7个bit位;"航带边缘标记"占用第8个bit位。表格中标记了"(l.l)"字样的项目为1.l格式标准中新增内容。可见点的坐标信息(X,Y,Z)存储在每个点结构的头部,每个点结构的长度point—byte—size与文件具体格式有关,LAS1.1格式拥有两种具体的点结构格式,称为点结构格式1和点结构格式0。点结构格式1中point_byte_size为28byte,点结构格式0中point_byte—size为20byte,两者的差别是点结构格式1在每一个点结构的末尾带有一个double型的GPS时间信息。但是在同一个文件中,点结构格式是固定的,因此point—byte—size的值也是固定的。(4)利用计算机空闲时间进行点云渐进式细化绘制上一步的绘制能够很好的展现点云文件的全景效果。然后在计算机系统空闲时,进行实质性的细化绘制。所谓计算机空闲时间,具体就是指计算机CPU空闲时间。检查Windows消息队列,如果没有发现尚未被处理的消息,表明计算机CPU处于空闲状态,如果此时点云的绘制操作没有结束,则进入点云渐进式细化绘制过程。本步骤是一个循环渐进的过程,当用户向系统发送其他消息时,计算机不再空闲,绘制过程即刻停止,因此并不影响绘制外的其他操作。绘制过程在系统空闲时再次启动,直至绘制完成。点云全景初始绘制中已经绘制了的点,点云渐进式细化绘制无需重复绘制;点云渐进式细化绘制的每次细化绘制操作时选择不同序号的点,可以逐渐令点云中显示信息渐进丰富。因此本发明实施例采用了最简单的实施方案,参见图3:点云全景初始绘制时绘制各个段落的第l个点,点云渐进式细化绘制时依次绘制各个段落的其余点。具体来说,第1次细化绘制操作绘制各个段落的第2个点,第2次细化绘制操作绘制各个段落的第3个点…(5)当刷新时,重复步骤(3)和步骤(4)当用户需要重新绘制时(如通过刷新显示窗口操作要求重新绘制),重新执行步骤(3)和步骤(4)即可。实施例的流程见附图4:首先内存映射点云文件,然后根据最大单次绘制点数计算点云文件的分段长度,当计算机系统接收到消息且是要求刷新显示点云的消息时开始绘制操作。若不是刷新消息,则由用户响应消息,本发明不做处理。进行绘制操作时,设置一个变量draW_Step_COunt,用来记录绘制的次数,完成一次绘制则变量计数增加l。初始draW_Step_COunt值为0,通过批量绘制各个分段的第一个点实现点云全景初始绘制操作后,draw_step_count的值+1。然后开始点云渐进式细化绘制。判断计算机系统是否空闲,空闲则判断绘制是否完毕。如未完毕,根据draw—st印—count值绘制相应序号的点。比如进行点云渐进式细化绘制的第一次细化绘制操作时,draW_Step_COimt的值应为l,将指针移动到第一个段落的第2个点的起始位置并批量绘制各个段落的第2个点,第一次细化绘制操作完成,draw—st印—count的值增加1。依此类推,每当系统空闲且绘制未完毕时,执行一次细化绘制操作,绘制的起点是第一个文件分段的第draw_step_count+l个点,然后将draw_step_count的值增加1。绘制完成的标志是draw_step_count的值与skip_point_count的值相等,表明所有的点均已绘制。此时绘制过程结束,不再响应系统空闲的消息,返回接受消息步骤,等待下一次刷新消息。若出现刷新消息,将draW_Step_COimt的值设为O,重复执行绘制即可。需要指出的是为了加快绘制速度,本发明并非是对每一个点单独进行一次绘制,而是将需要绘制的多个点(即每个段落中的相同某序号点)一起批量绘制,例如实施例的点云全景初始绘制就是将所有段落的第1个点一起绘制,点云渐进式细化绘制时的第1次细化绘制操作就是将所有段落的第2个点一起绘制。利用现有的专业图形API(如OpenGL)可以实现批量绘制。批量绘制指令需要知道待绘点数据的起始地址、跳跃到下一个待绘点数据的偏移量以及待绘点数。在具体实施绘制时,首先将通过内存映射点云文件得到的指针移动到待绘点中第一个点结构的起始位置。待绘点中第一个点即第一个分段中指定某序号点,实施例中,点云全景初始绘制时就是第一个分段的第1个点,点云渐进式细化绘制中的第1次细化绘制操作时就是第一个分段的第2个点…由于Las格式的点云文件中每一个点结构大小固定(如表2),而且每个分段中的点个数已知,因此本发明可以计算出跳跃到下一个待绘点的起始位置的偏移量skip—byte—count,计算公式为skip—byte—co皿t=point—byte—sizeXsegment—point—co皿t待绘点数可以简单设置为max—draw—count。如果最后一个分段中的点数小于segment—point—co皿t,那么需要判断指针的跳跃是否超出了范围,如超出,绘制中止。8权利要求一种基于文件的机载激光雷达点云数据快速显示方法,其特征在于采用计算机实现快速显示,包括以下步骤,步骤1,使用内存映射机载激光雷达点云数据的点云文件;步骤2,对点云文件中的点云数据分段,即将点云数据平均分为包含相同点数的若干段落,并对各段落内的点分配序号;步骤3,进行点云全景初始绘制,实现方式为对步骤2所分得各段落的一个相同某序号点批量绘制;步骤4,利用计算机CPU空闲时间进行点云渐进式细化绘制,所述点云渐进式细化绘制被分为若干次细化绘制操作实现,每次细化绘制操作是对步骤2所分得各段落中的相同某序号点批量绘制,各次细化绘制操作中点的序号不同。2.根据权利要求1机载激光雷达点云数据快速显示方法,其特征在于步骤3中,显示步骤2所分得各段落的第一个相同序号点。全文摘要本发明提供一种基于文件的机载激光雷达点云数据快速显示方法,包括使用内存映射存储机载激光雷达点云数据的点云文件;对点云文件中的点云数据分段,即将点云数据平均分为包含相同点数的若干段落,并对各段落内的点分配序号;进行点云全景初始绘制,实现方式为对所分得各段落的一个相同某序号点批量绘制;利用计算机CPU空闲时间进行点云渐进式细化绘制。基于文件的渐进式细化绘制方法,可以避免耗费大量的物理内存空间和较长的文件读取时间。可以在性能一般的计算机环境下实现机载激光雷达点云数据的快速绘制。文档编号G01S7/51GK101702023SQ20091027264公开日2010年5月5日申请日期2009年11月3日优先权日2009年11月3日发明者姚春静,李云帆,阳峰,马洪超申请人:武汉大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1