卡爾曼濾波之Opencv(二)

2021-06-20 20:37:10 字數 1895 閱讀 2316

今天研究了一下卡爾曼濾波跟蹤,同時也看了一下卡爾曼濾波opencv的源**,總是看懂了,具體原理可以看看。下面是opencv自帶的乙個程式,**如下:

// kalman.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include "opencv2/video/tracking.hpp"

#include "opencv2/highgui/highgui.hpp"

#include using namespace cv;

static inline point calcpoint(point2f center, double r, double angle)

static void help()

int main(int, char**)

if( code == 27 || code == 'q' || code == 'q' )

break;

}return 0;

}

同時為了更好的理解**,我們需要知道一下的東西

**1.

mat statepre;           //!< predicted state (x'(k)): x(k)=a*x(k-1)+b*u(k)

mat statepost; //!< corrected state (x(k)): x(k)=x'(k)+k(k)*(z(k)-h*x'(k))

mat transitionmatrix; //!< state transition matrix (a)

mat controlmatrix; //!< control matrix (b) (not used if there is no control)

mat measurementmatrix; //!< measurement matrix (h)

mat processnoisecov; //!< process noise covariance matrix (q)

mat measurementnoisecov;//!< measurement noise covariance matrix (r)

mat errorcovpre; //!< priori error estimate covariance matrix (p'(k)): p'(k)=a*p(k-1)*at + q)*/

mat gain; //!< kalman gain matrix (k(k)): k(k)=p'(k)*ht*inv(h*p'(k)*ht+r)

mat errorcovpost; //!< posteriori error estimate covariance matrix (p(k)): p(k)=(i-k(k)*h)*p'(k)

一看上面的注釋大概也明白什麼意思了。

此外,還需要看2斷**

const mat& kalmanfilter::predict(const mat& control)

這個段**其實就是:x(k|k-1) = a(k-1|k-1) ,同時得到**結果x(k|k-1)的偏差p(k|k-1)

const mat& kalmanfilter::correct(const mat& measurement)

上面的**其實就是:求kg(k)=p(k|k-1)h' / (hp(k|k-1)h' + r) ,x(k|k) = x(k|k-1) + kg(k)(z(k) - hx(k|k-1),p(k|k) = ( 1 - kg(k)h)p(k|k-1)參考

卡爾曼濾波的簡單應用

卡爾曼 Simulink之卡爾曼濾波

卡爾曼濾波主要根據系統狀態方程,通過系統輸入輸出作為觀測資料,來不斷迭代修正預估的邏輯,實現對系統狀態的最優估計。理 式比較複雜,需要花時間去體會理解,想細研究的朋友建議直接去找一篇相關 學習 其實研究之後一天就又忘了 卡爾曼基本迭代公式 基於上面的5個等式,我們可以搭建出卡爾曼濾波的基本模型 為了...

卡爾曼 卡爾曼濾波 1

今天主要介紹一下卡爾曼濾波器,所謂卡爾曼濾波器其實是一種最優化遞迴數字處理演算法 optimal recursive data processing algorithm 卡爾曼濾波器應用 既然我們有了測量儀器,這些測量儀器可以目標給出準確測量值。還需要卡爾曼濾波器進行估計嗎?下面解釋一下為什麼需要卡...

卡爾曼 基礎卡爾曼濾波

卡爾曼濾波器是一種基礎 定位演算法。原理非常簡單易懂。核心過程可以用乙個圖說明 本質上就是這兩個狀態過程的迭代,來逐步的準確定位。更新 更具感測器獲取到比較準確的位置資訊後來更新當前的 問位置,也就是糾正 的錯誤。你可能要問為什麼有感測器的資料了還要進行更新?因為在現實世界中感測器是存在很多雜訊干擾...