sustaining_gazes/matlab_version/pdm_generation/nrsfm-em/mstep_update_shapebasis.m
2016-04-28 15:40:36 -04:00

23 lines
627 B
Matlab

function [newS_bar, newV] = mstep_update_shapebasis(P, E_z, E_zz, RR, Tr, S_bar, V)
%[newS_bar, newV] = mstep_update_shapebasis(P, E_z, E_zz, RR, Tr, S_bar, V)
% Computes an improved version of S_bar and V (Eq 21)
% E_z is KxT, E_zz is a (F*K)xK matrix
% V is (3*K)xJ and S_bar is 3xJ
K = size(E_z,1);
[T, J] = size(P); T = T/2;
Uc = P(1:T, :) - Tr(:,1)*ones(1,J);
Vc = P(T+1:2*T, :) - Tr(:,2)*ones(1,J);
vecH_hat = computeH(Uc, Vc, E_z, E_zz, RR);
H_hat = reshape(vecH_hat, 3*J, K+1);
newS_bar = reshape(H_hat(:,1), 3, J);
newV = zeros(3*K, J);
for kk=1:K,
newV((kk-1)*3+[1:3],:) = reshape(H_hat(:,kk+1), 3, J);
end