我试图通过跟踪物体上已知的2D LED图案来找到物体相对于实际坐标中相机位置的位置。
我做了相机校准。我能够成功检测到图案中的LED,并在图像框中找到它们的精确坐标。然而,这些点与图案中的已知坐标不完全对应,它们是随机顺序。这些函数在solvePnPRansac或findHomography等函数中很重要,这将是我的第一选择。
如何找到这些点集之间的对应关系,或者我应该使用其他函数来计算转换,就像solvePnPRansac一样?
答案 0 :(得分:1)
由于您没有询问估算物体与相机之间相对姿势的方法,我将把这个主题放在一边,重点介绍找出每个LED与2D投影之间的对应关系的方法。
为了获得唯一的1对1对应设置,您使用的LED模式应该在旋转方面明确无误。例如,您可以使用常规NxN网格,左上角的单元格包含一个额外的LED,或者位于圆圈上的LED,一个额外的LED位于单个的下面,等等。然后,找到对应关系的方法取决于模式你选择了。
如果是圆形图案,您可以执行以下操作:
对于常规网格图案,您可以尝试以下操作:
X-floor(X)
和Y-floor(Y)
接近0.5的点,并将四个初始角中最近的一个定义为第一个观察点您还可以研究函数findChessboardCorners
使用的算法(请参阅calib3D模块中的calibinit.cpp
),该算法使用类似的方法对检测到的角进行排序。