TLD跟踪算法优化(一)并行化

才学疏浅,只言片语,只求志同道的朋友一起交流研究。

并行化不算是算法的改进,只是追求运行的实时性。

简要列举一个例子:

TLD算法的C++版本源码里:

LKTracker::trackf2f(const Mat& img1, const Mat& img2,vector<Point2f> &points1, vector<cv::Point2f> &points2){

bool LKTracker::trackf2f(const Mat& img1, const Mat& img2,vector<Point2f> &points1, vector<cv::Point2f> &points2){
  //TODO!:implement c function cvCalcOpticalFlowPyrLK() or Faster tracking function
  //Forward-Backward tracking
#pragma omp parallel sections //声明该并行区域分为若干个section,section之间的运行顺序为并行的关系
	{
#pragma omp section //第一个section,由某个线程单独完成
		//前向轨迹跟踪
		calcOpticalFlowPyrLK( img1,img2, points1, points2, status,similarity, window_size, level, term_criteria, lambda, 0);

#pragma omp section //第二个section,由某个线程单独完成
		//后向轨迹跟踪
		calcOpticalFlowPyrLK( img2,img1, points2, pointsFB, FB_status,FB_error, window_size, level, term_criteria, lambda, 0);
	}
  //前向轨迹跟踪
 // 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);

  //Compute the real FB-error
  /*
	原理很简单:从t时刻的图像的A点,跟踪到t+1时刻的图像B点;然后倒回来
	从t+1时刻的图像的B点往回跟踪,假如跟踪到t时刻的图像的C点,这样就产
	生了前向和后向两个轨迹,比较t时刻中A点和C点的距离,如果距离小于某个
	阈值,那么就认为前向跟踪是正确的;这个距离就是FB_error
  */
  //计算前向与后向轨迹的误差。
	#pragma  omp parallel for
  for( int i= 0; i<points1.size(); ++i ){
        FB_error[i] = norm(pointsFB[i]-points1[i]); //norm求矩阵或向量的
													//范数,或绝对值
  }
  //Filter out points with FB_error[i] > median(FB_error) && points with sim_error[i] > median(sim_error)
  normCrossCorrelation(img1,img2,points1,points2);
  return filterPts(points1,points2);
}

修改后代码运行速度提高了不少。

不过并行化处理,必须考虑到一些问题

1.数据的互斥问题

2.线程的分配问题

3.Release版本应用程序对于for循环可以自动优化,不用对for做多线程设定,主要还是放在模块化的数据处理并行化上。

TLD跟踪算法优化(一)并行化

时间: 2024-08-24 12:13:57

TLD跟踪算法优化(一)并行化的相关文章

比微软kinect更强的视频跟踪算法--TLD跟踪算法介绍

转自:http://blog.csdn.net/carson2005/article/details/7647500 TLD(Tracking-Learning-Detection)是英国萨里大学的一个捷克籍博士生在其攻读博士学位期间提出的一种新的单目标长时间(long term tracking)跟踪算法.该算法与传统跟踪算法的显著区别在于将传统的跟踪算法和传统的检测算法相结合来解决被跟踪目标在被跟踪过程中发生的形变.部分遮挡等问题.同时,通过一种改进的在线学习机制不断更新跟踪模块的“显著特征

TLD视觉跟踪算法

TLD算法好牛逼一个,这里有个视频,是作者展示算法的效果,http://www.56.com/u83/v_NTk3Mzc1NTI.html.下面这个csdn博客里有人做的相关总结,感觉挺好的,收藏了!下面有个Compressive Tracking的网址,提供的代码很少,但实时性很好,matlab代码下下来就能用. 以下博文转自:http://blog.csdn.net/windtalkersm/article/details/8018980 TLD是一种算法的简称,原作者把它叫做Trackin

TLD(Tracking-Learning-Detection)一种目标跟踪算法

原文:http://blog.csdn.net/mysniper11/article/details/8726649 视频介绍网址:http://www.cvchina.info/2011/04/05/tracking-learning-detection/ TLD(Tracking-Learning-Detection)是英国萨里大学的一个捷克籍博士生Zdenek Kalal在其攻读博士学位期间提出的一种新的单目标长时间(long term tracking)跟踪算法.该算法与传统跟踪算法的显

TLD视觉跟踪算法(转)

源:TLD视觉跟踪算法 TLD算法好牛逼一个,这里有个视频,是作者展示算法的效果,http://www.56.com/u83/v_NTk3Mzc1NTI.html.下面这个csdn博客里有人做的相关总结,感觉挺好的,收藏了!下面有个Compressive Tracking的网址,提供的代码很少,但实时性很好,matlab代码下下来就能用. 以下博文转自:http://blog.csdn.net/windtalkersm/article/details/8018980 TLD是一种算法的简称,原作

TLD实时跟踪算法浅析

和大多数人一样,喜欢上TLD算法是从Kalal的一个视频开始的,一个令人心潮澎湃的视频.不得不说这个视频做的是相当的好,背景音乐更是恰到好处,当然别人的算法过硬才是关键,确实技高一筹啊,美中不足的可能就是Kalal憋足的发音了,哈哈,开玩笑啦.研究这个算法的现状是资源非常多,有很多博客,C++,matlab的源码都有,那我为什么还要写这个文章呢?原因是在阅读C++版本的代码时发现了bug,但目前据我所知,网络上没有一个人将其解释清楚,也有可能是我"搜商"不行哦,呵呵,也可能其他博主忙着

目标跟踪算法综述

转自  https://www.zhihu.com/question/26493945 作者:YaqiLYU 第一部分:目标跟踪速览 先跟几个SOTA的tracker混个脸熟,大概了解一下目标跟踪这个方向都有些什么.一切要从2013年的那个数据库说起..如果你问别人近几年有什么比较niubility的跟踪算法,大部分人都会扔给你吴毅老师的论文,OTB50和OTB100(OTB50这里指OTB-2013,OTB100这里指OTB-2015,50和100分别代表视频数量,方便记忆): Wu Y, L

跟踪算法

基本上当前排名前几的跟踪算法实际的速度已经太慢了,比如TLD,CT,还有Struct,如果目标超过十个,基本上就炸了.况且还有些跟踪算法自己drift掉了也不知道,比如第一版本的CT是无法处理drift的问题的,TLD是可以的,究其原因还是因为检测算法比较鲁棒 目前tracking主要是两种,discriminative 和 generative,当然也有combine两个的比如SCM.你提到的都是前者,就是算法里面基本有一个classifier可以分辨要追踪的物体.这类除了你说的最近比较火的还

寻找目标跟踪算法(1)

目标跟踪算法 从知乎的一个帖子开始 计算机视觉中,目前有哪些经典的目标跟踪算法?(https://www.zhihu.com/question/26493945) 跟踪算法比较 Visual Tracker Benchmark:http://www.visual-tracking.net/ 经典算法: Mean-shift, Particle Filter, Ensemble Tracking,TLD, 压缩感知跟踪,KCF Tracker及其改进 KCF(opencv里集成了) http://

计算机视觉 之 在iOS上测试跟踪算法Visual Object Tracking Algorithm

前言 在计算机视觉CV领域,视觉跟踪是其中一个重要的子问题.从我的角度看,视觉跟踪就是用在机器人上,用在移动设备上,因此,何不把一些跟踪算法放在iPhone上看看实际的跟踪效果.这才是最真实的对比,使用一些视频毕竟不实际,而且关键是不能很好的对比实时性.对于移动设备而已,实时性是最重要的吧.之所以有跟踪问题的出现,也是因为绝大多数的物体检测Object Detection算法实在是太慢了,根本无法用在视频当中.因此才有了Object Tracking的问题.最终的目标也就是Real Time V