www.pudn.com > calibr8.zip > minThem.m


function [T, R, fl, u0, v0, b1, b2, PC, errs] = minThem()
%DEVELOPMENT PHASE
%
% [T, R, fl, u0, v0, b1, b2] = iterateThem()
%
% performs one iteration 

global Gfl;
global Gu0;
global Gv0;
global Gb1;
global Gb2;
global GSp;
global Gno_views;
global GIpts;
global GHSp;
global GA;

disp( 'translation: x, y, z;  rotation: alpha, beta, gamma' ); 

% minimize 4 unknowns

for i = 1:Gno_views
	[Te, Re, err] = eval( ['getTR3( GIpts{' num2str(i) '}, GHSp{' num2str(i) '}, GA{' num2str(i) '}, Gfl, Gu0, Gv0, Gb1, Gb2 )'] );
	eval( ['Te' num2str(i) ' = Te;'] );
	eval( ['Re' num2str(i) ' = Re;'] );
	eval( ['errs(' num2str(i+1) ',1) = err;'] );
end;

HSp{1} = GHSp{1};

HTe1 = eye(4);
HRe1 = eye(4);
HTe1(1:3,4) = Te1(:,3);
HRe1(1:3,1:3) = Re1;

for j = 2:Gno_views
	eval( ['HTe' num2str(j) ' = eye(4);'] );
	eval( ['HRe' num2str(j) ' = eye(4);'] );
	eval( ['HTe' num2str(j) '(1:3,4) = Te' num2str(j) '(:,3);'] );
	eval( ['HRe' num2str(j) '(1:3,1:3) = Re' num2str(j) ';'] );
	eval( ['dKe' num2str(j) ' = inv( HTe1 ) * inv( HRe1 ) * HRe' num2str(j) ' * HTe' num2str(j) ';'] );
	pom = eval( ['GHSp{' num2str(j) '}'] );
	pom = hext(pom(:,1:3));
	pom = pom';
	eval( ['HSp{' num2str(j) '} = dKe' num2str(j) ' * pom;'] );
	eval( ['pom = HSp{' num2str(j) '};'] );
	pom = pom';
	eval( ['HSp{' num2str(j) '} = hnorm( pom );'] );	
end

PC = makePC( HSp, GIpts );


[AE, errstat] = estDLT( PC );
errs(1,1) = errstat(1,1);

[Te, Re, Ine, Lae] = decDLT( AE );

T = eye( 3 );
T(:,3) = Te';

R = Re;

u0 = Ine(1,1);
v0 = Ine(1,2);
b1 = Ine(1,3);
b2 = Ine(1,4);
fl = Ine(1,5);