Struck: Structured Output Tracking with Kernels中用到的样本采样方法详解
来源:互联网 发布:红色名录 知乎 编辑:程序博客网 时间:2024/05/30 23:06
最近正在学习Struck这篇文章,其中用到了极坐标采样的方式,matlab版本这部分的代码以及我的详细注释是这样的:
这样,就生成了gif动画,其中第一个sample框是上一帧目标的真实位置,然后框的左上角(用蓝色圆圈标出)以极坐标的形式移动,半径为奇数步时,角度要加半步,这样在boundingbox周围生成了5*16=80个sample框,也就是一共81个sample框(加上第一个boundingbox框)
<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的绘图功能,方便对代码的理解,也方便思路展示~~
0 0
- Struck: Structured Output Tracking with Kernels中用到的样本采样方法详解
- Struck: Structured Output Tracking with Kernels
- Struck Structured Output Tracking with Kernels阅读笔记
- 目标跟踪学习系列八:Struck:Structured Output Tracking with Kernels(2011 ICCV)
- 目标跟踪学习系列九:Struck:Structured Output Tracking with Kernels头文件代码框架
- 目标跟踪学习系列十:Struck:Structured Output Tracking with Kernels 代码调试
- Struck: Structrued Output Tracking with Kernels 论文笔记
- structed_structured output tracking with kernels
- Struck算法中每个sample框中矩形框的选取采样方法详解
- 目标跟踪系列十三:Exploiting the Circulant Structure of Tracking-by-detection with Kernels 公式详细的推导
- 项目中用到的BitMap二次采样类
- 目标跟踪系列十一:Exploiting the Circulant Structure of Tracking-by-detection with Kernels代码思路
- Exploiting the Circulant Structure of Tracking-by-detection with Kernels 笔记
- 阅读笔记4:CSK:Exploiting the Circulant Structure of Tracking-by-detection with Kernels
- Exploiting the Circulant Structure of Tracking-by-detection with Kernels代码思路
- Supervised Hashing with Kernels
- 目标跟踪系列十二:Exploiting the Circulant Structure of Tracking-by-detection with Kernels代码关键记录
- 语言模型中用到的几种采样之不全版
- qt quick开发常用的SLOT(保存、加载、另存)代码
- 新人首发
- Rails content_tag vs tag
- 使用Toolbar遇到的问题
- 新人首发
- Struck: Structured Output Tracking with Kernels中用到的样本采样方法详解
- json解析,我的幼稚
- 不同的Linux操作系统下安装PCL的方法
- 新人首发
- Android支付宝支付
- 【技术分享】Windows程序的数字签名校验绕过漏洞 360bobao
- 新人首发
- Maven - 仓库
- 新人首发