function P = dlt34_zisserman(xk_tilde, Xk_tilde)
	%% number of similarity relations we have
	N			= size(xk_tilde, 2);
	assert(size(Xk_tilde,2) == N);
	assert(size(xk_tilde,1) == 3);
	assert(size(Xk_tilde,1) == 4);
	
	%% set up the reduced measurement matrix A
	% A is a 2n x 12 matrix where individual 2x12 blocks Ai satisfy
	%	Ai p = 0
	% where p is a 12 x 1 vector containing the entries of the projection
	% matrix P
	A			= cell(N, 1);
	for k = 1 : N
		x		= xk_tilde(:, k);
		X		= Xk_tilde(:, k);
		% Equation (7.2) 
		A{k}	= [zeros(1,4), -x(3)*X', x(2)*X'; x(3)*X', zeros(1,4), -x(1)*X'];
	end
	A			= cell2mat(A);
	
	%% solution
	[~,~,p_vec]	= svds(A, 1, 'smallest');
	P			= reshape(p_vec, [4 3])';
end