woizzy 2023-02-22 11:58 采纳率: 45.5%
浏览 89
已结题

Intel Realsense深度相机+PCL库对梯子点云处理综合

(可追加打赏)
背景:
使用Intel Realsense深度相机(D415/D435)拍摄一个梯子,拍摄的场景如下第一张图(深度相机拍摄的幅面与图的拍摄场景幅面大致相同),并放上了一张侧视图(下第二张)更好展示拍摄环境,但只是为了对比。现要求从深度相机拍摄的深度图获取梯子的点云,并用PCL库点云进行处理,以获取梯子的几何参数(如梯子的踏板长宽尺寸、相邻两梯子踏板的高度差)。**
提问:
1、相机拍摄获得的深度图有没有进行彩色图对齐的必要?不对齐下使用Intel RealSense API中的calculate()方法获得点云该使用什么方法转换成PCL库中的点云数据?(可以的话请教一下保存为pcd文件的方法)
2、使用什么滤波器对拍摄的场景滤波是的能够去除梯子后面的背景?(如果去除不完全,只能滤除一些噪声背景的话下一步进行点云分割)
3、使用什么具体的点云分割技术将梯子点云场景中分离?又要使用什么点云分割技术将梯子踏板点云从梯子点云中分离?
4、这个拍摄视角(正对梯子略向下俯拍,即第一张图)能不能获得踏板的长宽高三个方向的几何尺寸?针对分离出来的梯子踏板点云,该使用具体方法获得踏板的长宽高几何尺寸?(边界提取、最小包围盒、PCA主成分析推荐哪些?)
5、对于分离出来的两个梯子踏板,能不能使用点云配准获得踏板垂直方向的间距?可以的话推荐使用什么粗配准和精配准方法?要不要拟合平面?(也要求分离地面)
(使用VS2019+PCL+C++,可以的话附上具体函数代码进行讲解)

(第一张,也为拍摄获取点云的拍摄角度)

img

(第二张。放置在着为了更好展现拍摄环境)

img

  • 写回答

7条回答 默认 最新

  • GISer Liu 2023-02-22 13:21
    关注

    以下答案基于ChatGPT与GISer Liu编写:

    1. 彩色图对齐可以提高点云的准确性,但是不是必须的。如果不对齐,则需要使用相机的内参和外参信息将深度图像转换为点云数据。在Intel RealSense API中,可以使用rs2_deproject_pixel_to_point()函数将深度值转换为点云中的坐标。可以使用pcl::PointCloudpcl::PointXYZ类型存储点云数据,并使用pcl::io::savePCDFile()函数将点云保存为pcd文件。

    2. 可以使用pcl::PassThrough滤波器进行场景滤波。该滤波器可以根据指定的维度和范围将点云数据裁剪。通过调整滤波器的参数,可以裁剪掉梯子后面的背景点云数据。

    3. 可以使用pcl::SACSegmentation分割器进行点云分割。该分割器可以将点云分割为平面和非平面两部分。在分割出梯子点云之后,可以再次使用pcl::SACSegmentation对梯子踏板点云进行分割,将梯子踏板点云和梯子其他部分点云分离。

    4. 可以使用PCA主成分分析方法获得踏板的长宽高三个方向的几何尺寸。该方法将点云投影到主成分方向上,然后通过计算主成分方向的方差和标准差获得长宽高信息。可以使用pcl::PCA类进行PCA分析,并使用getEigenValues()函数获得主成分的方差和getEigenVectors()函数获得主成分的方向。可以使用pcl::getMinMax3D()函数获得点云的最小和最大值,从而计算点云的长宽高尺寸。

    5. 可以使用ICP(迭代最近点)算法进行点云配准,获得踏板垂直方向的间距。可以先使用粗配准方法(如初始矩阵估计)将两个梯子踏板点云对齐,然后再使用精配准方法进行微调。如果梯子踏板与地面平行,则需要先使用平面分割方法将地面点云分离出来,并拟合地面平面,以便更好地进行点云配准。可以使用pcl::IterativeClosestPoint类进行ICP算法,并使用setInputTarget()和setInputSource()函数设置目标点云和源点云,使用align()函数进行配准。可以使用getFinalTransformation()函数获得最终的变换矩阵,从而计算踏板垂直方向的间距

    评论

报告相同问题?

问题事件

  • 系统已结题 3月2日
  • 修改了问题 2月22日
  • 创建了问题 2月22日

悬赏问题

  • ¥20 Wpf Datarid单元格闪烁效果的实现
  • ¥15 图像分割、图像边缘提取
  • ¥15 sqlserver执行存储过程报错
  • ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
  • ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出
  • ¥100 matlab2009 32位一直初始化
  • ¥15 Expected type 'str | PathLike[str]…… bytes' instead
  • ¥15 三极管电路求解,已知电阻电压和三级关放大倍数
  • ¥15 ADS时域 连续相位观察方法
  • ¥15 Opencv配置出错