我正在开发一个运用结构从动技术的应用程序,通过追踪物体上的若干标记来确定物体的刚性结构。
该应用程序基本上使用多个摄像机视角下的标准Levenberg-Marquardt优化,并最小化每个视角中预期标记点与从2D中获取的标记点之间的差异。
对于每个标记点和每个视角,将最小化以下函数:
double diff = calculatedXY[index] - observedXY[index]
计算出的XY值取决于许多未知参数,需要通过优化找到,并且观察到的XY是二维标记点的位置。总共有(标记点*视图)数量的函数与上面的函数类似,我旨在将其最小化。
我已经编写了一个模拟摄像机看到所有标记点的程序,但我想知道如何处理在运行过程中由于光照、遮挡或不在摄像机视野内而无法看到点的情况。在实际运行应用程序时,我将使用网络摄像头查看对象,因此可能不会同时看到所有标记,而且根据我的计算机视觉算法的鲁棒性,我可能无法始终检测到标记。
如果无法观察到标记点,则考虑将差异值设置为0(sigma平方差= 0),但这是否会扭曲结果呢?
另一件我注意到的事情是,当提供太多视图时,该算法效果不佳。当提供太多视图时,它更可能估计出错误的解决方案。这是否是捆绑调整的常见问题,因为提供太多视图会增加命中局部最小值的可能性?