点击上方“计算机视觉工坊”,选择“星标”

干货第一时间送达

本篇参考翻译林祥国、张继贤的《Segmentation-Based Filtering of Airborne LiDAR Point Clouds by Progressive Densification of Terrain Segments》,点击阅读原文查看该论文。

一、PTD经典算法的不足

在上一篇滤波算法简介中,我介绍了经典的PTD算法,链接在此。PTD算法在商用软件TerraSolid,Lidar360等激光雷达数据处理中被应用。

但是PTD算法有两个很大的局限,

(1)遇到陡坡或者陡坎的时候,通常就不能很好的保留陡坎上的点,如下图所示:

(2)贴近地面的物体的一定高度处会被视作为地面点,比如路面上的车,如下图所示:

二、如何解决PTD经典算法的不足

第一种方式:

激光雷达的数据是一个点一个点聚集起来的数据,里面包含丰富的数据信息:位置、强度,回波、RGB、入射角等信息。在一些研究当中,结合RGB信息可以有效的过滤植被信息,因为植被的NDVI值与地面点的NDVI值有很大的区别;亦或者结合回波信息,也可以过滤植被信息,因为激光雷达回波在植被区域的回波通常是多回波。

第二种方式:

上述方法虽然能把地面点提取准确度提高,但是它始终没有解决掉让我们头疼的两个问题:陡坡或者陡坎,低矮物体,因为他们本质上还是以点为对象考虑滤波。所以有学者就提出是否可以对象分割的方式对地面点进行提取。有实验研究表明:以分割为对象的地面点提取算法可以有效的提取斜坡或者陡坎处的点云。下图展示了激光雷达点云的分割效果。

国内的激光雷达数据软件“点云智绘”(以下点云智绘简称PCA)实现了以分割为对象的地面点提取算法,英文名称为Segmentation-Based Filtering of Airborne LiDAR Point Clouds by Progressive Densification of Terrain Segments,简称SBF

三、SBF地面点提取步骤

SBF的步骤如下图所示,简单来讲分为4个步骤:

(1)孤立点去除

这里所谓的孤立点是指低点或者高于点云的点,特别是低点,本算法对低点十分敏感,因此需要提前去除。孤立点提取算法是以点为中心以一定的三维半径搜索临近点,如果点数少于指定的点,则就判断为孤立点。PCA中的算法界面如下:

(2)点云分割

这里点云分割采用的基于表面生长的点云分割,大致步骤如下:

① 首先利用 kd-tree求取其k个最临近点,然后利用特征值法求当前点及k 个邻近点构成点集的拟合平面方程,即可确定第i点的法向量φi 及其残差λi;

② 找到残差值最小的作为种子点,搜索d’半径内的点的临近点;

③ 判断当前点与种子点的法向量夹角和当前点当拟合平面的距离r,如果均小于设定值,则加入当前点至种子点队列,并作为新的种子点,继续判别其他的未处理点;

④ 处理完毕之后,同一个队列的种子点为一个分割号。清空,回到第②步。

(3)多回波分析

多回波发生在具有多次反射回波的地方(当然前提是你的激光雷达拥有记录多次回波信息的能力),比如树木。如下图,地面点大部分都是单次回波,而树木的回波有很多。

这就启发我们可以这样对树木进行处理:当把单个树木进行分割后,我们判断分割的点云中多次回波的个数,如果点数大于该分割单元点数量的50%,那么该分割的点云为标记为植被,并且接下来的PTD算法就不会把这些点参与运算判断了,可以节约我们的算法计算时间

(4)PTD地面点提取

该步与经典的PTD算法相同,不同的地方在于经典的PTD算法是以点为处理单元,而SBF是以分割为单元。什么意思呢?SBF中我们还是以点的原则去判断某个点是否满足预设的阈值条件,但是判断该分割单元是否是地面点的原则是以地面点的与物体点数量多少来判断该分割单元是都是属于地面点还是物体点。

四、实验与评估

4.1 定性分析

4.1.1论文中的实验

实验数据来自ISPRS,总共7个数据集,点云间隔在1-3m。总共有15个参考分类区域对精度进行统计。7个区域采用PTD和SBF进行滤波,下图表1是每个区域采用的参数,表2是PTD与SBF算法识别的地面点与物体点的数量统计,表2 的“O”代表物体,“S”代表种子点,“G”代表地面点。

通过表2我们可以得出如下结论:

(1)SBF识别了更多的物体点;

