kalman目標跟蹤

2021-07-11 02:16:58 字數 1936 閱讀 4298

(2)手動獲取跟蹤目標(滑鼠事件處理)

(3)進行kalman跟蹤:

狀態估計值x --> state;當前觀測值z --> measurement;kalman類內成員變數transitionmatrix就是狀態轉移方程中的矩陣a;kalman類內成員變數measurementmatrix就是量測方程中矩陣h

《1》初始化kalman濾波

const int statenum=4;  

//設定狀態變數(x,y,dx,dy)

const int measurenum=2;  

//設定觀測變數(x,y)

cvkalman* kalman = cvcreatekalman( statenum, measurenum, 0 );/初始化kalman濾波,其返回值為kalman變數:  

cvmat* process_noise = cvcreatemat( statenum, 1, cv_32fc1 );  

//建立4行1列的狀態雜訊向量

cvmat* measurement = cvcreatemat( measurenum, 1, cv_32fc1 );//建立觀測雜訊向量 

cvrng rng = cvrng(-1);  

float a[statenum][statenum] =;  

//狀態轉移矩陣

//將狀態轉移矩陣賦值給kalman 

memcpy( kalman->transition_matrix->data.fl,a,sizeof(a));  

//cvsetidentity()將會把陣列中除了行數與列數相等以外的所有元素的值都設定為0;行數與列數相等的元素的值都設定為1

//設定觀測矩陣就是乙個2×2的單位陣,設定kalman的觀測矩陣

cvsetidentity(kalman->measurement_matrix,cvrealscalar(1) );

//設定狀態雜訊  

cvsetidentity(kalman->process_noise_cov,cvrealscalar(1e-5));

//設定觀測雜訊  

cvsetidentity(kalman->measurement_noise_cov,cvrealscalar(1e-1));  

//設定kalman迭代的誤差

cvsetidentity(kalman->error_cov_post,cvrealscalar(1));  

//初始化kalman的狀態變數,這個初始化和影象的長寬有關hei表示影象寬,wid表示影象的高  

cvrandarr(&rng,kalman->state_post,cv_rand_uni,cvrealscalar(0),cvrealscalar(hei>wid?wid:hei));  

//字型初始化 

cvfont font; 

cvinitfont(&font,cv_font_hershey_plain,1,1); 

《2》kalman**

const cvmat* prediction=cvkalmanpredict(kalman,0);  

//獲取**的點座標,即和測量量相同

cvpoint predict_pt=cvpoint((int)prediction->data.fl[0],(int)prediction->data.fl[1]);

《3》更新量測

從滑鼠獲取的位置量進行賦值

measurement->data.fl[0]=(float)mouseposition.x;  

measurement->data.fl[1]=(float)mouseposition.y;  

《4》更新kalman相關變數  

cvkalmancorrect( kalman, measurement ); 

(4)進行相關的顯示表達

Kalman濾波做運動目標跟蹤

標籤 matrix transitionc 2011 12 08 09 26 28030人閱讀收藏 舉報 opencv 60 作者同類文章x kalman濾波大家都很熟悉,其基本思想就是先不考慮輸入訊號和觀測雜訊的影響,得到狀態變數和輸出訊號的估計值,再用輸出訊號的估計誤差加權後校正狀態變數的估計值...

雷達實測資料傳統多目標跟蹤Kalman濾波

雷達實測資料卡爾曼濾波 kf 的調參,主要包括一下幾個內容 1.過程雜訊矩陣q,觀測雜訊矩陣r 2.初始圓形大波門尺寸 穩定跟蹤過程中的橢圓波門 3.目標初始 超大 協方差p0 此外,跟蹤效果還與凝聚演算法,濾波器演算法,資料關聯方法,航跡起始演算法,運動模型 密切相關 凝聚演算法 這裡使用凝聚層次...

卡爾曼kalman濾波跟蹤例子

include include include using namespace std using namespace cv mat img 500,500,cv 8uc3 計算相對視窗的座標值,因為座標原點在左上角,所以sin前有個負號 static inline point calcpoint ...