mosse(Minimizing the Output Sum of Squared Error)代码解读


mosse论文解读:https://blog.csdn.net/fjswcjswzy/article/details/106172434


mosse作为使用相关滤波进行目标跟踪的鼻祖,必须得把这玩意弄明白才能进行接下来的研究,我就从代码的角度,一行一行理解代码,保证弄得一清二楚。此文的代码为matlab,其他语言类似

步骤一: 读取视频帧

首先,要做的事将视频帧读入,代码应该比较好理解

datadir = '../data/';
dataset = 'Surfer';
path = [datadir dataset];
img_path = [path '/img/'];
D = dir([img_path, '*.jpg']);
seq_len = length(D(not([D.isdir])));

if exist([img_path num2str(1, '%04i.jpg')], 'file'),
    img_files = num2str((1:seq_len)', [img_path '%04i.jpg']);
else
    error('No image files found in the directory.');
end

步骤二:在第一帧中选择要跟踪的目标

在把视频帧读入后,就要在第一帧中用矩形框 选出我们要跟踪的目标,并且找出所选矩形框的中心center

im = imread(img_files(1,:));
f = figure('Name', 'Select object to track'); imshow(im);
rect = getrect;
close(f); clear f;
center = [rect(2)+rect(4)/2 rect(1)+rect(3)/2];

这里我们的第一帧和要跟踪的目标如下图:

在这里插入图片描述

步骤三:画出高斯图像

画出高斯的代码为:

sigma = 100;
gsize = size(im);
[R,C] = ndgrid(1:gsize(1), 1:gsize(2));
g = gaussC(R,C, sigma, center);
g = mat2gray(g);

这里高斯滤波器的函数为:

function val = gaussC(x, y, sigma, center)
    xc = center(1);
    yc = center(2);
    exponent = ((x-xc).^2 + (y-yc).^2)./(2*sigma);
    val       = (exp(-exponent)); 
  • 这里我们使用的图片大小是360x480 ,所以R和C都是大小为360x480的矩阵,

  • 将R,C, sigma,center当做参数传入gaussC函数,注意这里的高斯做了一些改变,正常来说二维高斯曲面的公式(x,y代表像素的模板坐标,模板中心位置为原点)为:

    g ( x , y ) =

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值