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

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

简要列举一个样例:

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

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

  1. bool LKTracker::trackf2f(const Mat& img1, const Mat& img2,vector<Point2f> &points1, vector<cv::Point2f> &points2){
  2. //TODO!:implement c function cvCalcOpticalFlowPyrLK() or Faster tracking function
  3. //Forward-Backward tracking
  4. #pragma omp parallel sections //声明该并行区域分为若干个section,section之间的执行顺序为并行的关系
  5. {
  6. #pragma omp section //第一个section,由某个线程单独完毕
  7. //前向轨迹跟踪
  8. calcOpticalFlowPyrLK( img1,img2, points1, points2, status,similarity, window_size, level, term_criteria, lambda, 0);
  9.  
  10. #pragma omp section //第二个section,由某个线程单独完毕
  11. //后向轨迹跟踪
  12. calcOpticalFlowPyrLK( img2,img1, points2, pointsFB, FB_status,FB_error, window_size, level, term_criteria, lambda, 0);
  13. }
  14. //前向轨迹跟踪
  15. // calcOpticalFlowPyrLK( img1,img2, points1, points2, status,similarity, window_size, level, term_criteria, lambda, 0);
  16. //后向轨迹跟踪
  17. //calcOpticalFlowPyrLK( img2,img1, points2, pointsFB, FB_status,FB_error, window_size, level, term_criteria, lambda, 0);
  18.  
  19. //Compute the real FB-error
  20. /*
  21. 原理非常easy:从t时刻的图像的A点,跟踪到t+1时刻的图像B点;然后倒回来
  22. 从t+1时刻的图像的B点往回跟踪,假如跟踪到t时刻的图像的C点,这样就产
  23. 生了前向和后向两个轨迹,比較t时刻中A点和C点的距离,假设距离小于某个
  24. 阈值,那么就觉得前向跟踪是正确的;这个距离就是FB_error
  25. */
  26. //计算前向与后向轨迹的误差。
  27. #pragma omp parallel for
  28. for( int i= 0; i<points1.size(); ++i ){
  29. FB_error[i] = norm(pointsFB[i]-points1[i]); //norm求矩阵或向量的
  30. //范数,或绝对值
  31. }
  32. //Filter out points with FB_error[i] > median(FB_error) && points with sim_error[i] > median(sim_error)
  33. normCrossCorrelation(img1,img2,points1,points2);
  34. return filterPts(points1,points2);
  35. }

改动后代码执行速度提高了不少。

只是并行化处理,必须考虑到一些问题

1.数据的相互排斥问题

2.线程的分配问题

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

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

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

    转自:http://blog.csdn.net/carson2005/article/details/7647500 TLD(Tracking-Learning-Detection)是英国萨里大学的一 ...

  2. TLD视觉跟踪算法(转)

    源:TLD视觉跟踪算法 TLD算法好牛逼一个,这里有个视频,是作者展示算法的效果,http://www.56.com/u83/v_NTk3Mzc1NTI.html.下面这个csdn博客里有人做的相关总 ...

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

    原文:http://blog.csdn.net/mysniper11/article/details/8726649 视频介绍网址:http://www.cvchina.info/2011/04/05 ...

  4. TLD视觉跟踪算法

    TLD算法好牛逼一个,这里有个视频,是作者展示算法的效果,http://www.56.com/u83/v_NTk3Mzc1NTI.html.下面这个csdn博客里有人做的相关总结,感觉挺好的,收藏了! ...

  5. paper 140:TLD视觉跟踪算法(超棒)

    我是看了这样的一个视频:http://www.56.com/u83/v_NTk3Mzc1NTI.html 然后在准备针对TLD视觉跟踪算法来个小的总结. 以下博文转自:http://blog.csdn ...

  6. TLD目标跟踪算法

    1. 简介 TLD目标跟踪算法是Tracking-Learning-Detection算法的简称.这个视频跟踪算法框架由英国萨里大学的一个捷克籍博士生Zdenek Kalal提出.TLD将传统的视频跟 ...

  7. Video Target Tracking Based on Online Learning—TLD单目标跟踪算法详解

    视频目标跟踪问题分析         视频跟踪技术的主要目的是从复杂多变的的背景环境中准确提取相关的目标特征,准确地识别出跟踪目标,并且对目标的位置和姿态等信息精确地定位,为后续目标物体行为分析提供足 ...

  8. Video Target Tracking Based on Online Learning—TLD多目标跟踪算法

    TLD算法回顾 TLD(Tracking-Learning-Detection)是英国萨里大学的一个捷克籍博士生Zdenek Kalal在其攻读博士学位期间提出的一种新的单目标长时间(long ter ...

  9. SQL Server 聚合函数算法优化技巧

    Sql server聚合函数在实际工作中应对各种需求使用的还是很广泛的,对于聚合函数的优化自然也就成为了一个重点,一个程序优化的好不好直接决定了这个程序的声明周期.Sql server聚合函数对一组值 ...

随机推荐

  1. ACM:图BFS,迷宫

    称号: 网络格迷宫n行m单位列格组成,每个单元格无论空间(使用1表示),无论是障碍(使用0为了表示).你的任务是找到一个动作序列最短的从开始到结束,其中UDLR同比分别增长.下一个.左.向右移动到下一 ...

  2. uitextField单词的方法和抖动的限制

    这种方法还可以找到在线. 如下面的详细信息: .h文件 #import <UIKit/UIKit.h> @interface UITextField (LimitLength) /** * ...

  3. POJ3213(矩阵乘法)

    PM3 Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 3036   Accepted: 1059 Description ...

  4. android 反编译,反,注射LOG

    反编译smali注射显示LOG该代码.以后使用: .class public Lnet/iaround/connector/DebugClass; .super Ljava/lang/Object; ...

  5. BZOJ 2588 Count on a tree (COT) 是持久的段树

    标题效果:两棵树之间的首次查询k大点的权利. 思维:树木覆盖树,事实上,它是正常的树木覆盖了持久段树. 由于使用权值段树可以寻求区间k大,然后应用到持久段树思想,间隔可以做减法.详见代码. CODE: ...

  6. unity3d 各功能的运行秩序,打回来,订购,的次数

    Update 当MonoBehaviour启用时,其Update在每一帧被调用. 仅调用一次(每帧) LateUpdate 当Behaviour启用时,  每帧调用一次: FixedUpdate 当M ...

  7. What is Observer and Observable and when we used these?

    转会:http://stackoverflow.com/questions/13744450/interview-when-do-we-use-observer-and-observable

  8. SQL 2008 SP2 找不到SQL Server Engine

    原文:SQL 2008 SP2 找不到SQL Server Engine 最近我有个客户碰到一个很奇怪的问题.他安装SQL server 2008 SP2的时候, SP2的安装程序无法找到SQL se ...

  9. 找呀志_ContentResolver操作ContentProvider数据

    当需要外部的应用ContentProvider该数据被添加.删.修改和查询操作.可以使用ContentResolver 类完成 要得到ContentResolver 物,可以使用Activity提供g ...

  10. DirectX 11游戏编程学习笔记2: 文章1章Vector Algebra(向量代数)

    本文由哈里_蜘蛛侠原创,转载请注明出处.有问题欢迎联系2024958085@qq.com         注:我给的电子版是700多页.而实体书是800多页,所以我在提到相关概念的时候.会使用章节号而 ...