gpt4 book ai didi

共面平面上的 OpenCV solvePnPRansac 随机给出两个解之一

转载 作者:太空宇宙 更新时间:2023-11-03 21:45:53 25 4
gpt4 key购买 nike

我在使用 solvePnPRansac 跟踪共面标记时遇到问题。我在这里录制了有关该问题的视频:

http://youtu.be/ftijvDPDA0U

在视频中,您可以看到用 OpenCV 绘制的粉红色立方体大约每 2-3 帧翻转一次。您还可以在顶部看到我使用 OpenGL 渲染的稳定坐标系,但您可以忽略它,我没有应用跟踪器计算的旋转值,这就是翻转未传递到 OpenGL 场景的原因。

我认为问题出在 OpenCV 的 solvePnPRansac 上,因为输入(2D 和 3D 点)在每一帧上都非常相似,但计算出的投影矩阵与您在视频中看到的日志不同。跟踪点看起来都很好。在视频中,我还渲染了坐标轴,您可以看到 z 轴被翻转/反转,而其余轴(Y 轴:绿色指向下方,X 轴:红色指向右侧)保持正确。

我在 solvePnPRANSAC 中使用的参数:我在 solvePnPRANSAC 上使用了 cv::ITERATIVE,标准重投影错误为 8.0(尝试了几次不同的值,但没有运气),我将外部猜测切换为 false。

共面标记是否总是有 2 个正确的 pnp 解决方案,这就是它在两者之间随机翻转的原因?我可以避免这种行为吗?我搜索了有类似问题的人,但我能找到的只是两个老问题,听起来可能是同一个问题:http://answers.opencv.org/question/6373/cv2solvepnp-axis-flip-with-rotation/#http://answers.opencv.org/question/11915/solvepnp-similar-input-returns-very-different-output/

最佳答案

当多个解决方案同样正确时,就会发生这种情况,因此您会随机得到一个或另一个。

最好继续使用前一帧的值作为对当前帧的第一次猜测 (useExtrinsicGuess = true),以确保获得时间稳定性。

另外,根据您跟踪的点,使用 solvePnP 可能会更好。这为您提供了一个在时间上更稳定的结果,尤其是当您使用以前的值作为初始猜测时。

关于共面平面上的 OpenCV solvePnPRansac 随机给出两个解之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28787254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com