跟踪模块track(img1,img2,points1,points2)
输入:
上一帧图像:img1
当前帧图像:img2
前一帧边界框:lastbox
输出:
跟踪结果边界框
其可信度及有效性
1. bbPoints(points1,lastbox)
输入:
边界框:lastbox
输出:
点集:points1
描述:
在边界框lastbox中均匀采集10*10个点坐标,存于points1中。
2. tracked = tracker.trackf2f(img1,img2,points,points2)
输入:
上一帧图像:img1
当前帧图像:img2
前一帧边界框中的初始点:points(1中的points1)
输出:
得到前一帧中被有效跟踪的点集:points
得到对当前帧有效跟踪点的点集:points2
描述:
首先,使用LK光流法进行前向跟踪(calcOpticalFlowPyrLK( img1,img2, points1,
points2, status,similarity, window_size, level, term_criteria, lambda, 0);),
再进行后向跟踪(calcOpticalFlowPyrLK( img2,img1, points2, pointsFB, FB_status,
FB_error, window_size, level, term_criteria, lambda, 0););然后,计算跟踪误差
(FB_error[i] = norm(pointsFB[i]-points1[i]));最后,计算跟踪点与初始点周围
10*10像素块的归一化互相关系数,滤除掉相似性低于均值的点,在滤除前后向误差
高于均值的点,得到最终有效跟踪点。
3. bbPredict(points,points2,lastbox,tbb)
输入:
前一帧中被有效跟踪的点:points
当前帧成功跟踪到的点:points2
前一帧中初始(或有效最终结果)边界框:last_box
输出:
跟踪结果边界框:tbb
描述:
根据这些成对对应点,计算它们位移变化的均值;根据原边界框内的点两两间距
离,与跟踪到的对应两个点间的距离,二者比值关系的均值,得到前后两帧中目
标的放缩变化。再根据前一边界框的大小及位置,预测当前跟踪框的大小及位置。
如果前后向误差均值大于10,或预测得到的边界框越界,则本次跟踪失败,得到跟踪结果无效。
详细流程说明见《关于TLD算法的跟踪模块的补充说明 》
注:如果图片无法显示,请访问我的网易博客:http://quandb2007.blog.163.com/blog/static/41878875201351241741534/