我正在研究来自运动应用程序的结构,并且我正在跟踪放置在对象上的许多标记以确定对象的刚性结构。
该应用程序本质上是在多个相机视图上使用标准的 Levenberg-Marquardt 优化,并最大限度地减少预期标记点与从每个视图以 2D 获得的标记点之间的差异。
对于每个标记点和每个视图,以下功能被最小化:
double diff = calculatedXY[index] - observedXY[index]
其中计算出的 XY 值取决于需要通过优化找到的许多未知参数,observedXY 是 2D 中的标记点位置。总的来说,我有(标记点 * 视图)我希望最小化的上述功能的数量。
我已经编写了一个摄像机的模拟代码,可以看到所有标记点,但我想知道如何处理在运行过程中由于光照、遮挡或不在摄像机视图中而导致点不可见的情况。在应用程序的实际运行中,我将使用网络摄像头查看对象,因此很可能并非所有标记都会立即可见,并且取决于我的计算机视觉算法的稳健程度,我可能无法检测到一直标记。
我想在无法观察到标记点的情况下将 diff 值设置为 0(sigma 平方差 = 0),但是这会扭曲结果吗?
我注意到的另一件事是,当呈现太多视图时,算法并没有那么好。当视图太多时,更有可能估计一个糟糕的解决方案。这是捆绑调整的一个常见问题,因为当呈现太多视图时会增加达到局部最小值的可能性?