利用lidar生成深度图

前言

目前,深度图像的获取方法有:激光雷达深度成像法、计算机立体视觉成像、坐标测量机法、莫尔条纹法、结构光法等。针对深度图像的研究重点主要集中在以下几个方面:深度图像的分割技术,深度图像的边缘检测技术,基于不同视点的多幅深度图像的配准技术,基于深度数据的三维重建技术,基于深度图像的三维目标检测技术,深度数据的多分辨率建模和几何压缩技术等。在PCL中深度图像与点云最主要的区别在于,其近邻的检索方式不同,并且可以互相转换。

RangeImage概念及相关算法

1.1 深度图像简介

深度图像(Depth Images),也被称为距离影像(Range Images),是指将图像采集器到场景中各点的距离(深度)值作为像素值的图像,它直接反映了景物可见表面的几何形状,利用它可以很方便的解决3D目标描述中的许多问题。深度图像经过坐标转换可以计算为点云数据,有规则及必要信息的点云数据也可以反算为深度图像数据。

从数学模型上看,深度图像可以看作是标量函数 在集合 上的离散采样,得到 ,其中 为二维网格(矩阵)的索引,
在这里插入图片描述

1.2 PCL中RangeImage的相关类

PCL中的range_image库包含两个表达深度图像和对深度图像进行操作的类,其依赖于pcl::common模块。深度图像(或距离图像)的像素值代表从传感器到物体的距离或者深度,如下图所示。深度图像是物体三维表示形式,一般通过立体相机或者ToF相机获取。如果知道相机的内标定参数,就可以将深度图像转化为点云。
在这里插入图片描述

pcl::RangeImage rangeImage;rangeImage.createFromPointCloud(pointCloud,angularResolution, maxAngleWidth,maxAngleHeight,sensorPose,coordinate_frame,noiseLevel,minRange,borderSize);
std::cout << rangeImage << "\n";

基于经典图像处理的方法

虽然基于CNN的方法已经霸榜了KITTI的Depth Completion,但是在小数据量情况下,基于经典图像处理的算法依旧有其优势。我们来看看几个常见的基于图像处理的深度图补全思路。

High-resolution LIDAR-based Depth Mapping using Bilateral Filter

这篇文章的直接在点云投影的深度图像上做补全,没有用到彩色图像信息,方法颇为平凡,可读之处在于实验,它把最常见的几个图像滤波方法做了非常细致的对比。它的输入是一个点云投影成的颇为稠密的深度图,尚未没有去除背景点。它的方法分为两步:第一步是背景点剔除,在局部区域用DBSCAN取剔除远处的cluster;第二步是用双边滤波器(Bilateral Filter)对深度图进行插值,以达补全的目的。

背景点剔除,在每一个局部区域内,用DBSCAN将有值的点聚类为几个类,距离函数是相对深度差 -neighborhood值为0.08,如果DBSCAN有超过两个类,根据类的大小取选择哪个类参与下一步插值,总体是偏向于靠近相机的类。

双线性插值,对每一个空白点 ,它的局部窗口内有值点集为 ,它的深度值为:在这里插入图片描述
最后的结果如上表所示。BF*为上述方法,毫无疑问效果最好。其他方法并未做遮挡检测,这个比较颇为不公平。BF方法没有做遮挡检测。NEA是取距离最近值。DEL是做Delaunay三角花后插值。MIN方法其实就是Z-buffer的方法,效果不赖。MED是中值滤波。IDW是线性插值,线性系数是Inverse Distance Weighting。KRI是Kriging Filter。AVE是均值滤波。MAX是最大值滤波。

这篇文章其实有四个问题:第一个问题是是速度,对每一个窗口做DBSCAN速度会极慢,可以改用点云渲染里面的技巧快速去除背景。第二个问题是在深度图像里面做插值有些不合理,我们应该在视差图中用重心坐标进行插值,这一点在我的另外一篇文章里描述了。第三个问题是它的输入深度图像其实非常稠密,它是由好几帧激光雷达点云拼接出来的,无法处理更为稀疏的图像。最后一个问题是这篇16年的文章的想法其实在其很多年之前的文章就有了,比如这篇08年的文章,这篇08年的文章甚至比这篇16年的文章提供了更为全面和深刻的分析。

