使用深度相机制作自己的Linemod数据集

1 实施方案

1.1 任务描述

  1. 制作自己的Linemod数据集(最终目的示意如下图)
    使用深度相机制作自己的Linemod数据集_第1张图片

1.2 整体方案

  1. 通过构建物体和标定板的坐标转换关系,然后构建标定板和相机坐标的转换关系,然后通过映射函数构建3D坐标和图像像素坐标的映射关系。拍摄一系列照片然后将每张图像获取其外参矩阵,最后通过相机标定后的映射函数将三维关键点投影到二维图像坐标,然后得到第一幅图像的数据标签。接着移动相机位置继续拍摄图像,通过标定板获取第二幅图像9个点的3维坐标,重复上述过程。

1.3 环境需求

  1. 软件及库;
    Ubuntu16.04环境
    ros kinect安装
    kinect2的驱动libfreenect2 和iai_kinect2
    ork功能包
  2. 硬件;
    Kinect V1/V2、Intel realsense等深度相机;
    待标注物体(最好选非对称物体,纹理较少的物体);

2 实施流程

2.1 环境搭建

2.2 视频图像数据record

2.3 生成物体场景3D模型点云

  1. 生成的默认保存为.Ply点云模型。对于一个物体,得到三角面数为n的3D模型,获取数据点数为3n,每个点包含如下顺序的9个值分别为,空间坐标分量,旋转分量,颜色分量:
    float x
    float y
    float z
    float nx
    float ny
    float nz
    uchar red
    uchar green
    uchar blue

2.4 MashLab裁剪点云模型

使用第三方软件读取点云数据然后手动裁剪
MashLab说明

  1. 主要功能
    3D采集;对齐,重建,颜色映射和纹理;清洗3D模型;缩放,定位和定向;简化,细化和重新划分;测量和分析;3D模型转换和交换;比较模型;利用光栅图层进行图像集成。
  2. 名称意义
    FOV:摄像机视野;FPS:每秒传输帧数;Vertices:模型点数;Faces:模型面数
  3. 支持文件格式
    stl、off、obj、ply、ptx、v3d、pts、xyz等

2.5生成物体在像素坐标下的二维坐标标签

  1. 将三维关键点投影到二维
  2. 使用yolo-6d提供的计算投影函数来投影,需要知道相机的内参矩阵以及对应的旋转和平移矩阵
  3. 对应的9个点3d位置为三维边界框的8个角和三维对象模型的质心定义为对象的虚拟关键点。8个角对应于三维对象模型的[[min_x, min_y, min_z], [min_x, min_y, max_z], [min_x, max_y, min_z], [min_x, max_y, max_z], [max_x, min_y, min_z], [max_x, min_y, max_z], [max_x, max_y, min_z], [max_x, max_y, max_z]],其中质心点设置为[0, 0, 0],
  4. 对于获取的每张图像对应的21个标签数值,第一个为类别,第2-3个为质心点的x、y坐标,第4-19共18个值为对应8个角点的x、y坐标,20和21为八个点的x、y范围即其中的最大减最小,除类别外所有数据归一化保存。

添加code

你可能感兴趣的:(深度学习文章,3D姿态估计,目标检测)