Struck: Structured Output Tracking with Kernels中用到的样本采样方法详解

原创 2016年08月31日 14:58:41
    最近正在学习Struck这篇文章,其中用到了极坐标采样的方式,matlab版本这部分的代码以及我的详细注释是这样的:
<span style="font-size:14px;">%(极坐标取样)
%nr为半径从里到外延伸的要分的步数
%nt为圆周旋转的步数
%以boundingBox为中心,半径分5步从里到外延伸,圆周分16步旋转
%选取5 * 16 = 80个sample,算上boundingbox总共81个sample。其中半径为奇数步时,角度要加半步。
function samples = sampler_radial_samples(boundingBox, radius, nr, nt)
    index = 1;
    samples{index} = boundingBox; %第一个sample为boundingbox
    rstep = radius / nr;    %半径从里到外延伸每一步走的像素
    tstep = 2 * pi / nt;   %圆周上旋转每一次的角度,单位旋转角度
    for ir = 1 : nr   %遍历从里到外延伸的步数 
        phase = mod(ir, 2) * tstep / 2;   %mod取余,也就是半径为偶数步时,phase为0;半径为奇数步时,phase为单位旋转角度的一半
        for it = 0 : nt - 1  %遍历圆周旋转的步数,从0开始,到15
            dx = ir * rstep * cos(it * tstep + phase);   %x坐标增量=第几步*单位步长*cos(第几个旋转角*单位旋转角度+phase)
            dy = ir * rstep * sin(it * tstep + phase); 
            s.x = boundingBox.x + dx;    %得到移动后的移动窗口的x坐标
            s.y = boundingBox.y + dy;    %得到移动后的移动窗口的y坐标
            s.w = boundingBox.w;
            s.h = boundingBox.h;     %移动窗口的高度和宽度保持不变
            index = index + 1;
            samples{index} = s;         %记录移动后的移动窗口信息,也就是此时这个样本的位置     
        end
    end  %以上过程其实获取了图像中的 nr*nt+1 个样本框</span>

     光看代码其实对采样的情况理解得不太直观,所以我运用matlab写了生成gif动画的程序,把采样的结果很直观的表现出来,代码如下:

 %极坐标取样得到的sample是怎么在boundingbox周围的呢??画出来看一下
    num = length(samples);   %获取samples的数目
    filename = 'D:\MenghanZhou\matlab_work\ICCV11_struck-matlab\ICCV11_struck-matlab\gif\sampler_radial_samples.gif';
    figure;
    axis ij
    axis([-50 160 -50 160]);  % 设置坐标轴在指定的区间  
    title='极坐标取样过程';
    hold on;
    for i = 1 : num   %遍历samples的数目
        s = samples{i};
        rectangle('Position',[s.x,s.y,s.w,s.h],'EdgeColor','r');  %画出每个sample框
        scatter(s.x,s.y,'bo');  %标出每个sample框的左上角
        pause(.5);
        drawnow;  %动态更新
        
        %保存成gif动画
        f = getframe(gcf);
        imind = frame2im(f);
        [imind,cm] = rgb2ind(imind,256);
        if i == 1
            imwrite(imind,cm,filename,'gif', 'Loopcount',inf,'DelayTime',0.2);
        else
            imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',0.2);
        end
        
    end

    这样,就生成了gif动画,其中第一个sample框是上一帧目标的真实位置,然后框的左上角(用蓝色圆圈标出)以极坐标的形式移动,半径为奇数步时,角度要加半步,这样在boundingbox周围生成了5*16=80个sample框,也就是一共81个sample框(加上第一个boundingbox框)



非常喜欢matlab的绘图功能,方便对代码的理解,也方便思路展示~~微笑



版权声明:本文为博主原创文章,未经博主允许不得转载。

跟踪算法 Struck代码

  • 2014年10月15日 19:04
  • 432KB
  • 下载

Struck 跟踪算法(二)

下面开始读具体源码 config.h文件 /* * Struck: Structured Output Tracking with Kernels * * Code to accompany...
  • sunboyiris
  • sunboyiris
  • 2014年07月27日 08:41
  • 3934

Struck Structured Output Tracking with Kernels阅读笔记

今天讲讲struck,最近感觉tracking的model进步是日新月异,比如大牛Dr. Chao Ma,最近在他的homepagehttps://sites.google.com/site/chao...
  • carrierlxksuper
  • carrierlxksuper
  • 2015年12月08日 21:56
  • 2906

目标跟踪学习系列八:Struck:Structured Output Tracking with Kernels(2011 ICCV)

看来人机交互不是我想象的那么简单的,还是要花很多的功夫来打基础的。于是再来学习Tracking相关的一些文章算法。 在认真的学习了压缩跟踪(CT)以后,确实觉得自己对Tracking有了比较...
  • u012192662
  • u012192662
  • 2014年09月24日 17:19
  • 7552

Struck: Structured Output Tracking with Kernels中用到的样本采样方法详解

matlab生成gif动画
  • sgfmby1994
  • sgfmby1994
  • 2016年08月31日 14:58
  • 422

MATLAB 分形树生成算法(二)

function tree(n,a,b) % tree(8,pi/8,pi/8),n为分形树迭代次数 %a,b为分枝与竖直方向夹角 %x1,y1,x2,y2为初始线段两端点坐标,nn为迭代次数 n=8...
  • sunboyiris
  • sunboyiris
  • 2014年03月12日 18:17
  • 2041

Struck: Structrued Output Tracking with Kernels 论文笔记

最新的跟踪综述上性能表现最好的方法,论文笔记
  • lanbing510
  • lanbing510
  • 2014年10月24日 00:37
  • 4991

Struck跟踪算法学习

这几天正在学习这个算法。算法是ICCV2011提出的: 1)S. Hare, A. Saffari,and P. H. S. Torr, “Struck: Structured output tra...
  • Danielee
  • Danielee
  • 2016年12月04日 13:09
  • 785

MATLAB 分形树生成算法(一)

function Fractree(ss,ms,sf,A); % 递归法生成分形树 % ss is Starting size % ms is Minimum Size % sf is S...
  • sunboyiris
  • sunboyiris
  • 2014年03月12日 18:15
  • 2857

跟踪算法及相关主页

推荐一个博客:https://github.com/pbypby,主页上有: Popular repositories kcf_tracker2 c demo for kernelized c...
  • kezunhai
  • kezunhai
  • 2015年12月08日 10:48
  • 2156
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Struck: Structured Output Tracking with Kernels中用到的样本采样方法详解
举报原因:
原因补充:

(最多只允许输入30个字)