zju3dv / pvnet-rendering

render images for pvnet training
Apache License 2.0
183 stars 46 forks source link

您好,我想请教一个关于模型上三维点投影到图像上的问题 #24

Closed acmff22 closed 4 years ago

acmff22 commented 4 years ago

你好,我想问一下,在生成训练图像的过程中,为了得到关键点在图像上的ground truth。通过标记在物体的三维点,如何计算得到其在对应图像上的坐标。我尝试调用opencv中的cv2.projectPoints,但是得到的结果并不正确。望指教!

pengsida commented 4 years ago

如果是linemod数据集,它的6d pose需要转换。 如果是你自己的数据集,你需要注意相机参数矩阵的正确性。

acmff22 commented 4 years ago

我这边只用了linemod数据集中的模型,6d pose是在blender中随机生成的,那如果使用linemod中的6d pose,那应该如何转换?

pengsida commented 4 years ago

如果是blender得到的pose,就是对的,不需要转换。

acmff22 commented 4 years ago

但是出现的问题就是,使用blender坐标系下,物体的6dpose,3维关键点坐标,相机的内外参,计算得到图像上的关键点位置是不正确的。这里的计算公式,我是使用您在代码中提供的project_mode函数和opencv中的cv2.projectPoints。 但是当我将上述对应的信息转换为linemod数据集坐标系中计算时,可以得到正确的结果,这点使我十分的困惑。 您在代码中是如何实现的?

pengsida commented 4 years ago

我不知道你说的是实现什么部分的代码。

acmff22 commented 4 years ago

实现3维关键点在图像上的投影

pengsida commented 4 years ago

https://github.com/zju3dv/pvnet/blob/master/lib/utils/base_utils.py#L239

acmff22 commented 4 years ago

Projector类中,pts_3d和RT是如何得到呢?

pengsida commented 4 years ago

就是你想投影的3d关键点和6d pose。