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

    
if ~exist('calib_name')|~exist('format_image'),
   data_calib;
   return;
end;

check_directory;

if ~exist('n_ima'),
   data_calib;
   return;
end;

check_active_images;


images_read = active_images;


if exist('image_numbers'),
   first_num = image_numbers(1);
end;


% Just to fix a minor bug:
if ~exist('first_num'),
   first_num = image_numbers(1);
end;


image_numbers = first_num:n_ima-1+first_num;

no_image_file = 0;

i = 1;

while (i <= n_ima), % & (~no_image_file),
   
   if active_images(i),
   
   	%fprintf(1,'Loading image %d...\n',i);
   
   	if ~type_numbering,   
      	number_ext =  num2str(image_numbers(i));
   	else
      	number_ext = sprintf(['%.' num2str(N_slots) 'd'],image_numbers(i));
   	end;
   	
      ima_name = [calib_name  number_ext '.' format_image];
      
      if i == ind_active(1),
         fprintf(1,'Loading image ');
      end;
      
      if exist(ima_name),
         
         fprintf(1,'%d...',i);
         
         if format_image(1) == 'p',
            if format_image(2) == 'p',
               Ii = double(loadppm(ima_name));
            else
               Ii = double(loadpgm(ima_name));
            end;
         else
            if format_image(1) == 'r',
               Ii = readras(ima_name);
            else
               Ii = double(imread(ima_name));
            end;
         end;

      	
   		if size(Ii,3)>1,
            Ii = 0.299 * Ii(:,:,1) + 0.5870 * Ii(:,:,2) + 0.114 * Ii(:,:,3);
   		end;
   
   		eval(['I_' num2str(i) ' = Ii;']);
         
      else
         
         %fprintf(1,'%d...no image...',i);
	 
	 images_read(i) = 0;
	 
	 %no_image_file = 1;
	 
      end;
      
   end;
   
   i = i+1;   
   
end;


ind_read = find(images_read);




if isempty(ind_read),
   
   fprintf(1,'\nWARNING! No image were read\n');
   
   no_image_file = 1;
   
   
else
   

   %fprintf(1,'\nWARNING! Every exsisting image in the directory is set active.\n');

   
   if no_image_file,
      
        %fprintf(1,'WARNING! Some images were not read properly\n');
     
   end;
     
   
   fprintf(1,'\n');

   if size(I_1,1)~=480,
   	small_calib_image = 1;
	else
   	small_calib_image = 0;
	end;
   
   [Hcal,Wcal] = size(I_1); 	% size of the calibration image
   
   [ny,nx] = size(I_1);
   
   clickname = [];
   
   map = gray(256);
   
	%string_save = 'save calib_data n_ima type_numbering N_slots image_numbers format_image calib_name Hcal Wcal nx ny map small_calib_image';

	%eval(string_save);

	disp('done');
	%click_calib;

end;

if ~(exist('map')==1), map = gray(256); end;

active_images = images_read;