文章和代码下载地址:

MOSSE: David S. Bolme, J. Ross Beveridge, Bruce A. Draper, Yui Man Lui. "Visual Object Tracking using Adaptive Correlation Filters."

GitHub - xingqing45678/Mosse_CF(代码和文章都在里面)

看了网上很多文章,大都是说“两个信号越相似,其相关值越高。在跟踪,就是找到与跟踪目标响应最大的项。”然后将相关的公式摆出来,看得我一头雾水,可能是我自己的基础不太好吧,最后查了很多资料,总算感觉自己有点明白了,所以将其记录下来,如果有不对的地方请指正。

一、对2D相关的理解

首先,相关是相关,卷积是卷积,不要混为一谈!!!!

互相关是用来度量两个信号在某个时刻的相似程度,对于机器视觉领域来说就是指两个图像patch的互相匹配的程度。

1、相关操作

图像的相关公式:,其中称为相关核(Kernel),具体到每一个像素表示为:

注:此图为网上转载 ,如图所示,Input Image为输入的图像。Kernel为相关核 ,也可以称作我们提前训练好的滤波器模板。Output image即为输出响应图像。

步骤:

(1)滑动核,使其中心位于输入图像的像素上

(2)利用上式求和,得到输出图像的像素值

(3) 充分上面操纵,直到求出输出图像的所有像素值

例:计算输出图像像素值为

2、卷积操作

图像的卷积公式:,其中称为卷积核(Kernel),具体到每一个像素表示为:

注:此图为网上转载(然后我p了一下) ,如图所示,Input Image为输入的图像。Kernel为相关核 ,也可以称作我们提前训练好的滤波器模板。Output image即为输出响应图像。

步骤:

(1)将卷积核围绕中心旋转180度

(2)滑动核,使其中心位于输入图像的像素上

(3)利用上式求和,得到输出图像的像素值

(4)充分上面操纵,直到求出输出图像的所有像素值

例:计算输出图像像素值为

3、差异:

(1)引用专业术语就是:Two-dimensional correlation is equivalent to two-dimensional convolution with the filter matrix rotated 180 degrees.

白话:卷积将核旋转了180度。

(2)物理意义:相关可以反应两个信号相似程度,卷积不可以。

(3)卷积满足交换律,,相关不可以。

(4)卷积可以直接通过卷积定理(时域上的卷积等于频域上的乘积)来加速运算,相关不可以。

二、对相关滤波跟踪器的理解

相关滤波跟踪器就是通过互相关(cross-correlation)来定位目标当前帧所在位置的。响应图最大值对应的位置即为当前时刻预测的目标位置,具体流程如下:

如果我们在时域内求解响应图,运算量巨大,那么如何利用卷积定理将其转换到频域???

用卷积来表示相关就是:

利用卷积定理转换到频域为:

简写为:

其中,表示点乘。所以将我们的输入图像和滤波器通过算法变换到频域后,直接将他们相乘,然后再变换回时域(也就是图像的空域)就可以得到响应图。

几点重要的解释:

(1)输入的图像是指目标检测区域(MOSSE的检测区域就是目标所在区域),可能是像素值也可能是提取的特征(eg.Hog,CN,DeepFeatures等)。

(2)滤波器(或者叫目标模板)的大小和检测区域的大小一样。因为相同大小的矩阵在频率域才可以点乘计算。

(3)当滤波器稍微偏移就会超出输入图像的范围,则需要填充数据(这就是卷积的边界效应)。然而在实际的相关滤波跟踪算法中,因为代码中直接就写频域的计算公式,所以我们不知道是如何填充边界的。常用的有三种填充方法,补零、补边界像素、循环图像,matlab中fft默认的是第三种。

三、对MOSSE的理解

经过上面的解释,应该都能明白相关滤波的检测原理,响应图峰值的位置即为当前帧目标的预测位置。为了得到响应图,那么我们求出滤波器模板频域的表示值即可:

1、预处理(不重要,一般都会进行这些操作)

(1)FFT卷积算法需要将图像和滤波器映射到拓扑结构上,边界采用循环图像的方式填充,即将图像的左边缘连接到右侧边缘,将顶部连接到底部。这就是上面所说的第三种填充方法。

(2)周期卷积会对输入数据进行周期填补,引入一些artifacts。作者通过如下如下论文中的方法减弱对输出响应的影响D. S. Bolme, B. A. Draper, and J. R. Beveridge. Average of synthetic exact filters. In CVPR, 2009. 2, 3。(具体细节可以不用深究)

(3)采用点乘余弦窗处理,使图像边缘慢慢变成零。

2、MOSSE滤波

提高算法的鲁棒性,作者对视频第一帧的跟踪窗口施加随机的仿射扰动,产生多组图像对滤波器进行初始化:

注意上式是元素点除,作者通过最小二乘法来求解:

求解过程我就不赘述了。经过一系列的推导,找到了Mosse滤波器的一个封闭解:

最后更新MOSSE滤波器如下:

原理解释还可以参考博客:相关滤波跟踪(MOSSE)_autocyz-CSDN博客_相关滤波

