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;
}