如何从点云创建深度图

9.1 目前深度图的获取方法有激光雷达深度成像法、计算机立体视觉成像、坐标测量机法、
莫尔条纹法、结构光法

针对深度图的研究主要集中在以下几个方面
(1) 深度图像分割技术
(2) 深度图像的边缘检测技术
(3) 给予不同视点的多副深度图像的配准技术
(4) 给予深度数据的三维重建技术
(5) 基于深度图像的三维目标识别技术
(6) 深度数据的多分辨率建模
(7) 几何压缩技术

深度图像 (Depth Image ) 也称为距离影像 (Range Image) 是指讲从图像采集器到场景中个点的距离 (深度) 值作为像素的图像,
它直接反映了景物可见表面的几何形状,利用它可以很方面的解决 3D 目标描述中的许多问题

深度图像经过坐标变换可以计算点云数据,有规则及必要的点云数据也可以反算出深度图像

#include <iostream>
#include <pcl-1.11/pcl/range_image/range_image.h> // 深度图像头文件


int main(int argc, char* argv[])
{
    pcl::PointCloud<pcl::PointXYZ> pointCloud;          // 定义点云对象
    for (float y=-0.5f;y<=0.5f;y+=0.01f){
        for (float z=-0.5f;z<=0.5f;z+=0.01f)
        {
            pcl::PointXYZ point;
            point.x = 2.0f - y;
            point.y = y;
            point.z = z;
            pointCloud.points.push_back(point);   // 循环添加点数据到点云对象
        }
    }

    pointCloud.width = (uint32_t) pointCloud.points.size();
    pointCloud.height = 1;
    // 这段程序首先创建一组数据作为点云的内容, 在设置文件头的信息,整个实现生成一个举行形状的点云

    float angularResolution = (float) (1.0f * ( M_PI/ 180.0f));    //按照弧度 1°
    float maxAngleWidth = (float) (360.0f * ( M_PI/ 180.0f));      // 按照弧度 360 °
    float maxAngleHeight = (float) (180.0f * ( M_PI/ 180.0f));       // 按照弧度 180 °

    Eigen::Affine3f sensorPose = (Eigen::Affine3f)Eigen::Translation3f(0.0f, 0.0f, 0.0f);
    pcl::RangeImage::CoordinateFrame coordinate_frame = pcl::RangeImage::CAMERA_FRAME; // 深度图像遵循的坐标系统
    float noiseLevel=0.00;
    float minRange = 0.0f;
    int borderSize = 1;

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


    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值