1. 程式人生 > >基於sift特徵的動態場景小目標跟蹤演算法

基於sift特徵的動態場景小目標跟蹤演算法

第3步: kd樹搜尋匹配到的特徵點,更新目標位置資訊。
        kd_root = kdtree_build( feat2, n2 );
         for( i = 0; i< n1; i++ )
        {
               feat = feat1 + i;
               k = kdtree_bbf_knn( kd_root, feat, 2, &nbrs, KDTREE_BBF_MAX_NN_CHKS );
      if( k == 2 )
         {
        d0 = descr_dist_sq( feat, nbrs[0] );
        d1 = descr_dist_sq( feat, nbrs[1] );
        if( d0 < d1 *0.5 )
          {                           
               pt4 = cvPoint( cvRound( feat->x ), cvRound( feat->y ) );
               pt5 = cvPoint( cvRound( nbrs[0]->x ), cvRound( nbrs[0]->y ) );
               p++;    
               pt.x=pt.x+pt5.x;
               pt.y=pt.y+pt5.y;
               feat1[i].fwd_match = nbrs[0];
               scl1 = scl1+feat->scl;
               scl2 = scl2+nbrs[0]->scl;
             }
          } 
        free( nbrs ); 
         }
第4步: 更新目標位置資訊,畫框。 
          pt1.x=pt.x-0.5*width;
          pt1.y=pt.y-0.5*height;
          pt2.x=pt.x+0.5*width;
          pt2.y=pt.y+0.5*height;
          cvRectangle(frame,pt1,pt2,cvScalar(0,0,255,0),1,8,0);
第5步: 第4步更新的位置資訊之後,再依次進行第2步、第3步、第4步,直到幀數到達一定值後,終止迴圈。