我正在开发一个应用程序:
- 读取 7 个模型文件并训练一个 PPF 3D 检测器;
- 读取场景文件并尝试与检测器匹配;
- 将结果存储在文件中(视觉检索)。
我正在关注OpenCV 教程,但有一些事情我什至阅读文档都不明白:
- 该detector.match()上存储结果的姿势在现场的模型。但据我所知,姿势是模型的位置和方向,但我怎么知道是哪个模型呢?
- 当我打印第一个结果的姿势时,它给了我一个 4x4 的表格,上面有浮点值。我在哪里可以找到它们是什么意思?
- 仍然在姿势打印上,它给了我模型索引,起初,我认为这是我用来训练检测器的模型的编号。问题是:我使用了 7 个模型来训练检测器,第一个结果给了我"Pose to Model Index 12"。所以我认为这是模型描述索引,就像Drost (2012) 一样。但是如果真的是Model Description Index,我怎么知道这个索引属于哪个Model呢?
- 根据教程,使用transformPCPose并将其写入 PLY 文件会给出匹配的视觉结果,但文档说它返回一个 4x4 姿势矩阵,但我仍在打印它,它给了我一个奇怪的图像超过 16 个顶点,所以我不明白教程在做什么。如何像教程一样在文件上编写视觉结果?
我还读到 ICP 用于纠正任何姿势错误,但使用没有 ICP 的 PPF 给出了可接受的结果。无论如何,我尝试使用 ICP,但它总是给我“错误的参数错误”。
我使用的代码如下:
void computer_vision_3d(string in_path)
{
Mat files_clouds[NUM_OF_FILES]; // > Stores the point cloud of all objects
Mat scene_cloud; …
Run Code Online (Sandbox Code Playgroud)