You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenCV C++卡尔曼滤波迭代1200次后出现异常预测求助

卡尔曼滤波常加速度模型后期输出极端值问题

我使用OpenCV C++实现了基于x、y方向常加速度模型的卡尔曼滤波,滤波器在前1200帧左右表现良好,但之后开始输出极端预测结果。

以下图表展示了Frame 1050之后x、y坐标的预测值与测量值对比,异常点清晰可见:

Frame 1050之后的x坐标预测值与测量值对比
Frame 1050之后的y坐标预测值与测量值对比

每帧运行的核心代码如下:

TrackingResult KalmanFilter::Process(TrackingInput& input)
{
    cv::Mat prediction = _kalmanFilter.predict();
    Point2 predictPt(prediction.at<float>(0), prediction.at<float>(1));
    cv::Mat_<float> measurement(2, 1, CV_32F);

    if (input.DetectionResult.FoundBall)
    {
        measurement(0) = input.DetectionResult.BallPosition.x;
        measurement(1) = input.DetectionResult.BallPosition.y;

        cv::Mat estimated = _kalmanFilter.correct(measurement);
        _ballPosition = Point2(estimated.at<float>(0), estimated.at<float>(1));

        return TrackingResult(_ballPosition, predictPt, input);
    }
    else
    {
        return TrackingResult(predictPt, predictPt, input);
    }
}

相关补充信息:

  • 代码参考OpenCV官方卡尔曼滤波示例,已按照常加速度模型的要求正确初始化转移矩阵。
  • 测试输入常量测量值时,滤波器始终保持稳定;使用相机输入的视频本身无异常。
  • 因复现问题需要完整的1200帧位置数据,无法提供最小复现示例,可通过上述图表观察输入数据的异常表现。

恳请各位提供排查思路或解决方案。


内容的提问来源于stack exchange,提问作者Shrey Dixit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 11:01:25