文章目录

  • 1.0目标:复杂环境下目标跟踪
    • 1.1常用目标识别跟踪的算法概述
  • 2.0基于特征点的目标识别与跟踪法(SURF特征提取与KLT跟踪算法结合)
    • 2.2 导入:SIFT
      • 2.2.1 SIFI 算子里程碑的意义
      • 联想,要想达到实时性,可能只有深度学习了。??
    • 2.2.2 导入:SURF
    • 2.2.4 CVST编程实现
  • 3.0采用SURF特征与模板自适应相结合应用于KLT跟踪算法
    • 3.1KLT跟踪原理???课程没有讲~
      • 3.1.1KLT算法的原理,其实其跟踪效果并非太准,后来有很多提出的校正的方法
      • 3.1.2项目假设
    • 3.2原理
    • 3.3求解分析
    • 在OpenCV里面,找角点的函数可用
    • 3.2模板自适应更新策略:
    • 3.3 思路
  • N.0傅里叶变换的补充

1.0目标:复杂环境下目标跟踪


1.1常用目标识别跟踪的算法概述

之所以称其为难点,是对目标的识别和跟踪过程中,存在视觉传感器与目标物体的相对运动,因而,目标在图像中存在着尺度变化、旋转变化、视角变化、照度变化以及局部遮挡,这给目标识别和跟踪带来了挑战。

我们常用的目标识别与跟踪算法有:

  • 基于帧间差分的目标识别与跟踪法、
  • 基于光流的目标识别与跟踪法、
  • 基于模板匹配的目标识别与跟踪法、
  • 基于颜色的目标识别与跟踪法、
  • 基于特征点的目标识别与跟踪法。

2.0基于特征点的目标识别与跟踪法(SURF特征提取与KLT跟踪算法结合)

考虑到每种方法的特点以及待跟踪目标具有清晰的纹理,我们可以采用基于特征点的目标识别与跟踪法,更进一步地说,我们应采用尺度不变特征点作为识别与跟踪的特征,因为尺度不变特征点对尺度变化、旋转变换、视角变化、照度变化和局部遮挡具有鲁棒性。同时,我们希望目标识别和跟踪算法具有良好的实时性,因而,可以考虑PCA-SIFT和SURF特征点作为目标特征。此外,由于视频序列相邻图像之间存在相关性,目标在相邻帧之间不会有剧烈的变换,因而,可采用隔帧搜索法对目标进行检测并用Kalman滤波或粒子滤波对目标的轨迹进行预测。难点分解的过程如图2所示。



基于局部不变特征的目标跟踪方法是将SURF特征提取与KLT跟踪算法进行有机结合。

2.2 导入:SIFT


2.2.1 SIFI 算子里程碑的意义



存在的问题:运算复杂度高,无法达到实时性的要求。

联想,要想达到实时性,可能只有深度学习了。??

2.2.2 导入:SURF

SIFT与SURF的区别:

SIFT与SURF对比图片举例

2.2.4 CVST编程实现





matlab代码:

clear all;
boxImage = imread('2.jpg');
sceneImage = imread('2_2.jpg');
sceneImage = rgb2gray(sceneImage);
boxImage = rgb2gray(boxImage);
%%%Part1
boxPoints = detectSURFFeatures(boxImage);
scenePoints = detectSURFFeatures(sceneImage);
%%%Part2
[boxFeatures,boxPoints] = extractFeatures(boxImage,boxPoints);
[sceneFeatures,scenePoints] = extractFeatures(sceneImage,scenePoints);
%%Part3
boxPairs = matchFeatures(boxFeatures,sceneFeatures);
% display putatively matched features
matchedBoxPoints = boxPoints(boxPairs(:,1),:);
matchedScenePoints = scenePoints(boxPairs(:,2),:);
figure;
showMatchedFeatures(boxImage,sceneImage,matchedBoxPoints,matchedScenePoints,'montage');title('Matched Points(Including Outliers)');
%%Part4:estimateGeometricTransform
[tform,inlierBoxPoints,inlierScenePoints] = estimateGeometricTransform(matchedBoxPoints,matchedScenePoints,'affine');
% display the matching points pairs with the outliers removed
figure;
showMatchedFeatures(boxImage,sceneImage,inlierBoxPoints,inlierScenePoints,'montage');title('Matched Points(inliers Only)');
%%Part5
% Get the bounding polygon of the reference image
boxPolygon = [1,1;...size(boxImage,2),1;...size(boxImage,2),size(boxImage,1);...1,size(boxImage,1);...1,1];
newBoxPolygon = transformPointsForward(tform,boxPolygon);
figure;line(newBoxPolygon(:,1),newBoxPolygon(:,2),'Color','y');title('Detected Box');

