2016-02-23 21 views
0

我实现了基于对应分组的3D物体识别,但是我无法处理正确的算法参数来查找场景中的物体。基于对应分组参数的PCL 3D物体识别

以下示例适用于提供的牛奶和场景pcds。

http://www.pointclouds.org/documentation/tutorials/correspondence_grouping.php

,但不符合我的例子中的物体和场景。那么,目前的尝试参数,

//Algorithm params 
    bool show_keypoints_(true); 
    bool show_correspondences_(false); 
    bool use_cloud_resolution_(false); 
    bool use_hough_(true); 
    float model_ss_(0.01f); 
    float scene_ss_(0.0125f); 
    float rf_rad_(0.008f); 
    float descr_rad_(0.008f); 
    float cg_size_(0.05f); 
    float cg_thresh_(5.0f); 

和模型和场景文件,

https://www.dropbox.com/s/0o8igpbfnqu5vk3/model.pcd?dl=0 https://www.dropbox.com/s/pv5re3iqzsme29j/scene.pcd?dl=0

如何处理合适的参数没有做测试/错误?

回答

2

一般来说,如果不是完全不可能的话,为检测问题选择“正确”或以任何方式“最佳”的参数是非常困难的,至少在您的可用训练数据上运行一些非正式实验。

理想情况下,您应该有一组标记测试图像和一种在数据集上自动测试物体识别方法的方法,输出有用的测量值,例如检测precision and recall或估计物体姿势的mean squared error与您已知的地面真相。然后,您可以编写程序脚本来探索参数空间,从一些合理的初始参数值开始。

至于你具体的例子,我可以提供最好的是以下意见:

  • 为了测试您的实现在所有工作,我建议录制“更容易”场景图像。与PCL教程中的示例图像相比,您的场景看起来更难解释(我花了一段时间才真正找到自己的模型)。例如:
    • 尝试将场景剪裁到相关区域。
    • 将对象本身放置在较大的空的表面上。
    • 也许将传感器放置在靠近物体的位置。
    • 将物体放置在与传感器稍微倾斜的角度,并将物体上方的图像记录下来,以便在图像中看到更多图像。
  • 只有掌握了基本的一个,我才会选择更复杂的场景。
  • 本教程中使用的参数值看起来像一个很好的起点,因为您的场景和模型似乎大致相同并具有相似的形状。例如,我希望统一的采样半径参数对您也应该是可以的。
  • 您的模型看起来很平滑。这可能会影响关键点提取和描述符计算。您可能需要调整群集大小和描述符半径(以更大的值)以及群集阈值。你应该可视化提取的关键点,看看它们是否有意义。有足够的关键点吗?他们是否躺在表面有意义的显着位置?你是否在模型和场景之间的相应位置获得了关键点?这部分您可以独立于其他参数进行调整。
+0

谢谢。这是一个很好的起点。 – Jaume