使用OpenCV跟踪对象的多摄像头校准

时间:2017-09-24 12:47:11

标签: c++ opencv camera camera-calibration kalman-filter

我对有经验的OpenCV用户提出了一些关于制作多相机跟踪程序的问题。因此,要快速提出问题,我想用多个摄像头跟踪多个对象。我想要实现的结果或多或少是这样的: https://www.youtube.com/watch?v=7Dy9co0mWY0

最终我得出结论,我想使用卡尔曼滤波器进行跟踪。我想问的问题是:

  1. 有没有办法根据视频链接中的视频数据集校准多个摄像头?它能以某种方式自动完成吗?我知道您可以使用棋盘(http://docs.opencv.org/3.3.0/dc/d43/tutorial_camera_calibration_square_chess.html)校准相机,但事实并非如此,因为您没有在视频中使用它。还有这样的事情:http://docs.opencv.org/master/d2/d1c/tutorial_multi_camera_main.html但我认为它有同样的缺点。
  2. 什么是最有效的跟踪方法?我是否应该为每个视图使用卡尔曼滤波器并尝试合并单个结果或以某种方式尝试在3d中重建对象然后应用滤波器?
  3. 欢迎任何建议。谢谢。

1 个答案:

答案 0 :(得分:1)

我目前正在研究用于排球比赛的自动裁判系统(类似于网球中的鹰眼系统),我在内部实施了球跟踪。所以我可以给你一些建议:

  1. 尝试使用opencv
  2. 校准相机内部参数
  3. 使用场景中的特征点来确定相机姿势(solvePnP可能适合开始)
  4. 检测每个摄像机上的物体,不应用任何过滤,近似和插值 - 这会降低测量精度
  5. 重构每个点的3D坐标(使用相机固有校准和计算的姿势)
  6. 对结果应用过滤。
  7. 如果你想通过这种追踪获得良好的计量结果,那可能真的很难。但它不适用于您发布的视频中显示的简单可视化。