粒子滤波C++程序.docx_第1页
粒子滤波C++程序.docx_第2页
粒子滤波C++程序.docx_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论