ProgRoman 9 Report post Posted September 30, 2015 Добрый день! У меня тут появился вопрос.. в примерах фильтра Калмана обычно рассматривают предсказание и или (сглаживание) 2d точек, каким образом изменится матрица перехода если у нас точки 3-хмерные.... KalmanFilter KF(6,3,0);//x,y,z,dx,dy,dz KF.transitionMatrix = *(Mat_<float>(6, 6) << 1,0,1,0,1,0 0,1,0,1,0,1, 0,0,1,0,1,0, 0,0,0,1,0,1, 0,0,0,0,1,0, 0,0,0,0,0,1); ....матрица KF.transitionMatrix должна иметь такой блочный вид или она должна быть просто единичной?.. Share this post Link to post Share on other sites
Nuzhny 243 Report post Posted September 30, 2015 Эта матрица зависит от модели движения и может быть, в принципе, произвольной. Share this post Link to post Share on other sites
ProgRoman 9 Report post Posted September 30, 2015 Эта матрица зависит от модели движения и может быть, в принципе, произвольной.а как её задавать тогда?... для 2-х мерной точки вроде бы ничего сложного не было просто писал... KalmanFilter KF(4,2,0);//x,y,dx,dy KF.transitionMatrix = *(Mat_<float>(4, 4) << 1,0,1,0, 0,1,0,1, 0,0,1,0, 0,0,0,1); ...я так задавал, вроде бы было корректно... а с трёхмерными точками каким образом модель движения получать что бы матрицу задать... Share this post Link to post Share on other sites
Smorodov 578 Report post Posted October 1, 2015 Ну, для Вашего фрагмента все просто, хотя как Nuzhny сказал, здесь может быть все что угодно, зависит от модели динамики объекта.Ваша матрица не что иное как:x=1*x+0*y+1*dx+0*dyy=0*x+1*y+0*dx+1*dydx=0*x+0*y+1*dx+0*dydy=0*x+0*y+0*dx+1*dyЧто вполне соответствует линеаризованной модели движения с управлением скоростью, и дискретой времени dt = 1. Share this post Link to post Share on other sites
ProgRoman 9 Report post Posted October 1, 2015 А ок понял! спасибо большое!) Share this post Link to post Share on other sites
BeS 53 Report post Posted October 1, 2015 Когда речь заходит о Калмановском сглаживании в 3D пространстве применительно к компьютерному зрению, нужно не забывать, что операция триангуляции в 3-х мерном Евклидовом пространстве имеет анизатропную ошибку, соответственно для того, чтобы применить opencv'шный Линейный Калман Фильтр, придется линеаризовать модель, или, в случае когда модель линеаризовать не представляется возможным, переходить на использование чего-то типа Unscented Kalman Filter. 1 Share this post Link to post Share on other sites