Swa*_*oth 6 opencv transformation transform augmented-reality vtk
我最近成功地使我的增强现实应用程序启动并运行接近预期.但是,我遇到了一个问题,即使值是正确的,增量仍然是一些翻译!因为我这将是美妙的得到这个解决如此接近到有这件事.
该系统利用具有红外反射标记的外部跟踪系统(Polaris Spectra立体光学跟踪器)来建立全局和参考帧.我有一个带有标记的LEGO结构,它是增强的目标,使用CAD创建的LEGO结构的3D模型,具有其真实世界对应物的精确规格,跟踪指针工具和带有世界参考的相机标记附在它上面.使用3D Slicer中的工具集将虚拟空间注册到现实世界中,这是一个医学成像软件,这是我正在开发的环境.下面是几张照片,只是为了澄清我正在处理的系统(May或可能与该问题无关).
因此,简要概述每个标记/组件的确切作用(标记是黑色十字架与四个银球):
cv::solvePnP().cv::findChessboardCorners().到目前为止,我一直在粉碎我的脸,反对系统背后的数学,直到最终排成一行.当我在估计相机原点到参考原点的位置移动时,两者之间的平移向量约为[0; 0; 0].因此,所有注册似乎都能正常工作.但是,当我运行我的应用程序时,我得到以下结果:
如您所见,增强中存在奇怪的偏移.我已经尝试去除图像上的失真校正(目前已完成cv::undistort()),但这只会使问题变得更糟.旋转都是正确的,正如我之前所说,翻译似乎都很好.我不知道是什么导致了这一点.当然,在渲染管道的实现过程中会出现很多问题,所以我主要是在这里发布这个,希望有人遇到过类似的问题.我已经使用基于网络摄像头的跟踪方法执行了这个项目,即使我使用了相同的渲染过程也没有遇到过这样的问题.
在这篇文章中,我故意有点模棱两可,以避免因为情况的细节而使读者陷入困境,因为我可以包含许多不同的细节.如果需要更多信息,我可以提供.任何建议或见解都会受到大力赞赏.谢谢!
您可以执行以下一些测试来验证每个模块是否正常工作。
首先验证您的外部和内部校准:
undistort函数不支持具有非零倾斜的相机矩阵;使用此类矩阵可能不会引发任何异常,但会导致错误的不失真)。然后验证渲染管道,例如,在移动相机时检查场景标记是否正确地重新投影到相机图像中。
除此之外,如果不直接与系统交互,很难猜测可能出现什么问题。如果我是你,并且在完成上述测试后我仍然不知道问题出在哪里,我会尝试从头开始并使用玩具示例验证每个中间步骤。
| 归档时间: |
|
| 查看次数: |
392 次 |
| 最近记录: |