(2)SBF识别了更多的地面点;

(3)更多的地面点也就带来更多的地面细节

我们也可以从下图中看出来,左图(SBF方式)比右图(PTD)有着更多的地面点。

下图中(b)是参考DEM,(c)是PTD生产的DEM,(e)是SBF生产的DEM。我们可以发现SBF的地面点滤波效果较好,细节较多。

下图中,左图是PTD方法生成的DEM,右图是SBF生成的DEM。红圈处是车辆,我们可以发现SBF对其移除的效果较好。

4.1.2 我的实验

实验数据下载自https://opentopography.org/。区域位于美国,地形特征为丘陵,地形高差为200m,测区有山,居民地,树木,河流等。该数据我主要测试对陡坎的识别能力,图中红色框处。

使用Lidar 360(采用的是PTD方法)与PCA(采用的是SBF方法)进行滤波,地形角度,迭代角度,迭代距离参数一样。

采用Lidar 360效果(左)与PCA效果(右)。SBF在陡坎处的滤波效果更好。

4.1.3 SBF的不足

(1)对于贴近地面过小的物体过滤能力不足,比如矮小的房屋

(b)为参考DEM,(c)PTD提取的DEM,(e)SBF提取的DEM

(2)横跨地面的桥梁识别能力不足

(b)参考DEM,(c)PTD提取的DEM,(e)SBF提取的DEM。

(3)处理时间SBF基本是PTD的2-5倍,这与SBF多出了分割步骤有关。

4.2 定量分析

按照Type I 和Type II 和总误差来统计分类精度,得出表3。图中红色的代表某个误差值较小的算法类别。

由上表我们可以得出如下结论:

(1)Type I :SBF<PTD

I 类错误SBF较小的原因在于能够识别更多的种子点和地面点。

(2)Type II:SBF>PTD

II类错误,SBF较大的原因也在于识别出了更多的地面点(错误的也囊括进)。

(3)T:SBF<PTD

综合起来SBF算法滤波效果更好。

(4)人工编辑量

SBF<PTD。因为

I 类错误较小,意味着不用手动添加更多地面点;

T总误差较小,总工作量较小。

你可能会疑问II类错误SBF很大。其实编辑II类错误比编辑I类错误的难度小多了,毕竟II类错误很明显。

五、总结

SBF与PTD算法各有优劣,但是SBF算法总体精度好于PTD算法。特别是能够保留更多的地面点细节,尤其是在陡坎处。

本文仅做学术分享,如有侵权,请联系删文。

下载1

在「计算机视觉工坊」公众号后台回复:深度学习,即可下载深度学习算法、3D深度学习、深度学习框架、目标检测、GAN等相关内容近30本pdf书籍。

下载2

在「计算机视觉工坊」公众号后台回复:计算机视觉,即可下载计算机视觉相关17本pdf书籍,包含计算机视觉算法、Python视觉实战、Opencv3.0学习等。

下载3

在「计算机视觉工坊」公众号后台回复:SLAM,即可下载独家SLAM相关视频课程,包含视觉SLAM、激光SLAM精品课程。

重磅!计算机视觉工坊-学习交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有ORB-SLAM系列源码学习、3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、深度估计、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、orb-slam3等视频课程)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

圈里有高质量教程资料、可答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

