gusucode.com > 基于matlab软件,实现双目视觉原理的摄像机标定,能根据各视场图像求内、外部参数 > 基于matlab软件,实现双目视觉原理的摄像机标定,能根据各视场图像求内、外部参数/TOOLBOX_calib/add_suppress.m

    
if ~exist('n_ima'),
   fprintf(1,'No data to process.\n');
   return;
end;

if n_ima == 0,
    fprintf(1,'No image data available\n');
    return;
end;

if ~exist('active_images'),
	active_images = ones(1,n_ima);
end;
n_act = length(active_images);
if n_act < n_ima,
   active_images = [active_images ones(1,n_ima-n_act)];
else
   if n_act > n_ima,
      active_images = active_images(1:n_ima);
   end;
end;

ind_active = find(active_images);

% I did not call check_active_images, because I want to prevent a break
%check_active_images;


fprintf(1,'\nThis function is useful to select a subset of images to calibrate\n');

   fprintf(1,'\nThere are currently %d active images selected for calibration (out of %d):\n',length(ind_active),n_ima);
   
   if ~isempty(ind_active),
      
      if length(ind_active) > 2,
      
   		for ii = 1:length(ind_active)-2,
      		
         	fprintf(1,'%d, ',ind_active(ii));
         	
      	end;
      	
      	fprintf(1,'%d and %d.',ind_active(end-1),ind_active(end));
         
      else
         
         if length(ind_active) == 2,
            
            fprintf(1,'%d and %d.',ind_active(end-1),ind_active(end));
            
         else
            
            fprintf(1,'%d.',ind_active(end));
            
         end;
         
         
      end;
      
   end;
      
      
   fprintf(1,'\n');
   
   if length(ind_active)==0,
      fprintf(1,'\nYou probably want to add images\n');
      choice = 1;
   else
      if length(ind_active)==n_ima,
         fprintf(1,'\nYou probably want to suppress images\n');
         choice = 0;
      else
         choice = 2;
      end;
   end;
   
   if (choice~=0) & (choice ~=1),
   	fprintf(1,'\nDo you want to suppress or add images from that list?\n');
   end;
   
while (choice~=0)&(choice~=1),
   choice = input('For suppressing images enter 0, for adding images enter 1 ([]=no change): ');
   if isempty(choice),
      fprintf(1,'No change applied to the list of active images.\n');
      return;
   end;
   if (choice~=0)&(choice~=1),
      disp('Bad entry. Try again.');
   end;
end;


if choice,
   
	ima_numbers = input('Number(s) of image(s) to add ([] = all images) = ');

if isempty(ima_numbers),
	   fprintf(1,'All %d images are now active\n',n_ima);
   	ima_proc = 1:n_ima;
	else
   	ima_proc = ima_numbers;
	end;
   
else
   
   
	ima_numbers = input('Number(s) of image(s) to suppress ([] = no image) = ');

	if isempty(ima_numbers),
      fprintf(1,'No image has been suppressed. No modication of the list of active images.\n',n_ima);
   	ima_proc = [];
	else
   	ima_proc = ima_numbers;
	end;
   
end;

if ~isempty(ima_proc),
   
   active_images(ima_proc) = choice * ones(1,length(ima_proc));
   
end;


   check_active_images;
   

   fprintf(1,'\nThere is now a total of %d active images for calibration:\n',length(ind_active));
   
   if ~isempty(ind_active),
      
      if length(ind_active) > 2,
      
   		for ii = 1:length(ind_active)-2,
      		
         	fprintf(1,'%d, ',ind_active(ii));
         	
      	end;
      	
      	fprintf(1,'%d and %d.',ind_active(end-1),ind_active(end));
         
      else
         
         if length(ind_active) == 2,
            
            fprintf(1,'%d and %d.',ind_active(end-1),ind_active(end));
            
         else
            
            fprintf(1,'%d.',ind_active(end));
            
         end;
         
         
      end;
      
   end;
      
   
   fprintf(1,'\n\nYou may now run ''Calibration'' to recalibrate based on this new set of images.\n');