粒子濾波C++程序.docx_第1頁
粒子濾波C++程序.docx_第2頁
粒子濾波C++程序.docx_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

void CFastTrackingDlg:OnBnClickedButton4()/ TODO: Add your control notification handler code here/1.condensation setup const int stateNum=4; const int measureNum=2; const int sampleNum=2000; CvConDensation* condens = cvCreateConDensation(stateNum,measureNum,sampleNum); CvMat* lowerBound; CvMat* upperBound; lowerBound = cvCreateMat(stateNum, 1, CV_32F); upperBound = cvCreateMat(stateNum, 1, CV_32F); cvmSet(lowerBound,0,0,0.0 ); cvmSet(upperBound,0,0,winWidth ); cvmSet(lowerBound,1,0,0.0 ); cvmSet(upperBound,1,0,winHeight ); cvmSet(lowerBound,2,0,0.0 ); cvmSet(upperBound,2,0,0.0 ); cvmSet(lowerBound,3,0,0.0 ); cvmSet(upperBound,3,0,0.0 ); float AstateNumstateNum = 1,0,1,0, 0,1,0,1, 0,0,1,0, 0,0,0,1 ; memcpy(condens-DynamMatr,A,sizeof(A); cvConDensInitSampleSet(condens, lowerBound, upperBound); CvRNG rng_state = cvRNG(0xffffffff); for(int i=0; i flSamplesi0 = float(cvRandInt( &rng_state ) % winWidth); /width condens-flSamplesi1 = float(cvRandInt( &rng_state ) % winHeight);/height CvFont font; cvInitFont(&font,CV_FONT_HERSHEY_SCRIPT_COMPLEX,1,1); char* winName=condensation; cvNamedWindow(winName); cvSetMouseCallback(winName,mouseEvent); IplImage* img=cvCreateImage(cvSize(winWidth,winHeight),8,3); bool isPredictOnly=false;/trigger for prediction only,press SPACEBAR while (1) /2.condensation prediction CvPoint predict_pt=cvPoint(int)condens-State0,(int)condens-State1); float variancemeasureNum=0; /get variance/standard deviation of each state for (int i=0;imeasureNum;i+) /sum float sumState=0; for (int j=0;jSamplesNum;j+) sumState+=condens-flSamplesji; /average sumState/=sampleNum; /variance for (int j=0;jSamplesNum;j+) variancei+=(condens-flSamplesji-sumState)* (condens-flSamplesji-sumState); variancei/=sampleNum-1; /3.update particals confidence CvPoint pt; if (isPredictOnly) pt=predict_pt; else pt=mousePosition; for (int i=0;iSamplesNum;i+) float probX=(float)exp(-1*(pt.x-condens-flSamplesi0) *(pt.x-condens-flSamplesi0)/(2*variance0); float probY=(float)exp(-1*(pt.y-condens-flSamplesi1) *(pt.y-condens-flSamplesi1)/(2*variance1); condens-flConfidencei=probX*probY; /4.update condensation cvConDensUpdateByTime(condens); /draw cvSet(img,cvScalar(255,255,255,0); cvCircle(img,predict_pt,5,CV_RGB(0,255,0),3);/predicted point with green char buf256; sprintf_s(buf,256,predicted position:(%3d,%3d),predict_pt.x,predict_pt.y); cvPutText(img,buf,cvPoint(10,30),&font,CV_RGB(0,0,0); if (!isPredictOnly) cvCircle(img,mousePosition,5,CV_RGB(255,0,0),3);/current position with red sprintf_s(buf,256,real position :(%3d,%3d),mousePosition.x,mousePosition.y); cvPutText(img,buf,cvPoint(10,60),&font,CV_RGB(0,0,0); cvShowImage(winName, img); int key=cvWaitKey(30); if (key=27)/esc break; else if (key= ) /trigger for prediction

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論