基于分割的PTD渐进三角网加密滤波(SBF)算法相关推荐

  1. 点云地面滤波--一种改进的渐进式不规则三角网加密地面滤波算法

    文章目录 1主要内容 2主要方法 2.1通过形态学滤波获取潜在的地面种子点 2.1.1栅格化点云 2.1.2形态学开操作 2.1.3识别潜在的种子点 2.2获取地面种子点 2.3迭代TIN加密 2.3 ...

  2. 噪点检测matlab,基于噪点检测的中值滤波图像去噪方法

    摘  要: 图像去噪是图像处理中一个非常重要的环节.针对传统中值滤波方法存在的不足,提出一种新的基于噪点检测的自适应中值滤波图像去噪方法.该方法通过自适应地改变滤波窗口的大小,局部检测并判断极值点是否 ...

  3. 连通域最小外接矩形算法原理_基于分割的文本检测算法之PSENet/PAN/DBNet

    1. 文本检测难点 文本内包含文本,艺术字体,任意方向 ,曲线文字 ,多语言,其他环境因素等是文本检测中的难点 2. 分割 问题1: 语义分割模型是对pixel进行分类,所以理论上讲,可以检测不规则的 ...

  4. aes解密流程图_基于AES和混沌的图像加密方法与流程

    本发明涉及一种信息加密技术,特别是涉及一种图像加密方法. 背景技术: 在军事系统.电子政务.金融系统以及日常生活等领域,每天都会产生大量的图像.为保护这些图像信息内容不被窃取,图像加密技术引起了学术界 ...

  5. 实现图片打乱_基于混沌Logistic加密算法的图片加密与还原

    基于混沌Logistic加密算法的图片加密与还原 摘要 一种基于混沌Logistic加密算法的图片加密与还原的方法,并利用Lena图和Baboon图来验证这种加密算法的加密效果.为了能够体现该算法在图 ...

  6. 基于新唐M0的XXTEA加密解密算法源码

    源:基于新唐M0的XXTEA加密解密算法源码 /*--------------------------------------------------------------------------- ...

  7. aes加密算法python实现_Python基于pycrypto实现的AES加密和解密算法示例

    本文实例讲述了Python基于pycrypto实现的AES加密和解密算法.分享给大家供大家参考,具体如下: 一 代码 # -*- coding: UTF-8 -*- import string imp ...

  8. 基于序贯重要性重采样的粒子滤波and(RBPF)

    基于序贯重要性重采样的粒子滤波 重要性采样 重要性采样算法 序贯重要性重采样SIR(粒子滤波) 重采样过程 Rao-Blackwellized粒子滤波RBPF(混合卡尔曼滤波器MKF) 尽管高斯逼近可 ...

  9. bfv同态加密_lattigo: 基于Lattice代数结构的Go同态加密库

    Lattigo 基于Lattice代数结构的Go同态加密库 Lattigo是一个Go软件包,实现了基于格的加密原语.该库功能: 纯Go实施,带来代码简单性和易于构建. 一个有效的多精度多项式算术层的公 ...

  10. 基于深度学习的SDN家庭网关加密网络流量分类

    写在前面: 本文翻译供个人研究学习之用,不保证严谨与准确 github链接:https://github.com/WithHades/network_traffic_classification_pa ...

最新文章

  1. 荧光皮肤有哪些_价格适中又显白的口红有哪些?MAC占大头,KIKO卡拉泡泡超平价...
  2. 作者:窦志成,男,中国人民大学信息学院研究员、硕士生导师。
  3. 计算机桌面图标的排列,如何进行桌面图标排列 让你的桌面一秒变酷炫【图文教程】...
  4. zk可实现分布式锁,Redis也可实现,之间有什么区别?
  5. SQL server数据缓存依赖
  6. 无法访问移动磁盘显示磁盘未被格式化的文件寻回方案
  7. Android Intent机制与常见的用法
  8. MAC终端使用SSH连接远程服务器
  9. 安卓一键新机_知道华为手机变慢的罪魁祸首吗?用这四招两年旧机秒变新机
  10. Photoshop CC(2018)安装教程
  11. 微信小程序 弹出确定取消框
  12. 华为手机序列号前三位_华为手机SN码里隐藏的秘密,选购手机必备冷知识!
  13. 【转】Power System 中基于 VIOS 的虚拟以太网实现
  14. 0基础怎么画出好看的水彩画美术集水彩教程入门级教程
  15. linux下对文件和文件夹加密
  16. html5使用websocket发送(PCM)音频数据到服务器,再转在wav文件
  17. Selenium打开浏览器闪退问题(浏览器驱动是对应的前提)-解决办法
  18. 教你自动识别快递公司,过滤重复单号,查询物流信息
  19. 外卖项目06---套餐管理业务开发(移动端的后台代码编辑开发)
  20. 为什么python代码运行不了_为什么我的python代码不能正常运行?

热门文章

  1. bzoj3207花神的嘲讽计划Ⅰ
  2. android 引用 project以及下拉刷新开源类库Android-PullToRefresh 的使用
  3. Ubuntu下设置root用户
  4. MyEclipse或Eclipse中工程的导入和导出
  5. 借助Ehcache缓存框架实现对页面的缓存
  6. Boost Asio run() run_one() poll() poll_one()的区别
  7. 后台开发必备的那些Linux命令
  8. MySQL 计算字段长度函数LENGTH()与CHAR_LENGTH()
  9. 自定义简单控件之标题控件
  10. jsp连接mysql数据库读不出数据,jsp连接Mysql数据库出现有关问题,