代码解释介绍参考博客:MOSSE 目标跟踪 解析_Fying2016的博客-CSDN博客_mosse目标跟踪

CVPR2010跟踪算法MOSSE原理及代码解析相关推荐

  1. TPAMI2015跟踪算法KCF原理及代码解析

    文章和代码下载地址: http://www.robots.ox.ac.uk/~joao/circulant/ 一.基础公式的由来 相关滤波跟踪器可以表示为最小化的岭回归问题: 表示期望相应,表示正则系 ...

  2. ICCV2017跟踪算法BACF原理及代码解析

    文章和代码下载地址: Galoogahi H K, Fagg A, Lucey S. Learning Background-Aware Correlation Filters for Visual ...

  3. CVPR2018跟踪算法STRCF原理及代码解析

    文章和代码下载地址: STRCF: Feng Li, Cheng Tian, Wangmeng Zuo, Lei Zhang, Ming-Hsuan Yang. "Learning Spat ...

  4. 视觉SLAM开源算法ORB-SLAM3 原理与代码解析

    来源:深蓝学院,文稿整理者:何常鑫,审核&修改:刘国庆 本文总结于上交感知与导航研究所科研助理--刘国庆关于[视觉SLAM开源算法ORB-SLAM3 原理与代码解析]的公开课. ORB-SLA ...

  5. 基于单层决策树的adaBoost算法思想分析和源代码解析

    基于单层决策树的AdaBoost算法思想分析和源代码解析 前言: 上一篇SVM可是废了我好鼻子劲,这一篇咱们来点愉快的东西.我们一定听说过这句俗语:"三个臭皮匠,顶个诸葛亮!" 大 ...

  6. DBNet++(TPAMI) 原理与代码解析

    paper:Real-Time Scene Text Detection with Differentiable Binarization and Adaptive Scale Fusion code ...

  7. YOLOv3原理及代码解析

    博主完整翻译了YOLOV1和YOLOV3的论文:请移步查看: YOLOV1:https://blog.csdn.net/taifengzikai/article/details/81988891 YO ...

  8. 岭回归算法的原理和代码实战

    岭回归算法的原理和代码实战 前言 学过吴恩达老师的机器学习入门课程都应该知道,在逻辑回归那一讲,吴老师提到了使用正则化来防止逻辑回归模型过拟合.而岭回归在这里的作用是一样的,同样也是防止模型过拟合.这 ...

  9. Tensorflow2.0---SSD网络原理及代码解析(二)-锚点框的生成

    Tensorflow2.0-SSD网络原理及代码解析(二)-锚点框的生成 分析完SSD网络的原理之后,一起来看看代码吧~ 代码转载于:https://github.com/bubbliiiing/ss ...

  10. 【编程实践】Raft 算法的原理 go代码实例

    文章目录 Raft 算法的原理 & go代码实例 Raft 算法的原理 使用 Go 语言实现的简单 Raft 算法示例 Raft 算法的原理 & go代码实例 Raft 算法的原理 R ...

最新文章

  1. 稀缺:你是如何陷入贫穷与忙碌的
  2. mysql tree 修改_13.1 设置更改root密码 13.2 连接mysql 13.3 mysql常用命令
  3. 寄生电容所带来的影响
  4. 一个供应商只允许一个报价单
  5. iOS 获取屏幕最上层window以及响应者
  6. linux 系统后门检测工具,Linux系统的各种后门和日志工具详细介绍[2]
  7. boost::mp11::mp_min_element_q相关用法的测试程序
  8. 双主双从(2m-2s)集群介绍和工作流程说明
  9. 快讯千树资本投资柒小佰 踏入儿童出行消费领域...
  10. 【C语言简单说】三:变量总结ASCII码扩展(5)
  11. Android - Okhttp拦截器
  12. 《ANSYS 14热力学/电磁学/耦合场分析自学手册》——2.8 工具条
  13. jms.jar 2.0_JMS API概述:JMS 1.x和JMS 2.x
  14. STM32 电机PWM控制
  15. mne进行ica分析
  16. 你是怎样毁掉自己的?
  17. 关系型数据库大数据性能优化解决方案之:分表(当前表历史表)、表分区、数据清理原则
  18. 【技术文档】《算法设计与分析导论》R.C.T.Lee等·第4章 分治策略
  19. PayPay migrated the core payment database from Aurora to TiDB
  20. 使用vs2008制作dll文件,生成动态链接库

热门文章

  1. Ruby完全自学手册
  2. android友盟分享最新,Android接入友盟统计(顺带多渠道打包)、友盟分享
  3. 如何修改阿里巴巴矢量图标库中要使用的图片
  4. linux耳机的检测原理,耳机检测原理介绍
  5. 电脑端QQ无法打开怎么办
  6. 怎么把索尼摄像机拍摄的RSV文件修复转换为MXF视频
  7. mysql 建表语句
  8. C:\Users\xx\.xxxxxx\system\tomcat\xxx\work\Catalina\localhost\ROOT(系统找不到指定文件)
  9. dubbo教程(绝对的入门到入土)
  10. Axure rp 9 的汉化破解版