%%% Computes the extrinsic parameters for all the active calibration images
check_active_images;
N_points_views = zeros(1,n_ima);
for kk = 1:n_ima,
if exist(['x_' num2str(kk)]),
eval(['x_kk = x_' num2str(kk) ';']);
eval(['X_kk = X_' num2str(kk) ';']);
if (isnan(x_kk(1,1))),
if active_images(kk),
fprintf(1,'Warning: Cannot calibrate with image %d. Need to extract grid corners first.\n',kk)
fprintf(1,' Set active_images(%d)=1; and run Extract grid corners.\n',kk)
end;
end;
if active_images(kk),
N_points_views(kk) = size(x_kk,2);
[omckk,Tckk] = compute_extrinsic_init_fisheye(x_kk,X_kk,fc,cc,kc,alpha_c);
[omckk,Tckk,Rckk,JJ_kk] = compute_extrinsic_refine_fisheye(omckk,Tckk,x_kk,X_kk,fc,cc,kc,alpha_c,20,thresh_cond);
if check_cond,
if (cond(JJ_kk)> thresh_cond),
active_images(kk) = 0;
omckk = NaN*ones(3,1);
Tckk = NaN*ones(3,1);
fprintf(1,'\nWarning: View #%d ill-conditioned. This image is now set inactive.\n',kk)
desactivated_images = [desactivated_images kk];
end;
end;
if isnan(omckk(1,1)),
%fprintf(1,'\nWarning: Desactivating image %d. Re-activate it later by typing:\nactive_images(%d)=1;\nand re-run optimization\n',[kk kk])
active_images(kk) = 0;
end;
else
omckk = NaN*ones(3,1);
Tckk = NaN*ones(3,1);
end;
else
omckk = NaN*ones(3,1);
Tckk = NaN*ones(3,1);
if active_images(kk),
fprintf(1,'Warning: Cannot calibrate with image %d. Need to extract grid corners first.\n',kk)
fprintf(1,' Set active_images(%d)=1; and run Extract grid corners.\n',kk)
end;
active_images(kk) = 0;
end;
eval(['omc_' num2str(kk) ' = omckk;']);
eval(['Tc_' num2str(kk) ' = Tckk;']);
end;
check_active_images;