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

    

if ~exist('n_ima'),
    data_calib_no_read;
end;


check_active_images;

n_col = floor(sqrt(n_ima*nx/ny));

n_row = ceil(n_ima / n_col);


ker2 = 1;
for ii  = 1:n_col,
   ker2 = conv(ker2,[1/4 1/2 1/4]);
end;

ny2 = length(1:n_col:ny);
nx2 = length(1:n_col:nx);

%II = I_1(1:n_col:end,1:n_col:end);
%[ny2,nx2] = size(II);



kk_c = 1;

II_mosaic = [];

for jj = 1:n_row,
    
    
    II_row = [];
    
    for ii = 1:n_col,
        
        
        if (kk_c <= n_ima),
            
            if ~type_numbering,   
                number_ext =  num2str(image_numbers(kk_c));
            else
                number_ext = sprintf(['%.' num2str(N_slots) 'd'],image_numbers(kk_c));
            end;
            
            ima_name = [calib_name  number_ext '.' format_image]; 
            
            
            
            if (exist(ima_name)) & (kk_c <= n_ima),
                
                if active_images(kk_c),
                    
                    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;
                    
                    %I = conv2(conv2(I,ker2,'same'),ker2','same'); % anti-aliasing
                    I = I(1:n_col:end,1:n_col:end);
                else
                    I = zeros(ny2,nx2);
                end;
                
            else
                
                I = zeros(ny2,nx2);
                
            end;
            
        else 
            
            I = zeros(ny2,nx2);
            
        end;
        
        II_row = [II_row I];
        
        if ii ~= n_col,
            
            II_row = [II_row zeros(ny2,3)];
            
        end;
        
        
        kk_c = kk_c + 1;
        
    end;
    
    nn2 = size(II_row,2);
    
    if jj ~= n_row,
        II_row = [II_row; zeros(3,nn2)];
    end;
    
    II_mosaic = [II_mosaic ; II_row];
    
end;

figure(2);
image(II_mosaic);
colormap(gray(256));
title('Calibration images');
set(gca,'Xtick',[])
set(gca,'Ytick',[])
axis('image');