如何从点云创建深度图像,看这篇你就懂了(附详细代码)

您所在的位置:网站首页 根据深度图生成点云 如何从点云创建深度图像,看这篇你就懂了(附详细代码)

如何从点云创建深度图像,看这篇你就懂了(附详细代码)

2024-07-12 11:59| 来源: 网络整理| 查看: 265

作者I Roar冷颜@CSDN

编辑I 3D视觉开发者社区

前言

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

本文首先对深度图像的概念以及表示方法进行简介,其次对PCL的两个RangeImage类进行简单介绍,最后通过如何从一个点云创建一个深度图像以及如何从深度图像中提取物体边界的两个应用实例,来展示如何对PCL中的RangeImage相关类进行灵活运用。

RangeImage概念及相关算法

1.1 深度图像简介

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

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

, ,如下图所示:

df08a4e431d67d3e13f8299840aa38bf.png

1.2 PCL中RangeImage的相关类

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

07618c9155c84d3dfd03cceaf76c3650.png

从一个点云创建一个深度图像

本节将介绍如何从点云和给定的传感器位置来创建深度图像:

首先创建一个工作空间range_image_creation,然后再在工作空间创建一个文件夹src用于存放源代码:

mkdir -p range_image_creation/src

接着,在range_image_creation/src路径下,创建一个文件并命名为range_image_creation.cpp,拷贝如下代码:

#include // 深度图像头文件int main (int argc, char** argv){ pcl::PointCloud pointCloud; // 定义点云对象/* 生成点云数据 */for (float y=-0.5f; y


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3