% visualize_distortions % % % A script to run in conjunction with calib_gui in TOOLBOX_calib to plot % the distortion models. % % This is a slightly modified version of the script plot_CCT_distortion.m written by Mr. Oshel % Thank you Mr. Oshel for your contribution! [mx,my] = meshgrid(0:nx/20:(nx-1),0:ny/20:(ny-1)); [nnx,nny]=size(mx); px=reshape(mx',nnx*nny,1); py=reshape(my',nnx*nny,1); kk_new=[fc(1) alpha_c*fc(1) cc(1);0 fc(2) cc(2);0 0 1]; rays=inv(kk_new)*[px';py';ones(1,length(px))]; x=[rays(1,:)./rays(3,:);rays(2,:)./rays(3,:)]; title2=strcat('Complete Distortion Model'); fh1 = 2; %if ishandle(fh1), % close(fh1); %end; figure(fh1); clf; xd=apply_distortion(x,kc); px2=fc(1)*(xd(1,:)+alpha_c*xd(2,:))+cc(1); py2=fc(2)*xd(2,:)+cc(2); dx=px2-px'; dy=py2-py'; Q=quiver(px+1,py+1,dx,dy); hold on; plot(cc(1)+1,cc(2)+1,'o'); plot((nx-1)/2+1,(ny-1)/2+1,'x'); dr=reshape(sqrt((dx.*dx)+(dy.*dy)),nny,nnx)'; [C,h]=contour(mx,my,dr,'k'); clabel(C,h); Mean=mean(mean(dr)); Max=max(max(dr)); title(title2); axis ij; axis([1 nx 1 ny]) axis equal; axis tight; position=get(gca,'Position'); shr = 0.9; position(1)=position(1)+position(3)*((1-shr)/2); position(2)=position(2)+position(4)*(1-shr)+0.03; position(3:4)=position(3:4)*shr; set(gca,'position',position); set(gca,'fontsize',8,'fontname','clean') gh = gca; line1=sprintf('Principal Point = (%0.6g, %0.6g)',cc(1),cc(2)); line2=sprintf('Focal Length = (%0.6g, %0.6g)',fc(1),fc(2)); line3=sprintf('Radial coefficients = (%0.4g, %0.4g, %0.4g)',kc(1),kc(2),kc(5)); line4=sprintf('Tangential coefficients = (%0.4g, %0.4g)',kc(3),kc(4)); line5=sprintf('+/- [%0.4g, %0.4g]',cc_error(1),cc_error(2)); line6=sprintf('+/- [%0.4g, %0.4g]',fc_error(1),fc_error(2)); line7=sprintf('+/- [%0.4g, %0.4g, %0.4g]',kc_error(1),kc_error(2),kc_error(5)); line8=sprintf('+/- [%0.4g, %0.4g]',kc_error(3),kc_error(4)); line9=sprintf('Pixel error = [%0.4g, %0.4g]',err_std(1),err_std(2)); line10=sprintf('Skew = %0.4g',alpha_c); line11=sprintf('+/- %0.4g',alpha_c_error); axes('position',[0 0 1 1],'visible','off'); th=text(0.11,0,{line9,line2,line1,line10,line3,line4},'horizontalalignment','left','verticalalignment','bottom','fontsize',8,'fontname','clean'); th2=text(0.9,0.,{line6,line5,line11,line7,line8},'horizontalalignment','right','verticalalignment','bottom','fontsize',8,'fontname','clean'); %set(th,'FontName','fixed'); axes(gh); set(fh1,'color',[1,1,1]); hold off; title2=strcat('Tangential Component of the Distortion Model'); fh2 = 3; %if ishandle(fh2), % close(fh2); %end; figure(fh2); clf; xd=apply_distortion(x,[0 0 kc(3) kc(4) 0]); px2=fc(1)*(xd(1,:)+alpha_c*xd(2,:))+cc(1); py2=fc(2)*xd(2,:)+cc(2); dx=px2-px'; dy=py2-py'; Q=quiver(px+1,py+1,dx,dy); hold on; plot(cc(1)+1,cc(2)+1,'o'); plot((nx-1)/2+1,(ny-1)/2+1,'x'); dr=reshape(sqrt((dx.*dx)+(dy.*dy)),nny,nnx)'; [C,h]=contour(mx,my,dr,'k'); % clabel(C,h); Mean=mean(mean(dr)); Max=max(max(dr)); title(title2); axis ij; axis([1 nx 1 ny]) axis equal; axis tight; position=get(gca,'Position'); shr = 0.9; position(1)=position(1)+position(3)*((1-shr)/2); position(2)=position(2)+position(4)*(1-shr)+0.03; position(3:4)=position(3:4)*shr; set(gca,'position',position); set(gca,'fontsize',8,'fontname','clean') gh = gca; line1=sprintf('Principal Point = (%0.6g, %0.6g)',cc(1),cc(2)); line2=sprintf('Focal Length = (%0.6g, %0.6g)',fc(1),fc(2)); line3=sprintf('Radial coefficients = (%0.4g, %0.4g, %0.4g)',kc(1),kc(2),kc(5)); line4=sprintf('Tangential coefficients = (%0.4g, %0.4g)',kc(3),kc(4)); line5=sprintf('+/- [%0.4g, %0.4g]',cc_error(1),cc_error(2)); line6=sprintf('+/- [%0.4g, %0.4g]',fc_error(1),fc_error(2)); line7=sprintf('+/- [%0.4g, %0.4g, %0.4g]',kc_error(1),kc_error(2),kc_error(5)); line8=sprintf('+/- [%0.4g, %0.4g]',kc_error(3),kc_error(4)); line9=sprintf('Pixel error = [%0.4g, %0.4g]',err_std(1),err_std(2)); line10=sprintf('Skew = %0.4g',alpha_c); line11=sprintf('+/- %0.4g',alpha_c_error); axes('position',[0 0 1 1],'visible','off'); th=text(0.11,0,{line9,line2,line1,line10,line3,line4},'horizontalalignment','left','verticalalignment','bottom','fontsize',8,'fontname','clean'); th2=text(0.9,0.,{line6,line5,line11,line7,line8},'horizontalalignment','right','verticalalignment','bottom','fontsize',8,'fontname','clean'); %set(th,'FontName','fixed'); axes(gh); set(fh2,'color',[1,1,1]); hold off; title2=strcat('Radial Component of the Distortion Model'); fh3 = 4; %if ishandle(fh3), % close(fh3); %end; figure(fh3); clf; xd=apply_distortion(x,[kc(1) kc(2) 0 0 kc(5)]); px2=fc(1)*(xd(1,:)+alpha_c*xd(2,:))+cc(1); py2=fc(2)*xd(2,:)+cc(2); dx=px2-px'; dy=py2-py'; Q=quiver(px+1,py+1,dx,dy); hold on; plot(cc(1)+1,cc(2)+1,'o'); plot((nx-1)/2+1,(ny-1)/2+1,'x'); dr=reshape(sqrt((dx.*dx)+(dy.*dy)),nny,nnx)'; [C,h]=contour(mx,my,dr,'k'); clabel(C,h); Mean=mean(mean(dr)); Max=max(max(dr)); title(title2); axis ij; axis([1 nx 1 ny]) axis equal; axis tight; position=get(gca,'Position'); shr = 0.9; position(1)=position(1)+position(3)*((1-shr)/2); position(2)=position(2)+position(4)*(1-shr)+0.03; position(3:4)=position(3:4)*shr; set(gca,'position',position); set(gca,'fontsize',8,'fontname','clean') gh = gca; line1=sprintf('Principal Point = (%0.6g, %0.6g)',cc(1),cc(2)); line2=sprintf('Focal Length = (%0.6g, %0.6g)',fc(1),fc(2)); line3=sprintf('Radial coefficients = (%0.4g, %0.4g, %0.4g)',kc(1),kc(2),kc(5)); line4=sprintf('Tangential coefficients = (%0.4g, %0.4g)',kc(3),kc(4)); line5=sprintf('+/- [%0.4g, %0.4g]',cc_error(1),cc_error(2)); line6=sprintf('+/- [%0.4g, %0.4g]',fc_error(1),fc_error(2)); line7=sprintf('+/- [%0.4g, %0.4g, %0.4g]',kc_error(1),kc_error(2),kc_error(5)); line8=sprintf('+/- [%0.4g, %0.4g]',kc_error(3),kc_error(4)); line9=sprintf('Pixel error = [%0.4g, %0.4g]',err_std(1),err_std(2)); line10=sprintf('Skew = %0.4g',alpha_c); line11=sprintf('+/- %0.4g',alpha_c_error); axes('position',[0 0 1 1],'visible','off'); th=text(0.11,0,{line9,line2,line1,line10,line3,line4},'horizontalalignment','left','verticalalignment','bottom','fontsize',8,'fontname','clean'); th2=text(0.9,0.,{line6,line5,line11,line7,line8},'horizontalalignment','right','verticalalignment','bottom','fontsize',8,'fontname','clean'); %set(th,'FontName','fixed'); axes(gh); set(fh3,'color',[1,1,1]); hold off; figure(fh1);