source: proiecte/pmake3d/make3d_original/Make3dSingleImageStanford_version0.1/third_party/BlueCCal/CalTechCal/visualize_distortions.m @ 86

Last change on this file since 86 was 37, checked in by (none), 15 years ago

Added original make3d

File size: 6.6 KB
Line 
1% visualize_distortions
2%
3%
4% A script to run in conjunction with calib_gui in TOOLBOX_calib to plot
5% the distortion models.
6%
7% This is a slightly modified version of the script plot_CCT_distortion.m written by Mr. Oshel
8% Thank you Mr. Oshel for your contribution!
9
10
11[mx,my] = meshgrid(0:nx/20:(nx-1),0:ny/20:(ny-1));
12[nnx,nny]=size(mx);
13px=reshape(mx',nnx*nny,1);
14py=reshape(my',nnx*nny,1);
15kk_new=[fc(1) alpha_c*fc(1) cc(1);0 fc(2) cc(2);0 0 1];
16rays=inv(kk_new)*[px';py';ones(1,length(px))];
17x=[rays(1,:)./rays(3,:);rays(2,:)./rays(3,:)];
18
19
20title2=strcat('Complete Distortion Model');
21
22fh1 = 2;
23
24%if ishandle(fh1),
25%    close(fh1);
26%end;
27figure(fh1); clf;
28xd=apply_distortion(x,kc);
29px2=fc(1)*(xd(1,:)+alpha_c*xd(2,:))+cc(1);
30py2=fc(2)*xd(2,:)+cc(2);
31dx=px2-px';
32dy=py2-py';
33Q=quiver(px+1,py+1,dx,dy);
34hold on;
35plot(cc(1)+1,cc(2)+1,'o');
36plot((nx-1)/2+1,(ny-1)/2+1,'x');
37dr=reshape(sqrt((dx.*dx)+(dy.*dy)),nny,nnx)';
38[C,h]=contour(mx,my,dr,'k');
39clabel(C,h);
40Mean=mean(mean(dr));
41Max=max(max(dr));
42title(title2);
43
44axis ij;
45axis([1 nx 1 ny])
46axis equal;
47axis tight;
48
49position=get(gca,'Position');
50shr = 0.9;
51position(1)=position(1)+position(3)*((1-shr)/2);
52position(2)=position(2)+position(4)*(1-shr)+0.03;
53position(3:4)=position(3:4)*shr;
54set(gca,'position',position);
55set(gca,'fontsize',8,'fontname','clean')
56
57gh = gca;
58
59line1=sprintf('Principal Point               = (%0.6g, %0.6g)',cc(1),cc(2));
60line2=sprintf('Focal Length                 = (%0.6g, %0.6g)',fc(1),fc(2));
61line3=sprintf('Radial coefficients         = (%0.4g, %0.4g, %0.4g)',kc(1),kc(2),kc(5));
62line4=sprintf('Tangential coefficients  = (%0.4g, %0.4g)',kc(3),kc(4));
63line5=sprintf('+/- [%0.4g, %0.4g]',cc_error(1),cc_error(2));
64line6=sprintf('+/- [%0.4g, %0.4g]',fc_error(1),fc_error(2));
65line7=sprintf('+/- [%0.4g, %0.4g, %0.4g]',kc_error(1),kc_error(2),kc_error(5));
66line8=sprintf('+/- [%0.4g, %0.4g]',kc_error(3),kc_error(4));
67line9=sprintf('Pixel error                      = [%0.4g, %0.4g]',err_std(1),err_std(2));
68line10=sprintf('Skew                              = %0.4g',alpha_c);
69line11=sprintf('+/- %0.4g',alpha_c_error);
70
71
72axes('position',[0 0 1 1],'visible','off');
73th=text(0.11,0,{line9,line2,line1,line10,line3,line4},'horizontalalignment','left','verticalalignment','bottom','fontsize',8,'fontname','clean');
74th2=text(0.9,0.,{line6,line5,line11,line7,line8},'horizontalalignment','right','verticalalignment','bottom','fontsize',8,'fontname','clean');
75%set(th,'FontName','fixed');
76axes(gh);
77
78set(fh1,'color',[1,1,1]);
79
80hold off;
81
82
83
84
85
86title2=strcat('Tangential Component of the Distortion Model');
87
88fh2 = 3;
89
90%if ishandle(fh2),
91%    close(fh2);
92%end;
93figure(fh2); clf;
94xd=apply_distortion(x,[0 0 kc(3) kc(4) 0]);
95px2=fc(1)*(xd(1,:)+alpha_c*xd(2,:))+cc(1);
96py2=fc(2)*xd(2,:)+cc(2);
97dx=px2-px';
98dy=py2-py';
99Q=quiver(px+1,py+1,dx,dy);
100hold on;
101plot(cc(1)+1,cc(2)+1,'o');
102plot((nx-1)/2+1,(ny-1)/2+1,'x');
103dr=reshape(sqrt((dx.*dx)+(dy.*dy)),nny,nnx)';
104[C,h]=contour(mx,my,dr,'k');
105% clabel(C,h);
106Mean=mean(mean(dr));
107Max=max(max(dr));
108title(title2);
109
110axis ij;
111axis([1 nx 1 ny])
112axis equal;
113axis tight;
114
115position=get(gca,'Position');
116shr = 0.9;
117position(1)=position(1)+position(3)*((1-shr)/2);
118position(2)=position(2)+position(4)*(1-shr)+0.03;
119position(3:4)=position(3:4)*shr;
120set(gca,'position',position);
121set(gca,'fontsize',8,'fontname','clean')
122
123gh = gca;
124
125line1=sprintf('Principal Point               = (%0.6g, %0.6g)',cc(1),cc(2));
126line2=sprintf('Focal Length                 = (%0.6g, %0.6g)',fc(1),fc(2));
127line3=sprintf('Radial coefficients         = (%0.4g, %0.4g, %0.4g)',kc(1),kc(2),kc(5));
128line4=sprintf('Tangential coefficients  = (%0.4g, %0.4g)',kc(3),kc(4));
129line5=sprintf('+/- [%0.4g, %0.4g]',cc_error(1),cc_error(2));
130line6=sprintf('+/- [%0.4g, %0.4g]',fc_error(1),fc_error(2));
131line7=sprintf('+/- [%0.4g, %0.4g, %0.4g]',kc_error(1),kc_error(2),kc_error(5));
132line8=sprintf('+/- [%0.4g, %0.4g]',kc_error(3),kc_error(4));
133line9=sprintf('Pixel error                      = [%0.4g, %0.4g]',err_std(1),err_std(2));
134line10=sprintf('Skew                              = %0.4g',alpha_c);
135line11=sprintf('+/- %0.4g',alpha_c_error);
136
137
138axes('position',[0 0 1 1],'visible','off');
139th=text(0.11,0,{line9,line2,line1,line10,line3,line4},'horizontalalignment','left','verticalalignment','bottom','fontsize',8,'fontname','clean');
140th2=text(0.9,0.,{line6,line5,line11,line7,line8},'horizontalalignment','right','verticalalignment','bottom','fontsize',8,'fontname','clean');
141%set(th,'FontName','fixed');
142axes(gh);
143
144set(fh2,'color',[1,1,1]);
145
146hold off;
147
148
149
150
151
152
153
154
155title2=strcat('Radial Component of the Distortion Model');
156
157fh3 = 4;
158
159%if ishandle(fh3),
160%    close(fh3);
161%end;
162figure(fh3); clf;
163xd=apply_distortion(x,[kc(1) kc(2) 0 0 kc(5)]);
164px2=fc(1)*(xd(1,:)+alpha_c*xd(2,:))+cc(1);
165py2=fc(2)*xd(2,:)+cc(2);
166dx=px2-px';
167dy=py2-py';
168Q=quiver(px+1,py+1,dx,dy);
169hold on;
170plot(cc(1)+1,cc(2)+1,'o');
171plot((nx-1)/2+1,(ny-1)/2+1,'x');
172dr=reshape(sqrt((dx.*dx)+(dy.*dy)),nny,nnx)';
173[C,h]=contour(mx,my,dr,'k');
174clabel(C,h);
175Mean=mean(mean(dr));
176Max=max(max(dr));
177title(title2);
178
179axis ij;
180axis([1 nx 1 ny])
181axis equal;
182axis tight;
183
184position=get(gca,'Position');
185shr = 0.9;
186position(1)=position(1)+position(3)*((1-shr)/2);
187position(2)=position(2)+position(4)*(1-shr)+0.03;
188position(3:4)=position(3:4)*shr;
189set(gca,'position',position);
190set(gca,'fontsize',8,'fontname','clean')
191
192gh = gca;
193
194line1=sprintf('Principal Point               = (%0.6g, %0.6g)',cc(1),cc(2));
195line2=sprintf('Focal Length                 = (%0.6g, %0.6g)',fc(1),fc(2));
196line3=sprintf('Radial coefficients         = (%0.4g, %0.4g, %0.4g)',kc(1),kc(2),kc(5));
197line4=sprintf('Tangential coefficients  = (%0.4g, %0.4g)',kc(3),kc(4));
198line5=sprintf('+/- [%0.4g, %0.4g]',cc_error(1),cc_error(2));
199line6=sprintf('+/- [%0.4g, %0.4g]',fc_error(1),fc_error(2));
200line7=sprintf('+/- [%0.4g, %0.4g, %0.4g]',kc_error(1),kc_error(2),kc_error(5));
201line8=sprintf('+/- [%0.4g, %0.4g]',kc_error(3),kc_error(4));
202line9=sprintf('Pixel error                      = [%0.4g, %0.4g]',err_std(1),err_std(2));
203line10=sprintf('Skew                              = %0.4g',alpha_c);
204line11=sprintf('+/- %0.4g',alpha_c_error);
205
206
207axes('position',[0 0 1 1],'visible','off');
208th=text(0.11,0,{line9,line2,line1,line10,line3,line4},'horizontalalignment','left','verticalalignment','bottom','fontsize',8,'fontname','clean');
209th2=text(0.9,0.,{line6,line5,line11,line7,line8},'horizontalalignment','right','verticalalignment','bottom','fontsize',8,'fontname','clean');
210%set(th,'FontName','fixed');
211axes(gh);
212
213set(fh3,'color',[1,1,1]);
214
215hold off;
216
217figure(fh1);
Note: See TracBrowser for help on using the repository browser.