详见:深度图像补全(Depth Map Completion) - 上
(3)聚类算法之DBSCAN算法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/779593.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

真心建议今年拿下软考证书,再不冲就晚了!

随着国家计算机与软件技术的发展&#xff0c;每年报名参加计算机软件资格考试&#xff08;简称&#xff1a;软考&#xff09;的人越来越多。 据工信部新闻发布会消息&#xff1a;2023年有超500万人都在考软考&#xff0c;报名人数较2020年直翻10倍。 据悉&#xff0c;国内持软…

HTTP(1)

目录 一、认识HTTP协议 理解 应用层协议 二、fiddler的安装以及介绍 1、fiddler的安装 2、fiddler的介绍 三、HTTP 报文格式 1、http的请求 2、http的响应 五、认识URL 六、关于URL encode 一、认识HTTP协议 HTTP 全称为&#xff1a;“超文本传输协议”&#xff0c;是…

代码随想录算法训练营第35天| 435. 无重叠区间、763.划分字母区间、56. 合并区间

435. 无重叠区间 题目链接&#xff1a;无重叠区间 题目描述&#xff1a;给定一个区间的集合 intervals &#xff0c;其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量&#xff0c;使剩余区间互不重叠 。 解题思想&#xff1a; 这道题目和射气球很像。 *“需…

源支付V7免授权版2.99,精心修复各种打不开错误问题

源支付V7免授权版2.99&#xff0c;精心修复各种打不开错误问题 前几次花钱购买都有点问题&#xff0c;这次购买这个版全部测试功能正常 本站一次性修复各种打不开提示提示&#xff0c;祝你使用愉快&#xff0c; 其他说明&#xff1a;其他文件全部没加密&#xff0c;只有8.1这…

Java基础知识总结(28)

末端方法 末端方法是对流的最终操作。当对某个 Stream 执行末端方法后&#xff0c;该流将会被"消耗"
且不再可用。换句话说就是末端方法一旦调用后就会关闭流&#xff0c;再不能对流进行操作&#xff0c;否则会抛出异常。 方法功能forEach(Consumer action)遍历流…

Linux(4)常见操作整理-静态路由-双网卡-文件上传下载-运维思路-性能监测方法-jar包查找

五、常见操作 1、静态路由配置 【描述】&#xff1a;当前ifconfig eno16777728 对应ip&#xff1a;172.41.0.120 【解决】&#xff1a; &#xff08;1&#xff09; [rootlocalhost ~]# cd /etc/sysconfig/network-scripts/ &#xff08;2&#xff09; 添加文件&#xff1a…

QT TCP和UDP网络编程

代表网络概念的QTcpSocket,QTcpServer和QUdpSocket&#xff0c;以及QNetworkRequest,QNetworkReply和QNetworkAccessManager之类的高级类来执行使用通用协议的网络操作。 它还提供了QNetworkConfiguration,QNetworkConfigurationManager和QNetworkSession等&#xff0c;实现承载…

【CTFshow 电子取证】套的签到题

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收…

Vue生命周期,从听说到深入理解(全面分析)

每个 Vue 组件实例在创建时都需要经历一系列的初始化步骤&#xff0c;比如设置好数据侦听&#xff0c;编译模板&#xff0c;挂载实例到 DOM&#xff0c;以及在数据改变时更新 DOM。在此过程中&#xff0c;它也会运行被称为生命周期钩子的函数&#xff0c;让开发者有机会在特定阶…

HCIP的学习(6)

OSPF—开放式最短路径优先协议 动态路由的评判标准 1、占用资源 2、收敛速度 3、选路动态路由分类&#xff1a; IGP---内部网关协议DV型---距离矢量型---RIPLS型---链路状态型---OSPFEGP---外部网关协议OSPF---无类别的路由协议&#xff08;携带真实掩码&#xff09;组播224.0…

