中科北纬(北京)科技有限公司

010-5289 6043

中科北纬(北京)科技有限公司

技术分享

Technology and information

技术与资讯

网站首页 > 技术与资讯 > 技术分享

密集影像匹配DSM地面分类

2020-08-08 09:09:23 886 发布:中科北纬
        随着无人机、简易空三软件如Pix4D、PhotoScan、DroneDeploy的大量普及,我们往往可以获取到基于密集影像匹配的高质量、高精度的DSM,专业摄影测量软件如PHOTOMOD软件也具有逐像素匹配DSM的能力,但是我们会发现该DSM似乎只能用于正射纠正,或者是真正射纠正,往往无法带来其他更进一步的应用。在这里,我们分享一个办法,基于Lidar软件LP360,对该高密度的DSM数据进行地面分类,得到高质量的DEM,更进一步的用于我们的生产以及行业应用。  

        那么高密度的点云,我们是怎么定义这个高密度的。通常意义下当点云密度超过25pts/㎡时(即每平方米含25个点,也就意味着其标准点位距离NPS小于等于20cm),对于基于TIN的方式进行地面分类的算法都会是一个挑战,由于其三角代码要占用大量的内存空间。现在很多滤波软件,包括雷达滤波软件在内,进行地面分类采用的都是自适应TIN地面滤波的算法或者是其变种算法。对于采用该算法的软件(包括LP360软件),对密集点云进行分类时,都容易产生内存错误或分类结果不当的情况。因为这些地面分类算法在设计时,8pts/㎡的点云密度已经被认为是很高的密度了。

示例数据说明:

        这里,我们基于某矿场的无人机航飞影像, 利用PhotoScan Pro生成的密集点云作为示例数据。首先我们可以在Lidar软件LP360中很方便的使用点云统计提取器快速的检查点云的密度,图1显示的是在点云任务中的设置,用以查看点云数量和点云密度信息。

图1:平面统计点云任务

        图2可以看到获取的点密度为186pts/㎡,同时能注意到点云统计提取功能可以很方便的提供标称点间距,如下我们能看到该数据的点间距约为7.3cm。

图2:点云提取器中的点密度显示

算法说明:
LP360软件中的自适应TIN地面分类是一个迭代的算法,基本流程如下:
1.数据会依据用户设置的种子值大小被划分成虚拟格网,该种子值需尽可能选择的足够小,但是也不能太小,需要将一个非地面的结构(例如建筑物)全部的包含在一个单元格中(我们将会在下一步看到为什么会这么设置)。
2.在每个单元格中,满足用户定义的滤波参数(噪声点需要提前滤除)的最低点会被标记为一个地面点/种子点。这样的话,我们需要保证一个非地面的物体,例如建筑物完全位于在某一个单元格内,这样的话软件选取的最低点会就会位于地面上,而不是屋顶上。不然会在随后的处理步骤中会引起点云的错误分类。
注意:如果数据是多次回波的Lidar数据,我们会将过滤的参数设置为最后一次回波,而不是所有回波,因为只有最后一次回波才会是地面点。
3.利用当前的地面点,构建一个不规则三角网。注意,在这一步中,这些地面点仅来自于上一步生成的种子点。
4.满足预定义过滤参数的点将在当前的TIN中被逐个验证,以确认是否将点分类成地面点。
5.TIN会基于新加进来的地面点进行重构,并且在处理过程中重复该操作,直至达到停止条件:达到设置的迭代最大值,或者是上一次迭代时添加点云的数量达到设定的最小值。
        当选择一个较大的种子点间距时,在处理密集点云时,会导致占用大量的内存,同时速度会相当的慢。但是当数据集中有较大的建筑物时,我们又不得不将种子点间距设置的大一些。例如,在测区中有一个方形的建筑物,边长测量为100m,种子点的尺寸必须要比100m设置的稍微大一些,这样才能保证在算法的第一步中,不会将建筑物的屋顶点作为种子点(即应保证在每一个单元格中,都能看到地面点)。算法是要求将3×3大小的单元格作为一个整体构建一个具有代表性的TIN。正如我们所看到的,对于大的建筑物或者是高密度的云层,这将会包含很多点。
        外方对LP360地面分类算法在进行完善,以适应于这种密集的点云。但是当前情况下,我们可以利用数据抽稀、生成种子点,基于生成的种子点进行地面分类的方法来解决这个现有的问题。


处理步骤概要说明:
        密集影像匹配得到的点云数据与Lidar数据不同,这些数据包含有大量的噪声点。这些噪声点会导致种子点的选取错误,这就必然会导致TIN高程值高于或者低于真实的地表面,从而生成错误的高程信息。综上,在LP360软件中,按照如下的流程进行处理:
