【计算机视觉】角度转换模型VTM

VTM简介

多角度步态检测问题解决的方法通常有三类:利用多摄像机系统建立3D模型;提取与角度无关的步态特征;角度转换模型。

角度转换模型(View Transformation Model)最基础的是利用奇异值分解(Singular Value Decomposition, SVD),将特征矩阵分解为与角度无关的向量,与对象无关的向量,以及特征值。再利用提取出来的与对象无关的向量将特征从当前角度转换到对应角度。模型整体流程如下:

【计算机视觉】角度转换模型VTM_第1张图片

View Transformation Model

首先利用多个对象在不同角度下的特征构造特征矩阵,之后对矩阵进行奇异值分解。

其中,表示第m个对象在第n个角度下的特征,为对象m的特征值,与角度无关,,即为得到角度转换向量。角度转换的推导如下:

其中,表示的伪逆。

即通过向量P,可通过对象m任意角度 i 的特征得到角度 j 下的特征。

MATLAB代码

主要是用到了svd,就直接用matlab写的代码,再把得到的P存下来。

[sk,sm,sna]=size(v_m_features);
v_t_m_tmp = reshape(v_m_features,sk*sm,sna);
v_t_m = reshape(v_t_m_tmp', sk*sna,sm);
[U,S,V]=svd(v_t_m,'econ');
%[U,S,V]=svd(v_t_m);
P=U*S;
[spm,spn]=size(P);
v_t_p=zeros(sna,spn,sk);
v_t_p_ij=zeros(sna,sna,sk*sk);
for ki=1:sk
    for ii=1:sna
        nai=(ki-1)*sna+ii;
        v_t_p(ii,:,ki)=P(nai,:);
    end
end
for i=1:sk
	for j=1:sk
		ij=(i-1)*sk+j;
        v_t_pj=pinv(v_t_p(:,:,j));
		v_t_p_ij(:,:,ij)= v_t_p(:,:,i)*v_t_pj;
	end
end


 

(转载请注明作者和出处:http://blog.csdn.net/xiaowei_cqu 未经允许请勿用于商业用途)

 

你可能感兴趣的:(【计算机视觉】角度转换模型VTM)