你管这破玩意叫网络

你是一台电脑&#xff0c;你的名字叫 A 很久很久之前&#xff0c;你不与任何其他电脑相连接&#xff0c;孤苦伶仃。 直到有一天&#xff0c;你希望与另一台电脑 B 建立通信&#xff0c;于是你们各开了一个网口&#xff0c;用一根网线连接了起来。 用一根网线连接起来怎么就能…

【JavaEE】Thread类中run和start的区别

文章目录 先说结论Run方法Start方法 先说结论 当你想要创建一个新的线程并执行某些任务时&#xff0c;你应该重写run方法以提供任务的具体实现&#xff0c;并通过调用start方法来启动新线程 run方法包含了线程应该执行的代码&#xff0c;但直接调用它并不会启动新的线程。 s…

斜率优化dp 笔记

任务安排1 有 N 个任务排成一个序列在一台机器上等待执行&#xff0c;它们的顺序不得改变。 机器会把这 N 个任务分成若干批&#xff0c;每一批包含连续的若干个任务。 从时刻 00 开始&#xff0c;任务被分批加工&#xff0c;执行第 i 个任务所需的时间是 Ti。 另外&#x…

关于OLAP

OLAP和OLTP不同的是,表中单条记录本身并不是查询所关心的,比较典型的特点包括有聚合类算子、涉及多表Join,查询所用谓语/条件没有索引。由于这些操作都非常耗计算资源,而且数据仓库相比数据库在数据量上大很多,因此,OLAP类查询经常表现为cpu-bound而不是io-bound。 按照…

CSS使用JS变量

1. CSS变量 CSS 变量&#xff08;也称为自定义属性&#xff09;允许我们在 CSS 中定义可重复使用的值&#xff0c;并将其应用于不同的选择器。为了创建一个 CSS 变量&#xff0c;我们需要使用 -- 前缀&#xff0c;然后可以像常规属性一样使用它。 :root {--primary-color: bl…

HarmonyOS 应用开发之UIAbility组件启动模式

UIAbility的启动模式是指UIAbility实例在启动时的不同呈现状态。针对不同的业务场景&#xff0c;系统提供了三种启动模式&#xff1a; singleton&#xff08;单实例模式&#xff09;multiton&#xff08;多实例模式&#xff09;specified&#xff08;指定实例模式&#xff09;…

工厂能耗管控物联网解决方案

工厂能耗管控物联网解决方案 工厂能耗管控物联网解决方案是一种创新的、基于先进技术手段的能源管理系统&#xff0c;它深度融合了物联网&#xff08;IoT&#xff09;、云计算、大数据分析以及人工智能等前沿科技&#xff0c;以实现对工业生产过程中能源消耗的实时监测、精确计…

鸿蒙OS开发实战:【Socket小试MQTT连接】

本篇分享一下 HarmonyOS 中的Socket使用方法 将从2个方面实践&#xff1a; HarmonyOS 手机应用连接PC端 SocketServerHarmonyOS 手机应用连接MQTT 服务端 通过循序渐进的方式&#xff0c;全面了解实践HarmonyOS中的Socket用法 学习本章前先熟悉文档开发知识更新库gitee.com…

48 数列1

问题描述 : 思维的严密性是相当重要的&#xff0c;尤其是在程序设计中&#xff0c;一个小小的错误&#xff0c;就可能导致无法想象的后果。明明的爸爸是一名富有经验的程序设计专家&#xff0c;深知思维严密的重要性。于是在明明很小的时候&#xff0c;就通过游戏的方式训练明…

Python数据结构与算法学习指南

一、引言 在编程的世界里&#xff0c;数据结构与算法是构建高效、可靠程序的核心基石。Python&#xff0c;作为一种通用编程语言&#xff0c;不仅易于上手&#xff0c;而且提供了丰富的库和工具来支持各种数据结构和算法的实现。本文将指导你如何学习Python数据结构与算法&…