gpt4 book ai didi

image-processing - 卡尔曼滤波器 : some doubts

转载 作者:太空宇宙 更新时间:2023-11-03 20:58:32 24 4
gpt4 key购买 nike

我有几个问题:

  1. example在 openCV 文档中给出:

    /* 生成测量值 */cvMatMulAdd( kalman->measurement_matrix, state, measurement, measurement );

这是正确的吗?在教程中:An Introduction to the Kalman Filter韦尔奇和主教在等式 1.2 中表示测量 = H*状态 + 测量噪声

看起来两者并不相同。

  1. 我正在尝试实现 bouncing ball tracking对于一个球。我尝试了以下方法:(请指出我是否做错了。)

对于测量,我正在测量两件事:a) x b) 球质心的 y。

我只是提到与 opencv 文档中给出的示例不同的行。

CvKalman* kalman = cvCreateKalman( 5, 2, 0 );
const float A[] = { 1, 0, 1, 0, 0,
0, 1, 0, 1, 0,
0, 0, 1, 0, 0,
0, 0, 0, 1, 1,
0, 0, 0, 0, 1};

CvMat* state = cvCreateMat( 5, 1, CV_32FC1 );
CvMat* measurement = cvCreateMat( 2, 1, CV_32FC1 );

//initialize the state of kalman filter
state->data.fl[0] = mean_c;
state->data.fl[1] = mean_r;
state->data.fl[2] = mean_c - prev_mean_c;
state->data.fl[3] = mean_r - prev_mean_r;
state->data.fl[4] = 9.81;

初始化后,这就是崩溃的原因

cvMatMulAdd( kalman->transition_matrix, 状态, kalman->process_noise_cov, 状态);

最佳答案

  1. 在这一行中,他们只是使用变量测量来存储噪音。见上一行:

    cvRandArr( &rng, 测量, CV_RAND_NORMAL, cvRealScalar(0),cvRealScalar(sqrt(kalman->measurement_noise_cov->data.fl[0])) );

  2. 您还应该更改 H 矩阵的维数。它必须是 5 x 2 才能计算 H*state + measurement noise。您可能在行中收到错误

    memcpy( cvkalman->measurement_matrix->data.fl, H, sizeof(H));

因为在初始示例中 cvkalman->measurement_matrixH 被分配为 4 x 4 矩阵并且您减少了 cvkalman->measurement_matrix 的维数只到 5 乘 2(4*4 大于 5*2)

关于image-processing - 卡尔曼滤波器 : some doubts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5914894/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com