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

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

check_directory;

if ~exist('n_ima'),
   data_calib_no_read;
   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;

%% Step used to clean the memory if a previous atttempt has been made to read the entire set of images into memory:
for kk = 1:n_ima,
    if (exist(['I_' num2str(kk)])==1),
        clear(['I_' num2str(kk)]);
    end;
end;


fprintf(1,'\nChecking directory content for the calibration images (no global image loading in memory efficient mode)\n');

one_image_read = 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,'Found images: ');
        end;
        
        if exist(ima_name),
            
            fprintf(1,'%d...',i);
            
            
            if ~one_image_read
                
                if format_image(1) == 'p',
                    if format_image(2) == 'p',
                        I = double(loadppm(ima_name));
                    else
                        I = double(loadpgm(ima_name));
                    end;
                else
                    if format_image(1) == 'r',
                        I = readras(ima_name);
                    else
                        I = double(imread(ima_name));
                    end;
                end;
                
                
                if size(I,3)>1,
                    I = 0.299 * I(:,:,1) + 0.5870 * I(:,:,2) + 0.114 * I(:,:,3);
                end;
                
                
                if size(I,1)~=480,
                    small_calib_image = 1;
                else
                    small_calib_image = 0;
                end;
                
                [Hcal,Wcal] = size(I); 	% size of the calibration image
                
                [ny,nx] = size(I);
                
                one_image_read = 1;
                
            end;
            
            
        else
            
            images_read(i) = 0;
            
        end;
        
    end;
    
    i = i+1;   
    
end;


ind_read = find(images_read);


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

active_images = images_read;

fprintf(1,'\ndone\n');