3.0采用SURF特征与模板自适应相结合应用于KLT跟踪算法

3.1KLT跟踪原理???课程没有讲~


近来在研究跟踪,跟踪的方法其实有很多,如粒子滤波(pf)、meanshift跟踪,以及KLT跟踪或叫Lucas光流法,这些方法各自有各自的有点,对于粒子滤波而言,它能够比较好的在全局搜索到最优解,但其求解速度相对较慢,由于其是基于颜色直方图的计算,所以对相同颜色东西不太能够区别,meanshift方法很容易陷入局部最优,但速度还是挺快,所以现在很有一些人是将meanshift跟pf结合做跟踪,恰好在很多方面能够互补。
参考:https://www.cnblogs.com/moondark/archive/2012/05/12/2497391.html

Kanade-Lucas-Tomasi方法,在跟踪方面表现的也不错,尤其在实时计算速度上,用它来得到的,是很多点的轨迹“trajectory”,并且还有一些发生了漂移的点,所以,得到跟踪点之后要进行一些后期的处理,说到Kanade-Lucas-Tomasi方法,首先要追溯到Kanade-Lucas两人在上世纪80年代发表的paper:An Iterative Image Registration Technique with an Application to Stereo Vision,这里讲的是一种图像点定位的方法,即图像的局部匹配,将图像匹配问题,从传统的滑动窗口搜索方法变为一个求解偏移量d的过程,后来Jianbo Shi和Carlo Tomasi两人发表了一篇CVPR(94’)的文章Good Features To Track,这篇文章,主要就是讲,在求解d的过程中,哪些情况下可以保证一定能够得到d的解,这些情况的点有什么特点(后来会发现,很多时候都是寻找的角点)。

3.1.1KLT算法的原理,其实其跟踪效果并非太准,后来有很多提出的校正的方法

其中我目前看到比较实用的就是TLD算法的作者Zdenek Kalal在他2010年ICPR上的文章Forward-Backward Error: Automatic Detection of Tracking Failures提出的方法看起来非常不错,我正动手实现之。

3.1.2项目假设

先说KLT算法的几个前提假设:
  1)亮度恒定
  2)时间连续或者是运动是“小运动”
3)空间一致,临近点有相似运动,保持相邻

3.2原理

如果判断一个视频的相邻两帧I、J在某局部窗口w上是一样的,则在窗口w内有:I(x, y, t) = J(x’, y’, t+τ);
亮度恒定的假设(假设1)即为了保证其等号成立不受亮度的影响;

假设2是为了保证KLT能够找到点;

假设3则为以下原因假设(即对于同一个窗口中,所有点的偏移量都相等):在窗口w上,所有(x, y)都往一个方向移动了(dx, dy),从而得到(x’, y’),即t时刻的(x, y)点在t+τ时刻为(x+dx, y+dy),所以寻求匹配的问题可化为对以下的式子寻求最小值,或叫做最小化以下式子:


用积分来表示上述式子,以上式子可等效为:

这个式子的含义,即找到两副图像中,在W窗口中,I、J的差异,其中I以x-d/2为中心,J以x+d/2为中心,w/2为半径的一个矩形窗口间的差异,好吧,结合我们微积分的知识,函数ε(d)要取得最小值,这个极值点的导数一定为0,即

的值为0。

由泰勒展开的性质:

可以得到:



于是,问题转化为:


其中:

从而,问题即为:

又,

即其等式可看作为:

其中,Z为一个22的矩阵,

e为一个2
1的向量,是计算的残差

3.3求解分析

求解方程为了要使d能够得到解,则Z需要满足条件,即Z*Z’矩阵可逆,其中Z’为Z矩阵的转置(ZT),在一般情况下,角点具有这样的特点。但不一定能得到精确解,可以利用牛顿迭代法求解,当残差e小于一定阈值时,就认为得到了近似解。

