⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kalmantrackor.h

📁 通过设置物体的位置和速度信息
💻 H
字号:
#if !defined(AFX_KALMANTRACKOR_H__F60F112D_4B8C_4546_AE9F_05A9B455D6EF__INCLUDED_)
#define AFX_KALMANTRACKOR_H__F60F112D_4B8C_4546_AE9F_05A9B455D6EF__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "matrix.h"


// KalmanTrackor.h : header file
//

/////////////////////////////////////////////////////////////////////////////
// KalmanTrackor window

class KalmanTrackor : public CEdit
{
// Construction
public:
	KalmanTrackor();

// Attributes
public:
    bool Inibool;    /*初始化设置*/


   matrix  state_pre;           /* 预测状态 (x'(k)): x(k)=A*x(k-1)+B*u(k) */
			 
   matrix  state_post;          /* 矫正状态 (x(k)):
					              x(k)=x'(k)+K(k)*(z(k)-H*x'(k)) */

 //  matrix*  state_k_1;  这个最优值是有借口得到的,即前一时刻的最优值 


   matrix measurement_vector;

   matrix transition_matrix;   /* 状态传递矩阵 state transition matrix (A) */



   matrix control_matrix;      /* 控制矩阵 control matrix (B)
					             (如果没有控制,则不使用它)*/// 这里我们为空
   matrix measurement_matrix;  /* 测量矩阵 measurement matrix (H) */

   matrix process_noise_cov;   /* 过程噪声协方差矩阵
							   process noise covariance matrix (Q) */

  matrix measurement_noise_cov; /* 测量噪声协方差矩阵
                              measurement noise covariance matrix (R) */

  matrix error_cov_pre;       /* 先验误差计协方差矩阵													 
                                priori error estimate covariance matrix (P'(k)):
                                P'(k)=A*P(k-1)*At + Q)*/ // 4*4

  matrix gain;                /* Kalman 增益矩阵 gain matrix (K(k)):
							    K(k)=P'(k)*Ht*inv(H*P'(k)*Ht+R) */

  matrix error_cov_post;      /* 后验错误估计协方差矩阵  // 4*4 
																					   posteriori error estimate covariance matrix (P(k)):
							    P(k)=(I-K(k)*H)*P'(k) */
  int D_P;
  int M_P;
  int C_P;
														   
														   
					 
	
// Operations
public:
	void  KalmanTrackor::CreateKalman(   int MP,              /* 测量向量维数 */
		int DP,              /* 状态向量维数 */
		int CP,                 /* 控制向量维数 */
		double T ,               /* 转移矩阵中的T  */
		CPoint Inipoint,
		int vx,
		int vy);


   CPoint TrackProcess_NewFrame(int mark, CPoint meansurpoint); /*传入我们度量的点 是的,
	                                                  然后把值给观测矩阵 2*1的矩阵向量*/ 
private:
	bool KalmanPredict(); /*预测k时刻状态*/			 
	void KalmanCorrect(); /*得到修正后的最优值和偏差*/ 
	
	void KalmanCorrect_state_post(); //修正后验值
	
	void KalmanCorrect_error_cov_post(); //修正后验值的偏差 
	
	void Kalman_get_gain();  /*计算kalman增益*/ 
	void CreateRanddom_MeasureCov(); 
	
	void CreateRanddom_ProcessCov();
	
	void clearup();  /*撤销资源*/

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(KalmanTrackor)
	//}}AFX_VIRTUAL

// Implementation
public:
	virtual ~KalmanTrackor();

	// Generated message map functions
protected:
	//{{AFX_MSG(KalmanTrackor)
		// NOTE - the ClassWizard will add and remove member functions here.
	//}}AFX_MSG

	DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_KALMANTRACKOR_H__F60F112D_4B8C_4546_AE9F_05A9B455D6EF__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -