겉으로는 틀만 제공해준다는 느낌? 직접 구현하는 것과 달라보이지는 않지만 더 빠른 연산을 위한 어떠한 차이가 있을지 모르겠다.
Library
#include <opencv2/video/tracking.hpp>
#include <opencv2/highgui/highgui.hpp>
Function
cv::KalmanFilter | predict(), correct(Mat measurement) | 예측-->statePre, 추정-->statePost |
cv::Mat statePre | predicted state | |
cv::Mat statePost | corrected state | |
cv::Mat transitionMatrix | A or F | |
cv::Mat controlMatrix | B | |
cv::Mat measurementMatrix | H | |
cv::Mat processNoiseCov | Q | |
cv::Mat measurementNoiseCov | R | |
cv::Mat errorCovPre | P' | |
cv::Mat errorCovPost | P | |
cv::Mat gain | K |
Initialization Example
KalmanFilter KF(4, 2, 0); // State variable 4, Measurement variable 2
Mat state(4, 1,CV_32F); // State vector (px, py, vx, vy)
Mat processNoise(4, 1, CV_32F); // Noise
Mat measurement(4, 1, CV_32F); // Measurement vector
KF.transitionMatrix = (Mat(4, 4,CV_32F) <<
1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1);
setIdentity(KF.measurementMatrix); //H
setIdentity(KF.processNoiseCov,Scalar::all(1e-2)); //Q
setIdentity(KF.measuremnetNoiseCov, Scalar::all(1e-1)); //R
setIdentity(KF.errorCovPost, Scalar::all(1)); // P'
KF.statePre.at<float>(0,0) = ~~;
KF.statePre.at<float>(1,0) = ~~;
KF.statePre.at<float>(2,0) = ~~:
KF.statePre.at<float>(3,0) = ~~;
KF.statePost.at<float>(0,0) = ~~;
KF.statePost.at<float>(1,0) = ~~;
'maengkyun > Robotics' 카테고리의 다른 글
[Kalman Filter] SORT(Simple Online and Realtime Tracking) (0) | 2022.06.14 |
---|---|
Objetc Tracking 개념 (0) | 2022.06.12 |
[Kalman Filter] 개념 및 예제 정리(1) - Battery Voltage Mesurement (0) | 2022.04.24 |
[TEST] Obstacle Merging (0) | 2022.03.26 |
[TEST] Fast Depth Completion Algorithm (0) | 2022.03.26 |