目标跟踪仿射变换矩阵设计详解与编程实现

    笔者近期研究目标跟踪,涉及到运动表观模型的动态建模,需要进行仿射变换。我阅读了L1-APG和IVT算法、ALSA算法、SCM算法中的仿射变换,发现这几种算法的仿射变换实现代码有非常大的差异。其中IVT算法的仿射变换似乎在各种视觉跟踪算法中用得更多,但是代码上没有做很详细的解释,我查找各类原创的论文、博客,似乎也没有讲清楚IVT仿射变换代码实现的基本原理。IVT中用到affparam2mat.m这个函数进行仿射矩阵的编程,但是我发现这个代码和一般的仿射变换公式推导对不上号,于是我自己试图去揣测作者的想法,完整地重建出这个作者仿射变换矩阵的设计过程。IVT这个仿射变换的关键在于,第一:它假定仿射变换之前,那个矩形的中心是在原点的,第二:IVT的仿射是两步完成的,先做旋转切变,然后再做平移;第三:IVT仿射变换中的A矩阵,是采取奇异值分解的方式进行的,需要用到旋转角,切变角,尺度变换因子,高宽比这四个随机变量。因此,这个体系就和L1-APG完全不同,具体设计细节如下:

通过上述推导,再回过头来看affparam2mat.m这个代码,就非常清晰了,我们来看看这个实现过程,与我的推导是一一对应的:

function q = affparam2mat(p)

% function q = affparam2mat(p)

%

%   input  :  p, a 'geometric' affine parameter;

%   output  : q, a 2x3 matrix;

%

% The functions affparam2geom and affparam2mat convert a 'geometric'

% affine parameter from/to a matrix form (2x3 matrix).

%

% affparam2mat converts 6 affine parameters (x, y, th, scale, aspect, skew) to a 2x3 matrix, 

% and affparam2geom does the inverse.

%

%    p(6) : [dx dy sc th sr phi]'

%    q(6) : [q(1) q(3) q(4); q(2) q(5) q(6)]

%

% Reference "Multiple View Geometry in Computer Vision" by Richard

% Hartley and Andrew Zisserman. 

 

% Copyright (C) Jongwoo Lim and David Ross.  All rights reserved.

% Thanks to Jongwoo Lim and David Ross for this code.  -- Wei Zhong.

 

sz = size(p);

if (length(p(:)) == 6)

  p = p(:);

end

s = p(3,:);  th = p(4,:);  r = p(5,:);  phi = p(6,:);

cth = cos(th);  sth = sin(th);  cph = cos(phi);  sph = sin(phi);

ccc = cth.*cph.*cph;  ccs = cth.*cph.*sph;  css = cth.*sph.*sph;

scc = sth.*cph.*cph;  scs = sth.*cph.*sph;  sss = sth.*sph.*sph;

q(1,:) = p(1,:);  q(2,:) = p(2,:);

q(3,:) = s.*(ccc +scs +r.*(css -scs));  q(4,:) = s.*(r.*(ccs -scc) -ccs -sss);

q(5,:) = s.*(scc -ccs +r.*(ccs +sss));  q(6,:) = s.*(r.*(ccc +scs) -scs +css);

q = reshape(q, sz);

 

这个代码我想一定也困扰了很多做目标跟踪的科研工作者,如果大家阅读我推导过程中存在困惑,欢迎和笔者讨论,我的QQ是:553702786。

                                                                                                                                                                     闽南师范大学 陈颖频

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值