另外,KLT对于图像中的目标,并不是目标框和跟踪框内的所有的点都求取偏移量,而是选择一些特征不变的角点(corners),可以不同的特征不变的角点作为跟踪点,比如SIFT、SURF、FAST、SUSAN、HARRIS等。

在这里shi-tomasi提出了一种Good Features的角点。他们认为,(5)式中的对称矩阵Z包含了噪声和良好条件,当矩阵Z的两个特征值较小时,意味着以该点为中心W为窗口内是平坦的;一大一小的两个特征值,对应无方向的纹理特征;两个较大的特征值代表了当前点是角点或者椒盐纹理。所以,当两个特征值大于一定阈值时,选择这个点作为角点。

原文链接:https://blog.csdn.net/irobot_davinci/article/details/29635199

综上所述,当我们采用角点进行跟踪时,如果通过方程Zd=e解得的残差e足够小(设定的阈值),认为是跟踪到的一个角点,并求出了角点的偏移d。

在OpenCV里面,找角点的函数可用

void cvGoodFeaturesToTrack(const CvArr* imageCvArr* eigImage, CvArr* tempImageCvPoint2D32f* cornersint* cornerCountdouble qualityLeveldouble minDistanceconst CvArr* mask=NULLint blockSize=3int useHarris=0 //一般采用Harris角点double k=0.04 );

然后可以通过函数cvCalcOpticalFlowPyrLK进行跟踪(好像OpenCV里面调用LK的函数不止这一个,这个是金字塔计算):

void cvCalcOpticalFlowPyrLK(const CvArr* prev,const CvArr* curr,CvArr* prevPyr,CvArr* currPyr,const CvPoint2D32f* prevFeatures,CvPoint2D32f* currFeatures,int count,CvSize winSize,int level,char* status,float* track error,CvTermCriteria criteria,int flags );

3.2模板自适应更新策略:




3.3 思路


参考:https://blog.csdn.net/qq_43409984/article/details/89606194

N.0傅里叶变换的补充

图像的空间变换,但是空间变换无法反映图像的频率分布信息,随着傅里叶变换的诞生,这一问题得到了解决,傅里叶变换也被研究者誉为是“图像处理的第二种语言”。正在人们为之欢心鼓舞之时,研究者有发现傅里叶变换也存在着不足,它在空域上无任何分辨,不能作局部分析。针对于此,D.Gabor 于1946年提出了加窗傅里叶变换,也就是著名的Gabor变换,它通过引入一个时间局部化“窗函数”改进了傅里叶变换的不足,但其窗口大小和形状都是固定的,没有从根本上弥补傅里叶变换的缺陷。小波变换的提出从根本上解决了这一难题,它有一个灵活可变的时间—频率窗,能有效地从信号中提取信息,通过伸缩和平移等运算功能对函数或信号进行多尺度细化分析,“数学显微镜”的美誉也因此得来。

2月25日 局域不变特征的目标跟踪,SURF算子,KLT算子相关推荐

  1. 直播预告|5月25日14:00 AAAI 专场二

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 5月25日14:00,本期我们邀请到AAAI的八位学者给大家带来精彩的分享! 5月25日 14:00-14:30 刘方鑫: 上海交通大学 ...

  2. Silverlight/Windows8/WPF/WP7/HTML5周学习导读(6月25日-7月1日)

    Silverlight/Windows8/WPF/WP7/HTML5周学习导读(6月25日-7月1日) 本周Silverlight学习资源更新 用Silverlight做淘宝应用 往事如锋 基于 Si ...

  3. 第四范式陈雨强:万字深析工业界机器学习最新黑科技 By 机器之心2017年7月25日 16:38 近日,全球最顶级大数据会议 Strata Data Conference 在京召开。Strata 大

    第四范式陈雨强:万字深析工业界机器学习最新黑科技 By 机器之心2017年7月25日 16:38 近日,全球最顶级大数据会议 Strata Data Conference 在京召开.Strata 大会 ...

  4. 计算机二级和省考撞车了,事考、省考撞车?7月25日笔试,该怎么选?

    原标题:事考.省考撞车?7月25日笔试,该怎么选? 近日网上有消息称,2020年省考笔试时间将定于7月25日,与此同时,2020年全国事业单位分类统考时间也定于7月25日笔试.所以,今年省考和事考这是 ...

  5. 王者服务器维修2019年四月份,王者荣耀4月25日更新内容 王者荣耀2019年4月25日全服不停机更新公告...

    王者荣耀在2019年4月25日早上8点半对全服进行不停机更新,本次更新后会上线王者快跑活动玩法,还有2019年的55开黑节的第一波活动,下面小编为大家带来了王者荣耀2019年4月25日全服不停机更新公 ...

  6. fxmarket:9月25日黄金、沪深300、恒指策略分析

    一.市场综述 国内股指昨天冲高回落震荡整理,创业板走势类似,截止收盘,上证综指涨0.28%,上证50期指收涨0.22%,中证500期指下跌0.24%,沪深300期指微跌0.01%:北上资金方面,沪股通 ...

  7. 【原创】2009年8月25日老谷项目管理MSN群专题—敏捷生态

    12:29:29: 今天我们的主题是"敏捷生态"   12:29:45: 有幸请到的是我的老朋友,敏捷专家陈勇先生   12:29:46: [系统提示]AlexQin将昵称更改为A ...

  8. 【贪玩巴斯】带你一起攻克英语语法长难句—— 第五章——尾声的凯旋:状语和状语从句 ——2022年2月25日-3月17日

    [贪玩巴斯]带你一起攻克英语语法长难句-- 第五章--尾声的凯旋:状语和状语从句 --2022年2月25日 1.形容词和副词(包括短语) 1.1 形容词(短语) 2.2 副词(短语) 2.什么是状语? ...

  9. 王者服务器维护什么时间结束8月25,8月25日体验服停机更新公告

    亲爱的召唤师: 为了增加体验服内容的丰富性和版本的稳定性,我们计划2017年8月25日19:30-8月25日20:30(19:00关闭PVP)对<王者荣耀>体验服进行停机更新. 更新完成时 ...

  10. 微众银行张开翔: FISCO BCOS - 开放的区块链实践之道 | 11月25日【区块链技术与实践】论坛...

    张开翔老师,微众银行区块链首席架构师. 张老师在互联网业和金融行业工作多年,有丰富的分布式系统和海量服务实践经历,于2015年专注投入区块链.隐私计算的技术和行业研究,主持微众银行区块链全栈技术体系设 ...

最新文章

  1. 用深层神经网络解释大脑的运作
  2. echarts堆叠图tooltip中如何仅展示鼠标当前位置相应的指标数据
  3. Flex与.NET互操作系列文章
  4. 执行setenv ethaddr的时候提示Can't over write的原因及解决方法
  5. PHP 面向对象:类和对象
  6. 给你的数据来一个顶层设计
  7. numpy 矩阵 秩_Python(NumPy):集合只能映射秩1数组
  8. 咸鱼之王小游戏PC版鼠标模拟器实现
  9. Matlab PCA+SVM人脸识别(二)——GUI界面设计
  10. 语音翻译软件程序语言c,语音翻译app排行十大最好用的语音识别翻译软件
  11. 轻量级私有云存储企业主要功能探析
  12. 公告栏模板php代码,destoon调用自定义模板及样式的公告栏
  13. 《雍正皇帝·九王夺嫡》生态文化专有词泰译研究(第一章)
  14. html文件用excel打开乱码,如何解决IE打开Word、Excel乱码问题
  15. RQ dashboard使用
  16. 大数据热的冷思考:无法取代传统的新闻传播科研方法
  17. 2.4.XXX 内核配置 介绍
  18. 5S现场管理法(转载)
  19. 420个生活小窍门,很有用的哦!
  20. 舵机PWM信号转互斥继电器开关信号

热门文章

  1. 三维激光扫描数据处理理论及应用
  2. SpringBoot项目的测试类
  3. java io中file类_java中IO常见的IO流和file类理论总结
  4. mysql 跳过授权表_跳过授权表登录后使用replace into创建root权限用户
  5. ListView分组实现方案(一)
  6. oracle11数据库导入,Oracle11g数据库之数据导入导出与事物
  7. H.264标准(一)MP4封装格式详解
  8. oracle存档模式,Oracle学习系列之如何开启归档模式
  9. 计算机开机无法定位,开机提示无法定位程序输入点...于动态链接库CommFunc.dll上...
  10. 微星刀锋 无法进入bios_只需一键!内存性能免费提升150%!微星AMDB550超频