1.对低噪声点进行过滤,防止他们被分类成种子点,或者是地面点;
2. 将密集影像匹配点进行抽稀,并将抽稀的结果临时移至一个未使用的图层;
3.使用合适的种子点设置,在这个抽稀的数据集上进行地面分类,即获取种子点;
4.将抽稀数据集中剩余的点合并至整个点云中;
5.设置种子点尺寸为正常值,之后使用的已存在的种子点(即基于抽稀结果得到的地面点),对密集DSM数据重新执行地面分类。
        听起来有点复杂,不过实际上也确实有点复杂。现在我们可以在LP360中创建一个包含上述点云任务的宏命令,来完成上述操作,以后就可以使用该宏命令用于密集点云的处理。


处理步骤详细说明:
1. 噪声点滤除
        LP360软件有一套比较优异的自动化工具——点云任务命令,其中有一组点云任务用于过滤低的噪声点和孤立点。我不建议将该操作合并到地面分类宏命令中,因为该操作完成后,建议人工做下质量控制。如果要说自适应TIN过滤的算法有一个致命的缺陷,那么就是噪声点了,因为低的噪声点会造成错误种子点的生成。密集影像匹配点云中的低噪声点的示例,如图3:

图3:密集影像匹配点云中的低噪声点


        通常是运行“低/孤立点”点云任务,即可将噪声点分离出来。图4显示的是同一块区域,自动分类低噪声点的效果。任务完成后,可通过在剖面窗口中滚动视图区域快速的进行人工质量检查。

图4:对低噪声点分类

2. 创建宏命令

        在点云任务模板中选择 “Macro”(宏),用于创建一个空白的宏点云任务(图5),输入宏命令名称,也可以对其添加描述信息。

图5:创建宏命令框架

3. 抽稀点云

添加到宏命令中的第一个步骤是“按统计分类”点云任务,用于对数据集进行抽稀,进行用于地面分类。参数建议如下:
        设置格网大小为1m,设置source Point(源点)为图层0(假设密集影像匹配的点或者是Lidar点,其“未分类”点云放置在了图层0中),设置目标图层为25或者是基于LAS点云记录格式的任意有效的且未使用的图层。注意:在PDRF6或以下的Las数据格式中,不要使用超过31的图层。因为在这个数据格式中只有Class0-Class31。对于地面滤波来说,8pts/㎡的点云密度是比较合适的。我们需要确保我们从最低点中获取种子点,因次抽稀的参数设置如图6,单元格采样中选择的是获取最低点,1㎡单元格中附加的随机点数为7个。目标图层我们设置为25。

图6:统计分类设置

4. 基于抽稀点云生成种子点
        宏命令里面的第二步是对抽稀的点云进行地面分类,因此添加自适应TIN地面过滤作为宏命令中的第二个步骤。确定设置过滤源为图层25(抽稀后的点云),目标图层为2(图层2通常作为地面点图层)。选择“Generate Seed Points”(生成种子点)选项,设置种子点间距为正常的数值(大于建筑物短边边长)。这里可设置一个较低的迭代数,因为在这一步,我们只是提取种子点。建议设置如图7所设。注意此处选择的种子点间距是15m,也就意味着我认为该区域房屋的短边大概是14m或更小。
        注意:如果使用的是密集匹配的数据,确定选择所有的回波组合,因为不同的密集匹配软件会对点云设置不同的回波数值(密集匹配的点云没有多次回波,按理说软件供应商应将所有的点设置为回波1的第一次回波)。

图7:抽稀后的地面点云分类设置

5. 将剩余点合并至Class0

        在这个步骤运行后,我们将会得到一个简化的地面点(或者是地面种子点)。在Class25中仍有大量的点,这些点没有被分类至地面点,是因为它们不符合所设置的地面过滤参数,或者是在算法的4次迭代中没有被计算到。接下来,我们将添加Basic Filter(基础过滤)点云任务到宏命令中,以将Class25中的点移至原始图层中(通常是Class0)。


6. 基于生成的种子点分类

        宏命令中的最后一步是基于使用上一步生成的抽稀地面点作为“Seed”(种子)点,进行全密度点云的地面分类。添加自适应TIN地面分类点云任务作为宏命令中的第四步,参数设置如下:设置Class0为源目标点,在种子策略中,设置为“Use Existing Seed Points Only”(只使用已存在的种子点)。根据地面的实际地形设置其他的地面参数。为了节约时间推荐迭代数为4,因为通常情况下,更多次的迭代也不会让更多点分类至地面层。设置如图8所示。

图8:第二次地面过滤参数

结果展示:
测试矿场的示例数据,滤波结果如图9所示,执行效果比较不错。

图9:最终的地面图层

        以上内容,针对的是需要获取密集地面DEM数据的情况。如果你不需要密集地面DEM点云结果,只是需要等高线、体积分析等一些的操作,只需要执行1-4步骤即可。因为在一定的限度内,在地面图层中点云越少,实际上生成的等高线产品质量会越高。

        未来我们会发掘出更多LP360雷达滤波软件的应用,更好的服务于测绘行业具体的生产需求。


其他新闻

-->