基于Camshift算法的目标追踪

本文介绍了基于Camshift算法的目标追踪,首先简述了Meanshift算法,包括其opencv版本和matlab实现,详细解释了反向投影算法。接着深入探讨了Camshift算法,翻译了相关论文内容,阐述了其连续自适应分布和在opencv中的实现解析。
摘要由CSDN通过智能技术生成

基于Camshift算法的目标追踪

agneto

最近在做无人机的目标追踪,于是了解了下camshift算法。找了好多资料,发现好多论文中的概念没有解释,就在这里整理下,顺便翻译了部分camshift论文内容。

1.公式全部LaTeX手打,写了简单的meanshift算法的matlab实现。
2.原论文的部分翻译在最下面,点目录就可以了。
3.opencv的camshift整个解析我也贴出来,整理了好久。


Meanshift算法简介

Meanshift算法是camshift算法的核心,处理方法可以说几乎相同,camshift仅仅是针对meanshift在连续帧情况下的优化版本罢了。meanshift是在一幅图上通过概率密度不断迭代找到最优解,而camshift是在连续帧情况下,一副一副图采用meanshift时优化了,继承上一帧图像最优解的窗口为起点继续meanshift迭代下一帧而不是新一帧又从头开始搜索。

Meanshift的opencv版本

Created with Raphaël 2.1.0 选中ROI区域,并计算概率直方图 根据直方图进行反向投影算法(backprojection) 计算moment,通过质心进行迭代

这是opencv中meanshift的简要流程图,moment的概念在下面论文那里。
在下面写了代码的解读。

back-projection算法

反向投影算法简要讲就是在计算图像的直方图后将直方图各分区再投影回去作为像素的值。一般讲rgb图像转换为hsv色域再取h(hue)分量进行反向投影。

opencv实现:在histogram.cpp里面,先调用cv::calcBackProject,在里面再根据输入参数格式调用原函数模板calcBackProj_,源码就不在这里贴了。

Measnshift算法详细介绍

上面是opencv版本的meanshift算法,但按照1995年论文(链接)的优化版本,选定roi区域的概率密度计算增加了一个权重函数,根据距离不同贡献也不同。

非参数估计

meanshift算法属于非参数估计,需要的先验知识少,从目前数据进行估计。这里有篇博客(链接,这个部分不翻了网上好多解释)解释得很清楚,里面详细讲解了三种非参数估计方法。要了解meanshift原理需要了解推荐这篇博客里的核密度估计

核密度估计

看完上面那篇博客的介绍,就可以简单了解到,核密度估计与直方图十分相似。先拿公式吓唬一下:

f(x)=1nhi=1nK(xxih)

h是 带宽,K(x)是 核函数。直方图是将值域划分为几个区间进行累加,而核密度估计则是在将值域划分为几个区域(称之为bin)之后,每个数据不再是以1为单位进行累加,而是以每个数据乘以一个核函数K(x)作为权重进行累加。

从wiki上扣的图,直方图和核密度估计得区别一目了然

K(x)一般采用高斯核函数和Epanechnikov核函数。同时顶一个profile函数满足 K:[0,)R ,即 K(x)=k(||x||) ,原式子变成:

f(x)=1nhi=1nk(||xxih||2)

Meanshift的matlab实现

过程解释

计算权重有点特别

Created with Raphaël 2.1.0 选中ROI区域,根据图像位置用epanechnikov核计算位置权重 计算rgb权重,即r*256+g*16+b,反向投影 更新meanshift向量,移动重心
clear all;
close all;
%读入追踪图像
imglocation='/Users/Desktop/img.jpg'  %图像储存位置
I=imread(imglocation);    
[temp,rect]=imcrop(I);      %imcrop用于选取ROI区域
[a,b,c]=size(temp);         %a:row,b:col 
%计算距离权重矩阵
y(1)=a/2;  
y(2)=b/2;  
tic_x=rect(1)+rect(3)/2;  
tic_y=rect(2)+rect(
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值