summaryrefslogtreecommitdiffstats
path: root/SD-VBS/common/toolbox/toolbox_basic/tars/TOOLBOX_calib.tar
blob: bb418a52477b1149e8cdb74f610c48d37de14616 (plain) (blame)
ofshex dumpascii
0000 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 TOOLBOX_calib/..................
0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0060 00 00 00 00 20 20 20 37 35 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......750.....471.....454......
0080 20 20 20 20 20 20 30 20 20 37 30 32 33 35 33 31 32 32 32 20 20 20 36 33 32 30 00 20 00 00 00 00 ......0..7023531222...6320......
00a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0200 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 61 64 64 5f 73 75 70 70 72 65 73 73 2e 6d 00 00 00 00 TOOLBOX_calib/add_suppress.m....
0220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0260 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
0280 20 20 20 33 37 32 33 20 20 37 30 32 34 30 33 37 33 30 31 20 20 31 31 32 37 31 00 20 00 00 00 00 ...3723..7024037301..11271......
02a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
02c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
02e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0400 20 20 20 63 68 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 0a 0a 66 70 72 69 6e 74 ...check_active_images;...fprint
0420 66 28 31 2c 27 5c 6e 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 75 73 65 66 75 6c 20 74 f(1,'\nThis.function.is.useful.t
0440 6f 20 73 65 6c 65 63 74 20 61 20 73 75 62 73 65 74 20 6f 66 20 69 6d 61 67 65 73 20 74 6f 20 63 o.select.a.subset.of.images.to.c
0460 61 6c 69 62 72 61 74 65 5c 6e 27 29 3b 0a 0a 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 54 alibrate\n');.....fprintf(1,'\nT
0480 68 65 72 65 20 61 72 65 20 63 75 72 72 65 6e 74 6c 79 20 25 64 20 61 63 74 69 76 65 20 69 6d 61 here.are.currently.%d.active.ima
04a0 67 65 73 20 73 65 6c 65 63 74 65 64 20 66 6f 72 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 28 6f 75 ges.selected.for.calibration.(ou
04c0 74 20 6f 66 20 25 64 29 3a 5c 6e 27 2c 6c 65 6e 67 74 68 28 69 6e 64 5f 61 63 74 69 76 65 29 2c t.of.%d):\n',length(ind_active),
04e0 6e 5f 69 6d 61 29 3b 0a 20 20 20 0a 20 20 20 69 66 20 7e 69 73 65 6d 70 74 79 28 69 6e 64 5f 61 n_ima);........if.~isempty(ind_a
0500 63 74 69 76 65 29 2c 0a 20 20 20 0a 20 20 20 09 66 6f 72 20 69 69 20 3d 20 31 3a 6c 65 6e 67 74 ctive),.........for.ii.=.1:lengt
0520 68 28 69 6e 64 5f 61 63 74 69 76 65 29 2d 32 2c 0a 20 20 20 20 20 20 09 0a 20 20 20 20 20 20 20 h(ind_active)-2,................
0540 20 20 66 70 72 69 6e 74 66 28 31 2c 27 25 64 2c 20 27 2c 69 6e 64 5f 61 63 74 69 76 65 28 69 69 ..fprintf(1,'%d,.',ind_active(ii
0560 29 29 3b 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 0a ));.................end;........
0580 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 25 64 20 61 6e 64 20 25 64 2e 27 2c 69 6e 64 ......fprintf(1,'%d.and.%d.',ind
05a0 5f 61 63 74 69 76 65 28 65 6e 64 2d 31 29 2c 69 6e 64 5f 61 63 74 69 76 65 28 65 6e 64 29 29 3b _active(end-1),ind_active(end));
05c0 0a 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 27 29 .....end;........fprintf(1,'\n')
05e0 3b 0a 20 20 20 0a 20 20 20 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 44 6f 20 79 6f 75 20 77 61 ;.........fprintf(1,'\nDo.you.wa
0600 6e 74 20 74 6f 20 73 75 70 70 72 65 73 73 20 6f 72 20 61 64 64 20 69 6d 61 67 65 73 20 66 72 6f nt.to.suppress.or.add.images.fro
0620 6d 20 74 68 61 74 20 6c 69 73 74 3f 5c 6e 27 29 3b 0a 0a 63 68 6f 69 63 65 20 3d 20 32 3b 0a 0a m.that.list?\n');..choice.=.2;..
0640 77 68 69 6c 65 20 28 63 68 6f 69 63 65 7e 3d 30 29 26 28 63 68 6f 69 63 65 7e 3d 31 29 2c 0a 20 while.(choice~=0)&(choice~=1),..
0660 20 20 63 68 6f 69 63 65 20 3d 20 69 6e 70 75 74 28 27 46 6f 72 20 73 75 70 70 72 65 73 73 69 6e ..choice.=.input('For.suppressin
0680 67 20 69 6d 61 67 65 73 20 65 6e 74 65 72 20 30 2c 20 66 6f 72 20 61 64 64 69 6e 67 20 69 6d 61 g.images.enter.0,.for.adding.ima
06a0 67 65 73 20 65 6e 74 65 72 20 31 20 28 5b 5d 3d 6e 6f 20 63 68 61 6e 67 65 29 3a 20 27 29 3b 0a ges.enter.1.([]=no.change):.');.
06c0 20 20 20 69 66 20 69 73 65 6d 70 74 79 28 63 68 6f 69 63 65 29 2c 0a 20 20 20 20 20 20 66 70 72 ...if.isempty(choice),.......fpr
06e0 69 6e 74 66 28 31 2c 27 4e 6f 20 63 68 61 6e 67 65 20 61 70 70 6c 69 65 64 20 74 6f 20 74 68 65 intf(1,'No.change.applied.to.the
0700 20 6c 69 73 74 20 6f 66 20 61 63 74 69 76 65 20 69 6d 61 67 65 73 2e 5c 6e 27 29 3b 0a 20 20 20 .list.of.active.images.\n');....
0720 20 20 20 72 65 74 75 72 6e 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 69 66 20 28 63 68 6f 69 63 65 ...return;....end;....if.(choice
0740 7e 3d 30 29 26 28 63 68 6f 69 63 65 7e 3d 31 29 2c 0a 20 20 20 20 20 20 64 69 73 70 28 27 42 61 ~=0)&(choice~=1),.......disp('Ba
0760 64 20 65 6e 74 72 79 2e 20 54 72 79 20 61 67 61 69 6e 2e 27 29 3b 0a 20 20 20 65 6e 64 3b 0a 65 d.entry..Try.again.');....end;.e
0780 6e 64 3b 0a 0a 0a 69 66 20 63 68 6f 69 63 65 2c 0a 20 20 20 0a 09 69 6d 61 5f 6e 75 6d 62 65 72 nd;...if.choice,......ima_number
07a0 73 20 3d 20 69 6e 70 75 74 28 27 4e 75 6d 62 65 72 28 73 29 20 6f 66 20 69 6d 61 67 65 28 73 29 s.=.input('Number(s).of.image(s)
07c0 20 74 6f 20 61 64 64 20 28 5b 5d 20 3d 20 61 6c 6c 20 69 6d 61 67 65 73 29 20 3d 20 27 29 3b 0a .to.add.([].=.all.images).=.');.
07e0 0a 69 66 20 69 73 65 6d 70 74 79 28 69 6d 61 5f 6e 75 6d 62 65 72 73 29 2c 0a 09 20 20 20 66 70 .if.isempty(ima_numbers),.....fp
0800 72 69 6e 74 66 28 31 2c 27 41 6c 6c 20 25 64 20 69 6d 61 67 65 73 20 61 72 65 20 6e 6f 77 20 61 rintf(1,'All.%d.images.are.now.a
0820 63 74 69 76 65 5c 6e 27 2c 6e 5f 69 6d 61 29 3b 0a 20 20 20 09 69 6d 61 5f 70 72 6f 63 20 3d 20 ctive\n',n_ima);.....ima_proc.=.
0840 31 3a 6e 5f 69 6d 61 3b 0a 09 65 6c 73 65 0a 20 20 20 09 69 6d 61 5f 70 72 6f 63 20 3d 20 69 6d 1:n_ima;..else.....ima_proc.=.im
0860 61 5f 6e 75 6d 62 65 72 73 3b 0a 09 65 6e 64 3b 0a 20 20 20 0a 65 6c 73 65 0a 20 20 20 0a 20 20 a_numbers;..end;.....else.......
0880 20 0a 09 69 6d 61 5f 6e 75 6d 62 65 72 73 20 3d 20 69 6e 70 75 74 28 27 4e 75 6d 62 65 72 28 73 ...ima_numbers.=.input('Number(s
08a0 29 20 6f 66 20 69 6d 61 67 65 28 73 29 20 74 6f 20 73 75 70 70 72 65 73 73 20 28 5b 5d 20 3d 20 ).of.image(s).to.suppress.([].=.
08c0 6e 6f 20 69 6d 61 67 65 29 20 3d 20 27 29 3b 0a 0a 09 69 66 20 69 73 65 6d 70 74 79 28 69 6d 61 no.image).=.');...if.isempty(ima
08e0 5f 6e 75 6d 62 65 72 73 29 2c 0a 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 4e 6f 20 69 _numbers),.......fprintf(1,'No.i
0900 6d 61 67 65 20 68 61 73 20 62 65 65 6e 20 73 75 70 70 72 65 73 73 65 64 2e 20 4e 6f 20 6d 6f 64 mage.has.been.suppressed..No.mod
0920 69 63 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 6c 69 73 74 20 6f 66 20 61 63 74 69 76 65 20 69 6d ication.of.the.list.of.active.im
0940 61 67 65 73 2e 5c 6e 27 2c 6e 5f 69 6d 61 29 3b 0a 20 20 20 09 69 6d 61 5f 70 72 6f 63 20 3d 20 ages.\n',n_ima);.....ima_proc.=.
0960 5b 5d 3b 0a 09 65 6c 73 65 0a 20 20 20 09 69 6d 61 5f 70 72 6f 63 20 3d 20 69 6d 61 5f 6e 75 6d [];..else.....ima_proc.=.ima_num
0980 62 65 72 73 3b 0a 09 65 6e 64 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 69 66 20 7e 69 73 65 6d 70 74 bers;..end;.....end;..if.~isempt
09a0 79 28 69 6d 61 5f 70 72 6f 63 29 2c 0a 20 20 20 0a 20 20 20 61 63 74 69 76 65 5f 69 6d 61 67 65 y(ima_proc),........active_image
09c0 73 28 69 6d 61 5f 70 72 6f 63 29 20 3d 20 63 68 6f 69 63 65 20 2a 20 6f 6e 65 73 28 31 2c 6c 65 s(ima_proc).=.choice.*.ones(1,le
09e0 6e 67 74 68 28 69 6d 61 5f 70 72 6f 63 29 29 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 0a 20 20 20 63 ngth(ima_proc));.....end;......c
0a00 68 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 20 20 20 0a 0a 20 20 20 66 70 72 69 heck_active_images;.........fpri
0a20 6e 74 66 28 31 2c 27 5c 6e 54 68 65 72 65 20 69 73 20 6e 6f 77 20 61 20 74 6f 74 61 6c 20 6f 66 ntf(1,'\nThere.is.now.a.total.of
0a40 20 25 64 20 61 63 74 69 76 65 20 69 6d 61 67 65 73 20 66 6f 72 20 63 61 6c 69 62 72 61 74 69 6f .%d.active.images.for.calibratio
0a60 6e 3a 5c 6e 27 2c 6c 65 6e 67 74 68 28 69 6e 64 5f 61 63 74 69 76 65 29 29 3b 0a 20 20 20 0a 20 n:\n',length(ind_active));......
0a80 20 20 69 66 20 7e 69 73 65 6d 70 74 79 28 69 6e 64 5f 61 63 74 69 76 65 29 2c 0a 20 20 20 0a 20 ..if.~isempty(ind_active),......
0aa0 20 20 09 66 6f 72 20 69 69 20 3d 20 31 3a 6c 65 6e 67 74 68 28 69 6e 64 5f 61 63 74 69 76 65 29 ...for.ii.=.1:length(ind_active)
0ac0 2d 32 2c 0a 20 20 20 20 20 20 09 0a 20 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 -2,..................fprintf(1,'
0ae0 25 64 2c 20 27 2c 69 6e 64 5f 61 63 74 69 76 65 28 69 69 29 29 3b 0a 20 20 20 20 20 20 20 20 20 %d,.',ind_active(ii));..........
0b00 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 66 70 72 69 6e 74 66 .......end;..............fprintf
0b20 28 31 2c 27 25 64 20 61 6e 64 20 25 64 2e 27 2c 69 6e 64 5f 61 63 74 69 76 65 28 65 6e 64 2d 31 (1,'%d.and.%d.',ind_active(end-1
0b40 29 2c 69 6e 64 5f 61 63 74 69 76 65 28 65 6e 64 29 29 3b 0a 0a 20 20 20 65 6e 64 3b 0a 20 20 20 ),ind_active(end));.....end;....
0b60 0a 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 5c 6e 59 6f 75 20 6d 61 79 20 6e 6f 77 20 72 ....fprintf(1,'\n\nYou.may.now.r
0b80 75 6e 20 27 27 43 61 6c 69 62 72 61 74 69 6f 6e 27 27 20 74 6f 20 72 65 63 61 6c 69 62 72 61 74 un.''Calibration''.to.recalibrat
0ba0 65 20 62 61 73 65 64 20 6f 6e 20 74 68 69 73 20 6e 65 77 20 73 65 74 20 6f 66 20 69 6d 61 67 65 e.based.on.this.new.set.of.image
0bc0 73 2e 5c 6e 27 29 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 s.\n');.........................
0be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0c00 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 61 6e 61 6c 79 73 65 5f 65 72 72 6f 72 2e 6d 00 00 00 TOOLBOX_calib/analyse_error.m...
0c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0c60 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
0c80 20 20 20 33 37 32 34 20 20 37 30 32 34 30 33 37 33 30 32 20 20 31 31 34 34 34 00 20 00 00 00 00 ...3724..7024037302..11444......
0ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0e00 25 20 43 6f 6c 6f 72 20 63 6f 64 65 20 66 6f 72 20 65 61 63 68 20 69 6d 61 67 65 3a 0a 0a 63 68 %.Color.code.for.each.image:..ch
0e20 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 0a 69 66 20 7e 65 78 69 73 74 28 5b 27 eck_active_images;..if.~exist(['
0e40 65 78 5f 27 20 6e 75 6d 32 73 74 72 28 69 6e 64 5f 61 63 74 69 76 65 28 31 29 29 20 5d 29 2c 0a ex_'.num2str(ind_active(1)).]),.
0e60 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 4e 65 65 64 20 74 6f 20 63 61 6c 69 62 72 61 74 65 20 ...fprintf(1,'Need.to.calibrate.
0e80 62 65 66 6f 72 65 20 61 6e 61 6c 79 73 69 6e 67 20 72 65 70 72 6f 6a 65 63 74 69 6f 6e 20 65 72 before.analysing.reprojection.er
0ea0 72 6f 72 2e 20 4d 61 79 62 65 20 6e 65 65 64 20 74 6f 20 6c 6f 61 64 20 43 61 6c 69 62 5f 52 65 ror..Maybe.need.to.load.Calib_Re
0ec0 73 75 6c 74 73 2e 6d 61 74 20 66 69 6c 65 2e 5c 6e 27 29 3b 0a 20 20 20 72 65 74 75 72 6e 3b 0a sults.mat.file.\n');....return;.
0ee0 65 6e 64 3b 0a 0a 0a 69 66 20 7e 65 78 69 73 74 28 27 6e 6f 5f 67 72 69 64 27 29 2c 0a 20 20 20 end;...if.~exist('no_grid'),....
0f00 6e 6f 5f 67 72 69 64 20 3d 20 30 3b 0a 65 6e 64 3b 0a 0a 63 6f 6c 6f 72 73 20 3d 20 27 62 72 67 no_grid.=.0;.end;..colors.=.'brg
0f20 6b 63 6d 27 3b 0a 0a 20 20 20 0a 66 69 67 75 72 65 28 35 29 3b 0a 20 20 20 0a 66 6f 72 20 6b 6b kcm';......figure(5);.....for.kk
0f40 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 09 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b .=.1:n_ima,..if.active_images(kk
0f60 29 20 26 20 65 76 61 6c 28 5b 27 7e 69 73 6e 61 6e 28 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b ).&.eval(['~isnan(y_'.num2str(kk
0f80 29 20 27 28 31 2c 31 29 29 27 5d 29 2c 0a 09 20 20 20 65 76 61 6c 28 5b 27 70 6c 6f 74 28 65 78 ).'(1,1))']),.....eval(['plot(ex
0fa0 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 28 31 2c 3a 29 2c 65 78 5f 27 20 6e 75 6d 32 73 _'.num2str(kk).'(1,:),ex_'.num2s
0fc0 74 72 28 6b 6b 29 20 27 28 32 2c 3a 29 2c 27 27 27 20 63 6f 6c 6f 72 73 28 72 65 6d 28 6b 6b 2d tr(kk).'(2,:),'''.colors(rem(kk-
0fe0 31 2c 36 29 2b 31 29 20 27 2b 27 27 29 3b 27 5d 29 3b 0a 20 20 20 20 20 20 68 6f 6c 64 20 6f 6e 1,6)+1).'+'');']);.......hold.on
1000 3b 0a 20 20 20 65 6e 64 3b 0a 65 6e 64 3b 0a 68 6f 6c 64 20 6f 66 66 3b 0a 61 78 69 73 28 27 65 ;....end;.end;.hold.off;.axis('e
1020 71 75 61 6c 27 29 3b 0a 69 66 20 31 2c 20 25 7e 6e 6f 5f 67 72 69 64 2c 0a 20 20 20 74 69 74 6c qual');.if.1,.%~no_grid,....titl
1040 65 28 27 52 65 70 72 6f 6a 65 63 74 69 6f 6e 20 65 72 72 6f 72 20 28 69 6e 20 70 69 78 65 6c 29 e('Reprojection.error.(in.pixel)
1060 20 2d 20 54 6f 20 65 78 69 74 3a 20 72 69 67 68 74 20 62 75 74 74 6f 6e 27 29 3b 0a 65 6c 73 65 .-.To.exit:.right.button');.else
1080 0a 20 20 20 74 69 74 6c 65 28 27 52 65 70 72 6f 6a 65 63 74 69 6f 6e 20 65 72 72 6f 72 20 28 69 ....title('Reprojection.error.(i
10a0 6e 20 70 69 78 65 6c 29 27 29 3b 20 20 20 0a 65 6e 64 3b 0a 78 6c 61 62 65 6c 28 27 78 27 29 3b n.pixel)');....end;.xlabel('x');
10c0 0a 79 6c 61 62 65 6c 28 27 79 27 29 3b 0a 0a 73 65 74 28 35 2c 27 4e 61 6d 65 27 2c 27 65 72 72 .ylabel('y');..set(5,'Name','err
10e0 6f 72 27 2c 27 4e 75 6d 62 65 72 54 69 74 6c 65 27 2c 27 6f 66 66 27 29 3b 0a 0a 0a 0a 25 65 72 or','NumberTitle','off');....%er
1100 72 5f 73 74 64 20 3d 20 73 74 64 28 65 78 27 29 27 3b 0a 0a 25 66 70 72 69 6e 74 66 28 31 2c 27 r_std.=.std(ex')';..%fprintf(1,'
1120 50 69 78 65 6c 20 65 72 72 6f 72 3a 20 20 20 20 20 20 65 72 72 20 3d 20 5b 20 25 33 2e 35 66 20 Pixel.error:......err.=.[.%3.5f.
1140 20 20 25 33 2e 35 66 5d 5c 6e 5c 6e 27 2c 65 72 72 5f 73 74 64 29 3b 20 0a 0a 62 20 3d 20 31 3b ..%3.5f]\n\n',err_std);...b.=.1;
1160 0a 0a 77 68 69 6c 65 20 62 3d 3d 31 2c 0a 20 20 20 0a 5b 78 70 2c 79 70 2c 62 5d 20 3d 20 67 69 ..while.b==1,.....[xp,yp,b].=.gi
1180 6e 70 75 74 33 28 31 29 3b 0a 0a 69 66 20 62 3d 3d 31 2c 0a 64 64 64 20 3d 20 28 65 78 28 31 2c nput3(1);..if.b==1,.ddd.=.(ex(1,
11a0 3a 29 2d 78 70 29 2e 5e 32 20 2b 20 28 65 78 28 32 2c 3a 29 2d 79 70 29 2e 5e 32 3b 0a 0a 5b 6d :)-xp).^2.+.(ex(2,:)-yp).^2;..[m
11c0 69 6e 64 2c 69 6e 64 6d 69 6e 5d 20 3d 20 6d 69 6e 28 64 64 64 29 3b 0a 0a 0a 64 6f 6e 65 20 3d ind,indmin].=.min(ddd);...done.=
11e0 20 30 3b 0a 6b 6b 5f 69 6d 61 20 3d 20 31 3b 0a 77 68 69 6c 65 20 28 7e 64 6f 6e 65 29 26 28 6b .0;.kk_ima.=.1;.while.(~done)&(k
1200 6b 5f 69 6d 61 3c 3d 6e 5f 69 6d 61 29 2c 0a 20 20 20 25 66 70 72 69 6e 74 66 28 31 2c 27 25 64 k_ima<=n_ima),....%fprintf(1,'%d
1220 2e 2e 2e 27 2c 6b 6b 5f 69 6d 61 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 65 78 5f 6b 6b 20 3d 20 ...',kk_ima);....eval(['ex_kk.=.
1240 65 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 5f 69 6d 61 29 20 27 3b 27 5d 29 3b 0a 20 20 20 73 ex_'.num2str(kk_ima).';']);....s
1260 6f 6c 5f 6b 6b 20 3d 20 66 69 6e 64 28 28 65 78 5f 6b 6b 28 31 2c 3a 29 20 3d 3d 20 65 78 28 31 ol_kk.=.find((ex_kk(1,:).==.ex(1
1280 2c 69 6e 64 6d 69 6e 29 29 26 28 65 78 5f 6b 6b 28 32 2c 3a 29 20 3d 3d 20 65 78 28 32 2c 69 6e ,indmin))&(ex_kk(2,:).==.ex(2,in
12a0 64 6d 69 6e 29 29 29 3b 0a 20 20 20 69 66 20 69 73 65 6d 70 74 79 28 73 6f 6c 5f 6b 6b 29 2c 0a dmin)));....if.isempty(sol_kk),.
12c0 20 20 20 09 6b 6b 5f 69 6d 61 20 3d 20 6b 6b 5f 69 6d 61 20 2b 20 31 3b 0a 20 20 20 65 6c 73 65 ....kk_ima.=.kk_ima.+.1;....else
12e0 0a 20 20 20 20 20 20 64 6f 6e 65 20 3d 20 31 3b 0a 20 20 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 69 .......done.=.1;....end;.end;..i
1300 66 20 7e 6e 6f 5f 67 72 69 64 2c 0a 0a 65 76 61 6c 28 5b 27 6e 5f 73 71 5f 78 20 3d 20 6e 5f 73 f.~no_grid,..eval(['n_sq_x.=.n_s
1320 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 5f 69 6d 61 29 20 27 3b 27 5d 29 3b 0a 65 76 61 q_x_'.num2str(kk_ima).';']);.eva
1340 6c 28 5b 27 6e 5f 73 71 5f 79 20 3d 20 6e 5f 73 71 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b l(['n_sq_y.=.n_sq_y_'.num2str(kk
1360 5f 69 6d 61 29 20 27 3b 27 5d 29 3b 0a 0a 4e 78 20 3d 20 6e 5f 73 71 5f 78 2b 31 3b 0a 4e 79 20 _ima).';']);..Nx.=.n_sq_x+1;.Ny.
1380 3d 20 6e 5f 73 71 5f 79 2b 31 3b 0a 0a 79 31 20 3d 20 66 6c 6f 6f 72 28 28 73 6f 6c 5f 6b 6b 2d =.n_sq_y+1;..y1.=.floor((sol_kk-
13a0 31 29 2e 2f 4e 78 29 3b 0a 78 31 20 3d 20 73 6f 6c 5f 6b 6b 20 2d 20 31 20 2d 20 4e 78 2a 79 31 1)./Nx);.x1.=.sol_kk.-.1.-.Nx*y1
13c0 3b 20 25 72 65 6d 28 73 6f 6c 5f 6b 6b 2d 31 2c 4e 78 29 3b 0a 0a 79 31 20 3d 20 28 6e 5f 73 71 ;.%rem(sol_kk-1,Nx);..y1.=.(n_sq
13e0 5f 79 2b 31 29 20 2d 20 79 31 3b 0a 78 31 20 3d 20 78 31 20 2b 20 31 3b 0a 0a 66 70 72 69 6e 74 _y+1).-.y1;.x1.=.x1.+.1;..fprint
1400 66 28 31 2c 27 5c 6e 53 65 6c 65 63 74 65 64 20 69 6d 61 67 65 3a 20 25 64 5c 6e 53 65 6c 65 63 f(1,'\nSelected.image:.%d\nSelec
1420 74 65 64 20 70 6f 69 6e 74 3a 20 28 63 6f 6c 2c 72 6f 77 29 3d 28 25 64 2c 25 64 29 5c 6e 4e 63 ted.point:.(col,row)=(%d,%d)\nNc
1440 6f 6c 3d 25 64 2c 20 4e 72 6f 77 3d 25 64 5c 6e 27 2c 5b 6b 6b 5f 69 6d 61 20 78 31 20 79 31 20 ol=%d,.Nrow=%d\n',[kk_ima.x1.y1.
1460 4e 78 20 4e 79 5d 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 50 69 78 65 6c 20 65 72 72 6f 72 20 Nx.Ny]);.fprintf(1,'Pixel.error.
1480 3d 20 28 25 33 2e 35 66 2c 25 33 2e 35 66 29 5c 6e 27 2c 5b 65 78 28 31 2c 69 6e 64 6d 69 6e 29 =.(%3.5f,%3.5f)\n',[ex(1,indmin)
14a0 20 65 78 28 32 2c 69 6e 64 6d 69 6e 29 5d 29 3b 0a 0a 65 6c 73 65 0a 20 20 20 0a 20 20 20 65 76 .ex(2,indmin)]);..else........ev
14c0 61 6c 28 5b 27 78 5f 6b 6b 20 3d 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 5f 69 6d 61 29 20 al(['x_kk.=.x_'.num2str(kk_ima).
14e0 27 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 78 70 74 20 3d 20 78 5f 6b 6b 28 3a 2c 73 6f 6c 5f 6b ';']);........xpt.=.x_kk(:,sol_k
1500 6b 29 3b 0a 20 20 20 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 53 65 6c 65 63 74 65 64 20 69 6d k);.....fprintf(1,'\nSelected.im
1520 61 67 65 3a 20 25 64 5c 6e 49 6d 61 67 65 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 28 69 6e 20 70 age:.%d\nImage.coordinates.(in.p
1540 69 78 65 6c 29 3a 20 28 25 33 2e 32 66 2c 25 33 2e 32 66 29 5c 6e 27 2c 5b 6b 6b 5f 69 6d 61 20 ixel):.(%3.2f,%3.2f)\n',[kk_ima.
1560 78 70 74 27 5d 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 50 69 78 65 6c 20 65 72 72 6f 72 20 3d xpt']);.fprintf(1,'Pixel.error.=
1580 20 28 25 33 2e 35 66 2c 25 33 2e 35 66 29 5c 6e 27 2c 5b 65 78 28 31 2c 69 6e 64 6d 69 6e 29 20 .(%3.5f,%3.5f)\n',[ex(1,indmin).
15a0 65 78 28 32 2c 69 6e 64 6d 69 6e 29 5d 29 3b 0a 0a 0a 65 6e 64 3b 0a 0a 0a 65 6e 64 3b 0a 0a 65 ex(2,indmin)]);...end;...end;..e
15c0 6e 64 3b 0a 0a 64 69 73 70 28 27 64 6f 6e 65 27 29 3b 0a 0a 00 20 00 11 6d 65 61 6e 5f 73 74 64 nd;..disp('done');......mean_std
15e0 5f 72 6f 62 75 73 74 2e 6d 00 36 b1 00 00 07 38 00 02 36 b3 00 24 00 14 72 75 6e 5f 65 72 72 6f _robust.m.6....8..6..$..run_erro
1600 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 61 6c 69 62 2e 6d 00 00 00 00 00 00 00 00 00 00 00 TOOLBOX_calib/calib.m...........
1620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1660 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
1680 20 20 20 34 34 30 31 20 20 37 30 32 34 30 33 37 33 30 32 20 20 20 37 36 34 32 00 20 00 00 00 00 ...4401..7024037302...7642......
16a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1800 69 66 20 7e 65 78 69 73 74 28 27 69 6e 73 74 72 75 63 74 69 6f 6e 73 27 29 2c 20 69 6e 73 74 72 if.~exist('instructions'),.instr
1820 75 63 74 69 6f 6e 73 20 3d 20 31 3b 20 65 6e 64 3b 0a 0a 69 66 20 69 6e 73 74 72 75 63 74 69 6f uctions.=.1;.end;..if.instructio
1840 6e 73 2c 0a 20 20 20 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 ns,.....fprintf(1,'\n');.fprintf
1860 28 31 2c 27 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d (1,'*---------------------------
1880 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
18a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
18c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2a 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 7c 20 20 20 20 ---------*\n');.fprintf(1,'|....
18e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 69 6e 20 43 61 6c 69 62 72 .....................Main.Calibr
1900 61 74 69 6f 6e 20 74 6f 6f 6c 62 6f 78 20 28 32 44 20 61 6e 64 20 33 44 20 72 69 67 73 29 20 20 ation.toolbox.(2D.and.3D.rigs)..
1920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
1940 7c 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 |\n');.fprintf(1,'|.............
1960 20 20 20 20 20 20 20 20 20 20 20 28 63 29 20 4a 65 61 6e 2d 59 76 65 73 20 42 6f 75 67 75 65 74 ...........(c).Jean-Yves.Bouguet
1980 20 2d 20 53 65 70 74 65 6d 62 65 72 20 39 74 68 2c 20 31 39 39 39 20 20 20 20 20 20 20 20 20 20 .-.September.9th,.1999..........
19a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 5c 6e 27 29 3b 0a 66 70 .......................|\n');.fp
19c0 72 69 6e 74 66 28 31 2c 27 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d rintf(1,'*----------------------
19e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
1a00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
1a20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2a 5c 6e 5c 6e 5c 6e 27 29 3b 0a 0a 66 70 72 69 6e 74 --------------*\n\n\n');..fprint
1a40 66 28 31 2c 27 43 4c 49 43 4b 20 4f 4e 3a 5c 6e 5c 6e 27 29 3b 0a 0a 66 70 72 69 6e 74 66 28 31 f(1,'CLICK.ON:\n\n');..fprintf(1
1a60 2c 27 32 44 3a 20 20 20 54 6f 20 70 65 72 66 6f 72 6d 20 63 61 6d 65 72 61 20 63 61 6c 69 62 72 ,'2D:...To.perform.camera.calibr
1a80 61 74 69 6f 6e 20 66 72 6f 6d 20 6d 75 6c 74 69 70 6c 65 20 76 69 65 77 73 20 6f 66 20 61 20 32 ation.from.multiple.views.of.a.2
1aa0 44 20 70 6c 61 6e 61 72 20 67 72 69 64 2e 20 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 D.planar.grid..\n');.fprintf(1,'
1ac0 20 20 20 20 20 20 53 65 74 20 64 65 66 61 75 6c 74 20 73 69 7a 65 20 6f 66 20 67 72 69 64 20 28 ......Set.default.size.of.grid.(
1ae0 69 6e 20 64 58 5f 64 65 66 61 75 6c 74 20 61 6e 64 20 64 59 5f 64 65 66 61 75 6c 74 29 20 69 6e in.dX_default.and.dY_default).in
1b00 20 63 6c 69 63 6b 5f 63 61 6c 69 62 2e 6d 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 .click_calib.m.\n');.fprintf(1,'
1b20 33 44 3a 20 20 20 54 6f 20 70 65 72 66 6f 72 6d 20 63 61 6d 65 72 61 20 63 61 6c 69 62 72 61 74 3D:...To.perform.camera.calibrat
1b40 69 6f 6e 20 66 72 6f 6d 20 6d 75 6c 74 69 70 6c 65 20 76 69 65 77 73 20 6f 66 20 61 20 33 44 20 ion.from.multiple.views.of.a.3D.
1b60 67 72 69 64 20 63 6f 72 6e 65 72 2e 20 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 grid.corner..\n');.fprintf(1,'..
1b80 20 20 20 20 53 65 74 20 64 65 66 61 75 6c 74 20 73 69 7a 65 20 6f 66 20 67 72 69 64 73 20 28 69 ....Set.default.size.of.grids.(i
1ba0 6e 20 64 58 5f 64 65 66 61 75 6c 74 20 61 6e 64 20 64 59 5f 64 65 66 61 75 6c 74 29 20 69 6e 20 n.dX_default.and.dY_default).in.
1bc0 63 6c 69 63 6b 5f 63 61 6c 69 62 33 44 2e 6d 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c click_calib3D.m.\n');.fprintf(1,
1be0 27 45 78 69 74 3a 20 54 6f 20 63 6c 6f 73 65 20 74 68 65 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 'Exit:.To.close.the.calibration.
1c00 74 6f 6f 6c 2e 20 5c 6e 27 29 3b 0a 0a 65 6e 64 3b 0a 0a 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 tool..\n');..end;..instructions.
1c20 3d 20 30 3b 0a 0a 66 69 67 5f 6e 75 6d 62 65 72 20 3d 20 31 3b 0a 0a 6e 5f 72 6f 77 20 3d 20 31 =.0;..fig_number.=.1;..n_row.=.1
1c40 3b 0a 6e 5f 63 6f 6c 20 3d 20 33 3b 0a 0a 73 74 72 69 6e 67 5f 6c 69 73 74 20 3d 20 63 65 6c 6c ;.n_col.=.3;..string_list.=.cell
1c60 28 6e 5f 72 6f 77 2c 6e 5f 63 6f 6c 29 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 20 3d 20 63 (n_row,n_col);.callback_list.=.c
1c80 65 6c 6c 28 6e 5f 72 6f 77 2c 6e 5f 63 6f 6c 29 3b 0a 0a 78 5f 73 69 7a 65 20 3d 20 34 30 3b 0a ell(n_row,n_col);..x_size.=.40;.
1ca0 79 5f 73 69 7a 65 20 3d 20 32 30 3b 0a 0a 74 69 74 6c 65 5f 66 69 67 75 72 65 20 3d 20 27 43 61 y_size.=.20;..title_figure.=.'Ca
1cc0 6c 69 62 72 61 74 69 6f 6e 20 74 6f 6f 6c 27 3b 0a 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 31 2c libration.tool';..string_list{1,
1ce0 31 7d 20 3d 20 27 32 44 20 72 69 67 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 31 2c 32 7d 20 1}.=.'2D.rig';.string_list{1,2}.
1d00 3d 20 27 33 44 20 72 69 67 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 31 2c 33 7d 20 3d 20 27 =.'3D.rig';.string_list{1,3}.=.'
1d20 45 78 69 74 27 3b 0a 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 31 2c 31 7d 20 3d 20 27 63 61 Exit';..callback_list{1,1}.=.'ca
1d40 6c 69 62 5f 67 75 69 3b 27 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 31 2c 32 7d 20 3d 20 lib_gui;';.callback_list{1,2}.=.
1d60 27 63 61 6c 69 62 33 44 5f 67 75 69 3b 27 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 31 2c 'calib3D_gui;';.callback_list{1,
1d80 33 7d 20 3d 20 5b 27 64 69 73 70 28 27 27 42 79 65 2e 20 54 6f 20 72 75 6e 20 61 67 61 69 6e 2c 3}.=.['disp(''Bye..To.run.again,
1da0 20 74 79 70 65 20 63 61 6c 69 62 2e 27 27 29 3b 20 63 6c 6f 73 65 28 27 20 6e 75 6d 32 73 74 72 .type.calib.'');.close('.num2str
1dc0 28 66 69 67 5f 6e 75 6d 62 65 72 29 20 27 29 3b 27 5d 3b 0a 0a 0a 66 69 67 75 72 65 28 66 69 67 (fig_number).');'];...figure(fig
1de0 5f 6e 75 6d 62 65 72 29 3b 20 63 6c 66 3b 0a 70 6f 73 20 3d 20 67 65 74 28 66 69 67 5f 6e 75 6d _number);.clf;.pos.=.get(fig_num
1e00 62 65 72 2c 27 50 6f 73 69 74 69 6f 6e 27 29 3b 0a 0a 66 69 67 5f 73 69 7a 65 5f 78 20 3d 20 78 ber,'Position');..fig_size_x.=.x
1e20 5f 73 69 7a 65 2a 6e 5f 63 6f 6c 2b 28 6e 5f 63 6f 6c 2b 31 29 2a 32 3b 0a 66 69 67 5f 73 69 7a _size*n_col+(n_col+1)*2;.fig_siz
1e40 65 5f 79 20 3d 20 79 5f 73 69 7a 65 2a 6e 5f 72 6f 77 2b 28 6e 5f 72 6f 77 2b 31 29 2a 32 3b 0a e_y.=.y_size*n_row+(n_row+1)*2;.
1e60 0a 73 65 74 28 66 69 67 5f 6e 75 6d 62 65 72 2c 27 55 6e 69 74 73 27 2c 27 70 6f 69 6e 74 73 27 .set(fig_number,'Units','points'
1e80 2c 20 2e 2e 2e 0a 09 27 42 61 63 6b 69 6e 67 53 74 6f 72 65 27 2c 27 6f 66 66 27 2c 20 2e 2e 2e ,......'BackingStore','off',....
1ea0 0a 09 27 43 6f 6c 6f 72 27 2c 5b 30 2e 38 20 30 2e 38 20 30 2e 38 5d 2c 20 2e 2e 2e 0a 09 27 4d ..'Color',[0.8.0.8.0.8],......'M
1ec0 65 6e 75 42 61 72 27 2c 27 6e 6f 6e 65 27 2c 20 2e 2e 2e 0a 09 27 52 65 73 69 7a 65 27 2c 27 6f enuBar','none',......'Resize','o
1ee0 66 66 27 2c 20 2e 2e 2e 0a 09 27 4e 61 6d 65 27 2c 74 69 74 6c 65 5f 66 69 67 75 72 65 2c 20 2e ff',......'Name',title_figure,..
1f00 2e 2e 0a 27 50 6f 73 69 74 69 6f 6e 27 2c 5b 70 6f 73 28 31 29 20 70 6f 73 28 32 29 20 66 69 67 ...'Position',[pos(1).pos(2).fig
1f20 5f 73 69 7a 65 5f 78 20 66 69 67 5f 73 69 7a 65 5f 79 5d 2c 20 2e 2e 2e 0a 27 4e 75 6d 62 65 72 _size_x.fig_size_y],.....'Number
1f40 54 69 74 6c 65 27 2c 27 6f 66 66 27 29 3b 0a 0a 0a 66 6f 72 20 69 3d 6e 5f 72 6f 77 3a 2d 31 3a Title','off');...for.i=n_row:-1:
1f60 31 2c 0a 20 20 20 66 6f 72 20 6a 20 3d 20 6e 5f 63 6f 6c 3a 2d 31 3a 31 2c 0a 20 20 20 20 20 20 1,....for.j.=.n_col:-1:1,.......
1f80 69 66 20 28 7e 69 73 65 6d 70 74 79 28 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 69 2c 6a 7d 29 if.(~isempty(callback_list{i,j})
1fa0 29 26 28 7e 69 73 65 6d 70 74 79 28 73 74 72 69 6e 67 5f 6c 69 73 74 7b 69 2c 6a 7d 29 29 2c 0a )&(~isempty(string_list{i,j})),.
1fc0 20 20 20 20 20 20 09 75 69 63 6f 6e 74 72 6f 6c 28 27 50 61 72 65 6e 74 27 2c 66 69 67 5f 6e 75 .......uicontrol('Parent',fig_nu
1fe0 6d 62 65 72 2c 20 2e 2e 2e 0a 20 20 20 20 20 20 20 20 20 09 27 55 6e 69 74 73 27 2c 27 70 6f 69 mber,...............'Units','poi
2000 6e 74 73 27 2c 20 2e 2e 2e 0a 09 09 09 09 27 43 61 6c 6c 62 61 63 6b 27 2c 63 61 6c 6c 62 61 63 nts',.........'Callback',callbac
2020 6b 5f 6c 69 73 74 7b 69 2c 6a 7d 2c 20 2e 2e 2e 0a 09 09 09 09 27 4c 69 73 74 62 6f 78 54 6f 70 k_list{i,j},.........'ListboxTop
2040 27 2c 30 2c 20 2e 2e 2e 0a 09 09 09 09 27 50 6f 73 69 74 69 6f 6e 27 2c 5b 28 32 2b 28 6a 2d 31 ',0,.........'Position',[(2+(j-1
2060 29 2a 28 78 5f 73 69 7a 65 2b 32 29 29 20 20 20 28 66 69 67 5f 73 69 7a 65 5f 79 20 2d 20 69 2a )*(x_size+2))...(fig_size_y.-.i*
2080 28 32 2b 79 5f 73 69 7a 65 29 29 20 20 78 5f 73 69 7a 65 20 20 20 79 5f 73 69 7a 65 5d 2c 20 2e (2+y_size))..x_size...y_size],..
20a0 2e 2e 0a 09 09 09 09 27 53 74 72 69 6e 67 27 2c 73 74 72 69 6e 67 5f 6c 69 73 74 7b 69 2c 6a 7d .......'String',string_list{i,j}
20c0 2c 20 2e 2e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 27 54 61 67 27 2c 27 50 75 73 68 62 75 74 ,.................'Tag','Pushbut
20e0 74 6f 6e 31 27 29 3b 0a 20 20 20 20 20 20 65 6e 64 3b 20 20 0a 09 65 6e 64 3b 0a 65 6e 64 3b 0a ton1');.......end;....end;.end;.
2100 0a 74 69 6f 6e 20 74 6f 6f 6c 62 6f 78 20 28 32 44 20 61 6e 64 20 33 44 20 72 69 67 73 29 20 20 .tion.toolbox.(2D.and.3D.rigs)..
2120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
2140 7c 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 |\n');.fprintf(1,'|.............
2160 20 20 20 20 20 20 20 20 20 20 20 28 63 29 20 4a 65 61 6e 2d 59 76 65 73 20 42 6f 75 67 75 65 74 ...........(c).Jean-Yves.Bouguet
2180 20 2d 20 53 65 70 74 65 6d 62 65 72 20 39 74 68 2c 20 31 39 39 39 20 20 20 20 20 20 20 20 20 20 .-.September.9th,.1999..........
21a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 5c 6e 27 29 3b 0a 66 70 .......................|\n');.fp
21c0 72 69 6e 74 66 28 31 2c 27 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d rintf(1,'*----------------------
21e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
2200 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 61 6c 69 62 33 44 5f 67 75 69 2e 6d 00 00 00 00 00 TOOLBOX_calib/calib3D_gui.m.....
2220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2260 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
2280 20 20 31 33 37 30 35 20 20 37 30 32 34 30 33 37 33 30 33 20 20 31 30 37 32 35 00 20 00 00 00 00 ..13705..7024037303..10725......
22a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2400 69 66 20 7e 65 78 69 73 74 28 27 69 6e 73 74 72 75 63 74 69 6f 6e 73 33 44 27 29 2c 20 69 6e 73 if.~exist('instructions3D'),.ins
2420 74 72 75 63 74 69 6f 6e 73 33 44 20 3d 20 31 3b 20 65 6e 64 3b 0a 0a 69 66 20 69 6e 73 74 72 75 tructions3D.=.1;.end;..if.instru
2440 63 74 69 6f 6e 73 33 44 2c 0a 20 20 20 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 27 29 3b 0a 66 ctions3D,.....fprintf(1,'\n');.f
2460 70 72 69 6e 74 66 28 31 2c 27 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d printf(1,'*---------------------
2480 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
24a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
24c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2a 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c ---------------*\n');.fprintf(1,
24e0 27 7c 20 20 20 20 20 20 20 20 20 20 20 43 61 6e 65 72 61 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 '|...........Canera.calibration.
2500 66 72 6f 6d 20 6d 75 6c 74 69 70 6c 65 20 69 6d 61 67 65 73 20 6f 66 20 74 68 65 20 49 6e 74 65 from.multiple.images.of.the.Inte
2520 6c 20 33 44 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 72 69 67 20 20 20 20 20 20 20 20 20 20 20 20 l.3D.calibration.rig............
2540 20 20 20 20 20 20 7c 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 7c 20 20 20 20 20 20 20 ......|\n');.fprintf(1,'|.......
2560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 29 20 4a 65 61 6e 2d 59 76 65 73 20 ..................(c).Jean-Yves.
2580 42 6f 75 67 75 65 74 20 2d 20 53 65 70 74 65 6d 62 65 72 20 32 6e 64 2c 20 31 39 39 39 20 20 20 Bouguet.-.September.2nd,.1999...
25a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 5c 6e .............................|\n
25c0 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ');.fprintf(1,'*----------------
25e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
2600 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
2620 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2a 5c 6e 5c 6e 5c 6e 27 29 3b 0a 0a --------------------*\n\n\n');..
2640 66 70 72 69 6e 74 66 28 31 2c 27 4c 49 53 54 20 4f 46 20 43 41 4c 49 42 52 41 54 49 4f 4e 20 43 fprintf(1,'LIST.OF.CALIBRATION.C
2660 4f 4d 4d 41 4e 44 53 20 28 74 6f 20 62 65 20 65 78 65 63 75 74 65 64 20 66 72 6f 6d 20 31 20 74 OMMANDS.(to.be.executed.from.1.t
2680 6f 20 35 29 3a 5c 6e 5c 6e 27 29 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 31 2d 20 49 6d 61 67 o.5):\n\n');..fprintf(1,'1-.Imag
26a0 65 20 6e 61 6d 65 73 3a 20 20 20 20 20 20 20 20 20 20 4c 65 74 73 20 74 68 65 20 75 73 65 72 20 e.names:..........Lets.the.user.
26c0 65 6e 74 65 72 20 74 68 65 20 66 69 6c 65 20 6e 61 6d 65 73 20 6f 66 20 74 68 65 20 63 61 6c 69 enter.the.file.names.of.the.cali
26e0 62 72 61 74 69 6f 6e 20 69 6d 61 67 65 73 20 28 6d 61 78 20 3d 20 33 30 20 69 6d 61 67 65 73 29 bration.images.(max.=.30.images)
2700 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .\n');.fprintf(1,'..............
2720 20 20 20 20 20 20 20 20 20 20 20 49 74 20 69 6e 63 6c 75 64 65 73 20 62 61 73 65 6e 61 6d 65 2c ...........It.includes.basename,
2740 20 69 6d 61 67 65 20 74 79 70 65 20 28 27 27 74 69 66 27 27 2c 20 27 27 62 6d 70 27 27 20 6f 72 .image.type.(''tif'',.''bmp''.or
2760 20 27 27 72 61 73 27 27 29 2c 20 6e 75 6d 62 65 72 69 6e 67 20 73 63 68 65 6d 65 2e 5c 6e 27 29 .''ras''),.numbering.scheme.\n')
2780 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;.fprintf(1,'...................
27a0 20 20 20 20 20 20 41 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 6c 61 75 6e 63 68 73 20 74 68 65 20 ......Automatically.launchs.the.
27c0 6e 65 78 74 20 73 74 65 70 20 28 52 65 61 64 20 69 6d 61 67 65 73 29 2e 5c 6e 27 29 3b 0a 66 70 next.step.(Read.images).\n');.fp
27e0 72 69 6e 74 66 28 31 2c 27 32 2d 20 52 65 61 64 20 69 6d 61 67 65 73 3a 20 20 20 20 20 20 20 20 rintf(1,'2-.Read.images:........
2800 20 20 52 65 61 64 73 20 69 6e 20 74 68 65 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 69 6d 61 67 65 ..Reads.in.the.calibration.image
2820 73 20 66 72 6f 6d 20 66 69 6c 65 73 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 s.from.files.\n');.fprintf(1,'..
2840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 6f 65 73 20 6e 6f 74 20 .......................Does.not.
2860 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 6c 61 75 6e 63 68 20 74 68 65 20 6e 65 78 74 20 73 74 automatically.launch.the.next.st
2880 65 70 20 28 45 78 74 72 61 63 74 20 67 72 69 64 20 63 6f 72 6e 65 72 73 29 2e 5c 6e 27 29 3b 0a ep.(Extract.grid.corners).\n');.
28a0 66 70 72 69 6e 74 66 28 31 2c 27 33 2d 20 45 78 74 72 61 63 74 20 67 72 69 64 20 63 6f 72 6e 65 fprintf(1,'3-.Extract.grid.corne
28c0 72 73 3a 20 45 78 74 72 61 63 74 73 20 74 68 65 20 67 72 69 64 20 63 6f 72 6e 65 72 73 20 66 72 rs:.Extracts.the.grid.corners.fr
28e0 6f 6d 20 74 68 65 20 69 6d 61 67 65 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 om.the.image.\n');.fprintf(1,'..
2900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 61 73 65 64 20 73 69 78 .......................Based.six
2920 20 6d 61 75 61 6c 20 63 6c 69 63 6b 73 20 70 65 72 20 69 6d 61 67 65 2e 5c 6e 27 29 3b 0a 66 70 .maual.clicks.per.image.\n');.fp
2940 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rintf(1,'.......................
2960 20 20 54 68 65 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 64 61 74 61 20 69 73 20 73 61 76 65 64 20 ..The.calibration.data.is.saved.
2980 75 6e 64 65 72 20 27 27 63 61 6c 69 62 5f 64 61 74 61 2e 6d 61 74 27 27 2e 5c 6e 27 29 3b 0a 66 under.''calib_data.mat''.\n');.f
29a0 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 printf(1,'......................
29c0 20 20 20 41 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 6c 61 75 6e 63 68 73 20 74 68 65 20 6e 65 78 ...Automatically.launchs.the.nex
29e0 74 20 73 74 65 70 20 28 52 75 6e 20 63 61 6c 69 62 72 61 74 69 6f 6e 29 2e 5c 6e 27 29 3b 0a 66 t.step.(Run.calibration).\n');.f
2a00 70 72 69 6e 74 66 28 31 2c 27 34 2d 20 52 75 6e 20 63 61 6c 69 62 72 61 74 69 6f 6e 3a 20 20 20 printf(1,'4-.Run.calibration:...
2a20 20 20 20 4d 61 69 6e 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 70 72 6f 63 65 64 75 72 65 2e 5c 6e ...Main.calibration.procedure.\n
2a40 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ');.fprintf(1,'.................
2a60 20 20 20 20 20 20 20 20 4f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 6f 66 20 69 6e 74 72 69 6e 73 69 ........Optimization.of.intrinsi
2a80 63 20 61 6e 64 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20 6d 69 c.and.extrinsic.parameters.to.mi
2aa0 6e 69 6d 69 7a 65 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 nimize\n');.fprintf(1,'.........
2ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 20 72 65 70 72 6f 6a 65 63 74 69 6f 6e ................the.reprojection
2ae0 20 65 72 72 6f 72 20 28 69 6e 20 74 68 65 20 6c 65 61 73 74 20 73 71 75 61 72 65 73 20 73 65 6e .error.(in.the.least.squares.sen
2b00 73 65 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 se.\n');.fprintf(1,'............
2b20 20 20 20 20 20 20 20 20 20 20 20 20 20 45 73 74 69 6d 61 74 65 64 20 70 61 72 61 6d 65 74 65 72 .............Estimated.parameter
2b40 73 3a 20 32 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 73 2c 20 70 72 69 6e 63 69 70 61 6c 20 70 6f s:.2.focal.lengths,.principal.po
2b60 69 6e 74 2c 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 int,\n');.fprintf(1,'...........
2b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 64 69 61 6c 20 28 32 20 63 6f 65 66 66 2e 20 2d ..............radial.(2.coeff..-
2ba0 3e 20 34 20 64 65 67 72 65 65 20 6d 6f 64 65 6c 29 20 61 6e 64 20 74 61 6e 67 65 6e 74 69 61 6c >.4.degree.model).and.tangential
2bc0 20 28 32 20 63 6f 65 66 66 2e 29 20 64 69 73 74 6f 72 74 69 6f 6e 2c 5c 6e 27 29 3b 0a 66 70 72 .(2.coeff.).distortion,\n');.fpr
2be0 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 intf(1,'........................
2c00 20 61 6e 64 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 28 36 20 70 61 72 .and.extrinsic.parameters.(6.par
2c20 61 6d 65 74 65 72 73 20 70 65 72 20 69 6d 61 67 65 29 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 ameters.per.image).\n');.fprintf
2c40 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 68 65 (1,'.........................The
2c60 20 66 69 6e 61 6c 20 73 6f 6c 75 74 69 6f 6e 20 69 73 20 73 61 76 65 64 20 75 6e 64 65 72 20 27 .final.solution.is.saved.under.'
2c80 27 43 61 6c 69 62 5f 52 65 73 75 6c 74 73 2e 6d 61 74 27 27 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 'Calib_Results.mat''.\n');.fprin
2ca0 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 tf(1,'.........................F
2cc0 6f 72 20 61 20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e 74 72 69 6e 73 69 or.a.description.of.the.intrinsi
2ce0 63 20 63 61 6d 65 72 61 20 6d 6f 64 65 6c 2c 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 72 65 66 c.camera.model,.refer.to.the.ref
2d00 65 72 65 6e 63 65 3a 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 erence:\n');.fprintf(1,'........
2d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 41 20 46 6f 75 72 2d 73 74 65 70 20 43 61 ................."A.Four-step.Ca
2d40 6d 65 72 61 20 43 61 6c 69 62 72 61 74 69 6f 6e 20 50 72 6f 63 65 64 75 72 65 20 77 69 74 68 20 mera.Calibration.Procedure.with.
2d60 69 6d 70 6c 69 63 69 74 20 49 6d 61 67 65 20 43 6f 72 72 65 63 74 69 6f 6e 22 5c 6e 27 29 3b 0a implicit.Image.Correction"\n');.
2d80 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 fprintf(1,'.....................
2da0 20 20 20 20 4a 61 6e 6e 65 20 48 65 69 6b 6b 69 6c 61 20 61 6e 64 20 4f 6c 6c 69 20 53 69 6c 76 ....Janne.Heikkila.and.Olli.Silv
2dc0 65 6e 2c 20 49 6e 66 6f 74 65 63 68 20 4f 75 6c 75 20 61 6e 64 20 44 65 70 61 72 74 6d 65 6e 74 en,.Infotech.Oulu.and.Department
2de0 20 6f 66 20 45 45 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 .of.EE\n');.fprintf(1,'.........
2e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 69 76 65 72 73 69 74 79 20 6f 66 20 4f 75 ................University.of.Ou
2e20 6c 75 2c 20 41 70 70 65 61 72 65 64 20 69 6e 20 43 56 50 52 27 27 39 37 2c 20 50 75 65 72 74 6f lu,.Appeared.in.CVPR''97,.Puerto
2e40 20 52 69 63 6f 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 .Rico.\n');.fprintf(1,'.........
2e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 56 69 73 69 74 20 68 74 74 70 3a 2f 2f 77 77 77 ................Visit.http://www
2e80 2e 65 65 2e 6f 75 6c 75 2e 66 69 2f 7e 6a 74 68 2f 63 61 6c 69 62 72 2f 43 61 6c 69 62 72 61 74 .ee.oulu.fi/~jth/calibr/Calibrat
2ea0 69 6f 6e 2e 68 74 6d 6c 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 ion.html\n');.fprintf(1,'.......
2ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 ..................Automatically.
2ee0 6c 61 75 6e 63 68 73 20 74 68 65 20 6e 65 78 74 20 73 74 65 70 20 28 47 72 61 70 68 69 63 20 6f launchs.the.next.step.(Graphic.o
2f00 75 74 29 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 35 2d 20 47 72 61 70 68 69 63 20 ut).\n');.fprintf(1,'5-.Graphic.
2f20 6f 75 74 3a 20 20 20 20 20 20 20 20 20 20 47 65 6e 65 72 61 74 65 73 20 74 68 65 20 67 72 61 70 out:..........Generates.the.grap
2f40 68 69 63 61 6c 20 6f 75 74 70 75 74 20 61 73 73 6f 63 69 61 74 65 64 20 74 6f 20 74 68 65 20 63 hical.output.associated.to.the.c
2f60 75 72 72 65 6e 74 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 73 6f 6c 75 74 69 6f 6e 2e 5c 6e 27 29 urrent.calibration.solution.\n')
2f80 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;.fprintf(1,'...................
2fa0 20 20 20 20 20 20 49 74 20 73 68 6f 77 73 20 74 68 65 20 33 44 20 6c 6f 63 61 74 69 6f 6e 73 20 ......It.shows.the.3D.locations.
2fc0 6f 66 20 74 68 65 20 67 72 69 64 73 2c 20 61 6e 64 20 72 65 70 72 6f 6a 65 63 74 73 20 74 68 65 of.the.grids,.and.reprojects.the
2fe0 20 33 44 20 70 61 74 74 65 72 6e 73 20 6f 6e 20 74 68 65 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 .3D.patterns.on.the\n');.fprintf
3000 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 72 69 (1,'.........................ori
3020 67 69 6e 61 6c 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 69 6d 61 67 65 73 2e 5c 6e 27 29 3b 0a 66 ginal.calibration.images.\n');.f
3040 70 72 69 6e 74 66 28 31 2c 27 36 2d 20 73 6f 6c 2e 20 77 69 74 68 20 63 65 6e 74 65 72 3a 20 20 printf(1,'6-.sol..with.center:..
3060 20 20 20 4c 65 74 73 20 74 68 65 20 75 73 65 72 20 73 65 6c 65 63 74 20 74 68 65 20 63 61 6c 69 ...Lets.the.user.select.the.cali
3080 62 72 61 74 69 6f 6e 20 73 6f 6c 75 74 69 6f 6e 20 77 69 74 68 20 63 6f 6d 70 75 74 65 64 20 70 bration.solution.with.computed.p
30a0 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 rincipal.point.\n');.fprintf(1,'
30c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 68 69 73 20 69 73 .........................This.is
30e0 20 74 68 65 20 64 65 66 61 75 6c 74 20 63 61 73 65 20 28 73 6f 6c 75 74 69 6f 6e 20 72 65 74 61 .the.default.case.(solution.reta
3100 69 6e 65 64 20 61 66 74 65 72 20 52 75 6e 20 63 61 6c 69 62 72 61 74 69 6f 6e 29 2e 5c 6e 27 29 ined.after.Run.calibration).\n')
3120 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;.fprintf(1,'...................
3140 20 20 20 20 20 20 41 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 28 72 65 29 67 65 6e 65 72 61 74 65 ......Automatically.(re)generate
3160 73 20 74 68 65 20 67 72 61 70 68 69 63 61 6c 20 6f 75 74 70 75 74 20 61 73 73 6f 63 69 61 74 65 s.the.graphical.output.associate
3180 64 20 74 6f 20 74 68 61 74 20 73 6f 6c 75 74 69 6f 6e 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 d.to.that.solution.\n');.fprintf
31a0 28 31 2c 27 37 2d 20 73 6f 6c 2e 20 77 69 74 68 6f 75 74 20 63 65 6e 74 65 72 3a 20 20 4c 65 74 (1,'7-.sol..without.center:..Let
31c0 73 20 74 68 65 20 75 73 65 72 73 20 73 65 6c 65 63 74 20 74 68 65 20 63 61 6c 69 62 72 61 74 69 s.the.users.select.the.calibrati
31e0 6f 6e 20 73 6f 6c 75 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 63 6f 6d 70 75 74 65 64 20 70 72 69 on.solution.without.computed.pri
3200 6e 63 69 70 61 6c 20 70 6f 69 6e 74 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 ncipal.point.\n');.fprintf(1,'..
3220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 20 74 68 61 74 20 63 .......................In.that.c
3240 61 73 65 2c 20 74 68 65 20 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 69 73 20 61 73 73 75 ase,.the.principal.point.is.assu
3260 6d 65 64 20 61 74 20 74 68 65 20 63 65 6e 74 65 72 20 6f 66 20 74 68 65 20 69 6d 61 67 65 2e 5c med.at.the.center.of.the.image.\
3280 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 n');.fprintf(1,'................
32a0 20 20 20 20 20 20 20 20 20 41 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 67 65 6e 65 72 61 74 65 73 .........Automatically.generates
32c0 20 74 68 65 20 67 72 61 70 68 69 63 61 6c 20 6f 75 74 70 75 74 20 61 73 73 6f 63 69 61 74 65 64 .the.graphical.output.associated
32e0 20 74 6f 20 74 68 61 74 20 73 6f 6c 75 74 69 6f 6e 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 .to.that.solution.\n');.fprintf(
3300 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 68 69 73 1,'.........................This
3320 20 6f 70 74 69 6f 6e 20 69 73 20 73 6f 6d 65 74 69 6d 65 73 20 75 73 65 66 75 6c 20 77 68 65 6e .option.is.sometimes.useful.when
3340 20 74 68 65 20 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 69 73 20 64 69 66 66 69 63 75 6c .the.principal.point.is.difficul
3360 74 20 74 6f 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 t.to\n');.fprintf(1,'...........
3380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 73 74 69 6d 61 74 65 20 28 69 6e 20 70 61 72 74 69 ..............estimate.(in.parti
33a0 63 75 6c 61 72 20 77 68 65 6e 20 74 68 65 20 63 61 6d 65 72 61 20 66 69 65 6c 64 20 6f 66 20 76 cular.when.the.camera.field.of.v
33c0 69 65 77 20 69 73 20 73 6d 61 6c 6c 29 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 38 iew.is.small).\n');.fprintf(1,'8
33e0 2d 20 42 61 63 6b 20 74 6f 20 6d 61 69 6e 3a 20 20 20 20 20 20 20 20 20 47 6f 65 73 20 62 61 63 -.Back.to.main:.........Goes.bac
3400 6b 20 74 6f 20 74 68 65 20 6d 61 69 6e 20 63 61 6c 62 72 61 74 69 6f 6e 20 74 6f 6f 6c 62 6f 78 k.to.the.main.calbration.toolbox
3420 20 77 69 6e 64 6f 77 2e 5c 6e 5c 6e 5c 6e 27 29 3b 0a 0a 65 6e 64 3b 0a 0a 69 6e 73 74 72 75 63 .window.\n\n\n');..end;..instruc
3440 74 69 6f 6e 73 33 44 20 3d 20 30 3b 0a 0a 67 6c 6f 62 61 6c 20 58 5f 31 20 78 5f 31 20 58 5f 32 tions3D.=.0;..global.X_1.x_1.X_2
3460 20 78 5f 32 20 58 5f 33 20 78 5f 33 20 58 5f 34 20 78 5f 34 20 58 5f 35 20 78 5f 35 20 58 5f 36 .x_2.X_3.x_3.X_4.x_4.X_5.x_5.X_6
3480 20 78 5f 36 20 58 5f 37 20 78 5f 37 20 58 5f 38 20 78 5f 38 20 58 5f 39 20 78 5f 39 20 58 5f 31 .x_6.X_7.x_7.X_8.x_8.X_9.x_9.X_1
34a0 30 20 78 5f 31 30 20 58 5f 31 31 20 78 5f 31 31 20 58 5f 31 32 20 78 5f 31 32 20 58 5f 31 33 20 0.x_10.X_11.x_11.X_12.x_12.X_13.
34c0 78 5f 31 33 20 58 5f 31 34 20 78 5f 31 34 20 58 5f 31 35 20 78 5f 31 35 20 58 5f 31 36 20 78 5f x_13.X_14.x_14.X_15.x_15.X_16.x_
34e0 31 36 20 58 5f 31 37 20 78 5f 31 37 20 58 5f 31 38 20 78 5f 31 38 20 58 5f 31 39 20 78 5f 31 39 16.X_17.x_17.X_18.x_18.X_19.x_19
3500 20 58 5f 32 30 20 78 5f 32 30 20 58 5f 32 31 20 78 5f 32 31 20 58 5f 32 32 20 78 5f 32 32 20 58 .X_20.x_20.X_21.x_21.X_22.x_22.X
3520 5f 32 33 20 78 5f 32 33 20 58 5f 32 34 20 78 5f 32 34 20 58 5f 32 35 20 78 5f 32 35 20 58 5f 32 _23.x_23.X_24.x_24.X_25.x_25.X_2
3540 36 20 78 5f 32 36 20 58 5f 32 37 20 78 5f 32 37 20 58 5f 32 38 20 78 5f 32 38 20 58 5f 32 39 20 6.x_26.X_27.x_27.X_28.x_28.X_29.
3560 78 5f 32 39 20 58 5f 33 30 20 78 5f 33 30 20 0a 0a 0a 66 69 67 5f 6e 75 6d 62 65 72 20 3d 20 31 x_29.X_30.x_30....fig_number.=.1
3580 3b 0a 0a 6e 5f 72 6f 77 20 3d 20 32 3b 0a 6e 5f 63 6f 6c 20 3d 20 34 3b 0a 0a 73 74 72 69 6e 67 ;..n_row.=.2;.n_col.=.4;..string
35a0 5f 6c 69 73 74 20 3d 20 63 65 6c 6c 28 6e 5f 72 6f 77 2c 6e 5f 63 6f 6c 29 3b 0a 63 61 6c 6c 62 _list.=.cell(n_row,n_col);.callb
35c0 61 63 6b 5f 6c 69 73 74 20 3d 20 63 65 6c 6c 28 6e 5f 72 6f 77 2c 6e 5f 63 6f 6c 29 3b 0a 0a 78 ack_list.=.cell(n_row,n_col);..x
35e0 5f 73 69 7a 65 20 3d 20 38 35 3b 0a 79 5f 73 69 7a 65 20 3d 20 32 30 3b 0a 0a 74 69 74 6c 65 5f _size.=.85;.y_size.=.20;..title_
3600 66 69 67 75 72 65 20 3d 20 27 43 61 6d 65 72 61 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 74 6f 6f figure.=.'Camera.calibration.too
3620 6c 20 28 33 44 20 72 69 67 29 27 3b 0a 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 31 2c 31 7d 20 3d l.(3D.rig)';..string_list{1,1}.=
3640 20 27 49 6d 61 67 65 20 6e 61 6d 65 73 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 31 2c 32 7d .'Image.names';.string_list{1,2}
3660 20 3d 20 27 52 65 61 64 20 69 6d 61 67 65 73 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 31 2c .=.'Read.images';.string_list{1,
3680 33 7d 20 3d 20 27 45 78 74 72 61 63 74 20 67 72 69 64 20 63 6f 72 6e 65 72 73 27 3b 0a 73 74 72 3}.=.'Extract.grid.corners';.str
36a0 69 6e 67 5f 6c 69 73 74 7b 31 2c 34 7d 20 3d 20 27 52 75 6e 20 63 61 6c 69 62 72 61 74 69 6f 6e ing_list{1,4}.=.'Run.calibration
36c0 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 32 2c 31 7d 20 3d 20 27 47 72 61 70 68 69 63 20 6f ';.string_list{2,1}.=.'Graphic.o
36e0 75 74 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 32 2c 32 7d 20 3d 20 27 73 6f 6c 2e 20 77 69 ut';.string_list{2,2}.=.'sol..wi
3700 74 68 20 63 65 6e 74 65 72 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 32 2c 33 7d 20 3d 20 27 th.center';.string_list{2,3}.=.'
3720 73 6f 6c 2e 20 77 69 74 68 6f 75 74 20 63 65 6e 74 65 72 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 sol..without.center';.string_lis
3740 74 7b 32 2c 34 7d 20 3d 20 27 42 61 63 6b 20 74 6f 20 6d 61 69 6e 27 3b 0a 0a 63 61 6c 6c 62 61 t{2,4}.=.'Back.to.main';..callba
3760 63 6b 5f 6c 69 73 74 7b 31 2c 31 7d 20 3d 20 27 64 61 74 61 5f 63 61 6c 69 62 3b 27 3b 0a 63 61 ck_list{1,1}.=.'data_calib;';.ca
3780 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 31 2c 32 7d 20 3d 20 27 69 6d 61 5f 72 65 61 64 5f 63 61 6c llback_list{1,2}.=.'ima_read_cal
37a0 69 62 3b 27 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 31 2c 33 7d 20 3d 20 27 63 6c 69 63 ib;';.callback_list{1,3}.=.'clic
37c0 6b 5f 63 61 6c 69 62 33 44 3b 27 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 31 2c 34 7d 20 k_calib3D;';.callback_list{1,4}.
37e0 3d 20 27 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 33 44 3b 27 3b 0a 63 61 6c 6c 62 61 63 6b 5f =.'go_calib_optim3D;';.callback_
3800 6c 69 73 74 7b 32 2c 31 7d 20 3d 20 27 67 72 61 70 68 6f 75 74 5f 63 61 6c 69 62 33 44 3b 27 3b list{2,1}.=.'graphout_calib3D;';
3820 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 32 2c 32 7d 20 3d 20 27 73 65 6c 65 63 74 5f 73 6f .callback_list{2,2}.=.'select_so
3840 6c 5f 77 69 74 68 5f 63 65 6e 74 65 72 33 44 3b 27 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 l_with_center3D;';.callback_list
3860 7b 32 2c 33 7d 20 3d 20 27 73 65 6c 65 63 74 5f 73 6f 6c 5f 6e 6f 5f 63 65 6e 74 65 72 33 44 3b {2,3}.=.'select_sol_no_center3D;
3880 27 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 32 2c 34 7d 20 3d 20 27 63 61 6c 69 62 3b 27 ';.callback_list{2,4}.=.'calib;'
38a0 3b 0a 0a 0a 66 69 67 75 72 65 28 66 69 67 5f 6e 75 6d 62 65 72 29 3b 20 63 6c 66 3b 0a 70 6f 73 ;...figure(fig_number);.clf;.pos
38c0 20 3d 20 67 65 74 28 66 69 67 5f 6e 75 6d 62 65 72 2c 27 50 6f 73 69 74 69 6f 6e 27 29 3b 0a 0a .=.get(fig_number,'Position');..
38e0 66 69 67 5f 73 69 7a 65 5f 78 20 3d 20 78 5f 73 69 7a 65 2a 6e 5f 63 6f 6c 2b 28 6e 5f 63 6f 6c fig_size_x.=.x_size*n_col+(n_col
3900 2b 31 29 2a 32 3b 0a 66 69 67 5f 73 69 7a 65 5f 79 20 3d 20 79 5f 73 69 7a 65 2a 6e 5f 72 6f 77 +1)*2;.fig_size_y.=.y_size*n_row
3920 2b 28 6e 5f 72 6f 77 2b 31 29 2a 32 3b 0a 0a 73 65 74 28 66 69 67 5f 6e 75 6d 62 65 72 2c 27 55 +(n_row+1)*2;..set(fig_number,'U
3940 6e 69 74 73 27 2c 27 70 6f 69 6e 74 73 27 2c 20 2e 2e 2e 0a 09 27 42 61 63 6b 69 6e 67 53 74 6f nits','points',......'BackingSto
3960 72 65 27 2c 27 6f 66 66 27 2c 20 2e 2e 2e 0a 09 27 43 6f 6c 6f 72 27 2c 5b 30 2e 38 20 30 2e 38 re','off',......'Color',[0.8.0.8
3980 20 30 2e 38 5d 2c 20 2e 2e 2e 0a 09 27 4d 65 6e 75 42 61 72 27 2c 27 6e 6f 6e 65 27 2c 20 2e 2e .0.8],......'MenuBar','none',...
39a0 2e 0a 09 27 52 65 73 69 7a 65 27 2c 27 6f 66 66 27 2c 20 2e 2e 2e 0a 09 27 4e 61 6d 65 27 2c 74 ...'Resize','off',......'Name',t
39c0 69 74 6c 65 5f 66 69 67 75 72 65 2c 20 2e 2e 2e 0a 27 50 6f 73 69 74 69 6f 6e 27 2c 5b 70 6f 73 itle_figure,.....'Position',[pos
39e0 28 31 29 20 70 6f 73 28 32 29 20 66 69 67 5f 73 69 7a 65 5f 78 20 66 69 67 5f 73 69 7a 65 5f 79 (1).pos(2).fig_size_x.fig_size_y
3a00 5d 2c 20 2e 2e 2e 0a 27 4e 75 6d 62 65 72 54 69 74 6c 65 27 2c 27 6f 66 66 27 29 3b 0a 0a 0a 66 ],.....'NumberTitle','off');...f
3a20 6f 72 20 69 3d 6e 5f 72 6f 77 3a 2d 31 3a 31 2c 0a 20 20 20 66 6f 72 20 6a 20 3d 20 6e 5f 63 6f or.i=n_row:-1:1,....for.j.=.n_co
3a40 6c 3a 2d 31 3a 31 2c 0a 20 20 20 20 20 20 69 66 20 28 7e 69 73 65 6d 70 74 79 28 63 61 6c 6c 62 l:-1:1,.......if.(~isempty(callb
3a60 61 63 6b 5f 6c 69 73 74 7b 69 2c 6a 7d 29 29 26 28 7e 69 73 65 6d 70 74 79 28 73 74 72 69 6e 67 ack_list{i,j}))&(~isempty(string
3a80 5f 6c 69 73 74 7b 69 2c 6a 7d 29 29 2c 0a 20 20 20 20 20 20 09 75 69 63 6f 6e 74 72 6f 6c 28 27 _list{i,j})),........uicontrol('
3aa0 50 61 72 65 6e 74 27 2c 66 69 67 5f 6e 75 6d 62 65 72 2c 20 2e 2e 2e 0a 20 20 20 20 20 20 20 20 Parent',fig_number,.............
3ac0 20 09 27 55 6e 69 74 73 27 2c 27 70 6f 69 6e 74 73 27 2c 20 2e 2e 2e 0a 09 09 09 27 43 61 6c 6c ..'Units','points',........'Call
3ae0 62 61 63 6b 27 2c 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 69 2c 6a 7d 2c 20 2e 2e 2e 0a 09 09 back',callback_list{i,j},.......
3b00 09 27 4c 69 73 74 62 6f 78 54 6f 70 27 2c 30 2c 20 2e 2e 2e 0a 09 09 09 27 50 6f 73 69 74 69 6f .'ListboxTop',0,........'Positio
3b20 6e 27 2c 5b 28 32 2b 28 6a 2d 31 29 2a 28 78 5f 73 69 7a 65 2b 32 29 29 20 20 20 28 66 69 67 5f n',[(2+(j-1)*(x_size+2))...(fig_
3b40 73 69 7a 65 5f 79 20 2d 20 69 2a 28 32 2b 79 5f 73 69 7a 65 29 29 20 20 78 5f 73 69 7a 65 20 20 size_y.-.i*(2+y_size))..x_size..
3b60 20 79 5f 73 69 7a 65 5d 2c 20 2e 2e 2e 0a 09 09 09 27 53 74 72 69 6e 67 27 2c 73 74 72 69 6e 67 .y_size],........'String',string
3b80 5f 6c 69 73 74 7b 69 2c 6a 7d 2c 20 2e 2e 2e 0a 20 20 20 20 20 20 20 20 20 27 54 61 67 27 2c 27 _list{i,j},..............'Tag','
3ba0 50 75 73 68 62 75 74 74 6f 6e 31 27 29 3b 0a 20 20 20 20 20 20 65 6e 64 3b 0a 09 65 6e 64 3b 0a Pushbutton1');.......end;..end;.
3bc0 65 6e 64 3b 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 end;............................
3be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c00 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 61 6c 69 62 5f 67 75 69 2e 6d 00 00 00 00 00 00 00 TOOLBOX_calib/calib_gui.m.......
3c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c60 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
3c80 20 20 20 34 35 32 35 20 20 37 30 32 34 30 33 37 33 30 33 20 20 31 30 35 31 36 00 20 00 00 00 00 ...4525..7024037303..10516......
3ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3e00 66 69 67 5f 6e 75 6d 62 65 72 20 3d 20 31 3b 0a 0a 6e 5f 72 6f 77 20 3d 20 35 3b 0a 6e 5f 63 6f fig_number.=.1;..n_row.=.5;.n_co
3e20 6c 20 3d 20 34 3b 0a 0a 73 74 72 69 6e 67 5f 6c 69 73 74 20 3d 20 63 65 6c 6c 28 6e 5f 72 6f 77 l.=.4;..string_list.=.cell(n_row
3e40 2c 6e 5f 63 6f 6c 29 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 20 3d 20 63 65 6c 6c 28 6e 5f ,n_col);.callback_list.=.cell(n_
3e60 72 6f 77 2c 6e 5f 63 6f 6c 29 3b 0a 0a 78 5f 73 69 7a 65 20 3d 20 38 35 3b 0a 79 5f 73 69 7a 65 row,n_col);..x_size.=.85;.y_size
3e80 20 3d 20 32 30 3b 0a 0a 74 69 74 6c 65 5f 66 69 67 75 72 65 20 3d 20 27 43 61 6d 65 72 61 20 63 .=.20;..title_figure.=.'Camera.c
3ea0 61 6c 69 62 72 61 74 69 6f 6e 20 74 6f 6f 6c 20 28 32 44 20 72 69 67 29 27 3b 0a 0a 73 74 72 69 alibration.tool.(2D.rig)';..stri
3ec0 6e 67 5f 6c 69 73 74 7b 31 2c 31 7d 20 3d 20 27 49 6d 61 67 65 20 6e 61 6d 65 73 27 3b 0a 73 74 ng_list{1,1}.=.'Image.names';.st
3ee0 72 69 6e 67 5f 6c 69 73 74 7b 31 2c 32 7d 20 3d 20 27 52 65 61 64 20 69 6d 61 67 65 73 27 3b 0a ring_list{1,2}.=.'Read.images';.
3f00 73 74 72 69 6e 67 5f 6c 69 73 74 7b 31 2c 33 7d 20 3d 20 27 45 78 74 72 61 63 74 20 67 72 69 64 string_list{1,3}.=.'Extract.grid
3f20 20 63 6f 72 6e 65 72 73 27 3b 0a 25 73 74 72 69 6e 67 5f 6c 69 73 74 7b 31 2c 34 7d 20 3d 20 27 .corners';.%string_list{1,4}.=.'
3f40 49 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 31 2c 34 Initialization';.string_list{1,4
3f60 7d 20 3d 20 27 43 61 6c 69 62 72 61 74 69 6f 6e 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 32 }.=.'Calibration';.string_list{2
3f80 2c 31 7d 20 3d 20 27 53 68 6f 77 20 45 78 74 72 69 6e 73 69 63 27 3b 0a 73 74 72 69 6e 67 5f 6c ,1}.=.'Show.Extrinsic';.string_l
3fa0 69 73 74 7b 32 2c 32 7d 20 3d 20 27 52 65 70 72 6f 6a 65 63 74 20 6f 6e 20 69 6d 61 67 65 73 27 ist{2,2}.=.'Reproject.on.images'
3fc0 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 32 2c 33 7d 20 3d 20 27 41 6e 61 6c 79 73 65 20 65 72 ;.string_list{2,3}.=.'Analyse.er
3fe0 72 6f 72 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 32 2c 34 7d 20 3d 20 27 52 65 63 6f 6d 70 ror';.string_list{2,4}.=.'Recomp
4000 2e 20 63 6f 72 6e 65 72 73 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 33 2c 31 7d 20 3d 20 27 ..corners';.string_list{3,1}.=.'
4020 41 64 64 2f 53 75 70 70 72 65 73 73 20 69 6d 61 67 65 73 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 Add/Suppress.images';.string_lis
4040 74 7b 33 2c 32 7d 20 3d 20 27 53 61 76 65 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 33 2c 33 t{3,2}.=.'Save';.string_list{3,3
4060 7d 20 3d 20 27 4c 6f 61 64 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 33 2c 34 7d 20 3d 20 27 }.=.'Load';.string_list{3,4}.=.'
4080 45 78 69 74 27 3b 0a 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 35 2c 31 7d 20 3d 20 27 43 6f 6d 70 Exit';..string_list{5,1}.=.'Comp
40a0 2e 20 45 78 74 72 69 6e 73 69 63 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 35 2c 32 7d 20 3d ..Extrinsic';.string_list{5,2}.=
40c0 20 27 55 6e 64 69 73 74 6f 72 74 20 69 6d 61 67 65 27 3b 0a 0a 0a 63 61 6c 6c 62 61 63 6b 5f 6c .'Undistort.image';...callback_l
40e0 69 73 74 7b 31 2c 31 7d 20 3d 20 27 64 61 74 61 5f 63 61 6c 69 62 3b 27 3b 0a 63 61 6c 6c 62 61 ist{1,1}.=.'data_calib;';.callba
4100 63 6b 5f 6c 69 73 74 7b 31 2c 32 7d 20 3d 20 27 69 6d 61 5f 72 65 61 64 5f 63 61 6c 69 62 3b 27 ck_list{1,2}.=.'ima_read_calib;'
4120 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 31 2c 33 7d 20 3d 20 27 63 6c 69 63 6b 5f 63 61 ;.callback_list{1,3}.=.'click_ca
4140 6c 69 62 3b 27 3b 0a 25 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 31 2c 34 7d 20 3d 20 27 69 6e lib;';.%callback_list{1,4}.=.'in
4160 69 74 5f 63 61 6c 69 62 5f 70 61 72 61 6d 3b 27 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b it_calib_param;';.callback_list{
4180 31 2c 34 7d 20 3d 20 27 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 3b 27 3b 0a 63 61 6c 6c 62 61 1,4}.=.'go_calib_optim;';.callba
41a0 63 6b 5f 6c 69 73 74 7b 32 2c 31 7d 20 3d 20 27 65 78 74 5f 63 61 6c 69 62 3b 27 3b 0a 63 61 6c ck_list{2,1}.=.'ext_calib;';.cal
41c0 6c 62 61 63 6b 5f 6c 69 73 74 7b 32 2c 32 7d 20 3d 20 27 72 65 70 72 6f 6a 65 63 74 5f 63 61 6c lback_list{2,2}.=.'reproject_cal
41e0 69 62 3b 27 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 32 2c 33 7d 20 3d 20 27 61 6e 61 6c ib;';.callback_list{2,3}.=.'anal
4200 79 73 65 5f 65 72 72 6f 72 3b 27 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 32 2c 34 7d 20 yse_error;';.callback_list{2,4}.
4220 3d 20 27 72 65 63 6f 6d 70 5f 63 6f 72 6e 65 72 5f 63 61 6c 69 62 3b 27 3b 0a 63 61 6c 6c 62 61 =.'recomp_corner_calib;';.callba
4240 63 6b 5f 6c 69 73 74 7b 33 2c 31 7d 20 3d 20 27 61 64 64 5f 73 75 70 70 72 65 73 73 3b 27 3b 0a ck_list{3,1}.=.'add_suppress;';.
4260 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 33 2c 32 7d 20 3d 20 27 73 61 76 69 6e 67 5f 63 61 6c callback_list{3,2}.=.'saving_cal
4280 69 62 3b 27 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 33 2c 33 7d 20 3d 20 27 6c 6f 61 64 ib;';.callback_list{3,3}.=.'load
42a0 69 6e 67 5f 63 61 6c 69 62 3b 27 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 33 2c 34 7d 20 ing_calib;';.callback_list{3,4}.
42c0 3d 20 5b 27 64 69 73 70 28 27 27 42 79 65 2e 20 54 6f 20 72 75 6e 20 61 67 61 69 6e 2c 20 74 79 =.['disp(''Bye..To.run.again,.ty
42e0 70 65 20 63 61 6c 69 62 5f 67 75 69 2e 27 27 29 3b 20 63 6c 6f 73 65 28 27 20 6e 75 6d 32 73 74 pe.calib_gui.'');.close('.num2st
4300 72 28 66 69 67 5f 6e 75 6d 62 65 72 29 20 27 29 3b 27 5d 3b 0a 0a 63 61 6c 6c 62 61 63 6b 5f 6c r(fig_number).');'];..callback_l
4320 69 73 74 7b 35 2c 31 7d 20 3d 20 27 65 78 74 72 69 6e 73 69 63 5f 63 6f 6d 70 75 74 61 74 69 6f ist{5,1}.=.'extrinsic_computatio
4340 6e 3b 27 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 35 2c 32 7d 20 3d 20 27 75 6e 64 69 73 n;';.callback_list{5,2}.=.'undis
4360 74 6f 72 74 5f 69 6d 61 67 65 3b 27 3b 0a 0a 0a 66 69 67 75 72 65 28 66 69 67 5f 6e 75 6d 62 65 tort_image;';...figure(fig_numbe
4380 72 29 3b 20 63 6c 66 3b 0a 70 6f 73 20 3d 20 67 65 74 28 66 69 67 5f 6e 75 6d 62 65 72 2c 27 50 r);.clf;.pos.=.get(fig_number,'P
43a0 6f 73 69 74 69 6f 6e 27 29 3b 0a 0a 66 69 67 5f 73 69 7a 65 5f 78 20 3d 20 78 5f 73 69 7a 65 2a osition');..fig_size_x.=.x_size*
43c0 6e 5f 63 6f 6c 2b 28 6e 5f 63 6f 6c 2b 31 29 2a 32 3b 0a 66 69 67 5f 73 69 7a 65 5f 79 20 3d 20 n_col+(n_col+1)*2;.fig_size_y.=.
43e0 79 5f 73 69 7a 65 2a 6e 5f 72 6f 77 2b 28 6e 5f 72 6f 77 2b 31 29 2a 32 3b 0a 0a 73 65 74 28 66 y_size*n_row+(n_row+1)*2;..set(f
4400 69 67 5f 6e 75 6d 62 65 72 2c 27 55 6e 69 74 73 27 2c 27 70 6f 69 6e 74 73 27 2c 20 2e 2e 2e 0a ig_number,'Units','points',.....
4420 09 27 42 61 63 6b 69 6e 67 53 74 6f 72 65 27 2c 27 6f 66 66 27 2c 20 2e 2e 2e 0a 09 27 43 6f 6c .'BackingStore','off',......'Col
4440 6f 72 27 2c 5b 30 2e 38 20 30 2e 38 20 30 2e 38 5d 2c 20 2e 2e 2e 0a 09 27 4d 65 6e 75 42 61 72 or',[0.8.0.8.0.8],......'MenuBar
4460 27 2c 27 6e 6f 6e 65 27 2c 20 2e 2e 2e 0a 09 27 52 65 73 69 7a 65 27 2c 27 6f 66 66 27 2c 20 2e ','none',......'Resize','off',..
4480 2e 2e 0a 09 27 4e 61 6d 65 27 2c 74 69 74 6c 65 5f 66 69 67 75 72 65 2c 20 2e 2e 2e 0a 27 50 6f ....'Name',title_figure,.....'Po
44a0 73 69 74 69 6f 6e 27 2c 5b 70 6f 73 28 31 29 20 70 6f 73 28 32 29 20 66 69 67 5f 73 69 7a 65 5f sition',[pos(1).pos(2).fig_size_
44c0 78 20 66 69 67 5f 73 69 7a 65 5f 79 5d 2c 20 2e 2e 2e 0a 27 4e 75 6d 62 65 72 54 69 74 6c 65 27 x.fig_size_y],.....'NumberTitle'
44e0 2c 27 6f 66 66 27 29 3b 20 25 2c 27 57 69 6e 64 6f 77 42 75 74 74 6f 6e 4d 6f 74 69 6f 6e 46 63 ,'off');.%,'WindowButtonMotionFc
4500 6e 27 2c 5b 27 66 69 67 75 72 65 28 27 20 6e 75 6d 32 73 74 72 28 66 69 67 5f 6e 75 6d 62 65 72 n',['figure('.num2str(fig_number
4520 29 20 27 29 3b 27 5d 29 3b 0a 0a 0a 66 6f 72 20 69 3d 6e 5f 72 6f 77 3a 2d 31 3a 31 2c 0a 20 20 ).');']);...for.i=n_row:-1:1,...
4540 20 66 6f 72 20 6a 20 3d 20 6e 5f 63 6f 6c 3a 2d 31 3a 31 2c 0a 20 20 20 20 20 20 69 66 20 28 7e .for.j.=.n_col:-1:1,.......if.(~
4560 69 73 65 6d 70 74 79 28 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 69 2c 6a 7d 29 29 26 28 7e 69 isempty(callback_list{i,j}))&(~i
4580 73 65 6d 70 74 79 28 73 74 72 69 6e 67 5f 6c 69 73 74 7b 69 2c 6a 7d 29 29 2c 0a 20 20 20 20 20 sempty(string_list{i,j})),......
45a0 20 09 75 69 63 6f 6e 74 72 6f 6c 28 27 50 61 72 65 6e 74 27 2c 66 69 67 5f 6e 75 6d 62 65 72 2c ..uicontrol('Parent',fig_number,
45c0 20 2e 2e 2e 0a 20 20 20 20 20 20 20 20 20 09 27 55 6e 69 74 73 27 2c 27 70 6f 69 6e 74 73 27 2c ...............'Units','points',
45e0 20 2e 2e 2e 0a 09 09 09 09 27 43 61 6c 6c 62 61 63 6b 27 2c 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 .........'Callback',callback_lis
4600 74 7b 69 2c 6a 7d 2c 20 2e 2e 2e 0a 09 09 09 09 27 4c 69 73 74 62 6f 78 54 6f 70 27 2c 30 2c 20 t{i,j},.........'ListboxTop',0,.
4620 2e 2e 2e 0a 09 09 09 09 27 50 6f 73 69 74 69 6f 6e 27 2c 5b 28 32 2b 28 6a 2d 31 29 2a 28 78 5f ........'Position',[(2+(j-1)*(x_
4640 73 69 7a 65 2b 32 29 29 20 20 20 28 66 69 67 5f 73 69 7a 65 5f 79 20 2d 20 69 2a 28 32 2b 79 5f size+2))...(fig_size_y.-.i*(2+y_
4660 73 69 7a 65 29 29 20 20 78 5f 73 69 7a 65 20 20 20 79 5f 73 69 7a 65 5d 2c 20 2e 2e 2e 0a 09 09 size))..x_size...y_size],.......
4680 09 09 27 53 74 72 69 6e 67 27 2c 73 74 72 69 6e 67 5f 6c 69 73 74 7b 69 2c 6a 7d 2c 20 2e 2e 2e ..'String',string_list{i,j},....
46a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 27 54 61 67 27 2c 27 50 75 73 68 62 75 74 74 6f 6e 31 27 .............'Tag','Pushbutton1'
46c0 29 3b 0a 20 20 20 09 65 6e 64 3b 0a 09 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 0a 63 6c 65 61 72 20 63 );.....end;..end;.end;...clear.c
46e0 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 20 73 74 72 69 6e 67 5f 6c 69 73 74 20 66 69 67 5f 6e 75 6d allback_list.string_list.fig_num
4700 62 65 72 20 66 69 67 5f 73 69 7a 65 5f 78 20 66 69 67 5f 73 69 7a 65 5f 79 20 69 20 6a 20 6e 5f ber.fig_size_x.fig_size_y.i.j.n_
4720 63 6f 6c 20 6e 5f 72 6f 77 20 70 6f 73 20 73 74 72 69 6e 67 5f 6c 69 73 74 20 74 69 74 6c 65 5f col.n_row.pos.string_list.title_
4740 66 69 67 75 72 65 20 78 5f 73 69 7a 65 20 79 5f 73 69 7a 65 0a 70 6d 2e 6d 00 6d 2e 00 00 06 fc figure.x_size.y_size.pm.m.m.....
4760 00 02 36 b1 00 24 00 16 69 6e 69 74 5f 69 6e 74 72 69 6e 73 69 63 5f 70 61 72 61 6d 2e 6d 00 b1 ..6..$..init_intrinsic_param.m..
4780 00 00 07 18 00 02 36 b2 00 20 00 11 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 2e 6d 00 07 18 ......6.....mean_std_robust.m...
47a0 00 00 07 38 00 02 36 b3 00 24 00 14 72 75 6e 5f 65 72 72 6f 72 5f 61 6e 61 6c 79 73 69 73 2e 6d ...8..6..$..run_error_analysis.m
47c0 00 02 36 b3 00 00 07 54 00 02 36 b4 00 20 00 13 63 68 65 63 6b 5f 63 6f 6e 76 65 72 67 65 6e 63 ..6....T..6.....check_convergenc
47e0 65 2e 6d 00 00 00 07 70 00 02 36 b5 00 20 00 11 63 68 65 63 6b 5f 70 6c 61 6e 61 72 69 74 79 2e e.m....p..6.....check_planarity.
4800 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 68 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 65 TOOLBOX_calib/check_active_image
4820 73 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 s.m.............................
4840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4860 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
4880 20 20 20 20 34 34 33 20 20 37 30 32 34 30 33 37 33 30 34 20 20 31 32 35 31 31 00 20 00 00 00 00 ....443..7024037304..12511......
48a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
48c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
48e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
49a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
49c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
49e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4a00 0a 69 66 20 7e 65 78 69 73 74 28 27 61 63 74 69 76 65 5f 69 6d 61 67 65 73 27 29 2c 0a 09 61 63 .if.~exist('active_images'),..ac
4a20 74 69 76 65 5f 69 6d 61 67 65 73 20 3d 20 6f 6e 65 73 28 31 2c 6e 5f 69 6d 61 29 3b 0a 65 6e 64 tive_images.=.ones(1,n_ima);.end
4a40 3b 0a 6e 5f 61 63 74 20 3d 20 6c 65 6e 67 74 68 28 61 63 74 69 76 65 5f 69 6d 61 67 65 73 29 3b ;.n_act.=.length(active_images);
4a60 0a 69 66 20 6e 5f 61 63 74 20 3c 20 6e 5f 69 6d 61 2c 0a 20 20 20 61 63 74 69 76 65 5f 69 6d 61 .if.n_act.<.n_ima,....active_ima
4a80 67 65 73 20 3d 20 5b 61 63 74 69 76 65 5f 69 6d 61 67 65 73 20 6f 6e 65 73 28 31 2c 6e 5f 69 6d ges.=.[active_images.ones(1,n_im
4aa0 61 2d 6e 5f 61 63 74 29 5d 3b 0a 65 6c 73 65 0a 20 20 20 69 66 20 6e 5f 61 63 74 20 3e 20 6e 5f a-n_act)];.else....if.n_act.>.n_
4ac0 69 6d 61 2c 0a 20 20 20 20 20 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 20 3d 20 61 63 74 69 76 ima,.......active_images.=.activ
4ae0 65 5f 69 6d 61 67 65 73 28 31 3a 6e 5f 69 6d 61 29 3b 0a 20 20 20 65 6e 64 3b 0a 65 6e 64 3b 0a e_images(1:n_ima);....end;.end;.
4b00 0a 69 6e 64 5f 61 63 74 69 76 65 20 3d 20 66 69 6e 64 28 61 63 74 69 76 65 5f 69 6d 61 67 65 73 .ind_active.=.find(active_images
4b20 29 3b 0a be 00 00 01 a0 00 02 35 bf 00 20 00 12 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 32 );........5.....comp_distortion2
4b40 2e 6d 00 bf 00 00 01 c0 00 02 35 c0 00 24 00 16 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 5f .m........5..$..comp_distortion_
4b60 6f 75 6c 75 2e 6d 00 16 00 00 01 dc 00 02 35 c1 00 20 00 12 63 6f 6d 70 5f 65 72 72 6f 72 5f 63 oulu.m........5.....comp_error_c
4b80 61 6c 69 62 2e 6d 00 c1 00 00 02 00 00 02 35 c2 00 1c 00 0e 63 6f 72 6e 65 72 66 69 6e 64 65 72 alib.m........5.....cornerfinder
4ba0 2e 6d 00 00 00 00 02 18 00 02 35 c3 00 1c 00 0f 63 6f 75 6e 74 5f 73 71 75 61 72 65 73 2e 6d 00 .m........5.....count_squares.m.
4bc0 00 00 02 30 00 02 35 c4 00 1c 00 0c 64 61 74 61 5f 63 61 6c 69 62 2e 6d 00 00 02 30 00 00 02 48 ...0..5.....data_calib.m...0...H
4be0 00 02 35 c5 00 1c 00 0e 44 69 73 74 6f 72 32 43 61 6c 69 62 2e 6d 00 48 00 00 02 60 00 02 35 c6 ..5.....Distor2Calib.m.H...`..5.
4c00 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6c 69 63 6b 5f 63 61 6c 69 62 2e 6d 00 00 00 00 00 TOOLBOX_calib/click_calib.m.....
4c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4c60 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
4c80 20 20 20 34 34 31 34 20 20 37 30 32 34 30 33 37 33 30 36 20 20 31 31 30 31 37 00 20 00 00 00 00 ...4414..7024037306..11017......
4ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4e00 0a 69 66 20 7e 65 78 69 73 74 28 27 49 5f 31 27 29 2c 0a 20 20 20 69 6d 61 5f 72 65 61 64 5f 63 .if.~exist('I_1'),....ima_read_c
4e20 61 6c 69 62 3b 0a 20 20 20 69 66 20 6e 6f 5f 69 6d 61 67 65 5f 66 69 6c 65 2c 0a 20 20 20 20 20 alib;....if.no_image_file,......
4e40 20 64 69 73 70 28 27 43 61 6e 6e 6f 74 20 65 78 74 72 61 63 74 20 63 6f 72 6e 65 72 73 20 77 69 .disp('Cannot.extract.corners.wi
4e60 74 68 6f 75 74 20 69 6d 61 67 65 73 27 29 3b 0a 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0a 20 20 thout.images');.......return;...
4e80 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 63 68 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 65 73 3b .end;.end;..check_active_images;
4ea0 0a 0a 25 77 69 6e 74 78 20 3d 20 31 30 3b 20 25 20 6e 65 69 67 62 6f 72 68 6f 6f 64 20 6f 66 20 ..%wintx.=.10;.%.neigborhood.of.
4ec0 69 6e 74 65 67 72 61 74 69 6f 6e 20 66 6f 72 0a 25 77 69 6e 74 79 20 3d 20 31 30 3b 20 25 20 74 integration.for.%winty.=.10;.%.t
4ee0 68 65 20 63 6f 72 6e 65 72 20 66 69 6e 64 65 72 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 45 he.corner.finder..fprintf(1,'\nE
4f00 78 74 72 61 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 67 72 69 64 20 63 6f 72 6e 65 72 73 20 6f 6e xtraction.of.the.grid.corners.on
4f20 20 74 68 65 20 69 6d 61 67 65 73 5c 6e 27 29 3b 0a 0a 64 69 73 70 28 27 57 69 6e 64 6f 77 20 73 .the.images\n');..disp('Window.s
4f40 69 7a 65 20 66 6f 72 20 63 6f 72 6e 65 72 20 66 69 6e 64 65 72 20 28 77 69 6e 74 78 20 61 6e 64 ize.for.corner.finder.(wintx.and
4f60 20 77 69 6e 74 79 29 3a 27 29 3b 0a 77 69 6e 74 78 20 3d 20 69 6e 70 75 74 28 27 77 69 6e 74 78 .winty):');.wintx.=.input('wintx
4f80 20 28 5b 5d 20 3d 20 35 29 20 3d 20 27 29 3b 0a 69 66 20 69 73 65 6d 70 74 79 28 77 69 6e 74 78 .([].=.5).=.');.if.isempty(wintx
4fa0 29 2c 20 77 69 6e 74 78 20 3d 20 35 3b 20 65 6e 64 3b 0a 77 69 6e 74 78 20 3d 20 72 6f 75 6e 64 ),.wintx.=.5;.end;.wintx.=.round
4fc0 28 77 69 6e 74 78 29 3b 0a 77 69 6e 74 79 20 3d 20 69 6e 70 75 74 28 27 77 69 6e 74 79 20 28 5b (wintx);.winty.=.input('winty.([
4fe0 5d 20 3d 20 35 29 20 3d 20 27 29 3b 0a 69 66 20 69 73 65 6d 70 74 79 28 77 69 6e 74 79 29 2c 20 ].=.5).=.');.if.isempty(winty),.
5000 77 69 6e 74 79 20 3d 20 35 3b 20 65 6e 64 3b 0a 77 69 6e 74 79 20 3d 20 72 6f 75 6e 64 28 77 69 winty.=.5;.end;.winty.=.round(wi
5020 6e 74 79 29 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 57 69 6e 64 6f 77 20 73 69 7a 65 20 3d 20 nty);..fprintf(1,'Window.size.=.
5040 25 64 78 25 64 5c 6e 27 2c 32 2a 77 69 6e 74 78 2b 31 2c 32 2a 77 69 6e 74 79 2b 31 29 3b 0a 0a %dx%d\n',2*wintx+1,2*winty+1);..
5060 69 66 20 7e 65 78 69 73 74 28 27 6d 61 70 27 29 2c 20 6d 61 70 20 3d 20 67 72 61 79 28 32 35 36 if.~exist('map'),.map.=.gray(256
5080 29 3b 20 65 6e 64 3b 0a 0a 0a 64 69 73 70 28 27 57 41 52 4e 49 4e 47 21 21 21 20 44 6f 20 6e 6f );.end;...disp('WARNING!!!.Do.no
50a0 74 20 66 6f 72 67 65 74 20 74 6f 20 63 68 61 6e 67 65 20 64 58 5f 64 65 66 61 75 6c 74 20 61 6e t.forget.to.change.dX_default.an
50c0 64 20 64 59 5f 64 65 66 61 75 6c 74 20 69 6e 20 63 6c 69 63 6b 5f 63 61 6c 69 62 2e 6d 21 21 21 d.dY_default.in.click_calib.m!!!
50e0 27 29 0a 0a 0a 25 20 44 65 66 61 75 6c 74 20 73 69 7a 65 20 6f 66 20 74 68 65 20 70 61 74 74 65 ')...%.Default.size.of.the.patte
5100 72 6e 20 73 71 75 61 72 65 73 3b 0a 0a 25 20 53 65 74 75 70 20 6f 66 20 4a 59 20 28 6f 6c 64 20 rn.squares;..%.Setup.of.JY.(old.
5120 61 74 20 43 61 6c 74 65 63 68 29 0a 64 58 5f 64 65 66 61 75 6c 74 20 3d 20 32 31 2e 39 32 35 30 at.Caltech).dX_default.=.21.9250
5140 2f 31 31 3b 0a 64 59 5f 64 65 66 61 75 6c 74 20 3d 20 31 38 2e 31 32 35 30 2f 39 3b 0a 0a 25 20 /11;.dY_default.=.18.1250/9;..%.
5160 53 65 74 75 70 20 6f 66 20 4a 59 20 28 6e 65 77 20 61 74 20 49 6e 74 65 6c 29 0a 64 58 5f 64 65 Setup.of.JY.(new.at.Intel).dX_de
5180 66 61 75 6c 74 20 3d 20 31 2e 39 37 35 30 3b 0a 64 59 5f 64 65 66 61 75 6c 74 20 3d 20 31 2e 39 fault.=.1.9750;.dY_default.=.1.9
51a0 38 36 35 3b 0a 0a 0a 25 20 53 65 74 75 70 20 6f 66 20 4c 75 69 73 20 61 6e 64 20 45 6e 72 69 63 865;...%.Setup.of.Luis.and.Enric
51c0 6f 0a 64 58 5f 64 65 66 61 75 6c 74 20 3d 20 36 37 2e 37 2f 31 36 3b 0a 64 59 5f 64 65 66 61 75 o.dX_default.=.67.7/16;.dY_defau
51e0 6c 74 20 3d 20 35 30 2e 36 35 2f 31 32 3b 0a 0a 0a 25 20 53 65 74 75 70 20 6f 66 20 47 65 72 6d lt.=.50.65/12;...%.Setup.of.Germ
5200 61 6e 0a 64 58 5f 64 65 66 61 75 6c 74 20 3d 20 31 30 2e 31 36 3b 0a 64 59 5f 64 65 66 61 75 6c an.dX_default.=.10.16;.dY_defaul
5220 74 20 3d 20 31 30 2e 31 36 3b 0a 0a 25 20 53 65 74 75 70 20 6f 66 20 4a 59 20 28 6e 65 77 20 61 t.=.10.16;..%.Setup.of.JY.(new.a
5240 74 20 49 6e 74 65 6c 29 0a 64 58 5f 64 65 66 61 75 6c 74 20 3d 20 31 2e 39 37 35 30 2a 32 2e 35 t.Intel).dX_default.=.1.9750*2.5
5260 34 3b 0a 64 59 5f 64 65 66 61 75 6c 74 20 3d 20 31 2e 39 38 36 35 2a 32 2e 35 34 3b 0a 0a 25 20 4;.dY_default.=.1.9865*2.54;..%.
5280 53 65 74 75 70 20 6f 66 20 4a 59 20 2d 20 33 44 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 72 69 67 Setup.of.JY.-.3D.calibration.rig
52a0 20 61 74 20 49 6e 74 65 6c 20 28 6e 65 77 20 61 74 20 49 6e 74 65 6c 29 0a 64 58 5f 64 65 66 61 .at.Intel.(new.at.Intel).dX_defa
52c0 75 6c 74 20 3d 20 33 3b 0a 64 59 5f 64 65 66 61 75 6c 74 20 3d 20 33 3b 0a 0a 25 20 55 73 65 66 ult.=.3;.dY_default.=.3;..%.Usef
52e0 75 6c 20 6f 70 74 69 6f 6e 20 74 6f 20 61 64 64 20 69 6d 61 67 65 73 3a 0a 6b 6b 5f 66 69 72 73 ul.option.to.add.images:.kk_firs
5300 74 20 3d 20 69 6e 70 75 74 28 27 53 74 61 72 74 20 69 6d 61 67 65 20 6e 75 6d 62 65 72 20 28 5b t.=.input('Start.image.number.([
5320 5d 3d 31 3d 66 69 72 73 74 29 3a 20 27 29 3b 0a 0a 69 66 20 69 73 65 6d 70 74 79 28 6b 6b 5f 66 ]=1=first):.');..if.isempty(kk_f
5340 69 72 73 74 29 2c 20 6b 6b 5f 66 69 72 73 74 20 3d 20 31 3b 20 65 6e 64 3b 0a 0a 66 6f 72 20 6b irst),.kk_first.=.1;.end;..for.k
5360 6b 20 3d 20 6b 6b 5f 66 69 72 73 74 3a 6e 5f 69 6d 61 2c 0a 20 20 20 69 66 20 61 63 74 69 76 65 k.=.kk_first:n_ima,....if.active
5380 5f 69 6d 61 67 65 73 28 6b 6b 29 2c 0a 20 20 20 20 20 20 63 6c 69 63 6b 5f 69 6d 61 5f 63 61 6c _images(kk),.......click_ima_cal
53a0 69 62 3b 0a 20 20 20 65 6c 73 65 0a 09 20 20 20 65 76 61 6c 28 5b 27 64 58 5f 27 20 6e 75 6d 32 ib;....else.....eval(['dX_'.num2
53c0 73 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 3b 27 5d 29 3b 0a 20 20 20 09 65 76 61 6c 28 5b 27 str(kk).'.=.NaN;']);.....eval(['
53e0 64 59 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 3b 27 5d 29 3b 20 20 0a dY_'.num2str(kk).'.=.NaN;']);...
5400 20 20 20 0a 20 20 20 09 65 76 61 6c 28 5b 27 77 69 6e 74 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b ........eval(['wintx_'.num2str(k
5420 6b 29 20 27 20 3d 20 4e 61 4e 3b 27 5d 29 3b 0a 20 20 20 09 65 76 61 6c 28 5b 27 77 69 6e 74 79 k).'.=.NaN;']);.....eval(['winty
5440 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 3b 27 5d 29 3b 0a 0a 20 20 20 _'.num2str(kk).'.=.NaN;']);.....
5460 09 65 76 61 6c 28 5b 27 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 2a .eval(['x_'.num2str(kk).'.=.NaN*
5480 6f 6e 65 73 28 32 2c 31 29 3b 27 5d 29 3b 0a 20 20 20 09 65 76 61 6c 28 5b 27 58 5f 27 20 6e 75 ones(2,1);']);.....eval(['X_'.nu
54a0 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 33 2c 31 29 3b 27 5d 29 3b m2str(kk).'.=.NaN*ones(3,1);']);
54c0 0a 20 20 20 0a 20 20 20 09 65 76 61 6c 28 5b 27 6e 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 .........eval(['n_sq_x_'.num2str
54e0 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 3b 27 5d 29 3b 0a 20 20 20 09 65 76 61 6c 28 5b 27 6e 5f 73 (kk).'.=.NaN;']);.....eval(['n_s
5500 71 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 3b 27 5d 29 3b 0a 20 q_y_'.num2str(kk).'.=.NaN;']);..
5520 20 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 0a 0a 73 74 72 69 6e 67 5f 73 61 76 65 20 3d 20 27 73 61 ..end;.end;....string_save.=.'sa
5540 76 65 20 63 61 6c 69 62 5f 64 61 74 61 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 20 69 6e 64 5f ve.calib_data.active_images.ind_
5560 61 63 74 69 76 65 20 77 69 6e 74 78 20 77 69 6e 74 79 20 6e 5f 69 6d 61 20 74 79 70 65 5f 6e 75 active.wintx.winty.n_ima.type_nu
5580 6d 62 65 72 69 6e 67 20 4e 5f 73 6c 6f 74 73 20 66 69 72 73 74 5f 6e 75 6d 20 69 6d 61 67 65 5f mbering.N_slots.first_num.image_
55a0 6e 75 6d 62 65 72 73 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 63 61 6c 69 62 5f 6e 61 6d 65 20 numbers.format_image.calib_name.
55c0 48 63 61 6c 20 57 63 61 6c 20 6e 78 20 6e 79 20 6d 61 70 20 64 58 5f 64 65 66 61 75 6c 74 20 64 Hcal.Wcal.nx.ny.map.dX_default.d
55e0 59 5f 64 65 66 61 75 6c 74 20 64 58 20 64 59 27 3b 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f Y_default.dX.dY';..for.kk.=.1:n_
5600 69 6d 61 2c 0a 20 20 20 73 74 72 69 6e 67 5f 73 61 76 65 20 3d 20 5b 73 74 72 69 6e 67 5f 73 61 ima,....string_save.=.[string_sa
5620 76 65 20 27 20 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 78 5f 27 20 6e 75 6d 32 73 ve.'.X_'.num2str(kk).'.x_'.num2s
5640 74 72 28 6b 6b 29 20 27 20 6e 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 tr(kk).'.n_sq_x_'.num2str(kk).'.
5660 6e 5f 73 71 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 77 69 6e 74 78 5f 27 20 6e n_sq_y_'.num2str(kk).'.wintx_'.n
5680 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 77 69 6e 74 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 um2str(kk).'.winty_'.num2str(kk)
56a0 20 27 20 64 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 64 59 5f 27 20 6e 75 6d 32 73 .'.dX_'.num2str(kk).'.dY_'.num2s
56c0 74 72 28 6b 6b 29 5d 3b 0a 65 6e 64 3b 0a 0a 65 76 61 6c 28 73 74 72 69 6e 67 5f 73 61 76 65 29 tr(kk)];.end;..eval(string_save)
56e0 3b 0a 0a 64 69 73 70 28 27 64 6f 6e 65 27 29 3b 0a 0a 72 65 74 75 72 6e 3b 0a 0a 67 6f 5f 63 61 ;..disp('done');..return;..go_ca
5700 6c 69 62 5f 6f 70 74 69 6d 3b 0a 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 lib_optim;...fprintf(1,'........
5720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 41 20 46 6f 75 72 2d 73 74 65 70 20 43 61 ................."A.Four-step.Ca
5740 6d 65 72 61 20 43 61 6c 69 62 72 61 74 69 6f 6e 20 50 72 6f 63 65 64 75 72 65 20 77 69 74 68 20 mera.Calibration.Procedure.with.
5760 69 6d 70 6c 69 63 69 74 20 49 6d 61 67 65 20 43 6f 72 72 65 63 74 69 6f 6e 22 5c 6e 27 29 3b 0a implicit.Image.Correction"\n');.
5780 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 fprintf(1,'.....................
57a0 20 20 20 20 4a 61 6e 6e 65 20 48 65 69 6b 6b 69 6c 61 20 61 6e 64 20 4f 6c 6c 69 20 53 69 6c 76 ....Janne.Heikkila.and.Olli.Silv
57c0 65 6e 2c 20 49 6e 66 6f 74 65 63 68 20 4f 75 6c 75 20 61 6e 64 20 44 65 70 61 72 74 6d 65 6e 74 en,.Infotech.Oulu.and.Department
57e0 20 6f 66 20 45 45 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 .of.EE\n');.fprintf(1,'.........
5800 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6c 69 63 6b 5f 63 61 6c 69 62 33 44 2e 6d 00 00 00 TOOLBOX_calib/click_calib3D.m...
5820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5860 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
5880 20 20 20 33 35 30 35 20 20 37 30 32 34 30 33 37 33 30 36 20 20 31 31 32 30 36 00 20 00 00 00 00 ...3505..7024037306..11206......
58a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
58c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
58e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
59a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
59c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
59e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5a00 0a 69 66 20 7e 65 78 69 73 74 28 27 49 5f 31 27 29 2c 0a 20 20 20 69 6d 61 5f 72 65 61 64 5f 63 .if.~exist('I_1'),....ima_read_c
5a20 61 6c 69 62 3b 0a 20 20 20 69 66 20 6e 6f 5f 69 6d 61 67 65 5f 66 69 6c 65 2c 0a 20 20 20 20 20 alib;....if.no_image_file,......
5a40 20 64 69 73 70 28 27 43 61 6e 6e 6f 74 20 65 78 74 72 61 63 74 20 63 6f 72 6e 65 72 73 20 77 69 .disp('Cannot.extract.corners.wi
5a60 74 68 6f 75 74 20 69 6d 61 67 65 73 27 29 3b 0a 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0a 20 20 thout.images');.......return;...
5a80 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 25 77 69 6e 74 78 20 3d 20 31 30 3b 20 25 20 6e 65 69 67 62 .end;.end;..%wintx.=.10;.%.neigb
5aa0 6f 72 68 6f 6f 64 20 6f 66 20 69 6e 74 65 67 72 61 74 69 6f 6e 20 66 6f 72 0a 25 77 69 6e 74 79 orhood.of.integration.for.%winty
5ac0 20 3d 20 31 30 3b 20 25 20 74 68 65 20 63 6f 72 6e 65 72 20 66 69 6e 64 65 72 0a 0a 66 70 72 69 .=.10;.%.the.corner.finder..fpri
5ae0 6e 74 66 28 31 2c 27 5c 6e 45 78 74 72 61 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 67 72 69 64 20 ntf(1,'\nExtraction.of.the.grid.
5b00 63 6f 72 6e 65 72 73 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 73 5c 6e 27 29 3b 0a 0a 64 69 73 70 corners.on.the.images\n');..disp
5b20 28 27 57 69 6e 64 6f 77 20 73 69 7a 65 20 66 6f 72 20 63 6f 72 6e 65 72 20 66 69 6e 64 65 72 20 ('Window.size.for.corner.finder.
5b40 28 77 69 6e 74 78 20 61 6e 64 20 77 69 6e 74 79 29 3a 27 29 3b 0a 77 69 6e 74 78 20 3d 20 69 6e (wintx.and.winty):');.wintx.=.in
5b60 70 75 74 28 27 77 69 6e 74 78 20 28 5b 5d 20 3d 20 35 29 20 3d 20 27 29 3b 0a 69 66 20 69 73 65 put('wintx.([].=.5).=.');.if.ise
5b80 6d 70 74 79 28 77 69 6e 74 78 29 2c 20 77 69 6e 74 78 20 3d 20 35 3b 20 65 6e 64 3b 0a 77 69 6e mpty(wintx),.wintx.=.5;.end;.win
5ba0 74 78 20 3d 20 72 6f 75 6e 64 28 77 69 6e 74 78 29 3b 0a 77 69 6e 74 79 20 3d 20 69 6e 70 75 74 tx.=.round(wintx);.winty.=.input
5bc0 28 27 77 69 6e 74 79 20 28 5b 5d 20 3d 20 35 29 20 3d 20 27 29 3b 0a 69 66 20 69 73 65 6d 70 74 ('winty.([].=.5).=.');.if.isempt
5be0 79 28 77 69 6e 74 79 29 2c 20 77 69 6e 74 79 20 3d 20 35 3b 20 65 6e 64 3b 0a 77 69 6e 74 79 20 y(winty),.winty.=.5;.end;.winty.
5c00 3d 20 72 6f 75 6e 64 28 77 69 6e 74 79 29 3b 0a 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 57 69 6e =.round(winty);...fprintf(1,'Win
5c20 64 6f 77 20 73 69 7a 65 20 3d 20 25 64 78 25 64 5c 6e 27 2c 32 2a 77 69 6e 74 78 2b 31 2c 32 2a dow.size.=.%dx%d\n',2*wintx+1,2*
5c40 77 69 6e 74 79 2b 31 29 3b 0a 0a 0a 64 69 73 70 28 27 57 41 52 4e 4e 47 21 21 21 20 44 6f 20 6e winty+1);...disp('WARNNG!!!.Do.n
5c60 6f 74 20 66 6f 72 67 65 74 20 74 6f 20 63 68 61 6e 67 65 20 64 58 5f 64 65 66 61 75 6c 74 20 61 ot.forget.to.change.dX_default.a
5c80 6e 64 20 64 59 5f 64 65 66 61 75 6c 74 20 69 6e 20 63 6c 69 63 6b 5f 63 61 6c 69 62 2e 6d 21 21 nd.dY_default.in.click_calib.m!!
5ca0 21 27 29 0a 0a 0a 25 20 44 65 66 61 75 6c 74 20 73 69 7a 65 20 6f 66 20 74 68 65 20 70 61 74 74 !')...%.Default.size.of.the.patt
5cc0 65 72 6e 20 73 71 75 61 72 65 73 3b 0a 0a 25 20 53 65 74 75 70 20 6f 66 20 4a 59 20 28 6f 6c 64 ern.squares;..%.Setup.of.JY.(old
5ce0 20 61 74 20 43 61 6c 74 65 63 68 29 0a 64 58 5f 64 65 66 61 75 6c 74 20 3d 20 32 31 2e 39 32 35 .at.Caltech).dX_default.=.21.925
5d00 30 2f 31 31 3b 0a 64 59 5f 64 65 66 61 75 6c 74 20 3d 20 31 38 2e 31 32 35 30 2f 39 3b 0a 0a 25 0/11;.dY_default.=.18.1250/9;..%
5d20 20 53 65 74 75 70 20 6f 66 20 4a 59 20 28 6e 65 77 20 61 74 20 49 6e 74 65 6c 29 0a 64 58 5f 64 .Setup.of.JY.(new.at.Intel).dX_d
5d40 65 66 61 75 6c 74 20 3d 20 31 2e 39 37 35 30 3b 0a 64 59 5f 64 65 66 61 75 6c 74 20 3d 20 31 2e efault.=.1.9750;.dY_default.=.1.
5d60 39 38 36 35 3b 0a 0a 0a 25 20 53 65 74 75 70 20 6f 66 20 4c 75 69 73 20 61 6e 64 20 45 6e 72 69 9865;...%.Setup.of.Luis.and.Enri
5d80 63 6f 0a 64 58 5f 64 65 66 61 75 6c 74 20 3d 20 36 37 2e 37 2f 31 36 3b 0a 64 59 5f 64 65 66 61 co.dX_default.=.67.7/16;.dY_defa
5da0 75 6c 74 20 3d 20 35 30 2e 36 35 2f 31 32 3b 0a 0a 0a 25 20 53 65 74 75 70 20 6f 66 20 47 65 72 ult.=.50.65/12;...%.Setup.of.Ger
5dc0 6d 61 6e 0a 64 58 5f 64 65 66 61 75 6c 74 20 3d 20 31 30 2e 31 36 3b 0a 64 59 5f 64 65 66 61 75 man.dX_default.=.10.16;.dY_defau
5de0 6c 74 20 3d 20 31 30 2e 31 36 3b 0a 0a 25 20 53 65 74 75 70 20 6f 66 20 4a 59 20 28 6e 65 77 20 lt.=.10.16;..%.Setup.of.JY.(new.
5e00 61 74 20 49 6e 74 65 6c 29 0a 64 58 5f 64 65 66 61 75 6c 74 20 3d 20 31 2e 39 37 35 30 2a 32 2e at.Intel).dX_default.=.1.9750*2.
5e20 35 34 3b 0a 64 59 5f 64 65 66 61 75 6c 74 20 3d 20 31 2e 39 38 36 35 2a 32 2e 35 34 3b 0a 0a 0a 54;.dY_default.=.1.9865*2.54;...
5e40 25 20 53 65 74 75 70 20 6f 66 20 4a 59 20 2d 20 33 44 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 72 %.Setup.of.JY.-.3D.calibration.r
5e60 69 67 20 61 74 20 49 6e 74 65 6c 20 28 6e 65 77 20 61 74 20 49 6e 74 65 6c 29 0a 64 58 5f 64 65 ig.at.Intel.(new.at.Intel).dX_de
5e80 66 61 75 6c 74 20 3d 20 33 3b 0a 64 59 5f 64 65 66 61 75 6c 74 20 3d 20 33 3b 0a 0a 25 20 55 73 fault.=.3;.dY_default.=.3;..%.Us
5ea0 65 66 75 6c 20 6f 70 74 69 6f 6e 20 74 6f 20 61 64 64 20 69 6d 61 67 65 73 3a 0a 6b 6b 5f 66 69 eful.option.to.add.images:.kk_fi
5ec0 72 73 74 20 3d 20 69 6e 70 75 74 28 27 53 74 61 72 74 20 69 6d 61 67 65 20 6e 75 6d 62 65 72 20 rst.=.input('Start.image.number.
5ee0 28 5b 5d 3d 31 3d 66 69 72 73 74 29 3a 20 27 29 3b 0a 0a 69 66 20 69 73 65 6d 70 74 79 28 6b 6b ([]=1=first):.');..if.isempty(kk
5f00 5f 66 69 72 73 74 29 2c 20 6b 6b 5f 66 69 72 73 74 20 3d 20 31 3b 20 65 6e 64 3b 0a 0a 66 6f 72 _first),.kk_first.=.1;.end;..for
5f20 20 6b 6b 20 3d 20 6b 6b 5f 66 69 72 73 74 3a 6e 5f 69 6d 61 2c 0a 20 20 20 63 6c 69 63 6b 5f 69 .kk.=.kk_first:n_ima,....click_i
5f40 6d 61 5f 63 61 6c 69 62 33 44 3b 20 25 53 69 6d 70 6c 65 20 76 65 72 73 69 6f 6e 0a 20 20 20 25 ma_calib3D;.%Simple.version....%
5f60 69 6e 69 74 5f 63 61 6c 69 62 3b 20 25 61 64 76 61 6e 63 65 64 20 76 65 73 69 6f 6e 20 28 6d 6f init_calib;.%advanced.vesion.(mo
5f80 72 65 20 6d 65 73 73 79 29 0a 65 6e 64 3b 0a 0a 0a 0a 73 74 72 69 6e 67 5f 73 61 76 65 20 3d 20 re.messy).end;....string_save.=.
5fa0 27 73 61 76 65 20 63 61 6c 69 62 5f 64 61 74 61 20 77 69 6e 74 78 20 77 69 6e 74 79 20 6e 5f 69 'save.calib_data.wintx.winty.n_i
5fc0 6d 61 20 74 79 70 65 5f 6e 75 6d 62 65 72 69 6e 67 20 4e 5f 73 6c 6f 74 73 20 66 69 72 73 74 5f ma.type_numbering.N_slots.first_
5fe0 6e 75 6d 20 69 6d 61 67 65 5f 6e 75 6d 62 65 72 73 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 63 num.image_numbers.format_image.c
6000 61 6c 69 62 5f 6e 61 6d 65 20 48 63 61 6c 20 57 63 61 6c 20 6e 78 20 6e 79 20 6d 61 70 20 64 58 alib_name.Hcal.Wcal.nx.ny.map.dX
6020 5f 64 65 66 61 75 6c 74 20 64 59 5f 64 65 66 61 75 6c 74 20 64 58 20 64 59 27 3b 0a 0a 66 6f 72 _default.dY_default.dX.dY';..for
6040 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 73 74 72 69 6e 67 5f 73 61 76 65 20 3d 20 .kk.=.1:n_ima,....string_save.=.
6060 5b 73 74 72 69 6e 67 5f 73 61 76 65 20 27 20 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 [string_save.'.X_'.num2str(kk).'
6080 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 48 6c 5f 27 20 6e 75 6d 32 73 74 72 28 .x_'.num2str(kk).'.Hl_'.num2str(
60a0 6b 6b 29 20 27 20 6e 6c 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 6e 6c kk).'.nl_sq_x_'.num2str(kk).'.nl
60c0 5f 73 71 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 48 72 5f 27 20 6e 75 6d 32 73 _sq_y_'.num2str(kk).'.Hr_'.num2s
60e0 74 72 28 6b 6b 29 20 27 20 6e 72 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 tr(kk).'.nr_sq_x_'.num2str(kk).'
6100 20 6e 72 5f 73 71 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 5d 3b 0a 65 6e 64 3b 0a 0a 65 .nr_sq_y_'.num2str(kk)];.end;..e
6120 76 61 6c 28 73 74 72 69 6e 67 5f 73 61 76 65 29 3b 0a 0a 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 val(string_save);..go_calib_opti
6140 6d 33 44 3b 0a 78 20 61 6e 64 20 77 69 6e 74 79 29 3a 27 29 3b 0a 77 69 6e 74 78 20 3d 20 69 6e m3D;.x.and.winty):');.wintx.=.in
6160 70 75 74 28 27 77 69 6e 74 78 20 28 5b 5d 20 3d 20 35 29 20 3d 20 27 29 3b 0a 69 66 20 69 73 65 put('wintx.([].=.5).=.');.if.ise
6180 6d 70 74 79 28 77 69 6e 74 78 29 2c 20 77 69 6e 74 78 20 3d 20 35 3b 20 65 6e 64 3b 0a 77 69 6e mpty(wintx),.wintx.=.5;.end;.win
61a0 74 78 20 3d 20 72 6f 75 6e 64 28 77 69 6e 74 78 29 3b 0a 77 69 6e 74 79 20 3d 20 69 6e 70 75 74 tx.=.round(wintx);.winty.=.input
61c0 28 27 77 69 6e 74 79 20 28 5b 5d 20 3d 20 35 29 20 3d 20 27 29 3b 0a 69 66 20 69 73 65 6d 70 74 ('winty.([].=.5).=.');.if.isempt
61e0 79 28 77 69 6e 74 79 29 2c 20 77 69 6e 74 79 20 3d 20 35 3b 20 65 6e 64 3b 0a 77 69 6e 74 79 20 y(winty),.winty.=.5;.end;.winty.
6200 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6c 69 63 6b 5f 69 6d 61 5f 63 61 6c 69 62 2e 6d 00 TOOLBOX_calib/click_ima_calib.m.
6220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6260 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
6280 20 20 31 34 34 31 32 20 20 37 30 32 34 30 33 37 33 30 37 20 20 31 31 36 36 35 00 20 00 00 00 00 ..14412..7024037307..11665......
62a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
62c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
62e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6400 09 25 20 43 6c 65 61 6e 65 64 2d 75 70 20 76 65 72 73 69 6f 6e 20 6f 66 20 69 6e 69 74 5f 63 61 .%.Cleaned-up.version.of.init_ca
6420 6c 69 62 2e 6d 0a 20 20 20 0a 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 50 72 6f 63 65 73 lib.m........fprintf(1,'\nProces
6440 73 69 6e 67 20 69 6d 61 67 65 20 25 64 2e 2e 2e 5c 6e 27 2c 6b 6b 29 3b 0a 20 20 20 0a 09 65 76 sing.image.%d...\n',kk);......ev
6460 61 6c 28 5b 27 49 20 3d 20 49 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a al(['I.=.I_'.num2str(kk).';']);.
6480 09 0a 09 66 69 67 75 72 65 28 32 29 3b 0a 09 69 6d 61 67 65 28 49 29 3b 0a 20 20 20 63 6f 6c 6f ...figure(2);..image(I);....colo
64a0 72 6d 61 70 28 6d 61 70 29 3b 0a 20 20 20 0a 20 20 20 74 69 74 6c 65 28 5b 27 43 6c 69 63 6b 20 rmap(map);........title(['Click.
64c0 6f 6e 20 74 68 65 20 66 6f 75 72 20 65 78 74 72 65 6d 65 20 63 6f 72 6e 65 72 73 20 6f 66 20 74 on.the.four.extreme.corners.of.t
64e0 68 65 20 72 65 63 74 61 6e 67 75 6c 61 72 20 70 61 74 74 65 72 6e 2e 2e 2e 20 49 6d 61 67 65 20 he.rectangular.pattern....Image.
6500 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 5d 29 3b 0a 20 20 20 0a 20 20 20 64 69 73 70 28 27 43 6c '.num2str(kk)]);........disp('Cl
6520 69 63 6b 20 6f 6e 20 74 68 65 20 66 6f 75 72 20 65 78 74 72 65 6d 65 20 63 6f 72 6e 65 72 73 20 ick.on.the.four.extreme.corners.
6540 6f 66 20 74 68 65 20 72 65 63 74 61 6e 67 75 6c 61 72 20 63 6f 6d 70 6c 65 74 65 20 70 61 74 74 of.the.rectangular.complete.patt
6560 65 72 6e 2e 2e 2e 27 29 3b 0a 20 20 20 0a 20 20 20 5b 78 2c 79 5d 20 3d 20 67 69 6e 70 75 74 33 ern...');........[x,y].=.ginput3
6580 28 34 29 3b 0a 20 20 20 0a 20 20 20 5b 58 63 2c 67 6f 6f 64 2c 62 61 64 2c 74 79 70 65 5d 20 3d (4);........[Xc,good,bad,type].=
65a0 20 63 6f 72 6e 65 72 66 69 6e 64 65 72 28 5b 78 27 3b 79 27 5d 2c 49 2c 77 69 6e 74 79 2c 77 69 .cornerfinder([x';y'],I,winty,wi
65c0 6e 74 78 29 3b 20 25 20 74 68 65 20 66 6f 75 72 20 63 6f 72 6e 65 72 73 0a 20 20 20 0a 20 20 20 ntx);.%.the.four.corners........
65e0 78 20 3d 20 58 63 28 31 2c 3a 29 27 3b 0a 20 20 20 79 20 3d 20 58 63 28 32 2c 3a 29 27 3b 0a 20 x.=.Xc(1,:)';....y.=.Xc(2,:)';..
6600 20 20 0a 20 20 20 5b 79 2c 69 6e 64 79 5d 20 3d 20 73 6f 72 74 28 79 29 3b 0a 20 20 20 78 20 3d ......[y,indy].=.sort(y);....x.=
6620 20 78 28 69 6e 64 79 29 3b 0a 20 20 20 0a 20 20 20 69 66 20 28 78 28 32 29 20 3e 20 78 28 31 29 .x(indy);........if.(x(2).>.x(1)
6640 29 2c 0a 20 20 20 20 20 20 78 34 20 3d 20 78 28 31 29 3b 79 34 20 3d 20 79 28 31 29 3b 20 78 33 ),.......x4.=.x(1);y4.=.y(1);.x3
6660 20 3d 20 78 28 32 29 3b 20 79 33 20 3d 20 79 28 32 29 3b 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 .=.x(2);.y3.=.y(2);....else.....
6680 20 20 78 34 20 3d 20 78 28 32 29 3b 79 34 20 3d 20 79 28 32 29 3b 20 78 33 20 3d 20 78 28 31 29 ..x4.=.x(2);y4.=.y(2);.x3.=.x(1)
66a0 3b 20 79 33 20 3d 20 79 28 31 29 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 69 66 20 28 78 28 33 29 ;.y3.=.y(1);....end;....if.(x(3)
66c0 20 3e 20 78 28 34 29 29 2c 0a 20 20 20 20 20 20 78 32 20 3d 20 78 28 33 29 3b 79 32 20 3d 20 79 .>.x(4)),.......x2.=.x(3);y2.=.y
66e0 28 33 29 3b 20 78 31 20 3d 20 78 28 34 29 3b 20 79 31 20 3d 20 79 28 34 29 3b 0a 20 20 20 65 6c (3);.x1.=.x(4);.y1.=.y(4);....el
6700 73 65 0a 20 20 20 20 20 20 78 32 20 3d 20 78 28 34 29 3b 79 32 20 3d 20 79 28 34 29 3b 20 78 31 se.......x2.=.x(4);y2.=.y(4);.x1
6720 20 3d 20 78 28 33 29 3b 20 79 31 20 3d 20 79 28 33 29 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a .=.x(3);.y1.=.y(3);....end;.....
6740 20 20 20 78 20 3d 20 5b 78 31 3b 78 32 3b 78 33 3b 78 34 5d 3b 0a 20 20 20 79 20 3d 20 5b 79 31 ...x.=.[x1;x2;x3;x4];....y.=.[y1
6760 3b 79 32 3b 79 33 3b 79 34 5d 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 66 69 67 75 72 65 28 32 29 ;y2;y3;y4];............figure(2)
6780 3b 20 68 6f 6c 64 20 6f 6e 3b 0a 20 20 20 70 6c 6f 74 28 5b 78 3b 78 28 31 29 5d 2c 5b 79 3b 79 ;.hold.on;....plot([x;x(1)],[y;y
67a0 28 31 29 5d 2c 27 67 2d 27 29 3b 0a 20 20 20 70 6c 6f 74 28 78 2c 79 2c 27 6f 67 27 29 3b 0a 20 (1)],'g-');....plot(x,y,'og');..
67c0 20 20 68 78 3d 74 65 78 74 28 28 78 28 34 29 2b 78 28 33 29 29 2f 32 2c 28 79 28 34 29 2b 79 28 ..hx=text((x(4)+x(3))/2,(y(4)+y(
67e0 33 29 29 2f 32 20 2d 20 32 30 2c 27 58 27 29 3b 0a 20 20 20 73 65 74 28 68 78 2c 27 63 6f 6c 6f 3))/2.-.20,'X');....set(hx,'colo
6800 72 27 2c 27 67 27 2c 27 46 6f 6e 74 73 69 7a 65 27 2c 31 34 29 3b 0a 20 20 20 68 79 3d 74 65 78 r','g','Fontsize',14);....hy=tex
6820 74 28 28 78 28 34 29 2b 78 28 31 29 29 2f 32 2d 32 30 2c 28 79 28 34 29 2b 79 28 31 29 29 2f 32 t((x(4)+x(1))/2-20,(y(4)+y(1))/2
6840 2c 27 59 27 29 3b 0a 20 20 20 73 65 74 28 68 79 2c 27 63 6f 6c 6f 72 27 2c 27 67 27 2c 27 46 6f ,'Y');....set(hy,'color','g','Fo
6860 6e 74 73 69 7a 65 27 2c 31 34 29 3b 0a 20 20 20 68 6f 6c 64 20 6f 66 66 3b 0a 20 20 20 0a 20 20 ntsize',14);....hold.off;.......
6880 20 0a 20 20 20 25 20 54 72 79 20 74 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 63 6f 75 6e .....%.Try.to.automatically.coun
68a0 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 71 75 61 72 65 73 20 69 6e 20 74 68 65 20 67 t.the.number.of.squares.in.the.g
68c0 72 69 64 0a 20 20 20 0a 20 20 20 6e 5f 73 71 5f 78 31 20 3d 20 63 6f 75 6e 74 5f 73 71 75 61 72 rid........n_sq_x1.=.count_squar
68e0 65 73 28 49 2c 78 31 2c 79 31 2c 78 32 2c 79 32 2c 77 69 6e 74 78 29 3b 0a 20 20 20 6e 5f 73 71 es(I,x1,y1,x2,y2,wintx);....n_sq
6900 5f 78 32 20 3d 20 63 6f 75 6e 74 5f 73 71 75 61 72 65 73 28 49 2c 78 33 2c 79 33 2c 78 34 2c 79 _x2.=.count_squares(I,x3,y3,x4,y
6920 34 2c 77 69 6e 74 78 29 3b 0a 20 20 20 6e 5f 73 71 5f 79 31 20 3d 20 63 6f 75 6e 74 5f 73 71 75 4,wintx);....n_sq_y1.=.count_squ
6940 61 72 65 73 28 49 2c 78 32 2c 79 32 2c 78 33 2c 79 33 2c 77 69 6e 74 78 29 3b 0a 20 20 20 6e 5f ares(I,x2,y2,x3,y3,wintx);....n_
6960 73 71 5f 79 32 20 3d 20 63 6f 75 6e 74 5f 73 71 75 61 72 65 73 28 49 2c 78 34 2c 79 34 2c 78 31 sq_y2.=.count_squares(I,x4,y4,x1
6980 2c 79 31 2c 77 69 6e 74 78 29 3b 0a 20 20 20 0a 20 20 0a 20 20 20 0a 20 20 20 25 20 49 66 20 63 ,y1,wintx);...............%.If.c
69a0 6f 75 6c 64 20 6e 6f 74 20 63 6f 75 6e 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 71 75 ould.not.count.the.number.of.squ
69c0 61 72 65 73 2c 20 65 6e 74 65 72 20 6d 61 6e 75 61 6c 6c 79 0a 20 20 20 0a 20 20 20 69 66 20 28 ares,.enter.manually........if.(
69e0 6e 5f 73 71 5f 78 31 7e 3d 6e 5f 73 71 5f 78 32 29 7c 28 6e 5f 73 71 5f 79 31 7e 3d 6e 5f 73 71 n_sq_x1~=n_sq_x2)|(n_sq_y1~=n_sq
6a00 5f 79 32 29 2c 0a 20 20 20 20 20 20 0a 0a 09 20 64 69 73 70 28 27 43 6f 75 6c 64 20 6e 6f 74 20 _y2),...........disp('Could.not.
6a20 63 6f 75 6e 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 71 75 61 72 65 73 20 69 6e 20 74 count.the.number.of.squares.in.t
6a40 68 65 20 67 72 69 64 2e 20 45 6e 74 65 72 20 6d 61 6e 75 61 6c 6c 79 2e 27 29 3b 0a 09 20 6e 5f he.grid..Enter.manually.');...n_
6a60 73 71 5f 78 20 3d 20 69 6e 70 75 74 28 27 4e 75 6d 62 65 72 20 6f 66 20 73 71 75 61 72 65 73 20 sq_x.=.input('Number.of.squares.
6a80 61 6c 6f 6e 67 20 74 68 65 20 58 20 64 69 72 65 63 74 69 6f 6e 20 28 5b 5d 3d 31 30 29 20 3d 20 along.the.X.direction.([]=10).=.
6aa0 27 29 3b 20 25 36 0a 09 20 69 66 20 69 73 65 6d 70 74 79 28 6e 5f 73 71 5f 78 29 2c 20 6e 5f 73 ');.%6...if.isempty(n_sq_x),.n_s
6ac0 71 5f 78 20 3d 20 31 30 3b 20 65 6e 64 3b 0a 09 20 6e 5f 73 71 5f 79 20 3d 20 69 6e 70 75 74 28 q_x.=.10;.end;...n_sq_y.=.input(
6ae0 27 4e 75 6d 62 65 72 20 6f 66 20 73 71 75 61 72 65 73 20 61 6c 6f 6e 67 20 74 68 65 20 59 20 64 'Number.of.squares.along.the.Y.d
6b00 69 72 65 63 74 69 6f 6e 20 28 5b 5d 3d 31 30 29 20 3d 20 27 29 3b 20 25 36 0a 09 20 69 66 20 69 irection.([]=10).=.');.%6...if.i
6b20 73 65 6d 70 74 79 28 6e 5f 73 71 5f 79 29 2c 20 6e 5f 73 71 5f 79 20 3d 20 31 30 3b 20 65 6e 64 sempty(n_sq_y),.n_sq_y.=.10;.end
6b40 3b 20 0a 20 20 20 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 ;.........else..................
6b60 20 20 20 20 20 6e 5f 73 71 5f 78 20 3d 20 6e 5f 73 71 5f 78 31 3b 0a 20 20 20 20 20 20 6e 5f 73 .....n_sq_x.=.n_sq_x1;.......n_s
6b80 71 5f 79 20 3d 20 6e 5f 73 71 5f 79 31 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a 20 20 q_y.=.n_sq_y1;...........end;...
6ba0 20 0a 20 20 20 0a 20 20 20 25 20 45 6e 74 65 72 20 74 68 65 20 73 69 7a 65 20 6f 66 20 65 61 63 .........%.Enter.the.size.of.eac
6bc0 68 20 73 71 75 61 72 65 0a 20 20 20 0a 20 20 20 64 58 20 3d 20 69 6e 70 75 74 28 5b 27 53 69 7a h.square........dX.=.input(['Siz
6be0 65 20 64 58 20 6f 66 20 65 61 63 68 20 73 71 75 61 72 65 20 61 6c 6f 6e 67 20 74 68 65 20 58 20 e.dX.of.each.square.along.the.X.
6c00 64 69 72 65 63 74 69 6f 6e 20 28 5b 5d 3d 27 20 6e 75 6d 32 73 74 72 28 64 58 5f 64 65 66 61 75 direction.([]='.num2str(dX_defau
6c20 6c 74 29 20 27 63 6d 29 20 3d 20 27 5d 29 3b 0a 20 20 09 64 59 20 3d 20 69 6e 70 75 74 28 5b 27 lt).'cm).=.']);....dY.=.input(['
6c40 53 69 7a 65 20 64 59 20 6f 66 20 65 61 63 68 20 73 71 75 61 72 65 20 61 6c 6f 6e 67 20 74 68 65 Size.dY.of.each.square.along.the
6c60 20 59 20 64 69 72 65 63 74 69 6f 6e 20 28 5b 5d 3d 27 20 6e 75 6d 32 73 74 72 28 64 59 5f 64 65 .Y.direction.([]='.num2str(dY_de
6c80 66 61 75 6c 74 29 20 27 63 6d 29 20 3d 20 27 5d 29 3b 0a 09 69 66 20 69 73 65 6d 70 74 79 28 64 fault).'cm).=.']);..if.isempty(d
6ca0 58 29 2c 20 64 58 20 3d 20 64 58 5f 64 65 66 61 75 6c 74 3b 20 65 6c 73 65 20 64 58 5f 64 65 66 X),.dX.=.dX_default;.else.dX_def
6cc0 61 75 6c 74 20 3d 20 64 58 3b 20 65 6e 64 3b 0a 09 69 66 20 69 73 65 6d 70 74 79 28 64 59 29 2c ault.=.dX;.end;..if.isempty(dY),
6ce0 20 64 59 20 3d 20 64 59 5f 64 65 66 61 75 6c 74 3b 20 65 6c 73 65 20 64 59 5f 64 65 66 61 75 6c .dY.=.dY_default;.else.dY_defaul
6d00 74 20 3d 20 64 59 3b 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 25 20 43 6f 6d 70 75 74 65 20 74 68 t.=.dY;.end;........%.Compute.th
6d20 65 20 69 6e 73 69 64 65 20 70 6f 69 6e 74 73 20 74 68 72 6f 75 67 68 20 63 6f 6d 70 75 74 61 74 e.inside.points.through.computat
6d40 69 6f 6e 20 6f 66 20 74 68 65 20 70 6c 61 6e 61 72 20 68 6f 6d 6f 67 72 61 70 68 79 20 28 63 6f ion.of.the.planar.homography.(co
6d60 6c 6c 69 6e 65 61 74 69 6f 6e 29 0a 20 20 20 0a 09 61 30 30 20 3d 20 5b 78 28 31 29 3b 79 28 31 llineation)......a00.=.[x(1);y(1
6d80 29 3b 31 5d 3b 0a 09 61 31 30 20 3d 20 5b 78 28 32 29 3b 79 28 32 29 3b 31 5d 3b 0a 09 61 31 31 );1];..a10.=.[x(2);y(2);1];..a11
6da0 20 3d 20 5b 78 28 33 29 3b 79 28 33 29 3b 31 5d 3b 0a 09 61 30 31 20 3d 20 5b 78 28 34 29 3b 79 .=.[x(3);y(3);1];..a01.=.[x(4);y
6dc0 28 34 29 3b 31 5d 3b 0a 0a 0a 09 25 20 43 6f 6d 70 75 74 65 20 74 68 65 20 70 6c 61 6e 61 72 20 (4);1];....%.Compute.the.planar.
6de0 63 6f 6c 6c 69 6e 65 61 74 69 6f 6e 3a 20 28 72 65 74 75 72 6e 20 74 68 65 20 6e 6f 72 6d 61 6c collineation:.(return.the.normal
6e00 69 7a 61 74 69 6f 6e 20 6d 61 74 72 69 78 20 61 73 20 77 65 6c 6c 29 0a 20 20 20 0a 20 20 20 5b ization.matrix.as.well)........[
6e20 48 6f 6d 6f 2c 48 6e 6f 72 6d 2c 69 6e 76 5f 48 6e 6f 72 6d 5d 20 3d 20 63 6f 6d 70 75 74 65 5f Homo,Hnorm,inv_Hnorm].=.compute_
6e40 68 6f 6d 6f 67 72 61 70 68 79 20 28 5b 61 30 30 20 61 31 30 20 61 31 31 20 61 30 31 5d 2c 5b 30 homography.([a00.a10.a11.a01],[0
6e60 20 31 20 31 20 30 3b 30 20 30 20 31 20 31 3b 31 20 31 20 31 20 31 5d 29 3b 0a 0a 0a 09 25 20 42 .1.1.0;0.0.1.1;1.1.1.1]);....%.B
6e80 75 69 6c 64 20 74 68 65 20 67 72 69 64 20 75 73 69 6e 67 20 74 68 65 20 70 6c 61 6e 61 72 20 63 uild.the.grid.using.the.planar.c
6ea0 6f 6c 6c 69 6e 65 61 74 69 6f 6e 3a 0a 0a 09 78 5f 6c 20 3d 20 28 28 30 3a 6e 5f 73 71 5f 78 29 ollineation:...x_l.=.((0:n_sq_x)
6ec0 27 2a 6f 6e 65 73 28 31 2c 6e 5f 73 71 5f 79 2b 31 29 29 2f 6e 5f 73 71 5f 78 3b 0a 20 20 20 79 '*ones(1,n_sq_y+1))/n_sq_x;....y
6ee0 5f 6c 20 3d 20 28 6f 6e 65 73 28 6e 5f 73 71 5f 78 2b 31 2c 31 29 2a 28 30 3a 6e 5f 73 71 5f 79 _l.=.(ones(n_sq_x+1,1)*(0:n_sq_y
6f00 29 29 2f 6e 5f 73 71 5f 79 3b 0a 20 20 20 70 74 73 20 3d 20 5b 78 5f 6c 28 3a 29 20 79 5f 6c 28 ))/n_sq_y;....pts.=.[x_l(:).y_l(
6f20 3a 29 20 6f 6e 65 73 28 28 6e 5f 73 71 5f 78 2b 31 29 2a 28 6e 5f 73 71 5f 79 2b 31 29 2c 31 29 :).ones((n_sq_x+1)*(n_sq_y+1),1)
6f40 5d 27 3b 0a 20 20 20 0a 20 20 20 58 58 20 3d 20 48 6f 6d 6f 2a 70 74 73 3b 0a 09 58 58 20 3d 20 ]';........XX.=.Homo*pts;..XX.=.
6f60 58 58 28 31 3a 32 2c 3a 29 20 2e 2f 20 28 6f 6e 65 73 28 32 2c 31 29 2a 58 58 28 33 2c 3a 29 29 XX(1:2,:)../.(ones(2,1)*XX(3,:))
6f80 3b 0a 0a 20 20 20 0a 20 20 20 25 20 43 6f 6d 70 6c 65 74 65 20 73 69 7a 65 20 6f 66 20 74 68 65 ;.........%.Complete.size.of.the
6fa0 20 72 65 63 74 61 6e 67 6c 65 0a 20 20 20 0a 20 20 20 57 20 3d 20 6e 5f 73 71 5f 78 2a 64 58 3b .rectangle........W.=.n_sq_x*dX;
6fc0 0a 20 20 20 4c 20 3d 20 6e 5f 73 71 5f 79 2a 64 59 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 0a 20 ....L.=.n_sq_y*dY;..............
6fe0 20 20 0a 20 20 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 41 ......%%%%%%%%%%%%%%%%%%%%%%%%.A
7000 44 44 49 54 49 4f 4e 41 4c 20 53 54 55 46 46 20 49 4e 20 54 48 45 20 43 41 53 45 20 4f 46 20 48 DDITIONAL.STUFF.IN.THE.CASE.OF.H
7020 49 47 48 4c 59 20 44 49 53 54 4f 52 54 45 44 20 49 4d 41 47 45 53 20 25 25 25 25 25 25 25 25 25 IGHLY.DISTORTED.IMAGES.%%%%%%%%%
7040 25 25 25 25 0a 20 20 20 66 69 67 75 72 65 28 32 29 3b 0a 20 20 20 68 6f 6c 64 20 6f 6e 3b 0a 20 %%%%....figure(2);....hold.on;..
7060 20 20 70 6c 6f 74 28 58 58 28 31 2c 3a 29 2c 58 58 28 32 2c 3a 29 2c 27 72 2b 27 29 3b 0a 20 20 ..plot(XX(1,:),XX(2,:),'r+');...
7080 20 74 69 74 6c 65 28 27 54 68 65 20 72 65 64 20 63 72 6f 73 73 65 73 20 73 68 6f 75 6c 64 20 62 .title('The.red.crosses.should.b
70a0 65 20 63 6c 6f 73 65 20 74 6f 20 74 68 65 20 69 6d 61 67 65 20 63 6f 72 6e 65 72 73 27 29 3b 0a e.close.to.the.image.corners');.
70c0 20 20 20 68 6f 6c 64 20 6f 66 66 3b 0a 20 20 20 0a 20 20 20 64 69 73 70 28 27 49 66 20 74 68 65 ...hold.off;........disp('If.the
70e0 20 67 75 65 73 73 65 64 20 67 72 69 64 20 63 6f 72 6e 65 72 73 20 28 72 65 64 20 63 72 6f 73 73 .guessed.grid.corners.(red.cross
7100 65 73 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 29 20 61 72 65 20 6e 6f 74 20 63 6c 6f 73 65 20 74 es.on.the.image).are.not.close.t
7120 6f 20 74 68 65 20 61 63 74 75 61 6c 20 63 6f 72 6e 65 72 73 2c 27 29 3b 0a 20 20 20 64 69 73 70 o.the.actual.corners,');....disp
7140 28 27 69 74 20 69 73 20 6e 65 63 65 73 73 61 72 79 20 74 6f 20 65 6e 74 65 72 20 61 6e 20 69 6e ('it.is.necessary.to.enter.an.in
7160 69 74 69 61 6c 20 67 75 65 73 73 20 66 6f 72 20 74 68 65 20 72 61 64 69 61 6c 20 64 69 73 74 6f itial.guess.for.the.radial.disto
7180 72 74 69 6f 6e 20 66 61 63 74 6f 72 20 6b 63 20 28 75 73 65 66 75 6c 20 66 6f 72 20 73 75 62 70 rtion.factor.kc.(useful.for.subp
71a0 69 78 65 6c 20 64 65 74 65 63 74 69 6f 6e 29 27 29 3b 0a 20 20 20 71 75 65 73 74 5f 64 69 73 74 ixel.detection)');....quest_dist
71c0 6f 72 74 20 3d 20 69 6e 70 75 74 28 27 4e 65 65 64 20 6f 66 20 61 6e 20 69 6e 69 74 69 61 6c 20 ort.=.input('Need.of.an.initial.
71e0 67 75 65 73 73 20 66 6f 72 20 64 69 73 74 6f 72 74 69 6f 6e 3f 20 28 5b 5d 3d 6e 6f 2c 20 6f 74 guess.for.distortion?.([]=no,.ot
7200 68 65 72 3d 79 65 73 29 20 27 29 3b 0a 20 20 0a 20 20 20 71 75 65 73 74 5f 64 69 73 74 6f 72 74 her=yes).');.......quest_distort
7220 20 3d 20 7e 69 73 65 6d 70 74 79 28 71 75 65 73 74 5f 64 69 73 74 6f 72 74 29 3b 0a 20 20 20 0a .=.~isempty(quest_distort);.....
7240 20 20 20 69 66 20 71 75 65 73 74 5f 64 69 73 74 6f 72 74 2c 0a 20 20 20 20 20 20 25 20 45 73 74 ...if.quest_distort,.......%.Est
7260 69 6d 61 74 69 6f 6e 20 6f 66 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 3a 0a 20 20 20 20 20 20 63 imation.of.focal.length:.......c
7280 5f 67 20 3d 20 5b 73 69 7a 65 28 49 2c 32 29 3b 73 69 7a 65 28 49 2c 31 29 5d 2f 32 20 2b 20 2e _g.=.[size(I,2);size(I,1)]/2.+..
72a0 35 3b 0a 09 09 66 5f 67 20 3d 20 44 69 73 74 6f 72 32 43 61 6c 69 62 28 30 2c 5b 5b 78 28 31 29 5;...f_g.=.Distor2Calib(0,[[x(1)
72c0 20 78 28 32 29 20 78 28 34 29 20 78 28 33 29 5d 20 2d 20 63 5f 67 28 31 29 3b 5b 79 28 31 29 20 .x(2).x(4).x(3)].-.c_g(1);[y(1).
72e0 79 28 32 29 20 79 28 34 29 20 79 28 33 29 5d 20 2d 20 63 5f 67 28 32 29 5d 2c 31 2c 31 2c 34 2c y(2).y(4).y(3)].-.c_g(2)],1,1,4,
7300 57 2c 4c 2c 5b 2d 57 2f 32 20 57 2f 32 20 57 2f 32 20 2d 57 2f 32 3b 4c 2f 32 20 4c 2f 32 20 2d W,L,[-W/2.W/2.W/2.-W/2;L/2.L/2.-
7320 4c 2f 32 20 2d 4c 2f 32 3b 20 30 20 30 20 30 20 30 5d 2c 31 30 30 2c 31 2c 31 29 3b 0a 20 20 20 L/2.-L/2;.0.0.0.0],100,1,1);....
7340 20 20 20 66 5f 67 20 3d 20 6d 65 61 6e 28 66 5f 67 29 3b 0a 20 20 20 20 20 20 73 63 72 69 70 74 ...f_g.=.mean(f_g);.......script
7360 5f 66 69 74 5f 64 69 73 74 6f 72 74 69 6f 6e 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 25 25 25 25 _fit_distortion;....end;....%%%%
7380 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 45 4e 44 20 41 44 44 49 54 49 4f 4e 41 4c %%%%%%%%%%%%%%%%%.END.ADDITIONAL
73a0 20 53 54 55 46 46 20 49 4e 20 54 48 45 20 43 41 53 45 20 4f 46 20 48 49 47 48 4c 59 20 44 49 53 .STUFF.IN.THE.CASE.OF.HIGHLY.DIS
73c0 54 4f 52 54 45 44 20 49 4d 41 47 45 53 20 25 25 25 25 25 25 25 25 25 25 25 25 25 0a 20 20 20 0a TORTED.IMAGES.%%%%%%%%%%%%%.....
73e0 20 20 20 0a 20 20 20 0a 20 20 20 0a 20 20 20 0a 20 20 20 4e 70 20 3d 20 28 6e 5f 73 71 5f 78 2b ...................Np.=.(n_sq_x+
7400 31 29 2a 28 6e 5f 73 71 5f 79 2b 31 29 3b 0a 0a 20 20 20 64 69 73 70 28 27 43 6f 72 6e 65 72 20 1)*(n_sq_y+1);.....disp('Corner.
7420 65 78 74 72 61 63 74 69 6f 6e 2e 2e 2e 27 29 3b 0a 20 20 20 0a 20 20 20 67 72 69 64 5f 70 74 73 extraction...');........grid_pts
7440 20 3d 20 63 6f 72 6e 65 72 66 69 6e 64 65 72 28 58 58 2c 49 2c 77 69 6e 74 79 2c 77 69 6e 74 78 .=.cornerfinder(XX,I,winty,wintx
7460 29 3b 20 25 25 25 20 46 69 6e 64 73 20 74 68 65 20 65 78 61 63 74 20 63 6f 72 6e 65 72 73 20 61 );.%%%.Finds.the.exact.corners.a
7480 74 20 65 76 65 72 79 20 70 6f 69 6e 74 73 21 0a 20 20 20 0a 0a 20 20 20 0a 20 20 20 25 73 61 76 t.every.points!.............%sav
74a0 65 20 61 6c 6c 5f 63 6f 72 6e 65 72 73 20 78 20 79 20 67 72 69 64 5f 70 74 73 0a 20 20 20 0a 20 e.all_corners.x.y.grid_pts......
74c0 20 20 67 72 69 64 5f 70 74 73 20 3d 20 67 72 69 64 5f 70 74 73 20 2d 20 31 3b 20 25 20 73 75 62 ..grid_pts.=.grid_pts.-.1;.%.sub
74e0 74 72 61 63 74 20 31 20 74 6f 20 62 72 69 6e 67 20 74 68 65 20 6f 72 69 67 69 6e 20 74 6f 20 28 tract.1.to.bring.the.origin.to.(
7500 30 2c 30 29 20 69 6e 73 74 65 61 64 20 6f 66 20 28 31 2c 31 29 20 69 6e 20 6d 61 74 6c 61 62 20 0,0).instead.of.(1,1).in.matlab.
7520 28 6e 6f 74 20 6e 65 63 65 73 73 61 72 79 20 69 6e 20 43 29 0a 20 20 20 0a 20 20 20 0a 20 20 20 (not.necessary.in.C)............
7540 25 20 47 6c 6f 62 61 6c 20 48 6f 6d 6f 67 72 61 70 68 79 20 66 72 6f 6d 20 70 6c 61 6e 65 20 74 %.Global.Homography.from.plane.t
7560 6f 20 70 69 78 65 6c 20 63 6f 6f 72 64 69 6e 61 74 65 73 3a 0a 20 20 20 0a 20 0a 20 20 20 0a 20 o.pixel.coordinates:............
7580 20 20 0a 20 20 20 69 6e 64 5f 63 6f 72 6e 65 72 73 20 3d 20 5b 31 20 6e 5f 73 71 5f 78 2b 31 20 ......ind_corners.=.[1.n_sq_x+1.
75a0 28 6e 5f 73 71 5f 78 2b 31 29 2a 6e 5f 73 71 5f 79 2b 31 20 28 6e 5f 73 71 5f 78 2b 31 29 2a 28 (n_sq_x+1)*n_sq_y+1.(n_sq_x+1)*(
75c0 6e 5f 73 71 5f 79 2b 31 29 5d 3b 20 25 20 69 6e 64 65 78 20 6f 66 20 74 68 65 20 34 20 63 6f 72 n_sq_y+1)];.%.index.of.the.4.cor
75e0 6e 65 72 73 0a 20 20 20 69 6e 64 5f 6f 72 69 67 20 3d 20 28 6e 5f 73 71 5f 78 2b 31 29 2a 6e 5f ners....ind_orig.=.(n_sq_x+1)*n_
7600 73 71 5f 79 20 2b 20 31 3b 0a 20 20 20 78 6f 72 69 67 20 3d 20 67 72 69 64 5f 70 74 73 28 31 2c sq_y.+.1;....xorig.=.grid_pts(1,
7620 69 6e 64 5f 6f 72 69 67 29 3b 0a 20 20 20 79 6f 72 69 67 20 3d 20 67 72 69 64 5f 70 74 73 28 32 ind_orig);....yorig.=.grid_pts(2
7640 2c 69 6e 64 5f 6f 72 69 67 29 3b 0a 20 20 20 64 78 70 6f 73 20 3d 20 6d 65 61 6e 28 5b 67 72 69 ,ind_orig);....dxpos.=.mean([gri
7660 64 5f 70 74 73 28 3a 2c 69 6e 64 5f 6f 72 69 67 29 20 67 72 69 64 5f 70 74 73 28 3a 2c 69 6e 64 d_pts(:,ind_orig).grid_pts(:,ind
7680 5f 6f 72 69 67 2b 31 29 5d 27 29 3b 0a 20 20 20 64 79 70 6f 73 20 3d 20 6d 65 61 6e 28 5b 67 72 _orig+1)]');....dypos.=.mean([gr
76a0 69 64 5f 70 74 73 28 3a 2c 69 6e 64 5f 6f 72 69 67 29 20 67 72 69 64 5f 70 74 73 28 3a 2c 69 6e id_pts(:,ind_orig).grid_pts(:,in
76c0 64 5f 6f 72 69 67 2d 6e 5f 73 71 5f 78 2d 31 29 5d 27 29 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 d_orig-n_sq_x-1)]');............
76e0 78 5f 62 6f 78 5f 6b 6b 20 3d 20 5b 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2d 28 77 69 6e 74 78 x_box_kk.=.[grid_pts(1,:)-(wintx
7700 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2b 28 77 69 6e 74 78 2b 2e 35 29 3b 67 72 +.5);grid_pts(1,:)+(wintx+.5);gr
7720 69 64 5f 70 74 73 28 31 2c 3a 29 2b 28 77 69 6e 74 78 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 id_pts(1,:)+(wintx+.5);grid_pts(
7740 31 2c 3a 29 2d 28 77 69 6e 74 78 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2d 28 77 1,:)-(wintx+.5);grid_pts(1,:)-(w
7760 69 6e 74 78 2b 2e 35 29 5d 3b 0a 20 20 20 79 5f 62 6f 78 5f 6b 6b 20 3d 20 5b 67 72 69 64 5f 70 intx+.5)];....y_box_kk.=.[grid_p
7780 74 73 28 32 2c 3a 29 2d 28 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 ts(2,:)-(winty+.5);grid_pts(2,:)
77a0 2d 28 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2b 28 77 69 6e 74 79 -(winty+.5);grid_pts(2,:)+(winty
77c0 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2b 28 77 69 6e 74 79 2b 2e 35 29 3b 67 72 +.5);grid_pts(2,:)+(winty+.5);gr
77e0 69 64 5f 70 74 73 28 32 2c 3a 29 2d 28 77 69 6e 74 79 2b 2e 35 29 5d 3b 0a 0a 20 20 20 0a 20 20 id_pts(2,:)-(winty+.5)];........
7800 20 66 69 67 75 72 65 28 33 29 3b 0a 20 20 20 69 6d 61 67 65 28 49 29 3b 20 63 6f 6c 6f 72 6d 61 .figure(3);....image(I);.colorma
7820 70 28 6d 61 70 29 3b 20 68 6f 6c 64 20 6f 6e 3b 0a 20 20 20 70 6c 6f 74 28 67 72 69 64 5f 70 74 p(map);.hold.on;....plot(grid_pt
7840 73 28 31 2c 3a 29 2b 31 2c 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2b 31 2c 27 72 2b 27 29 3b 0a s(1,:)+1,grid_pts(2,:)+1,'r+');.
7860 20 20 20 70 6c 6f 74 28 78 5f 62 6f 78 5f 6b 6b 2b 31 2c 79 5f 62 6f 78 5f 6b 6b 2b 31 2c 27 2d ...plot(x_box_kk+1,y_box_kk+1,'-
7880 62 27 29 3b 0a 20 20 20 70 6c 6f 74 28 67 72 69 64 5f 70 74 73 28 31 2c 69 6e 64 5f 63 6f 72 6e b');....plot(grid_pts(1,ind_corn
78a0 65 72 73 29 2b 31 2c 67 72 69 64 5f 70 74 73 28 32 2c 69 6e 64 5f 63 6f 72 6e 65 72 73 29 2b 31 ers)+1,grid_pts(2,ind_corners)+1
78c0 2c 27 6d 6f 27 29 3b 0a 20 20 20 70 6c 6f 74 28 78 6f 72 69 67 2b 31 2c 79 6f 72 69 67 2b 31 2c ,'mo');....plot(xorig+1,yorig+1,
78e0 27 2a 6d 27 29 3b 0a 20 20 20 68 20 3d 20 74 65 78 74 28 78 6f 72 69 67 2d 31 35 2c 79 6f 72 69 '*m');....h.=.text(xorig-15,yori
7900 67 2d 31 35 2c 27 4f 27 29 3b 0a 20 20 20 73 65 74 28 68 2c 27 43 6f 6c 6f 72 27 2c 27 6d 27 2c g-15,'O');....set(h,'Color','m',
7920 27 46 6f 6e 74 53 69 7a 65 27 2c 31 34 29 3b 0a 20 20 20 68 32 20 3d 20 74 65 78 74 28 64 78 70 'FontSize',14);....h2.=.text(dxp
7940 6f 73 28 31 29 2d 31 30 2c 64 78 70 6f 73 28 32 29 2d 31 30 2c 27 64 58 27 29 3b 0a 20 20 20 73 os(1)-10,dxpos(2)-10,'dX');....s
7960 65 74 28 68 32 2c 27 43 6f 6c 6f 72 27 2c 27 67 27 2c 27 46 6f 6e 74 53 69 7a 65 27 2c 31 34 29 et(h2,'Color','g','FontSize',14)
7980 3b 0a 20 20 20 68 33 20 3d 20 74 65 78 74 28 64 79 70 6f 73 28 31 29 2d 32 35 2c 64 79 70 6f 73 ;....h3.=.text(dypos(1)-25,dypos
79a0 28 32 29 2d 33 2c 27 64 59 27 29 3b 0a 20 20 20 73 65 74 28 68 33 2c 27 43 6f 6c 6f 72 27 2c 27 (2)-3,'dY');....set(h3,'Color','
79c0 67 27 2c 27 46 6f 6e 74 53 69 7a 65 27 2c 31 34 29 3b 0a 20 20 20 78 6c 61 62 65 6c 28 27 58 63 g','FontSize',14);....xlabel('Xc
79e0 20 28 69 6e 20 63 61 6d 65 72 61 20 66 72 61 6d 65 29 27 29 3b 0a 20 20 20 79 6c 61 62 65 6c 28 .(in.camera.frame)');....ylabel(
7a00 27 59 63 20 28 69 6e 20 63 61 6d 65 72 61 20 66 72 61 6d 65 29 27 29 3b 0a 20 20 20 74 69 74 6c 'Yc.(in.camera.frame)');....titl
7a20 65 28 27 45 78 74 72 61 63 74 65 64 20 63 6f 72 6e 65 72 73 27 29 3b 0a 20 20 20 7a 6f 6f 6d 20 e('Extracted.corners');....zoom.
7a40 6f 6e 3b 0a 20 20 20 64 72 61 77 6e 6f 77 3b 0a 20 20 20 68 6f 6c 64 20 6f 66 66 3b 0a 20 20 20 on;....drawnow;....hold.off;....
7a60 0a 20 20 20 0a 20 20 20 58 69 20 3d 20 72 65 73 68 61 70 65 28 28 5b 30 3a 6e 5f 73 71 5f 78 5d ........Xi.=.reshape(([0:n_sq_x]
7a80 2a 64 58 29 27 2a 6f 6e 65 73 28 31 2c 6e 5f 73 71 5f 79 2b 31 29 2c 4e 70 2c 31 29 27 3b 0a 20 *dX)'*ones(1,n_sq_y+1),Np,1)';..
7aa0 20 20 59 69 20 3d 20 72 65 73 68 61 70 65 28 6f 6e 65 73 28 6e 5f 73 71 5f 78 2b 31 2c 31 29 2a ..Yi.=.reshape(ones(n_sq_x+1,1)*
7ac0 5b 6e 5f 73 71 5f 79 3a 2d 31 3a 30 5d 2a 64 59 2c 4e 70 2c 31 29 27 3b 0a 20 20 20 5a 69 20 3d [n_sq_y:-1:0]*dY,Np,1)';....Zi.=
7ae0 20 7a 65 72 6f 73 28 31 2c 4e 70 29 3b 0a 20 20 20 0a 20 20 20 58 67 72 69 64 20 3d 20 5b 58 69 .zeros(1,Np);........Xgrid.=.[Xi
7b00 3b 59 69 3b 5a 69 5d 3b 0a 20 20 20 0a 20 20 20 0a 09 25 20 41 6c 6c 20 74 68 65 20 70 6f 69 6e ;Yi;Zi];..........%.All.the.poin
7b20 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 28 6f 6e 20 74 68 65 20 69 6d 61 67 65 2c 20 61 6e 64 t.coordinates.(on.the.image,.and
7b40 20 69 6e 20 33 44 29 20 2d 20 66 6f 72 20 67 6c 6f 62 61 6c 20 6f 70 74 69 6d 69 7a 61 74 69 6f .in.3D).-.for.global.optimizatio
7b60 6e 3a 0a 0a 20 20 20 78 20 3d 20 67 72 69 64 5f 70 74 73 3b 0a 20 20 20 58 20 3d 20 58 67 72 69 n:.....x.=.grid_pts;....X.=.Xgri
7b80 64 3b 0a 0a 0a 09 25 20 53 61 76 65 73 20 61 6c 6c 20 74 68 65 20 64 61 74 61 20 69 6e 74 6f 20 d;....%.Saves.all.the.data.into.
7ba0 76 61 72 69 61 62 6c 65 73 3a 0a 0a 20 20 20 65 76 61 6c 28 5b 27 64 58 5f 27 20 6e 75 6d 32 73 variables:.....eval(['dX_'.num2s
7bc0 74 72 28 6b 6b 29 20 27 20 3d 20 64 58 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 64 59 5f tr(kk).'.=.dX;']);....eval(['dY_
7be0 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 64 59 3b 27 5d 29 3b 20 20 0a 20 20 20 0a '.num2str(kk).'.=.dY;']);.......
7c00 20 20 20 65 76 61 6c 28 5b 27 77 69 6e 74 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 ...eval(['wintx_'.num2str(kk).'.
7c20 3d 20 77 69 6e 74 78 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 77 69 6e 74 79 5f 27 20 6e =.wintx;']);....eval(['winty_'.n
7c40 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 77 69 6e 74 79 3b 27 5d 29 3b 0a 0a 20 20 20 65 76 um2str(kk).'.=.winty;']);.....ev
7c60 61 6c 28 5b 27 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 78 3b 27 5d 29 3b 0a al(['x_'.num2str(kk).'.=.x;']);.
7c80 20 20 20 65 76 61 6c 28 5b 27 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 58 3b ...eval(['X_'.num2str(kk).'.=.X;
7ca0 27 5d 29 3b 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 6e 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 ']);........eval(['n_sq_x_'.num2
7cc0 73 74 72 28 6b 6b 29 20 27 20 3d 20 6e 5f 73 71 5f 78 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 str(kk).'.=.n_sq_x;']);....eval(
7ce0 5b 27 6e 5f 73 71 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 6e 5f 73 71 5f ['n_sq_y_'.num2str(kk).'.=.n_sq_
7d00 79 3b 27 5d 29 3b 0a 20 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 y;']);..........................
7d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7e00 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6c 69 63 6b 5f 69 6d 61 5f 63 61 6c 69 62 33 44 2e TOOLBOX_calib/click_ima_calib3D.
7e20 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 m...............................
7e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7e60 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
7e80 20 20 33 32 35 30 35 20 20 37 30 32 34 30 33 37 33 30 37 20 20 31 32 30 35 37 00 20 00 00 00 00 ..32505..7024037307..12057......
7ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8000 09 25 20 43 6c 65 61 6e 65 64 2d 75 70 20 76 65 72 73 69 6f 6e 20 6f 66 20 69 6e 69 74 5f 63 61 .%.Cleaned-up.version.of.init_ca
8020 6c 69 62 2e 6d 0a 0a 09 65 76 61 6c 28 5b 27 49 20 3d 20 49 5f 27 20 6e 75 6d 32 73 74 72 28 6b lib.m...eval(['I.=.I_'.num2str(k
8040 6b 29 20 27 3b 27 5d 29 3b 0a 09 0a 09 66 69 67 75 72 65 28 32 29 3b 0a 09 69 6d 61 67 65 28 49 k).';']);....figure(2);..image(I
8060 29 3b 0a 20 20 20 63 6f 6c 6f 72 6d 61 70 28 6d 61 70 29 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 );....colormap(map);............
8080 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 ............%%%%%%%%%%%%%%%%%%%%
80a0 25 25 25 25 25 20 4c 45 46 54 20 50 41 54 54 45 52 4e 20 41 43 51 55 49 53 49 54 49 4f 4e 20 25 %%%%%.LEFT.PATTERN.ACQUISITION.%
80c0 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 0a 20 20 20 %%%%%%%%%%%%%%%%%%%%%%%%%%%%....
80e0 0a 20 20 0a 20 20 20 0a 20 20 20 74 69 74 6c 65 28 5b 27 43 6c 69 63 6b 20 6f 6e 20 74 68 65 20 ...........title(['Click.on.the.
8100 66 6f 75 72 20 65 78 74 72 65 6d 65 20 63 6f 72 6e 65 72 73 20 6f 66 20 74 68 65 20 6c 65 66 74 four.extreme.corners.of.the.left
8120 20 72 65 63 74 61 6e 67 75 6c 61 72 20 70 61 74 74 65 72 6e 2e 2e 2e 20 49 6d 61 67 65 20 27 20 .rectangular.pattern....Image.'.
8140 6e 75 6d 32 73 74 72 28 6b 6b 29 5d 29 3b 0a 20 20 20 0a 20 20 20 64 69 73 70 28 27 43 6c 69 63 num2str(kk)]);........disp('Clic
8160 6b 20 6f 6e 20 74 68 65 20 66 6f 75 72 20 65 78 74 72 65 6d 65 20 63 6f 72 6e 65 72 73 20 6f 66 k.on.the.four.extreme.corners.of
8180 20 74 68 65 20 6c 65 66 74 20 72 65 63 74 61 6e 67 75 6c 61 72 20 70 61 74 74 65 72 6e 2e 2e 2e .the.left.rectangular.pattern...
81a0 27 29 3b 0a 20 20 20 0a 20 20 20 5b 78 2c 79 5d 20 3d 20 67 69 6e 70 75 74 33 28 34 29 3b 0a 20 ');........[x,y].=.ginput3(4);..
81c0 20 20 0a 20 20 20 5b 58 63 2c 67 6f 6f 64 2c 62 61 64 2c 74 79 70 65 5d 20 3d 20 63 6f 72 6e 65 ......[Xc,good,bad,type].=.corne
81e0 72 66 69 6e 64 65 72 28 5b 78 27 3b 79 27 5d 2c 49 2c 77 69 6e 74 79 2c 77 69 6e 74 78 29 3b 20 rfinder([x';y'],I,winty,wintx);.
8200 25 20 74 68 65 20 66 6f 75 72 20 63 6f 72 6e 65 72 73 0a 20 20 20 0a 20 20 20 78 20 3d 20 58 63 %.the.four.corners........x.=.Xc
8220 28 31 2c 3a 29 27 3b 0a 20 20 20 79 20 3d 20 58 63 28 32 2c 3a 29 27 3b 0a 20 20 20 0a 20 20 20 (1,:)';....y.=.Xc(2,:)';........
8240 5b 79 2c 69 6e 64 79 5d 20 3d 20 73 6f 72 74 28 79 29 3b 0a 20 20 20 78 20 3d 20 78 28 69 6e 64 [y,indy].=.sort(y);....x.=.x(ind
8260 79 29 3b 0a 20 20 20 0a 20 20 20 69 66 20 28 78 28 32 29 20 3e 20 78 28 31 29 29 2c 0a 20 20 20 y);........if.(x(2).>.x(1)),....
8280 20 20 20 78 34 20 3d 20 78 28 31 29 3b 79 34 20 3d 20 79 28 31 29 3b 20 78 33 20 3d 20 78 28 32 ...x4.=.x(1);y4.=.y(1);.x3.=.x(2
82a0 29 3b 20 79 33 20 3d 20 79 28 32 29 3b 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 78 34 20 3d );.y3.=.y(2);....else.......x4.=
82c0 20 78 28 32 29 3b 79 34 20 3d 20 79 28 32 29 3b 20 78 33 20 3d 20 78 28 31 29 3b 20 79 33 20 3d .x(2);y4.=.y(2);.x3.=.x(1);.y3.=
82e0 20 79 28 31 29 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 69 66 20 28 78 28 33 29 20 3e 20 78 28 34 .y(1);....end;....if.(x(3).>.x(4
8300 29 29 2c 0a 20 20 20 20 20 20 78 32 20 3d 20 78 28 33 29 3b 79 32 20 3d 20 79 28 33 29 3b 20 78 )),.......x2.=.x(3);y2.=.y(3);.x
8320 31 20 3d 20 78 28 34 29 3b 20 79 31 20 3d 20 79 28 34 29 3b 0a 20 20 20 65 6c 73 65 0a 20 20 20 1.=.x(4);.y1.=.y(4);....else....
8340 20 20 20 78 32 20 3d 20 78 28 34 29 3b 79 32 20 3d 20 79 28 34 29 3b 20 78 31 20 3d 20 78 28 33 ...x2.=.x(4);y2.=.y(4);.x1.=.x(3
8360 29 3b 20 79 31 20 3d 20 79 28 33 29 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 78 20 3d );.y1.=.y(3);....end;........x.=
8380 20 5b 78 31 3b 78 32 3b 78 33 3b 78 34 5d 3b 0a 20 20 20 79 20 3d 20 5b 79 31 3b 79 32 3b 79 33 .[x1;x2;x3;x4];....y.=.[y1;y2;y3
83a0 3b 79 34 5d 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 66 69 67 75 72 65 28 32 29 3b 20 68 6f 6c 64 ;y4];............figure(2);.hold
83c0 20 6f 6e 3b 0a 20 20 20 70 6c 6f 74 28 5b 78 3b 78 28 31 29 5d 2c 5b 79 3b 79 28 31 29 5d 2c 27 .on;....plot([x;x(1)],[y;y(1)],'
83e0 67 2d 27 29 3b 0a 20 20 20 70 6c 6f 74 28 78 2c 79 2c 27 6f 67 27 29 3b 0a 20 20 20 68 78 3d 74 g-');....plot(x,y,'og');....hx=t
8400 65 78 74 28 28 78 28 34 29 2b 78 28 33 29 29 2f 32 2c 28 79 28 34 29 2b 79 28 33 29 29 2f 32 20 ext((x(4)+x(3))/2,(y(4)+y(3))/2.
8420 2d 20 32 30 2c 27 58 27 29 3b 0a 20 20 20 73 65 74 28 68 78 2c 27 63 6f 6c 6f 72 27 2c 27 67 27 -.20,'X');....set(hx,'color','g'
8440 2c 27 46 6f 6e 74 73 69 7a 65 27 2c 31 34 29 3b 0a 20 20 20 68 79 3d 74 65 78 74 28 28 78 28 34 ,'Fontsize',14);....hy=text((x(4
8460 29 2b 78 28 31 29 29 2f 32 2d 32 30 2c 28 79 28 34 29 2b 79 28 31 29 29 2f 32 2c 27 59 27 29 3b )+x(1))/2-20,(y(4)+y(1))/2,'Y');
8480 0a 20 20 20 73 65 74 28 68 79 2c 27 63 6f 6c 6f 72 27 2c 27 67 27 2c 27 46 6f 6e 74 73 69 7a 65 ....set(hy,'color','g','Fontsize
84a0 27 2c 31 34 29 3b 0a 20 20 20 68 6f 6c 64 20 6f 66 66 3b 0a 20 20 20 0a 20 20 20 64 72 61 77 6e ',14);....hold.off;........drawn
84c0 6f 77 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 20 54 72 79 20 74 6f 20 61 75 74 6f 6d 61 74 69 ow;............%.Try.to.automati
84e0 63 61 6c 6c 79 20 63 6f 75 6e 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 71 75 61 72 65 cally.count.the.number.of.square
8500 73 20 69 6e 20 74 68 65 20 67 72 69 64 0a 20 20 20 0a 20 20 20 6e 5f 73 71 5f 78 31 20 3d 20 63 s.in.the.grid........n_sq_x1.=.c
8520 6f 75 6e 74 5f 73 71 75 61 72 65 73 28 49 2c 78 31 2c 79 31 2c 78 32 2c 79 32 2c 77 69 6e 74 78 ount_squares(I,x1,y1,x2,y2,wintx
8540 29 3b 0a 20 20 20 6e 5f 73 71 5f 78 32 20 3d 20 63 6f 75 6e 74 5f 73 71 75 61 72 65 73 28 49 2c );....n_sq_x2.=.count_squares(I,
8560 78 33 2c 79 33 2c 78 34 2c 79 34 2c 77 69 6e 74 78 29 3b 0a 20 20 20 6e 5f 73 71 5f 79 31 20 3d x3,y3,x4,y4,wintx);....n_sq_y1.=
8580 20 63 6f 75 6e 74 5f 73 71 75 61 72 65 73 28 49 2c 78 32 2c 79 32 2c 78 33 2c 79 33 2c 77 69 6e .count_squares(I,x2,y2,x3,y3,win
85a0 74 78 29 3b 0a 20 20 20 6e 5f 73 71 5f 79 32 20 3d 20 63 6f 75 6e 74 5f 73 71 75 61 72 65 73 28 tx);....n_sq_y2.=.count_squares(
85c0 49 2c 78 34 2c 79 34 2c 78 31 2c 79 31 2c 77 69 6e 74 78 29 3b 0a 20 20 20 0a 20 20 0a 20 20 20 I,x4,y4,x1,y1,wintx);...........
85e0 0a 20 20 20 25 20 49 66 20 63 6f 75 6c 64 20 6e 6f 74 20 63 6f 75 6e 74 20 74 68 65 20 6e 75 6d ....%.If.could.not.count.the.num
8600 62 65 72 20 6f 66 20 73 71 75 61 72 65 73 2c 20 65 6e 74 65 72 20 6d 61 6e 75 61 6c 6c 79 0a 20 ber.of.squares,.enter.manually..
8620 20 20 0a 20 20 20 69 66 20 28 6e 5f 73 71 5f 78 31 7e 3d 6e 5f 73 71 5f 78 32 29 7c 28 6e 5f 73 ......if.(n_sq_x1~=n_sq_x2)|(n_s
8640 71 5f 79 31 7e 3d 6e 5f 73 71 5f 79 32 29 2c 0a 20 20 20 20 20 20 0a 0a 09 20 64 69 73 70 28 27 q_y1~=n_sq_y2),...........disp('
8660 43 6f 75 6c 64 20 6e 6f 74 20 63 6f 75 6e 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 71 Could.not.count.the.number.of.sq
8680 75 61 72 65 73 20 69 6e 20 74 68 65 20 67 72 69 64 2e 20 45 6e 74 65 72 20 6d 61 6e 75 61 6c 6c uares.in.the.grid..Enter.manuall
86a0 79 2e 27 29 3b 0a 09 20 6e 5f 73 71 5f 78 20 3d 20 69 6e 70 75 74 28 27 4e 75 6d 62 65 72 20 6f y.');...n_sq_x.=.input('Number.o
86c0 66 20 73 71 75 61 72 65 73 20 61 6c 6f 6e 67 20 74 68 65 20 58 20 64 69 72 65 63 74 69 6f 6e 20 f.squares.along.the.X.direction.
86e0 28 5b 5d 3d 31 30 29 20 3d 20 27 29 3b 20 25 36 0a 09 20 69 66 20 69 73 65 6d 70 74 79 28 6e 5f ([]=10).=.');.%6...if.isempty(n_
8700 73 71 5f 78 29 2c 20 6e 5f 73 71 5f 78 20 3d 20 31 30 3b 20 65 6e 64 3b 0a 09 20 6e 5f 73 71 5f sq_x),.n_sq_x.=.10;.end;...n_sq_
8720 79 20 3d 20 69 6e 70 75 74 28 27 4e 75 6d 62 65 72 20 6f 66 20 73 71 75 61 72 65 73 20 61 6c 6f y.=.input('Number.of.squares.alo
8740 6e 67 20 74 68 65 20 59 20 64 69 72 65 63 74 69 6f 6e 20 28 5b 5d 3d 31 30 29 20 3d 20 27 29 3b ng.the.Y.direction.([]=10).=.');
8760 20 25 36 0a 09 20 69 66 20 69 73 65 6d 70 74 79 28 6e 5f 73 71 5f 79 29 2c 20 6e 5f 73 71 5f 79 .%6...if.isempty(n_sq_y),.n_sq_y
8780 20 3d 20 31 30 3b 20 65 6e 64 3b 20 0a 20 20 20 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 .=.10;.end;.........else........
87a0 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 6e 5f 73 71 5f 78 20 3d 20 6e 5f 73 71 5f 78 31 3b ...............n_sq_x.=.n_sq_x1;
87c0 0a 20 20 20 20 20 20 6e 5f 73 71 5f 79 20 3d 20 6e 5f 73 71 5f 79 31 3b 0a 20 20 20 20 20 20 0a .......n_sq_y.=.n_sq_y1;........
87e0 20 20 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 69 66 20 31 2c 0a 20 20 20 09 25 20 45 ...end;............if.1,.....%.E
8800 6e 74 65 72 20 74 68 65 20 73 69 7a 65 20 6f 66 20 65 61 63 68 20 73 71 75 61 72 65 0a 20 20 20 nter.the.size.of.each.square....
8820 0a 20 20 20 09 64 58 20 3d 20 69 6e 70 75 74 28 5b 27 53 69 7a 65 20 64 58 20 6f 66 20 65 61 63 .....dX.=.input(['Size.dX.of.eac
8840 68 20 73 71 75 61 72 65 20 61 6c 6f 6e 67 20 74 68 65 20 58 20 64 69 72 65 63 74 69 6f 6e 20 28 h.square.along.the.X.direction.(
8860 5b 5d 3d 27 20 6e 75 6d 32 73 74 72 28 64 58 5f 64 65 66 61 75 6c 74 29 20 27 63 6d 29 20 3d 20 []='.num2str(dX_default).'cm).=.
8880 27 5d 29 3b 0a 20 20 09 09 64 59 20 3d 20 69 6e 70 75 74 28 5b 27 53 69 7a 65 20 64 59 20 6f 66 ']);.....dY.=.input(['Size.dY.of
88a0 20 65 61 63 68 20 73 71 75 61 72 65 20 61 6c 6f 6e 67 20 74 68 65 20 59 20 64 69 72 65 63 74 69 .each.square.along.the.Y.directi
88c0 6f 6e 20 28 5b 5d 3d 27 20 6e 75 6d 32 73 74 72 28 64 59 5f 64 65 66 61 75 6c 74 29 20 27 63 6d on.([]='.num2str(dY_default).'cm
88e0 29 20 3d 20 27 5d 29 3b 0a 09 09 69 66 20 69 73 65 6d 70 74 79 28 64 58 29 2c 20 64 58 20 3d 20 ).=.']);...if.isempty(dX),.dX.=.
8900 64 58 5f 64 65 66 61 75 6c 74 3b 20 65 6c 73 65 20 64 58 5f 64 65 66 61 75 6c 74 20 3d 20 64 58 dX_default;.else.dX_default.=.dX
8920 3b 20 65 6e 64 3b 0a 09 09 69 66 20 69 73 65 6d 70 74 79 28 64 59 29 2c 20 64 59 20 3d 20 64 59 ;.end;...if.isempty(dY),.dY.=.dY
8940 5f 64 65 66 61 75 6c 74 3b 20 65 6c 73 65 20 64 59 5f 64 65 66 61 75 6c 74 20 3d 20 64 59 3b 20 _default;.else.dY_default.=.dY;.
8960 65 6e 64 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 0a 20 20 20 20 20 end;...........else.............
8980 20 64 58 20 3d 20 33 3b 0a 20 20 20 20 20 20 64 59 20 3d 20 33 3b 0a 20 20 20 20 20 20 0a 20 20 .dX.=.3;.......dY.=.3;..........
89a0 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 20 43 6f 6d 70 75 74 65 20 74 68 65 20 69 .end;............%.Compute.the.i
89c0 6e 73 69 64 65 20 70 6f 69 6e 74 73 20 74 68 72 6f 75 67 68 20 63 6f 6d 70 75 74 61 74 69 6f 6e nside.points.through.computation
89e0 20 6f 66 20 74 68 65 20 70 6c 61 6e 61 72 20 68 6f 6d 6f 67 72 61 70 68 79 20 28 63 6f 6c 6c 69 .of.the.planar.homography.(colli
8a00 6e 65 61 74 69 6f 6e 29 0a 20 20 20 0a 09 61 30 30 20 3d 20 5b 78 28 31 29 3b 79 28 31 29 3b 31 neation)......a00.=.[x(1);y(1);1
8a20 5d 3b 0a 09 61 31 30 20 3d 20 5b 78 28 32 29 3b 79 28 32 29 3b 31 5d 3b 0a 09 61 31 31 20 3d 20 ];..a10.=.[x(2);y(2);1];..a11.=.
8a40 5b 78 28 33 29 3b 79 28 33 29 3b 31 5d 3b 0a 09 61 30 31 20 3d 20 5b 78 28 34 29 3b 79 28 34 29 [x(3);y(3);1];..a01.=.[x(4);y(4)
8a60 3b 31 5d 3b 0a 0a 0a 09 25 20 43 6f 6d 70 75 74 65 20 74 68 65 20 70 6c 61 6e 61 72 74 20 63 6f ;1];....%.Compute.the.planart.co
8a80 6c 6c 69 6e 65 61 74 69 6f 6e 3a 20 28 72 65 74 75 72 6e 20 74 68 65 20 6e 6f 72 6d 61 6c 69 7a llineation:.(return.the.normaliz
8aa0 61 74 69 6f 6e 20 6d 61 74 72 69 63 65 20 61 73 20 77 65 6c 6c 29 0a 0a 09 5b 48 6f 6d 6f 2c 48 ation.matrice.as.well)...[Homo,H
8ac0 6e 6f 72 6d 2c 69 6e 76 5f 48 6e 6f 72 6d 5d 20 3d 20 63 6f 6d 70 75 74 65 5f 63 6f 6c 6c 69 6e norm,inv_Hnorm].=.compute_collin
8ae0 65 61 74 69 6f 6e 20 28 61 30 30 2c 20 61 31 30 2c 20 61 31 31 2c 20 61 30 31 29 3b 0a 0a 0a 09 eation.(a00,.a10,.a11,.a01);....
8b00 25 20 42 75 69 6c 64 20 74 68 65 20 67 72 69 64 20 75 73 69 6e 67 20 74 68 65 20 70 6c 61 6e 61 %.Build.the.grid.using.the.plana
8b20 72 20 63 6f 6c 6c 69 6e 65 61 74 69 6f 6e 3a 0a 0a 09 78 5f 6c 20 3d 20 28 28 30 3a 6e 5f 73 71 r.collineation:...x_l.=.((0:n_sq
8b40 5f 78 29 27 2a 6f 6e 65 73 28 31 2c 6e 5f 73 71 5f 79 2b 31 29 29 2f 6e 5f 73 71 5f 78 3b 0a 20 _x)'*ones(1,n_sq_y+1))/n_sq_x;..
8b60 20 20 79 5f 6c 20 3d 20 28 6f 6e 65 73 28 6e 5f 73 71 5f 78 2b 31 2c 31 29 2a 28 30 3a 6e 5f 73 ..y_l.=.(ones(n_sq_x+1,1)*(0:n_s
8b80 71 5f 79 29 29 2f 6e 5f 73 71 5f 79 3b 0a 20 20 20 70 74 73 20 3d 20 5b 78 5f 6c 28 3a 29 20 79 q_y))/n_sq_y;....pts.=.[x_l(:).y
8ba0 5f 6c 28 3a 29 20 6f 6e 65 73 28 28 6e 5f 73 71 5f 78 2b 31 29 2a 28 6e 5f 73 71 5f 79 2b 31 29 _l(:).ones((n_sq_x+1)*(n_sq_y+1)
8bc0 2c 31 29 5d 27 3b 0a 20 20 20 0a 20 20 20 58 58 20 3d 20 48 6f 6d 6f 2a 70 74 73 3b 0a 09 58 58 ,1)]';........XX.=.Homo*pts;..XX
8be0 20 3d 20 58 58 28 31 3a 32 2c 3a 29 20 2e 2f 20 28 6f 6e 65 73 28 32 2c 31 29 2a 58 58 28 33 2c .=.XX(1:2,:)../.(ones(2,1)*XX(3,
8c00 3a 29 29 3b 0a 0a 20 20 20 0a 20 20 20 25 20 43 6f 6d 70 6c 65 74 65 20 73 69 7a 65 20 6f 66 20 :));.........%.Complete.size.of.
8c20 74 68 65 20 72 65 63 74 61 6e 67 6c 65 0a 20 20 20 0a 20 20 20 57 20 3d 20 6e 5f 73 71 5f 78 2a the.rectangle........W.=.n_sq_x*
8c40 64 58 3b 0a 20 20 20 4c 20 3d 20 6e 5f 73 71 5f 79 2a 64 59 3b 0a 20 20 20 0a 20 20 20 0a 20 20 dX;....L.=.n_sq_y*dY;...........
8c60 20 0a 20 20 20 69 66 20 31 2c 0a 20 20 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 .....if.1,....%%%%%%%%%%%%%%%%%%
8c80 25 25 25 25 25 25 20 41 44 44 49 54 49 4f 4e 41 4c 20 53 54 55 46 46 20 49 4e 20 54 48 45 20 43 %%%%%%.ADDITIONAL.STUFF.IN.THE.C
8ca0 41 53 45 20 4f 46 20 48 49 47 48 4c 59 20 44 49 53 54 4f 52 54 45 44 20 49 4d 41 47 45 53 20 25 ASE.OF.HIGHLY.DISTORTED.IMAGES.%
8cc0 25 25 25 25 25 25 25 25 25 25 25 25 0a 20 20 20 66 69 67 75 72 65 28 32 29 3b 0a 20 20 20 68 6f %%%%%%%%%%%%....figure(2);....ho
8ce0 6c 64 20 6f 6e 3b 0a 20 20 20 70 6c 6f 74 28 58 58 28 31 2c 3a 29 2c 58 58 28 32 2c 3a 29 2c 27 ld.on;....plot(XX(1,:),XX(2,:),'
8d00 72 2b 27 29 3b 0a 20 20 20 74 69 74 6c 65 28 27 54 68 65 20 72 65 64 20 63 72 6f 73 73 65 73 20 r+');....title('The.red.crosses.
8d20 73 68 6f 75 6c 64 20 62 65 20 63 6c 6f 73 65 20 74 6f 20 74 68 65 20 69 6d 61 67 65 20 63 6f 72 should.be.close.to.the.image.cor
8d40 6e 65 72 73 27 29 3b 0a 20 20 20 68 6f 6c 64 20 6f 66 66 3b 0a 20 20 20 0a 20 20 20 64 69 73 70 ners');....hold.off;........disp
8d60 28 27 49 66 20 74 68 65 20 67 75 65 73 73 65 64 20 67 72 69 64 20 63 6f 72 6e 65 72 73 20 28 72 ('If.the.guessed.grid.corners.(r
8d80 65 64 20 63 72 6f 73 73 65 73 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 29 20 61 72 65 20 6e 6f 74 ed.crosses.on.the.image).are.not
8da0 20 63 6c 6f 73 65 20 74 6f 20 74 68 65 20 61 63 74 75 61 6c 20 63 6f 72 6e 65 72 73 2c 27 29 3b .close.to.the.actual.corners,');
8dc0 0a 20 20 20 64 69 73 70 28 27 69 74 20 69 73 20 6e 65 63 65 73 73 61 72 79 20 74 6f 20 65 6e 74 ....disp('it.is.necessary.to.ent
8de0 65 72 20 61 6e 20 69 6e 69 74 69 61 6c 20 67 75 65 73 73 20 66 6f 72 20 74 68 65 20 72 61 64 69 er.an.initial.guess.for.the.radi
8e00 61 6c 20 64 69 73 74 6f 72 74 69 6f 6e 20 66 61 63 74 6f 72 20 6b 63 20 28 75 73 65 66 75 6c 20 al.distortion.factor.kc.(useful.
8e20 66 6f 72 20 73 75 62 70 69 78 65 6c 20 64 65 74 65 63 74 69 6f 6e 29 27 29 3b 0a 20 20 20 71 75 for.subpixel.detection)');....qu
8e40 65 73 74 5f 64 69 73 74 6f 72 74 20 3d 20 69 6e 70 75 74 28 27 4e 65 65 64 20 6f 66 20 61 6e 20 est_distort.=.input('Need.of.an.
8e60 69 6e 69 74 69 61 6c 20 67 75 65 73 73 20 66 6f 72 20 64 69 73 74 6f 72 74 69 6f 6e 3f 20 28 5b initial.guess.for.distortion?.([
8e80 5d 3d 6e 6f 2c 20 6f 74 68 65 72 3d 79 65 73 29 20 27 29 3b 0a 20 20 0a 20 20 20 71 75 65 73 74 ]=no,.other=yes).');.......quest
8ea0 5f 64 69 73 74 6f 72 74 20 3d 20 7e 69 73 65 6d 70 74 79 28 71 75 65 73 74 5f 64 69 73 74 6f 72 _distort.=.~isempty(quest_distor
8ec0 74 29 3b 0a 20 20 20 0a 20 20 20 69 66 20 71 75 65 73 74 5f 64 69 73 74 6f 72 74 2c 0a 20 20 20 t);........if.quest_distort,....
8ee0 20 20 20 25 20 45 73 74 69 6d 61 74 69 6f 6e 20 6f 66 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 3a ...%.Estimation.of.focal.length:
8f00 0a 20 20 20 20 20 20 63 5f 67 20 3d 20 5b 73 69 7a 65 28 49 2c 32 29 3b 73 69 7a 65 28 49 2c 31 .......c_g.=.[size(I,2);size(I,1
8f20 29 5d 2f 32 20 2b 20 2e 35 3b 0a 09 09 66 5f 67 20 3d 20 44 69 73 74 6f 72 32 43 61 6c 69 62 28 )]/2.+..5;...f_g.=.Distor2Calib(
8f40 30 2c 5b 5b 78 28 31 29 20 78 28 32 29 20 78 28 34 29 20 78 28 33 29 5d 20 2d 20 63 5f 67 28 31 0,[[x(1).x(2).x(4).x(3)].-.c_g(1
8f60 29 3b 5b 79 28 31 29 20 79 28 32 29 20 79 28 34 29 20 79 28 33 29 5d 20 2d 20 63 5f 67 28 32 29 );[y(1).y(2).y(4).y(3)].-.c_g(2)
8f80 5d 2c 31 2c 31 2c 34 2c 57 2c 4c 2c 5b 2d 57 2f 32 20 57 2f 32 20 57 2f 32 20 2d 57 2f 32 3b 4c ],1,1,4,W,L,[-W/2.W/2.W/2.-W/2;L
8fa0 2f 32 20 4c 2f 32 20 2d 4c 2f 32 20 2d 4c 2f 32 3b 20 30 20 30 20 30 20 30 5d 2c 31 30 30 2c 31 /2.L/2.-L/2.-L/2;.0.0.0.0],100,1
8fc0 2c 31 29 3b 0a 20 20 20 20 20 20 66 5f 67 20 3d 20 6d 65 61 6e 28 66 5f 67 29 3b 0a 20 20 20 20 ,1);.......f_g.=.mean(f_g);.....
8fe0 20 20 73 63 72 69 70 74 5f 66 69 74 5f 64 69 73 74 6f 72 74 69 6f 6e 3b 0a 20 20 20 65 6e 64 3b ..script_fit_distortion;....end;
9000 0a 20 20 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 45 4e 44 20 41 44 ....%%%%%%%%%%%%%%%%%%%%%.END.AD
9020 44 49 54 49 4f 4e 41 4c 20 53 54 55 46 46 20 49 4e 20 54 48 45 20 43 41 53 45 20 4f 46 20 48 49 DITIONAL.STUFF.IN.THE.CASE.OF.HI
9040 47 48 4c 59 20 44 49 53 54 4f 52 54 45 44 20 49 4d 41 47 45 53 20 25 25 25 25 25 25 25 25 25 25 GHLY.DISTORTED.IMAGES.%%%%%%%%%%
9060 25 25 25 0a 20 20 20 65 6e 64 3b 20 20 20 0a 20 20 20 0a 20 20 20 0a 20 20 20 4e 70 20 3d 20 28 %%%....end;...............Np.=.(
9080 6e 5f 73 71 5f 78 2b 31 29 2a 28 6e 5f 73 71 5f 79 2b 31 29 3b 0a 0a 20 20 20 64 69 73 70 28 27 n_sq_x+1)*(n_sq_y+1);.....disp('
90a0 43 6f 72 6e 65 72 20 65 78 74 72 61 63 74 69 6f 6e 2e 2e 2e 27 29 3b 0a 20 20 20 0a 20 20 20 67 Corner.extraction...');........g
90c0 72 69 64 5f 70 74 73 20 3d 20 63 6f 72 6e 65 72 66 69 6e 64 65 72 28 58 58 2c 49 2c 77 69 6e 74 rid_pts.=.cornerfinder(XX,I,wint
90e0 79 2c 77 69 6e 74 78 29 3b 20 25 25 25 20 46 69 6e 64 73 20 74 68 65 20 65 78 61 63 74 20 63 6f y,wintx);.%%%.Finds.the.exact.co
9100 72 6e 65 72 73 20 61 74 20 65 76 65 72 79 20 70 6f 69 6e 74 73 21 0a 20 20 20 0a 20 20 20 25 73 rners.at.every.points!........%s
9120 61 76 65 20 61 6c 6c 5f 63 6f 72 6e 65 72 73 20 78 20 79 20 67 72 69 64 5f 70 74 73 0a 20 20 20 ave.all_corners.x.y.grid_pts....
9140 0a 20 20 20 67 72 69 64 5f 70 74 73 20 3d 20 67 72 69 64 5f 70 74 73 20 2d 20 31 3b 20 25 20 73 ....grid_pts.=.grid_pts.-.1;.%.s
9160 75 62 74 72 61 63 74 20 31 20 74 6f 20 62 72 69 6e 67 20 74 68 65 20 6f 72 69 67 69 6e 20 74 6f ubtract.1.to.bring.the.origin.to
9180 20 28 30 2c 30 29 20 69 6e 73 74 65 61 64 20 6f 66 20 28 31 2c 31 29 20 69 6e 20 6d 61 74 6c 61 .(0,0).instead.of.(1,1).in.matla
91a0 62 20 28 6e 6f 74 20 6e 65 63 65 73 73 61 72 79 20 69 6e 20 43 29 0a 20 20 20 0a 20 20 20 0a 20 b.(not.necessary.in.C)..........
91c0 20 20 25 20 47 6c 6f 62 61 6c 20 48 6f 6d 6f 67 72 61 70 68 79 20 66 72 6f 6d 20 70 6c 61 6e 65 ..%.Global.Homography.from.plane
91e0 20 74 6f 20 70 69 78 65 6c 20 63 6f 6f 72 64 69 6e 61 74 65 73 3a 0a 20 20 20 0a 20 20 20 48 5f .to.pixel.coordinates:........H_
9200 74 6f 74 61 6c 20 3d 20 5b 31 20 30 20 2d 31 20 3b 20 30 20 31 20 2d 31 20 3b 20 30 20 30 20 31 total.=.[1.0.-1.;.0.1.-1.;.0.0.1
9220 5d 2a 48 6f 6d 6f 2a 5b 31 20 30 20 30 3b 30 20 2d 31 20 31 3b 30 20 30 20 31 5d 2a 5b 31 2f 57 ]*Homo*[1.0.0;0.-1.1;0.0.1]*[1/W
9240 20 30 20 30 20 3b 20 30 20 31 2f 4c 20 30 3b 20 30 20 30 20 31 5d 3b 0a 20 20 20 25 20 57 41 52 .0.0.;.0.1/L.0;.0.0.1];....%.WAR
9260 4e 49 4e 47 21 21 21 20 74 68 65 20 66 69 72 73 74 20 6d 61 74 72 69 78 20 28 6f 6e 20 74 68 65 NING!!!.the.first.matrix.(on.the
9280 20 6c 65 66 74 20 73 69 64 65 29 20 74 61 6b 65 73 20 63 61 72 65 20 6f 66 20 74 68 65 20 74 72 .left.side).takes.care.of.the.tr
92a0 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 70 69 78 65 6c 20 63 6f 6f 72 65 64 ansformation.of.the.pixel.coored
92c0 69 6e 61 74 65 73 20 62 79 20 2d 31 20 28 70 72 65 76 69 6f 75 73 20 6c 69 6e 65 29 0a 20 20 20 inates.by.-1.(previous.line)....
92e0 25 20 49 66 20 69 74 20 69 73 20 6e 6f 74 20 64 6f 6e 65 2c 20 74 68 65 6e 20 74 68 69 73 20 6d %.If.it.is.not.done,.then.this.m
9300 61 74 72 69 78 20 73 68 6f 75 6c 64 20 6e 6f 74 20 61 70 70 65 61 72 20 28 69 6e 20 43 29 0a 20 atrix.should.not.appear.(in.C)..
9320 20 20 48 5f 74 6f 74 61 6c 20 3d 20 48 5f 74 6f 74 61 6c 20 2f 20 48 5f 74 6f 74 61 6c 28 33 2c ..H_total.=.H_total./.H_total(3,
9340 33 29 3b 20 20 20 0a 20 20 20 0a 20 20 20 0a 20 20 20 69 6e 64 5f 63 6f 72 6e 65 72 73 20 3d 20 3);...............ind_corners.=.
9360 5b 31 20 6e 5f 73 71 5f 78 2b 31 20 28 6e 5f 73 71 5f 78 2b 31 29 2a 6e 5f 73 71 5f 79 2b 31 20 [1.n_sq_x+1.(n_sq_x+1)*n_sq_y+1.
9380 28 6e 5f 73 71 5f 78 2b 31 29 2a 28 6e 5f 73 71 5f 79 2b 31 29 5d 3b 20 25 20 69 6e 64 65 78 20 (n_sq_x+1)*(n_sq_y+1)];.%.index.
93a0 6f 66 20 74 68 65 20 34 20 63 6f 72 6e 65 72 73 0a 20 20 20 69 6e 64 5f 6f 72 69 67 20 3d 20 28 of.the.4.corners....ind_orig.=.(
93c0 6e 5f 73 71 5f 78 2b 31 29 2a 6e 5f 73 71 5f 79 20 2b 20 31 3b 0a 20 20 20 78 6f 72 69 67 20 3d n_sq_x+1)*n_sq_y.+.1;....xorig.=
93e0 20 67 72 69 64 5f 70 74 73 28 31 2c 69 6e 64 5f 6f 72 69 67 29 3b 0a 20 20 20 79 6f 72 69 67 20 .grid_pts(1,ind_orig);....yorig.
9400 3d 20 67 72 69 64 5f 70 74 73 28 32 2c 69 6e 64 5f 6f 72 69 67 29 3b 0a 20 20 20 64 78 70 6f 73 =.grid_pts(2,ind_orig);....dxpos
9420 20 3d 20 6d 65 61 6e 28 5b 67 72 69 64 5f 70 74 73 28 3a 2c 69 6e 64 5f 6f 72 69 67 29 20 67 72 .=.mean([grid_pts(:,ind_orig).gr
9440 69 64 5f 70 74 73 28 3a 2c 69 6e 64 5f 6f 72 69 67 2b 31 29 5d 27 29 3b 0a 20 20 20 64 79 70 6f id_pts(:,ind_orig+1)]');....dypo
9460 73 20 3d 20 6d 65 61 6e 28 5b 67 72 69 64 5f 70 74 73 28 3a 2c 69 6e 64 5f 6f 72 69 67 29 20 67 s.=.mean([grid_pts(:,ind_orig).g
9480 72 69 64 5f 70 74 73 28 3a 2c 69 6e 64 5f 6f 72 69 67 2d 6e 5f 73 71 5f 78 2d 31 29 5d 27 29 3b rid_pts(:,ind_orig-n_sq_x-1)]');
94a0 0a 20 20 20 0a 20 20 20 0a 20 20 20 78 5f 62 6f 78 5f 6b 6b 20 3d 20 5b 67 72 69 64 5f 70 74 73 ............x_box_kk.=.[grid_pts
94c0 28 31 2c 3a 29 2d 28 77 69 6e 74 78 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2b 28 (1,:)-(wintx+.5);grid_pts(1,:)+(
94e0 77 69 6e 74 78 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2b 28 77 69 6e 74 78 2b 2e wintx+.5);grid_pts(1,:)+(wintx+.
9500 35 29 3b 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2d 28 77 69 6e 74 78 2b 2e 35 29 3b 67 72 69 64 5);grid_pts(1,:)-(wintx+.5);grid
9520 5f 70 74 73 28 31 2c 3a 29 2d 28 77 69 6e 74 78 2b 2e 35 29 5d 3b 0a 20 20 20 79 5f 62 6f 78 5f _pts(1,:)-(wintx+.5)];....y_box_
9540 6b 6b 20 3d 20 5b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2d 28 77 69 6e 74 79 2b 2e 35 29 3b 67 kk.=.[grid_pts(2,:)-(winty+.5);g
9560 72 69 64 5f 70 74 73 28 32 2c 3a 29 2d 28 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 rid_pts(2,:)-(winty+.5);grid_pts
9580 28 32 2c 3a 29 2b 28 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2b 28 (2,:)+(winty+.5);grid_pts(2,:)+(
95a0 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2d 28 77 69 6e 74 79 2b 2e winty+.5);grid_pts(2,:)-(winty+.
95c0 35 29 5d 3b 0a 0a 20 20 20 0a 20 20 20 66 69 67 75 72 65 28 33 29 3b 0a 20 20 20 69 6d 61 67 65 5)];.........figure(3);....image
95e0 28 49 29 3b 20 63 6f 6c 6f 72 6d 61 70 28 6d 61 70 29 3b 20 68 6f 6c 64 20 6f 6e 3b 0a 20 20 20 (I);.colormap(map);.hold.on;....
9600 70 6c 6f 74 28 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2b 31 2c 67 72 69 64 5f 70 74 73 28 32 2c plot(grid_pts(1,:)+1,grid_pts(2,
9620 3a 29 2b 31 2c 27 72 2b 27 29 3b 0a 20 20 20 70 6c 6f 74 28 78 5f 62 6f 78 5f 6b 6b 2b 31 2c 79 :)+1,'r+');....plot(x_box_kk+1,y
9640 5f 62 6f 78 5f 6b 6b 2b 31 2c 27 2d 62 27 29 3b 0a 20 20 20 70 6c 6f 74 28 67 72 69 64 5f 70 74 _box_kk+1,'-b');....plot(grid_pt
9660 73 28 31 2c 69 6e 64 5f 63 6f 72 6e 65 72 73 29 2b 31 2c 67 72 69 64 5f 70 74 73 28 32 2c 69 6e s(1,ind_corners)+1,grid_pts(2,in
9680 64 5f 63 6f 72 6e 65 72 73 29 2b 31 2c 27 6d 6f 27 29 3b 0a 20 20 20 70 6c 6f 74 28 78 6f 72 69 d_corners)+1,'mo');....plot(xori
96a0 67 2b 31 2c 79 6f 72 69 67 2b 31 2c 27 2a 6d 27 29 3b 0a 20 20 20 68 20 3d 20 74 65 78 74 28 78 g+1,yorig+1,'*m');....h.=.text(x
96c0 6f 72 69 67 2d 31 35 2c 79 6f 72 69 67 2d 31 35 2c 27 4f 27 29 3b 0a 20 20 20 73 65 74 28 68 2c orig-15,yorig-15,'O');....set(h,
96e0 27 43 6f 6c 6f 72 27 2c 27 6d 27 2c 27 46 6f 6e 74 53 69 7a 65 27 2c 31 34 29 3b 0a 20 20 20 68 'Color','m','FontSize',14);....h
9700 32 20 3d 20 74 65 78 74 28 64 78 70 6f 73 28 31 29 2d 31 30 2c 64 78 70 6f 73 28 32 29 2d 31 30 2.=.text(dxpos(1)-10,dxpos(2)-10
9720 2c 27 64 58 27 29 3b 0a 20 20 20 73 65 74 28 68 32 2c 27 43 6f 6c 6f 72 27 2c 27 67 27 2c 27 46 ,'dX');....set(h2,'Color','g','F
9740 6f 6e 74 53 69 7a 65 27 2c 31 34 29 3b 0a 20 20 20 68 33 20 3d 20 74 65 78 74 28 64 79 70 6f 73 ontSize',14);....h3.=.text(dypos
9760 28 31 29 2d 32 35 2c 64 79 70 6f 73 28 32 29 2d 33 2c 27 64 59 27 29 3b 0a 20 20 20 73 65 74 28 (1)-25,dypos(2)-3,'dY');....set(
9780 68 33 2c 27 43 6f 6c 6f 72 27 2c 27 67 27 2c 27 46 6f 6e 74 53 69 7a 65 27 2c 31 34 29 3b 0a 20 h3,'Color','g','FontSize',14);..
97a0 20 20 78 6c 61 62 65 6c 28 27 58 63 20 28 69 6e 20 63 61 6d 65 72 61 20 66 72 61 6d 65 29 27 29 ..xlabel('Xc.(in.camera.frame)')
97c0 3b 0a 20 20 20 79 6c 61 62 65 6c 28 27 59 63 20 28 69 6e 20 63 61 6d 65 72 61 20 66 72 61 6d 65 ;....ylabel('Yc.(in.camera.frame
97e0 29 27 29 3b 0a 20 20 20 74 69 74 6c 65 28 27 45 78 74 72 61 63 74 65 64 20 63 6f 72 6e 65 72 73 )');....title('Extracted.corners
9800 27 29 3b 0a 20 20 20 7a 6f 6f 6d 20 6f 6e 3b 0a 20 20 20 64 72 61 77 6e 6f 77 3b 0a 20 20 20 68 ');....zoom.on;....drawnow;....h
9820 6f 6c 64 20 6f 66 66 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 58 69 20 3d 20 72 65 73 68 61 70 65 old.off;............Xi.=.reshape
9840 28 28 5b 30 3a 6e 5f 73 71 5f 78 5d 2a 64 58 29 27 2a 6f 6e 65 73 28 31 2c 6e 5f 73 71 5f 79 2b (([0:n_sq_x]*dX)'*ones(1,n_sq_y+
9860 31 29 2c 4e 70 2c 31 29 27 3b 0a 20 20 20 59 69 20 3d 20 72 65 73 68 61 70 65 28 6f 6e 65 73 28 1),Np,1)';....Yi.=.reshape(ones(
9880 6e 5f 73 71 5f 78 2b 31 2c 31 29 2a 5b 6e 5f 73 71 5f 79 3a 2d 31 3a 30 5d 2a 64 59 2c 4e 70 2c n_sq_x+1,1)*[n_sq_y:-1:0]*dY,Np,
98a0 31 29 27 3b 0a 20 20 20 5a 69 20 3d 20 7a 65 72 6f 73 28 31 2c 4e 70 29 3b 0a 20 20 20 0a 20 20 1)';....Zi.=.zeros(1,Np);.......
98c0 20 58 67 72 69 64 20 3d 20 5b 58 69 3b 59 69 3b 5a 69 5d 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 .Xgrid.=.[Xi;Yi;Zi];............
98e0 25 20 41 6c 6c 20 74 68 65 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 28 6f 6e 20 %.All.the.point.coordinates.(on.
9900 74 68 65 20 69 6d 61 67 65 2c 20 61 6e 64 20 69 6e 20 33 44 29 20 2d 20 66 6f 72 20 67 6c 6f 62 the.image,.and.in.3D).-.for.glob
9920 61 6c 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 3a 0a 0a 20 20 20 78 20 3d 20 67 72 69 64 5f 70 74 al.optimization:.....x.=.grid_pt
9940 73 3b 0a 20 20 20 58 20 3d 20 58 67 72 69 64 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 20 54 68 s;....X.=.Xgrid;............%.Th
9960 65 20 6c 65 66 74 20 70 61 6e 6e 65 6c 20 69 6e 66 6f 3a 0a 20 20 20 0a 20 20 20 78 6c 20 3d 20 e.left.pannel.info:........xl.=.
9980 78 3b 0a 20 20 20 58 6c 20 3d 20 58 3b 0a 20 20 20 6e 6c 5f 73 71 5f 78 20 3d 20 6e 5f 73 71 5f x;....Xl.=.X;....nl_sq_x.=.n_sq_
99a0 78 3b 0a 20 20 20 6e 6c 5f 73 71 5f 79 20 3d 20 6e 5f 73 71 5f 79 3b 0a 20 20 20 48 6c 20 3d 20 x;....nl_sq_y.=.n_sq_y;....Hl.=.
99c0 48 5f 74 6f 74 61 6c 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 0a 20 20 20 0a 20 20 20 0a 20 20 20 H_total;........................
99e0 0a 20 20 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 52 49 ....%%%%%%%%%%%%%%%%%%%%%%%%%.RI
9a00 47 48 54 20 50 41 54 54 45 52 4e 20 41 43 51 55 49 53 49 54 49 4f 4e 20 25 25 25 25 25 25 25 25 GHT.PATTERN.ACQUISITION.%%%%%%%%
9a20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 0a 20 20 20 0a 20 20 0a 20 20 20 %%%%%%%%%%%%%%%%%%%%%...........
9a40 78 31 20 3d 20 61 31 30 28 31 29 2f 61 31 30 28 33 29 3b 0a 20 20 20 78 34 20 3d 20 61 31 31 28 x1.=.a10(1)/a10(3);....x4.=.a11(
9a60 31 29 2f 61 31 31 28 33 29 3b 0a 20 20 20 0a 20 20 20 79 31 20 3d 20 61 31 30 28 32 29 2f 61 31 1)/a11(3);........y1.=.a10(2)/a1
9a80 30 28 33 29 3b 0a 20 20 20 79 34 20 3d 20 61 31 31 28 32 29 2f 61 31 31 28 33 29 3b 0a 20 20 20 0(3);....y4.=.a11(2)/a11(3);....
9aa0 0a 0a 20 20 66 69 67 75 72 65 28 32 29 3b 0a 20 20 68 6f 6c 64 20 6f 6e 3b 0a 20 20 70 6c 6f 74 ....figure(2);...hold.on;...plot
9ac0 28 5b 78 31 20 78 34 5d 2c 5b 79 31 20 79 34 5d 2c 27 63 2d 27 29 3b 0a 20 20 70 6c 6f 74 28 5b ([x1.x4],[y1.y4],'c-');...plot([
9ae0 78 31 20 78 34 5d 2c 5b 79 31 20 79 34 5d 2c 27 63 6f 27 29 3b 0a 20 20 68 6f 6c 64 20 6f 66 66 x1.x4],[y1.y4],'co');...hold.off
9b00 3b 0a 0a 20 20 20 74 69 74 6c 65 28 5b 27 43 6c 69 63 6b 20 6f 6e 20 74 68 65 20 74 77 6f 20 72 ;.....title(['Click.on.the.two.r
9b20 65 6d 61 69 6e 69 6e 67 20 65 78 74 72 65 6d 65 20 63 6f 72 6e 65 72 73 20 6f 66 20 74 68 65 20 emaining.extreme.corners.of.the.
9b40 72 69 67 68 74 20 72 65 63 74 61 6e 67 75 6c 61 72 20 70 61 74 74 65 72 6e 2e 2e 2e 20 49 6d 61 right.rectangular.pattern....Ima
9b60 67 65 20 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 5d 29 3b 0a 20 20 20 0a 20 20 20 64 69 73 70 28 ge.'.num2str(kk)]);........disp(
9b80 27 43 6c 69 63 6b 20 6f 6e 20 74 68 65 20 74 77 6f 20 72 65 6d 61 69 6e 69 6e 67 20 65 78 74 72 'Click.on.the.two.remaining.extr
9ba0 65 6d 65 20 63 6f 72 6e 65 72 73 20 6f 66 20 74 68 65 20 72 69 67 68 74 20 72 65 63 74 61 6e 67 eme.corners.of.the.right.rectang
9bc0 75 6c 61 72 20 70 61 74 74 65 72 6e 2e 2e 2e 27 29 3b 0a 20 20 20 0a 20 20 20 5b 78 2c 79 5d 20 ular.pattern...');........[x,y].
9be0 3d 20 67 69 6e 70 75 74 33 28 32 29 3b 0a 20 20 20 0a 20 20 20 5b 58 63 2c 67 6f 6f 64 2c 62 61 =.ginput3(2);........[Xc,good,ba
9c00 64 2c 74 79 70 65 5d 20 3d 20 63 6f 72 6e 65 72 66 69 6e 64 65 72 28 5b 78 27 3b 79 27 5d 2c 49 d,type].=.cornerfinder([x';y'],I
9c20 2c 77 69 6e 74 79 2c 77 69 6e 74 78 29 3b 20 25 20 74 68 65 20 66 6f 75 72 20 63 6f 72 6e 65 72 ,winty,wintx);.%.the.four.corner
9c40 73 0a 20 20 20 0a 20 20 20 78 20 3d 20 58 63 28 31 2c 3a 29 27 3b 0a 20 20 20 79 20 3d 20 58 63 s........x.=.Xc(1,:)';....y.=.Xc
9c60 28 32 2c 3a 29 27 3b 0a 20 20 20 0a 20 20 20 5b 79 2c 69 6e 64 79 5d 20 3d 20 73 6f 72 74 28 79 (2,:)';........[y,indy].=.sort(y
9c80 29 3b 0a 20 20 20 78 20 3d 20 78 28 69 6e 64 79 29 3b 0a 20 20 20 0a 20 20 20 78 32 20 3d 20 78 );....x.=.x(indy);........x2.=.x
9ca0 28 32 29 3b 0a 20 20 20 78 33 20 3d 20 78 28 31 29 3b 0a 20 20 20 0a 20 20 20 79 32 20 3d 20 79 (2);....x3.=.x(1);........y2.=.y
9cc0 28 32 29 3b 0a 20 20 20 79 33 20 3d 20 79 28 31 29 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 78 20 (2);....y3.=.y(1);............x.
9ce0 3d 20 5b 78 31 3b 78 32 3b 78 33 3b 78 34 5d 3b 0a 20 20 20 79 20 3d 20 5b 79 31 3b 79 32 3b 79 =.[x1;x2;x3;x4];....y.=.[y1;y2;y
9d00 33 3b 79 34 5d 3b 0a 20 20 20 0a 20 20 20 66 69 67 75 72 65 28 32 29 3b 20 68 6f 6c 64 20 6f 6e 3;y4];........figure(2);.hold.on
9d20 3b 0a 20 20 20 70 6c 6f 74 28 5b 78 3b 78 28 31 29 5d 2c 5b 79 3b 79 28 31 29 5d 2c 27 63 2d 27 ;....plot([x;x(1)],[y;y(1)],'c-'
9d40 29 3b 0a 20 20 20 70 6c 6f 74 28 78 2c 79 2c 27 6f 63 27 29 3b 0a 20 20 20 68 78 3d 74 65 78 74 );....plot(x,y,'oc');....hx=text
9d60 28 28 78 28 34 29 2b 78 28 33 29 29 2f 32 2c 28 79 28 34 29 2b 79 28 33 29 29 2f 32 20 2d 20 32 ((x(4)+x(3))/2,(y(4)+y(3))/2.-.2
9d80 30 2c 27 58 27 29 3b 0a 20 20 20 73 65 74 28 68 78 2c 27 63 6f 6c 6f 72 27 2c 27 63 27 2c 27 46 0,'X');....set(hx,'color','c','F
9da0 6f 6e 74 73 69 7a 65 27 2c 31 34 29 3b 0a 20 20 20 68 79 3d 74 65 78 74 28 28 78 28 34 29 2b 78 ontsize',14);....hy=text((x(4)+x
9dc0 28 31 29 29 2f 32 2d 32 30 2c 28 79 28 34 29 2b 79 28 31 29 29 2f 32 2c 27 59 27 29 3b 0a 20 20 (1))/2-20,(y(4)+y(1))/2,'Y');...
9de0 20 73 65 74 28 68 79 2c 27 63 6f 6c 6f 72 27 2c 27 63 27 2c 27 46 6f 6e 74 73 69 7a 65 27 2c 31 .set(hy,'color','c','Fontsize',1
9e00 34 29 3b 0a 20 20 20 68 6f 6c 64 20 6f 66 66 3b 0a 20 20 20 64 72 61 77 6e 6f 77 3b 0a 20 20 20 4);....hold.off;....drawnow;....
9e20 0a 20 20 20 0a 20 20 20 25 20 54 72 79 20 74 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 63 ........%.Try.to.automatically.c
9e40 6f 75 6e 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 71 75 61 72 65 73 20 69 6e 20 74 68 ount.the.number.of.squares.in.th
9e60 65 20 67 72 69 64 0a 20 20 20 0a 20 20 20 6e 5f 73 71 5f 78 31 20 3d 20 63 6f 75 6e 74 5f 73 71 e.grid........n_sq_x1.=.count_sq
9e80 75 61 72 65 73 28 49 2c 78 31 2c 79 31 2c 78 32 2c 79 32 2c 77 69 6e 74 78 29 3b 0a 20 20 20 6e uares(I,x1,y1,x2,y2,wintx);....n
9ea0 5f 73 71 5f 78 32 20 3d 20 63 6f 75 6e 74 5f 73 71 75 61 72 65 73 28 49 2c 78 33 2c 79 33 2c 78 _sq_x2.=.count_squares(I,x3,y3,x
9ec0 34 2c 79 34 2c 77 69 6e 74 78 29 3b 0a 20 20 20 6e 5f 73 71 5f 79 31 20 3d 20 63 6f 75 6e 74 5f 4,y4,wintx);....n_sq_y1.=.count_
9ee0 73 71 75 61 72 65 73 28 49 2c 78 32 2c 79 32 2c 78 33 2c 79 33 2c 77 69 6e 74 78 29 3b 0a 20 20 squares(I,x2,y2,x3,y3,wintx);...
9f00 20 6e 5f 73 71 5f 79 32 20 3d 20 63 6f 75 6e 74 5f 73 71 75 61 72 65 73 28 49 2c 78 34 2c 79 34 .n_sq_y2.=.count_squares(I,x4,y4
9f20 2c 78 31 2c 79 31 2c 77 69 6e 74 78 29 3b 0a 20 20 20 0a 20 20 0a 20 20 20 0a 20 20 20 25 20 49 ,x1,y1,wintx);...............%.I
9f40 66 20 63 6f 75 6c 64 20 6e 6f 74 20 63 6f 75 6e 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 f.could.not.count.the.number.of.
9f60 73 71 75 61 72 65 73 2c 20 65 6e 74 65 72 20 6d 61 6e 75 61 6c 6c 79 0a 20 20 20 0a 20 20 20 69 squares,.enter.manually........i
9f80 66 20 28 6e 5f 73 71 5f 78 31 7e 3d 6e 5f 73 71 5f 78 32 29 7c 28 6e 5f 73 71 5f 79 31 7e 3d 6e f.(n_sq_x1~=n_sq_x2)|(n_sq_y1~=n
9fa0 5f 73 71 5f 79 32 29 2c 0a 20 20 20 20 20 20 0a 0a 09 20 64 69 73 70 28 27 43 6f 75 6c 64 20 6e _sq_y2),...........disp('Could.n
9fc0 6f 74 20 63 6f 75 6e 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 71 75 61 72 65 73 20 69 ot.count.the.number.of.squares.i
9fe0 6e 20 74 68 65 20 67 72 69 64 2e 20 45 6e 74 65 72 20 6d 61 6e 75 61 6c 6c 79 2e 27 29 3b 0a 09 n.the.grid..Enter.manually.');..
a000 20 6e 5f 73 71 5f 78 20 3d 20 69 6e 70 75 74 28 27 4e 75 6d 62 65 72 20 6f 66 20 73 71 75 61 72 .n_sq_x.=.input('Number.of.squar
a020 65 73 20 61 6c 6f 6e 67 20 74 68 65 20 58 20 64 69 72 65 63 74 69 6f 6e 20 28 5b 5d 3d 31 30 29 es.along.the.X.direction.([]=10)
a040 20 3d 20 27 29 3b 20 25 36 0a 09 20 69 66 20 69 73 65 6d 70 74 79 28 6e 5f 73 71 5f 78 29 2c 20 .=.');.%6...if.isempty(n_sq_x),.
a060 6e 5f 73 71 5f 78 20 3d 20 31 30 3b 20 65 6e 64 3b 0a 09 20 6e 5f 73 71 5f 79 20 3d 20 69 6e 70 n_sq_x.=.10;.end;...n_sq_y.=.inp
a080 75 74 28 27 4e 75 6d 62 65 72 20 6f 66 20 73 71 75 61 72 65 73 20 61 6c 6f 6e 67 20 74 68 65 20 ut('Number.of.squares.along.the.
a0a0 59 20 64 69 72 65 63 74 69 6f 6e 20 28 5b 5d 3d 31 30 29 20 3d 20 27 29 3b 20 25 36 0a 09 20 69 Y.direction.([]=10).=.');.%6...i
a0c0 66 20 69 73 65 6d 70 74 79 28 6e 5f 73 71 5f 79 29 2c 20 6e 5f 73 71 5f 79 20 3d 20 31 30 3b 20 f.isempty(n_sq_y),.n_sq_y.=.10;.
a0e0 65 6e 64 3b 20 0a 20 20 20 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 end;.........else...............
a100 20 0a 20 20 20 20 20 20 6e 5f 73 71 5f 78 20 3d 20 6e 5f 73 71 5f 78 31 3b 0a 20 20 20 20 20 20 ........n_sq_x.=.n_sq_x1;.......
a120 6e 5f 73 71 5f 79 20 3d 20 6e 5f 73 71 5f 79 31 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b n_sq_y.=.n_sq_y1;...........end;
a140 0a 20 20 20 0a 20 20 20 0a 20 20 20 69 66 20 31 2c 0a 20 20 20 09 25 20 45 6e 74 65 72 20 74 68 ............if.1,.....%.Enter.th
a160 65 20 73 69 7a 65 20 6f 66 20 65 61 63 68 20 73 71 75 61 72 65 0a 20 20 20 0a 20 20 20 09 64 58 e.size.of.each.square.........dX
a180 20 3d 20 69 6e 70 75 74 28 5b 27 53 69 7a 65 20 64 58 20 6f 66 20 65 61 63 68 20 73 71 75 61 72 .=.input(['Size.dX.of.each.squar
a1a0 65 20 61 6c 6f 6e 67 20 74 68 65 20 58 20 64 69 72 65 63 74 69 6f 6e 20 28 5b 5d 3d 27 20 6e 75 e.along.the.X.direction.([]='.nu
a1c0 6d 32 73 74 72 28 64 58 5f 64 65 66 61 75 6c 74 29 20 27 63 6d 29 20 3d 20 27 5d 29 3b 0a 20 20 m2str(dX_default).'cm).=.']);...
a1e0 09 09 64 59 20 3d 20 69 6e 70 75 74 28 5b 27 53 69 7a 65 20 64 59 20 6f 66 20 65 61 63 68 20 73 ..dY.=.input(['Size.dY.of.each.s
a200 71 75 61 72 65 20 61 6c 6f 6e 67 20 74 68 65 20 59 20 64 69 72 65 63 74 69 6f 6e 20 28 5b 5d 3d quare.along.the.Y.direction.([]=
a220 27 20 6e 75 6d 32 73 74 72 28 64 59 5f 64 65 66 61 75 6c 74 29 20 27 63 6d 29 20 3d 20 27 5d 29 '.num2str(dY_default).'cm).=.'])
a240 3b 0a 09 09 69 66 20 69 73 65 6d 70 74 79 28 64 58 29 2c 20 64 58 20 3d 20 64 58 5f 64 65 66 61 ;...if.isempty(dX),.dX.=.dX_defa
a260 75 6c 74 3b 20 65 6c 73 65 20 64 58 5f 64 65 66 61 75 6c 74 20 3d 20 64 58 3b 20 65 6e 64 3b 0a ult;.else.dX_default.=.dX;.end;.
a280 09 09 69 66 20 69 73 65 6d 70 74 79 28 64 59 29 2c 20 64 59 20 3d 20 64 59 5f 64 65 66 61 75 6c ..if.isempty(dY),.dY.=.dY_defaul
a2a0 74 3b 20 65 6c 73 65 20 64 59 5f 64 65 66 61 75 6c 74 20 3d 20 64 59 3b 20 65 6e 64 3b 0a 20 20 t;.else.dY_default.=.dY;.end;...
a2c0 20 20 20 20 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 64 58 20 3d 20 33 ........else..............dX.=.3
a2e0 3b 0a 20 20 20 20 20 20 64 59 20 3d 20 33 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a 20 ;.......dY.=.3;...........end;..
a300 20 20 0a 20 20 20 0a 20 20 20 25 20 43 6f 6d 70 75 74 65 20 74 68 65 20 69 6e 73 69 64 65 20 70 ..........%.Compute.the.inside.p
a320 6f 69 6e 74 73 20 74 68 72 6f 75 67 68 20 63 6f 6d 70 75 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 oints.through.computation.of.the
a340 20 70 6c 61 6e 61 72 20 68 6f 6d 6f 67 72 61 70 68 79 20 28 63 6f 6c 6c 69 6e 65 61 74 69 6f 6e .planar.homography.(collineation
a360 29 0a 20 20 20 0a 09 61 30 30 20 3d 20 5b 78 28 31 29 3b 79 28 31 29 3b 31 5d 3b 0a 09 61 31 30 )......a00.=.[x(1);y(1);1];..a10
a380 20 3d 20 5b 78 28 32 29 3b 79 28 32 29 3b 31 5d 3b 0a 09 61 31 31 20 3d 20 5b 78 28 33 29 3b 79 .=.[x(2);y(2);1];..a11.=.[x(3);y
a3a0 28 33 29 3b 31 5d 3b 0a 09 61 30 31 20 3d 20 5b 78 28 34 29 3b 79 28 34 29 3b 31 5d 3b 0a 0a 0a (3);1];..a01.=.[x(4);y(4);1];...
a3c0 09 25 20 43 6f 6d 70 75 74 65 20 74 68 65 20 70 6c 61 6e 61 72 74 20 63 6f 6c 6c 69 6e 65 61 74 .%.Compute.the.planart.collineat
a3e0 69 6f 6e 3a 20 28 72 65 74 75 72 6e 20 74 68 65 20 6e 6f 72 6d 61 6c 69 7a 61 74 69 6f 6e 20 6d ion:.(return.the.normalization.m
a400 61 74 72 69 63 65 20 61 73 20 77 65 6c 6c 29 0a 0a 09 5b 48 6f 6d 6f 2c 48 6e 6f 72 6d 2c 69 6e atrice.as.well)...[Homo,Hnorm,in
a420 76 5f 48 6e 6f 72 6d 5d 20 3d 20 63 6f 6d 70 75 74 65 5f 63 6f 6c 6c 69 6e 65 61 74 69 6f 6e 20 v_Hnorm].=.compute_collineation.
a440 28 61 30 30 2c 20 61 31 30 2c 20 61 31 31 2c 20 61 30 31 29 3b 0a 0a 0a 09 25 20 42 75 69 6c 64 (a00,.a10,.a11,.a01);....%.Build
a460 20 74 68 65 20 67 72 69 64 20 75 73 69 6e 67 20 74 68 65 20 70 6c 61 6e 61 72 20 63 6f 6c 6c 69 .the.grid.using.the.planar.colli
a480 6e 65 61 74 69 6f 6e 3a 0a 0a 09 78 5f 6c 20 3d 20 28 28 30 3a 6e 5f 73 71 5f 78 29 27 2a 6f 6e neation:...x_l.=.((0:n_sq_x)'*on
a4a0 65 73 28 31 2c 6e 5f 73 71 5f 79 2b 31 29 29 2f 6e 5f 73 71 5f 78 3b 0a 20 20 20 79 5f 6c 20 3d es(1,n_sq_y+1))/n_sq_x;....y_l.=
a4c0 20 28 6f 6e 65 73 28 6e 5f 73 71 5f 78 2b 31 2c 31 29 2a 28 30 3a 6e 5f 73 71 5f 79 29 29 2f 6e .(ones(n_sq_x+1,1)*(0:n_sq_y))/n
a4e0 5f 73 71 5f 79 3b 0a 20 20 20 70 74 73 20 3d 20 5b 78 5f 6c 28 3a 29 20 79 5f 6c 28 3a 29 20 6f _sq_y;....pts.=.[x_l(:).y_l(:).o
a500 6e 65 73 28 28 6e 5f 73 71 5f 78 2b 31 29 2a 28 6e 5f 73 71 5f 79 2b 31 29 2c 31 29 5d 27 3b 0a nes((n_sq_x+1)*(n_sq_y+1),1)]';.
a520 20 20 20 0a 20 20 20 58 58 20 3d 20 48 6f 6d 6f 2a 70 74 73 3b 0a 09 58 58 20 3d 20 58 58 28 31 .......XX.=.Homo*pts;..XX.=.XX(1
a540 3a 32 2c 3a 29 20 2e 2f 20 28 6f 6e 65 73 28 32 2c 31 29 2a 58 58 28 33 2c 3a 29 29 3b 0a 0a 20 :2,:)../.(ones(2,1)*XX(3,:));...
a560 20 20 0a 20 20 20 25 20 43 6f 6d 70 6c 65 74 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 72 65 63 ......%.Complete.size.of.the.rec
a580 74 61 6e 67 6c 65 0a 20 20 20 0a 20 20 20 57 20 3d 20 6e 5f 73 71 5f 78 2a 64 58 3b 0a 20 20 20 tangle........W.=.n_sq_x*dX;....
a5a0 4c 20 3d 20 6e 5f 73 71 5f 79 2a 64 59 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 0a 20 20 20 69 66 L.=.n_sq_y*dY;................if
a5c0 20 31 2c 0a 20 20 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 .1,....%%%%%%%%%%%%%%%%%%%%%%%%.
a5e0 41 44 44 49 54 49 4f 4e 41 4c 20 53 54 55 46 46 20 49 4e 20 54 48 45 20 43 41 53 45 20 4f 46 20 ADDITIONAL.STUFF.IN.THE.CASE.OF.
a600 48 49 47 48 4c 59 20 44 49 53 54 4f 52 54 45 44 20 49 4d 41 47 45 53 20 25 25 25 25 25 25 25 25 HIGHLY.DISTORTED.IMAGES.%%%%%%%%
a620 25 25 25 25 25 0a 20 20 20 66 69 67 75 72 65 28 32 29 3b 0a 20 20 20 68 6f 6c 64 20 6f 6e 3b 0a %%%%%....figure(2);....hold.on;.
a640 20 20 20 70 6c 6f 74 28 58 58 28 31 2c 3a 29 2c 58 58 28 32 2c 3a 29 2c 27 72 2b 27 29 3b 0a 20 ...plot(XX(1,:),XX(2,:),'r+');..
a660 20 20 74 69 74 6c 65 28 27 54 68 65 20 72 65 64 20 63 72 6f 73 73 65 73 20 73 68 6f 75 6c 64 20 ..title('The.red.crosses.should.
a680 62 65 20 63 6c 6f 73 65 20 74 6f 20 74 68 65 20 69 6d 61 67 65 20 63 6f 72 6e 65 72 73 27 29 3b be.close.to.the.image.corners');
a6a0 0a 20 20 20 68 6f 6c 64 20 6f 66 66 3b 0a 20 20 20 0a 20 20 20 64 69 73 70 28 27 49 66 20 74 68 ....hold.off;........disp('If.th
a6c0 65 20 67 75 65 73 73 65 64 20 67 72 69 64 20 63 6f 72 6e 65 72 73 20 28 72 65 64 20 63 72 6f 73 e.guessed.grid.corners.(red.cros
a6e0 73 65 73 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 29 20 61 72 65 20 6e 6f 74 20 63 6c 6f 73 65 20 ses.on.the.image).are.not.close.
a700 74 6f 20 74 68 65 20 61 63 74 75 61 6c 20 63 6f 72 6e 65 72 73 2c 27 29 3b 0a 20 20 20 64 69 73 to.the.actual.corners,');....dis
a720 70 28 27 69 74 20 69 73 20 6e 65 63 65 73 73 61 72 79 20 74 6f 20 65 6e 74 65 72 20 61 6e 20 69 p('it.is.necessary.to.enter.an.i
a740 6e 69 74 69 61 6c 20 67 75 65 73 73 20 66 6f 72 20 74 68 65 20 72 61 64 69 61 6c 20 64 69 73 74 nitial.guess.for.the.radial.dist
a760 6f 72 74 69 6f 6e 20 66 61 63 74 6f 72 20 6b 63 20 28 75 73 65 66 75 6c 20 66 6f 72 20 73 75 62 ortion.factor.kc.(useful.for.sub
a780 70 69 78 65 6c 20 64 65 74 65 63 74 69 6f 6e 29 27 29 3b 0a 20 20 20 71 75 65 73 74 5f 64 69 73 pixel.detection)');....quest_dis
a7a0 74 6f 72 74 20 3d 20 69 6e 70 75 74 28 27 4e 65 65 64 20 6f 66 20 61 6e 20 69 6e 69 74 69 61 6c tort.=.input('Need.of.an.initial
a7c0 20 67 75 65 73 73 20 66 6f 72 20 64 69 73 74 6f 72 74 69 6f 6e 3f 20 28 5b 5d 3d 6e 6f 2c 20 6f .guess.for.distortion?.([]=no,.o
a7e0 74 68 65 72 3d 79 65 73 29 20 27 29 3b 0a 20 20 0a 20 20 20 71 75 65 73 74 5f 64 69 73 74 6f 72 ther=yes).');.......quest_distor
a800 74 20 3d 20 7e 69 73 65 6d 70 74 79 28 71 75 65 73 74 5f 64 69 73 74 6f 72 74 29 3b 0a 20 20 20 t.=.~isempty(quest_distort);....
a820 0a 20 20 20 69 66 20 71 75 65 73 74 5f 64 69 73 74 6f 72 74 2c 0a 20 20 20 20 20 20 25 20 45 73 ....if.quest_distort,.......%.Es
a840 74 69 6d 61 74 69 6f 6e 20 6f 66 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 3a 0a 20 20 20 20 20 20 timation.of.focal.length:.......
a860 63 5f 67 20 3d 20 5b 73 69 7a 65 28 49 2c 32 29 3b 73 69 7a 65 28 49 2c 31 29 5d 2f 32 20 2b 20 c_g.=.[size(I,2);size(I,1)]/2.+.
a880 2e 35 3b 0a 09 09 66 5f 67 20 3d 20 44 69 73 74 6f 72 32 43 61 6c 69 62 28 30 2c 5b 5b 78 28 31 .5;...f_g.=.Distor2Calib(0,[[x(1
a8a0 29 20 78 28 32 29 20 78 28 34 29 20 78 28 33 29 5d 20 2d 20 63 5f 67 28 31 29 3b 5b 79 28 31 29 ).x(2).x(4).x(3)].-.c_g(1);[y(1)
a8c0 20 79 28 32 29 20 79 28 34 29 20 79 28 33 29 5d 20 2d 20 63 5f 67 28 32 29 5d 2c 31 2c 31 2c 34 .y(2).y(4).y(3)].-.c_g(2)],1,1,4
a8e0 2c 57 2c 4c 2c 5b 2d 57 2f 32 20 57 2f 32 20 57 2f 32 20 2d 57 2f 32 3b 4c 2f 32 20 4c 2f 32 20 ,W,L,[-W/2.W/2.W/2.-W/2;L/2.L/2.
a900 2d 4c 2f 32 20 2d 4c 2f 32 3b 20 30 20 30 20 30 20 30 5d 2c 31 30 30 2c 31 2c 31 29 3b 0a 20 20 -L/2.-L/2;.0.0.0.0],100,1,1);...
a920 20 20 20 20 66 5f 67 20 3d 20 6d 65 61 6e 28 66 5f 67 29 3b 0a 20 20 20 20 20 20 73 63 72 69 70 ....f_g.=.mean(f_g);.......scrip
a940 74 5f 66 69 74 5f 64 69 73 74 6f 72 74 69 6f 6e 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 25 25 25 t_fit_distortion;....end;....%%%
a960 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 45 4e 44 20 41 44 44 49 54 49 4f 4e 41 %%%%%%%%%%%%%%%%%%.END.ADDITIONA
a980 4c 20 53 54 55 46 46 20 49 4e 20 54 48 45 20 43 41 53 45 20 4f 46 20 48 49 47 48 4c 59 20 44 49 L.STUFF.IN.THE.CASE.OF.HIGHLY.DI
a9a0 53 54 4f 52 54 45 44 20 49 4d 41 47 45 53 20 25 25 25 25 25 25 25 25 25 25 25 25 25 0a 20 20 20 STORTED.IMAGES.%%%%%%%%%%%%%....
a9c0 65 6e 64 3b 20 20 20 0a 20 20 20 0a 20 20 20 0a 20 20 20 4e 70 20 3d 20 28 6e 5f 73 71 5f 78 2b end;...............Np.=.(n_sq_x+
a9e0 31 29 2a 28 6e 5f 73 71 5f 79 2b 31 29 3b 0a 0a 20 20 20 64 69 73 70 28 27 43 6f 72 6e 65 72 20 1)*(n_sq_y+1);.....disp('Corner.
aa00 65 78 74 72 61 63 74 69 6f 6e 2e 2e 2e 27 29 3b 0a 20 20 20 0a 20 20 20 67 72 69 64 5f 70 74 73 extraction...');........grid_pts
aa20 20 3d 20 63 6f 72 6e 65 72 66 69 6e 64 65 72 28 58 58 2c 49 2c 77 69 6e 74 79 2c 77 69 6e 74 78 .=.cornerfinder(XX,I,winty,wintx
aa40 29 3b 20 25 25 25 20 46 69 6e 64 73 20 74 68 65 20 65 78 61 63 74 20 63 6f 72 6e 65 72 73 20 61 );.%%%.Finds.the.exact.corners.a
aa60 74 20 65 76 65 72 79 20 70 6f 69 6e 74 73 21 0a 20 20 20 0a 20 20 20 25 73 61 76 65 20 61 6c 6c t.every.points!........%save.all
aa80 5f 63 6f 72 6e 65 72 73 20 78 20 79 20 67 72 69 64 5f 70 74 73 0a 20 20 20 0a 20 20 20 67 72 69 _corners.x.y.grid_pts........gri
aaa0 64 5f 70 74 73 20 3d 20 67 72 69 64 5f 70 74 73 20 2d 20 31 3b 20 25 20 73 75 62 74 72 61 63 74 d_pts.=.grid_pts.-.1;.%.subtract
aac0 20 31 20 74 6f 20 62 72 69 6e 67 20 74 68 65 20 6f 72 69 67 69 6e 20 74 6f 20 28 30 2c 30 29 20 .1.to.bring.the.origin.to.(0,0).
aae0 69 6e 73 74 65 61 64 20 6f 66 20 28 31 2c 31 29 20 69 6e 20 6d 61 74 6c 61 62 20 28 6e 6f 74 20 instead.of.(1,1).in.matlab.(not.
ab00 6e 65 63 65 73 73 61 72 79 20 69 6e 20 43 29 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 20 47 6c 6f necessary.in.C)............%.Glo
ab20 62 61 6c 20 48 6f 6d 6f 67 72 61 70 68 79 20 66 72 6f 6d 20 70 6c 61 6e 65 20 74 6f 20 70 69 78 bal.Homography.from.plane.to.pix
ab40 65 6c 20 63 6f 6f 72 64 69 6e 61 74 65 73 3a 0a 20 20 20 0a 20 20 20 48 5f 74 6f 74 61 6c 20 3d el.coordinates:........H_total.=
ab60 20 5b 31 20 30 20 2d 31 20 3b 20 30 20 31 20 2d 31 20 3b 20 30 20 30 20 31 5d 2a 48 6f 6d 6f 2a .[1.0.-1.;.0.1.-1.;.0.0.1]*Homo*
ab80 5b 31 20 30 20 30 3b 30 20 2d 31 20 31 3b 30 20 30 20 31 5d 2a 5b 31 2f 57 20 30 20 30 20 3b 20 [1.0.0;0.-1.1;0.0.1]*[1/W.0.0.;.
aba0 30 20 31 2f 4c 20 30 3b 20 30 20 30 20 31 5d 3b 0a 20 20 20 25 20 57 41 52 4e 49 4e 47 21 21 21 0.1/L.0;.0.0.1];....%.WARNING!!!
abc0 20 74 68 65 20 66 69 72 73 74 20 6d 61 74 72 69 78 20 28 6f 6e 20 74 68 65 20 6c 65 66 74 20 73 .the.first.matrix.(on.the.left.s
abe0 69 64 65 29 20 74 61 6b 65 73 20 63 61 72 65 20 6f 66 20 74 68 65 20 74 72 61 6e 73 66 6f 72 6d ide).takes.care.of.the.transform
ac00 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 70 69 78 65 6c 20 63 6f 6f 72 65 64 69 6e 61 74 65 73 20 ation.of.the.pixel.cooredinates.
ac20 62 79 20 2d 31 20 28 70 72 65 76 69 6f 75 73 20 6c 69 6e 65 29 0a 20 20 20 25 20 49 66 20 69 74 by.-1.(previous.line)....%.If.it
ac40 20 69 73 20 6e 6f 74 20 64 6f 6e 65 2c 20 74 68 65 6e 20 74 68 69 73 20 6d 61 74 72 69 78 20 73 .is.not.done,.then.this.matrix.s
ac60 68 6f 75 6c 64 20 6e 6f 74 20 61 70 70 65 61 72 20 28 69 6e 20 43 29 0a 20 20 20 48 5f 74 6f 74 hould.not.appear.(in.C)....H_tot
ac80 61 6c 20 3d 20 48 5f 74 6f 74 61 6c 20 2f 20 48 5f 74 6f 74 61 6c 28 33 2c 33 29 3b 20 20 20 0a al.=.H_total./.H_total(3,3);....
aca0 20 20 20 0a 20 20 20 0a 20 20 20 69 6e 64 5f 63 6f 72 6e 65 72 73 20 3d 20 5b 31 20 6e 5f 73 71 ...........ind_corners.=.[1.n_sq
acc0 5f 78 2b 31 20 28 6e 5f 73 71 5f 78 2b 31 29 2a 6e 5f 73 71 5f 79 2b 31 20 28 6e 5f 73 71 5f 78 _x+1.(n_sq_x+1)*n_sq_y+1.(n_sq_x
ace0 2b 31 29 2a 28 6e 5f 73 71 5f 79 2b 31 29 5d 3b 20 25 20 69 6e 64 65 78 20 6f 66 20 74 68 65 20 +1)*(n_sq_y+1)];.%.index.of.the.
ad00 34 20 63 6f 72 6e 65 72 73 0a 20 20 20 69 6e 64 5f 6f 72 69 67 20 3d 20 28 6e 5f 73 71 5f 78 2b 4.corners....ind_orig.=.(n_sq_x+
ad20 31 29 2a 6e 5f 73 71 5f 79 20 2b 20 31 3b 0a 20 20 20 78 6f 72 69 67 20 3d 20 67 72 69 64 5f 70 1)*n_sq_y.+.1;....xorig.=.grid_p
ad40 74 73 28 31 2c 69 6e 64 5f 6f 72 69 67 29 3b 0a 20 20 20 79 6f 72 69 67 20 3d 20 67 72 69 64 5f ts(1,ind_orig);....yorig.=.grid_
ad60 70 74 73 28 32 2c 69 6e 64 5f 6f 72 69 67 29 3b 0a 20 20 20 64 78 70 6f 73 20 3d 20 6d 65 61 6e pts(2,ind_orig);....dxpos.=.mean
ad80 28 5b 67 72 69 64 5f 70 74 73 28 3a 2c 69 6e 64 5f 6f 72 69 67 29 20 67 72 69 64 5f 70 74 73 28 ([grid_pts(:,ind_orig).grid_pts(
ada0 3a 2c 69 6e 64 5f 6f 72 69 67 2b 31 29 5d 27 29 3b 0a 20 20 20 64 79 70 6f 73 20 3d 20 6d 65 61 :,ind_orig+1)]');....dypos.=.mea
adc0 6e 28 5b 67 72 69 64 5f 70 74 73 28 3a 2c 69 6e 64 5f 6f 72 69 67 29 20 67 72 69 64 5f 70 74 73 n([grid_pts(:,ind_orig).grid_pts
ade0 28 3a 2c 69 6e 64 5f 6f 72 69 67 2d 6e 5f 73 71 5f 78 2d 31 29 5d 27 29 3b 0a 20 20 20 0a 20 20 (:,ind_orig-n_sq_x-1)]');.......
ae00 20 0a 20 20 20 78 5f 62 6f 78 5f 6b 6b 20 3d 20 5b 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2d 28 .....x_box_kk.=.[grid_pts(1,:)-(
ae20 77 69 6e 74 78 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2b 28 77 69 6e 74 78 2b 2e wintx+.5);grid_pts(1,:)+(wintx+.
ae40 35 29 3b 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2b 28 77 69 6e 74 78 2b 2e 35 29 3b 67 72 69 64 5);grid_pts(1,:)+(wintx+.5);grid
ae60 5f 70 74 73 28 31 2c 3a 29 2d 28 77 69 6e 74 78 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 31 2c _pts(1,:)-(wintx+.5);grid_pts(1,
ae80 3a 29 2d 28 77 69 6e 74 78 2b 2e 35 29 5d 3b 0a 20 20 20 79 5f 62 6f 78 5f 6b 6b 20 3d 20 5b 67 :)-(wintx+.5)];....y_box_kk.=.[g
aea0 72 69 64 5f 70 74 73 28 32 2c 3a 29 2d 28 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 rid_pts(2,:)-(winty+.5);grid_pts
aec0 28 32 2c 3a 29 2d 28 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2b 28 (2,:)-(winty+.5);grid_pts(2,:)+(
aee0 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2b 28 77 69 6e 74 79 2b 2e winty+.5);grid_pts(2,:)+(winty+.
af00 35 29 3b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2d 28 77 69 6e 74 79 2b 2e 35 29 5d 3b 0a 0a 20 5);grid_pts(2,:)-(winty+.5)];...
af20 20 20 0a 20 20 20 66 69 67 75 72 65 28 33 29 3b 0a 20 20 20 68 6f 6c 64 20 6f 6e 3b 0a 20 20 20 ......figure(3);....hold.on;....
af40 70 6c 6f 74 28 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2b 31 2c 67 72 69 64 5f 70 74 73 28 32 2c plot(grid_pts(1,:)+1,grid_pts(2,
af60 3a 29 2b 31 2c 27 72 2b 27 29 3b 0a 20 20 20 70 6c 6f 74 28 78 5f 62 6f 78 5f 6b 6b 2b 31 2c 79 :)+1,'r+');....plot(x_box_kk+1,y
af80 5f 62 6f 78 5f 6b 6b 2b 31 2c 27 2d 62 27 29 3b 0a 20 20 20 70 6c 6f 74 28 67 72 69 64 5f 70 74 _box_kk+1,'-b');....plot(grid_pt
afa0 73 28 31 2c 69 6e 64 5f 63 6f 72 6e 65 72 73 29 2b 31 2c 67 72 69 64 5f 70 74 73 28 32 2c 69 6e s(1,ind_corners)+1,grid_pts(2,in
afc0 64 5f 63 6f 72 6e 65 72 73 29 2b 31 2c 27 6d 6f 27 29 3b 0a 20 20 20 70 6c 6f 74 28 78 6f 72 69 d_corners)+1,'mo');....plot(xori
afe0 67 2b 31 2c 79 6f 72 69 67 2b 31 2c 27 2a 6d 27 29 3b 0a 20 20 20 68 20 3d 20 74 65 78 74 28 78 g+1,yorig+1,'*m');....h.=.text(x
b000 6f 72 69 67 2d 31 35 2c 79 6f 72 69 67 2d 31 35 2c 27 4f 27 29 3b 0a 20 20 20 73 65 74 28 68 2c orig-15,yorig-15,'O');....set(h,
b020 27 43 6f 6c 6f 72 27 2c 27 6d 27 2c 27 46 6f 6e 74 53 69 7a 65 27 2c 31 34 29 3b 0a 20 20 20 68 'Color','m','FontSize',14);....h
b040 32 20 3d 20 74 65 78 74 28 64 78 70 6f 73 28 31 29 2d 31 30 2c 64 78 70 6f 73 28 32 29 2d 31 30 2.=.text(dxpos(1)-10,dxpos(2)-10
b060 2c 27 64 58 27 29 3b 0a 20 20 20 73 65 74 28 68 32 2c 27 43 6f 6c 6f 72 27 2c 27 67 27 2c 27 46 ,'dX');....set(h2,'Color','g','F
b080 6f 6e 74 53 69 7a 65 27 2c 31 34 29 3b 0a 20 20 20 68 33 20 3d 20 74 65 78 74 28 64 79 70 6f 73 ontSize',14);....h3.=.text(dypos
b0a0 28 31 29 2d 32 35 2c 64 79 70 6f 73 28 32 29 2d 33 2c 27 64 59 27 29 3b 0a 20 20 20 73 65 74 28 (1)-25,dypos(2)-3,'dY');....set(
b0c0 68 33 2c 27 43 6f 6c 6f 72 27 2c 27 67 27 2c 27 46 6f 6e 74 53 69 7a 65 27 2c 31 34 29 3b 0a 20 h3,'Color','g','FontSize',14);..
b0e0 20 20 78 6c 61 62 65 6c 28 27 58 63 20 28 69 6e 20 63 61 6d 65 72 61 20 66 72 61 6d 65 29 27 29 ..xlabel('Xc.(in.camera.frame)')
b100 3b 0a 20 20 20 79 6c 61 62 65 6c 28 27 59 63 20 28 69 6e 20 63 61 6d 65 72 61 20 66 72 61 6d 65 ;....ylabel('Yc.(in.camera.frame
b120 29 27 29 3b 0a 20 20 20 74 69 74 6c 65 28 27 45 78 74 72 61 63 74 65 64 20 63 6f 72 6e 65 72 73 )');....title('Extracted.corners
b140 27 29 3b 0a 20 20 20 7a 6f 6f 6d 20 6f 6e 3b 0a 20 20 20 64 72 61 77 6e 6f 77 3b 0a 20 20 20 68 ');....zoom.on;....drawnow;....h
b160 6f 6c 64 20 6f 66 66 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 58 69 20 3d 20 72 65 73 68 61 70 65 old.off;............Xi.=.reshape
b180 28 28 5b 30 3a 6e 5f 73 71 5f 78 5d 2a 64 58 29 27 2a 6f 6e 65 73 28 31 2c 6e 5f 73 71 5f 79 2b (([0:n_sq_x]*dX)'*ones(1,n_sq_y+
b1a0 31 29 2c 4e 70 2c 31 29 27 3b 0a 20 20 20 59 69 20 3d 20 72 65 73 68 61 70 65 28 6f 6e 65 73 28 1),Np,1)';....Yi.=.reshape(ones(
b1c0 6e 5f 73 71 5f 78 2b 31 2c 31 29 2a 5b 6e 5f 73 71 5f 79 3a 2d 31 3a 30 5d 2a 64 59 2c 4e 70 2c n_sq_x+1,1)*[n_sq_y:-1:0]*dY,Np,
b1e0 31 29 27 3b 0a 20 20 20 5a 69 20 3d 20 7a 65 72 6f 73 28 31 2c 4e 70 29 3b 0a 20 20 20 0a 20 20 1)';....Zi.=.zeros(1,Np);.......
b200 20 58 67 72 69 64 20 3d 20 5b 58 69 3b 59 69 3b 5a 69 5d 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 .Xgrid.=.[Xi;Yi;Zi];............
b220 25 20 41 6c 6c 20 74 68 65 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 28 6f 6e 20 %.All.the.point.coordinates.(on.
b240 74 68 65 20 69 6d 61 67 65 2c 20 61 6e 64 20 69 6e 20 33 44 29 20 2d 20 66 6f 72 20 67 6c 6f 62 the.image,.and.in.3D).-.for.glob
b260 61 6c 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 3a 0a 0a 20 20 20 78 20 3d 20 67 72 69 64 5f 70 74 al.optimization:.....x.=.grid_pt
b280 73 3b 0a 20 20 20 58 20 3d 20 58 67 72 69 64 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 20 54 68 s;....X.=.Xgrid;............%.Th
b2a0 65 20 72 69 67 68 74 20 70 61 6e 6e 65 6c 20 69 6e 66 6f 3a 0a 20 20 20 0a 20 20 20 78 72 20 3d e.right.pannel.info:........xr.=
b2c0 20 78 3b 0a 20 20 20 58 72 20 3d 20 58 3b 0a 20 20 20 6e 72 5f 73 71 5f 78 20 3d 20 6e 5f 73 71 .x;....Xr.=.X;....nr_sq_x.=.n_sq
b2e0 5f 78 3b 0a 20 20 20 6e 72 5f 73 71 5f 79 20 3d 20 6e 5f 73 71 5f 79 3b 0a 20 20 20 48 72 20 3d _x;....nr_sq_y.=.n_sq_y;....Hr.=
b300 20 48 5f 74 6f 74 61 6c 3b 0a 0a 0a 0a 25 25 25 25 25 25 25 25 20 52 45 47 52 4f 55 50 20 54 48 .H_total;....%%%%%%%%.REGROUP.TH
b320 45 20 4c 45 46 54 20 41 4e 44 20 52 49 48 54 20 50 41 54 54 45 52 4e 53 20 25 25 25 25 25 25 25 E.LEFT.AND.RIHT.PATTERNS.%%%%%%%
b340 25 25 25 25 25 25 0a 0a 0a 58 72 32 20 3d 20 5b 30 20 30 20 31 3b 30 20 31 20 30 3b 2d 31 20 30 %%%%%%...Xr2.=.[0.0.1;0.1.0;-1.0
b360 20 30 5d 2a 58 72 20 2b 20 5b 64 58 2a 6e 6c 5f 73 71 5f 78 3b 30 3b 30 5d 2a 6f 6e 65 73 28 31 .0]*Xr.+.[dX*nl_sq_x;0;0]*ones(1
b380 2c 6c 65 6e 67 74 68 28 58 72 29 29 3b 0a 0a 0a 78 20 3d 20 5b 78 6c 20 78 72 5d 3b 0a 0a 58 20 ,length(Xr));...x.=.[xl.xr];..X.
b3a0 3d 20 5b 58 6c 20 58 72 32 5d 3b 0a 0a 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 78 5f 27 20 =.[Xl.Xr2];..........eval(['x_'.
b3c0 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 78 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b num2str(kk).'.=.x;']);....eval([
b3e0 27 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 58 3b 27 5d 29 3b 0a 20 20 20 0a 'X_'.num2str(kk).'.=.X;']);.....
b400 20 20 20 65 76 61 6c 28 5b 27 6e 6c 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 ...eval(['nl_sq_x_'.num2str(kk).
b420 27 20 3d 20 6e 6c 5f 73 71 5f 78 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 6e 6c 5f 73 71 '.=.nl_sq_x;']);....eval(['nl_sq
b440 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 6e 6c 5f 73 71 5f 79 3b 27 5d 29 _y_'.num2str(kk).'.=.nl_sq_y;'])
b460 3b 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 6e 72 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 ;........eval(['nr_sq_x_'.num2st
b480 72 28 6b 6b 29 20 27 20 3d 20 6e 72 5f 73 71 5f 78 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b r(kk).'.=.nr_sq_x;']);....eval([
b4a0 27 6e 72 5f 73 71 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 6e 72 5f 73 71 'nr_sq_y_'.num2str(kk).'.=.nr_sq
b4c0 5f 79 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 25 20 53 61 76 65 20 74 68 65 20 67 6c 6f 62 61 6c _y;']);........%.Save.the.global
b4e0 20 70 6c 61 6e 61 72 20 68 6f 6d 6f 67 72 61 70 68 79 3a 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 .planar.homography:........eval(
b500 5b 27 48 6c 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 48 6c 3b 27 5d 29 3b 0a 20 ['Hl_'.num2str(kk).'.=.Hl;']);..
b520 20 20 65 76 61 6c 28 5b 27 48 72 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 48 72 ..eval(['Hr_'.num2str(kk).'.=.Hr
b540 3b 27 5d 29 3b 5b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2d 28 77 69 6e 74 79 2b 2e 35 29 3b 67 ;']);[grid_pts(2,:)-(winty+.5);g
b560 72 69 64 5f 70 74 73 28 32 2c 3a 29 2d 28 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 rid_pts(2,:)-(winty+.5);grid_pts
b580 28 32 2c 3a 29 2b 28 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2b 28 (2,:)+(winty+.5);grid_pts(2,:)+(
b5a0 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2d 28 77 69 6e 74 79 2b 2e winty+.5);grid_pts(2,:)-(winty+.
b5c0 35 29 5d 3b 0a 0a 20 20 20 0a 20 20 20 66 69 67 75 72 65 28 33 29 3b 0a 20 20 20 69 6d 61 67 65 5)];.........figure(3);....image
b5e0 28 49 29 3b 20 63 6f 6c 6f 72 6d 61 70 28 6d 61 70 29 3b 20 68 6f 6c 64 20 6f 6e 3b 0a 20 20 20 (I);.colormap(map);.hold.on;....
b600 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6f 6d 70 75 74 65 5f 63 6f 6c 6c 69 6e 65 61 74 69 TOOLBOX_calib/compute_collineati
b620 6f 6e 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 on.m............................
b640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b660 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
b680 20 20 20 32 32 37 36 20 20 37 30 32 34 30 33 37 33 31 30 20 20 31 33 30 31 33 00 20 00 00 00 00 ...2276..7024037310..13013......
b6a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b6c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b6e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b7c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b7e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b800 66 75 6e 63 74 69 6f 6e 20 5b 48 2c 48 6e 6f 72 6d 2c 69 6e 76 5f 48 6e 6f 72 6d 5d 20 3d 20 63 function.[H,Hnorm,inv_Hnorm].=.c
b820 6f 6d 70 75 74 65 5f 63 6f 6c 6c 69 6e 65 61 74 69 6f 6e 20 28 61 30 30 2c 20 61 31 30 2c 20 61 ompute_collineation.(a00,.a10,.a
b840 31 31 2c 20 61 30 31 29 3b 0a 0a 25 20 6e 65 77 20 66 6f 72 6d 61 6c 69 73 6d 20 75 73 69 6e 67 11,.a01);..%.new.formalism.using
b860 20 68 6f 6d 6f 67 72 61 70 68 69 65 73 0a 0a 61 30 30 20 3d 20 61 30 30 20 2f 20 61 30 30 28 33 .homographies..a00.=.a00./.a00(3
b880 29 3b 0a 61 31 30 20 3d 20 61 31 30 20 2f 20 61 31 30 28 33 29 3b 0a 61 31 31 20 3d 20 61 31 31 );.a10.=.a10./.a10(3);.a11.=.a11
b8a0 20 2f 20 61 31 31 28 33 29 3b 0a 61 30 31 20 3d 20 61 30 31 20 2f 20 61 30 31 28 33 29 3b 0a 0a ./.a11(3);.a01.=.a01./.a01(3);..
b8c0 0a 25 20 50 72 65 6e 6f 72 6d 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 70 6f 69 6e 74 20 63 6f 6f .%.Prenormalization.of.point.coo
b8e0 72 64 69 6e 61 74 65 73 20 28 76 65 72 79 20 69 6d 70 6f 72 74 61 6e 74 29 3a 0a 25 20 28 41 66 rdinates.(very.important):.%.(Af
b900 66 69 6e 65 20 6e 6f 72 6d 61 6c 69 7a 61 74 69 6f 6e 29 0a 0a 61 78 20 3d 20 5b 61 30 30 28 31 fine.normalization)..ax.=.[a00(1
b920 29 3b 61 31 30 28 31 29 3b 61 31 31 28 31 29 3b 61 30 31 28 31 29 5d 3b 0a 61 79 20 3d 20 5b 61 );a10(1);a11(1);a01(1)];.ay.=.[a
b940 30 30 28 32 29 3b 61 31 30 28 32 29 3b 61 31 31 28 32 29 3b 61 30 31 28 32 29 5d 3b 0a 0a 6d 78 00(2);a10(2);a11(2);a01(2)];..mx
b960 78 20 3d 20 6d 65 61 6e 28 61 78 29 3b 0a 6d 79 79 20 3d 20 6d 65 61 6e 28 61 79 29 3b 0a 61 78 x.=.mean(ax);.myy.=.mean(ay);.ax
b980 20 3d 20 61 78 20 2d 20 6d 78 78 3b 0a 61 79 20 3d 20 61 79 20 2d 20 6d 79 79 3b 0a 0a 73 63 78 .=.ax.-.mxx;.ay.=.ay.-.myy;..scx
b9a0 78 20 3d 20 6d 65 61 6e 28 61 62 73 28 61 78 29 29 3b 0a 73 63 79 79 20 3d 20 6d 65 61 6e 28 61 x.=.mean(abs(ax));.scyy.=.mean(a
b9c0 62 73 28 61 79 29 29 3b 0a 0a 0a 48 6e 6f 72 6d 20 3d 20 5b 31 2f 73 63 78 78 20 30 20 2d 6d 78 bs(ay));...Hnorm.=.[1/scxx.0.-mx
b9e0 78 2f 73 63 78 78 3b 30 20 31 2f 73 63 79 79 20 2d 6d 79 79 2f 73 63 79 79 3b 30 20 30 20 31 5d x/scxx;0.1/scyy.-myy/scyy;0.0.1]
ba00 3b 0a 69 6e 76 5f 48 6e 6f 72 6d 20 3d 20 5b 73 63 78 78 20 30 20 6d 78 78 20 3b 20 30 20 73 63 ;.inv_Hnorm.=.[scxx.0.mxx.;.0.sc
ba20 79 79 20 6d 79 79 3b 20 30 20 30 20 31 5d 3b 0a 0a 0a 61 30 30 6e 20 3d 20 48 6e 6f 72 6d 2a 61 yy.myy;.0.0.1];...a00n.=.Hnorm*a
ba40 30 30 3b 0a 61 31 30 6e 20 3d 20 48 6e 6f 72 6d 2a 61 31 30 3b 0a 61 31 31 6e 20 3d 20 48 6e 6f 00;.a10n.=.Hnorm*a10;.a11n.=.Hno
ba60 72 6d 2a 61 31 31 3b 0a 61 30 31 6e 20 3d 20 48 6e 6f 72 6d 2a 61 30 31 3b 0a 0a 0a 25 20 43 6f rm*a11;.a01n.=.Hnorm*a01;...%.Co
ba80 6d 70 75 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 mputation.of.the.vanishing.point
baa0 73 3a 0a 0a 56 31 6e 20 3d 20 63 72 6f 73 73 28 63 72 6f 73 73 28 61 30 30 6e 2c 61 31 30 6e 29 s:..V1n.=.cross(cross(a00n,a10n)
bac0 2c 63 72 6f 73 73 28 61 30 31 6e 2c 61 31 31 6e 29 29 3b 0a 56 32 6e 20 3d 20 63 72 6f 73 73 28 ,cross(a01n,a11n));.V2n.=.cross(
bae0 63 72 6f 73 73 28 61 30 30 6e 2c 61 30 31 6e 29 2c 63 72 6f 73 73 28 61 31 30 6e 2c 61 31 31 6e cross(a00n,a01n),cross(a10n,a11n
bb00 29 29 3b 0a 0a 56 31 20 3d 20 69 6e 76 5f 48 6e 6f 72 6d 2a 56 31 6e 3b 0a 56 32 20 3d 20 69 6e ));..V1.=.inv_Hnorm*V1n;.V2.=.in
bb20 76 5f 48 6e 6f 72 6d 2a 56 32 6e 3b 0a 0a 0a 25 20 4e 6f 72 6d 61 6c 69 7a 61 69 6f 6e 20 6f 66 v_Hnorm*V2n;...%.Normalizaion.of
bb40 20 74 68 65 20 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 73 3a 0a 0a 56 31 6e 20 3d 20 56 31 .the.vanishing.points:..V1n.=.V1
bb60 6e 2f 6e 6f 72 6d 28 56 31 6e 29 3b 0a 56 32 6e 20 3d 20 56 32 6e 2f 6e 6f 72 6d 28 56 32 6e 29 n/norm(V1n);.V2n.=.V2n/norm(V2n)
bb80 3b 0a 0a 0a 25 20 43 6c 6f 73 65 64 2d 66 6f 72 6d 20 73 6f 6c 75 74 69 6f 6e 20 6f 66 20 74 68 ;...%.Closed-form.solution.of.th
bba0 65 20 63 6f 65 66 66 69 63 69 65 6e 74 73 3a 0a 0a 61 6c 70 68 61 5f 78 20 3d 20 28 61 31 30 6e e.coefficients:..alpha_x.=.(a10n
bbc0 28 32 29 2a 61 30 30 6e 28 31 29 20 2d 20 61 31 30 6e 28 31 29 2a 61 30 30 6e 28 32 29 29 2f 28 (2)*a00n(1).-.a10n(1)*a00n(2))/(
bbe0 56 31 6e 28 32 29 2a 61 31 30 6e 28 31 29 2d 56 31 6e 28 31 29 2a 61 31 30 6e 28 32 29 29 3b 0a V1n(2)*a10n(1)-V1n(1)*a10n(2));.
bc00 0a 61 6c 70 68 61 5f 79 20 3d 20 28 61 30 31 6e 28 32 29 2a 61 30 30 6e 28 31 29 20 2d 20 61 30 .alpha_y.=.(a01n(2)*a00n(1).-.a0
bc20 31 6e 28 31 29 2a 61 30 30 6e 28 32 29 29 2f 28 56 32 6e 28 32 29 2a 61 30 31 6e 28 31 29 2d 56 1n(1)*a00n(2))/(V2n(2)*a01n(1)-V
bc40 32 6e 28 31 29 2a 61 30 31 6e 28 32 29 29 3b 0a 0a 0a 25 20 52 65 6d 61 69 6e 69 6e 67 20 48 6f 2n(1)*a01n(2));...%.Remaining.Ho
bc60 6d 6f 67 72 61 70 68 79 0a 0a 48 72 65 6d 20 3d 20 5b 61 6c 70 68 61 5f 78 2a 56 31 6e 20 20 61 mography..Hrem.=.[alpha_x*V1n..a
bc80 6c 70 68 61 5f 79 2a 56 32 6e 20 61 30 30 6e 5d 3b 0a 0a 0a 25 20 46 69 6e 61 6c 20 68 6f 6d 6f lpha_y*V2n.a00n];...%.Final.homo
bca0 67 72 61 70 68 79 3a 0a 0a 48 20 3d 20 69 6e 76 5f 48 6e 6f 72 6d 2a 48 72 65 6d 3b 0a 0a 69 6f graphy:..H.=.inv_Hnorm*Hrem;..io
bcc0 6e 2e 6d 00 00 00 05 5c 00 02 36 a1 00 24 00 16 73 65 6c 65 63 74 5f 73 6f 6c 5f 6e 6f 5f 63 65 n.m....\..6..$..select_sol_no_ce
bce0 6e 74 65 72 2e 6d 00 5c 00 00 05 80 00 02 36 a2 00 28 00 18 73 65 6c 65 63 74 5f 73 6f 6c 5f 6e nter.m.\......6..(..select_sol_n
bd00 6f 5f 63 65 6e 74 65 72 33 44 2e 6d 00 02 36 a2 00 00 05 a4 00 02 36 a3 00 28 00 18 73 65 6c 65 o_center3D.m..6.......6..(..sele
bd20 63 74 5f 73 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 65 72 2e 6d 00 02 36 a3 00 00 05 c8 00 02 36 a4 ct_sol_with_center.m..6.......6.
bd40 00 28 00 1a 73 65 6c 65 63 74 5f 73 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 65 72 33 44 2e 6d 00 a4 .(..select_sol_with_center3D.m..
bd60 00 00 05 dc 00 02 36 a5 00 18 00 09 73 74 61 72 74 75 70 2e 6d 00 6e 74 00 00 05 f0 00 02 36 a6 ......6.....startup.m.nt......6.
bd80 00 18 00 09 74 65 73 74 5f 33 64 2e 6d 00 61 72 00 00 06 00 00 02 33 c0 00 14 00 06 69 73 33 44 ....test_3d.m.ar......3.....is3D
bda0 2e 6d 00 09 00 00 06 1c 00 02 36 a7 00 20 00 11 75 6e 64 69 73 74 6f 72 74 5f 69 6d 61 67 65 2e .m........6.....undistort_image.
bdc0 6d 00 00 09 00 00 06 34 00 02 36 a8 00 1c 00 0d 55 6e 57 61 72 70 50 6c 61 6e 65 2e 6d 00 65 2e m......4..6.....UnWarpPlane.m.e.
bde0 00 00 06 48 00 02 36 a9 00 18 00 0a 77 72 69 74 65 72 61 73 2e 6d 00 6c 00 00 06 64 00 02 36 aa ...H..6.....writeras.m.l...d..6.
be00 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 2e TOOLBOX_calib/compute_extrinsic.
be20 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 m...............................
be40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
be60 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
be80 20 20 20 35 34 34 36 20 20 37 30 32 34 30 33 37 33 31 31 20 20 31 32 33 34 36 00 20 00 00 00 00 ...5446..7024037311..12346......
bea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bf00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bf20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bf40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bf60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bf80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bfa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bfc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bfe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c000 66 75 6e 63 74 69 6f 6e 20 5b 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 52 63 6b 6b 2c 48 2c 78 2c 65 78 function.[omckk,Tckk,Rckk,H,x,ex
c020 2c 4a 4a 5d 20 3d 20 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 28 78 5f 6b 6b 2c 58 5f ,JJ].=.compute_extrinsic(x_kk,X_
c040 6b 6b 2c 66 63 2c 63 63 2c 6b 63 2c 4d 61 78 49 74 65 72 2c 74 68 72 65 73 68 5f 63 6f 6e 64 29 kk,fc,cc,kc,MaxIter,thresh_cond)
c060 2c 0a 0a 25 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 0a 25 0a 25 5b 6f 6d 63 6b 6b 2c ,..%compute_extrinsic.%.%[omckk,
c080 54 63 6b 6b 2c 52 63 6b 6b 2c 48 2c 78 2c 65 78 5d 20 3d 20 63 6f 6d 70 75 74 65 5f 65 78 74 72 Tckk,Rckk,H,x,ex].=.compute_extr
c0a0 69 6e 73 69 63 28 78 5f 6b 6b 2c 58 5f 6b 6b 2c 66 63 2c 63 63 2c 6b 63 2c 72 65 66 69 6e 65 29 insic(x_kk,X_kk,fc,cc,kc,refine)
c0c0 0a 25 0a 25 43 6f 6d 70 75 74 65 73 20 74 68 65 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d .%.%Computes.the.extrinsic.param
c0e0 65 74 65 72 73 20 61 74 74 61 63 68 65 64 20 74 6f 20 61 20 33 44 20 73 74 72 75 63 74 75 72 65 eters.attached.to.a.3D.structure
c100 20 58 5f 6b 6b 20 67 69 76 65 6e 20 69 74 73 20 70 72 6f 6a 65 63 74 69 6f 6e 0a 25 6f 6e 20 74 .X_kk.given.its.projection.%on.t
c120 68 65 20 69 6d 61 67 65 20 70 6c 61 6e 65 20 78 5f 6b 6b 20 61 6e 64 20 74 68 65 20 69 6e 74 72 he.image.plane.x_kk.and.the.intr
c140 69 6e 73 69 63 20 63 61 6d 65 72 61 20 70 61 72 61 6d 65 74 65 72 73 20 66 63 2c 20 63 63 20 61 insic.camera.parameters.fc,.cc.a
c160 6e 64 20 6b 63 2e 0a 25 57 6f 72 6b 73 20 77 69 74 68 20 70 6c 61 6e 61 72 20 61 6e 64 20 6e 6f nd.kc..%Works.with.planar.and.no
c180 6e 2d 70 6c 61 6e 61 72 20 73 74 72 75 63 74 75 72 65 73 2e 0a 25 0a 25 49 4e 50 55 54 3a 20 78 n-planar.structures..%.%INPUT:.x
c1a0 5f 6b 6b 3a 20 46 65 61 74 75 72 65 20 6c 6f 63 61 74 69 6f 6e 73 20 6f 6e 20 74 68 65 20 69 6d _kk:.Feature.locations.on.the.im
c1c0 61 67 65 73 0a 25 20 20 20 20 20 20 20 58 5f 6b 6b 3a 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 ages.%.......X_kk:.Corresponding
c1e0 20 67 72 69 64 20 63 6f 6f 72 64 69 6e 61 74 65 73 0a 25 20 20 20 20 20 20 20 66 63 3a 20 43 61 .grid.coordinates.%.......fc:.Ca
c200 6d 65 72 61 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 0a 25 20 20 20 20 20 20 20 63 63 3a 20 50 72 mera.focal.length.%.......cc:.Pr
c220 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 0a 25 20 20 20 20 20 incipal.point.coordinates.%.....
c240 20 20 6b 63 3a 20 44 69 73 74 6f 72 74 69 6f 6e 20 63 6f 65 66 66 69 63 69 65 6e 74 73 0a 25 20 ..kc:.Distortion.coefficients.%.
c260 20 20 20 20 20 20 72 65 66 69 6e 65 3a 20 73 65 74 20 74 6f 20 31 20 66 6f 72 20 72 65 66 69 6e ......refine:.set.to.1.for.refin
c280 69 6e 67 20 74 68 65 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 69 74 65 ing.the.extrinsic.parameters.ite
c2a0 72 61 74 69 76 65 6c 79 0a 25 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 4f 50 54 49 4f 4e ratively.%...............[OPTION
c2c0 41 4c 3a 20 44 65 66 61 75 6c 74 20 76 61 6c 75 65 3a 20 31 5d 0a 25 0a 25 4f 55 54 50 55 54 3a AL:.Default.value:.1].%.%OUTPUT:
c2e0 20 6f 6d 63 6b 6b 3a 20 33 44 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 61 74 74 61 63 .omckk:.3D.rotation.vector.attac
c300 68 65 64 20 74 6f 20 74 68 65 20 67 72 69 64 20 70 6f 73 69 74 69 6f 6e 73 20 69 6e 20 73 70 61 hed.to.the.grid.positions.in.spa
c320 63 65 0a 25 20 20 20 20 20 20 20 20 54 63 6b 6b 3a 20 33 44 20 74 72 61 6e 73 6c 61 74 69 6f 6e ce.%........Tckk:.3D.translation
c340 20 76 65 63 74 6f 72 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 67 72 69 64 20 70 6f 73 .vector.attached.to.the.grid.pos
c360 69 74 69 6f 6e 73 20 69 6e 20 73 70 61 63 65 0a 25 20 20 20 20 20 20 20 20 52 63 6b 6b 3a 20 33 itions.in.space.%........Rckk:.3
c380 44 20 72 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 63 65 73 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e D.rotation.matrices.correspondin
c3a0 67 20 74 6f 20 74 68 65 20 6f 6d 63 20 76 65 63 74 6f 72 73 0a 25 20 20 20 20 20 20 20 20 48 3a g.to.the.omc.vectors.%........H:
c3c0 20 48 6f 6d 6f 67 72 61 70 68 79 20 62 65 74 77 65 65 6e 20 70 6f 69 6e 74 73 20 6f 6e 20 74 68 .Homography.between.points.on.th
c3e0 65 20 67 72 69 64 20 61 6e 64 20 70 6f 69 6e 74 73 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 20 70 e.grid.and.points.on.the.image.p
c400 6c 61 6e 65 20 28 69 6e 20 70 69 78 65 6c 29 0a 25 20 20 20 20 20 20 20 20 20 20 20 54 68 69 73 lane.(in.pixel).%...........This
c420 20 6d 61 6b 65 73 20 73 65 6e 73 65 20 6f 6e 6c 79 20 69 66 20 74 68 65 20 70 6c 61 6e 61 72 20 .makes.sense.only.if.the.planar.
c440 74 68 61 74 20 69 73 20 75 73 65 64 20 69 6e 20 70 6c 61 6e 61 72 2e 0a 25 20 20 20 20 20 20 20 that.is.used.in.planar..%.......
c460 20 78 3a 20 52 65 70 72 6f 6a 65 63 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 70 6f 69 6e 74 73 20 .x:.Reprojections.of.the.points.
c480 6f 6e 20 74 68 65 20 69 6d 61 67 65 20 70 6c 61 6e 65 0a 25 20 20 20 20 20 20 20 20 65 78 3a 20 on.the.image.plane.%........ex:.
c4a0 52 65 70 72 6f 6a 65 63 74 69 6f 6e 20 65 72 72 6f 72 3a 20 65 78 20 3d 20 78 5f 6b 6b 20 2d 20 Reprojection.error:.ex.=.x_kk.-.
c4c0 78 3b 0a 25 0a 25 4d 65 74 68 6f 64 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 6e 6f 72 6d 61 x;.%.%Method:.Computes.the.norma
c4e0 6c 69 7a 65 64 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 2c 20 74 68 65 6e 20 63 6f lized.point.coordinates,.then.co
c500 6d 70 75 74 65 73 20 74 68 65 20 33 44 20 70 6f 73 65 0a 25 0a 25 49 6d 70 6f 72 74 61 6e 74 20 mputes.the.3D.pose.%.%Important.
c520 66 75 6e 63 74 69 6f 6e 73 20 63 61 6c 6c 65 64 20 77 69 74 68 69 6e 20 74 68 61 74 20 70 72 6f functions.called.within.that.pro
c540 67 72 61 6d 3a 0a 25 0a 25 6e 6f 72 6d 61 6c 69 7a 65 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 gram:.%.%normalize:.Computes.the
c560 20 6e 6f 72 6d 61 6c 69 7a 65 20 69 6d 61 67 65 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 .normalize.image.point.coordinat
c580 65 73 2e 0a 25 0a 25 70 6f 73 65 33 44 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 33 44 20 70 es..%.%pose3D:.Computes.the.3D.p
c5a0 6f 73 65 20 6f 66 20 74 68 65 20 73 74 72 75 63 74 75 72 65 20 67 69 76 65 6e 20 74 68 65 20 6e ose.of.the.structure.given.the.n
c5c0 6f 72 6d 61 6c 69 7a 65 64 20 69 6d 61 67 65 20 70 72 6f 6a 65 63 74 69 6f 6e 2e 0a 25 0a 25 70 ormalized.image.projection..%.%p
c5e0 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 2e 6d 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 32 44 roject_points.m:.Computes.the.2D
c600 20 69 6d 61 67 65 20 70 72 6f 6a 65 63 74 69 6f 6e 73 20 6f 66 20 61 20 73 65 74 20 6f 66 20 33 .image.projections.of.a.set.of.3
c620 44 20 70 6f 69 6e 74 73 0a 0a 0a 0a 69 66 20 6e 61 72 67 69 6e 20 3c 20 37 2c 0a 20 20 20 74 68 D.points....if.nargin.<.7,....th
c640 72 65 73 68 5f 63 6f 6e 64 20 3d 20 69 6e 66 3b 0a 65 6e 64 3b 0a 0a 0a 69 66 20 6e 61 72 67 69 resh_cond.=.inf;.end;...if.nargi
c660 6e 20 3c 20 36 2c 0a 20 20 20 4d 61 78 49 74 65 72 20 3d 20 32 30 3b 0a 65 6e 64 3b 0a 0a 0a 0a n.<.6,....MaxIter.=.20;.end;....
c680 69 66 20 6e 61 72 67 69 6e 20 3c 20 35 2c 0a 20 20 20 6b 63 20 3d 20 7a 65 72 6f 73 28 34 2c 31 if.nargin.<.5,....kc.=.zeros(4,1
c6a0 29 3b 0a 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3c 20 34 2c 0a 20 20 20 20 20 20 63 63 20 3d 20 );....if.nargin.<.4,.......cc.=.
c6c0 7a 65 72 6f 73 28 32 2c 31 29 3b 0a 20 20 20 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3c 20 33 2c zeros(2,1);.......if.nargin.<.3,
c6e0 0a 20 20 20 20 20 20 20 20 20 66 63 20 3d 20 6f 6e 65 73 28 32 2c 31 29 3b 0a 20 20 20 20 20 20 ..........fc.=.ones(2,1);.......
c700 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3c 20 32 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 72 ...if.nargin.<.2,.............er
c720 72 6f 72 28 27 4e 65 65 64 20 32 44 20 70 72 6f 6a 65 63 74 69 6f 6e 73 20 61 6e 64 20 33 44 20 ror('Need.2D.projections.and.3D.
c740 70 6f 69 6e 74 73 20 28 69 6e 20 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 2e 6d 29 27 points.(in.compute_extrinsic.m)'
c760 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0a 20 20 20 20 20 20 20 20 20 );.............return;..........
c780 65 6e 64 3b 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 0a 25 end;.......end;....end;.end;...%
c7a0 20 49 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 3a 0a 0a 5b 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 52 63 .Initialization:..[omckk,Tckk,Rc
c7c0 6b 6b 5d 20 3d 20 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 69 6e 69 74 28 78 5f 6b kk].=.compute_extrinsic_init(x_k
c7e0 6b 2c 58 5f 6b 6b 2c 66 63 2c 63 63 2c 6b 63 29 3b 0a 0a 25 20 52 65 66 69 6e 65 6d 65 6e 74 3a k,X_kk,fc,cc,kc);..%.Refinement:
c800 0a 0a 5b 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 52 63 6b 6b 2c 4a 4a 5d 20 3d 20 63 6f 6d 70 75 74 65 ..[omckk,Tckk,Rckk,JJ].=.compute
c820 5f 65 78 74 72 69 6e 73 69 63 5f 72 65 66 69 6e 65 28 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 78 5f 6b _extrinsic_refine(omckk,Tckk,x_k
c840 6b 2c 58 5f 6b 6b 2c 66 63 2c 63 63 2c 6b 63 2c 4d 61 78 49 74 65 72 2c 74 68 72 65 73 68 5f 63 k,X_kk,fc,cc,kc,MaxIter,thresh_c
c860 6f 6e 64 29 3b 0a 0a 0a 25 20 63 6f 6d 70 75 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 68 6f 6d ond);...%.computation.of.the.hom
c880 6f 67 72 61 70 68 79 20 28 6e 6f 74 20 75 73 65 66 75 6c 20 69 6e 20 74 68 65 20 65 6e 64 29 0a ography.(not.useful.in.the.end).
c8a0 0a 48 20 3d 20 5b 52 63 6b 6b 28 3a 2c 31 3a 32 29 20 54 63 6b 6b 5d 3b 0a 0a 25 20 43 6f 6d 70 .H.=.[Rckk(:,1:2).Tckk];..%.Comp
c8c0 75 74 65 73 20 74 68 65 20 72 65 70 72 6f 6a 65 63 74 69 6f 6e 20 65 72 72 6f 72 20 69 6e 20 70 utes.the.reprojection.error.in.p
c8e0 69 78 65 6c 73 3a 0a 0a 78 20 3d 20 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 28 58 5f 6b 6b 2c ixels:..x.=.project_points(X_kk,
c900 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 66 63 2c 63 63 2c 6b 63 29 3b 0a 0a 65 78 20 3d 20 78 5f 6b 6b omckk,Tckk,fc,cc,kc);..ex.=.x_kk
c920 20 2d 20 78 3b 0a 0a 0a 25 20 43 6f 6e 76 65 72 74 73 20 74 68 65 20 68 6f 6d 6f 67 72 61 70 68 .-.x;...%.Converts.the.homograph
c940 79 20 69 6e 20 70 69 78 65 6c 20 75 6e 69 74 73 3a 0a 0a 4b 4b 20 3d 20 5b 66 63 28 31 29 20 30 y.in.pixel.units:..KK.=.[fc(1).0
c960 20 63 63 28 31 29 3b 30 20 66 63 28 32 29 20 63 63 28 32 29 3b 20 30 20 30 20 31 5d 3b 0a 0a 48 .cc(1);0.fc(2).cc(2);.0.0.1];..H
c980 20 3d 20 4b 4b 2a 48 3b 0a 0a 0a 0a 0a 72 65 74 75 72 6e 3b 0a 0a 0a 25 20 54 65 73 74 20 6f 66 .=.KK*H;.....return;...%.Test.of
c9a0 20 63 6f 6d 70 74 65 20 65 78 74 72 69 6e 73 69 63 3a 0a 0a 4e 70 20 3d 20 34 3b 0a 73 78 20 3d .compte.extrinsic:..Np.=.4;.sx.=
c9c0 20 31 30 3b 0a 73 79 20 3d 20 31 30 3b 0a 73 7a 20 3d 20 35 3b 0a 0a 6f 6d 20 3d 20 72 61 6e 64 .10;.sy.=.10;.sz.=.5;..om.=.rand
c9e0 6e 28 33 2c 31 29 3b 0a 54 20 3d 20 5b 30 3b 30 3b 31 30 30 5d 3b 0a 0a 6e 6f 69 73 65 20 3d 20 n(3,1);.T.=.[0;0;100];..noise.=.
ca00 32 2f 31 30 30 30 3b 0a 0a 58 58 20 3d 20 5b 73 78 2a 72 61 6e 64 6e 28 31 2c 4e 70 29 3b 73 79 2/1000;..XX.=.[sx*randn(1,Np);sy
ca20 2a 72 61 6e 64 6e 28 31 2c 4e 70 29 3b 73 7a 2a 72 61 6e 64 6e 28 31 2c 4e 70 29 5d 3b 0a 78 78 *randn(1,Np);sz*randn(1,Np)];.xx
ca40 20 3d 20 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 28 58 58 2c 6f 6d 2c 54 29 3b 0a 0a 78 78 6e .=.project_points(XX,om,T);..xxn
ca60 20 3d 20 78 78 20 2b 20 6e 6f 69 73 65 20 2a 20 72 61 6e 64 6e 28 32 2c 4e 70 29 3b 0a 0a 5b 6f .=.xx.+.noise.*.randn(2,Np);..[o
ca80 6d 63 6b 6b 2c 54 63 6b 6b 5d 20 3d 20 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 28 78 mckk,Tckk].=.compute_extrinsic(x
caa0 78 6e 2c 58 58 29 3b 0a 0a 5b 6f 6d 20 6f 6d 63 6b 6b 20 6f 6d 2d 6f 6d 63 6b 6b 5d 0a 5b 54 20 xn,XX);..[om.omckk.om-omckk].[T.
cac0 54 63 6b 6b 20 54 2d 54 63 6b 6b 5d 0a 0a 66 69 67 75 72 65 28 33 29 3b 0a 70 6c 6f 74 28 78 78 Tckk.T-Tckk]..figure(3);.plot(xx
cae0 28 31 2c 3a 29 2c 78 78 28 32 2c 3a 29 2c 27 72 2b 27 29 3b 0a 68 6f 6c 64 20 6f 6e 3b 0a 70 6c (1,:),xx(2,:),'r+');.hold.on;.pl
cb00 6f 74 28 78 78 6e 28 31 2c 3a 29 2c 78 78 6e 28 32 2c 3a 29 2c 27 67 2b 27 29 3b 0a 68 6f 6c 64 ot(xxn(1,:),xxn(2,:),'g+');.hold
cb20 20 6f 66 66 3b 0a 6d 6f 67 72 61 70 68 79 20 66 72 6f 6d 20 70 6c 61 6e 65 20 74 6f 20 70 69 78 .off;.mography.from.plane.to.pix
cb40 65 6c 20 63 6f 6f 72 64 69 6e 61 74 65 73 3a 0a 20 20 20 0a 20 20 20 48 5f 74 6f 74 61 6c 20 3d el.coordinates:........H_total.=
cb60 20 5b 31 20 30 20 2d 31 20 3b 20 30 20 31 20 2d 31 20 3b 20 30 20 30 20 31 5d 2a 48 6f 6d 6f 2a .[1.0.-1.;.0.1.-1.;.0.0.1]*Homo*
cb80 5b 31 20 30 20 30 3b 30 20 2d 31 20 31 3b 30 20 30 20 31 5d 2a 5b 31 2f 57 20 30 20 30 20 3b 20 [1.0.0;0.-1.1;0.0.1]*[1/W.0.0.;.
cba0 30 20 31 2f 4c 20 30 3b 20 30 20 30 20 31 5d 3b 0a 20 20 20 25 20 57 41 52 4e 49 4e 47 21 21 21 0.1/L.0;.0.0.1];....%.WARNING!!!
cbc0 20 74 68 65 20 66 69 72 73 74 20 6d 61 74 72 69 78 20 28 6f 6e 20 74 68 65 20 6c 65 66 74 20 73 .the.first.matrix.(on.the.left.s
cbe0 69 64 65 29 20 74 61 6b 65 73 20 63 61 72 65 20 6f 66 20 74 68 65 20 74 72 61 6e 73 66 6f 72 6d ide).takes.care.of.the.transform
cc00 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6f 6d 70 75 74 65 5f 68 6f 6d 6f 67 72 61 70 68 79 TOOLBOX_calib/compute_homography
cc20 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .m..............................
cc40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cc60 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
cc80 20 20 20 36 33 37 36 20 20 37 30 32 34 30 33 37 33 31 32 20 20 31 32 35 31 37 00 20 00 00 00 00 ...6376..7024037312..12517......
cca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ccc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cd00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cd20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cd40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cd60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cd80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cda0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cdc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cde0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ce00 66 75 6e 63 74 69 6f 6e 20 5b 48 2c 48 6e 6f 72 6d 2c 69 6e 76 5f 48 6e 6f 72 6d 5d 20 3d 20 63 function.[H,Hnorm,inv_Hnorm].=.c
ce20 6f 6d 70 75 74 65 5f 68 6f 6d 6f 67 72 61 70 68 79 20 28 6d 2c 4d 29 3b 0a 0a 25 63 6f 6d 70 75 ompute_homography.(m,M);..%compu
ce40 74 65 5f 68 6f 6d 6f 67 72 61 70 68 79 0a 25 0a 25 5b 48 2c 48 6e 6f 72 6d 2c 69 6e 76 5f 48 6e te_homography.%.%[H,Hnorm,inv_Hn
ce60 6f 72 6d 5d 20 3d 20 63 6f 6d 70 75 74 65 5f 68 6f 6d 6f 67 72 61 70 68 79 20 28 6d 2c 4d 29 0a orm].=.compute_homography.(m,M).
ce80 25 0a 25 43 6f 6d 70 75 74 65 73 20 74 68 65 20 70 6c 61 6e 61 72 20 68 6f 6d 6f 67 72 61 70 68 %.%Computes.the.planar.homograph
cea0 79 20 62 65 74 77 65 65 6e 20 74 68 65 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 y.between.the.point.coordinates.
cec0 6f 6e 20 74 68 65 20 70 6c 61 6e 65 20 28 4d 29 20 61 6e 64 20 74 68 65 20 69 6d 61 67 65 0a 25 on.the.plane.(M).and.the.image.%
cee0 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 28 6d 29 2e 0a 25 0a 25 49 4e 50 55 54 3a point.coordinates.(m)..%.%INPUT:
cf00 20 6d 3a 20 68 6f 6d 6f 67 65 6e 65 6f 75 73 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 69 6e 20 74 .m:.homogeneous.coordinates.in.t
cf20 68 65 20 69 6d 61 67 65 20 70 6c 61 6e 65 20 28 33 78 4e 20 6d 61 74 72 69 78 29 0a 25 20 20 20 he.image.plane.(3xN.matrix).%...
cf40 20 20 20 20 4d 3a 20 68 6f 6d 6f 67 65 6e 65 6f 75 73 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 69 ....M:.homogeneous.coordinates.i
cf60 6e 20 74 68 65 20 70 6c 61 6e 65 20 69 6e 20 33 44 20 28 33 78 4e 20 6d 61 74 72 69 78 29 0a 25 n.the.plane.in.3D.(3xN.matrix).%
cf80 0a 25 4f 55 54 50 55 54 3a 20 48 3a 20 48 6f 6d 6f 67 72 61 70 68 79 20 6d 61 74 72 69 78 20 28 .%OUTPUT:.H:.Homography.matrix.(
cfa0 33 78 33 20 68 6f 6d 6f 67 65 6e 65 6f 75 73 20 6d 61 74 72 69 78 29 0a 25 20 20 20 20 20 20 20 3x3.homogeneous.matrix).%.......
cfc0 20 48 6e 6f 72 6d 3a 20 4e 6f 72 6d 6c 69 7a 61 74 69 6f 6e 20 6d 61 74 72 69 78 20 75 73 65 64 .Hnorm:.Normlization.matrix.used
cfe0 20 6f 6e 20 74 68 65 20 70 6f 69 6e 74 73 20 62 65 66 6f 72 65 20 68 6f 6d 6f 67 72 61 70 68 79 .on.the.points.before.homography
d000 20 63 6f 6d 70 75 74 61 74 69 6f 6e 0a 25 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 73 .computation.%...............(us
d020 65 66 75 6c 20 66 6f 72 20 6e 75 6d 65 72 69 63 61 6c 20 73 74 61 62 69 6c 69 74 79 20 69 73 20 eful.for.numerical.stability.is.
d040 70 6f 69 6e 74 73 20 69 6e 20 70 69 78 65 6c 20 63 6f 6f 72 64 69 6e 61 74 65 73 29 0a 25 20 20 points.in.pixel.coordinates).%..
d060 20 20 20 20 20 20 69 6e 76 5f 48 6e 6f 72 6d 3a 20 54 68 65 20 69 6e 76 65 72 73 65 20 6f 66 20 ......inv_Hnorm:.The.inverse.of.
d080 48 6e 6f 72 6d 0a 25 0a 25 44 65 66 69 6e 69 74 69 6f 6e 3a 20 6d 20 7e 20 48 2a 4d 20 77 68 65 Hnorm.%.%Definition:.m.~.H*M.whe
d0a0 72 65 20 22 7e 22 20 6d 65 61 6e 73 20 65 71 75 61 6c 20 75 70 20 74 6f 20 61 20 6e 6f 6e 20 7a re."~".means.equal.up.to.a.non.z
d0c0 65 72 6f 20 73 63 61 6c 61 72 20 66 61 63 74 6f 72 2e 0a 25 0a 25 4d 65 74 68 6f 64 3a 20 46 69 ero.scalar.factor..%.%Method:.Fi
d0e0 72 73 74 20 63 6f 6d 70 75 74 65 73 20 61 6e 20 69 6e 69 74 69 61 6c 20 67 75 65 73 73 20 66 6f rst.computes.an.initial.guess.fo
d100 72 20 74 68 65 20 68 6f 6d 6f 67 72 61 70 68 79 20 74 68 72 6f 75 67 68 20 71 75 61 73 69 2d 6c r.the.homography.through.quasi-l
d120 69 6e 65 61 72 20 6d 65 74 68 6f 64 2e 0a 25 20 20 20 20 20 20 20 20 54 68 65 6e 2c 20 69 66 20 inear.method..%........Then,.if.
d140 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 70 6f 69 6e 74 73 20 69 73 20 6c 61 the.total.number.of.points.is.la
d160 72 67 65 72 20 74 68 61 6e 20 34 2c 20 6f 70 74 69 6d 69 7a 65 20 74 68 65 20 73 6f 6c 75 74 69 rger.than.4,.optimize.the.soluti
d180 6f 6e 20 62 79 20 6d 69 6e 69 6d 69 7a 69 6e 67 0a 25 20 20 20 20 20 20 20 20 74 68 65 20 72 65 on.by.minimizing.%........the.re
d1a0 70 72 6f 6a 65 63 74 69 6f 6e 20 65 72 72 6f 72 20 28 69 6e 20 74 68 65 20 6c 65 61 73 74 20 73 projection.error.(in.the.least.s
d1c0 71 75 61 72 65 73 20 73 65 6e 73 65 29 2e 0a 25 0a 25 0a 25 49 6d 70 6f 72 74 61 6e 74 20 66 75 quares.sense)..%.%.%Important.fu
d1e0 6e 63 74 69 6f 6e 73 20 63 61 6c 6c 65 64 20 77 69 74 68 69 6e 20 74 68 61 74 20 70 72 6f 67 72 nctions.called.within.that.progr
d200 61 6d 3a 0a 25 0a 25 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 5f 6f 75 6c 75 3a 20 55 6e 64 am:.%.%comp_distortion_oulu:.Und
d220 69 73 74 6f 72 74 73 20 70 69 78 65 6c 20 63 6f 6f 72 64 69 6e 61 74 65 73 2e 0a 25 0a 25 63 6f istorts.pixel.coordinates..%.%co
d240 6d 70 75 74 65 5f 68 6f 6d 6f 67 72 61 70 68 79 2e 6d 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 mpute_homography.m:.Computes.the
d260 20 70 6c 61 6e 61 72 20 68 6f 6d 6f 67 72 61 70 68 79 20 62 65 74 77 65 65 6e 20 70 6f 69 6e 74 .planar.homography.between.point
d280 73 20 6f 6e 20 74 68 65 20 67 72 69 64 20 69 6e 20 33 44 2c 20 61 6e 64 20 74 68 65 20 69 6d 61 s.on.the.grid.in.3D,.and.the.ima
d2a0 67 65 20 70 6c 61 6e 65 2e 0a 25 0a 25 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 2e 6d 3a 20 43 ge.plane..%.%project_points.m:.C
d2c0 6f 6d 70 75 74 65 73 20 74 68 65 20 32 44 20 69 6d 61 67 65 20 70 72 6f 6a 65 63 74 69 6f 6e 73 omputes.the.2D.image.projections
d2e0 20 6f 66 20 61 20 73 65 74 20 6f 66 20 33 44 20 70 6f 69 6e 74 73 2c 20 61 6e 64 20 61 6c 73 6f .of.a.set.of.3D.points,.and.also
d300 20 72 65 74 75 72 6e 73 20 74 65 20 4a 61 63 6f 62 69 61 6e 0a 25 20 20 20 20 20 20 20 20 20 20 .returns.te.Jacobian.%..........
d320 20 20 20 20 20 20 20 20 6d 61 74 72 69 78 20 28 64 65 72 69 76 61 74 69 76 65 20 77 69 74 68 20 ........matrix.(derivative.with.
d340 72 65 73 70 65 63 74 20 74 6f 20 74 68 65 20 69 6e 74 72 69 6e 73 69 63 20 61 6e 64 20 65 78 74 respect.to.the.intrinsic.and.ext
d360 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 29 2e 0a 25 20 20 20 20 20 20 20 20 20 20 20 rinsic.parameters)..%...........
d380 20 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 63 61 6c 6c 65 64 20 77 .......This.function.is.called.w
d3a0 69 74 68 69 6e 20 74 68 65 20 6d 69 6e 69 6d 69 7a 61 74 69 6f 6e 20 6c 6f 6f 70 2e 0a 0a 0a 0a ithin.the.minimization.loop.....
d3c0 0a 4e 70 20 3d 20 73 69 7a 65 28 6d 2c 32 29 3b 0a 0a 69 66 20 73 69 7a 65 28 6d 2c 31 29 3c 33 .Np.=.size(m,2);..if.size(m,1)<3
d3e0 2c 0a 20 20 20 6d 20 3d 20 5b 6d 3b 6f 6e 65 73 28 31 2c 4e 70 29 5d 3b 0a 65 6e 64 3b 0a 0a 69 ,....m.=.[m;ones(1,Np)];.end;..i
d400 66 20 73 69 7a 65 28 4d 2c 31 29 3c 33 2c 0a 20 20 20 4d 20 3d 20 5b 4d 3b 6f 6e 65 73 28 31 2c f.size(M,1)<3,....M.=.[M;ones(1,
d420 4e 70 29 5d 3b 0a 65 6e 64 3b 0a 0a 0a 6d 20 3d 20 6d 20 2e 2f 20 28 6f 6e 65 73 28 33 2c 31 29 Np)];.end;...m.=.m../.(ones(3,1)
d440 2a 6d 28 33 2c 3a 29 29 3b 0a 4d 20 3d 20 4d 20 2e 2f 20 28 6f 6e 65 73 28 33 2c 31 29 2a 4d 28 *m(3,:));.M.=.M../.(ones(3,1)*M(
d460 33 2c 3a 29 29 3b 0a 0a 25 20 50 72 65 6e 6f 72 6d 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 70 6f 3,:));..%.Prenormalization.of.po
d480 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 28 76 65 72 79 20 69 6d 70 6f 72 74 61 6e 74 29 int.coordinates.(very.important)
d4a0 3a 0a 25 20 28 41 66 66 69 6e 65 20 6e 6f 72 6d 61 6c 69 7a 61 74 69 6f 6e 29 0a 0a 61 78 20 3d :.%.(Affine.normalization)..ax.=
d4c0 20 6d 28 31 2c 3a 29 3b 0a 61 79 20 3d 20 6d 28 32 2c 3a 29 3b 0a 0a 6d 78 78 20 3d 20 6d 65 61 .m(1,:);.ay.=.m(2,:);..mxx.=.mea
d4e0 6e 28 61 78 29 3b 0a 6d 79 79 20 3d 20 6d 65 61 6e 28 61 79 29 3b 0a 61 78 20 3d 20 61 78 20 2d n(ax);.myy.=.mean(ay);.ax.=.ax.-
d500 20 6d 78 78 3b 0a 61 79 20 3d 20 61 79 20 2d 20 6d 79 79 3b 0a 0a 73 63 78 78 20 3d 20 6d 65 61 .mxx;.ay.=.ay.-.myy;..scxx.=.mea
d520 6e 28 61 62 73 28 61 78 29 29 3b 0a 73 63 79 79 20 3d 20 6d 65 61 6e 28 61 62 73 28 61 79 29 29 n(abs(ax));.scyy.=.mean(abs(ay))
d540 3b 0a 0a 0a 48 6e 6f 72 6d 20 3d 20 5b 31 2f 73 63 78 78 20 30 20 2d 6d 78 78 2f 73 63 78 78 3b ;...Hnorm.=.[1/scxx.0.-mxx/scxx;
d560 30 20 31 2f 73 63 79 79 20 2d 6d 79 79 2f 73 63 79 79 3b 30 20 30 20 31 5d 3b 0a 69 6e 76 5f 48 0.1/scyy.-myy/scyy;0.0.1];.inv_H
d580 6e 6f 72 6d 20 3d 20 5b 73 63 78 78 20 30 20 6d 78 78 20 3b 20 30 20 73 63 79 79 20 6d 79 79 3b norm.=.[scxx.0.mxx.;.0.scyy.myy;
d5a0 20 30 20 30 20 31 5d 3b 0a 0a 6d 6e 20 3d 20 48 6e 6f 72 6d 2a 6d 3b 0a 0a 25 20 43 6f 6d 70 75 .0.0.1];..mn.=.Hnorm*m;..%.Compu
d5c0 74 65 20 74 68 65 20 68 6f 6d 6f 67 72 61 70 68 79 20 62 65 74 77 65 65 6e 20 6d 20 61 6e 64 20 te.the.homography.between.m.and.
d5e0 6d 6e 3a 0a 0a 25 20 42 75 69 6c 64 20 74 68 65 20 6d 61 74 72 69 78 3a 0a 0a 4c 20 3d 20 7a 65 mn:..%.Build.the.matrix:..L.=.ze
d600 72 6f 73 28 32 2a 4e 70 2c 39 29 3b 0a 0a 4c 28 31 3a 32 3a 32 2a 4e 70 2c 31 3a 33 29 20 3d 20 ros(2*Np,9);..L(1:2:2*Np,1:3).=.
d620 4d 27 3b 0a 4c 28 32 3a 32 3a 32 2a 4e 70 2c 34 3a 36 29 20 3d 20 4d 27 3b 0a 4c 28 31 3a 32 3a M';.L(2:2:2*Np,4:6).=.M';.L(1:2:
d640 32 2a 4e 70 2c 37 3a 39 29 20 3d 20 2d 28 28 6f 6e 65 73 28 33 2c 31 29 2a 6d 6e 28 31 2c 3a 29 2*Np,7:9).=.-((ones(3,1)*mn(1,:)
d660 29 2e 2a 20 4d 29 27 3b 0a 4c 28 32 3a 32 3a 32 2a 4e 70 2c 37 3a 39 29 20 3d 20 2d 28 28 6f 6e ).*.M)';.L(2:2:2*Np,7:9).=.-((on
d680 65 73 28 33 2c 31 29 2a 6d 6e 28 32 2c 3a 29 29 2e 2a 20 4d 29 27 3b 0a 0a 69 66 20 4e 70 20 3e es(3,1)*mn(2,:)).*.M)';..if.Np.>
d6a0 20 34 2c 0a 09 4c 20 3d 20 4c 27 2a 4c 3b 0a 65 6e 64 3b 0a 0a 5b 55 2c 53 2c 56 5d 20 3d 20 73 .4,..L.=.L'*L;.end;..[U,S,V].=.s
d6c0 76 64 28 4c 29 3b 0a 0a 68 68 20 3d 20 56 28 3a 2c 39 29 3b 0a 68 68 20 3d 20 68 68 2f 68 68 28 vd(L);..hh.=.V(:,9);.hh.=.hh/hh(
d6e0 39 29 3b 0a 0a 48 72 65 6d 20 3d 20 72 65 73 68 61 70 65 28 68 68 2c 33 2c 33 29 27 3b 0a 25 48 9);..Hrem.=.reshape(hh,3,3)';.%H
d700 72 65 6d 20 3d 20 48 72 65 6d 20 2f 20 48 72 65 6d 28 33 2c 33 29 3b 0a 0a 25 20 46 69 6e 61 6c rem.=.Hrem./.Hrem(3,3);..%.Final
d720 20 68 6f 6d 6f 67 72 61 70 68 79 3a 0a 0a 48 20 3d 20 69 6e 76 5f 48 6e 6f 72 6d 2a 48 72 65 6d .homography:..H.=.inv_Hnorm*Hrem
d740 3b 0a 0a 0a 25 25 25 20 48 6f 6d 6f 67 72 61 70 68 79 20 72 65 66 69 6e 65 6d 65 6e 74 20 69 66 ;...%%%.Homography.refinement.if
d760 20 74 68 65 72 65 20 61 72 65 20 6d 6f 72 65 20 74 68 61 6e 20 34 20 70 6f 69 6e 74 73 3a 0a 0a .there.are.more.than.4.points:..
d780 69 66 20 4e 70 20 3e 20 34 2c 0a 20 20 20 0a 20 20 20 25 20 46 69 6e 61 6c 20 72 65 66 69 6e 65 if.Np.>.4,........%.Final.refine
d7a0 6d 65 6e 74 3a 0a 20 20 20 0a 20 20 20 68 68 76 20 3d 20 72 65 73 68 61 70 65 28 48 27 2c 39 2c ment:........hhv.=.reshape(H',9,
d7c0 31 29 3b 0a 20 20 20 68 68 76 20 3d 20 68 68 76 28 31 3a 38 29 3b 0a 20 20 20 0a 20 20 20 66 6f 1);....hhv.=.hhv(1:8);........fo
d7e0 72 20 69 74 65 72 3d 31 3a 31 30 2c 0a 20 20 20 0a 09 09 6d 72 65 70 20 3d 20 48 20 2a 20 4d 3b r.iter=1:10,.......mrep.=.H.*.M;
d800 0a 0a 09 09 4a 20 3d 20 7a 65 72 6f 73 28 32 2a 4e 70 2c 38 29 3b 0a 0a 09 09 4d 4d 4d 20 3d 20 ....J.=.zeros(2*Np,8);....MMM.=.
d820 28 4d 20 2e 2f 20 28 6f 6e 65 73 28 33 2c 31 29 2a 6d 72 65 70 28 33 2c 3a 29 29 29 3b 0a 0a 09 (M../.(ones(3,1)*mrep(3,:)));...
d840 09 4a 28 31 3a 32 3a 32 2a 4e 70 2c 31 3a 33 29 20 3d 20 2d 4d 4d 4d 27 3b 0a 09 09 4a 28 32 3a .J(1:2:2*Np,1:3).=.-MMM';...J(2:
d860 32 3a 32 2a 4e 70 2c 34 3a 36 29 20 3d 20 2d 4d 4d 4d 27 3b 0a 09 09 0a 09 09 6d 72 65 70 20 3d 2:2*Np,4:6).=.-MMM';......mrep.=
d880 20 6d 72 65 70 20 2e 2f 20 28 6f 6e 65 73 28 33 2c 31 29 2a 6d 72 65 70 28 33 2c 3a 29 29 3b 0a .mrep../.(ones(3,1)*mrep(3,:));.
d8a0 0a 09 09 6d 5f 65 72 72 20 3d 20 6d 28 31 3a 32 2c 3a 29 20 2d 20 6d 72 65 70 28 31 3a 32 2c 3a ...m_err.=.m(1:2,:).-.mrep(1:2,:
d8c0 29 3b 0a 09 09 6d 5f 65 72 72 20 3d 20 6d 5f 65 72 72 28 3a 29 3b 0a 0a 09 09 4d 4d 4d 32 20 3d );...m_err.=.m_err(:);....MMM2.=
d8e0 20 28 6f 6e 65 73 28 33 2c 31 29 2a 6d 72 65 70 28 31 2c 3a 29 29 20 2e 2a 20 4d 4d 4d 3b 0a 09 .(ones(3,1)*mrep(1,:))..*.MMM;..
d900 09 4d 4d 4d 33 20 3d 20 28 6f 6e 65 73 28 33 2c 31 29 2a 6d 72 65 70 28 32 2c 3a 29 29 20 2e 2a .MMM3.=.(ones(3,1)*mrep(2,:))..*
d920 20 4d 4d 4d 3b 0a 0a 09 09 4a 28 31 3a 32 3a 32 2a 4e 70 2c 37 3a 38 29 20 3d 20 4d 4d 4d 32 28 .MMM;....J(1:2:2*Np,7:8).=.MMM2(
d940 31 3a 32 2c 3a 29 27 3b 0a 09 09 4a 28 32 3a 32 3a 32 2a 4e 70 2c 37 3a 38 29 20 3d 20 4d 4d 4d 1:2,:)';...J(2:2:2*Np,7:8).=.MMM
d960 33 28 31 3a 32 2c 3a 29 27 3b 0a 0a 09 09 4d 4d 4d 20 3d 20 28 4d 20 2e 2f 20 28 6f 6e 65 73 28 3(1:2,:)';....MMM.=.(M../.(ones(
d980 33 2c 31 29 2a 6d 72 65 70 28 33 2c 3a 29 29 29 27 3b 0a 0a 09 09 68 68 5f 69 6e 6e 6f 76 20 20 3,1)*mrep(3,:)))';....hh_innov..
d9a0 3d 20 69 6e 76 28 4a 27 2a 4a 29 2a 4a 27 2a 6d 5f 65 72 72 3b 0a 0a 09 09 68 68 76 5f 75 70 20 =.inv(J'*J)*J'*m_err;....hhv_up.
d9c0 3d 20 68 68 76 20 2d 20 68 68 5f 69 6e 6e 6f 76 3b 0a 0a 09 09 48 5f 75 70 20 3d 20 72 65 73 68 =.hhv.-.hh_innov;....H_up.=.resh
d9e0 61 70 65 28 5b 68 68 76 5f 75 70 3b 31 5d 2c 33 2c 33 29 27 3b 0a 0a 09 09 25 6e 6f 72 6d 28 6d ape([hhv_up;1],3,3)';....%norm(m
da00 5f 65 72 72 29 0a 09 09 25 6e 6f 72 6d 28 68 68 5f 69 6e 6e 6f 76 29 0a 0a 09 09 68 68 76 20 3d _err)...%norm(hh_innov)....hhv.=
da20 20 68 68 76 5f 75 70 3b 0a 20 20 20 20 20 20 48 20 3d 20 48 5f 75 70 3b 0a 20 20 20 20 20 20 0a .hhv_up;.......H.=.H_up;........
da40 20 20 20 65 6e 64 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 0a 0a 0a 0a 72 65 74 75 72 6e 3b 0a 0a 25 ...end;.....end;......return;..%
da60 74 65 73 74 20 6f 66 20 4a 61 63 6f 62 69 61 6e 0a 0a 6d 72 65 70 20 3d 20 48 2a 4d 3b 0a 6d 72 test.of.Jacobian..mrep.=.H*M;.mr
da80 65 70 20 3d 20 6d 72 65 70 20 2e 2f 20 28 6f 6e 65 73 28 33 2c 31 29 2a 6d 72 65 70 28 33 2c 3a ep.=.mrep../.(ones(3,1)*mrep(3,:
daa0 29 29 3b 0a 0a 6d 5f 65 72 72 20 3d 20 6d 72 65 70 28 31 3a 32 2c 3a 29 20 2d 20 6d 28 31 3a 32 ));..m_err.=.mrep(1:2,:).-.m(1:2
dac0 2c 3a 29 3b 0a 66 69 67 75 72 65 28 38 29 3b 0a 70 6c 6f 74 28 6d 5f 65 72 72 28 31 2c 3a 29 2c ,:);.figure(8);.plot(m_err(1,:),
dae0 6d 5f 65 72 72 28 32 2c 3a 29 2c 27 72 2b 27 29 3b 0a 73 74 64 28 6d 5f 65 72 72 27 29 0a 65 20 m_err(2,:),'r+');.std(m_err').e.
db00 34 20 63 6f 72 6e 65 72 73 0a 20 20 20 69 6e 64 5f 6f 72 69 67 20 3d 20 28 6e 5f 73 71 5f 78 2b 4.corners....ind_orig.=.(n_sq_x+
db20 31 29 2a 6e 5f 73 71 5f 79 20 2b 20 31 3b 0a 20 20 20 78 6f 72 69 67 20 3d 20 67 72 69 64 5f 70 1)*n_sq_y.+.1;....xorig.=.grid_p
db40 74 73 28 31 2c 69 6e 64 5f 6f 72 69 67 29 3b 0a 20 20 20 79 6f 72 69 67 20 3d 20 67 72 69 64 5f ts(1,ind_orig);....yorig.=.grid_
db60 70 74 73 28 32 2c 69 6e 64 5f 6f 72 69 67 29 3b 0a 20 20 20 64 78 70 6f 73 20 3d 20 6d 65 61 6e pts(2,ind_orig);....dxpos.=.mean
db80 28 5b 67 72 69 64 5f 70 74 73 28 3a 2c 69 6e 64 5f 6f 72 69 67 29 20 67 72 69 64 5f 70 74 73 28 ([grid_pts(:,ind_orig).grid_pts(
dba0 3a 2c 69 6e 64 5f 6f 72 69 67 2b 31 29 5d 27 29 3b 0a 20 20 20 64 79 70 6f 73 20 3d 20 6d 65 61 :,ind_orig+1)]');....dypos.=.mea
dbc0 6e 28 5b 67 72 69 64 5f 70 74 73 28 3a 2c 69 6e 64 5f 6f 72 69 67 29 20 67 72 69 64 5f 70 74 73 n([grid_pts(:,ind_orig).grid_pts
dbe0 28 3a 2c 69 6e 64 5f 6f 72 69 67 2d 6e 5f 73 71 5f 78 2d 31 29 5d 27 29 3b 0a 20 20 20 0a 20 20 (:,ind_orig-n_sq_x-1)]');.......
dc00 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 2e 6d 00 TOOLBOX_calib/comp_distortion.m.
dc20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dc40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dc60 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
dc80 20 20 20 32 31 37 33 20 20 37 30 32 34 30 33 37 33 31 32 20 20 31 32 30 31 31 00 20 00 00 00 00 ...2173..7024037312..12011......
dca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dcc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dd00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dd20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dd40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dd60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dd80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dda0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ddc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dde0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
de00 66 75 6e 63 74 69 6f 6e 20 5b 78 5f 63 6f 6d 70 5d 20 20 3d 20 63 6f 6d 70 5f 64 69 73 74 6f 72 function.[x_comp]..=.comp_distor
de20 74 69 6f 6e 28 78 5f 64 69 73 74 2c 6b 32 29 3b 0a 0a 25 20 20 20 20 20 20 20 5b 78 5f 63 6f 6d tion(x_dist,k2);..%.......[x_com
de40 70 5d 20 3d 20 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 28 78 5f 64 69 73 74 2c 6b 32 29 3b p].=.comp_distortion(x_dist,k2);
de60 0a 25 20 20 20 20 20 20 20 0a 25 20 20 20 20 20 20 20 63 6f 6d 70 65 6e 73 61 74 65 73 20 74 68 .%........%.......compensates.th
de80 65 20 72 61 64 69 61 6c 20 64 69 73 74 6f 72 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 61 6d 65 72 e.radial.distortion.of.the.camer
dea0 61 0a 25 20 20 20 20 20 20 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 20 70 6c 61 6e 65 2e 0a 25 20 a.%.......on.the.image.plane..%.
dec0 20 20 20 20 20 20 0a 25 20 20 20 20 20 20 20 78 5f 64 69 73 74 20 3a 20 74 68 65 20 69 6d 61 67 .......%.......x_dist.:.the.imag
dee0 65 20 70 6f 69 6e 74 73 20 67 6f 74 20 77 69 74 68 6f 75 74 20 63 6f 6e 73 69 64 65 72 69 6e 67 e.points.got.without.considering
df00 20 74 68 65 0a 25 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 64 69 61 6c 20 64 69 73 .the.%................radial.dis
df20 74 6f 72 74 69 6f 6e 2e 0a 25 20 20 20 20 20 20 20 78 20 3a 20 54 68 65 20 69 6d 61 67 65 20 70 tortion..%.......x.:.The.image.p
df40 6c 61 6e 65 20 70 6f 69 6e 74 73 20 61 66 74 65 72 20 63 6f 72 72 65 63 74 69 6f 6e 20 66 6f 72 lane.points.after.correction.for
df60 20 74 68 65 20 64 69 73 74 6f 72 74 69 6f 6e 0a 25 20 20 20 20 20 20 20 0a 25 20 20 20 20 20 20 .the.distortion.%........%......
df80 20 78 20 61 6e 64 20 78 5f 64 69 73 74 20 61 72 65 20 32 78 4e 20 61 72 72 61 79 73 0a 25 0a 25 .x.and.x_dist.are.2xN.arrays.%.%
dfa0 20 20 20 20 20 20 20 4e 4f 54 45 20 3a 20 54 68 69 73 20 63 6f 6d 70 65 6e 73 61 74 69 6f 6e 20 .......NOTE.:.This.compensation.
dfc0 68 61 73 20 74 6f 20 62 65 20 64 6f 6e 65 20 61 66 74 65 72 20 74 68 65 20 73 75 62 73 74 72 61 has.to.be.done.after.the.substra
dfe0 63 74 69 6f 6e 0a 25 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 20 74 68 65 20 63 65 6e 74 ction.%..............of.the.cent
e000 65 72 20 6f 66 20 70 72 6f 6a 65 63 74 69 6f 6e 2c 20 61 6e 64 20 64 69 76 69 73 69 6f 6e 20 62 er.of.projection,.and.division.b
e020 79 20 74 68 65 20 66 6f 63 61 6c 0a 25 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 6e 67 74 y.the.focal.%..............lengt
e040 68 2e 0a 25 20 20 20 20 20 20 20 0a 25 20 20 20 20 20 20 20 28 64 6f 20 69 74 20 75 70 20 74 6f h..%........%.......(do.it.up.to
e060 20 61 20 73 65 63 6f 6e 64 20 6f 72 64 65 72 20 61 70 70 72 6f 78 69 6d 61 74 69 6f 6e 29 0a 0a .a.second.order.approximation)..
e080 5b 74 77 6f 2c 4e 5d 20 3d 20 73 69 7a 65 28 78 5f 64 69 73 74 29 3b 0a 0a 69 66 20 28 74 77 6f [two,N].=.size(x_dist);..if.(two
e0a0 20 7e 3d 20 32 20 29 2c 20 0a 20 65 72 72 6f 72 28 27 45 52 52 4f 52 20 3a 20 54 68 65 20 64 69 .~=.2.),...error('ERROR.:.The.di
e0c0 6d 65 6e 73 69 6f 6e 20 6f 66 20 74 68 65 20 70 6f 69 6e 74 73 20 73 68 6f 75 6c 64 20 62 65 20 mension.of.the.points.should.be.
e0e0 32 78 4e 27 29 3b 0a 65 6e 64 3b 0a 0a 69 66 20 6c 65 6e 67 74 68 28 6b 32 29 20 3e 20 32 2c 0a 2xN');.end;..if.length(k2).>.2,.
e100 20 20 20 5b 78 5f 63 6f 6d 70 5d 20 20 3d 20 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 5f 6f ...[x_comp]..=.comp_distortion_o
e120 75 6c 75 28 78 5f 64 69 73 74 2c 6b 32 29 3b 0a 65 6c 73 65 0a 20 20 20 0a 72 61 64 69 75 73 5f ulu(x_dist,k2);.else.....radius_
e140 32 3d 20 78 5f 64 69 73 74 28 31 2c 3a 29 2e 5e 32 20 2b 20 78 5f 64 69 73 74 28 32 2c 3a 29 2e 2=.x_dist(1,:).^2.+.x_dist(2,:).
e160 5e 32 3b 0a 72 61 64 69 61 6c 5f 64 69 73 74 6f 72 74 69 6f 6e 20 3d 20 31 20 2b 20 6f 6e 65 73 ^2;.radial_distortion.=.1.+.ones
e180 28 32 2c 31 29 2a 28 6b 32 20 2a 20 72 61 64 69 75 73 5f 32 29 3b 0a 72 61 64 69 75 73 5f 32 5f (2,1)*(k2.*.radius_2);.radius_2_
e1a0 63 6f 6d 70 20 3d 20 28 78 5f 64 69 73 74 28 31 2c 3a 29 2e 5e 32 20 2b 20 78 5f 64 69 73 74 28 comp.=.(x_dist(1,:).^2.+.x_dist(
e1c0 32 2c 3a 29 2e 5e 32 29 20 2e 2f 20 72 61 64 69 61 6c 5f 64 69 73 74 6f 72 74 69 6f 6e 28 31 2c 2,:).^2)../.radial_distortion(1,
e1e0 3a 29 3b 0a 72 61 64 69 61 6c 5f 64 69 73 74 6f 72 74 69 6f 6e 20 3d 20 31 20 2b 20 6f 6e 65 73 :);.radial_distortion.=.1.+.ones
e200 28 32 2c 31 29 2a 28 6b 32 20 2a 20 72 61 64 69 75 73 5f 32 5f 63 6f 6d 70 29 3b 0a 78 5f 63 6f (2,1)*(k2.*.radius_2_comp);.x_co
e220 6d 70 20 3d 20 78 5f 64 69 73 74 20 2e 2f 20 72 61 64 69 61 6c 5f 64 69 73 74 6f 72 74 69 6f 6e mp.=.x_dist../.radial_distortion
e240 3b 0a 0a 65 6e 64 3b 0a 0a 25 25 20 46 75 6e 63 74 69 6f 6e 20 63 6f 6d 70 6c 65 74 65 6c 79 20 ;..end;..%%.Function.completely.
e260 63 68 65 63 6b 65 64 20 3a 20 49 74 20 77 6f 72 6b 73 20 66 69 6e 65 20 21 21 21 12 69 6e 69 74 checked.:.It.works.fine.!!!.init
e280 5f 63 61 6c 69 62 5f 70 61 72 61 6d 2e 6d 00 6d 00 00 03 c8 00 02 35 d3 00 1c 00 0f 6c 6f 61 64 _calib_param.m.m......5.....load
e2a0 69 6e 67 5f 63 61 6c 69 62 2e 6d 00 00 00 03 e4 00 02 35 d4 00 20 00 12 4d 75 6c 74 69 5f 43 61 ing_calib.m.......5.....Multi_Ca
e2c0 6c 69 62 5f 6f 75 6c 75 2e 6d 00 69 00 00 04 00 00 02 35 d5 00 20 00 12 6d 75 6c 74 69 5f 65 72 lib_oulu.m.i......5.....multi_er
e2e0 72 6f 72 5f 6f 75 6c 75 2e 6d 00 75 00 00 04 14 00 02 35 d6 00 18 00 09 70 67 6d 72 65 61 64 2e ror_oulu.m.u......5.....pgmread.
e300 6d 00 65 72 00 00 04 2c 00 02 35 d7 00 1c 00 0f 70 72 6f 6a 65 63 74 32 5f 6f 75 6c 75 2e 6d 00 m.er...,..5.....project2_oulu.m.
e320 00 00 04 44 00 02 35 d8 00 1c 00 0f 70 72 6f 6a 65 63 74 65 64 47 72 69 64 2e 6d 00 00 00 04 60 ...D..5.....projectedGrid.m....`
e340 00 02 35 d9 00 20 00 10 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 2e 6d 00 47 72 69 00 00 04 74 ..5.....project_points.m.Gri...t
e360 00 02 35 da 00 18 00 09 72 65 61 64 72 61 73 2e 6d 00 74 5f 00 00 04 94 00 02 35 db 00 24 00 15 ..5.....readras.m.t_......5..$..
e380 72 65 63 6f 6d 70 5f 63 6f 72 6e 65 72 5f 63 61 6c 69 62 2e 6d 00 69 6e 00 00 04 a4 00 02 35 dc recomp_corner_calib.m.in......5.
e3a0 00 14 00 06 72 65 63 74 2e 6d 00 63 00 00 04 c0 00 02 35 dd 00 20 00 12 52 65 63 74 61 6e 67 6c ....rect.m.c......5.....Rectangl
e3c0 65 32 53 71 75 61 72 65 2e 6d 00 74 00 00 04 dc 00 02 35 de 00 20 00 11 72 65 70 72 6f 6a 65 63 e2Square.m.t......5.....reprojec
e3e0 74 5f 63 61 6c 69 62 2e 6d 00 72 65 00 00 04 f0 00 02 35 df 00 18 00 0b 72 6f 64 72 69 67 75 65 t_calib.m.re......5.....rodrigue
e400 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 32 2e 6d TOOLBOX_calib/comp_distortion2.m
e420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e460 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
e480 20 20 20 32 37 31 34 20 20 37 30 32 34 30 33 37 33 31 33 20 20 31 32 30 37 35 00 20 00 00 00 00 ...2714..7024037313..12075......
e4a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e4c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e4e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e5a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e5c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e5e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e600 66 75 6e 63 74 69 6f 6e 20 5b 78 5f 63 6f 6d 70 5d 20 20 3d 20 63 6f 6d 70 5f 64 69 73 74 6f 72 function.[x_comp]..=.comp_distor
e620 74 69 6f 6e 28 78 5f 64 69 73 74 2c 6b 32 29 3b 0a 0a 25 20 20 20 20 20 20 20 5b 78 5f 63 6f 6d tion(x_dist,k2);..%.......[x_com
e640 70 5d 20 3d 20 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 28 78 5f 64 69 73 74 2c 6b 32 29 3b p].=.comp_distortion(x_dist,k2);
e660 0a 25 20 20 20 20 20 20 20 0a 25 20 20 20 20 20 20 20 63 6f 6d 70 65 6e 73 61 74 65 73 20 74 68 .%........%.......compensates.th
e680 65 20 72 61 64 69 61 6c 20 64 69 73 74 6f 72 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 61 6d 65 72 e.radial.distortion.of.the.camer
e6a0 61 0a 25 20 20 20 20 20 20 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 20 70 6c 61 6e 65 2e 0a 25 20 a.%.......on.the.image.plane..%.
e6c0 20 20 20 20 20 20 0a 25 20 20 20 20 20 20 20 78 5f 64 69 73 74 20 3a 20 74 68 65 20 69 6d 61 67 .......%.......x_dist.:.the.imag
e6e0 65 20 70 6f 69 6e 74 73 20 67 6f 74 20 77 69 74 68 6f 75 74 20 63 6f 6e 73 69 64 65 72 69 6e 67 e.points.got.without.considering
e700 20 74 68 65 0a 25 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 64 69 61 6c 20 64 69 73 .the.%................radial.dis
e720 74 6f 72 74 69 6f 6e 2e 0a 25 20 20 20 20 20 20 20 6b 32 3a 20 52 61 64 69 61 6c 20 64 69 73 74 tortion..%.......k2:.Radial.dist
e740 6f 72 74 69 6f 6e 20 66 61 63 74 6f 72 0a 25 0a 25 20 20 20 20 20 20 20 78 20 3a 20 54 68 65 20 ortion.factor.%.%.......x.:.The.
e760 69 6d 61 67 65 20 70 6c 61 6e 65 20 70 6f 69 6e 74 73 20 61 66 74 65 72 20 63 6f 72 72 65 63 74 image.plane.points.after.correct
e780 69 6f 6e 20 66 6f 72 20 74 68 65 20 64 69 73 74 6f 72 74 69 6f 6e 0a 25 20 20 20 20 20 20 20 0a ion.for.the.distortion.%........
e7a0 25 20 20 20 20 20 20 20 78 20 61 6e 64 20 78 5f 64 69 73 74 20 61 72 65 20 32 78 4e 20 61 72 72 %.......x.and.x_dist.are.2xN.arr
e7c0 61 79 73 0a 25 0a 25 20 20 20 20 20 20 20 4e 4f 54 45 20 3a 20 54 68 69 73 20 63 6f 6d 70 65 6e ays.%.%.......NOTE.:.This.compen
e7e0 73 61 74 69 6f 6e 20 68 61 73 20 74 6f 20 62 65 20 64 6f 6e 65 20 61 66 74 65 72 20 74 68 65 20 sation.has.to.be.done.after.the.
e800 73 75 62 73 74 72 61 63 74 69 6f 6e 0a 25 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 20 74 substraction.%..............of.t
e820 68 65 20 63 65 6e 74 65 72 20 6f 66 20 70 72 6f 6a 65 63 74 69 6f 6e 2c 20 61 6e 64 20 64 69 76 he.center.of.projection,.and.div
e840 69 73 69 6f 6e 20 62 79 20 74 68 65 20 66 6f 63 61 6c 0a 25 20 20 20 20 20 20 20 20 20 20 20 20 ision.by.the.focal.%............
e860 20 20 6c 65 6e 67 74 68 2e 0a 25 20 20 20 20 20 20 20 0a 25 20 20 53 6f 6c 76 65 20 66 6f 72 20 ..length..%........%..Solve.for.
e880 63 75 62 69 63 20 72 6f 6f 74 73 20 75 73 69 6e 67 20 6d 65 74 68 6f 64 20 66 72 6f 6d 20 4e 75 cubic.roots.using.method.from.Nu
e8a0 6d 65 72 69 63 61 6c 20 52 65 63 69 70 65 73 20 69 6e 20 43 20 32 6e 64 20 45 64 2e 0a 25 20 20 merical.Recipes.in.C.2nd.Ed..%..
e8c0 70 61 67 65 73 20 31 38 34 2d 31 38 35 2e 0a 0a 0a 25 20 43 61 6c 69 66 6f 72 6e 69 61 20 49 6e pages.184-185....%.California.In
e8e0 73 74 69 74 75 74 65 20 6f 66 20 54 65 63 68 6e 6f 6c 6f 67 79 0a 25 20 28 63 29 20 4a 65 61 6e stitute.of.Technology.%.(c).Jean
e900 2d 59 76 65 73 20 42 6f 75 67 75 65 74 20 2d 20 41 70 72 69 6c 20 32 37 74 68 2c 20 31 39 39 38 -Yves.Bouguet.-.April.27th,.1998
e920 0a 0a 25 20 66 75 6c 6c 79 20 63 68 65 63 6b 65 64 21 20 4a 59 42 2c 20 61 70 72 69 6c 20 32 37 ..%.fully.checked!.JYB,.april.27
e940 74 68 2c 20 31 39 39 38 20 2d 20 32 61 6d 0a 0a 69 66 20 6b 32 20 7e 3d 20 30 2c 0a 0a 5b 74 77 th,.1998.-.2am..if.k2.~=.0,..[tw
e960 6f 2c 4e 5d 20 3d 20 73 69 7a 65 28 78 5f 64 69 73 74 29 3b 0a 0a 69 66 20 28 74 77 6f 20 7e 3d o,N].=.size(x_dist);..if.(two.~=
e980 20 32 20 29 2c 20 0a 20 65 72 72 6f 72 28 27 45 52 52 4f 52 20 3a 20 54 68 65 20 64 69 6d 65 6e .2.),...error('ERROR.:.The.dimen
e9a0 73 69 6f 6e 20 6f 66 20 74 68 65 20 70 6f 69 6e 74 73 20 73 68 6f 75 6c 64 20 62 65 20 32 78 4e sion.of.the.points.should.be.2xN
e9c0 27 29 3b 0a 65 6e 64 3b 0a 0a 0a 70 68 20 3d 20 61 74 61 6e 32 28 78 5f 64 69 73 74 28 32 2c 3a ');.end;...ph.=.atan2(x_dist(2,:
e9e0 29 2c 78 5f 64 69 73 74 28 31 2c 3a 29 29 3b 0a 0a 51 20 3d 20 2d 31 2f 28 33 2a 6b 32 29 3b 0a ),x_dist(1,:));..Q.=.-1/(3*k2);.
ea00 52 20 3d 20 2d 78 5f 64 69 73 74 28 31 2c 3a 29 2e 2f 28 32 2a 6b 32 2a 63 6f 73 28 70 68 29 29 R.=.-x_dist(1,:)./(2*k2*cos(ph))
ea20 3b 0a 0a 52 32 20 3d 20 52 2e 5e 32 3b 0a 51 33 20 3d 20 51 5e 33 3b 0a 0a 0a 69 66 20 6b 32 20 ;..R2.=.R.^2;.Q3.=.Q^3;...if.k2.
ea40 3c 20 30 2c 0a 20 20 20 0a 20 20 20 25 20 74 68 69 73 20 77 6f 72 6b 73 20 69 6e 20 61 6c 6c 20 <.0,........%.this.works.in.all.
ea60 70 72 61 63 74 69 63 61 6c 20 73 69 74 75 61 74 69 6f 6e 73 20 28 69 74 20 73 74 61 72 74 73 20 practical.situations.(it.starts.
ea80 66 61 69 6c 69 6e 67 20 66 6f 72 20 76 65 72 79 20 6c 61 72 67 65 0a 20 20 20 25 20 76 61 6c 75 failing.for.very.large....%.valu
eaa0 65 73 20 6f 66 20 6b 32 29 0a 20 20 20 20 20 20 0a 20 20 20 74 68 20 3d 20 61 63 6f 73 28 52 2e es.of.k2)...........th.=.acos(R.
eac0 2f 73 71 72 74 28 51 33 29 29 3b 0a 20 20 20 72 20 3d 20 2d 32 2a 73 71 72 74 28 51 29 2a 63 6f /sqrt(Q3));....r.=.-2*sqrt(Q)*co
eae0 73 28 28 74 68 2d 32 2a 70 69 29 2f 33 29 3b 0a 0a 65 6c 73 65 0a 20 20 20 0a 20 20 20 25 20 6e s((th-2*pi)/3);..else........%.n
eb00 6f 74 65 3a 20 74 68 69 73 20 61 6c 77 61 79 73 20 77 6f 72 6b 73 2c 20 65 76 65 6e 20 66 6f 72 ote:.this.always.works,.even.for
eb20 20 72 69 64 69 63 75 6c 6f 75 73 20 76 61 6c 75 65 73 20 6f 66 20 6b 32 0a 20 20 20 0a 20 20 20 .ridiculous.values.of.k2........
eb40 41 20 3d 20 28 73 71 72 74 28 52 32 2d 51 33 29 2d 52 29 2e 5e 28 31 2f 33 29 3b 20 0a 20 20 20 A.=.(sqrt(R2-Q3)-R).^(1/3);.....
eb60 42 20 3d 20 51 2a 28 31 2e 2f 41 29 3b 0a 20 20 20 72 20 3d 20 28 41 2b 42 29 3b 0a 20 20 0a 65 B.=.Q*(1./A);....r.=.(A+B);....e
eb80 6e 64 3b 0a 0a 78 5f 63 6f 6d 70 20 3d 20 5b 72 2e 2a 63 6f 73 28 70 68 29 3b 20 72 2e 2a 73 69 nd;..x_comp.=.[r.*cos(ph);.r.*si
eba0 6e 28 70 68 29 5d 3b 0a 0a 65 6c 73 65 0a 20 20 20 0a 20 20 20 78 5f 63 6f 6d 70 20 3d 20 78 5f n(ph)];..else........x_comp.=.x_
ebc0 64 69 73 74 3b 0a 0a 65 6e 64 3b 0a 6c 6f 61 64 70 70 6d 2e 6d 00 61 64 00 00 06 b4 00 02 36 ae dist;..end;.loadppm.m.ad......6.
ebe0 00 18 00 09 73 61 76 65 69 6e 72 2e 6d 00 61 64 00 00 06 c8 00 02 36 af 00 18 00 09 73 61 76 65 ....saveinr.m.ad......6.....save
ec00 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 5f 6f 75 TOOLBOX_calib/comp_distortion_ou
ec20 6c 75 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 lu.m............................
ec40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ec60 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
ec80 20 20 20 32 32 32 33 20 20 37 30 32 34 30 33 37 33 31 34 20 20 31 33 30 35 33 00 20 00 00 00 00 ...2223..7024037314..13053......
eca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ecc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ece0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ed00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ed20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ed40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ed60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ed80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
eda0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
edc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ede0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ee00 66 75 6e 63 74 69 6f 6e 20 5b 78 5d 20 3d 20 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 5f 6f function.[x].=.comp_distortion_o
ee20 75 6c 75 28 78 64 2c 6b 29 3b 0a 0a 25 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 5f 6f 75 6c ulu(xd,k);..%comp_distortion_oul
ee40 75 2e 6d 0a 25 0a 25 5b 78 5d 20 3d 20 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 5f 6f 75 6c u.m.%.%[x].=.comp_distortion_oul
ee60 75 28 78 64 2c 6b 29 0a 25 0a 25 43 6f 6d 70 65 6e 73 61 74 65 73 20 66 6f 72 20 72 61 64 69 61 u(xd,k).%.%Compensates.for.radia
ee80 6c 20 61 6e 64 20 74 61 6e 67 65 6e 74 69 61 6c 20 64 69 73 74 6f 72 74 69 6f 6e 2e 20 4d 6f 64 l.and.tangential.distortion..Mod
eea0 65 6c 20 46 72 6f 6d 20 4f 75 6c 75 20 75 6e 69 76 65 72 73 69 74 79 2e 0a 25 46 6f 72 20 6d 6f el.From.Oulu.university..%For.mo
eec0 72 65 20 69 6e 66 6f 72 6d 61 74 69 6e 6f 20 61 62 6f 75 74 20 74 68 65 20 64 69 73 74 6f 72 74 re.informatino.about.the.distort
eee0 69 6f 6e 20 6d 6f 64 65 6c 2c 20 63 68 65 63 6b 20 74 68 65 20 66 6f 72 77 61 72 64 20 70 72 6f ion.model,.check.the.forward.pro
ef00 6a 65 63 74 69 6f 6e 20 6d 61 70 70 69 6e 67 20 66 75 6e 63 74 69 6f 6e 3a 0a 25 70 72 6f 6a 65 jection.mapping.function:.%proje
ef20 63 74 5f 70 6f 69 6e 74 73 2e 6d 0a 25 0a 25 49 4e 50 55 54 3a 20 78 64 3a 20 64 69 73 74 6f 72 ct_points.m.%.%INPUT:.xd:.distor
ef40 74 65 64 20 28 6e 6f 72 6d 61 6c 69 7a 65 64 29 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 ted.(normalized).point.coordinat
ef60 65 73 20 69 6e 20 74 68 65 20 69 6d 61 67 65 20 70 6c 61 6e 65 20 28 32 78 4e 20 6d 61 74 72 69 es.in.the.image.plane.(2xN.matri
ef80 78 29 0a 25 20 20 20 20 20 20 20 6b 3a 20 44 69 73 74 6f 72 74 69 6f 6e 20 63 6f 65 66 66 69 63 x).%.......k:.Distortion.coeffic
efa0 69 65 6e 74 73 20 28 72 61 64 69 61 6c 20 61 6e 64 20 74 61 6e 67 65 6e 74 69 61 6c 29 20 28 34 ients.(radial.and.tangential).(4
efc0 78 31 20 76 65 63 74 6f 72 29 0a 25 0a 25 4f 55 54 50 55 54 3a 20 78 3a 20 75 6e 64 69 73 74 6f x1.vector).%.%OUTPUT:.x:.undisto
efe0 72 74 65 64 20 28 6e 6f 72 6d 61 6c 69 7a 65 64 29 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 rted.(normalized).point.coordina
f000 74 65 73 20 69 6e 20 74 68 65 20 69 6d 61 67 65 20 70 6c 61 6e 65 20 28 32 78 4e 20 6d 61 74 72 tes.in.the.image.plane.(2xN.matr
f020 69 78 29 0a 25 0a 25 4d 65 74 68 6f 64 3a 20 49 74 65 72 61 74 69 76 65 20 6d 65 74 68 6f 64 20 ix).%.%Method:.Iterative.method.
f040 66 6f 72 20 63 6f 6d 70 65 6e 73 61 74 69 6f 6e 2e 0a 25 0a 25 4e 4f 54 45 3a 20 54 68 69 73 20 for.compensation..%.%NOTE:.This.
f060 63 6f 6d 70 65 6e 73 61 74 69 6f 6e 20 68 61 73 20 74 6f 20 62 65 20 64 6f 6e 65 20 61 66 74 65 compensation.has.to.be.done.afte
f080 72 20 74 68 65 20 73 75 62 74 72 61 63 74 69 6f 6e 0a 25 20 20 20 20 20 20 6f 66 20 74 68 65 20 r.the.subtraction.%......of.the.
f0a0 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 2c 20 61 6e 64 20 64 69 76 69 73 69 6f 6e 20 62 79 principal.point,.and.division.by
f0c0 20 74 68 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 2e 0a 0a 0a 69 66 20 6c 65 6e 67 74 68 28 6b .the.focal.length....if.length(k
f0e0 29 20 3c 20 34 2c 0a 20 20 20 0a 20 20 20 5b 78 5d 20 3d 20 63 6f 6d 70 5f 64 69 73 74 6f 72 74 ).<.4,........[x].=.comp_distort
f100 69 6f 6e 28 78 64 2c 6b 29 3b 0a 20 20 20 0a 65 6c 73 65 0a 20 20 20 0a 20 20 20 0a 20 20 20 6b ion(xd,k);.....else............k
f120 31 20 3d 20 6b 28 31 29 3b 0a 20 20 20 6b 32 20 3d 20 6b 28 32 29 3b 0a 20 20 20 70 31 20 3d 20 1.=.k(1);....k2.=.k(2);....p1.=.
f140 6b 28 33 29 3b 0a 20 20 20 70 32 20 3d 20 6b 28 34 29 3b 0a 20 20 20 0a 20 20 20 78 20 3d 20 78 k(3);....p2.=.k(4);........x.=.x
f160 64 3b 20 09 09 09 09 25 20 69 6e 69 74 69 61 6c 20 67 75 65 73 73 0a 20 20 20 0a 20 20 20 66 6f d;.....%.initial.guess........fo
f180 72 20 6b 6b 3d 31 3a 35 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 72 5f 32 20 3d 20 73 75 6d r.kk=1:5;..............r_2.=.sum
f1a0 28 78 2e 5e 32 29 3b 0a 20 20 20 20 20 20 6b 5f 72 61 64 69 61 6c 20 3d 20 20 31 20 2b 20 6b 31 (x.^2);.......k_radial.=..1.+.k1
f1c0 20 2a 20 72 5f 32 20 2b 20 6b 32 20 2a 20 72 5f 32 2e 5e 32 3b 0a 20 20 20 20 20 20 64 65 6c 74 .*.r_2.+.k2.*.r_2.^2;.......delt
f1e0 61 5f 78 20 3d 20 5b 32 2a 70 31 2a 78 28 31 2c 3a 29 2e 2a 78 28 32 2c 3a 29 20 2b 20 70 32 2a a_x.=.[2*p1*x(1,:).*x(2,:).+.p2*
f200 28 72 5f 32 20 2b 20 32 2a 78 28 31 2c 3a 29 2e 5e 32 29 20 3b 0a 09 20 20 20 20 70 31 20 2a 20 (r_2.+.2*x(1,:).^2).;......p1.*.
f220 28 72 5f 32 20 2b 20 32 2a 78 28 32 2c 3a 29 2e 5e 32 29 2b 32 2a 70 32 2a 78 28 31 2c 3a 29 2e (r_2.+.2*x(2,:).^2)+2*p2*x(1,:).
f240 2a 78 28 32 2c 3a 29 5d 3b 0a 20 20 20 20 20 20 78 20 3d 20 28 78 64 20 2d 20 64 65 6c 74 61 5f *x(2,:)];.......x.=.(xd.-.delta_
f260 78 29 2e 2f 28 6f 6e 65 73 28 32 2c 31 29 2a 6b 5f 72 61 64 69 61 6c 29 3b 0a 20 20 20 20 20 20 x)./(ones(2,1)*k_radial);.......
f280 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a c8 00 02 36 a4 00 28 00 1a 73 65 6c 65 ....end;.....end;.....6..(..sele
f2a0 63 74 5f 73 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 65 72 33 44 2e 6d 00 a4 00 00 05 dc 00 02 36 a5 ct_sol_with_center3D.m........6.
f2c0 00 18 00 09 73 74 61 72 74 75 70 2e 6d 00 6e 74 00 00 05 f0 00 02 36 a6 00 18 00 09 74 65 73 74 ....startup.m.nt......6.....test
f2e0 5f 33 64 2e 6d 00 61 72 00 00 06 00 00 02 33 c0 00 14 00 06 69 73 33 44 2e 6d 00 09 00 00 06 1c _3d.m.ar......3.....is3D.m......
f300 00 02 36 a7 00 20 00 11 75 6e 64 69 73 74 6f 72 74 5f 69 6d 61 67 65 2e 6d 00 00 09 00 00 06 34 ..6.....undistort_image.m......4
f320 00 02 36 a8 00 1c 00 0d 55 6e 57 61 72 70 50 6c 61 6e 65 2e 6d 00 65 2e 00 00 06 48 00 02 36 a9 ..6.....UnWarpPlane.m.e....H..6.
f340 00 18 00 0a 77 72 69 74 65 72 61 73 2e 6d 00 6c 00 00 06 64 00 02 36 aa 00 20 00 10 65 72 72 6f ....writeras.m.l...d..6.....erro
f360 72 5f 61 6e 61 6c 79 73 69 73 2e 6d 00 6d 00 6c 00 00 06 78 00 02 36 ab 00 18 00 09 6c 6f 61 64 r_analysis.m.m.l...x..6.....load
f380 69 6e 72 2e 6d 00 79 73 00 00 06 8c 00 02 36 ac 00 18 00 09 6c 6f 61 64 70 67 6d 2e 6d 00 61 64 inr.m.ys......6.....loadpgm.m.ad
f3a0 00 00 06 a0 00 02 36 ad 00 18 00 09 6c 6f 61 64 70 70 6d 2e 6d 00 61 64 00 00 06 b4 00 02 36 ae ......6.....loadppm.m.ad......6.
f3c0 00 18 00 09 73 61 76 65 69 6e 72 2e 6d 00 61 64 00 00 06 c8 00 02 36 af 00 18 00 09 73 61 76 65 ....saveinr.m.ad......6.....save
f3e0 70 67 6d 2e 6d 00 76 65 00 00 06 dc 00 02 36 b0 00 18 00 09 73 61 76 65 70 70 6d 2e 6d 00 76 65 pgm.m.ve......6.....saveppm.m.ve
f400 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6f 6d 70 5f 65 72 72 6f 72 5f 63 61 6c 69 62 2e 6d TOOLBOX_calib/comp_error_calib.m
f420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f460 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
f480 20 20 20 31 37 37 36 20 20 37 30 32 34 30 33 37 33 31 34 20 20 31 32 31 31 30 00 20 00 00 00 00 ...1776..7024037314..12110......
f4a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f4c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f4e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f5a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f5c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f5e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f600 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 52 45 43 4f 4d 50 55 54 45 53 20 %%%%%%%%%%%%%%%%%%%%.RECOMPUTES.
f620 54 48 45 20 52 45 50 52 4f 4a 45 43 54 49 4f 4e 20 45 52 52 4f 52 20 25 25 25 25 25 25 25 25 25 THE.REPROJECTION.ERROR.%%%%%%%%%
f640 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 0a 0a 63 68 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d %%%%%%%%%%%%%%%..check_active_im
f660 61 67 65 73 3b 0a 0a 25 20 52 65 70 72 6f 6a 65 63 74 20 74 68 65 20 70 61 74 74 65 72 6e 73 20 ages;..%.Reproject.the.patterns.
f680 6f 6e 20 74 68 65 20 69 6d 61 67 65 73 2c 20 61 6e 64 20 63 6f 6d 70 75 74 65 20 74 68 65 20 70 on.the.images,.and.compute.the.p
f6a0 69 78 65 6c 20 65 72 72 6f 72 73 3a 0a 0a 65 78 20 3d 20 5b 5d 3b 20 25 20 47 6c 6f 62 61 6c 20 ixel.errors:..ex.=.[];.%.Global.
f6c0 65 72 72 6f 72 20 76 65 63 74 6f 72 0a 78 20 3d 20 5b 5d 3b 20 25 20 44 65 74 65 63 74 65 64 20 error.vector.x.=.[];.%.Detected.
f6e0 63 6f 72 6e 65 72 73 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 20 70 6c 61 6e 65 0a 79 20 3d 20 5b corners.on.the.image.plane.y.=.[
f700 5d 3b 20 25 20 52 65 70 72 6f 6a 65 63 74 65 64 20 70 6f 69 6e 74 73 0a 0a 66 6f 72 20 6b 6b 20 ];.%.Reprojected.points..for.kk.
f720 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 6f 6d 63 6b 6b 20 3d =.1:n_ima,........eval(['omckk.=
f740 20 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 65 76 61 .omc_'.num2str(kk).';']);....eva
f760 6c 28 5b 27 54 63 6b 6b 20 3d 20 54 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d l(['Tckk.=.Tc_'.num2str(kk).';']
f780 29 3b 20 20 20 0a 20 20 20 0a 20 20 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b );...........if.active_images(kk
f7a0 29 20 26 20 28 7e 69 73 6e 61 6e 28 6f 6d 63 6b 6b 28 31 2c 31 29 29 29 2c 0a 20 20 20 20 20 20 ).&.(~isnan(omckk(1,1))),.......
f7c0 0a 20 20 20 20 20 20 52 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 6b 6b 29 3b 0a 20 .......Rkk.=.rodrigues(omckk);..
f7e0 20 20 20 20 20 0a 20 20 20 20 20 20 65 76 61 6c 28 5b 27 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b ............eval(['y_'.num2str(k
f800 6b 29 20 27 20 20 3d 20 70 72 6f 6a 65 63 74 32 5f 6f 75 6c 75 28 58 5f 27 20 6e 75 6d 32 73 74 k).'..=.project2_oulu(X_'.num2st
f820 72 28 6b 6b 29 20 27 2c 52 6b 6b 2c 54 63 6b 6b 2c 66 63 2c 63 63 2c 6b 63 29 3b 27 5d 29 3b 0a r(kk).',Rkk,Tckk,fc,cc,kc);']);.
f840 20 20 20 20 20 20 0a 20 20 20 20 20 20 65 76 61 6c 28 5b 27 65 78 5f 27 20 6e 75 6d 32 73 74 72 .............eval(['ex_'.num2str
f860 28 6b 6b 29 20 27 20 3d 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 2d 79 5f 27 20 (kk).'.=.x_'.num2str(kk).'.-y_'.
f880 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 num2str(kk).';']);..............
f8a0 65 76 61 6c 28 5b 27 78 5f 6b 6b 20 3d 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b eval(['x_kk.=.x_'.num2str(kk).';
f8c0 27 5d 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 65 76 61 6c 28 5b 27 65 78 20 3d 20 5b 65 ']);..............eval(['ex.=.[e
f8e0 78 20 65 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 5d 3b 27 5d 29 3b 0a 20 20 20 20 20 x.ex_'.num2str(kk).'];']);......
f900 20 65 76 61 6c 28 5b 27 78 20 3d 20 5b 78 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 .eval(['x.=.[x.x_'.num2str(kk).'
f920 5d 3b 27 5d 29 3b 0a 20 20 20 20 20 20 65 76 61 6c 28 5b 27 79 20 3d 20 5b 79 20 79 5f 27 20 6e ];']);.......eval(['y.=.[y.y_'.n
f940 75 6d 32 73 74 72 28 6b 6b 29 20 27 5d 3b 27 5d 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6c 73 um2str(kk).'];']);...........els
f960 65 0a 20 20 20 20 20 20 0a 20 20 20 09 65 76 61 6c 28 5b 27 79 5f 27 20 6e 75 6d 32 73 74 72 28 e............eval(['y_'.num2str(
f980 6b 6b 29 20 27 20 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 32 2c 31 29 3b 27 5d 29 3b 0a 0a 09 20 20 kk).'..=.NaN*ones(2,1);']);.....
f9a0 20 65 76 61 6c 28 5b 27 65 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e .eval(['ex_'.num2str(kk).'.=.NaN
f9c0 2a 6f 6e 65 73 28 32 2c 31 29 3b 27 5d 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a 20 *ones(2,1);']);...........end;..
f9e0 20 20 0a 65 6e 64 3b 0a 0a 65 72 72 5f 73 74 64 20 3d 20 73 74 64 28 65 78 27 29 27 3b 0a 36 a1 ...end;..err_std.=.std(ex')';.6.
fa00 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6f 72 6e 65 72 66 69 6e 64 65 72 2e 6d 00 00 00 00 TOOLBOX_calib/cornerfinder.m....
fa20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fa40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fa60 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
fa80 20 20 31 31 33 33 31 20 20 37 30 32 34 30 33 37 33 31 36 20 20 31 31 32 37 35 00 20 00 00 00 00 ..11331..7024037316..11275......
faa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fb00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fb20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fb40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fb60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fb80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fbc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fbe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fc00 66 75 6e 63 74 69 6f 6e 20 5b 78 63 2c 67 6f 6f 64 2c 62 61 64 2c 74 79 70 65 5d 20 3d 20 63 6f function.[xc,good,bad,type].=.co
fc20 72 6e 65 72 66 69 6e 64 65 72 28 78 74 2c 49 2c 77 69 6e 74 78 2c 77 69 6e 74 79 2c 77 78 32 2c rnerfinder(xt,I,wintx,winty,wx2,
fc40 77 79 32 29 3b 0a 0a 25 5b 78 63 5d 20 3d 20 63 6f 72 6e 65 72 66 69 6e 64 65 72 28 78 74 2c 49 wy2);..%[xc].=.cornerfinder(xt,I
fc60 29 3b 0a 25 0a 25 46 69 6e 64 73 20 74 68 65 20 73 75 62 2d 70 69 78 65 6c 20 63 6f 72 6e 65 72 );.%.%Finds.the.sub-pixel.corner
fc80 73 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 20 49 20 77 69 74 68 20 69 6e 69 74 69 61 6c 20 67 75 s.on.the.image.I.with.initial.gu
fca0 65 73 73 20 78 74 0a 25 78 74 20 61 6e 64 20 78 63 20 61 72 65 20 32 78 4e 20 6d 61 74 72 69 63 ess.xt.%xt.and.xc.are.2xN.matric
fcc0 65 73 2e 20 54 68 65 20 66 69 72 73 74 20 63 6f 6d 70 6f 6e 65 6e 74 20 69 73 20 74 68 65 20 78 es..The.first.component.is.the.x
fce0 20 63 6f 6f 72 64 69 6e 61 74 65 0a 25 28 68 6f 72 69 7a 6f 6e 74 61 6c 29 20 61 6e 64 20 74 68 .coordinate.%(horizontal).and.th
fd00 65 20 73 65 63 6f 6e 64 20 63 6f 6d 70 6f 6e 65 6e 74 20 69 73 20 74 68 65 20 79 20 63 6f 6f 72 e.second.component.is.the.y.coor
fd20 64 69 6e 61 74 65 20 28 76 65 72 74 69 63 61 6c 29 0a 25 20 0a 25 42 61 73 65 64 20 6f 6e 20 48 dinate.(vertical).%..%Based.on.H
fd40 61 72 72 69 73 20 63 6f 72 6e 65 72 20 66 69 6e 64 65 72 20 6d 65 74 68 6f 64 0a 25 0a 25 46 69 arris.corner.finder.method.%.%Fi
fd60 6e 64 73 20 63 6f 72 6e 65 72 73 20 74 6f 20 61 20 70 72 65 63 69 73 69 6f 6e 20 62 65 6c 6f 77 nds.corners.to.a.precision.below
fd80 20 2e 31 20 70 69 78 65 6c 21 0a 25 4f 63 74 2e 20 31 34 74 68 2c 20 31 39 39 37 20 2d 20 55 50 ..1.pixel!.%Oct..14th,.1997.-.UP
fda0 44 41 54 45 44 20 74 6f 20 77 6f 72 6b 20 77 69 74 68 20 76 65 72 74 69 63 61 6c 20 61 6e 64 20 DATED.to.work.with.vertical.and.
fdc0 68 6f 72 69 7a 6f 6e 74 61 6c 20 65 64 67 65 73 20 61 73 20 77 65 6c 6c 21 21 21 0a 25 53 65 70 horizontal.edges.as.well!!!.%Sep
fde0 74 20 31 39 39 38 20 2d 20 55 50 44 41 54 45 44 20 74 6f 20 68 61 6e 64 6c 65 20 64 69 76 65 72 t.1998.-.UPDATED.to.handle.diver
fe00 67 65 64 20 70 6f 69 6e 74 73 3a 20 77 65 20 6b 65 65 70 20 74 68 65 20 6f 72 69 67 69 6e 61 6c ged.points:.we.keep.the.original
fe20 20 70 6f 69 6e 74 73 0a 25 67 6f 6f 64 20 69 73 20 61 20 62 69 6e 61 72 79 20 76 65 63 74 6f 72 .points.%good.is.a.binary.vector
fe40 20 69 6e 64 69 63 61 74 69 6e 67 20 77 65 74 68 65 72 20 61 20 66 65 61 74 75 72 65 20 70 6f 69 .indicating.wether.a.feature.poi
fe60 6e 74 20 68 61 73 20 62 65 65 6e 20 70 72 6f 70 65 72 6c 79 0a 25 66 6f 75 6e 64 2e 0a 25 0a 25 nt.has.been.properly.%found..%.%
fe80 41 64 64 20 61 20 7a 65 72 6f 20 7a 6f 6e 65 20 6f 66 20 73 69 7a 65 20 77 78 32 2c 77 79 32 0a Add.a.zero.zone.of.size.wx2,wy2.
fea0 25 4a 75 6c 79 20 31 35 74 68 2c 20 31 39 39 39 20 2d 20 42 75 67 20 6f 6e 20 74 68 65 20 6d 61 %July.15th,.1999.-.Bug.on.the.ma
fec0 73 6b 20 62 75 69 6c 64 69 6e 67 2e 2e 2e 20 66 69 78 65 64 20 2b 20 63 68 61 6e 67 65 20 74 6f sk.building....fixed.+.change.to
fee0 20 47 61 75 73 73 69 61 6e 20 6d 61 73 6b 20 77 69 74 68 20 68 69 67 68 65 72 0a 25 72 65 73 6f .Gaussian.mask.with.higher.%reso
ff00 6c 75 74 69 6f 6e 20 61 6e 64 20 6c 61 72 67 65 72 20 6e 75 6d 62 65 72 20 6f 66 20 69 74 65 72 lution.and.larger.number.of.iter
ff20 61 74 69 6f 6e 73 2e 0a 0a 0a 25 20 43 61 6c 69 66 6f 72 6e 69 61 20 49 6e 73 74 69 74 75 74 65 ations....%.California.Institute
ff40 20 6f 66 20 54 65 63 68 6e 6f 6c 6f 67 79 0a 25 20 28 63 29 20 4a 65 61 6e 2d 59 76 65 73 20 42 .of.Technology.%.(c).Jean-Yves.B
ff60 6f 75 67 75 65 74 20 2d 2d 20 4f 63 74 2e 20 31 34 74 68 2c 20 31 39 39 37 0a 0a 0a 0a 6c 69 6e ouguet.--.Oct..14th,.1997....lin
ff80 65 5f 66 65 61 74 20 3d 20 31 3b 20 25 20 73 65 74 20 74 6f 20 31 20 74 6f 20 61 6c 6c 6f 77 20 e_feat.=.1;.%.set.to.1.to.allow.
ffa0 66 6f 72 20 65 78 74 72 61 63 74 69 6f 6e 20 6f 66 20 6c 69 6e 65 20 66 65 61 74 75 72 65 73 2e for.extraction.of.line.features.
ffc0 0a 0a 78 74 20 3d 20 78 74 27 3b 0a 78 74 20 3d 20 66 6c 69 70 6c 72 28 78 74 29 3b 0a 0a 0a 69 ..xt.=.xt';.xt.=.fliplr(xt);...i
ffe0 66 20 6e 61 72 67 69 6e 20 3c 20 34 2c 0a 20 20 20 77 69 6e 74 79 20 3d 20 35 3b 0a 20 20 20 69 f.nargin.<.4,....winty.=.5;....i
10000 66 20 6e 61 72 67 69 6e 20 3c 20 33 2c 0a 20 20 20 20 20 20 77 69 6e 74 78 20 3d 20 35 3b 0a 20 f.nargin.<.3,.......wintx.=.5;..
10020 20 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 0a 69 66 20 6e 61 72 67 69 6e 20 3c 20 36 2c 0a 20 20 20 ..end;.end;...if.nargin.<.6,....
10040 77 78 32 20 3d 20 2d 31 3b 0a 20 20 20 77 79 32 20 3d 20 2d 31 3b 0a 65 6e 64 3b 0a 0a 0a 25 6d wx2.=.-1;....wy2.=.-1;.end;...%m
10060 61 73 6b 20 3d 20 6f 6e 65 73 28 32 2a 77 69 6e 74 78 2b 31 2c 32 2a 77 69 6e 74 79 2b 31 29 3b ask.=.ones(2*wintx+1,2*winty+1);
10080 0a 6d 61 73 6b 20 3d 20 65 78 70 28 2d 28 28 2d 77 69 6e 74 78 3a 77 69 6e 74 78 29 27 2f 28 77 .mask.=.exp(-((-wintx:wintx)'/(w
100a0 69 6e 74 78 29 29 2e 5e 32 29 20 2a 20 65 78 70 28 2d 28 28 2d 77 69 6e 74 79 3a 77 69 6e 74 79 intx)).^2).*.exp(-((-winty:winty
100c0 29 2f 28 77 69 6e 74 79 29 29 2e 5e 32 29 3b 0a 0a 0a 69 66 20 28 77 78 32 3e 30 29 20 26 20 28 )/(winty)).^2);...if.(wx2>0).&.(
100e0 77 79 32 3e 30 29 2c 0a 20 20 20 69 66 20 28 28 77 69 6e 74 78 20 2d 20 77 78 32 29 3e 3d 32 29 wy2>0),....if.((wintx.-.wx2)>=2)
10100 26 28 28 77 69 6e 74 79 20 2d 20 77 79 32 29 3e 3d 32 29 2c 0a 20 20 20 20 20 20 6d 61 73 6b 28 &((winty.-.wy2)>=2),.......mask(
10120 77 69 6e 74 78 2b 31 2d 77 78 32 3a 77 69 6e 74 78 2b 31 2b 77 78 32 2c 77 69 6e 74 79 2b 31 2d wintx+1-wx2:wintx+1+wx2,winty+1-
10140 77 79 32 3a 77 69 6e 74 79 2b 31 2b 77 79 32 29 3d 20 7a 65 72 6f 73 28 32 2a 77 78 32 2b 31 2c wy2:winty+1+wy2)=.zeros(2*wx2+1,
10160 32 2a 77 79 32 2b 31 29 3b 0a 20 20 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 6f 66 66 78 20 3d 20 5b 2*wy2+1);....end;.end;..offx.=.[
10180 2d 77 69 6e 74 78 3a 77 69 6e 74 78 5d 27 2a 6f 6e 65 73 28 31 2c 32 2a 77 69 6e 74 79 2b 31 29 -wintx:wintx]'*ones(1,2*winty+1)
101a0 3b 0a 6f 66 66 79 20 3d 20 6f 6e 65 73 28 32 2a 77 69 6e 74 78 2b 31 2c 31 29 2a 5b 2d 77 69 6e ;.offy.=.ones(2*wintx+1,1)*[-win
101c0 74 79 3a 77 69 6e 74 79 5d 3b 0a 0a 72 65 73 6f 6c 75 74 69 6f 6e 20 3d 20 30 2e 30 30 35 3b 0a ty:winty];..resolution.=.0.005;.
101e0 0a 4d 61 78 49 74 65 72 20 3d 20 31 30 3b 0a 0a 5b 6e 78 2c 6e 79 5d 20 3d 20 73 69 7a 65 28 49 .MaxIter.=.10;..[nx,ny].=.size(I
10200 29 3b 0a 4e 20 3d 20 73 69 7a 65 28 78 74 2c 31 29 3b 0a 0a 78 63 20 3d 20 78 74 3b 20 25 20 66 );.N.=.size(xt,1);..xc.=.xt;.%.f
10220 69 72 73 74 20 67 75 65 73 73 2e 2e 2e 20 74 68 65 79 20 64 6f 6e 27 74 20 6d 6f 76 65 20 21 21 irst.guess....they.don't.move.!!
10240 21 0a 0a 74 79 70 65 20 3d 20 7a 65 72 6f 73 28 31 2c 4e 29 3b 0a 0a 0a 66 6f 72 20 69 3d 31 3a !..type.=.zeros(1,N);...for.i=1:
10260 4e 2c 0a 20 20 20 0a 20 20 20 76 5f 65 78 74 72 61 20 3d 20 72 65 73 6f 6c 75 74 69 6f 6e 20 2b N,........v_extra.=.resolution.+
10280 20 31 3b 20 09 09 25 20 6a 75 73 74 20 6c 61 72 67 65 72 20 74 68 61 6e 20 72 65 73 6f 6c 75 74 .1;...%.just.larger.than.resolut
102a0 69 6f 6e 0a 20 20 20 0a 20 20 20 63 6f 6d 70 74 20 3d 20 30 3b 20 09 09 09 09 25 20 6e 6f 20 69 ion........compt.=.0;.....%.no.i
102c0 74 65 72 61 74 69 6f 6e 20 79 65 74 0a 20 20 20 0a 20 20 20 77 68 69 6c 65 20 28 6e 6f 72 6d 28 teration.yet........while.(norm(
102e0 76 5f 65 78 74 72 61 29 20 3e 20 72 65 73 6f 6c 75 74 69 6f 6e 29 20 26 20 28 63 6f 6d 70 74 3c v_extra).>.resolution).&.(compt<
10300 4d 61 78 49 74 65 72 29 2c 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 63 49 78 20 3d 20 78 63 28 MaxIter),..............cIx.=.xc(
10320 69 2c 31 29 3b 20 09 09 09 25 0a 20 20 20 20 20 20 63 49 79 20 3d 20 78 63 28 69 2c 32 29 3b 20 i,1);....%.......cIy.=.xc(i,2);.
10340 09 09 09 25 20 43 6f 6f 72 64 73 2e 20 6f 66 20 74 68 65 20 70 6f 69 6e 74 0a 20 20 20 20 20 20 ...%.Coords..of.the.point.......
10360 63 72 49 78 20 3d 20 72 6f 75 6e 64 28 63 49 78 29 3b 20 09 09 25 20 6f 6e 20 74 68 65 20 69 6e crIx.=.round(cIx);...%.on.the.in
10380 69 74 69 61 6c 20 69 6d 61 67 65 0a 20 20 20 20 20 20 63 72 49 79 20 3d 20 72 6f 75 6e 64 28 63 itial.image.......crIy.=.round(c
103a0 49 79 29 3b 20 09 09 25 20 20 20 20 20 20 0a 20 20 20 20 20 20 69 74 49 78 20 3d 20 63 49 78 20 Iy);...%.............itIx.=.cIx.
103c0 2d 20 63 72 49 78 3b 20 09 09 25 20 43 6f 65 66 66 69 63 69 65 6e 74 73 0a 20 20 20 20 20 20 69 -.crIx;...%.Coefficients.......i
103e0 74 49 79 20 3d 20 63 49 79 20 2d 20 63 72 49 79 3b 20 09 09 25 20 74 6f 20 63 6f 6d 70 75 74 65 tIy.=.cIy.-.crIy;...%.to.compute
10400 0a 20 20 20 20 20 20 69 66 20 69 74 49 78 20 3e 20 30 2c 20 09 09 09 25 20 74 68 65 20 73 75 62 .......if.itIx.>.0,....%.the.sub
10420 20 70 69 78 65 6c 0a 09 20 76 49 78 20 3d 20 5b 69 74 49 78 20 31 2d 69 74 49 78 20 30 5d 27 3b .pixel...vIx.=.[itIx.1-itIx.0]';
10440 20 09 25 20 61 63 63 75 72 61 63 79 2e 0a 20 20 20 20 20 20 65 6c 73 65 0a 09 20 76 49 78 20 3d ..%.accuracy........else...vIx.=
10460 20 5b 30 20 31 2b 69 74 49 78 20 2d 69 74 49 78 5d 27 3b 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 .[0.1+itIx.-itIx]';.......end;..
10480 20 20 20 20 20 69 66 20 69 74 49 79 20 3e 20 30 2c 0a 09 20 76 49 79 20 3d 20 5b 69 74 49 79 20 .....if.itIy.>.0,...vIy.=.[itIy.
104a0 31 2d 69 74 49 79 20 30 5d 3b 0a 20 20 20 20 20 20 65 6c 73 65 0a 09 20 76 49 79 20 3d 20 5b 30 1-itIy.0];.......else...vIy.=.[0
104c0 20 31 2b 69 74 49 79 20 2d 69 74 49 79 5d 3b 0a 20 20 20 20 20 20 65 6e 64 3b 0a 0a 20 20 20 20 .1+itIy.-itIy];.......end;......
104e0 20 20 0a 20 20 20 20 20 20 25 20 57 68 61 74 20 69 66 20 74 68 65 20 73 75 62 20 69 6d 61 67 65 .........%.What.if.the.sub.image
10500 20 69 73 20 6e 6f 74 20 69 6e 3f 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 69 66 20 28 63 72 49 .is.not.in?..............if.(crI
10520 78 2d 77 69 6e 74 78 2d 32 20 3c 20 31 29 2c 20 78 6d 69 6e 3d 31 3b 20 78 6d 61 78 20 3d 20 32 x-wintx-2.<.1),.xmin=1;.xmax.=.2
10540 2a 77 69 6e 74 78 2b 35 3b 0a 20 20 20 20 20 20 65 6c 73 65 69 66 20 28 63 72 49 78 2b 77 69 6e *wintx+5;.......elseif.(crIx+win
10560 74 78 2b 32 20 3e 20 6e 78 29 2c 20 78 6d 61 78 20 3d 20 6e 78 3b 20 78 6d 69 6e 20 3d 20 6e 78 tx+2.>.nx),.xmax.=.nx;.xmin.=.nx
10580 2d 32 2a 77 69 6e 74 78 2d 34 3b 0a 20 20 20 20 20 20 65 6c 73 65 0a 09 20 78 6d 69 6e 20 3d 20 -2*wintx-4;.......else...xmin.=.
105a0 63 72 49 78 2d 77 69 6e 74 78 2d 32 3b 20 78 6d 61 78 20 3d 20 63 72 49 78 2b 77 69 6e 74 78 2b crIx-wintx-2;.xmax.=.crIx+wintx+
105c0 32 3b 0a 20 20 20 20 20 20 65 6e 64 3b 0a 0a 20 20 20 20 20 20 69 66 20 28 63 72 49 79 2d 77 69 2;.......end;........if.(crIy-wi
105e0 6e 74 79 2d 32 20 3c 20 31 29 2c 20 79 6d 69 6e 3d 31 3b 20 79 6d 61 78 20 3d 20 32 2a 77 69 6e nty-2.<.1),.ymin=1;.ymax.=.2*win
10600 74 79 2b 35 3b 0a 20 20 20 20 20 20 65 6c 73 65 69 66 20 28 63 72 49 79 2b 77 69 6e 74 79 2b 32 ty+5;.......elseif.(crIy+winty+2
10620 20 3e 20 6e 79 29 2c 20 79 6d 61 78 20 3d 20 6e 79 3b 20 79 6d 69 6e 20 3d 20 6e 79 2d 32 2a 77 .>.ny),.ymax.=.ny;.ymin.=.ny-2*w
10640 69 6e 74 79 2d 34 3b 0a 20 20 20 20 20 20 65 6c 73 65 0a 09 20 79 6d 69 6e 20 3d 20 63 72 49 79 inty-4;.......else...ymin.=.crIy
10660 2d 77 69 6e 74 79 2d 32 3b 20 79 6d 61 78 20 3d 20 63 72 49 79 2b 77 69 6e 74 79 2b 32 3b 0a 20 -winty-2;.ymax.=.crIy+winty+2;..
10680 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 53 49 .....end;.....................SI
106a0 20 3d 20 49 28 78 6d 69 6e 3a 78 6d 61 78 2c 79 6d 69 6e 3a 79 6d 61 78 29 3b 20 25 20 54 68 65 .=.I(xmin:xmax,ymin:ymax);.%.The
106c0 20 6e 65 63 65 73 73 61 72 79 20 6e 65 69 67 68 62 6f 72 68 6f 6f 64 0a 20 20 20 20 20 20 53 49 .necessary.neighborhood.......SI
106e0 20 3d 20 63 6f 6e 76 32 28 63 6f 6e 76 32 28 53 49 2c 76 49 78 2c 27 73 61 6d 65 27 29 2c 76 49 .=.conv2(conv2(SI,vIx,'same'),vI
10700 79 2c 27 73 61 6d 65 27 29 3b 0a 20 20 20 20 20 20 53 49 20 3d 20 53 49 28 32 3a 32 2a 77 69 6e y,'same');.......SI.=.SI(2:2*win
10720 74 78 2b 34 2c 32 3a 32 2a 77 69 6e 74 79 2b 34 29 3b 20 25 20 54 68 65 20 73 75 62 70 69 78 65 tx+4,2:2*winty+4);.%.The.subpixe
10740 6c 20 69 6e 74 65 72 70 6f 6c 61 74 65 64 20 6e 65 69 67 68 62 6f 72 68 6f 6f 64 0a 20 20 20 20 l.interpolated.neighborhood.....
10760 20 20 5b 67 79 2c 67 78 5d 20 3d 20 67 72 61 64 69 65 6e 74 28 53 49 29 3b 20 09 09 25 20 54 68 ..[gy,gx].=.gradient(SI);...%.Th
10780 65 20 67 72 61 64 69 65 6e 74 20 69 6d 61 67 65 0a 20 20 20 20 20 20 67 78 20 3d 20 67 78 28 32 e.gradient.image.......gx.=.gx(2
107a0 3a 32 2a 77 69 6e 74 78 2b 32 2c 32 3a 32 2a 77 69 6e 74 79 2b 32 29 3b 20 25 20 65 78 74 72 61 :2*wintx+2,2:2*winty+2);.%.extra
107c0 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 75 73 65 66 75 6c 20 70 61 72 74 73 20 6f 6e 6c 79 0a 20 ction.of.the.useful.parts.only..
107e0 20 20 20 20 20 67 79 20 3d 20 67 79 28 32 3a 32 2a 77 69 6e 74 78 2b 32 2c 32 3a 32 2a 77 69 6e .....gy.=.gy(2:2*wintx+2,2:2*win
10800 74 79 2b 32 29 3b 20 25 20 6f 66 20 74 68 65 20 67 72 61 64 69 65 6e 74 73 0a 20 20 20 20 20 20 ty+2);.%.of.the.gradients.......
10820 0a 20 20 20 20 20 20 70 78 20 3d 20 63 49 78 20 2b 20 6f 66 66 78 3b 0a 20 20 20 20 20 20 70 79 .......px.=.cIx.+.offx;.......py
10840 20 3d 20 63 49 79 20 2b 20 6f 66 66 79 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 67 78 78 20 .=.cIy.+.offy;..............gxx.
10860 3d 20 67 78 20 2e 2a 20 67 78 20 2e 2a 20 6d 61 73 6b 3b 0a 20 20 20 20 20 20 67 79 79 20 3d 20 =.gx..*.gx..*.mask;.......gyy.=.
10880 67 79 20 2e 2a 20 67 79 20 2e 2a 20 6d 61 73 6b 3b 0a 20 20 20 20 20 20 67 78 79 20 3d 20 67 78 gy..*.gy..*.mask;.......gxy.=.gx
108a0 20 2e 2a 20 67 79 20 2e 2a 20 6d 61 73 6b 3b 0a 20 20 20 0a 20 20 20 20 20 20 0a 20 20 20 20 20 ..*.gy..*.mask;.................
108c0 20 62 62 20 3d 20 5b 73 75 6d 28 73 75 6d 28 67 78 78 20 2e 2a 20 70 78 20 2b 20 67 78 79 20 2e .bb.=.[sum(sum(gxx..*.px.+.gxy..
108e0 2a 20 70 79 29 29 3b 20 73 75 6d 28 73 75 6d 28 67 78 79 20 2e 2a 20 70 78 20 2b 20 67 79 79 20 *.py));.sum(sum(gxy..*.px.+.gyy.
10900 2e 2a 20 70 79 29 29 5d 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 61 20 3d 20 73 75 6d 28 73 .*.py))];..............a.=.sum(s
10920 75 6d 28 67 78 78 29 29 3b 0a 20 20 20 20 20 20 62 20 3d 20 73 75 6d 28 73 75 6d 28 67 78 79 29 um(gxx));.......b.=.sum(sum(gxy)
10940 29 3b 0a 20 20 20 20 20 20 63 20 3d 20 73 75 6d 28 73 75 6d 28 67 79 79 29 29 3b 0a 20 20 20 20 );.......c.=.sum(sum(gyy));.....
10960 20 20 0a 20 20 20 20 20 20 64 74 20 3d 20 61 2a 63 20 2d 20 62 5e 32 3b 0a 20 20 20 20 20 20 0a .........dt.=.a*c.-.b^2;........
10980 20 20 20 20 20 20 78 63 32 20 3d 20 5b 63 2a 62 62 28 31 29 2d 62 2a 62 62 28 32 29 20 61 2a 62 ......xc2.=.[c*bb(1)-b*bb(2).a*b
109a0 62 28 32 29 2d 62 2a 62 62 28 31 29 5d 2f 64 74 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 0a b(2)-b*bb(1)]/dt;...............
109c0 20 20 20 20 20 20 25 6b 65 79 62 6f 61 72 64 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 69 66 ......%keyboard;..............if
109e0 20 6c 69 6e 65 5f 66 65 61 74 2c 0a 20 20 20 20 20 20 0a 09 20 47 20 3d 20 5b 61 20 62 3b 62 20 .line_feat,..........G.=.[a.b;b.
10a00 63 5d 3b 0a 09 20 5b 55 2c 53 2c 56 5d 20 20 3d 20 73 76 64 28 47 29 3b 0a 09 20 0a 09 20 25 6b c];...[U,S,V]..=.svd(G);......%k
10a20 65 79 62 6f 61 72 64 3b 0a 09 20 0a 09 20 25 20 49 66 20 6e 6f 6e 2d 69 6e 76 65 72 74 69 62 6c eyboard;......%.If.non-invertibl
10a40 65 2c 20 74 68 65 6e 20 70 72 6f 6a 65 63 74 20 74 68 65 20 70 6f 69 6e 74 20 6f 6e 74 6f 20 74 e,.then.project.the.point.onto.t
10a60 68 65 20 65 64 67 65 20 6f 72 74 68 6f 67 6f 6e 61 6c 3a 0a 09 20 0a 09 20 69 66 20 28 53 28 31 he.edge.orthogonal:......if.(S(1
10a80 2c 31 29 2f 53 28 32 2c 32 29 20 3e 20 35 30 29 2c 0a 09 20 20 20 20 25 20 70 72 6f 6a 65 63 74 ,1)/S(2,2).>.50),......%.project
10aa0 69 6f 6e 20 6f 70 65 72 61 74 69 6f 6e 3a 0a 09 20 20 20 20 78 63 32 20 3d 20 78 63 32 20 2b 20 ion.operation:......xc2.=.xc2.+.
10ac0 73 75 6d 28 28 78 63 28 69 2c 3a 29 2d 78 63 32 29 2e 2a 28 56 28 3a 2c 32 29 27 29 29 2a 56 28 sum((xc(i,:)-xc2).*(V(:,2)'))*V(
10ae0 3a 2c 32 29 27 3b 0a 09 20 20 20 20 74 79 70 65 28 69 29 20 3d 20 31 3b 0a 09 20 65 6e 64 3b 0a :,2)';......type(i).=.1;...end;.
10b00 20 20 20 20 20 20 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 0a .............end;...............
10b20 20 20 20 20 20 20 25 6b 65 79 62 6f 61 72 64 3b 0a 20 20 20 20 20 20 0a 25 20 20 20 20 20 20 47 ......%keyboard;........%......G
10b40 20 3d 20 5b 61 20 62 3b 62 20 63 5d 3b 0a 25 20 20 20 20 20 20 5b 55 2c 53 2c 56 5d 20 20 3d 20 .=.[a.b;b.c];.%......[U,S,V]..=.
10b60 73 76 64 28 47 29 3b 0a 0a 0a 25 20 20 20 20 20 20 69 66 20 53 28 31 2c 31 29 2f 53 28 32 2c 32 svd(G);...%......if.S(1,1)/S(2,2
10b80 29 20 3e 20 31 35 30 2c 0a 25 09 20 62 62 32 20 3d 20 55 27 2a 62 62 3b 0a 25 09 20 78 63 32 20 ).>.150,.%..bb2.=.U'*bb;.%..xc2.
10ba0 3d 20 28 56 2a 5b 62 62 32 28 31 29 2f 53 28 31 2c 31 29 20 3b 30 5d 29 27 3b 0a 25 20 20 20 20 =.(V*[bb2(1)/S(1,1).;0])';.%....
10bc0 20 20 65 6c 73 65 0a 25 09 20 78 63 32 20 3d 20 5b 63 2a 62 62 28 31 29 2d 62 2a 62 62 28 32 29 ..else.%..xc2.=.[c*bb(1)-b*bb(2)
10be0 20 61 2a 62 62 28 32 29 2d 62 2a 62 62 28 31 29 5d 2f 64 74 3b 0a 25 20 20 20 20 20 20 65 6e 64 .a*bb(2)-b*bb(1)]/dt;.%......end
10c00 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 25 69 66 20 28 61 62 73 28 61 ;.....................%if.(abs(a
10c20 29 3e 20 35 30 2a 61 62 73 28 63 29 29 2c 0a 25 09 20 78 63 32 20 3d 20 5b 28 63 2a 62 62 28 31 )>.50*abs(c)),.%..xc2.=.[(c*bb(1
10c40 29 2d 62 2a 62 62 28 32 29 29 2f 64 74 20 78 63 28 69 2c 32 29 5d 3b 0a 25 20 20 20 20 20 20 65 )-b*bb(2))/dt.xc(i,2)];.%......e
10c60 6c 73 65 69 66 20 28 61 62 73 28 63 29 3e 20 35 30 2a 61 62 73 28 61 29 29 0a 25 09 20 78 63 32 lseif.(abs(c)>.50*abs(a)).%..xc2
10c80 20 3d 20 5b 78 63 28 69 2c 31 29 20 28 61 2a 62 62 28 32 29 2d 62 2a 62 62 28 31 29 29 2f 64 74 .=.[xc(i,1).(a*bb(2)-b*bb(1))/dt
10ca0 5d 3b 0a 25 20 20 20 20 20 20 65 6c 73 65 0a 25 09 20 78 63 32 20 3d 20 5b 63 2a 62 62 28 31 29 ];.%......else.%..xc2.=.[c*bb(1)
10cc0 2d 62 2a 62 62 28 32 29 20 61 2a 62 62 28 32 29 2d 62 2a 62 62 28 31 29 5d 2f 64 74 3b 0a 25 20 -b*bb(2).a*bb(2)-b*bb(1)]/dt;.%.
10ce0 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 25 6b 65 79 62 6f 61 72 64 .....end;..............%keyboard
10d00 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 76 5f 65 78 74 72 61 20 3d 20 78 63 28 69 2c 3a 29 ;..............v_extra.=.xc(i,:)
10d20 20 2d 20 78 63 32 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 78 63 28 69 2c 3a 29 20 3d 20 78 .-.xc2;..............xc(i,:).=.x
10d40 63 32 3b 0a 20 20 20 20 20 20 0a 25 20 20 20 20 20 20 6b 65 79 62 6f 61 72 64 3b 0a 0a 20 20 20 c2;........%......keyboard;.....
10d60 20 20 20 63 6f 6d 70 74 20 3d 20 63 6f 6d 70 74 20 2b 20 31 3b 0a 20 20 20 20 20 20 0a 20 20 20 ...compt.=.compt.+.1;...........
10d80 65 6e 64 0a 65 6e 64 3b 0a 0a 0a 25 20 63 68 65 63 6b 20 66 6f 72 20 70 6f 69 6e 74 73 20 74 68 end.end;...%.check.for.points.th
10da0 61 74 20 64 69 76 65 72 67 65 3a 0a 0a 64 65 6c 74 61 5f 78 20 3d 20 78 63 28 3a 2c 31 29 20 2d at.diverge:..delta_x.=.xc(:,1).-
10dc0 20 78 74 28 3a 2c 31 29 3b 0a 64 65 6c 74 61 5f 79 20 3d 20 78 63 28 3a 2c 32 29 20 2d 20 78 74 .xt(:,1);.delta_y.=.xc(:,2).-.xt
10de0 28 3a 2c 32 29 3b 0a 0a 25 6b 65 79 62 6f 61 72 64 3b 0a 0a 0a 62 61 64 20 3d 20 28 61 62 73 28 (:,2);..%keyboard;...bad.=.(abs(
10e00 64 65 6c 74 61 5f 78 29 20 3e 20 77 69 6e 74 78 29 20 7c 20 28 61 62 73 28 64 65 6c 74 61 5f 79 delta_x).>.wintx).|.(abs(delta_y
10e20 29 20 3e 20 77 69 6e 74 79 29 3b 0a 67 6f 6f 64 20 3d 20 7e 62 61 64 3b 0a 69 6e 5f 62 61 64 20 ).>.winty);.good.=.~bad;.in_bad.
10e40 3d 20 66 69 6e 64 28 62 61 64 29 3b 0a 0a 25 20 46 6f 72 20 74 68 65 20 64 69 76 65 72 67 65 64 =.find(bad);..%.For.the.diverged
10e60 20 70 6f 69 6e 74 73 2c 20 6b 65 65 70 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 67 75 65 73 73 .points,.keep.the.original.guess
10e80 65 73 3a 0a 0a 78 63 28 69 6e 5f 62 61 64 2c 3a 29 20 3d 20 78 74 28 69 6e 5f 62 61 64 2c 3a 29 es:..xc(in_bad,:).=.xt(in_bad,:)
10ea0 3b 0a 0a 78 63 20 3d 20 66 6c 69 70 6c 72 28 78 63 29 3b 0a 78 63 20 3d 20 78 63 27 3b 0a 0a 62 ;..xc.=.fliplr(xc);.xc.=.xc';..b
10ec0 61 64 20 3d 20 62 61 64 27 3b 0a 67 6f 6f 64 20 3d 20 67 6f 6f 64 27 3b 0a 28 32 2c 3a 29 2b 28 ad.=.bad';.good.=.good';.(2,:)+(
10ee0 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2b 28 77 69 6e 74 79 2b 2e winty+.5);grid_pts(2,:)+(winty+.
10f00 35 29 3b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2d 28 77 69 6e 74 79 2b 2e 35 29 5d 3b 0a 0a 20 5);grid_pts(2,:)-(winty+.5)];...
10f20 20 20 0a 20 20 20 66 69 67 75 72 65 28 33 29 3b 0a 20 20 20 68 6f 6c 64 20 6f 6e 3b 0a 20 20 20 ......figure(3);....hold.on;....
10f40 70 6c 6f 74 28 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2b 31 2c 67 72 69 64 5f 70 74 73 28 32 2c plot(grid_pts(1,:)+1,grid_pts(2,
10f60 3a 29 2b 31 2c 27 72 2b 27 29 3b 0a 20 20 20 70 6c 6f 74 28 78 5f 62 6f 78 5f 6b 6b 2b 31 2c 79 :)+1,'r+');....plot(x_box_kk+1,y
10f80 5f 62 6f 78 5f 6b 6b 2b 31 2c 27 2d 62 27 29 3b 0a 20 20 20 70 6c 6f 74 28 67 72 69 64 5f 70 74 _box_kk+1,'-b');....plot(grid_pt
10fa0 73 28 31 2c 69 6e 64 5f 63 6f 72 6e 65 72 73 29 2b 31 2c 67 72 69 64 5f 70 74 73 28 32 2c 69 6e s(1,ind_corners)+1,grid_pts(2,in
10fc0 64 5f 63 6f 72 6e 65 72 73 29 2b 31 2c 27 6d 6f 27 29 3b 0a 20 20 20 70 6c 6f 74 28 78 6f 72 69 d_corners)+1,'mo');....plot(xori
10fe0 67 2b 31 2c 79 6f 72 69 67 2b 31 2c 27 2a 6d 27 29 3b 0a 20 20 20 68 20 3d 20 74 65 78 74 28 78 g+1,yorig+1,'*m');....h.=.text(x
11000 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6f 75 6e 74 5f 73 71 75 61 72 65 73 2e 6d 00 00 00 TOOLBOX_calib/count_squares.m...
11020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11060 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
11080 20 20 20 32 32 37 31 20 20 37 30 32 34 30 33 37 33 31 36 20 20 31 31 34 37 33 00 20 00 00 00 00 ...2271..7024037316..11473......
110a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
110c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
110e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
111a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
111c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
111e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11200 66 75 6e 63 74 69 6f 6e 20 6e 73 20 3d 20 63 6f 75 6e 74 5f 73 71 75 61 72 65 73 28 49 2c 78 31 function.ns.=.count_squares(I,x1
11220 2c 79 31 2c 78 32 2c 79 32 2c 77 69 6e 29 3b 0a 0a 25 6b 65 79 62 6f 61 72 64 3b 0a 0a 5b 6e 79 ,y1,x2,y2,win);..%keyboard;..[ny
11240 2c 6e 78 5d 20 3d 20 73 69 7a 65 28 49 29 3b 0a 0a 6c 61 6d 62 64 61 20 3d 20 5b 79 31 20 2d 20 ,nx].=.size(I);..lambda.=.[y1.-.
11260 79 32 3b 78 32 20 2d 20 78 31 3b 78 31 2a 79 32 20 2d 20 78 32 2a 79 31 5d 3b 0a 0a 6c 61 6d 62 y2;x2.-.x1;x1*y2.-.x2*y1];..lamb
11280 64 61 20 3d 20 31 2f 73 71 72 74 28 6c 61 6d 62 64 61 28 31 29 5e 32 20 2b 20 6c 61 6d 62 64 61 da.=.1/sqrt(lambda(1)^2.+.lambda
112a0 28 32 29 5e 32 29 20 2a 20 6c 61 6d 62 64 61 3b 0a 0a 6c 31 20 3d 20 6c 61 6d 62 64 61 20 2b 20 (2)^2).*.lambda;..l1.=.lambda.+.
112c0 5b 30 3b 30 3b 77 69 6e 5d 3b 0a 6c 32 20 3d 20 6c 61 6d 62 64 61 20 2d 20 5b 30 3b 30 3b 77 69 [0;0;win];.l2.=.lambda.-.[0;0;wi
112e0 6e 5d 3b 0a 0a 0a 64 78 20 3d 20 78 32 2d 78 31 3b 0a 64 79 20 3d 20 79 32 20 2d 20 79 31 3b 0a n];...dx.=.x2-x1;.dy.=.y2.-.y1;.
11300 0a 0a 69 66 20 61 62 73 28 64 78 29 20 3e 20 61 62 73 28 64 79 29 2c 0a 20 20 20 0a 20 20 20 69 ..if.abs(dx).>.abs(dy),........i
11320 66 20 78 32 20 3e 20 78 31 2c 0a 20 20 20 20 20 20 78 73 20 3d 20 78 31 3a 78 32 3b 0a 20 20 20 f.x2.>.x1,.......xs.=.x1:x2;....
11340 65 6c 73 65 0a 20 20 20 20 20 20 78 73 20 3d 20 78 31 3a 2d 31 3a 78 32 3b 0a 20 20 20 65 6e 64 else.......xs.=.x1:-1:x2;....end
11360 3b 0a 20 20 20 0a 20 20 20 79 73 20 3d 20 2d 28 6c 61 6d 62 64 61 28 33 29 20 2b 20 6c 61 6d 62 ;........ys.=.-(lambda(3).+.lamb
11380 64 61 28 31 29 2a 78 73 29 2f 6c 61 6d 62 64 61 28 32 29 3b 0a 20 20 20 0a 65 6c 73 65 0a 20 20 da(1)*xs)/lambda(2);.....else...
113a0 20 0a 20 20 20 69 66 20 79 32 20 3e 20 79 31 2c 0a 20 20 20 20 20 20 79 73 20 3d 20 79 31 3a 79 .....if.y2.>.y1,.......ys.=.y1:y
113c0 32 3b 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 79 73 20 3d 20 79 31 3a 2d 31 3a 79 32 3b 0a 2;....else.......ys.=.y1:-1:y2;.
113e0 20 20 20 65 6e 64 3b 0a 20 20 20 78 73 20 3d 20 2d 28 6c 61 6d 62 64 61 28 33 29 20 2b 20 6c 61 ...end;....xs.=.-(lambda(3).+.la
11400 6d 62 64 61 28 32 29 2a 79 73 29 2f 6c 61 6d 62 64 61 28 31 29 3b 0a 20 20 20 0a 65 6e 64 3b 0a mbda(2)*ys)/lambda(1);.....end;.
11420 0a 0a 20 20 20 0a 09 4e 70 20 3d 20 6c 65 6e 67 74 68 28 78 73 29 3b 0a 0a 09 78 73 5f 6d 61 74 .......Np.=.length(xs);...xs_mat
11440 20 3d 20 6f 6e 65 73 28 32 2a 77 69 6e 20 2b 20 31 2c 31 29 2a 78 73 3b 0a 09 79 73 5f 6d 61 74 .=.ones(2*win.+.1,1)*xs;..ys_mat
11460 20 3d 20 6f 6e 65 73 28 32 2a 77 69 6e 20 2b 20 31 2c 31 29 2a 79 73 3b 0a 0a 09 77 69 6e 5f 6d .=.ones(2*win.+.1,1)*ys;...win_m
11480 61 74 20 3d 20 28 2d 77 69 6e 3a 77 69 6e 29 27 2a 6f 6e 65 73 28 31 2c 4e 70 29 3b 0a 0a 0a 09 at.=.(-win:win)'*ones(1,Np);....
114a0 78 73 5f 6d 61 74 32 20 3d 20 72 6f 75 6e 64 28 78 73 5f 6d 61 74 20 2d 20 77 69 6e 5f 6d 61 74 xs_mat2.=.round(xs_mat.-.win_mat
114c0 20 2a 20 6c 61 6d 62 64 61 28 31 29 29 3b 0a 09 79 73 5f 6d 61 74 32 20 3d 20 72 6f 75 6e 64 28 .*.lambda(1));..ys_mat2.=.round(
114e0 79 73 5f 6d 61 74 20 2d 20 77 69 6e 5f 6d 61 74 20 2a 20 6c 61 6d 62 64 61 28 32 29 29 3b 0a 0a ys_mat.-.win_mat.*.lambda(2));..
11500 09 69 6e 64 5f 6d 61 74 20 3d 20 28 78 73 5f 6d 61 74 32 20 2d 20 31 29 20 2a 20 6e 79 20 2b 20 .ind_mat.=.(xs_mat2.-.1).*.ny.+.
11520 79 73 5f 6d 61 74 32 3b 0a 0a 09 69 6d 61 5f 70 61 74 63 68 20 3d 20 7a 65 72 6f 73 28 32 2a 77 ys_mat2;...ima_patch.=.zeros(2*w
11540 69 6e 20 2b 20 31 2c 4e 70 29 3b 0a 0a 09 69 6d 61 5f 70 61 74 63 68 28 3a 29 20 3d 20 49 28 69 in.+.1,Np);...ima_patch(:).=.I(i
11560 6e 64 5f 6d 61 74 28 3a 29 29 3b 0a 0a 09 25 69 6d 61 32 20 3d 20 69 6d 61 5f 70 61 74 63 68 28 nd_mat(:));...%ima2.=.ima_patch(
11580 3a 2c 77 69 6e 2b 31 3a 65 6e 64 2d 77 69 6e 29 3b 0a 0a 09 66 69 6c 74 6b 20 3d 20 5b 6f 6e 65 :,win+1:end-win);...filtk.=.[one
115a0 73 28 77 69 6e 2c 4e 70 29 3b 7a 65 72 6f 73 28 31 2c 4e 70 29 3b 2d 6f 6e 65 73 28 77 69 6e 2c s(win,Np);zeros(1,Np);-ones(win,
115c0 4e 70 29 5d 3b 0a 0a 09 6f 75 74 5f 66 20 3d 20 73 75 6d 28 66 69 6c 74 6b 2e 2a 69 6d 61 5f 70 Np)];...out_f.=.sum(filtk.*ima_p
115e0 61 74 63 68 29 3b 0a 0a 09 6f 75 74 5f 66 5f 66 20 3d 20 63 6f 6e 76 32 28 6f 75 74 5f 66 2c 5b atch);...out_f_f.=.conv2(out_f,[
11600 31 2f 34 20 31 2f 32 20 31 2f 34 5d 2c 27 73 61 6d 65 27 29 3b 0a 0a 09 6f 75 74 5f 66 5f 66 20 1/4.1/2.1/4],'same');...out_f_f.
11620 3d 20 6f 75 74 5f 66 5f 66 28 77 69 6e 2b 31 3a 65 6e 64 2d 77 69 6e 29 3b 0a 0a 09 6e 73 20 3d =.out_f_f(win+1:end-win);...ns.=
11640 20 6c 65 6e 67 74 68 28 66 69 6e 64 28 28 28 6f 75 74 5f 66 5f 66 28 32 3a 65 6e 64 29 3e 3d 30 .length(find(((out_f_f(2:end)>=0
11660 29 26 28 6f 75 74 5f 66 5f 66 28 31 3a 65 6e 64 2d 31 29 3c 30 29 29 20 7c 20 28 28 6f 75 74 5f )&(out_f_f(1:end-1)<0)).|.((out_
11680 66 5f 66 28 32 3a 65 6e 64 29 3c 3d 30 29 26 28 6f 75 74 5f 66 5f 66 28 31 3a 65 6e 64 2d 31 29 f_f(2:end)<=0)&(out_f_f(1:end-1)
116a0 3e 30 29 29 29 29 2b 31 3b 0a 0a 20 20 20 0a 0a 0a 72 65 74 75 72 6e 3b 0a 00 06 1c 00 00 06 34 >0))))+1;........return;.......4
116c0 00 02 36 a8 00 1c 00 0d 55 6e 57 61 72 70 50 6c 61 6e 65 2e 6d 00 00 a6 00 00 06 48 00 02 36 a9 ..6.....UnWarpPlane.m......H..6.
116e0 00 18 00 0a 77 72 69 74 65 72 61 73 2e 6d 00 2e 00 00 06 64 00 02 36 aa 00 20 00 10 65 72 72 6f ....writeras.m.....d..6.....erro
11700 72 5f 61 6e 61 6c 79 73 69 73 2e 6d 00 00 06 64 00 00 06 78 00 02 36 ab 00 18 00 09 6c 6f 61 64 r_analysis.m...d...x..6.....load
11720 69 6e 72 2e 6d 00 2e 6d 00 00 06 8c 00 02 36 ac 00 18 00 09 6c 6f 61 64 70 67 6d 2e 6d 00 72 2e inr.m..m......6.....loadpgm.m.r.
11740 00 00 06 a0 00 02 36 ad 00 18 00 09 6c 6f 61 64 70 70 6d 2e 6d 00 6d 2e 00 00 06 b4 00 02 36 ae ......6.....loadppm.m.m.......6.
11760 00 18 00 09 73 61 76 65 69 6e 72 2e 6d 00 6d 2e 00 00 06 c8 00 02 36 af 00 18 00 09 73 61 76 65 ....saveinr.m.m.......6.....save
11780 70 67 6d 2e 6d 00 72 2e 00 00 06 dc 00 02 36 b0 00 18 00 09 73 61 76 65 70 70 6d 2e 6d 00 6d 2e pgm.m.r.......6.....saveppm.m.m.
117a0 00 00 06 fc 00 02 36 b1 00 24 00 16 69 6e 69 74 5f 69 6e 74 72 69 6e 73 69 63 5f 70 61 72 61 6d ......6..$..init_intrinsic_param
117c0 2e 6d 00 b1 00 00 07 18 00 02 36 b2 00 20 00 11 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 2e .m........6.....mean_std_robust.
117e0 6d 00 07 18 00 00 07 38 00 02 36 b3 00 24 00 14 72 75 6e 5f 65 72 72 6f 72 5f 61 6e 61 6c 79 73 m......8..6..$..run_error_analys
11800 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 64 61 74 61 5f 63 61 6c 69 62 2e 6d 00 00 00 00 00 00 TOOLBOX_calib/data_calib.m......
11820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11860 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
11880 20 20 20 34 32 33 32 20 20 37 30 32 34 30 33 37 33 31 36 20 20 31 30 36 34 32 00 20 00 00 00 00 ...4232..7024037316..10642......
118a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
118c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
118e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
119a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
119c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
119e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11a00 25 25 25 20 54 68 69 73 20 73 63 72 69 70 74 20 61 6c 65 74 73 20 74 68 65 20 75 73 65 72 20 65 %%%.This.script.alets.the.user.e
11a20 6e 74 65 72 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 69 6d 61 67 65 73 20 28 62 61 73 nter.the.name.of.the.images.(bas
11a40 65 20 6e 61 6d 65 2c 20 6e 75 6d 62 65 72 69 6e 67 20 73 63 68 65 6d 65 2c 2e 2e 2e 0a 0a 64 69 e.name,.numbering.scheme,.....di
11a60 72 3b 0a 0a 25 64 69 73 70 28 27 43 61 6d 65 72 61 20 43 61 6c 69 62 72 61 74 69 6f 6e 20 75 73 r;..%disp('Camera.Calibration.us
11a80 69 6e 67 20 6d 75 6c 74 69 70 6c 65 20 69 6d 61 67 65 73 20 6f 66 20 61 20 70 6c 61 6e 61 72 20 ing.multiple.images.of.a.planar.
11aa0 63 68 65 63 6b 65 72 62 6f 61 72 64 20 70 61 74 74 65 72 6e 27 29 3b 0a 25 64 69 73 70 28 27 4d checkerboard.pattern');.%disp('M
11ac0 6f 64 65 6c 3a 20 32 20 66 6f 63 61 6c 73 2c 20 32 20 72 61 64 69 61 6c 20 64 69 73 74 2e 20 63 odel:.2.focals,.2.radial.dist..c
11ae0 6f 65 66 66 2e 2c 20 32 20 74 61 6e 67 65 6e 74 69 61 6c 20 64 69 73 74 2e 20 63 6f 65 66 66 2e oeff.,.2.tangential.dist..coeff.
11b00 20 61 6e 64 20 70 72 69 6e 63 69 70 6c 65 20 70 6f 69 6e 74 27 29 3b 0a 25 64 69 73 70 28 27 20 .and.principle.point');.%disp('.
11b20 20 20 20 20 20 20 3d 3e 20 38 44 4f 46 20 69 6e 74 72 69 6e 73 69 63 20 6d 6f 64 65 6c 20 28 5b ......=>.8DOF.intrinsic.model.([
11b40 48 65 69 6b 6b 69 6c 61 20 61 6e 64 20 53 69 6c 76 65 6e 2c 20 55 6e 69 76 65 72 73 69 74 79 20 Heikkila.and.Silven,.University.
11b60 6f 66 20 4f 75 6c 75 5d 29 27 29 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 27 29 3b 0a 63 of.Oulu])');..fprintf(1,'\n');.c
11b80 61 6c 69 62 5f 6e 61 6d 65 20 3d 20 69 6e 70 75 74 28 27 42 61 73 65 6e 61 6d 65 20 63 61 6d 65 alib_name.=.input('Basename.came
11ba0 72 61 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 69 6d 61 67 65 73 20 28 77 69 74 68 6f 75 74 20 6e ra.calibration.images.(without.n
11bc0 75 6d 62 65 72 20 6e 6f 72 20 73 75 66 66 69 78 29 3a 20 27 2c 27 73 27 29 3b 0a 0a 66 6f 72 6d umber.nor.suffix):.','s');..form
11be0 61 74 5f 69 6d 61 67 65 20 3d 20 27 30 27 3b 0a 0a 77 68 69 6c 65 20 66 6f 72 6d 61 74 5f 69 6d at_image.=.'0';..while.format_im
11c00 61 67 65 20 3d 3d 20 27 30 27 2c 0a 20 20 20 0a 20 20 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 age.==.'0',........format_image.
11c20 3d 20 20 69 6e 70 75 74 28 27 49 6d 61 67 65 20 66 6f 72 6d 61 74 3a 20 28 5b 5d 3d 27 27 72 27 =..input('Image.format:.([]=''r'
11c40 27 3d 27 27 72 61 73 27 27 2c 20 27 27 62 27 27 3d 27 27 62 6d 70 27 27 2c 20 27 27 74 27 27 3d '=''ras'',.''b''=''bmp'',.''t''=
11c60 27 27 74 69 66 27 27 2c 20 27 27 70 27 27 3d 27 27 70 67 6d 27 27 2c 20 27 27 6a 27 27 3d 27 27 ''tif'',.''p''=''pgm'',.''j''=''
11c80 6a 70 67 27 27 29 20 27 2c 27 73 27 29 3b 0a 0a 09 69 66 20 69 73 65 6d 70 74 79 28 66 6f 72 6d jpg'').','s');...if.isempty(form
11ca0 61 74 5f 69 6d 61 67 65 29 2c 0a 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 3d 20 27 72 at_image),.....format_image.=.'r
11cc0 61 73 27 3b 0a 09 65 6e 64 3b 0a 0a 09 69 66 20 6c 6f 77 65 72 28 66 6f 72 6d 61 74 5f 69 6d 61 as';..end;...if.lower(format_ima
11ce0 67 65 28 31 29 29 20 3d 3d 20 27 62 27 2c 0a 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 ge(1)).==.'b',.....format_image.
11d00 3d 20 27 62 6d 70 27 3b 0a 09 65 6c 73 65 0a 20 20 20 09 69 66 20 6c 6f 77 65 72 28 66 6f 72 6d =.'bmp';..else.....if.lower(form
11d20 61 74 5f 69 6d 61 67 65 28 31 29 29 20 3d 3d 20 27 74 27 2c 0a 20 20 20 20 20 20 09 66 6f 72 6d at_image(1)).==.'t',........form
11d40 61 74 5f 69 6d 61 67 65 20 3d 20 27 74 69 66 27 3b 0a 20 20 20 09 65 6c 73 65 0a 20 20 20 20 20 at_image.=.'tif';.....else......
11d60 20 09 69 66 20 6c 6f 77 65 72 28 66 6f 72 6d 61 74 5f 69 6d 61 67 65 28 31 29 29 20 3d 3d 20 27 ..if.lower(format_image(1)).==.'
11d80 70 27 2c 0a 20 20 20 20 20 20 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 3d 20 27 70 67 p',...........format_image.=.'pg
11da0 6d 27 3b 0a 09 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 09 20 20 20 20 20 20 69 66 20 6c 6f 77 m';........else...........if.low
11dc0 65 72 28 66 6f 72 6d 61 74 5f 69 6d 61 67 65 28 31 29 29 20 3d 3d 20 27 6a 27 2c 0a 20 20 20 20 er(format_image(1)).==.'j',.....
11de0 20 20 09 20 20 20 20 20 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 3d 20 27 6a 70 67 27 3b 0a 20 .........format_image.=.'jpg';..
11e00 20 20 20 20 20 20 20 20 09 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 09 69 66 20 6c 6f .........else..............if.lo
11e20 77 65 72 28 66 6f 72 6d 61 74 5f 69 6d 61 67 65 28 31 29 29 20 3d 3d 20 27 72 27 2c 0a 09 20 20 wer(format_image(1)).==.'r',....
11e40 20 20 20 20 20 20 20 20 20 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 3d 20 27 72 61 73 .............format_image.=.'ras
11e60 27 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 ';................else..........
11e80 20 20 20 20 09 09 64 69 73 70 28 27 49 6e 76 61 6c 69 64 20 69 6d 61 67 65 20 66 6f 72 6d 61 74 ......disp('Invalid.image.format
11ea0 27 29 3b 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 09 20 20 20 20 20 20 20 20 20 66 6f 72 6d 61 ');........................forma
11ec0 74 5f 69 6d 61 67 65 20 3d 20 27 30 27 3b 20 25 20 41 73 6b 20 66 6f 72 20 66 6f 72 6d 61 74 20 t_image.=.'0';.%.Ask.for.format.
11ee0 6f 6e 63 65 20 61 67 61 69 6e 0a 20 20 20 20 20 20 20 20 20 09 20 20 20 65 6e 64 3b 0a 20 20 20 once.again..............end;....
11f00 20 20 20 09 20 20 20 65 6e 64 3b 0a 09 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 09 65 6e 64 3b .......end;........end;.....end;
11f20 0a 09 65 6e 64 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 0a 6e 5f 69 6d 61 20 3d 20 31 30 30 30 3b 0a ..end;.....end;...n_ima.=.1000;.
11f40 77 68 69 6c 65 20 6e 5f 69 6d 61 20 3e 20 33 30 2c 0a 20 20 20 6e 5f 69 6d 61 20 3d 20 69 6e 70 while.n_ima.>.30,....n_ima.=.inp
11f60 75 74 28 27 4e 75 6d 62 65 72 20 6f 66 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 69 6d 61 67 65 73 ut('Number.of.calibration.images
11f80 3a 20 27 29 3b 0a 20 20 20 6e 5f 69 6d 61 20 3d 20 72 6f 75 6e 64 28 6e 5f 69 6d 61 29 3b 0a 65 :.');....n_ima.=.round(n_ima);.e
11fa0 6e 64 3b 0a 0a 74 79 70 65 5f 6e 75 6d 62 65 72 69 6e 67 20 3d 20 69 6e 70 75 74 28 27 54 79 70 nd;..type_numbering.=.input('Typ
11fc0 65 20 6f 66 20 6e 75 6d 62 65 72 69 6e 67 20 28 65 78 3a 20 5b 5d 3d 34 2c 6f 74 68 65 72 3d 30 e.of.numbering.(ex:.[]=4,other=0
11fe0 34 29 3a 20 27 29 3b 0a 0a 74 79 70 65 5f 6e 75 6d 62 65 72 69 6e 67 20 3d 20 7e 69 73 65 6d 70 4):.');..type_numbering.=.~isemp
12000 74 79 28 74 79 70 65 5f 6e 75 6d 62 65 72 69 6e 67 29 3b 0a 0a 69 66 20 74 79 70 65 5f 6e 75 6d ty(type_numbering);..if.type_num
12020 62 65 72 69 6e 67 2c 0a 20 20 20 0a 20 20 20 4e 5f 73 6c 6f 74 73 20 3d 20 69 6e 70 75 74 28 27 bering,........N_slots.=.input('
12040 4e 75 6d 62 65 72 20 6f 66 20 73 70 61 63 65 73 20 66 6f 72 20 6e 75 6d 62 65 72 73 3f 20 28 65 Number.of.spaces.for.numbers?.(e
12060 78 3a 20 32 20 2d 3e 20 30 34 2c 20 33 20 2d 3e 20 30 30 34 29 2c 20 28 5b 5d 3d 33 29 20 27 29 x:.2.->.04,.3.->.004),.([]=3).')
12080 3b 0a 0a 20 20 20 69 66 20 69 73 65 6d 70 74 79 28 4e 5f 73 6c 6f 74 73 29 2c 20 4e 5f 73 6c 6f ;.....if.isempty(N_slots),.N_slo
120a0 74 73 20 3d 20 33 3b 20 65 6e 64 3b 0a 0a 65 6c 73 65 0a 20 20 20 0a 20 20 20 4e 5f 73 6c 6f 74 ts.=.3;.end;..else........N_slot
120c0 73 20 3d 20 31 3b 20 25 20 6e 6f 74 20 75 73 65 64 20 61 6e 79 77 61 79 2c 20 62 75 74 20 75 73 s.=.1;.%.not.used.anyway,.but.us
120e0 65 66 75 6c 20 66 6f 72 20 73 61 76 69 6e 67 0a 20 20 20 0a 65 6e 64 3b 0a 0a 0a 66 69 72 73 74 eful.for.saving.....end;...first
12100 5f 6e 75 6d 20 3d 20 69 6e 70 75 74 28 27 46 69 72 73 74 20 69 6d 61 67 65 20 6e 75 6d 62 65 72 _num.=.input('First.image.number
12120 3f 20 28 30 2c 31 2c 32 2e 2e 2e 29 20 28 5b 5d 3d 30 29 20 27 29 3b 0a 20 0a 69 66 20 69 73 65 ?.(0,1,2...).([]=0).');...if.ise
12140 6d 70 74 79 28 66 69 72 73 74 5f 6e 75 6d 29 2c 20 66 69 72 73 74 5f 6e 75 6d 20 3d 20 30 3b 20 mpty(first_num),.first_num.=.0;.
12160 65 6e 64 3b 0a 0a 69 6d 61 67 65 5f 6e 75 6d 62 65 72 73 20 3d 20 66 69 72 73 74 5f 6e 75 6d 3a end;..image_numbers.=.first_num:
12180 6e 5f 69 6d 61 2d 31 2b 66 69 72 73 74 5f 6e 75 6d 3b 0a 0a 0a 25 25 25 20 42 79 20 64 65 66 61 n_ima-1+first_num;...%%%.By.defa
121a0 75 6c 74 2c 20 61 6c 6c 20 74 68 65 20 69 6d 61 67 65 73 20 61 72 65 20 61 63 74 69 76 65 20 66 ult,.all.the.images.are.active.f
121c0 6f 72 20 63 61 6c 69 62 72 61 74 69 6f 6e 3a 0a 0a 61 63 74 69 76 65 5f 69 6d 61 67 65 73 20 3d or.calibration:..active_images.=
121e0 20 6f 6e 65 73 28 31 2c 6e 5f 69 6d 61 29 3b 0a 0a 25 73 74 72 69 6e 67 5f 73 61 76 65 20 3d 20 .ones(1,n_ima);..%string_save.=.
12200 27 73 61 76 65 20 63 61 6c 69 62 5f 64 61 74 61 20 6e 5f 69 6d 61 20 74 79 70 65 5f 6e 75 6d 62 'save.calib_data.n_ima.type_numb
12220 65 72 69 6e 67 20 4e 5f 73 6c 6f 74 73 20 69 6d 61 67 65 5f 6e 75 6d 62 65 72 73 20 66 6f 72 6d ering.N_slots.image_numbers.form
12240 61 74 5f 69 6d 61 67 65 20 63 61 6c 69 62 5f 6e 61 6d 65 20 66 69 72 73 74 5f 6e 75 6d 27 3b 0a at_image.calib_name.first_num';.
12260 0a 25 65 76 61 6c 28 73 74 72 69 6e 67 5f 73 61 76 65 29 3b 0a 0a 25 20 52 65 61 64 69 6e 67 20 .%eval(string_save);..%.Reading.
12280 69 6d 61 67 65 73 3a 0a 0a 69 6d 61 5f 72 65 61 64 5f 63 61 6c 69 62 3b 0a 0a 79 28 66 6f 72 6d images:..ima_read_calib;..y(form
122a0 61 74 5f 69 6d 61 67 65 29 2c 0a 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 3d 20 27 72 at_image),.....format_image.=.'r
122c0 61 73 27 3b 0a 09 65 6e 64 3b 0a 0a 09 69 66 20 6c 6f 77 65 72 28 66 6f 72 6d 61 74 5f 69 6d 61 as';..end;...if.lower(format_ima
122e0 67 65 28 31 29 29 20 3d 3d 20 27 62 27 2c 0a 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 ge(1)).==.'b',.....format_image.
12300 3d 20 27 62 6d 70 27 3b 0a 09 65 6c 73 65 0a 20 20 20 09 69 66 20 6c 6f 77 65 72 28 66 6f 72 6d =.'bmp';..else.....if.lower(form
12320 61 74 5f 69 6d 61 67 65 28 31 29 29 20 3d 3d 20 27 74 27 2c 0a 20 20 20 20 20 20 09 66 6f 72 6d at_image(1)).==.'t',........form
12340 61 74 5f 69 6d 61 67 65 20 3d 20 27 74 69 66 27 3b 0a 20 20 20 09 65 6c 73 65 0a 20 20 20 20 20 at_image.=.'tif';.....else......
12360 20 09 69 66 20 6c 6f 77 65 72 28 66 6f 72 6d 61 74 5f 69 6d 61 67 65 28 31 29 29 20 3d 3d 20 27 ..if.lower(format_image(1)).==.'
12380 70 27 2c 0a 20 20 20 20 20 20 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 3d 20 27 70 67 p',...........format_image.=.'pg
123a0 6d 27 3b 0a 09 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 09 20 20 20 20 20 20 69 66 20 6c 6f 77 m';........else...........if.low
123c0 65 72 28 66 6f 72 6d 61 74 5f 69 6d 61 67 65 28 31 29 29 20 3d 3d 20 27 6a 27 2c 0a 20 20 20 20 er(format_image(1)).==.'j',.....
123e0 20 20 09 20 20 20 20 20 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 3d 20 27 6a 70 67 27 3b 0a 20 .........format_image.=.'jpg';..
12400 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 44 69 73 74 6f 72 32 43 61 6c 69 62 2e 6d 00 00 00 00 TOOLBOX_calib/Distor2Calib.m....
12420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12460 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
12480 20 20 32 30 34 32 32 20 20 37 30 32 34 30 33 37 33 31 37 20 20 31 31 31 30 30 00 20 00 00 00 00 ..20422..7024037317..11100......
124a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
124c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
124e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
125a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
125c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
125e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12600 66 75 6e 63 74 69 6f 6e 20 5b 66 63 5f 32 2c 52 63 5f 32 2c 54 63 5f 32 2c 48 5f 32 2c 64 69 73 function.[fc_2,Rc_2,Tc_2,H_2,dis
12620 74 61 6e 63 65 2c 56 5f 76 65 72 74 2c 56 5f 68 6f 72 69 2c 78 5f 61 6c 6c 5f 63 2c 56 5f 68 6f tance,V_vert,V_hori,x_all_c,V_ho
12640 72 69 5f 70 69 78 2c 56 5f 76 65 72 74 5f 70 69 78 2c 56 5f 64 69 61 67 31 5f 70 69 78 2c 56 5f ri_pix,V_vert_pix,V_diag1_pix,V_
12660 64 69 61 67 32 5f 70 69 78 5d 3d 44 69 73 74 6f 72 32 43 61 6c 69 62 28 6b 5f 64 69 73 74 2c 67 diag2_pix]=Distor2Calib(k_dist,g
12680 72 69 64 5f 70 74 73 5f 63 65 6e 74 65 72 65 64 2c 6e 5f 73 71 5f 78 2c 6e 5f 73 71 5f 79 2c 4e rid_pts_centered,n_sq_x,n_sq_y,N
126a0 70 2c 57 2c 4c 2c 58 67 72 69 64 5f 32 2c 66 5f 69 6e 69 2c 4e 5f 69 74 65 72 2c 74 77 6f 5f 66 p,W,L,Xgrid_2,f_ini,N_iter,two_f
126c0 6f 63 61 6c 29 3b 0a 0a 25 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 63 61 6c 69 62 72 61 74 69 ocal);..%.Computes.the.calibrati
126e0 6f 6e 20 70 61 72 61 6d 65 74 65 72 73 20 6b 6e 6f 77 69 6e 67 20 74 68 65 0a 25 20 64 69 73 74 on.parameters.knowing.the.%.dist
12700 6f 72 74 69 6f 6e 20 66 61 63 74 6f 72 20 6b 5f 64 69 73 74 0a 0a 25 20 67 72 69 64 5f 70 74 73 ortion.factor.k_dist..%.grid_pts
12720 5f 63 65 6e 74 65 72 65 64 20 61 72 65 20 74 68 65 20 67 72 69 64 20 70 6f 69 6e 74 20 63 6f 6f _centered.are.the.grid.point.coo
12740 72 64 69 6e 61 74 65 73 20 61 66 74 65 72 20 73 75 62 73 74 72 61 63 74 69 6f 6e 20 6f 66 0a 25 rdinates.after.substraction.of.%
12760 20 74 68 65 20 6f 70 74 69 63 61 6c 20 63 65 6e 74 65 72 2e 0a 0a 25 20 63 61 6e 20 67 69 76 65 .the.optical.center...%.can.give
12780 20 61 6e 20 6f 70 74 69 6f 6e 61 6c 20 67 75 65 73 73 20 66 6f 72 20 74 68 65 20 66 6f 63 61 6c .an.optional.guess.for.the.focal
127a0 20 6c 65 6e 67 74 68 20 66 5f 69 6e 69 20 28 63 61 6e 20 73 65 74 20 74 6f 20 5b 5d 29 0a 25 20 .length.f_ini.(can.set.to.[]).%.
127c0 63 61 6e 20 70 72 6f 76 69 64 65 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 69 74 65 72 61 74 can.provide.the.number.of.iterat
127e0 69 6f 6e 73 20 66 6f 72 20 74 68 65 20 49 74 65 72 61 74 69 76 65 20 56 61 6e 69 73 68 69 6e 67 ions.for.the.Iterative.Vanishing
12800 20 50 6f 69 6e 74 20 41 6c 67 6f 72 69 74 68 6d 0a 0a 25 20 69 66 20 74 68 65 20 66 6f 63 61 6c .Point.Algorithm..%.if.the.focal
12820 20 6c 65 6e 67 74 68 20 69 73 20 6b 6e 6f 77 6e 20 70 65 72 66 65 63 74 6c 79 2c 20 74 68 65 6e .length.is.known.perfectly,.then
12840 2c 20 74 68 65 72 65 20 69 73 20 6e 6f 20 6e 65 65 64 20 74 6f 20 69 74 65 72 61 74 65 2c 0a 25 ,.there.is.no.need.to.iterate,.%
12860 20 61 6e 64 20 74 68 65 72 65 66 6f 72 65 2c 20 6f 6e 65 20 63 61 6e 20 66 69 78 3a 20 4e 5f 69 .and.therefore,.one.can.fix:.N_i
12880 74 65 72 20 3d 20 30 3b 0a 0a 25 20 43 61 6c 69 66 6f 72 6e 69 61 20 49 6e 73 74 69 74 75 74 65 ter.=.0;..%.California.Institute
128a0 20 6f 66 20 54 65 63 68 6e 6f 6c 6f 67 79 0a 25 20 28 63 29 20 4a 65 61 6e 2d 59 76 65 73 20 42 .of.Technology.%.(c).Jean-Yves.B
128c0 6f 75 67 75 65 74 20 2d 20 4f 63 74 6f 62 65 72 20 37 74 68 2c 20 31 39 39 37 0a 0a 0a 0a 25 6b ouguet.-.October.7th,.1997....%k
128e0 65 79 62 6f 61 72 64 3b 0a 0a 69 66 20 65 78 69 73 74 28 27 74 77 6f 5f 66 6f 63 61 6c 27 29 2c eyboard;..if.exist('two_focal'),
12900 0a 20 20 20 69 66 20 69 73 65 6d 70 74 79 28 74 77 6f 5f 66 6f 63 61 6c 29 2c 0a 20 20 20 20 20 ....if.isempty(two_focal),......
12920 20 74 77 6f 5f 66 6f 63 61 6c 3d 30 3b 0a 20 20 20 65 6e 64 3b 0a 65 6c 73 65 0a 20 20 20 74 77 .two_focal=0;....end;.else....tw
12940 6f 5f 66 6f 63 61 6c 20 3d 20 30 3b 0a 65 6e 64 3b 0a 0a 0a 69 66 20 65 78 69 73 74 28 27 4e 5f o_focal.=.0;.end;...if.exist('N_
12960 69 74 65 72 27 29 2c 0a 20 20 20 69 66 20 7e 69 73 65 6d 70 74 79 28 4e 5f 69 74 65 72 29 2c 0a iter'),....if.~isempty(N_iter),.
12980 20 20 20 20 20 20 64 69 73 70 28 27 55 73 65 20 6e 75 6d 62 65 72 20 6f 66 20 69 74 65 72 61 74 ......disp('Use.number.of.iterat
129a0 69 6f 6e 73 20 70 72 6f 76 69 64 65 64 27 29 3b 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 4e ions.provided');....else.......N
129c0 5f 69 74 65 72 20 3d 20 31 30 3b 0a 20 20 20 65 6e 64 3b 0a 65 6c 73 65 0a 20 20 20 4e 5f 69 74 _iter.=.10;....end;.else....N_it
129e0 65 72 20 3d 20 31 30 3b 0a 65 6e 64 3b 0a 0a 69 66 20 65 78 69 73 74 28 27 66 5f 69 6e 69 27 29 er.=.10;.end;..if.exist('f_ini')
12a00 2c 0a 20 20 20 69 66 20 7e 69 73 65 6d 70 74 79 28 66 5f 69 6e 69 29 2c 0a 20 20 20 20 20 20 64 ,....if.~isempty(f_ini),.......d
12a20 69 73 70 28 27 55 73 65 20 66 6f 63 61 6c 20 70 72 6f 76 69 64 65 64 27 29 3b 0a 20 20 20 20 20 isp('Use.focal.provided');......
12a40 20 69 66 20 6c 65 6e 67 74 68 28 66 5f 69 6e 69 29 3c 32 2c 20 66 5f 69 6e 69 3d 5b 66 5f 69 6e .if.length(f_ini)<2,.f_ini=[f_in
12a60 69 3b 66 5f 69 6e 69 5d 3b 20 65 6e 64 3b 0a 20 20 20 20 20 20 66 63 5f 32 20 3d 20 66 5f 69 6e i;f_ini];.end;.......fc_2.=.f_in
12a80 69 3b 0a 20 20 20 20 20 20 78 5f 61 6c 6c 5f 63 20 3d 20 5b 67 72 69 64 5f 70 74 73 5f 63 65 6e i;.......x_all_c.=.[grid_pts_cen
12aa0 74 65 72 65 64 28 31 2c 3a 29 2f 66 63 5f 32 28 31 29 3b 67 72 69 64 5f 70 74 73 5f 63 65 6e 74 tered(1,:)/fc_2(1);grid_pts_cent
12ac0 65 72 65 64 28 32 2c 3a 29 2f 66 63 5f 32 28 32 29 5d 3b 0a 20 20 20 20 20 20 78 5f 61 6c 6c 5f ered(2,:)/fc_2(2)];.......x_all_
12ae0 63 20 3d 20 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 28 78 5f 61 6c 6c 5f 63 2c 6b 5f 64 69 c.=.comp_distortion(x_all_c,k_di
12b00 73 74 29 3b 20 25 20 77 65 20 63 61 6e 20 74 68 69 73 20 74 69 6d 65 21 21 21 0a 20 20 20 65 6c st);.%.we.can.this.time!!!....el
12b20 73 65 0a 20 20 20 20 20 66 63 5f 32 20 3d 20 5b 31 3b 31 5d 3b 0a 20 20 20 20 20 78 5f 61 6c 6c se......fc_2.=.[1;1];......x_all
12b40 5f 63 20 3d 20 67 72 69 64 5f 70 74 73 5f 63 65 6e 74 65 72 65 64 3b 0a 20 20 20 65 6e 64 3b 0a _c.=.grid_pts_centered;....end;.
12b60 65 6c 73 65 0a 20 20 20 66 63 5f 32 20 3d 20 5b 31 3b 31 5d 3b 0a 20 20 20 78 5f 61 6c 6c 5f 63 else....fc_2.=.[1;1];....x_all_c
12b80 20 3d 20 67 72 69 64 5f 70 74 73 5f 63 65 6e 74 65 72 65 64 3b 0a 65 6e 64 3b 0a 0a 0a 64 58 20 .=.grid_pts_centered;.end;...dX.
12ba0 3d 20 57 2f 6e 5f 73 71 5f 78 3b 0a 64 59 20 3d 20 4c 2f 6e 5f 73 71 5f 79 3b 0a 0a 0a 4e 5f 78 =.W/n_sq_x;.dY.=.L/n_sq_y;...N_x
12bc0 20 3d 20 6e 5f 73 71 5f 78 2b 31 3b 0a 4e 5f 79 20 3d 20 6e 5f 73 71 5f 79 2b 31 3b 0a 0a 0a 78 .=.n_sq_x+1;.N_y.=.n_sq_y+1;...x
12be0 5f 67 72 69 64 20 3d 20 7a 65 72 6f 73 28 4e 5f 78 2c 4e 5f 79 29 3b 0a 79 5f 67 72 69 64 20 3d _grid.=.zeros(N_x,N_y);.y_grid.=
12c00 20 7a 65 72 6f 73 28 4e 5f 78 2c 4e 5f 79 29 3b 0a 0a 0a 0a 0a 0a 25 25 25 20 43 6f 6d 70 75 74 .zeros(N_x,N_y);......%%%.Comput
12c20 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 66 6f 75 72 20 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e ation.of.the.four.vanishing.poin
12c40 74 73 20 69 6e 20 70 69 78 65 6c 73 0a 0a 0a 20 20 20 78 5f 67 72 69 64 28 3a 29 20 3d 20 67 72 ts.in.pixels......x_grid(:).=.gr
12c60 69 64 5f 70 74 73 5f 63 65 6e 74 65 72 65 64 28 31 2c 3a 29 3b 0a 20 20 20 79 5f 67 72 69 64 28 id_pts_centered(1,:);....y_grid(
12c80 3a 29 20 3d 20 67 72 69 64 5f 70 74 73 5f 63 65 6e 74 65 72 65 64 28 32 2c 3a 29 3b 0a 20 20 20 :).=.grid_pts_centered(2,:);....
12ca0 20 20 20 20 20 20 0a 20 20 20 66 6f 72 20 6b 3d 31 3a 6e 5f 73 71 5f 78 2b 31 2c 0a 20 20 20 20 ..........for.k=1:n_sq_x+1,.....
12cc0 20 20 5b 55 2c 53 2c 56 5d 20 3d 20 73 76 64 28 5b 78 5f 67 72 69 64 28 6b 2c 3a 29 3b 79 5f 67 ..[U,S,V].=.svd([x_grid(k,:);y_g
12ce0 72 69 64 28 6b 2c 3a 29 3b 6f 6e 65 73 28 31 2c 6e 5f 73 71 5f 79 2b 31 29 5d 29 3b 0a 20 20 20 rid(k,:);ones(1,n_sq_y+1)]);....
12d00 20 20 20 76 65 72 74 28 3a 2c 6b 29 20 3d 20 55 28 3a 2c 33 29 3b 0a 20 20 20 65 6e 64 3b 0a 20 ...vert(:,k).=.U(:,3);....end;..
12d20 20 20 0a 20 20 20 66 6f 72 20 6b 3d 31 3a 6e 5f 73 71 5f 79 2b 31 2c 0a 20 20 20 20 20 20 5b 55 ......for.k=1:n_sq_y+1,.......[U
12d40 2c 53 2c 56 5d 20 3d 20 73 76 64 28 5b 78 5f 67 72 69 64 28 3a 2c 6b 29 27 3b 79 5f 67 72 69 64 ,S,V].=.svd([x_grid(:,k)';y_grid
12d60 28 3a 2c 6b 29 27 3b 6f 6e 65 73 28 31 2c 6e 5f 73 71 5f 78 2b 31 29 5d 29 3b 0a 20 20 20 20 20 (:,k)';ones(1,n_sq_x+1)]);......
12d80 20 68 6f 72 69 28 3a 2c 6b 29 20 3d 20 55 28 3a 2c 33 29 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 .hori(:,k).=.U(:,3);....end;....
12da0 0a 20 20 20 25 20 32 20 70 72 69 6e 63 69 70 6c 65 20 56 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e ....%.2.principle.Vanishing.poin
12dc0 74 73 3a 0a 20 20 20 5b 55 2c 53 2c 56 5d 20 3d 20 73 76 64 28 76 65 72 74 29 3b 0a 20 20 20 56 ts:....[U,S,V].=.svd(vert);....V
12de0 5f 76 65 72 74 20 3d 20 55 28 3a 2c 33 29 3b 0a 20 20 20 5b 55 2c 53 2c 56 5d 20 3d 20 73 76 64 _vert.=.U(:,3);....[U,S,V].=.svd
12e00 28 68 6f 72 69 29 3b 0a 20 20 20 56 5f 68 6f 72 69 20 3d 20 55 28 3a 2c 33 29 3b 0a 20 20 20 0a (hori);....V_hori.=.U(:,3);.....
12e20 20 20 20 0a 0a 20 20 20 25 20 53 71 75 61 72 65 20 77 61 72 70 69 6e 67 3a 0a 20 20 20 0a 20 20 ........%.Square.warping:.......
12e40 20 0a 20 20 20 76 65 72 74 5f 66 69 72 73 74 20 3d 20 76 65 72 74 28 3a 2c 31 29 20 2d 20 64 6f .....vert_first.=.vert(:,1).-.do
12e60 74 28 56 5f 76 65 72 74 2c 76 65 72 74 28 3a 2c 31 29 29 2f 64 6f 74 28 56 5f 76 65 72 74 2c 56 t(V_vert,vert(:,1))/dot(V_vert,V
12e80 5f 76 65 72 74 29 20 2a 20 56 5f 76 65 72 74 3b 0a 20 20 20 76 65 72 74 5f 6c 61 73 74 20 3d 20 _vert).*.V_vert;....vert_last.=.
12ea0 76 65 72 74 28 3a 2c 6e 5f 73 71 5f 78 2b 31 29 20 2d 20 64 6f 74 28 56 5f 76 65 72 74 2c 76 65 vert(:,n_sq_x+1).-.dot(V_vert,ve
12ec0 72 74 28 3a 2c 6e 5f 73 71 5f 78 2b 31 29 29 2f 64 6f 74 28 56 5f 76 65 72 74 2c 56 5f 76 65 72 rt(:,n_sq_x+1))/dot(V_vert,V_ver
12ee0 74 29 20 2a 20 56 5f 76 65 72 74 3b 0a 20 20 20 0a 20 20 20 68 6f 72 69 5f 66 69 72 73 74 20 3d t).*.V_vert;........hori_first.=
12f00 20 68 6f 72 69 28 3a 2c 31 29 20 2d 20 64 6f 74 28 56 5f 68 6f 72 69 2c 68 6f 72 69 28 3a 2c 31 .hori(:,1).-.dot(V_hori,hori(:,1
12f20 29 29 2f 64 6f 74 28 56 5f 68 6f 72 69 2c 56 5f 68 6f 72 69 29 20 2a 20 56 5f 68 6f 72 69 3b 0a ))/dot(V_hori,V_hori).*.V_hori;.
12f40 20 20 20 68 6f 72 69 5f 6c 61 73 74 20 3d 20 68 6f 72 69 28 3a 2c 6e 5f 73 71 5f 79 2b 31 29 20 ...hori_last.=.hori(:,n_sq_y+1).
12f60 2d 20 64 6f 74 28 56 5f 68 6f 72 69 2c 68 6f 72 69 28 3a 2c 6e 5f 73 71 5f 79 2b 31 29 29 2f 64 -.dot(V_hori,hori(:,n_sq_y+1))/d
12f80 6f 74 28 56 5f 68 6f 72 69 2c 56 5f 68 6f 72 69 29 20 2a 20 56 5f 68 6f 72 69 3b 0a 20 20 20 0a ot(V_hori,V_hori).*.V_hori;.....
12fa0 20 20 20 0a 20 20 20 78 31 20 3d 20 63 72 6f 73 73 28 68 6f 72 69 5f 66 69 72 73 74 2c 76 65 72 .......x1.=.cross(hori_first,ver
12fc0 74 5f 66 69 72 73 74 29 3b 0a 20 20 20 78 32 20 3d 20 63 72 6f 73 73 28 68 6f 72 69 5f 66 69 72 t_first);....x2.=.cross(hori_fir
12fe0 73 74 2c 76 65 72 74 5f 6c 61 73 74 29 3b 0a 20 20 20 78 33 20 3d 20 63 72 6f 73 73 28 68 6f 72 st,vert_last);....x3.=.cross(hor
13000 69 5f 6c 61 73 74 2c 76 65 72 74 5f 6c 61 73 74 29 3b 0a 20 20 20 78 34 20 3d 20 63 72 6f 73 73 i_last,vert_last);....x4.=.cross
13020 28 68 6f 72 69 5f 6c 61 73 74 2c 76 65 72 74 5f 66 69 72 73 74 29 3b 0a 20 20 20 0a 20 20 20 78 (hori_last,vert_first);........x
13040 31 20 3d 20 78 31 2f 78 31 28 33 29 3b 0a 20 20 20 78 32 20 3d 20 78 32 2f 78 32 28 33 29 3b 0a 1.=.x1/x1(3);....x2.=.x2/x2(3);.
13060 20 20 20 78 33 20 3d 20 78 33 2f 78 33 28 33 29 3b 0a 20 20 20 78 34 20 3d 20 78 34 2f 78 34 28 ...x3.=.x3/x3(3);....x4.=.x4/x4(
13080 33 29 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 0a 20 20 20 5b 73 71 75 61 72 65 5d 20 3d 20 52 65 3);................[square].=.Re
130a0 63 74 61 6e 67 6c 65 32 53 71 75 61 72 65 28 5b 78 31 20 78 32 20 78 33 20 78 34 5d 2c 57 2c 4c ctangle2Square([x1.x2.x3.x4],W,L
130c0 29 3b 0a 0a 20 20 20 79 31 20 3d 20 73 71 75 61 72 65 28 3a 2c 31 29 3b 0a 20 20 20 79 32 20 3d );.....y1.=.square(:,1);....y2.=
130e0 20 73 71 75 61 72 65 28 3a 2c 32 29 3b 0a 20 20 20 79 33 20 3d 20 73 71 75 61 72 65 28 3a 2c 33 .square(:,2);....y3.=.square(:,3
13100 29 3b 0a 20 20 20 79 34 20 3d 20 73 71 75 61 72 65 28 3a 2c 34 29 3b 0a 0a 20 20 20 48 32 20 3d );....y4.=.square(:,4);.....H2.=
13120 20 63 72 6f 73 73 28 56 5f 76 65 72 74 2c 56 5f 68 6f 72 69 29 3b 0a 20 20 20 0a 20 20 20 56 5f .cross(V_vert,V_hori);........V_
13140 64 69 61 67 31 20 3d 20 63 72 6f 73 73 28 63 72 6f 73 73 28 79 31 2c 79 33 29 2c 48 32 29 3b 0a diag1.=.cross(cross(y1,y3),H2);.
13160 20 20 20 56 5f 64 69 61 67 32 20 3d 20 63 72 6f 73 73 28 63 72 6f 73 73 28 79 32 2c 79 34 29 2c ...V_diag2.=.cross(cross(y2,y4),
13180 48 32 29 3b 0a 0a 20 20 20 56 5f 64 69 61 67 31 20 3d 20 56 5f 64 69 61 67 31 20 2f 20 6e 6f 72 H2);.....V_diag1.=.V_diag1./.nor
131a0 6d 28 56 5f 64 69 61 67 31 29 3b 0a 20 20 20 56 5f 64 69 61 67 32 20 3d 20 56 5f 64 69 61 67 32 m(V_diag1);....V_diag2.=.V_diag2
131c0 20 2f 20 6e 6f 72 6d 28 56 5f 64 69 61 67 32 29 3b 0a 0a 20 20 20 56 5f 68 6f 72 69 5f 70 69 78 ./.norm(V_diag2);.....V_hori_pix
131e0 20 3d 20 56 5f 68 6f 72 69 3b 0a 20 20 20 56 5f 76 65 72 74 5f 70 69 78 20 3d 20 56 5f 76 65 72 .=.V_hori;....V_vert_pix.=.V_ver
13200 74 3b 0a 20 20 20 56 5f 64 69 61 67 31 5f 70 69 78 20 3d 20 56 5f 64 69 61 67 31 3b 0a 20 20 20 t;....V_diag1_pix.=.V_diag1;....
13220 56 5f 64 69 61 67 32 5f 70 69 78 20 3d 20 56 5f 64 69 61 67 32 3b 0a 0a 0a 25 20 65 6e 64 20 6f V_diag2_pix.=.V_diag2;...%.end.o
13240 66 20 63 6f 6d 70 75 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 76 61 6e 69 73 68 69 6e 67 20 70 f.computation.of.the.vanishing.p
13260 6f 69 6e 74 73 20 69 6e 20 70 69 78 65 6c 73 2e 0a 0a 0a 0a 0a 0a 0a 0a 0a 69 66 20 74 77 6f 5f oints.in.pixels..........if.two_
13280 66 6f 63 61 6c 2c 20 25 20 6f 6e 6c 79 20 69 66 20 77 65 20 61 74 74 65 6d 70 74 20 74 6f 20 65 focal,.%.only.if.we.attempt.to.e
132a0 73 74 69 6d 61 74 65 20 74 77 6f 20 66 6f 63 61 6c 73 2e 2e 2e 0a 20 20 20 25 20 55 73 65 20 64 stimate.two.focals.......%.Use.d
132c0 69 61 67 6f 6e 61 6c 20 6c 69 6e 65 73 20 61 6c 73 6f 20 74 6f 20 61 64 64 20 74 77 6f 20 65 78 iagonal.lines.also.to.add.two.ex
132e0 74 72 61 20 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 73 20 28 3f 29 0a 20 20 20 4e 5f 6d 69 tra.vanishing.points.(?)....N_mi
13300 6e 20 3d 20 6d 69 6e 28 4e 5f 78 2c 4e 5f 79 29 3b 0a 20 20 20 0a 20 20 20 69 66 20 4e 5f 6d 69 n.=.min(N_x,N_y);........if.N_mi
13320 6e 20 3c 20 32 2c 0a 20 20 20 20 20 20 75 73 65 5f 64 69 61 67 20 3d 20 30 3b 0a 20 20 20 20 20 n.<.2,.......use_diag.=.0;......
13340 20 74 77 6f 5f 66 6f 63 61 6c 20 3d 20 30 3b 0a 20 20 20 20 20 20 64 69 73 70 28 27 43 61 6e 6e .two_focal.=.0;.......disp('Cann
13360 6f 74 20 65 73 74 69 6d 61 74 65 20 74 77 6f 20 66 6f 63 61 6c 73 20 28 6e 6f 20 65 78 69 73 74 ot.estimate.two.focals.(no.exist
13380 69 6e 67 20 64 69 61 67 6f 6e 61 6c 73 29 27 29 3b 20 20 20 0a 20 20 20 65 6c 73 65 0a 20 20 20 ing.diagonals)');.......else....
133a0 20 20 20 75 73 65 5f 64 69 61 67 20 3d 20 31 3b 0a 20 20 20 20 20 20 44 65 6c 74 61 5f 4e 20 3d ...use_diag.=.1;.......Delta_N.=
133c0 20 61 62 73 28 4e 5f 78 2d 4e 5f 79 29 3b 0a 20 20 20 20 20 20 4e 5f 65 78 74 72 61 20 3d 20 72 .abs(N_x-N_y);.......N_extra.=.r
133e0 6f 75 6e 64 28 28 4e 5f 6d 69 6e 20 2d 20 44 65 6c 74 61 5f 4e 20 2d 20 31 29 2f 32 29 3b 0a 20 ound((N_min.-.Delta_N.-.1)/2);..
13400 20 20 20 20 20 64 69 61 67 5f 6c 69 73 74 20 3d 20 2d 4e 5f 65 78 74 72 61 3a 44 65 6c 74 61 5f .....diag_list.=.-N_extra:Delta_
13420 4e 2b 4e 5f 65 78 74 72 61 3b 0a 20 20 20 20 20 20 4e 5f 64 69 61 67 20 3d 20 6c 65 6e 67 74 68 N+N_extra;.......N_diag.=.length
13440 28 64 69 61 67 5f 6c 69 73 74 29 3b 0a 20 20 20 20 20 20 64 69 61 67 5f 31 20 3d 20 7a 65 72 6f (diag_list);.......diag_1.=.zero
13460 73 28 33 2c 4e 5f 64 69 61 67 29 3b 0a 20 20 20 20 20 20 64 69 61 67 5f 32 20 3d 20 7a 65 72 6f s(3,N_diag);.......diag_2.=.zero
13480 73 28 33 2c 4e 5f 64 69 61 67 29 3b 0a 20 20 20 65 6e 64 3b 0a 65 6c 73 65 20 20 20 0a 20 20 20 s(3,N_diag);....end;.else.......
134a0 25 20 47 69 76 65 20 75 70 20 74 68 65 20 75 73 65 20 6f 66 20 74 68 65 20 64 69 61 67 6f 6e 61 %.Give.up.the.use.of.the.diagona
134c0 6c 73 20 28 73 6f 20 66 61 72 29 0a 20 20 20 25 20 69 74 20 73 65 65 6d 73 20 74 68 61 74 20 74 ls.(so.far)....%.it.seems.that.t
134e0 68 65 20 65 72 72 6f 72 20 69 73 20 69 6e 63 72 65 61 73 65 64 0a 20 20 20 75 73 65 5f 64 69 61 he.error.is.increased....use_dia
13500 67 20 3d 20 30 3b 0a 65 6e 64 3b 0a 0a 0a 0a 25 20 54 68 65 20 76 65 72 74 69 63 61 6c 20 6c 69 g.=.0;.end;....%.The.vertical.li
13520 6e 65 73 3a 20 76 65 72 74 2c 20 48 6f 72 69 7a 6f 6e 74 61 6c 20 6c 69 6e 65 73 3a 20 68 6f 72 nes:.vert,.Horizontal.lines:.hor
13540 69 0a 76 65 72 74 20 3d 20 7a 65 72 6f 73 28 33 2c 6e 5f 73 71 5f 78 2b 31 29 3b 0a 68 6f 72 69 i.vert.=.zeros(3,n_sq_x+1);.hori
13560 20 3d 20 7a 65 72 6f 73 28 33 2c 6e 5f 73 71 5f 79 2b 31 29 3b 0a 20 0a 66 6f 72 20 63 6f 75 6e .=.zeros(3,n_sq_y+1);...for.coun
13580 74 65 72 5f 6b 20 3d 20 31 3a 4e 5f 69 74 65 72 2c 20 09 25 20 74 68 65 20 49 74 65 72 61 74 69 ter_k.=.1:N_iter,..%.the.Iterati
135a0 76 65 20 56 61 6e 69 73 68 69 6e 67 20 50 6f 69 6e 74 73 20 41 6c 67 6f 72 69 74 68 6d 20 74 6f ve.Vanishing.Points.Algorithm.to
135c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
135e0 20 25 20 65 73 74 69 6d 61 74 65 20 74 68 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 20 61 63 63 .%.estimate.the.focal.length.acc
13600 75 72 61 74 65 6c 79 0a 20 20 20 0a 20 20 20 78 5f 67 72 69 64 28 3a 29 20 3d 20 78 5f 61 6c 6c urately........x_grid(:).=.x_all
13620 5f 63 28 31 2c 3a 29 3b 0a 20 20 20 79 5f 67 72 69 64 28 3a 29 20 3d 20 78 5f 61 6c 6c 5f 63 28 _c(1,:);....y_grid(:).=.x_all_c(
13640 32 2c 3a 29 3b 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 66 6f 72 20 6b 3d 31 3a 6e 5f 73 71 5f 2,:);..............for.k=1:n_sq_
13660 78 2b 31 2c 0a 20 20 20 20 20 20 5b 55 2c 53 2c 56 5d 20 3d 20 73 76 64 28 5b 78 5f 67 72 69 64 x+1,.......[U,S,V].=.svd([x_grid
13680 28 6b 2c 3a 29 3b 79 5f 67 72 69 64 28 6b 2c 3a 29 3b 6f 6e 65 73 28 31 2c 6e 5f 73 71 5f 79 2b (k,:);y_grid(k,:);ones(1,n_sq_y+
136a0 31 29 5d 29 3b 0a 20 20 20 20 20 20 76 65 72 74 28 3a 2c 6b 29 20 3d 20 55 28 3a 2c 33 29 3b 0a 1)]);.......vert(:,k).=.U(:,3);.
136c0 20 20 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 66 6f 72 20 6b 3d 31 3a 6e 5f 73 71 5f 79 2b 31 2c ...end;........for.k=1:n_sq_y+1,
136e0 0a 20 20 20 20 20 20 5b 55 2c 53 2c 56 5d 20 3d 20 73 76 64 28 5b 78 5f 67 72 69 64 28 3a 2c 6b .......[U,S,V].=.svd([x_grid(:,k
13700 29 27 3b 79 5f 67 72 69 64 28 3a 2c 6b 29 27 3b 6f 6e 65 73 28 31 2c 6e 5f 73 71 5f 78 2b 31 29 )';y_grid(:,k)';ones(1,n_sq_x+1)
13720 5d 29 3b 0a 20 20 20 20 20 20 68 6f 72 69 28 3a 2c 6b 29 20 3d 20 55 28 3a 2c 33 29 3b 0a 20 20 ]);.......hori(:,k).=.U(:,3);...
13740 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 25 20 32 20 70 72 69 6e 63 69 70 6c 65 20 56 61 6e 69 73 .end;........%.2.principle.Vanis
13760 68 69 6e 67 20 70 6f 69 6e 74 73 3a 0a 20 20 20 5b 55 2c 53 2c 56 5d 20 3d 20 73 76 64 28 76 65 hing.points:....[U,S,V].=.svd(ve
13780 72 74 29 3b 0a 20 20 20 56 5f 76 65 72 74 20 3d 20 55 28 3a 2c 33 29 3b 0a 20 20 20 5b 55 2c 53 rt);....V_vert.=.U(:,3);....[U,S
137a0 2c 56 5d 20 3d 20 73 76 64 28 68 6f 72 69 29 3b 0a 20 20 20 56 5f 68 6f 72 69 20 3d 20 55 28 3a ,V].=.svd(hori);....V_hori.=.U(:
137c0 2c 33 29 3b 0a 20 20 20 0a 20 20 20 0a 0a 20 20 20 25 20 53 71 75 61 72 65 20 77 61 72 70 69 6e ,3);.............%.Square.warpin
137e0 67 3a 0a 20 20 20 0a 20 20 20 0a 20 20 20 76 65 72 74 5f 66 69 72 73 74 20 3d 20 76 65 72 74 28 g:............vert_first.=.vert(
13800 3a 2c 31 29 20 2d 20 64 6f 74 28 56 5f 76 65 72 74 2c 76 65 72 74 28 3a 2c 31 29 29 2f 64 6f 74 :,1).-.dot(V_vert,vert(:,1))/dot
13820 28 56 5f 76 65 72 74 2c 56 5f 76 65 72 74 29 20 2a 20 56 5f 76 65 72 74 3b 0a 20 20 20 76 65 72 (V_vert,V_vert).*.V_vert;....ver
13840 74 5f 6c 61 73 74 20 3d 20 76 65 72 74 28 3a 2c 6e 5f 73 71 5f 78 2b 31 29 20 2d 20 64 6f 74 28 t_last.=.vert(:,n_sq_x+1).-.dot(
13860 56 5f 76 65 72 74 2c 76 65 72 74 28 3a 2c 6e 5f 73 71 5f 78 2b 31 29 29 2f 64 6f 74 28 56 5f 76 V_vert,vert(:,n_sq_x+1))/dot(V_v
13880 65 72 74 2c 56 5f 76 65 72 74 29 20 2a 20 56 5f 76 65 72 74 3b 0a 20 20 20 0a 20 20 20 68 6f 72 ert,V_vert).*.V_vert;........hor
138a0 69 5f 66 69 72 73 74 20 3d 20 68 6f 72 69 28 3a 2c 31 29 20 2d 20 64 6f 74 28 56 5f 68 6f 72 69 i_first.=.hori(:,1).-.dot(V_hori
138c0 2c 68 6f 72 69 28 3a 2c 31 29 29 2f 64 6f 74 28 56 5f 68 6f 72 69 2c 56 5f 68 6f 72 69 29 20 2a ,hori(:,1))/dot(V_hori,V_hori).*
138e0 20 56 5f 68 6f 72 69 3b 0a 20 20 20 68 6f 72 69 5f 6c 61 73 74 20 3d 20 68 6f 72 69 28 3a 2c 6e .V_hori;....hori_last.=.hori(:,n
13900 5f 73 71 5f 79 2b 31 29 20 2d 20 64 6f 74 28 56 5f 68 6f 72 69 2c 68 6f 72 69 28 3a 2c 6e 5f 73 _sq_y+1).-.dot(V_hori,hori(:,n_s
13920 71 5f 79 2b 31 29 29 2f 64 6f 74 28 56 5f 68 6f 72 69 2c 56 5f 68 6f 72 69 29 20 2a 20 56 5f 68 q_y+1))/dot(V_hori,V_hori).*.V_h
13940 6f 72 69 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 78 31 20 3d 20 63 72 6f 73 73 28 68 6f 72 69 5f ori;............x1.=.cross(hori_
13960 66 69 72 73 74 2c 76 65 72 74 5f 66 69 72 73 74 29 3b 0a 20 20 20 78 32 20 3d 20 63 72 6f 73 73 first,vert_first);....x2.=.cross
13980 28 68 6f 72 69 5f 66 69 72 73 74 2c 76 65 72 74 5f 6c 61 73 74 29 3b 0a 20 20 20 78 33 20 3d 20 (hori_first,vert_last);....x3.=.
139a0 63 72 6f 73 73 28 68 6f 72 69 5f 6c 61 73 74 2c 76 65 72 74 5f 6c 61 73 74 29 3b 0a 20 20 20 78 cross(hori_last,vert_last);....x
139c0 34 20 3d 20 63 72 6f 73 73 28 68 6f 72 69 5f 6c 61 73 74 2c 76 65 72 74 5f 66 69 72 73 74 29 3b 4.=.cross(hori_last,vert_first);
139e0 0a 20 20 20 0a 20 20 20 78 31 20 3d 20 78 31 2f 78 31 28 33 29 3b 0a 20 20 20 78 32 20 3d 20 78 ........x1.=.x1/x1(3);....x2.=.x
13a00 32 2f 78 32 28 33 29 3b 0a 20 20 20 78 33 20 3d 20 78 33 2f 78 33 28 33 29 3b 0a 20 20 20 78 34 2/x2(3);....x3.=.x3/x3(3);....x4
13a20 20 3d 20 78 34 2f 78 34 28 33 29 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 0a 20 20 20 5b 73 71 75 .=.x4/x4(3);................[squ
13a40 61 72 65 5d 20 3d 20 52 65 63 74 61 6e 67 6c 65 32 53 71 75 61 72 65 28 5b 78 31 20 78 32 20 78 are].=.Rectangle2Square([x1.x2.x
13a60 33 20 78 34 5d 2c 57 2c 4c 29 3b 0a 0a 20 20 20 79 31 20 3d 20 73 71 75 61 72 65 28 3a 2c 31 29 3.x4],W,L);.....y1.=.square(:,1)
13a80 3b 0a 20 20 20 79 32 20 3d 20 73 71 75 61 72 65 28 3a 2c 32 29 3b 0a 20 20 20 79 33 20 3d 20 73 ;....y2.=.square(:,2);....y3.=.s
13aa0 71 75 61 72 65 28 3a 2c 33 29 3b 0a 20 20 20 79 34 20 3d 20 73 71 75 61 72 65 28 3a 2c 34 29 3b quare(:,3);....y4.=.square(:,4);
13ac0 0a 0a 20 20 20 48 32 20 3d 20 63 72 6f 73 73 28 56 5f 76 65 72 74 2c 56 5f 68 6f 72 69 29 3b 0a .....H2.=.cross(V_vert,V_hori);.
13ae0 20 20 20 0a 20 20 20 56 5f 64 69 61 67 31 20 3d 20 63 72 6f 73 73 28 63 72 6f 73 73 28 79 31 2c .......V_diag1.=.cross(cross(y1,
13b00 79 33 29 2c 48 32 29 3b 0a 20 20 20 56 5f 64 69 61 67 32 20 3d 20 63 72 6f 73 73 28 63 72 6f 73 y3),H2);....V_diag2.=.cross(cros
13b20 73 28 79 32 2c 79 34 29 2c 48 32 29 3b 0a 0a 20 20 20 56 5f 64 69 61 67 31 20 3d 20 56 5f 64 69 s(y2,y4),H2);.....V_diag1.=.V_di
13b40 61 67 31 20 2f 20 6e 6f 72 6d 28 56 5f 64 69 61 67 31 29 3b 0a 20 20 20 56 5f 64 69 61 67 32 20 ag1./.norm(V_diag1);....V_diag2.
13b60 3d 20 56 5f 64 69 61 67 32 20 2f 20 6e 6f 72 6d 28 56 5f 64 69 61 67 32 29 3b 0a 0a 20 20 20 0a =.V_diag2./.norm(V_diag2);......
13b80 20 20 20 0a 20 20 20 0a 20 20 20 25 20 45 73 74 69 6d 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 66 ...........%.Estimation.of.the.f
13ba0 6f 63 61 6c 20 6c 65 6e 67 74 68 2c 20 61 6e 64 20 6e 6f 72 6d 61 6c 69 7a 61 74 69 6f 6e 3a 0a ocal.length,.and.normalization:.
13bc0 20 20 20 0a 20 20 20 25 20 43 6f 6d 70 75 74 65 20 74 68 65 20 65 6c 6c 69 70 73 69 73 20 6f 66 .......%.Compute.the.ellipsis.of
13be0 20 28 31 2f 66 5e 32 29 20 70 6f 73 69 74 69 6f 6e 73 3a 0a 20 20 20 25 20 61 20 2a 20 28 31 2f .(1/f^2).positions:....%.a.*.(1/
13c00 66 78 29 5e 32 20 2b 20 62 20 2a 20 28 31 2f 66 78 29 5e 32 20 3d 20 2d 63 0a 20 20 20 0a 20 20 fx)^2.+.b.*.(1/fx)^2.=.-c.......
13c20 20 0a 20 20 20 61 31 20 3d 20 56 5f 68 6f 72 69 28 31 29 3b 0a 20 20 20 62 31 20 3d 20 56 5f 68 .....a1.=.V_hori(1);....b1.=.V_h
13c40 6f 72 69 28 32 29 3b 0a 20 20 20 63 31 20 3d 20 56 5f 68 6f 72 69 28 33 29 3b 0a 20 20 20 0a 20 ori(2);....c1.=.V_hori(3);......
13c60 20 20 61 32 20 3d 20 56 5f 76 65 72 74 28 31 29 3b 0a 20 20 20 62 32 20 3d 20 56 5f 76 65 72 74 ..a2.=.V_vert(1);....b2.=.V_vert
13c80 28 32 29 3b 0a 20 20 20 63 32 20 3d 20 56 5f 76 65 72 74 28 33 29 3b 0a 20 20 20 0a 20 20 20 61 (2);....c2.=.V_vert(3);........a
13ca0 33 20 3d 20 56 5f 64 69 61 67 31 28 31 29 3b 0a 20 20 20 62 33 20 3d 20 56 5f 64 69 61 67 31 28 3.=.V_diag1(1);....b3.=.V_diag1(
13cc0 32 29 3b 0a 20 20 20 63 33 20 3d 20 56 5f 64 69 61 67 31 28 33 29 3b 0a 20 20 20 0a 20 20 20 61 2);....c3.=.V_diag1(3);........a
13ce0 34 20 3d 20 56 5f 64 69 61 67 32 28 31 29 3b 0a 20 20 20 62 34 20 3d 20 56 5f 64 69 61 67 32 28 4.=.V_diag2(1);....b4.=.V_diag2(
13d00 32 29 3b 0a 20 20 20 63 34 20 3d 20 56 5f 64 69 61 67 32 28 33 29 3b 0a 20 20 20 0a 20 20 20 0a 2);....c4.=.V_diag2(3);.........
13d20 20 20 20 69 66 20 74 77 6f 5f 66 6f 63 61 6c 2c 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 0a 20 ...if.two_focal,................
13d40 20 20 20 20 20 41 20 3d 20 5b 61 31 2a 61 32 20 62 31 2a 62 32 3b 61 33 2a 61 34 20 62 33 2a 62 .....A.=.[a1*a2.b1*b2;a3*a4.b3*b
13d60 34 5d 3b 0a 20 20 20 20 20 20 62 20 3d 20 2d 5b 63 31 2a 63 32 3b 63 33 2a 63 34 5d 3b 0a 20 20 4];.......b.=.-[c1*c2;c3*c4];...
13d80 20 20 20 20 0a 20 20 20 20 20 20 66 20 3d 20 73 71 72 74 28 61 62 73 28 31 2e 2f 28 69 6e 76 28 ...........f.=.sqrt(abs(1./(inv(
13da0 41 29 2a 62 29 29 29 3b 0a 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 66 A)*b)));.....else..............f
13dc0 20 3d 20 73 71 72 74 28 61 62 73 28 2d 28 63 31 2a 63 32 2a 28 61 31 2a 61 32 20 2b 20 62 31 2a .=.sqrt(abs(-(c1*c2*(a1*a2.+.b1*
13de0 62 32 29 20 2b 20 63 33 2a 63 34 2a 28 61 33 2a 61 34 20 2b 20 62 33 2a 62 34 29 29 2f 28 63 31 b2).+.c3*c4*(a3*a4.+.b3*b4))/(c1
13e00 5e 32 2a 63 32 5e 32 20 2b 20 63 33 5e 32 2a 63 34 5e 32 29 29 29 3b 0a 20 20 20 20 20 20 0a 20 ^2*c2^2.+.c3^2*c4^2)));.........
13e20 20 20 20 20 20 66 20 3d 20 5b 66 3b 66 5d 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a 20 .....f.=.[f;f];...........end;..
13e40 20 20 0a 0a 20 20 20 0a 20 20 20 25 20 52 45 4d 41 52 4b 3a 0a 20 20 20 25 20 69 66 20 62 6f 74 ...........%.REMARK:....%.if.bot
13e60 68 20 61 20 61 6e 64 20 62 20 61 72 65 20 73 6d 61 6c 6c 2c 20 74 68 65 20 63 61 6c 69 62 72 61 h.a.and.b.are.small,.the.calibra
13e80 74 69 6f 6e 20 69 73 20 69 6d 70 6f 73 73 69 62 6c 65 2e 0a 20 20 20 25 20 69 66 20 6f 6e 65 20 tion.is.impossible.....%.if.one.
13ea0 6f 66 20 74 68 65 6d 20 69 73 20 73 6d 61 6c 6c 2c 20 6f 6e 6c 79 20 74 68 65 20 6f 74 68 65 72 of.them.is.small,.only.the.other
13ec0 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 20 69 73 20 6f 62 73 65 72 76 61 62 6c 65 0a 20 20 20 25 .focal.length.is.observable....%
13ee0 20 69 66 20 6e 6f 6e 65 20 69 73 20 73 6d 61 6c 6c 2c 20 62 6f 74 68 20 66 6f 63 61 6c 73 20 61 .if.none.is.small,.both.focals.a
13f00 72 65 20 6f 62 73 65 72 76 61 62 6c 65 0a 20 20 20 0a 20 20 20 0a 20 20 20 66 63 5f 32 20 3d 20 re.observable............fc_2.=.
13f20 66 63 5f 32 20 2e 2a 20 66 3b 0a 20 20 20 0a 20 20 20 20 20 20 0a 20 20 20 25 20 44 45 42 55 47 fc_2..*.f;...............%.DEBUG
13f40 20 50 41 52 54 3a 20 66 69 78 20 66 6f 63 61 6c 20 74 6f 20 35 30 30 2e 2e 2e 0a 20 20 20 25 66 .PART:.fix.focal.to.500.......%f
13f60 63 5f 32 3d 20 5b 35 30 30 3b 35 30 30 5d 3b 20 64 69 73 70 28 27 4c 69 6e 65 20 32 39 33 20 74 c_2=.[500;500];.disp('Line.293.t
13f80 6f 20 62 65 20 65 61 72 61 73 65 64 20 69 6e 20 44 69 73 74 6f 72 32 43 61 6c 69 62 2e 6d 27 29 o.be.earased.in.Distor2Calib.m')
13fa0 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 20 65 6e 64 20 6f 66 20 66 6f 63 61 6c 20 63 6f 6d 70 ;............%.end.of.focal.comp
13fc0 65 6e 73 61 74 69 6f 6e 0a 20 20 20 0a 20 20 20 25 20 6e 6f 72 6d 61 6c 69 7a 65 20 62 79 20 74 ensation........%.normalize.by.t
13fe0 68 65 20 63 75 72 72 65 6e 74 20 66 6f 63 61 6c 3a 0a 20 20 20 0a 20 20 20 78 5f 61 6c 6c 20 3d he.current.focal:........x_all.=
14000 20 5b 67 72 69 64 5f 70 74 73 5f 63 65 6e 74 65 72 65 64 28 31 2c 3a 29 2f 66 63 5f 32 28 31 29 .[grid_pts_centered(1,:)/fc_2(1)
14020 3b 67 72 69 64 5f 70 74 73 5f 63 65 6e 74 65 72 65 64 28 32 2c 3a 29 2f 66 63 5f 32 28 32 29 5d ;grid_pts_centered(2,:)/fc_2(2)]
14040 3b 0a 20 20 20 0a 20 20 20 25 20 43 6f 6d 70 65 6e 73 61 74 65 20 62 79 20 74 68 65 20 64 69 73 ;........%.Compensate.by.the.dis
14060 74 6f 72 74 69 6f 6e 20 66 61 63 74 6f 72 3a 0a 20 20 20 0a 20 20 20 78 5f 61 6c 6c 5f 63 20 3d tortion.factor:........x_all_c.=
14080 20 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 28 78 5f 61 6c 6c 2c 6b 5f 64 69 73 74 29 3b 0a .comp_distortion(x_all,k_dist);.
140a0 20 20 20 0a 65 6e 64 3b 0a 20 20 20 0a 25 20 41 74 20 74 68 61 74 20 70 6f 69 6e 74 2c 20 77 65 ....end;.....%.At.that.point,.we
140c0 20 68 6f 70 65 20 74 68 61 74 20 74 68 65 20 64 69 73 74 6f 72 74 69 6f 6e 20 69 73 20 67 6f 6e .hope.that.the.distortion.is.gon
140e0 65 2e 2e 2e 0a 0a 78 5f 67 72 69 64 28 3a 29 20 3d 20 78 5f 61 6c 6c 5f 63 28 31 2c 3a 29 3b 0a e.....x_grid(:).=.x_all_c(1,:);.
14100 79 5f 67 72 69 64 28 3a 29 20 3d 20 78 5f 61 6c 6c 5f 63 28 32 2c 3a 29 3b 0a 0a 66 6f 72 20 6b y_grid(:).=.x_all_c(2,:);..for.k
14120 3d 31 3a 6e 5f 73 71 5f 78 2b 31 2c 0a 20 20 20 5b 55 2c 53 2c 56 5d 20 3d 20 73 76 64 28 5b 78 =1:n_sq_x+1,....[U,S,V].=.svd([x
14140 5f 67 72 69 64 28 6b 2c 3a 29 3b 79 5f 67 72 69 64 28 6b 2c 3a 29 3b 6f 6e 65 73 28 31 2c 6e 5f _grid(k,:);y_grid(k,:);ones(1,n_
14160 73 71 5f 79 2b 31 29 5d 29 3b 0a 20 20 20 76 65 72 74 28 3a 2c 6b 29 20 3d 20 55 28 3a 2c 33 29 sq_y+1)]);....vert(:,k).=.U(:,3)
14180 3b 0a 65 6e 64 3b 0a 0a 66 6f 72 20 6b 3d 31 3a 6e 5f 73 71 5f 79 2b 31 2c 0a 20 20 20 5b 55 2c ;.end;..for.k=1:n_sq_y+1,....[U,
141a0 53 2c 56 5d 20 3d 20 73 76 64 28 5b 78 5f 67 72 69 64 28 3a 2c 6b 29 27 3b 79 5f 67 72 69 64 28 S,V].=.svd([x_grid(:,k)';y_grid(
141c0 3a 2c 6b 29 27 3b 6f 6e 65 73 28 31 2c 6e 5f 73 71 5f 78 2b 31 29 5d 29 3b 0a 20 20 20 68 6f 72 :,k)';ones(1,n_sq_x+1)]);....hor
141e0 69 28 3a 2c 6b 29 20 3d 20 55 28 3a 2c 33 29 3b 0a 65 6e 64 3b 0a 0a 25 20 56 61 6e 69 73 68 69 i(:,k).=.U(:,3);.end;..%.Vanishi
14200 6e 67 20 70 6f 69 6e 74 73 3a 0a 5b 55 2c 53 2c 56 5d 20 3d 20 73 76 64 28 76 65 72 74 29 3b 0a ng.points:.[U,S,V].=.svd(vert);.
14220 56 5f 76 65 72 74 20 3d 20 55 28 3a 2c 33 29 3b 0a 5b 55 2c 53 2c 56 5d 20 3d 20 73 76 64 28 68 V_vert.=.U(:,3);.[U,S,V].=.svd(h
14240 6f 72 69 29 3b 0a 56 5f 68 6f 72 69 20 3d 20 55 28 3a 2c 33 29 3b 0a 0a 25 20 48 6f 72 69 7a 6f ori);.V_hori.=.U(:,3);..%.Horizo
14260 6e 3a 0a 0a 48 5f 32 20 3d 20 63 72 6f 73 73 28 56 5f 76 65 72 74 2c 56 5f 68 6f 72 69 29 3b 0a n:..H_2.=.cross(V_vert,V_hori);.
14280 20 20 20 0a 25 20 20 20 48 5f 32 20 3d 20 63 72 6f 73 73 28 56 5f 76 65 72 74 2c 56 5f 68 6f 72 ....%...H_2.=.cross(V_vert,V_hor
142a0 69 29 3b 0a 0a 25 20 70 69 63 6b 20 61 20 70 6c 61 6e 65 20 69 6e 20 66 72 6f 6e 74 20 6f 66 20 i);..%.pick.a.plane.in.front.of.
142c0 74 68 65 20 63 61 6d 65 72 61 20 28 70 6f 73 69 74 69 76 65 20 64 65 70 74 68 29 0a 69 66 20 48 the.camera.(positive.depth).if.H
142e0 5f 32 28 33 29 20 3c 20 30 2c 20 48 5f 32 20 3d 20 2d 48 5f 32 3b 20 65 6e 64 3b 0a 0a 0a 25 20 _2(3).<.0,.H_2.=.-H_2;.end;...%.
14300 52 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 78 3a 0a 0a 69 66 20 56 5f 68 6f 72 69 28 31 29 20 3c Rotation.matrix:..if.V_hori(1).<
14320 20 30 2c 20 56 5f 68 6f 72 69 20 3d 20 2d 56 5f 68 6f 72 69 3b 20 65 6e 64 3b 0a 0a 56 5f 68 6f .0,.V_hori.=.-V_hori;.end;..V_ho
14340 72 69 20 3d 20 56 5f 68 6f 72 69 2f 6e 6f 72 6d 28 56 5f 68 6f 72 69 29 3b 0a 48 5f 32 20 3d 20 ri.=.V_hori/norm(V_hori);.H_2.=.
14360 48 5f 32 2f 6e 6f 72 6d 28 48 5f 32 29 3b 0a 0a 56 5f 68 6f 72 69 20 3d 20 56 5f 68 6f 72 69 20 H_2/norm(H_2);..V_hori.=.V_hori.
14380 2d 20 64 6f 74 28 56 5f 68 6f 72 69 2c 48 5f 32 29 2a 48 5f 32 3b 0a 0a 52 63 5f 32 20 3d 20 5b -.dot(V_hori,H_2)*H_2;..Rc_2.=.[
143a0 56 5f 68 6f 72 69 20 63 72 6f 73 73 28 48 5f 32 2c 56 5f 68 6f 72 69 29 20 48 5f 32 5d 3b 0a 0a V_hori.cross(H_2,V_hori).H_2];..
143c0 52 63 5f 32 20 3d 20 52 63 5f 32 20 2f 20 64 65 74 28 52 63 5f 32 29 3b 0a 0a 25 6f 6d 63 5f 32 Rc_2.=.Rc_2./.det(Rc_2);..%omc_2
143e0 20 3d 20 72 6f 64 72 69 67 75 65 73 28 52 63 5f 32 29 3b 0a 0a 25 52 63 5f 32 20 3d 20 72 6f 64 .=.rodrigues(Rc_2);..%Rc_2.=.rod
14400 72 69 67 75 65 73 28 6f 6d 63 5f 32 29 3b 0a 0a 25 20 46 69 6e 64 20 74 68 65 20 64 69 73 74 61 rigues(omc_2);..%.Find.the.dista
14420 6e 63 65 20 6f 66 20 74 68 65 20 70 6c 61 6e 65 20 66 6f 72 20 74 72 61 6e 73 6c 61 74 69 6f 6e nce.of.the.plane.for.translation
14440 20 76 65 63 74 6f 72 3a 0a 0a 78 63 5f 32 20 3d 20 5b 78 5f 61 6c 6c 5f 63 3b 6f 6e 65 73 28 31 .vector:..xc_2.=.[x_all_c;ones(1
14460 2c 4e 70 29 5d 3b 0a 0a 5a 63 5f 32 20 3d 20 31 2e 2f 73 75 6d 28 78 63 5f 32 20 2e 2a 20 28 52 ,Np)];..Zc_2.=.1./sum(xc_2..*.(R
14480 63 5f 32 28 3a 2c 33 29 2a 6f 6e 65 73 28 31 2c 4e 70 29 29 29 3b 0a 0a 58 6f 5f 32 20 3d 20 5b c_2(:,3)*ones(1,Np)));..Xo_2.=.[
144a0 73 75 6d 28 78 63 5f 32 20 2e 2a 20 28 52 63 5f 32 28 3a 2c 31 29 2a 6f 6e 65 73 28 31 2c 4e 70 sum(xc_2..*.(Rc_2(:,1)*ones(1,Np
144c0 29 29 29 2e 2a 5a 63 5f 32 20 3b 20 73 75 6d 28 78 63 5f 32 20 2e 2a 20 28 52 63 5f 32 28 3a 2c ))).*Zc_2.;.sum(xc_2..*.(Rc_2(:,
144e0 32 29 2a 6f 6e 65 73 28 31 2c 4e 70 29 29 29 2e 2a 5a 63 5f 32 5d 3b 0a 0a 58 58 6f 5f 32 20 3d 2)*ones(1,Np))).*Zc_2];..XXo_2.=
14500 20 58 6f 5f 32 20 2d 20 6d 65 61 6e 28 58 6f 5f 32 27 29 27 2a 6f 6e 65 73 28 31 2c 4e 70 29 3b .Xo_2.-.mean(Xo_2')'*ones(1,Np);
14520 0a 0a 64 69 73 74 61 6e 63 65 5f 78 20 3d 20 6e 6f 72 6d 28 58 67 72 69 64 5f 32 28 31 2c 3a 29 ..distance_x.=.norm(Xgrid_2(1,:)
14540 29 2f 6e 6f 72 6d 28 58 58 6f 5f 32 28 31 2c 3a 29 29 3b 0a 64 69 73 74 61 6e 63 65 5f 79 20 3d )/norm(XXo_2(1,:));.distance_y.=
14560 20 6e 6f 72 6d 28 58 67 72 69 64 5f 32 28 32 2c 3a 29 29 2f 6e 6f 72 6d 28 58 58 6f 5f 32 28 32 .norm(Xgrid_2(2,:))/norm(XXo_2(2
14580 2c 3a 29 29 3b 0a 0a 0a 64 69 73 74 61 6e 63 65 20 3d 20 73 75 6d 28 73 75 6d 28 58 58 6f 5f 32 ,:));...distance.=.sum(sum(XXo_2
145a0 28 31 3a 32 2c 3a 29 2e 2a 58 67 72 69 64 5f 32 28 31 3a 32 2c 3a 29 29 29 2f 73 75 6d 28 73 75 (1:2,:).*Xgrid_2(1:2,:)))/sum(su
145c0 6d 28 58 58 6f 5f 32 28 31 3a 32 2c 3a 29 2e 5e 32 29 29 3b 0a 0a 61 6c 70 68 61 20 3d 20 61 62 m(XXo_2(1:2,:).^2));..alpha.=.ab
145e0 73 28 64 69 73 74 61 6e 63 65 5f 78 20 2d 20 64 69 73 74 61 6e 63 65 5f 79 29 2f 64 69 73 74 61 s(distance_x.-.distance_y)/dista
14600 6e 63 65 3b 0a 0a 69 66 20 28 61 6c 70 68 61 3e 30 2e 31 29 26 7e 74 77 6f 5f 66 6f 63 61 6c 2c nce;..if.(alpha>0.1)&~two_focal,
14620 0a 20 20 20 64 69 73 70 28 27 53 68 6f 75 6c 64 20 75 73 65 20 74 77 6f 20 66 6f 63 61 6c 73 20 ....disp('Should.use.two.focals.
14640 69 6e 20 78 20 61 6e 64 20 79 2e 2e 2e 27 29 3b 0a 65 6e 64 3b 0a 0a 25 20 44 65 64 75 63 65 20 in.x.and.y...');.end;..%.Deduce.
14660 74 68 65 20 74 72 61 6e 73 6c 61 74 69 6f 6e 20 76 65 63 74 6f 72 3a 0a 0a 54 63 5f 32 20 3d 20 the.translation.vector:..Tc_2.=.
14680 64 69 73 74 61 6e 63 65 20 2a 20 48 5f 32 3b 0a 0a 0a 0a 0a 0a 72 65 74 75 72 6e 3b 0a 0a 20 20 distance.*.H_2;......return;....
146a0 20 56 5f 68 6f 72 69 5f 70 69 78 2f 56 5f 68 6f 72 69 5f 70 69 78 28 33 29 0a 20 20 20 56 5f 76 .V_hori_pix/V_hori_pix(3)....V_v
146c0 65 72 74 5f 70 69 78 2f 56 5f 76 65 72 74 5f 70 69 78 28 33 29 0a 20 20 20 56 5f 64 69 61 67 31 ert_pix/V_vert_pix(3)....V_diag1
146e0 5f 70 69 78 2f 56 5f 64 69 61 67 31 5f 70 69 78 28 33 29 0a 20 20 20 56 5f 64 69 61 67 32 5f 70 _pix/V_diag1_pix(3)....V_diag2_p
14700 69 78 2f 56 5f 64 69 61 67 32 5f 70 69 78 28 33 29 0a 2c 33 29 3b 0a 20 20 20 65 6e 64 3b 0a 20 ix/V_diag2_pix(3).,3);....end;..
14720 20 20 0a 20 20 20 66 6f 72 20 6b 3d 31 3a 6e 5f 73 71 5f 79 2b 31 2c 0a 20 20 20 20 20 20 5b 55 ......for.k=1:n_sq_y+1,.......[U
14740 2c 53 2c 56 5d 20 3d 20 73 76 64 28 5b 78 5f 67 72 69 64 28 3a 2c 6b 29 27 3b 79 5f 67 72 69 64 ,S,V].=.svd([x_grid(:,k)';y_grid
14760 28 3a 2c 6b 29 27 3b 6f 6e 65 73 28 31 2c 6e 5f 73 71 5f 78 2b 31 29 5d 29 3b 0a 20 20 20 20 20 (:,k)';ones(1,n_sq_x+1)]);......
14780 20 68 6f 72 69 28 3a 2c 6b 29 20 3d 20 55 28 3a 2c 33 29 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 .hori(:,k).=.U(:,3);....end;....
147a0 0a 20 20 20 25 20 32 20 70 72 69 6e 63 69 70 6c 65 20 56 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e ....%.2.principle.Vanishing.poin
147c0 74 73 3a 0a 20 20 20 5b 55 2c 53 2c 56 5d 20 3d 20 73 76 64 28 76 65 72 74 29 3b 0a 20 20 20 56 ts:....[U,S,V].=.svd(vert);....V
147e0 5f 76 65 72 74 20 3d 20 55 28 3a 2c 33 29 3b 0a 20 20 20 5b 55 2c 53 2c 56 5d 20 3d 20 73 76 64 _vert.=.U(:,3);....[U,S,V].=.svd
14800 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 65 78 74 72 61 63 74 5f 67 72 69 64 2e 6d 00 00 00 00 TOOLBOX_calib/extract_grid.m....
14820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14860 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
14880 20 20 31 35 30 33 30 20 20 37 30 32 34 30 33 37 33 32 31 20 20 31 31 32 37 30 00 20 00 00 00 00 ..15030..7024037321..11270......
148a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
148c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
148e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
149a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
149c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
149e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14a00 66 75 6e 63 74 69 6f 6e 20 5b 78 2c 58 2c 6e 5f 73 71 5f 78 2c 6e 5f 73 71 5f 79 2c 69 6e 64 5f function.[x,X,n_sq_x,n_sq_y,ind_
14a20 6f 72 69 67 2c 69 6e 64 5f 78 2c 69 6e 64 5f 79 5d 20 3d 20 65 78 74 72 61 63 74 5f 67 72 69 64 orig,ind_x,ind_y].=.extract_grid
14a40 28 49 2c 77 69 6e 74 78 2c 77 69 6e 74 79 2c 66 63 2c 63 63 2c 6b 63 29 3b 0a 0a 6d 61 70 20 3d (I,wintx,winty,fc,cc,kc);..map.=
14a60 20 67 72 61 79 28 32 35 36 29 3b 0a 0a 09 66 69 67 75 72 65 28 32 29 3b 0a 09 69 6d 61 67 65 28 .gray(256);...figure(2);..image(
14a80 49 29 3b 0a 20 20 20 63 6f 6c 6f 72 6d 61 70 28 6d 61 70 29 3b 0a 20 20 20 0a 20 20 20 0a 20 20 I);....colormap(map);...........
14aa0 20 69 66 20 6e 61 72 67 69 6e 20 3c 20 32 2c 0a 20 20 20 20 20 20 0a 09 09 64 69 73 70 28 27 57 .if.nargin.<.2,..........disp('W
14ac0 69 6e 64 6f 77 20 73 69 7a 65 20 66 6f 72 20 63 6f 72 6e 65 72 20 66 69 6e 64 65 72 20 28 77 69 indow.size.for.corner.finder.(wi
14ae0 6e 74 78 20 61 6e 64 20 77 69 6e 74 79 29 3a 27 29 3b 0a 09 09 77 69 6e 74 78 20 3d 20 69 6e 70 ntx.and.winty):');...wintx.=.inp
14b00 75 74 28 27 77 69 6e 74 78 20 28 5b 5d 20 3d 20 35 29 20 3d 20 27 29 3b 0a 09 09 69 66 20 69 73 ut('wintx.([].=.5).=.');...if.is
14b20 65 6d 70 74 79 28 77 69 6e 74 78 29 2c 20 77 69 6e 74 78 20 3d 20 35 3b 20 65 6e 64 3b 0a 09 09 empty(wintx),.wintx.=.5;.end;...
14b40 77 69 6e 74 78 20 3d 20 72 6f 75 6e 64 28 77 69 6e 74 78 29 3b 0a 09 09 77 69 6e 74 79 20 3d 20 wintx.=.round(wintx);...winty.=.
14b60 69 6e 70 75 74 28 27 77 69 6e 74 79 20 28 5b 5d 20 3d 20 35 29 20 3d 20 27 29 3b 0a 09 09 69 66 input('winty.([].=.5).=.');...if
14b80 20 69 73 65 6d 70 74 79 28 77 69 6e 74 79 29 2c 20 77 69 6e 74 79 20 3d 20 35 3b 20 65 6e 64 3b .isempty(winty),.winty.=.5;.end;
14ba0 0a 09 09 77 69 6e 74 79 20 3d 20 72 6f 75 6e 64 28 77 69 6e 74 79 29 3b 0a 0a 09 09 66 70 72 69 ...winty.=.round(winty);....fpri
14bc0 6e 74 66 28 31 2c 27 57 69 6e 64 6f 77 20 73 69 7a 65 20 3d 20 25 64 78 25 64 5c 6e 27 2c 32 2a ntf(1,'Window.size.=.%dx%d\n',2*
14be0 77 69 6e 74 78 2b 31 2c 32 2a 77 69 6e 74 79 2b 31 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e wintx+1,2*winty+1);...........en
14c00 64 3b 0a 20 20 20 0a 0a 20 20 20 0a 20 20 20 74 69 74 6c 65 28 27 43 6c 69 63 6b 20 6f 6e 20 74 d;.............title('Click.on.t
14c20 68 65 20 66 6f 75 72 20 65 78 74 72 65 6d 65 20 63 6f 72 6e 65 72 73 20 6f 66 20 74 68 65 20 72 he.four.extreme.corners.of.the.r
14c40 65 63 74 61 6e 67 75 6c 61 72 20 70 61 74 74 65 72 6e 2e 2e 2e 27 29 3b 0a 20 20 20 0a 20 20 20 ectangular.pattern...');........
14c60 64 69 73 70 28 27 43 6c 69 63 6b 20 6f 6e 20 74 68 65 20 66 6f 75 72 20 65 78 74 72 65 6d 65 20 disp('Click.on.the.four.extreme.
14c80 63 6f 72 6e 65 72 73 20 6f 66 20 74 68 65 20 72 65 63 74 61 6e 67 75 6c 61 72 20 63 6f 6d 70 6c corners.of.the.rectangular.compl
14ca0 65 74 65 20 70 61 74 74 65 72 6e 2e 2e 2e 27 29 3b 0a 20 20 20 0a 20 20 20 5b 78 2c 79 5d 20 3d ete.pattern...');........[x,y].=
14cc0 20 67 69 6e 70 75 74 33 28 34 29 3b 0a 20 20 20 0a 20 20 20 5b 58 63 2c 67 6f 6f 64 2c 62 61 64 .ginput3(4);........[Xc,good,bad
14ce0 2c 74 79 70 65 5d 20 3d 20 63 6f 72 6e 65 72 66 69 6e 64 65 72 28 5b 78 27 3b 79 27 5d 2c 49 2c ,type].=.cornerfinder([x';y'],I,
14d00 77 69 6e 74 79 2c 77 69 6e 74 78 29 3b 20 25 20 74 68 65 20 66 6f 75 72 20 63 6f 72 6e 65 72 73 winty,wintx);.%.the.four.corners
14d20 0a 20 20 20 0a 20 20 20 78 20 3d 20 58 63 28 31 2c 3a 29 27 3b 0a 20 20 20 79 20 3d 20 58 63 28 ........x.=.Xc(1,:)';....y.=.Xc(
14d40 32 2c 3a 29 27 3b 0a 20 20 20 0a 20 20 20 5b 79 2c 69 6e 64 79 5d 20 3d 20 73 6f 72 74 28 79 29 2,:)';........[y,indy].=.sort(y)
14d60 3b 0a 20 20 20 78 20 3d 20 78 28 69 6e 64 79 29 3b 0a 20 20 20 0a 20 20 20 69 66 20 28 78 28 32 ;....x.=.x(indy);........if.(x(2
14d80 29 20 3e 20 78 28 31 29 29 2c 0a 20 20 20 20 20 20 78 34 20 3d 20 78 28 31 29 3b 79 34 20 3d 20 ).>.x(1)),.......x4.=.x(1);y4.=.
14da0 79 28 31 29 3b 20 78 33 20 3d 20 78 28 32 29 3b 20 79 33 20 3d 20 79 28 32 29 3b 0a 20 20 20 65 y(1);.x3.=.x(2);.y3.=.y(2);....e
14dc0 6c 73 65 0a 20 20 20 20 20 20 78 34 20 3d 20 78 28 32 29 3b 79 34 20 3d 20 79 28 32 29 3b 20 78 lse.......x4.=.x(2);y4.=.y(2);.x
14de0 33 20 3d 20 78 28 31 29 3b 20 79 33 20 3d 20 79 28 31 29 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 3.=.x(1);.y3.=.y(1);....end;....
14e00 69 66 20 28 78 28 33 29 20 3e 20 78 28 34 29 29 2c 0a 20 20 20 20 20 20 78 32 20 3d 20 78 28 33 if.(x(3).>.x(4)),.......x2.=.x(3
14e20 29 3b 79 32 20 3d 20 79 28 33 29 3b 20 78 31 20 3d 20 78 28 34 29 3b 20 79 31 20 3d 20 79 28 34 );y2.=.y(3);.x1.=.x(4);.y1.=.y(4
14e40 29 3b 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 78 32 20 3d 20 78 28 34 29 3b 79 32 20 3d 20 );....else.......x2.=.x(4);y2.=.
14e60 79 28 34 29 3b 20 78 31 20 3d 20 78 28 33 29 3b 20 79 31 20 3d 20 79 28 33 29 3b 0a 20 20 20 65 y(4);.x1.=.x(3);.y1.=.y(3);....e
14e80 6e 64 3b 0a 20 20 20 0a 20 20 20 78 20 3d 20 5b 78 31 3b 78 32 3b 78 33 3b 78 34 5d 3b 0a 20 20 nd;........x.=.[x1;x2;x3;x4];...
14ea0 20 79 20 3d 20 5b 79 31 3b 79 32 3b 79 33 3b 79 34 5d 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 66 .y.=.[y1;y2;y3;y4];............f
14ec0 69 67 75 72 65 28 32 29 3b 20 68 6f 6c 64 20 6f 6e 3b 0a 20 20 20 70 6c 6f 74 28 5b 78 3b 78 28 igure(2);.hold.on;....plot([x;x(
14ee0 31 29 5d 2c 5b 79 3b 79 28 31 29 5d 2c 27 67 2d 27 29 3b 0a 20 20 20 70 6c 6f 74 28 78 2c 79 2c 1)],[y;y(1)],'g-');....plot(x,y,
14f00 27 6f 67 27 29 3b 0a 20 20 20 68 78 3d 74 65 78 74 28 28 78 28 34 29 2b 78 28 33 29 29 2f 32 2c 'og');....hx=text((x(4)+x(3))/2,
14f20 28 79 28 34 29 2b 79 28 33 29 29 2f 32 20 2d 20 32 30 2c 27 58 27 29 3b 0a 20 20 20 73 65 74 28 (y(4)+y(3))/2.-.20,'X');....set(
14f40 68 78 2c 27 63 6f 6c 6f 72 27 2c 27 67 27 2c 27 46 6f 6e 74 73 69 7a 65 27 2c 31 34 29 3b 0a 20 hx,'color','g','Fontsize',14);..
14f60 20 20 68 79 3d 74 65 78 74 28 28 78 28 34 29 2b 78 28 31 29 29 2f 32 2d 32 30 2c 28 79 28 34 29 ..hy=text((x(4)+x(1))/2-20,(y(4)
14f80 2b 79 28 31 29 29 2f 32 2c 27 59 27 29 3b 0a 20 20 20 73 65 74 28 68 79 2c 27 63 6f 6c 6f 72 27 +y(1))/2,'Y');....set(hy,'color'
14fa0 2c 27 67 27 2c 27 46 6f 6e 74 73 69 7a 65 27 2c 31 34 29 3b 0a 20 20 20 68 6f 6c 64 20 6f 66 66 ,'g','Fontsize',14);....hold.off
14fc0 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 20 54 72 79 20 74 6f 20 61 75 74 6f 6d 61 74 69 63 61 ;............%.Try.to.automatica
14fe0 6c 6c 79 20 63 6f 75 6e 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 71 75 61 72 65 73 20 lly.count.the.number.of.squares.
15000 69 6e 20 74 68 65 20 67 72 69 64 0a 20 20 20 0a 20 20 20 6e 5f 73 71 5f 78 31 20 3d 20 63 6f 75 in.the.grid........n_sq_x1.=.cou
15020 6e 74 5f 73 71 75 61 72 65 73 28 49 2c 78 31 2c 79 31 2c 78 32 2c 79 32 2c 77 69 6e 74 78 29 3b nt_squares(I,x1,y1,x2,y2,wintx);
15040 0a 20 20 20 6e 5f 73 71 5f 78 32 20 3d 20 63 6f 75 6e 74 5f 73 71 75 61 72 65 73 28 49 2c 78 33 ....n_sq_x2.=.count_squares(I,x3
15060 2c 79 33 2c 78 34 2c 79 34 2c 77 69 6e 74 78 29 3b 0a 20 20 20 6e 5f 73 71 5f 79 31 20 3d 20 63 ,y3,x4,y4,wintx);....n_sq_y1.=.c
15080 6f 75 6e 74 5f 73 71 75 61 72 65 73 28 49 2c 78 32 2c 79 32 2c 78 33 2c 79 33 2c 77 69 6e 74 78 ount_squares(I,x2,y2,x3,y3,wintx
150a0 29 3b 0a 20 20 20 6e 5f 73 71 5f 79 32 20 3d 20 63 6f 75 6e 74 5f 73 71 75 61 72 65 73 28 49 2c );....n_sq_y2.=.count_squares(I,
150c0 78 34 2c 79 34 2c 78 31 2c 79 31 2c 77 69 6e 74 78 29 3b 0a 20 20 20 0a 20 20 0a 20 20 20 0a 20 x4,y4,x1,y1,wintx);.............
150e0 20 20 25 20 49 66 20 63 6f 75 6c 64 20 6e 6f 74 20 63 6f 75 6e 74 20 74 68 65 20 6e 75 6d 62 65 ..%.If.could.not.count.the.numbe
15100 72 20 6f 66 20 73 71 75 61 72 65 73 2c 20 65 6e 74 65 72 20 6d 61 6e 75 61 6c 6c 79 0a 20 20 20 r.of.squares,.enter.manually....
15120 0a 20 20 20 69 66 20 28 6e 5f 73 71 5f 78 31 7e 3d 6e 5f 73 71 5f 78 32 29 7c 28 6e 5f 73 71 5f ....if.(n_sq_x1~=n_sq_x2)|(n_sq_
15140 79 31 7e 3d 6e 5f 73 71 5f 79 32 29 2c 0a 20 20 20 20 20 20 0a 0a 09 20 64 69 73 70 28 27 43 6f y1~=n_sq_y2),...........disp('Co
15160 75 6c 64 20 6e 6f 74 20 63 6f 75 6e 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 71 75 61 uld.not.count.the.number.of.squa
15180 72 65 73 20 69 6e 20 74 68 65 20 67 72 69 64 2e 20 45 6e 74 65 72 20 6d 61 6e 75 61 6c 6c 79 2e res.in.the.grid..Enter.manually.
151a0 27 29 3b 0a 09 20 6e 5f 73 71 5f 78 20 3d 20 69 6e 70 75 74 28 27 4e 75 6d 62 65 72 20 6f 66 20 ');...n_sq_x.=.input('Number.of.
151c0 73 71 75 61 72 65 73 20 61 6c 6f 6e 67 20 74 68 65 20 58 20 64 69 72 65 63 74 69 6f 6e 20 28 5b squares.along.the.X.direction.([
151e0 5d 3d 31 30 29 20 3d 20 27 29 3b 20 25 36 0a 09 20 69 66 20 69 73 65 6d 70 74 79 28 6e 5f 73 71 ]=10).=.');.%6...if.isempty(n_sq
15200 5f 78 29 2c 20 6e 5f 73 71 5f 78 20 3d 20 31 30 3b 20 65 6e 64 3b 0a 09 20 6e 5f 73 71 5f 79 20 _x),.n_sq_x.=.10;.end;...n_sq_y.
15220 3d 20 69 6e 70 75 74 28 27 4e 75 6d 62 65 72 20 6f 66 20 73 71 75 61 72 65 73 20 61 6c 6f 6e 67 =.input('Number.of.squares.along
15240 20 74 68 65 20 59 20 64 69 72 65 63 74 69 6f 6e 20 28 5b 5d 3d 31 30 29 20 3d 20 27 29 3b 20 25 .the.Y.direction.([]=10).=.');.%
15260 36 0a 09 20 69 66 20 69 73 65 6d 70 74 79 28 6e 5f 73 71 5f 79 29 2c 20 6e 5f 73 71 5f 79 20 3d 6...if.isempty(n_sq_y),.n_sq_y.=
15280 20 31 30 3b 20 65 6e 64 3b 20 0a 20 20 20 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 .10;.end;.........else..........
152a0 20 20 20 20 20 20 0a 20 20 20 20 20 20 6e 5f 73 71 5f 78 20 3d 20 6e 5f 73 71 5f 78 31 3b 0a 20 .............n_sq_x.=.n_sq_x1;..
152c0 20 20 20 20 20 6e 5f 73 71 5f 79 20 3d 20 6e 5f 73 71 5f 79 31 3b 0a 20 20 20 20 20 20 0a 20 20 .....n_sq_y.=.n_sq_y1;..........
152e0 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 20 45 6e 74 65 72 20 74 68 65 20 73 69 7a .end;............%.Enter.the.siz
15300 65 20 6f 66 20 65 61 63 68 20 73 71 75 61 72 65 0a 20 20 20 0a 20 20 20 64 58 20 3d 20 69 6e 70 e.of.each.square........dX.=.inp
15320 75 74 28 5b 27 53 69 7a 65 20 64 58 20 6f 66 20 65 61 63 68 20 73 71 75 61 72 65 20 61 6c 6f 6e ut(['Size.dX.of.each.square.alon
15340 67 20 74 68 65 20 58 20 64 69 72 65 63 74 69 6f 6e 20 28 5b 5d 3d 33 63 6d 29 20 3d 20 27 5d 29 g.the.X.direction.([]=3cm).=.'])
15360 3b 0a 20 20 09 64 59 20 3d 20 69 6e 70 75 74 28 5b 27 53 69 7a 65 20 64 59 20 6f 66 20 65 61 63 ;....dY.=.input(['Size.dY.of.eac
15380 68 20 73 71 75 61 72 65 20 61 6c 6f 6e 67 20 74 68 65 20 59 20 64 69 72 65 63 74 69 6f 6e 20 28 h.square.along.the.Y.direction.(
153a0 5b 5d 3d 33 63 6d 29 20 3d 20 27 5d 29 3b 0a 09 69 66 20 69 73 65 6d 70 74 79 28 64 58 29 2c 20 []=3cm).=.']);..if.isempty(dX),.
153c0 64 58 20 3d 20 33 3b 20 65 6e 64 3b 0a 09 69 66 20 69 73 65 6d 70 74 79 28 64 59 29 2c 20 64 59 dX.=.3;.end;..if.isempty(dY),.dY
153e0 20 3d 20 33 3b 20 65 6e 64 3b 0a 09 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 20 43 6f 6d 70 75 74 .=.3;.end;..............%.Comput
15400 65 20 74 68 65 20 69 6e 73 69 64 65 20 70 6f 69 6e 74 73 20 74 68 72 6f 75 67 68 20 63 6f 6d 70 e.the.inside.points.through.comp
15420 75 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 70 6c 61 6e 61 72 20 68 6f 6d 6f 67 72 61 70 68 79 utation.of.the.planar.homography
15440 20 28 63 6f 6c 6c 69 6e 65 61 74 69 6f 6e 29 0a 20 20 20 0a 09 61 30 30 20 3d 20 5b 78 28 31 29 .(collineation)......a00.=.[x(1)
15460 3b 79 28 31 29 3b 31 5d 3b 0a 09 61 31 30 20 3d 20 5b 78 28 32 29 3b 79 28 32 29 3b 31 5d 3b 0a ;y(1);1];..a10.=.[x(2);y(2);1];.
15480 09 61 31 31 20 3d 20 5b 78 28 33 29 3b 79 28 33 29 3b 31 5d 3b 0a 09 61 30 31 20 3d 20 5b 78 28 .a11.=.[x(3);y(3);1];..a01.=.[x(
154a0 34 29 3b 79 28 34 29 3b 31 5d 3b 0a 0a 0a 09 25 20 43 6f 6d 70 75 74 65 20 74 68 65 20 70 6c 61 4);y(4);1];....%.Compute.the.pla
154c0 6e 61 72 74 20 63 6f 6c 6c 69 6e 65 61 74 69 6f 6e 3a 20 28 72 65 74 75 72 6e 20 74 68 65 20 6e nart.collineation:.(return.the.n
154e0 6f 72 6d 61 6c 69 7a 61 74 69 6f 6e 20 6d 61 74 72 69 63 65 20 61 73 20 77 65 6c 6c 29 0a 20 20 ormalization.matrice.as.well)...
15500 20 0a 20 20 20 5b 48 6f 6d 6f 2c 48 6e 6f 72 6d 2c 69 6e 76 5f 48 6e 6f 72 6d 5d 20 3d 20 63 6f .....[Homo,Hnorm,inv_Hnorm].=.co
15520 6d 70 75 74 65 5f 68 6f 6d 6f 67 72 61 70 68 79 20 28 5b 61 30 30 20 61 31 30 20 61 31 31 20 61 mpute_homography.([a00.a10.a11.a
15540 30 31 5d 2c 5b 30 20 31 20 31 20 30 3b 30 20 30 20 31 20 31 3b 31 20 31 20 31 20 31 5d 29 3b 0a 01],[0.1.1.0;0.0.1.1;1.1.1.1]);.
15560 20 20 20 0a 20 20 20 0a 09 25 20 42 75 69 6c 64 20 74 68 65 20 67 72 69 64 20 75 73 69 6e 67 20 .........%.Build.the.grid.using.
15580 74 68 65 20 70 6c 61 6e 61 72 20 63 6f 6c 6c 69 6e 65 61 74 69 6f 6e 3a 0a 0a 09 78 5f 6c 20 3d the.planar.collineation:...x_l.=
155a0 20 28 28 30 3a 6e 5f 73 71 5f 78 29 27 2a 6f 6e 65 73 28 31 2c 6e 5f 73 71 5f 79 2b 31 29 29 2f .((0:n_sq_x)'*ones(1,n_sq_y+1))/
155c0 6e 5f 73 71 5f 78 3b 0a 20 20 20 79 5f 6c 20 3d 20 28 6f 6e 65 73 28 6e 5f 73 71 5f 78 2b 31 2c n_sq_x;....y_l.=.(ones(n_sq_x+1,
155e0 31 29 2a 28 30 3a 6e 5f 73 71 5f 79 29 29 2f 6e 5f 73 71 5f 79 3b 0a 20 20 20 70 74 73 20 3d 20 1)*(0:n_sq_y))/n_sq_y;....pts.=.
15600 5b 78 5f 6c 28 3a 29 20 79 5f 6c 28 3a 29 20 6f 6e 65 73 28 28 6e 5f 73 71 5f 78 2b 31 29 2a 28 [x_l(:).y_l(:).ones((n_sq_x+1)*(
15620 6e 5f 73 71 5f 79 2b 31 29 2c 31 29 5d 27 3b 0a 20 20 20 0a 20 20 20 58 58 20 3d 20 48 6f 6d 6f n_sq_y+1),1)]';........XX.=.Homo
15640 2a 70 74 73 3b 0a 09 58 58 20 3d 20 58 58 28 31 3a 32 2c 3a 29 20 2e 2f 20 28 6f 6e 65 73 28 32 *pts;..XX.=.XX(1:2,:)../.(ones(2
15660 2c 31 29 2a 58 58 28 33 2c 3a 29 29 3b 0a 0a 20 20 20 0a 20 20 20 25 20 43 6f 6d 70 6c 65 74 65 ,1)*XX(3,:));.........%.Complete
15680 20 73 69 7a 65 20 6f 66 20 74 68 65 20 72 65 63 74 61 6e 67 6c 65 0a 20 20 20 0a 20 20 20 57 20 .size.of.the.rectangle........W.
156a0 3d 20 6e 5f 73 71 5f 78 2a 64 58 3b 0a 20 20 20 4c 20 3d 20 6e 5f 73 71 5f 79 2a 64 59 3b 0a 20 =.n_sq_x*dX;....L.=.n_sq_y*dY;..
156c0 20 20 0a 20 20 20 0a 20 20 20 0a 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3c 20 36 2c 0a 20 20 20 ..............if.nargin.<.6,....
156e0 0a 20 20 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 41 44 44 ....%%%%%%%%%%%%%%%%%%%%%%%%.ADD
15700 49 54 49 4f 4e 41 4c 20 53 54 55 46 46 20 49 4e 20 54 48 45 20 43 41 53 45 20 4f 46 20 48 49 47 ITIONAL.STUFF.IN.THE.CASE.OF.HIG
15720 48 4c 59 20 44 49 53 54 4f 52 54 45 44 20 49 4d 41 47 45 53 20 25 25 25 25 25 25 25 25 25 25 25 HLY.DISTORTED.IMAGES.%%%%%%%%%%%
15740 25 25 0a 20 20 20 66 69 67 75 72 65 28 32 29 3b 0a 20 20 20 68 6f 6c 64 20 6f 6e 3b 0a 20 20 20 %%....figure(2);....hold.on;....
15760 70 6c 6f 74 28 58 58 28 31 2c 3a 29 2c 58 58 28 32 2c 3a 29 2c 27 72 2b 27 29 3b 0a 20 20 20 74 plot(XX(1,:),XX(2,:),'r+');....t
15780 69 74 6c 65 28 27 54 68 65 20 72 65 64 20 63 72 6f 73 73 65 73 20 73 68 6f 75 6c 64 20 62 65 20 itle('The.red.crosses.should.be.
157a0 63 6c 6f 73 65 20 74 6f 20 74 68 65 20 69 6d 61 67 65 20 63 6f 72 6e 65 72 73 27 29 3b 0a 20 20 close.to.the.image.corners');...
157c0 20 68 6f 6c 64 20 6f 66 66 3b 0a 20 20 20 0a 20 20 20 64 69 73 70 28 27 49 66 20 74 68 65 20 67 .hold.off;........disp('If.the.g
157e0 75 65 73 73 65 64 20 67 72 69 64 20 63 6f 72 6e 65 72 73 20 28 72 65 64 20 63 72 6f 73 73 65 73 uessed.grid.corners.(red.crosses
15800 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 29 20 61 72 65 20 6e 6f 74 20 63 6c 6f 73 65 20 74 6f 20 .on.the.image).are.not.close.to.
15820 74 68 65 20 61 63 74 75 61 6c 20 63 6f 72 6e 65 72 73 2c 27 29 3b 0a 20 20 20 64 69 73 70 28 27 the.actual.corners,');....disp('
15840 69 74 20 69 73 20 6e 65 63 65 73 73 61 72 79 20 74 6f 20 65 6e 74 65 72 20 61 6e 20 69 6e 69 74 it.is.necessary.to.enter.an.init
15860 69 61 6c 20 67 75 65 73 73 20 66 6f 72 20 74 68 65 20 72 61 64 69 61 6c 20 64 69 73 74 6f 72 74 ial.guess.for.the.radial.distort
15880 69 6f 6e 20 66 61 63 74 6f 72 20 6b 63 20 28 75 73 65 66 75 6c 20 66 6f 72 20 73 75 62 70 69 78 ion.factor.kc.(useful.for.subpix
158a0 65 6c 20 64 65 74 65 63 74 69 6f 6e 29 27 29 3b 0a 20 20 20 71 75 65 73 74 5f 64 69 73 74 6f 72 el.detection)');....quest_distor
158c0 74 20 3d 20 69 6e 70 75 74 28 27 4e 65 65 64 20 6f 66 20 61 6e 20 69 6e 69 74 69 61 6c 20 67 75 t.=.input('Need.of.an.initial.gu
158e0 65 73 73 20 66 6f 72 20 64 69 73 74 6f 72 74 69 6f 6e 3f 20 28 5b 5d 3d 6e 6f 2c 20 6f 74 68 65 ess.for.distortion?.([]=no,.othe
15900 72 3d 79 65 73 29 20 27 29 3b 0a 20 20 0a 20 20 20 71 75 65 73 74 5f 64 69 73 74 6f 72 74 20 3d r=yes).');.......quest_distort.=
15920 20 7e 69 73 65 6d 70 74 79 28 71 75 65 73 74 5f 64 69 73 74 6f 72 74 29 3b 0a 20 20 20 0a 20 20 .~isempty(quest_distort);.......
15940 20 69 66 20 71 75 65 73 74 5f 64 69 73 74 6f 72 74 2c 0a 20 20 20 20 20 20 25 20 45 73 74 69 6d .if.quest_distort,.......%.Estim
15960 61 74 69 6f 6e 20 6f 66 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 3a 0a 20 20 20 20 20 20 63 5f 67 ation.of.focal.length:.......c_g
15980 20 3d 20 5b 73 69 7a 65 28 49 2c 32 29 3b 73 69 7a 65 28 49 2c 31 29 5d 2f 32 20 2b 20 2e 35 3b .=.[size(I,2);size(I,1)]/2.+..5;
159a0 0a 09 09 66 5f 67 20 3d 20 44 69 73 74 6f 72 32 43 61 6c 69 62 28 30 2c 5b 5b 78 28 31 29 20 78 ...f_g.=.Distor2Calib(0,[[x(1).x
159c0 28 32 29 20 78 28 34 29 20 78 28 33 29 5d 20 2d 20 63 5f 67 28 31 29 3b 5b 79 28 31 29 20 79 28 (2).x(4).x(3)].-.c_g(1);[y(1).y(
159e0 32 29 20 79 28 34 29 20 79 28 33 29 5d 20 2d 20 63 5f 67 28 32 29 5d 2c 31 2c 31 2c 34 2c 57 2c 2).y(4).y(3)].-.c_g(2)],1,1,4,W,
15a00 4c 2c 5b 2d 57 2f 32 20 57 2f 32 20 57 2f 32 20 2d 57 2f 32 3b 4c 2f 32 20 4c 2f 32 20 2d 4c 2f L,[-W/2.W/2.W/2.-W/2;L/2.L/2.-L/
15a20 32 20 2d 4c 2f 32 3b 20 30 20 30 20 30 20 30 5d 2c 31 30 30 2c 31 2c 31 29 3b 0a 20 20 20 20 20 2.-L/2;.0.0.0.0],100,1,1);......
15a40 20 66 5f 67 20 3d 20 6d 65 61 6e 28 66 5f 67 29 3b 0a 20 20 20 20 20 20 73 63 72 69 70 74 5f 66 .f_g.=.mean(f_g);.......script_f
15a60 69 74 5f 64 69 73 74 6f 72 74 69 6f 6e 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 25 25 25 25 25 25 it_distortion;....end;....%%%%%%
15a80 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 45 4e 44 20 41 44 44 49 54 49 4f 4e 41 4c 20 53 %%%%%%%%%%%%%%%.END.ADDITIONAL.S
15aa0 54 55 46 46 20 49 4e 20 54 48 45 20 43 41 53 45 20 4f 46 20 48 49 47 48 4c 59 20 44 49 53 54 4f TUFF.IN.THE.CASE.OF.HIGHLY.DISTO
15ac0 52 54 45 44 20 49 4d 41 47 45 53 20 25 25 25 25 25 25 25 25 25 25 25 25 25 0a 20 20 20 0a 09 65 RTED.IMAGES.%%%%%%%%%%%%%......e
15ae0 6c 73 65 0a 20 20 20 09 0a 20 20 20 09 78 79 5f 63 6f 72 6e 65 72 73 5f 75 6e 64 69 73 74 20 3d lse..........xy_corners_undist.=
15b00 20 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 5f 6f 75 6c 75 28 5b 28 78 27 20 2d 20 63 63 28 .comp_distortion_oulu([(x'.-.cc(
15b20 31 29 29 2f 66 63 28 31 29 3b 28 79 27 2d 63 63 28 32 29 29 2f 66 63 28 31 29 5d 2c 6b 63 29 3b 1))/fc(1);(y'-cc(2))/fc(1)],kc);
15b40 0a 09 20 0a 09 20 09 78 75 20 3d 20 78 79 5f 63 6f 72 6e 65 72 73 5f 75 6e 64 69 73 74 28 31 2c .......xu.=.xy_corners_undist(1,
15b60 3a 29 27 3b 0a 09 20 09 79 75 20 3d 20 78 79 5f 63 6f 72 6e 65 72 73 5f 75 6e 64 69 73 74 28 32 :)';....yu.=.xy_corners_undist(2
15b80 2c 3a 29 27 3b 0a 09 20 0a 09 20 09 5b 58 58 75 5d 20 3d 20 70 72 6f 6a 65 63 74 65 64 47 72 69 ,:)';.......[XXu].=.projectedGri
15ba0 64 20 28 20 5b 78 75 28 31 29 3b 79 75 28 31 29 5d 2c 20 5b 78 75 28 32 29 3b 79 75 28 32 29 5d d.(.[xu(1);yu(1)],.[xu(2);yu(2)]
15bc0 2c 5b 78 75 28 33 29 3b 79 75 28 33 29 5d 2c 20 5b 78 75 28 34 29 3b 79 75 28 34 29 5d 2c 6e 5f ,[xu(3);yu(3)],.[xu(4);yu(4)],n_
15be0 73 71 5f 78 2b 31 2c 6e 5f 73 71 5f 79 2b 31 29 3b 20 25 20 54 68 65 20 66 75 6c 6c 20 67 72 69 sq_x+1,n_sq_y+1);.%.The.full.gri
15c00 64 0a 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 72 32 20 3d 20 73 75 6d 28 58 58 75 2e 5e 32 29 d...............r2.=.sum(XXu.^2)
15c20 3b 20 20 20 20 20 20 20 0a 09 20 09 58 58 20 3d 20 28 6f 6e 65 73 28 32 2c 31 29 2a 28 31 20 2b ;...........XX.=.(ones(2,1)*(1.+
15c40 20 6b 63 28 31 29 20 2a 20 72 32 20 2b 20 6b 63 28 32 29 20 2a 20 28 72 32 2e 5e 32 29 29 29 20 .kc(1).*.r2.+.kc(2).*.(r2.^2))).
15c60 2e 2a 20 58 58 75 3b 0a 09 20 09 58 58 28 31 2c 3a 29 20 3d 20 66 63 28 31 29 2a 58 58 28 31 2c .*.XXu;....XX(1,:).=.fc(1)*XX(1,
15c80 3a 29 2b 63 63 28 31 29 3b 0a 09 20 09 58 58 28 32 2c 3a 29 20 3d 20 66 63 28 32 29 2a 58 58 28 :)+cc(1);....XX(2,:).=.fc(2)*XX(
15ca0 32 2c 3a 29 2b 63 63 28 32 29 3b 0a 20 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a 20 20 20 20 2,:)+cc(2);............end;.....
15cc0 0a 20 20 20 0a 20 20 20 4e 70 20 3d 20 28 6e 5f 73 71 5f 78 2b 31 29 2a 28 6e 5f 73 71 5f 79 2b ........Np.=.(n_sq_x+1)*(n_sq_y+
15ce0 31 29 3b 0a 0a 20 20 20 64 69 73 70 28 27 43 6f 72 6e 65 72 20 65 78 74 72 61 63 74 69 6f 6e 2e 1);.....disp('Corner.extraction.
15d00 2e 2e 27 29 3b 0a 20 20 20 0a 20 20 20 67 72 69 64 5f 70 74 73 20 3d 20 63 6f 72 6e 65 72 66 69 ..');........grid_pts.=.cornerfi
15d20 6e 64 65 72 28 58 58 2c 49 2c 77 69 6e 74 79 2c 77 69 6e 74 78 29 3b 20 25 25 25 20 46 69 6e 64 nder(XX,I,winty,wintx);.%%%.Find
15d40 73 20 74 68 65 20 65 78 61 63 74 20 63 6f 72 6e 65 72 73 20 61 74 20 65 76 65 72 79 20 70 6f 69 s.the.exact.corners.at.every.poi
15d60 6e 74 73 21 0a 20 20 20 0a 20 20 20 67 72 69 64 5f 70 74 73 20 3d 20 67 72 69 64 5f 70 74 73 20 nts!........grid_pts.=.grid_pts.
15d80 2d 20 31 3b 20 25 20 73 75 62 74 72 61 63 74 20 31 20 74 6f 20 62 72 69 6e 67 20 74 68 65 20 6f -.1;.%.subtract.1.to.bring.the.o
15da0 72 69 67 69 6e 20 74 6f 20 28 30 2c 30 29 20 69 6e 73 74 65 61 64 20 6f 66 20 28 31 2c 31 29 20 rigin.to.(0,0).instead.of.(1,1).
15dc0 69 6e 20 6d 61 74 6c 61 62 20 28 6e 6f 74 20 6e 65 63 65 73 73 61 72 79 20 69 6e 20 43 29 0a 20 in.matlab.(not.necessary.in.C)..
15de0 20 20 0a 20 20 20 69 6e 64 5f 63 6f 72 6e 65 72 73 20 3d 20 5b 31 20 6e 5f 73 71 5f 78 2b 31 20 ......ind_corners.=.[1.n_sq_x+1.
15e00 28 6e 5f 73 71 5f 78 2b 31 29 2a 6e 5f 73 71 5f 79 2b 31 20 28 6e 5f 73 71 5f 78 2b 31 29 2a 28 (n_sq_x+1)*n_sq_y+1.(n_sq_x+1)*(
15e20 6e 5f 73 71 5f 79 2b 31 29 5d 3b 20 25 20 69 6e 64 65 78 20 6f 66 20 74 68 65 20 34 20 63 6f 72 n_sq_y+1)];.%.index.of.the.4.cor
15e40 6e 65 72 73 0a 20 20 20 69 6e 64 5f 6f 72 69 67 20 3d 20 28 6e 5f 73 71 5f 78 2b 31 29 2a 6e 5f ners....ind_orig.=.(n_sq_x+1)*n_
15e60 73 71 5f 79 20 2b 20 31 3b 0a 20 20 20 78 6f 72 69 67 20 3d 20 67 72 69 64 5f 70 74 73 28 31 2c sq_y.+.1;....xorig.=.grid_pts(1,
15e80 69 6e 64 5f 6f 72 69 67 29 3b 0a 20 20 20 79 6f 72 69 67 20 3d 20 67 72 69 64 5f 70 74 73 28 32 ind_orig);....yorig.=.grid_pts(2
15ea0 2c 69 6e 64 5f 6f 72 69 67 29 3b 0a 20 20 20 64 78 70 6f 73 20 3d 20 6d 65 61 6e 28 5b 67 72 69 ,ind_orig);....dxpos.=.mean([gri
15ec0 64 5f 70 74 73 28 3a 2c 69 6e 64 5f 6f 72 69 67 29 20 67 72 69 64 5f 70 74 73 28 3a 2c 69 6e 64 d_pts(:,ind_orig).grid_pts(:,ind
15ee0 5f 6f 72 69 67 2b 31 29 5d 27 29 3b 0a 20 20 20 64 79 70 6f 73 20 3d 20 6d 65 61 6e 28 5b 67 72 _orig+1)]');....dypos.=.mean([gr
15f00 69 64 5f 70 74 73 28 3a 2c 69 6e 64 5f 6f 72 69 67 29 20 67 72 69 64 5f 70 74 73 28 3a 2c 69 6e id_pts(:,ind_orig).grid_pts(:,in
15f20 64 5f 6f 72 69 67 2d 6e 5f 73 71 5f 78 2d 31 29 5d 27 29 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 d_orig-n_sq_x-1)]');............
15f40 69 6e 64 5f 78 20 3d 20 28 6e 5f 73 71 5f 78 2b 31 29 2a 28 6e 5f 73 71 5f 79 20 2b 20 31 29 3b ind_x.=.(n_sq_x+1)*(n_sq_y.+.1);
15f60 0a 09 69 6e 64 5f 79 20 3d 20 31 3b 0a 0a 20 20 20 78 5f 62 6f 78 5f 6b 6b 20 3d 20 5b 67 72 69 ..ind_y.=.1;.....x_box_kk.=.[gri
15f80 64 5f 70 74 73 28 31 2c 3a 29 2d 28 77 69 6e 74 78 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 31 d_pts(1,:)-(wintx+.5);grid_pts(1
15fa0 2c 3a 29 2b 28 77 69 6e 74 78 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2b 28 77 69 ,:)+(wintx+.5);grid_pts(1,:)+(wi
15fc0 6e 74 78 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2d 28 77 69 6e 74 78 2b 2e 35 29 ntx+.5);grid_pts(1,:)-(wintx+.5)
15fe0 3b 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2d 28 77 69 6e 74 78 2b 2e 35 29 5d 3b 0a 20 20 20 79 ;grid_pts(1,:)-(wintx+.5)];....y
16000 5f 62 6f 78 5f 6b 6b 20 3d 20 5b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2d 28 77 69 6e 74 79 2b _box_kk.=.[grid_pts(2,:)-(winty+
16020 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2d 28 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 .5);grid_pts(2,:)-(winty+.5);gri
16040 64 5f 70 74 73 28 32 2c 3a 29 2b 28 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 32 d_pts(2,:)+(winty+.5);grid_pts(2
16060 2c 3a 29 2b 28 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2d 28 77 69 ,:)+(winty+.5);grid_pts(2,:)-(wi
16080 6e 74 79 2b 2e 35 29 5d 3b 0a 0a 20 20 20 0a 20 20 20 66 69 67 75 72 65 28 33 29 3b 0a 20 20 20 nty+.5)];.........figure(3);....
160a0 69 6d 61 67 65 28 49 29 3b 20 63 6f 6c 6f 72 6d 61 70 28 6d 61 70 29 3b 20 68 6f 6c 64 20 6f 6e image(I);.colormap(map);.hold.on
160c0 3b 0a 20 20 20 70 6c 6f 74 28 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2b 31 2c 67 72 69 64 5f 70 ;....plot(grid_pts(1,:)+1,grid_p
160e0 74 73 28 32 2c 3a 29 2b 31 2c 27 72 2b 27 29 3b 0a 20 20 20 70 6c 6f 74 28 78 5f 62 6f 78 5f 6b ts(2,:)+1,'r+');....plot(x_box_k
16100 6b 2b 31 2c 79 5f 62 6f 78 5f 6b 6b 2b 31 2c 27 2d 62 27 29 3b 0a 20 20 20 70 6c 6f 74 28 67 72 k+1,y_box_kk+1,'-b');....plot(gr
16120 69 64 5f 70 74 73 28 31 2c 69 6e 64 5f 63 6f 72 6e 65 72 73 29 2b 31 2c 67 72 69 64 5f 70 74 73 id_pts(1,ind_corners)+1,grid_pts
16140 28 32 2c 69 6e 64 5f 63 6f 72 6e 65 72 73 29 2b 31 2c 27 6d 6f 27 29 3b 0a 20 20 20 70 6c 6f 74 (2,ind_corners)+1,'mo');....plot
16160 28 78 6f 72 69 67 2b 31 2c 79 6f 72 69 67 2b 31 2c 27 2a 6d 27 29 3b 0a 20 20 20 68 20 3d 20 74 (xorig+1,yorig+1,'*m');....h.=.t
16180 65 78 74 28 78 6f 72 69 67 2d 31 35 2c 79 6f 72 69 67 2d 31 35 2c 27 4f 27 29 3b 0a 20 20 20 73 ext(xorig-15,yorig-15,'O');....s
161a0 65 74 28 68 2c 27 43 6f 6c 6f 72 27 2c 27 6d 27 2c 27 46 6f 6e 74 53 69 7a 65 27 2c 31 34 29 3b et(h,'Color','m','FontSize',14);
161c0 0a 20 20 20 68 32 20 3d 20 74 65 78 74 28 64 78 70 6f 73 28 31 29 2d 31 30 2c 64 78 70 6f 73 28 ....h2.=.text(dxpos(1)-10,dxpos(
161e0 32 29 2d 31 30 2c 27 64 58 27 29 3b 0a 20 20 20 73 65 74 28 68 32 2c 27 43 6f 6c 6f 72 27 2c 27 2)-10,'dX');....set(h2,'Color','
16200 67 27 2c 27 46 6f 6e 74 53 69 7a 65 27 2c 31 34 29 3b 0a 20 20 20 68 33 20 3d 20 74 65 78 74 28 g','FontSize',14);....h3.=.text(
16220 64 79 70 6f 73 28 31 29 2d 32 35 2c 64 79 70 6f 73 28 32 29 2d 33 2c 27 64 59 27 29 3b 0a 20 20 dypos(1)-25,dypos(2)-3,'dY');...
16240 20 73 65 74 28 68 33 2c 27 43 6f 6c 6f 72 27 2c 27 67 27 2c 27 46 6f 6e 74 53 69 7a 65 27 2c 31 .set(h3,'Color','g','FontSize',1
16260 34 29 3b 0a 20 20 20 78 6c 61 62 65 6c 28 27 58 63 20 28 69 6e 20 63 61 6d 65 72 61 20 66 72 61 4);....xlabel('Xc.(in.camera.fra
16280 6d 65 29 27 29 3b 0a 20 20 20 79 6c 61 62 65 6c 28 27 59 63 20 28 69 6e 20 63 61 6d 65 72 61 20 me)');....ylabel('Yc.(in.camera.
162a0 66 72 61 6d 65 29 27 29 3b 0a 20 20 20 74 69 74 6c 65 28 27 45 78 74 72 61 63 74 65 64 20 63 6f frame)');....title('Extracted.co
162c0 72 6e 65 72 73 27 29 3b 0a 20 20 20 7a 6f 6f 6d 20 6f 6e 3b 0a 20 20 20 64 72 61 77 6e 6f 77 3b rners');....zoom.on;....drawnow;
162e0 0a 20 20 20 68 6f 6c 64 20 6f 66 66 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 58 69 20 3d 20 72 65 ....hold.off;............Xi.=.re
16300 73 68 61 70 65 28 28 5b 30 3a 6e 5f 73 71 5f 78 5d 2a 64 58 29 27 2a 6f 6e 65 73 28 31 2c 6e 5f shape(([0:n_sq_x]*dX)'*ones(1,n_
16320 73 71 5f 79 2b 31 29 2c 4e 70 2c 31 29 27 3b 0a 20 20 20 59 69 20 3d 20 72 65 73 68 61 70 65 28 sq_y+1),Np,1)';....Yi.=.reshape(
16340 6f 6e 65 73 28 6e 5f 73 71 5f 78 2b 31 2c 31 29 2a 5b 6e 5f 73 71 5f 79 3a 2d 31 3a 30 5d 2a 64 ones(n_sq_x+1,1)*[n_sq_y:-1:0]*d
16360 59 2c 4e 70 2c 31 29 27 3b 0a 20 20 20 5a 69 20 3d 20 7a 65 72 6f 73 28 31 2c 4e 70 29 3b 0a 20 Y,Np,1)';....Zi.=.zeros(1,Np);..
16380 20 20 0a 20 20 20 58 67 72 69 64 20 3d 20 5b 58 69 3b 59 69 3b 5a 69 5d 3b 0a 20 20 20 0a 20 20 ......Xgrid.=.[Xi;Yi;Zi];.......
163a0 20 0a 09 25 20 41 6c 6c 20 74 68 65 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 28 ...%.All.the.point.coordinates.(
163c0 6f 6e 20 74 68 65 20 69 6d 61 67 65 2c 20 61 6e 64 20 69 6e 20 33 44 29 20 2d 20 66 6f 72 20 67 on.the.image,.and.in.3D).-.for.g
163e0 6c 6f 62 61 6c 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 3a 0a 0a 20 20 20 78 20 3d 20 67 72 69 64 lobal.optimization:.....x.=.grid
16400 5f 70 74 73 3b 0a 20 20 20 58 20 3d 20 58 67 72 69 64 3b 0a 20 20 20 0a 78 32 20 3d 20 78 28 33 _pts;....X.=.Xgrid;.....x2.=.x(3
16420 29 3b 79 32 20 3d 20 79 28 33 29 3b 20 78 31 20 3d 20 78 28 34 29 3b 20 79 31 20 3d 20 79 28 34 );y2.=.y(3);.x1.=.x(4);.y1.=.y(4
16440 29 3b 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 78 32 20 3d 20 78 28 34 29 3b 79 32 20 3d 20 );....else.......x2.=.x(4);y2.=.
16460 79 28 34 29 3b 20 78 31 20 3d 20 78 28 33 29 3b 20 79 31 20 3d 20 79 28 33 29 3b 0a 20 20 20 65 y(4);.x1.=.x(3);.y1.=.y(3);....e
16480 6e 64 3b 0a 20 20 20 0a 20 20 20 78 20 3d 20 5b 78 31 3b 78 32 3b 78 33 3b 78 34 5d 3b 0a 20 20 nd;........x.=.[x1;x2;x3;x4];...
164a0 20 79 20 3d 20 5b 79 31 3b 79 32 3b 79 33 3b 79 34 5d 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 66 .y.=.[y1;y2;y3;y4];............f
164c0 69 67 75 72 65 28 32 29 3b 20 68 6f 6c 64 20 6f 6e 3b 0a 20 20 20 70 6c 6f 74 28 5b 78 3b 78 28 igure(2);.hold.on;....plot([x;x(
164e0 31 29 5d 2c 5b 79 3b 79 28 31 29 5d 2c 27 67 2d 27 29 3b 0a 20 20 20 70 6c 6f 74 28 78 2c 79 2c 1)],[y;y(1)],'g-');....plot(x,y,
16500 27 6f 67 27 29 3b 0a 20 20 20 68 78 3d 74 65 78 74 28 28 78 28 34 29 2b 78 28 33 29 29 2f 32 2c 'og');....hx=text((x(4)+x(3))/2,
16520 28 79 28 34 29 2b 79 28 33 29 29 2f 32 20 2d 20 32 30 2c 27 58 27 29 3b 0a 20 20 20 73 65 74 28 (y(4)+y(3))/2.-.20,'X');....set(
16540 68 78 2c 27 63 6f 6c 6f 72 27 2c 27 67 27 2c 27 46 6f 6e 74 73 69 7a 65 27 2c 31 34 29 3b 0a 20 hx,'color','g','Fontsize',14);..
16560 20 20 68 79 3d 74 65 78 74 28 28 78 28 34 29 2b 78 28 31 29 29 2f 32 2d 32 30 2c 28 79 28 34 29 ..hy=text((x(4)+x(1))/2-20,(y(4)
16580 2b 79 28 31 29 29 2f 32 2c 27 59 27 29 3b 0a 20 20 20 73 65 74 28 68 79 2c 27 63 6f 6c 6f 72 27 +y(1))/2,'Y');....set(hy,'color'
165a0 2c 27 67 27 2c 27 46 6f 6e 74 73 69 7a 65 27 2c 31 34 29 3b 0a 20 20 20 68 6f 6c 64 20 6f 66 66 ,'g','Fontsize',14);....hold.off
165c0 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 20 54 72 79 20 74 6f 20 61 75 74 6f 6d 61 74 69 63 61 ;............%.Try.to.automatica
165e0 6c 6c 79 20 63 6f 75 6e 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 71 75 61 72 65 73 20 lly.count.the.number.of.squares.
16600 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 65 78 74 72 61 63 74 5f 70 61 72 61 6d 65 74 65 72 73 TOOLBOX_calib/extract_parameters
16620 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .m..............................
16640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16660 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
16680 20 20 20 31 36 34 31 20 20 37 30 32 34 30 33 37 33 32 31 20 20 31 32 34 37 31 00 20 00 00 00 00 ...1641..7024037321..12471......
166a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
166c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
166e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
167a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
167c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
167e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16800 0a 25 25 25 20 45 78 74 72 61 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 66 69 6e 61 6c 20 69 6e 74 .%%%.Extraction.of.the.final.int
16820 72 69 6e 73 69 63 20 61 6e 64 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 61 74 65 72 73 3a rinsic.and.extrinsic.paramaters:
16840 0a 0a 63 68 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 0a 66 63 20 3d 20 73 6f 6c ..check_active_images;..fc.=.sol
16860 75 74 69 6f 6e 28 31 3a 32 29 3b 0a 6b 63 20 3d 20 73 6f 6c 75 74 69 6f 6e 28 33 3a 36 29 3b 0a ution(1:2);.kc.=.solution(3:6);.
16880 63 63 20 3d 20 73 6f 6c 75 74 69 6f 6e 28 36 2a 6e 5f 69 6d 61 20 2b 20 34 20 2b 33 3a 36 2a 6e cc.=.solution(6*n_ima.+.4.+3:6*n
168a0 5f 69 6d 61 20 2b 20 35 20 2b 33 29 3b 0a 0a 25 20 43 61 6c 69 62 72 61 74 69 6f 6e 20 6d 61 74 _ima.+.5.+3);..%.Calibration.mat
168c0 72 69 78 3a 0a 09 0a 4b 4b 20 3d 20 5b 66 63 28 31 29 20 30 20 63 63 28 31 29 3b 30 20 66 63 28 rix:...KK.=.[fc(1).0.cc(1);0.fc(
168e0 32 29 20 63 63 28 32 29 3b 20 30 20 30 20 31 5d 3b 0a 69 6e 76 5f 4b 4b 20 3d 20 69 6e 76 28 4b 2).cc(2);.0.0.1];.inv_KK.=.inv(K
16900 4b 29 3b 09 0a 0a 25 20 45 78 74 72 61 63 74 20 74 68 65 20 65 78 74 72 69 6e 73 69 63 20 70 61 K);...%.Extract.the.extrinsic.pa
16920 72 61 6d 74 65 72 73 2c 20 61 6e 64 20 72 65 63 6f 6d 70 75 74 65 72 20 74 68 65 20 63 6f 6c 6c ramters,.and.recomputer.the.coll
16940 69 6e 65 61 74 69 6f 6e 73 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 ineations..for.kk.=.1:n_ima,....
16960 0a 20 20 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 2c 20 20 20 0a 20 20 20 ....if.active_images(kk),.......
16980 20 20 20 0a 20 20 20 20 20 20 6f 6d 63 6b 6b 20 3d 20 73 6f 6c 75 74 69 6f 6e 28 34 2b 36 2a 28 ..........omckk.=.solution(4+6*(
169a0 6b 6b 2d 31 29 20 2b 20 33 3a 36 2a 6b 6b 20 2b 20 33 29 3b 20 20 20 0a 20 20 20 20 20 20 54 63 kk-1).+.3:6*kk.+.3);..........Tc
169c0 6b 6b 20 3d 20 73 6f 6c 75 74 69 6f 6e 28 36 2a 6b 6b 2b 31 20 2b 20 33 3a 36 2a 6b 6b 2b 33 20 kk.=.solution(6*kk+1.+.3:6*kk+3.
169e0 2b 20 33 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 09 52 63 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 +.3);............Rckk.=.rodrigue
16a00 73 28 6f 6d 63 6b 6b 29 3b 0a 20 20 20 0a 20 20 20 09 48 6b 6b 20 3d 20 4b 4b 20 2a 20 5b 52 63 s(omckk);.........Hkk.=.KK.*.[Rc
16a20 6b 6b 28 3a 2c 31 29 20 52 63 6b 6b 28 3a 2c 32 29 20 54 63 6b 6b 5d 3b 0a 20 20 20 0a 20 20 20 kk(:,1).Rckk(:,2).Tckk];........
16a40 09 48 6b 6b 20 3d 20 48 6b 6b 20 2f 20 48 6b 6b 28 33 2c 33 29 3b 0a 20 20 20 20 20 20 0a 20 20 .Hkk.=.Hkk./.Hkk(3,3);..........
16a60 20 65 6c 73 65 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 6f 6d 63 6b 6b 20 3d 20 4e 61 4e 2a 6f .else..............omckk.=.NaN*o
16a80 6e 65 73 28 33 2c 31 29 3b 20 20 20 0a 20 20 20 20 20 20 54 63 6b 6b 20 3d 20 4e 61 4e 2a 6f 6e nes(3,1);..........Tckk.=.NaN*on
16aa0 65 73 28 33 2c 31 29 3b 0a 20 20 20 20 20 20 52 63 6b 6b 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 33 es(3,1);.......Rckk.=.NaN*ones(3
16ac0 2c 33 29 3b 0a 20 20 20 20 20 20 48 6b 6b 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 33 2c 33 29 3b 0a ,3);.......Hkk.=.NaN*ones(3,3);.
16ae0 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 6f 6d 63 ..........end;........eval(['omc
16b00 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 6f 6d 63 6b 6b 3b 27 5d 29 3b 0a 20 20 _'.num2str(kk).'.=.omckk;']);...
16b20 20 65 76 61 6c 28 5b 27 52 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 52 63 6b .eval(['Rc_'.num2str(kk).'.=.Rck
16b40 6b 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 54 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b k;']);....eval(['Tc_'.num2str(kk
16b60 29 20 27 20 3d 20 54 63 6b 6b 3b 27 5d 29 3b 0a 20 20 09 65 76 61 6c 28 5b 27 48 5f 27 20 6e 75 ).'.=.Tckk;']);....eval(['H_'.nu
16b80 6d 32 73 74 72 28 6b 6b 29 20 27 3d 20 48 6b 6b 3b 27 5d 29 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a m2str(kk).'=.Hkk;']);.....end;..
16ba0 0a 28 00 18 73 65 6c 65 63 74 5f 73 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 65 72 2e 6d 00 28 00 18 .(..select_sol_with_center.m.(..
16bc0 00 00 05 c8 00 02 36 a4 00 28 00 1a 73 65 6c 65 63 74 5f 73 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 ......6..(..select_sol_with_cent
16be0 65 72 33 44 2e 6d 00 1a 00 00 05 dc 00 02 36 a5 00 18 00 09 73 74 61 72 74 75 70 2e 6d 00 33 44 er3D.m........6.....startup.m.3D
16c00 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 65 78 74 72 61 63 74 5f 70 61 72 61 6d 65 74 65 72 73 TOOLBOX_calib/extract_parameters
16c20 33 44 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3D.m............................
16c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16c60 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
16c80 20 20 20 31 33 31 35 20 20 37 30 32 34 30 33 37 33 32 32 20 20 31 32 36 35 37 00 20 00 00 00 00 ...1315..7024037322..12657......
16ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16e00 0a 25 25 25 20 45 78 74 72 61 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 66 69 6e 61 6c 20 69 6e 74 .%%%.Extraction.of.the.final.int
16e20 72 69 6e 73 69 63 20 61 6e 64 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 61 74 65 72 73 3a rinsic.and.extrinsic.paramaters:
16e40 0a 0a 0a 66 63 20 3d 20 73 6f 6c 75 74 69 6f 6e 28 31 3a 32 29 3b 0a 6b 63 20 3d 20 73 6f 6c 75 ...fc.=.solution(1:2);.kc.=.solu
16e60 74 69 6f 6e 28 33 3a 36 29 3b 0a 63 63 20 3d 20 73 6f 6c 75 74 69 6f 6e 28 36 2a 6e 5f 69 6d 61 tion(3:6);.cc.=.solution(6*n_ima
16e80 20 2b 20 34 20 2b 33 3a 36 2a 6e 5f 69 6d 61 20 2b 20 35 20 2b 33 29 3b 0a 0a 25 20 43 61 6c 69 .+.4.+3:6*n_ima.+.5.+3);..%.Cali
16ea0 62 72 61 74 69 6f 6e 20 6d 61 74 72 69 78 3a 0a 09 0a 4b 4b 20 3d 20 5b 66 63 28 31 29 20 30 20 bration.matrix:...KK.=.[fc(1).0.
16ec0 63 63 28 31 29 3b 30 20 66 63 28 32 29 20 63 63 28 32 29 3b 20 30 20 30 20 31 5d 3b 0a 69 6e 76 cc(1);0.fc(2).cc(2);.0.0.1];.inv
16ee0 5f 4b 4b 20 3d 20 69 6e 76 28 4b 4b 29 3b 09 0a 0a 25 20 45 78 74 72 61 63 74 20 74 68 65 20 65 _KK.=.inv(KK);...%.Extract.the.e
16f00 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 74 65 72 73 2c 20 61 6e 64 20 72 65 63 6f 6d 70 75 74 xtrinsic.paramters,.and.recomput
16f20 65 72 20 74 68 65 20 63 6f 6c 6c 69 6e 65 61 74 69 6f 6e 73 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 er.the.collineations..for.kk.=.1
16f40 3a 6e 5f 69 6d 61 2c 0a 20 20 20 0a 20 20 20 6f 6d 63 6b 6b 20 3d 20 73 6f 6c 75 74 69 6f 6e 28 :n_ima,........omckk.=.solution(
16f60 34 2b 36 2a 28 6b 6b 2d 31 29 20 2b 20 33 3a 36 2a 6b 6b 20 2b 20 33 29 3b 0a 20 20 20 0a 20 20 4+6*(kk-1).+.3:6*kk.+.3);.......
16f80 20 54 63 6b 6b 20 3d 20 73 6f 6c 75 74 69 6f 6e 28 36 2a 6b 6b 2b 31 20 2b 20 33 3a 36 2a 6b 6b .Tckk.=.solution(6*kk+1.+.3:6*kk
16fa0 2b 33 20 2b 20 33 29 3b 0a 20 20 20 0a 20 20 20 52 63 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 +3.+.3);........Rckk.=.rodrigues
16fc0 28 6f 6d 63 6b 6b 29 3b 0a 20 20 20 0a 20 20 20 48 6c 6b 6b 20 3d 20 4b 4b 20 2a 20 5b 52 63 6b (omckk);........Hlkk.=.KK.*.[Rck
16fe0 6b 28 3a 2c 31 29 20 52 63 6b 6b 28 3a 2c 32 29 20 54 63 6b 6b 5d 3b 0a 20 20 20 0a 20 20 20 48 k(:,1).Rckk(:,2).Tckk];........H
17000 6c 6b 6b 20 3d 20 48 6c 6b 6b 20 2f 20 48 6c 6b 6b 28 33 2c 33 29 3b 0a 20 20 20 0a 20 20 20 65 lkk.=.Hlkk./.Hlkk(3,3);........e
17020 76 61 6c 28 5b 27 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 6f 6d 63 6b val(['omc_'.num2str(kk).'.=.omck
17040 6b 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 52 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b k;']);....eval(['Rc_'.num2str(kk
17060 29 20 27 20 3d 20 52 63 6b 6b 3b 27 5d 29 3b 0a 09 65 76 61 6c 28 5b 27 54 63 5f 27 20 6e 75 6d ).'.=.Rckk;']);..eval(['Tc_'.num
17080 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 54 63 6b 6b 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 65 76 2str(kk).'.=.Tckk;']);........ev
170a0 61 6c 28 5b 27 48 6c 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3d 48 6c 6b 6b 3b 27 5d 29 al(['Hl_'.num2str(kk).'=Hlkk;'])
170c0 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 0a 2e 6d 00 00 00 05 04 00 02 35 e0 00 18 00 0a 72 6f 74 61 ;.....end;....m.......5.....rota
170e0 74 69 6f 6e 2e 6d 00 0b 00 00 05 1c 00 02 36 9f 00 1c 00 0e 73 61 76 69 6e 67 5f 63 61 6c 69 62 tion.m........6.....saving_calib
17100 2e 6d 00 61 00 00 05 3c 00 02 36 a0 00 24 00 17 73 63 72 69 70 74 5f 66 69 74 5f 64 69 73 74 6f .m.a...<..6..$..script_fit_disto
17120 72 74 69 6f 6e 2e 6d 00 00 00 05 5c 00 02 36 a1 00 24 00 16 73 65 6c 65 63 74 5f 73 6f 6c 5f 6e rtion.m....\..6..$..select_sol_n
17140 6f 5f 63 65 6e 74 65 72 2e 6d 00 00 00 00 05 80 00 02 36 a2 00 28 00 18 73 65 6c 65 63 74 5f 73 o_center.m........6..(..select_s
17160 6f 6c 5f 6e 6f 5f 63 65 6e 74 65 72 33 44 2e 6d 00 00 05 80 00 00 05 a4 00 02 36 a3 00 28 00 18 ol_no_center3D.m..........6..(..
17180 73 65 6c 65 63 74 5f 73 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 65 72 2e 6d 00 00 05 a4 00 00 05 c8 select_sol_with_center.m........
171a0 00 02 36 a4 00 28 00 1a 73 65 6c 65 63 74 5f 73 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 65 72 33 44 ..6..(..select_sol_with_center3D
171c0 2e 6d 00 c8 00 00 05 dc 00 02 36 a5 00 18 00 09 73 74 61 72 74 75 70 2e 6d 00 68 5f 00 00 05 f0 .m........6.....startup.m.h_....
171e0 00 02 36 a6 00 18 00 09 74 65 73 74 5f 33 64 2e 6d 00 00 09 00 00 06 00 00 02 33 c0 00 14 00 06 ..6.....test_3d.m.........3.....
17200 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 65 78 74 72 69 6e 73 69 63 5f 63 6f 6d 70 75 74 61 74 TOOLBOX_calib/extrinsic_computat
17220 69 6f 6e 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ion.m...........................
17240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17260 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
17280 20 20 31 30 32 32 32 20 20 37 30 32 34 30 33 37 33 32 33 20 20 31 33 32 34 33 00 20 00 00 00 00 ..10222..7024037323..13243......
172a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
172c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
172e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
173a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
173c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
173e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17400 25 25 25 20 49 4e 50 55 54 20 54 48 45 20 49 4d 41 47 45 20 46 49 4c 45 20 4e 41 4d 45 3a 0a 0a %%%.INPUT.THE.IMAGE.FILE.NAME:..
17420 64 69 72 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 27 29 3b 0a 64 69 73 70 28 27 43 6f 6d dir;..fprintf(1,'\n');.disp('Com
17440 70 75 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 putation.of.the.extrinsic.parame
17460 74 65 72 73 20 66 72 6f 6d 20 61 6e 20 69 6d 61 67 65 20 6f 66 20 61 20 70 61 74 74 65 72 6e 27 ters.from.an.image.of.a.pattern'
17480 29 3b 0a 64 69 73 70 28 27 54 68 65 20 69 6e 74 72 69 6e 73 69 63 20 63 61 6d 65 72 61 20 70 61 );.disp('The.intrinsic.camera.pa
174a0 72 61 6d 65 74 65 72 73 20 61 72 65 20 61 73 73 75 6d 65 64 20 74 6f 20 62 65 20 6b 6e 6f 77 6e rameters.are.assumed.to.be.known
174c0 20 28 70 72 65 76 69 6f 75 73 6c 79 20 63 6f 6d 70 75 74 65 64 29 27 29 3b 0a 0a 66 70 72 69 6e .(previously.computed)');..fprin
174e0 74 66 28 31 2c 27 5c 6e 27 29 3b 0a 69 6d 61 67 65 5f 6e 61 6d 65 20 3d 20 69 6e 70 75 74 28 27 tf(1,'\n');.image_name.=.input('
17500 49 6d 61 67 65 20 6e 61 6d 65 20 28 66 75 6c 6c 20 6e 61 6d 65 20 77 69 74 68 6f 75 74 20 65 78 Image.name.(full.name.without.ex
17520 74 65 6e 73 69 6f 6e 29 3a 20 27 2c 27 73 27 29 3b 0a 0a 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 tension):.','s');..format_image2
17540 20 3d 20 27 30 27 3b 0a 0a 77 68 69 6c 65 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 3d 20 .=.'0';..while.format_image2.==.
17560 27 30 27 2c 0a 20 20 20 0a 20 20 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 20 69 6e 70 '0',........format_image2.=..inp
17580 75 74 28 27 49 6d 61 67 65 20 66 6f 72 6d 61 74 3a 20 28 5b 5d 3d 27 27 72 27 27 3d 27 27 72 61 ut('Image.format:.([]=''r''=''ra
175a0 73 27 27 2c 20 27 27 62 27 27 3d 27 27 62 6d 70 27 27 2c 20 27 27 74 27 27 3d 27 27 74 69 66 27 s'',.''b''=''bmp'',.''t''=''tif'
175c0 27 2c 20 27 27 70 27 27 3d 27 27 70 67 6d 27 27 2c 20 27 27 6a 27 27 3d 27 27 6a 70 67 27 27 29 ',.''p''=''pgm'',.''j''=''jpg'')
175e0 20 27 2c 27 73 27 29 3b 0a 0a 09 69 66 20 69 73 65 6d 70 74 79 28 66 6f 72 6d 61 74 5f 69 6d 61 .','s');...if.isempty(format_ima
17600 67 65 32 29 2c 0a 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 27 72 61 73 27 3b ge2),.....format_image2.=.'ras';
17620 0a 09 65 6e 64 3b 0a 0a 09 69 66 20 6c 6f 77 65 72 28 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 28 ..end;...if.lower(format_image2(
17640 31 29 29 20 3d 3d 20 27 62 27 2c 0a 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 1)).==.'b',.....format_image2.=.
17660 27 62 6d 70 27 3b 0a 09 65 6c 73 65 0a 20 20 20 09 69 66 20 6c 6f 77 65 72 28 66 6f 72 6d 61 74 'bmp';..else.....if.lower(format
17680 5f 69 6d 61 67 65 32 28 31 29 29 20 3d 3d 20 27 74 27 2c 0a 20 20 20 20 20 20 09 66 6f 72 6d 61 _image2(1)).==.'t',........forma
176a0 74 5f 69 6d 61 67 65 32 20 3d 20 27 74 69 66 27 3b 0a 20 20 20 09 65 6c 73 65 0a 20 20 20 20 20 t_image2.=.'tif';.....else......
176c0 20 09 69 66 20 6c 6f 77 65 72 28 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 28 31 29 29 20 3d 3d 20 ..if.lower(format_image2(1)).==.
176e0 27 70 27 2c 0a 20 20 20 20 20 20 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 27 'p',...........format_image2.=.'
17700 70 67 6d 27 3b 0a 09 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 09 20 20 20 20 20 20 69 66 20 6c pgm';........else...........if.l
17720 6f 77 65 72 28 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 28 31 29 29 20 3d 3d 20 27 6a 27 2c 0a 20 ower(format_image2(1)).==.'j',..
17740 20 20 20 20 20 09 20 20 20 20 20 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 27 6a 70 67 ............format_image2.=.'jpg
17760 27 3b 0a 20 20 20 20 20 20 20 20 20 09 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 09 69 ';...........else..............i
17780 66 20 6c 6f 77 65 72 28 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 28 31 29 29 20 3d 3d 20 27 72 27 f.lower(format_image2(1)).==.'r'
177a0 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 ,.................format_image2.
177c0 3d 20 27 72 61 73 27 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 =.'ras';................else....
177e0 20 20 20 20 20 20 20 20 20 20 09 09 64 69 73 70 28 27 49 6e 76 61 6c 69 64 20 69 6d 61 67 65 20 ............disp('Invalid.image.
17800 66 6f 72 6d 61 74 27 29 3b 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 09 20 20 20 20 20 20 20 20 format');.......................
17820 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 27 30 27 3b 20 25 20 41 73 6b 20 66 6f 72 20 .format_image2.=.'0';.%.Ask.for.
17840 66 6f 72 6d 61 74 20 6f 6e 63 65 20 61 67 61 69 6e 0a 20 20 20 20 20 20 20 20 20 09 20 20 20 65 format.once.again..............e
17860 6e 64 3b 0a 20 20 20 20 20 20 09 20 20 20 65 6e 64 3b 0a 09 20 20 20 20 20 20 65 6e 64 3b 0a 20 nd;...........end;........end;..
17880 20 20 09 65 6e 64 3b 0a 09 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 69 6d 61 5f 6e 61 6d 65 20 3d 20 5b ...end;..end;.end;..ima_name.=.[
178a0 69 6d 61 67 65 5f 6e 61 6d 65 20 27 2e 27 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 5d 3b 0a 0a 0a image_name.'.'.format_image];...
178c0 0a 25 25 25 20 52 45 41 44 20 49 4e 20 49 4d 41 47 45 3a 0a 0a 69 66 20 66 6f 72 6d 61 74 5f 69 .%%%.READ.IN.IMAGE:..if.format_i
178e0 6d 61 67 65 28 31 29 20 3d 3d 20 27 70 27 2c 0a 20 20 20 49 20 3d 20 64 6f 75 62 6c 65 28 70 67 mage(1).==.'p',....I.=.double(pg
17900 6d 72 65 61 64 28 69 6d 61 5f 6e 61 6d 65 29 29 3b 0a 65 6c 73 65 0a 20 20 20 69 66 20 66 6f 72 mread(ima_name));.else....if.for
17920 6d 61 74 5f 69 6d 61 67 65 28 31 29 20 3d 3d 20 27 72 27 2c 0a 20 20 20 20 20 20 49 20 3d 20 72 mat_image(1).==.'r',.......I.=.r
17940 65 61 64 72 61 73 28 69 6d 61 5f 6e 61 6d 65 29 3b 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 eadras(ima_name);....else.......
17960 49 20 3d 20 64 6f 75 62 6c 65 28 69 6d 72 65 61 64 28 69 6d 61 5f 6e 61 6d 65 29 29 3b 0a 20 20 I.=.double(imread(ima_name));...
17980 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 69 66 20 73 69 7a 65 28 49 2c 33 29 3e 31 2c 0a 20 20 20 49 .end;.end;..if.size(I,3)>1,....I
179a0 20 3d 20 49 28 3a 2c 3a 2c 32 29 3b 0a 65 6e 64 3b 0a 0a 0a 25 25 25 20 45 58 54 52 41 43 54 20 .=.I(:,:,2);.end;...%%%.EXTRACT.
179c0 47 52 49 44 20 43 4f 52 4e 45 52 53 3a 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 45 78 74 72 GRID.CORNERS:..fprintf(1,'\nExtr
179e0 61 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 67 72 69 64 20 63 6f 72 6e 65 72 73 20 6f 6e 20 74 68 action.of.the.grid.corners.on.th
17a00 65 20 69 6d 61 67 65 5c 6e 27 29 3b 0a 0a 64 69 73 70 28 27 57 69 6e 64 6f 77 20 73 69 7a 65 20 e.image\n');..disp('Window.size.
17a20 66 6f 72 20 63 6f 72 6e 65 72 20 66 69 6e 64 65 72 20 28 77 69 6e 74 78 20 61 6e 64 20 77 69 6e for.corner.finder.(wintx.and.win
17a40 74 79 29 3a 27 29 3b 0a 77 69 6e 74 78 20 3d 20 69 6e 70 75 74 28 27 77 69 6e 74 78 20 28 5b 5d ty):');.wintx.=.input('wintx.([]
17a60 20 3d 20 35 29 20 3d 20 27 29 3b 0a 69 66 20 69 73 65 6d 70 74 79 28 77 69 6e 74 78 29 2c 20 77 .=.5).=.');.if.isempty(wintx),.w
17a80 69 6e 74 78 20 3d 20 35 3b 20 65 6e 64 3b 0a 77 69 6e 74 78 20 3d 20 72 6f 75 6e 64 28 77 69 6e intx.=.5;.end;.wintx.=.round(win
17aa0 74 78 29 3b 0a 77 69 6e 74 79 20 3d 20 69 6e 70 75 74 28 27 77 69 6e 74 79 20 28 5b 5d 20 3d 20 tx);.winty.=.input('winty.([].=.
17ac0 35 29 20 3d 20 27 29 3b 0a 69 66 20 69 73 65 6d 70 74 79 28 77 69 6e 74 79 29 2c 20 77 69 6e 74 5).=.');.if.isempty(winty),.wint
17ae0 79 20 3d 20 35 3b 20 65 6e 64 3b 0a 77 69 6e 74 79 20 3d 20 72 6f 75 6e 64 28 77 69 6e 74 79 29 y.=.5;.end;.winty.=.round(winty)
17b00 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 57 69 6e 64 6f 77 20 73 69 7a 65 20 3d 20 25 64 78 25 ;..fprintf(1,'Window.size.=.%dx%
17b20 64 5c 6e 27 2c 32 2a 77 69 6e 74 78 2b 31 2c 32 2a 77 69 6e 74 79 2b 31 29 3b 0a 0a 5b 78 5f 65 d\n',2*wintx+1,2*winty+1);..[x_e
17b40 78 74 2c 58 5f 65 78 74 2c 6e 5f 73 71 5f 78 2c 6e 5f 73 71 5f 79 2c 69 6e 64 5f 6f 72 69 67 2c xt,X_ext,n_sq_x,n_sq_y,ind_orig,
17b60 69 6e 64 5f 78 2c 69 6e 64 5f 79 5d 20 3d 20 65 78 74 72 61 63 74 5f 67 72 69 64 28 49 2c 77 69 ind_x,ind_y].=.extract_grid(I,wi
17b80 6e 74 78 2c 77 69 6e 74 79 2c 66 63 2c 63 63 2c 6b 63 29 3b 0a 0a 0a 0a 25 25 25 20 43 6f 6d 70 ntx,winty,fc,cc,kc);....%%%.Comp
17ba0 75 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 45 78 74 72 69 6e 73 69 63 20 50 61 72 61 6d 65 74 utation.of.the.Extrinsic.Paramet
17bc0 65 72 73 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 67 72 69 64 3a 0a 0a 5b 6f 6d 63 5f ers.attached.to.the.grid:..[omc_
17be0 65 78 74 2c 54 63 5f 65 78 74 2c 52 63 5f 65 78 74 2c 48 5f 65 78 74 5d 20 3d 20 63 6f 6d 70 75 ext,Tc_ext,Rc_ext,H_ext].=.compu
17c00 74 65 5f 65 78 74 72 69 6e 73 69 63 28 78 5f 65 78 74 2c 58 5f 65 78 74 2c 66 63 2c 63 63 2c 6b te_extrinsic(x_ext,X_ext,fc,cc,k
17c20 63 29 3b 0a 0a 0a 25 25 25 20 52 65 70 72 6f 6a 65 63 74 20 74 68 65 20 70 6f 69 6e 74 73 20 6f c);...%%%.Reproject.the.points.o
17c40 6e 20 74 68 65 20 69 6d 61 67 65 3a 0a 0a 5b 78 5f 72 65 70 72 6f 6a 5d 20 3d 20 70 72 6f 6a 65 n.the.image:..[x_reproj].=.proje
17c60 63 74 5f 70 6f 69 6e 74 73 28 58 5f 65 78 74 2c 6f 6d 63 5f 65 78 74 2c 54 63 5f 65 78 74 2c 66 ct_points(X_ext,omc_ext,Tc_ext,f
17c80 63 2c 63 63 2c 6b 63 29 3b 0a 0a 65 72 72 5f 72 65 70 72 6f 6a 20 3d 20 78 5f 65 78 74 20 2d 20 c,cc,kc);..err_reproj.=.x_ext.-.
17ca0 78 5f 72 65 70 72 6f 6a 3b 0a 0a 65 72 72 5f 73 74 64 32 20 3d 20 73 74 64 28 65 72 72 5f 72 65 x_reproj;..err_std2.=.std(err_re
17cc0 70 72 6f 6a 27 29 27 3b 0a 0a 0a 42 61 73 69 73 20 3d 20 5b 58 5f 65 78 74 28 3a 2c 5b 69 6e 64 proj')';...Basis.=.[X_ext(:,[ind
17ce0 5f 6f 72 69 67 20 69 6e 64 5f 78 20 69 6e 64 5f 6f 72 69 67 20 69 6e 64 5f 79 20 69 6e 64 5f 6f _orig.ind_x.ind_orig.ind_y.ind_o
17d00 72 69 67 20 5d 29 5d 3b 0a 0a 56 58 20 3d 20 42 61 73 69 73 28 3a 2c 32 29 20 2d 20 42 61 73 69 rig.])];..VX.=.Basis(:,2).-.Basi
17d20 73 28 3a 2c 31 29 3b 0a 56 59 20 3d 20 42 61 73 69 73 28 3a 2c 34 29 20 2d 20 42 61 73 69 73 28 s(:,1);.VY.=.Basis(:,4).-.Basis(
17d40 3a 2c 31 29 3b 0a 0a 6e 58 20 3d 20 6e 6f 72 6d 28 56 58 29 3b 0a 6e 59 20 3d 20 6e 6f 72 6d 28 :,1);..nX.=.norm(VX);.nY.=.norm(
17d60 56 59 29 3b 0a 0a 56 5a 20 3d 20 6d 69 6e 28 6e 58 2c 6e 59 29 20 2a 20 63 72 6f 73 73 28 56 58 VY);..VZ.=.min(nX,nY).*.cross(VX
17d80 2f 6e 58 2c 56 59 2f 6e 59 29 3b 0a 0a 42 61 73 69 73 20 3d 20 5b 42 61 73 69 73 20 56 5a 5d 3b /nX,VY/nY);..Basis.=.[Basis.VZ];
17da0 0a 0a 5b 78 5f 62 61 73 69 73 5d 20 3d 20 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 28 42 61 73 ..[x_basis].=.project_points(Bas
17dc0 69 73 2c 6f 6d 63 5f 65 78 74 2c 54 63 5f 65 78 74 2c 66 63 2c 63 63 2c 6b 63 29 3b 0a 0a 64 78 is,omc_ext,Tc_ext,fc,cc,kc);..dx
17de0 70 6f 73 20 3d 20 28 78 5f 62 61 73 69 73 28 3a 2c 32 29 20 2b 20 78 5f 62 61 73 69 73 28 3a 2c pos.=.(x_basis(:,2).+.x_basis(:,
17e00 31 29 29 2f 32 3b 0a 64 79 70 6f 73 20 3d 20 28 78 5f 62 61 73 69 73 28 3a 2c 34 29 20 2b 20 78 1))/2;.dypos.=.(x_basis(:,4).+.x
17e20 5f 62 61 73 69 73 28 3a 2c 33 29 29 2f 32 3b 0a 64 7a 70 6f 73 20 3d 20 28 78 5f 62 61 73 69 73 _basis(:,3))/2;.dzpos.=.(x_basis
17e40 28 3a 2c 36 29 20 2b 20 78 5f 62 61 73 69 73 28 3a 2c 35 29 29 2f 32 3b 0a 0a 0a 0a 66 69 67 75 (:,6).+.x_basis(:,5))/2;....figu
17e60 72 65 28 32 29 3b 0a 69 6d 61 67 65 28 49 29 3b 0a 63 6f 6c 6f 72 6d 61 70 28 67 72 61 79 28 32 re(2);.image(I);.colormap(gray(2
17e80 35 36 29 29 3b 0a 68 6f 6c 64 20 6f 6e 3b 0a 70 6c 6f 74 28 78 5f 65 78 74 28 31 2c 3a 29 2b 31 56));.hold.on;.plot(x_ext(1,:)+1
17ea0 2c 78 5f 65 78 74 28 32 2c 3a 29 2b 31 2c 27 72 2b 27 29 3b 0a 70 6c 6f 74 28 78 5f 72 65 70 72 ,x_ext(2,:)+1,'r+');.plot(x_repr
17ec0 6f 6a 28 31 2c 3a 29 2b 31 2c 78 5f 72 65 70 72 6f 6a 28 32 2c 3a 29 2b 31 2c 27 79 6f 27 29 3b oj(1,:)+1,x_reproj(2,:)+1,'yo');
17ee0 0a 68 20 3d 20 74 65 78 74 28 78 5f 65 78 74 28 31 2c 69 6e 64 5f 6f 72 69 67 29 2d 32 35 2c 78 .h.=.text(x_ext(1,ind_orig)-25,x
17f00 5f 65 78 74 28 32 2c 69 6e 64 5f 6f 72 69 67 29 2d 32 35 2c 27 4f 27 29 3b 0a 73 65 74 28 68 2c _ext(2,ind_orig)-25,'O');.set(h,
17f20 27 43 6f 6c 6f 72 27 2c 27 67 27 2c 27 46 6f 6e 74 53 69 7a 65 27 2c 31 34 29 3b 0a 68 32 20 3d 'Color','g','FontSize',14);.h2.=
17f40 20 74 65 78 74 28 64 78 70 6f 73 28 31 29 2b 31 2c 64 78 70 6f 73 28 32 29 2d 33 30 2c 27 58 27 .text(dxpos(1)+1,dxpos(2)-30,'X'
17f60 29 3b 0a 73 65 74 28 68 32 2c 27 43 6f 6c 6f 72 27 2c 27 67 27 2c 27 46 6f 6e 74 53 69 7a 65 27 );.set(h2,'Color','g','FontSize'
17f80 2c 31 34 29 3b 0a 68 33 20 3d 20 74 65 78 74 28 64 79 70 6f 73 28 31 29 2d 33 30 2c 64 79 70 6f ,14);.h3.=.text(dypos(1)-30,dypo
17fa0 73 28 32 29 2b 31 2c 27 59 27 29 3b 0a 73 65 74 28 68 33 2c 27 43 6f 6c 6f 72 27 2c 27 67 27 2c s(2)+1,'Y');.set(h3,'Color','g',
17fc0 27 46 6f 6e 74 53 69 7a 65 27 2c 31 34 29 3b 0a 68 34 20 3d 20 74 65 78 74 28 64 7a 70 6f 73 28 'FontSize',14);.h4.=.text(dzpos(
17fe0 31 29 2d 31 30 2c 64 7a 70 6f 73 28 32 29 2d 32 30 2c 27 5a 27 29 3b 0a 73 65 74 28 68 34 2c 27 1)-10,dzpos(2)-20,'Z');.set(h4,'
18000 43 6f 6c 6f 72 27 2c 27 67 27 2c 27 46 6f 6e 74 53 69 7a 65 27 2c 31 34 29 3b 0a 70 6c 6f 74 28 Color','g','FontSize',14);.plot(
18020 78 5f 62 61 73 69 73 28 31 2c 3a 29 2b 31 2c 78 5f 62 61 73 69 73 28 32 2c 3a 29 2b 31 2c 27 67 x_basis(1,:)+1,x_basis(2,:)+1,'g
18040 2d 27 2c 27 6c 69 6e 65 77 69 64 74 68 27 2c 32 29 3b 0a 74 69 74 6c 65 28 27 49 6d 61 67 65 20 -','linewidth',2);.title('Image.
18060 70 6f 69 6e 74 73 20 28 2b 29 20 61 6e 64 20 72 65 70 72 6f 6a 65 63 74 65 64 20 67 72 69 64 20 points.(+).and.reprojected.grid.
18080 70 6f 69 6e 74 73 20 28 6f 29 27 29 3b 0a 68 6f 6c 64 20 6f 66 66 3b 0a 0a 0a 66 70 72 69 6e 74 points.(o)');.hold.off;...fprint
180a0 66 28 31 2c 27 5c 6e 5c 6e 45 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 3a 5c 6e f(1,'\n\nExtrinsic.parameters:\n
180c0 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 54 72 61 6e 73 6c 61 74 69 6f 6e 20 76 65 63 \n');.fprintf(1,'Translation.vec
180e0 74 6f 72 3a 20 54 63 5f 65 78 74 20 3d 20 5b 20 25 33 2e 36 66 20 5c 74 20 25 33 2e 36 66 20 5c tor:.Tc_ext.=.[.%3.6f.\t.%3.6f.\
18100 74 20 25 33 2e 36 66 20 5d 5c 6e 27 2c 54 63 5f 65 78 74 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c t.%3.6f.]\n',Tc_ext);.fprintf(1,
18120 27 52 6f 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 3a 20 20 20 6f 6d 63 5f 65 78 74 20 3d 20 5b 20 'Rotation.vector:...omc_ext.=.[.
18140 25 33 2e 36 66 20 5c 74 20 25 33 2e 36 66 20 5c 74 20 25 33 2e 36 66 20 5d 5c 6e 27 2c 6f 6d 63 %3.6f.\t.%3.6f.\t.%3.6f.]\n',omc
18160 5f 65 78 74 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 52 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 _ext);.fprintf(1,'Rotation.matri
18180 78 3a 20 20 20 20 52 63 5f 65 78 74 20 3d 20 5b 20 25 33 2e 36 66 20 5c 74 20 25 33 2e 36 66 20 x:....Rc_ext.=.[.%3.6f.\t.%3.6f.
181a0 5c 74 20 25 33 2e 36 66 5c 6e 27 2c 52 63 5f 65 78 74 28 31 2c 3a 29 27 29 3b 0a 66 70 72 69 6e \t.%3.6f\n',Rc_ext(1,:)');.fprin
181c0 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tf(1,'..........................
181e0 20 20 20 20 20 25 33 2e 36 66 20 5c 74 20 25 33 2e 36 66 20 5c 74 20 25 33 2e 36 66 5c 6e 27 2c .....%3.6f.\t.%3.6f.\t.%3.6f\n',
18200 52 63 5f 65 78 74 28 32 2c 3a 29 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 Rc_ext(2,:)');.fprintf(1,'......
18220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 25 33 2e 36 66 20 5c .........................%3.6f.\
18240 74 20 25 33 2e 36 66 20 5c 74 20 25 33 2e 36 66 20 5d 5c 6e 27 2c 52 63 5f 65 78 74 28 33 2c 3a t.%3.6f.\t.%3.6f.]\n',Rc_ext(3,:
18260 29 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 50 69 78 65 6c 20 65 72 72 6f 72 3a 20 20 20 20 )');.fprintf(1,'Pixel.error:....
18280 20 20 20 20 20 20 20 65 72 72 20 3d 20 5b 20 25 33 2e 35 66 20 5c 74 20 25 33 2e 35 66 20 5d 5c .......err.=.[.%3.5f.\t.%3.5f.]\
182a0 6e 5c 6e 27 2c 65 72 72 5f 73 74 64 32 29 3b 20 0a 0a 0a 0a 0a 0a 72 65 74 75 72 6e 3b 0a 0a 0a n\n',err_std2);.......return;...
182c0 25 20 53 74 6f 72 65 73 20 74 68 65 20 72 65 73 75 6c 74 73 3a 0a 0a 6b 6b 20 3d 20 31 3b 0a 0a %.Stores.the.results:..kk.=.1;..
182e0 25 20 53 74 6f 72 65 73 20 6c 6f 63 61 74 69 6f 6e 20 6f 66 20 67 72 69 64 20 77 72 74 20 63 61 %.Stores.location.of.grid.wrt.ca
18300 6d 65 72 61 3a 0a 0a 65 76 61 6c 28 5b 27 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 mera:..eval(['omc_'.num2str(kk).
18320 27 20 3d 20 6f 6d 63 5f 65 78 74 3b 27 5d 29 3b 0a 65 76 61 6c 28 5b 27 54 63 5f 27 20 6e 75 6d '.=.omc_ext;']);.eval(['Tc_'.num
18340 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 54 63 5f 65 78 74 3b 27 5d 29 3b 0a 0a 25 20 53 74 6f 72 2str(kk).'.=.Tc_ext;']);..%.Stor
18360 65 73 20 74 68 65 20 70 72 6f 6a 65 63 74 65 64 20 70 6f 69 6e 74 73 3a 0a 20 20 20 20 20 20 0a es.the.projected.points:........
18380 65 76 61 6c 28 5b 27 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 78 5f 72 65 70 eval(['y_'.num2str(kk).'.=.x_rep
183a0 72 6f 6a 3b 27 5d 29 3b 0a 65 76 61 6c 28 5b 27 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 roj;']);.eval(['X_'.num2str(kk).
183c0 27 20 3d 20 58 5f 65 78 74 3b 27 5d 29 3b 0a 65 76 61 6c 28 5b 27 78 5f 27 20 6e 75 6d 32 73 74 '.=.X_ext;']);.eval(['x_'.num2st
183e0 72 28 6b 6b 29 20 27 20 3d 20 78 5f 65 78 74 3b 27 5d 29 3b 20 20 20 20 20 20 0a 20 20 20 20 20 r(kk).'.=.x_ext;']);............
18400 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 25 20 4f 72 67 61 6e 69 7a 65 20 74 68 65 20 70 6f ...............%.Organize.the.po
18420 69 6e 74 73 20 69 6e 20 61 20 67 72 69 64 3a 0a 20 20 20 20 20 20 0a 65 76 61 6c 28 5b 27 6e 5f ints.in.a.grid:........eval(['n_
18440 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 6e 5f 73 71 5f 78 3b 27 5d sq_x_'.num2str(kk).'.=.n_sq_x;']
18460 29 3b 0a 65 76 61 6c 28 5b 27 6e 5f 73 71 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 );.eval(['n_sq_y_'.num2str(kk).'
18480 20 3d 20 6e 5f 73 71 5f 79 3b 27 5d 29 3b 0a 20 20 20 0a 0a 69 6d 61 5f 6e 61 6d 65 20 3d 20 5b .=.n_sq_y;']);......ima_name.=.[
184a0 69 6d 61 67 65 5f 6e 61 6d 65 20 27 2e 27 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 5d 3b 0a 0a 0a image_name.'.'.format_image];...
184c0 0a 25 25 25 20 52 45 41 44 20 49 4e 20 49 4d 41 47 45 3a 0a 0a 69 66 20 66 6f 72 6d 61 74 5f 69 .%%%.READ.IN.IMAGE:..if.format_i
184e0 6d 61 67 65 28 31 29 20 3d 3d 20 27 70 27 2c 0a 20 20 20 49 20 3d 20 64 6f 75 62 6c 65 28 70 67 mage(1).==.'p',....I.=.double(pg
18500 6d 72 65 61 64 28 69 6d 61 5f 6e 61 6d 65 29 29 3b 0a 65 6c 73 65 0a 20 20 20 69 66 20 66 6f 72 mread(ima_name));.else....if.for
18520 6d 61 74 5f 69 6d 61 67 65 28 31 29 20 3d 3d 20 27 72 27 2c 0a 20 20 20 20 20 20 49 20 3d 20 72 mat_image(1).==.'r',.......I.=.r
18540 65 61 64 72 61 73 28 69 6d 61 5f 6e 61 6d 65 29 3b 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 eadras(ima_name);....else.......
18560 49 20 3d 20 64 6f 75 62 6c 65 28 69 6d 72 65 61 64 28 69 6d 61 5f 6e 61 6d 65 29 29 3b 0a 20 20 I.=.double(imread(ima_name));...
18580 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 69 66 20 73 69 7a 65 28 49 2c 33 29 3e 31 2c 0a 20 20 20 49 .end;.end;..if.size(I,3)>1,....I
185a0 20 3d 20 49 28 3a 2c 3a 2c 32 29 3b 0a 65 6e 64 3b 0a 0a 0a 25 25 25 20 45 58 54 52 41 43 54 20 .=.I(:,:,2);.end;...%%%.EXTRACT.
185c0 47 52 49 44 20 43 4f 52 4e 45 52 53 3a 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 45 78 74 72 GRID.CORNERS:..fprintf(1,'\nExtr
185e0 61 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 67 72 69 64 20 63 6f 72 6e 65 72 73 20 6f 6e 20 74 68 action.of.the.grid.corners.on.th
18600 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 65 78 74 5f 63 61 6c 69 62 2e 6d 00 00 00 00 00 00 00 TOOLBOX_calib/ext_calib.m.......
18620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18660 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
18680 20 20 20 36 34 37 34 20 20 37 30 32 34 30 33 37 33 32 33 20 20 31 30 35 34 31 00 20 00 00 00 00 ...6474..7024037323..10541......
186a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
186c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
186e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
187a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
187c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
187e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18800 0a 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 53 48 4f 57 20 45 58 54 52 49 .%%%%%%%%%%%%%%%%%%%%.SHOW.EXTRI
18820 4e 53 49 43 20 52 45 53 55 4c 54 53 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 NSIC.RESULTS.%%%%%%%%%%%%%%%%%%%
18840 25 25 25 25 25 0a 0a 63 68 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 0a 69 66 20 %%%%%..check_active_images;..if.
18860 7e 65 78 69 73 74 28 5b 27 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 69 6e 64 5f 61 63 74 69 76 ~exist(['omc_'.num2str(ind_activ
18880 65 28 31 29 29 5d 29 2c 0a 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 4e 65 65 64 20 74 6f 20 63 e(1))]),....fprintf(1,'Need.to.c
188a0 61 6c 69 62 72 61 74 65 20 62 65 66 6f 72 65 20 73 68 6f 77 69 6e 67 20 65 78 74 72 69 6e 73 69 alibrate.before.showing.extrinsi
188c0 63 20 72 65 73 75 6c 74 73 2e 20 4d 61 79 62 65 20 6e 65 65 64 20 74 6f 20 6c 6f 61 64 20 43 61 c.results..Maybe.need.to.load.Ca
188e0 6c 69 62 5f 52 65 73 75 6c 74 73 2e 6d 61 74 20 66 69 6c 65 2e 5c 6e 27 29 3b 0a 20 20 20 72 65 lib_Results.mat.file.\n');....re
18900 74 75 72 6e 3b 0a 65 6e 64 3b 0a 0a 25 69 66 20 7e 65 78 69 73 74 28 27 6e 6f 5f 67 72 69 64 27 turn;.end;..%if.~exist('no_grid'
18920 29 2c 0a 20 20 20 6e 6f 5f 67 72 69 64 20 3d 20 30 3b 0a 25 65 6e 64 3b 0a 0a 69 66 20 7e 65 78 ),....no_grid.=.0;.%end;..if.~ex
18940 69 73 74 28 5b 27 6e 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 69 6e 64 5f 61 63 74 69 76 ist(['n_sq_x_'.num2str(ind_activ
18960 65 28 31 29 29 5d 29 2c 0a 20 20 20 6e 6f 5f 67 72 69 64 20 3d 20 31 3b 0a 65 6e 64 3b 0a 0a 0a e(1))]),....no_grid.=.1;.end;...
18980 69 66 20 30 2c 0a 0a 65 72 72 5f 73 74 64 20 3d 20 73 74 64 28 65 78 27 29 3b 0a 0a 66 70 72 69 if.0,..err_std.=.std(ex');..fpri
189a0 6e 74 66 28 31 2c 27 5c 6e 5c 6e 43 61 6c 69 62 72 61 74 69 6f 6e 20 72 65 73 75 6c 74 73 20 77 ntf(1,'\n\nCalibration.results.w
189c0 69 74 68 6f 75 74 20 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 65 73 74 69 6d 61 74 69 6f ithout.principal.point.estimatio
189e0 6e 3a 5c 6e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 46 6f 63 61 6c 20 4c 65 6e 67 74 n:\n\n');.fprintf(1,'Focal.Lengt
18a00 68 3a 20 20 20 20 20 66 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c h:.....fc.=.[.%3.5f...%3.5f]\n',
18a20 66 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 50 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 3a fc);.fprintf(1,'Principal.point:
18a40 20 20 63 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 63 63 29 3b 0a ..cc.=.[.%3.5f...%3.5f]\n',cc);.
18a60 66 70 72 69 6e 74 66 28 31 2c 27 44 69 73 74 6f 72 74 69 6f 6e 3a 20 20 20 20 20 20 20 6b 63 20 fprintf(1,'Distortion:.......kc.
18a80 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 20 20 20 25 33 2e 35 =.[.%3.5f...%3.5f...%3.5f...%3.5
18aa0 66 5d 5c 6e 27 2c 6b 63 29 3b 20 20 20 0a 66 70 72 69 6e 74 66 28 31 2c 27 50 69 78 65 6c 20 65 f]\n',kc);....fprintf(1,'Pixel.e
18ac0 72 72 6f 72 3a 20 20 20 20 20 20 65 72 72 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 rror:......err.=.[.%3.5f...%3.5f
18ae0 5d 5c 6e 5c 6e 27 2c 65 72 72 5f 73 74 64 29 3b 20 0a 0a 65 6e 64 3b 0a 0a 0a 25 20 43 6f 6c 6f ]\n\n',err_std);...end;...%.Colo
18b00 72 20 63 6f 64 65 20 66 6f 72 20 65 61 63 68 20 69 6d 61 67 65 3a 0a 0a 63 6f 6c 6f 72 73 20 3d r.code.for.each.image:..colors.=
18b20 20 27 62 72 67 6b 63 6d 27 3b 0a 0a 0a 25 25 25 20 53 68 6f 77 20 74 68 65 20 65 78 74 72 69 6e .'brgkcm';...%%%.Show.the.extrin
18b40 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 0a 0a 69 66 20 7e 65 78 69 73 74 28 27 64 58 27 29 2c sic.parameters..if.~exist('dX'),
18b60 0a 20 20 20 65 76 61 6c 28 5b 27 64 58 20 3d 20 6e 6f 72 6d 28 54 63 5f 27 20 6e 75 6d 32 73 74 ....eval(['dX.=.norm(Tc_'.num2st
18b80 72 28 69 6e 64 5f 61 63 74 69 76 65 28 31 29 29 20 27 29 2f 31 30 3b 27 5d 29 3b 0a 20 20 20 64 r(ind_active(1)).')/10;']);....d
18ba0 59 20 3d 20 64 58 3b 0a 65 6e 64 3b 0a 0a 49 50 20 3d 20 35 2a 64 58 2a 28 5b 30 20 6e 78 2d 31 Y.=.dX;.end;..IP.=.5*dX*([0.nx-1
18bc0 20 6e 78 2d 31 20 30 20 30 20 3b 20 30 20 30 20 6e 79 2d 31 20 6e 79 2d 31 20 30 3b 31 20 31 20 .nx-1.0.0.;.0.0.ny-1.ny-1.0;1.1.
18be0 31 20 31 20 31 5d 20 2d 20 5b 63 63 3b 30 5d 2a 6f 6e 65 73 28 31 2c 35 29 29 20 2e 2f 20 28 5b 1.1.1].-.[cc;0]*ones(1,5))../.([
18c00 66 63 3b 31 5d 2a 6f 6e 65 73 28 31 2c 35 29 29 3b 0a 42 41 53 45 20 3d 20 35 2a 64 58 2a 28 5b fc;1]*ones(1,5));.BASE.=.5*dX*([
18c20 30 20 31 20 30 20 30 20 30 20 30 3b 30 20 30 20 30 20 31 20 30 20 30 3b 30 20 30 20 30 20 30 20 0.1.0.0.0.0;0.0.0.1.0.0;0.0.0.0.
18c40 30 20 31 5d 29 3b 0a 49 50 20 3d 20 72 65 73 68 61 70 65 28 5b 49 50 3b 42 41 53 45 28 3a 2c 31 0.1]);.IP.=.reshape([IP;BASE(:,1
18c60 29 2a 6f 6e 65 73 28 31 2c 35 29 3b 49 50 5d 2c 33 2c 31 35 29 3b 0a 0a 66 69 67 75 72 65 28 34 )*ones(1,5);IP],3,15);..figure(4
18c80 29 3b 0a 5b 61 2c 62 5d 20 3d 20 76 69 65 77 3b 0a 0a 66 69 67 75 72 65 28 34 29 3b 0a 70 6c 6f );.[a,b].=.view;..figure(4);.plo
18ca0 74 33 28 42 41 53 45 28 31 2c 3a 29 2c 42 41 53 45 28 33 2c 3a 29 2c 2d 42 41 53 45 28 32 2c 3a t3(BASE(1,:),BASE(3,:),-BASE(2,:
18cc0 29 2c 27 62 2d 27 2c 27 6c 69 6e 65 77 69 64 74 68 27 2c 32 27 29 3b 0a 68 6f 6c 64 20 6f 6e 3b ),'b-','linewidth',2');.hold.on;
18ce0 0a 70 6c 6f 74 33 28 49 50 28 31 2c 3a 29 2c 49 50 28 33 2c 3a 29 2c 2d 49 50 28 32 2c 3a 29 2c .plot3(IP(1,:),IP(3,:),-IP(2,:),
18d00 27 72 2d 27 2c 27 6c 69 6e 65 77 69 64 74 68 27 2c 32 29 3b 0a 74 65 78 74 28 36 2a 64 58 2c 30 'r-','linewidth',2);.text(6*dX,0
18d20 2c 30 2c 27 58 5f 63 27 29 3b 0a 74 65 78 74 28 2d 64 58 2c 35 2a 64 58 2c 30 2c 27 5a 5f 63 27 ,0,'X_c');.text(-dX,5*dX,0,'Z_c'
18d40 29 3b 0a 74 65 78 74 28 30 2c 30 2c 2d 36 2a 64 58 2c 27 59 5f 63 27 29 3b 0a 74 65 78 74 28 2d );.text(0,0,-6*dX,'Y_c');.text(-
18d60 64 58 2c 2d 64 58 2c 64 58 2c 27 4f 5f 63 27 29 3b 0a 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e dX,-dX,dX,'O_c');...for.kk.=.1:n
18d80 5f 69 6d 61 2c 0a 20 20 20 0a 20 20 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b _ima,........if.active_images(kk
18da0 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 09 65 76 61 6c 28 5b 27 58 58 5f 6b 6b 20 3d 20 58 5f 27 );............eval(['XX_kk.=.X_'
18dc0 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 09 65 76 61 6c 28 5b 27 6f .num2str(kk).';']);.....eval(['o
18de0 6d 63 5f 6b 6b 20 3d 20 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b mc_kk.=.omc_'.num2str(kk).';']);
18e00 0a 20 20 20 09 65 76 61 6c 28 5b 27 54 63 5f 6b 6b 20 3d 20 54 63 5f 27 20 6e 75 6d 32 73 74 72 .....eval(['Tc_kk.=.Tc_'.num2str
18e20 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 20 20 20 4e 5f 6b 6b 20 3d 20 73 69 7a 65 28 58 58 (kk).';']);.......N_kk.=.size(XX
18e40 5f 6b 6b 2c 32 29 3b 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 69 66 20 7e 65 _kk,2);....................if.~e
18e60 78 69 73 74 28 5b 27 6e 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 5d 29 2c 0a 20 xist(['n_sq_x_'.num2str(kk)]),..
18e80 20 20 20 20 20 20 20 20 20 20 20 6e 6f 5f 67 72 69 64 20 3d 20 31 3b 0a 20 20 20 20 20 20 20 20 ...........no_grid.=.1;.........
18ea0 20 65 6e 64 3b 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 69 66 20 7e 6e 6f 5f .end;....................if.~no_
18ec0 67 72 69 64 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 76 61 6c 28 5b 27 6e 5f 73 71 5f 78 20 grid,.............eval(['n_sq_x.
18ee0 3d 20 6e 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 =.n_sq_x_'.num2str(kk).';']);...
18f00 20 20 20 20 20 20 20 20 20 20 65 76 61 6c 28 5b 27 6e 5f 73 71 5f 79 20 3d 20 6e 5f 73 71 5f 79 ..........eval(['n_sq_y.=.n_sq_y
18f20 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 _'.num2str(kk).';']);...........
18f40 20 20 69 66 20 28 4e 5f 6b 6b 20 7e 3d 20 28 28 6e 5f 73 71 5f 78 2b 31 29 2a 28 6e 5f 73 71 5f ..if.(N_kk.~=.((n_sq_x+1)*(n_sq_
18f60 79 2b 31 29 29 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 5f 67 72 69 64 20 3d y+1))),................no_grid.=
18f80 20 31 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 20 20 20 65 6e .1;.............end;..........en
18fa0 64 3b 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 69 66 20 7e 69 73 6e 61 6e 28 d;....................if.~isnan(
18fc0 6f 6d 63 5f 6b 6b 28 31 2c 31 29 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 omc_kk(1,1)),...................
18fe0 20 20 20 20 20 20 20 52 5f 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 6b 6b 29 3b .......R_kk.=.rodrigues(omc_kk);
19000 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 59 59 5f 6b 6b 20 ..........................YY_kk.
19020 3d 20 52 5f 6b 6b 20 2a 20 58 58 5f 6b 6b 20 2b 20 54 63 5f 6b 6b 20 2a 20 6f 6e 65 73 28 31 2c =.R_kk.*.XX_kk.+.Tc_kk.*.ones(1,
19040 6c 65 6e 67 74 68 28 58 58 5f 6b 6b 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 length(XX_kk));.................
19060 20 20 20 20 20 20 20 20 20 75 75 20 3d 20 5b 2d 64 58 3b 2d 64 59 3b 30 5d 2f 32 3b 0a 20 20 20 .........uu.=.[-dX;-dY;0]/2;....
19080 20 20 20 20 20 20 20 20 20 75 75 20 3d 20 52 5f 6b 6b 20 2a 20 75 75 20 2b 20 54 63 5f 6b 6b 3b .........uu.=.R_kk.*.uu.+.Tc_kk;
190a0 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 7e 6e ...........................if.~n
190c0 6f 5f 67 72 69 64 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 59 59 78 20 3d 20 7a 65 72 o_grid,................YYx.=.zer
190e0 6f 73 28 6e 5f 73 71 5f 78 2b 31 2c 6e 5f 73 71 5f 79 2b 31 29 3b 0a 20 20 20 20 20 20 20 20 20 os(n_sq_x+1,n_sq_y+1);..........
19100 20 20 20 20 20 20 59 59 79 20 3d 20 7a 65 72 6f 73 28 6e 5f 73 71 5f 78 2b 31 2c 6e 5f 73 71 5f ......YYy.=.zeros(n_sq_x+1,n_sq_
19120 79 2b 31 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 59 59 7a 20 3d 20 7a 65 72 6f 73 y+1);................YYz.=.zeros
19140 28 6e 5f 73 71 5f 78 2b 31 2c 6e 5f 73 71 5f 79 2b 31 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 (n_sq_x+1,n_sq_y+1);............
19160 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 59 59 78 28 3a 29 20 3d 20 59 59 5f ....................YYx(:).=.YY_
19180 6b 6b 28 31 2c 3a 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 59 59 79 28 3a 29 20 3d kk(1,:);................YYy(:).=
191a0 20 59 59 5f 6b 6b 28 32 2c 3a 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 59 59 7a 28 .YY_kk(2,:);................YYz(
191c0 3a 29 20 3d 20 59 59 5f 6b 6b 28 33 2c 3a 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :).=.YY_kk(3,:);................
191e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 25 6b 65 79 62 6f 61 72 64 3b 0a 20 20 20 20 20 ................%keyboard;......
19200 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 67 75 72 65 ..........................figure
19220 28 34 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 68 68 3d 20 6d 65 73 68 28 59 59 (4);................hhh=.mesh(YY
19240 78 2c 59 59 7a 2c 2d 59 59 79 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 28 x,YYz,-YYy);................set(
19260 68 68 68 2c 27 65 64 67 65 63 6f 6c 6f 72 27 2c 63 6f 6c 6f 72 73 28 72 65 6d 28 6b 6b 2d 31 2c hhh,'edgecolor',colors(rem(kk-1,
19280 36 29 2b 31 29 2c 27 6c 69 6e 65 77 69 64 74 68 27 2c 31 29 3b 20 25 2c 27 66 61 63 65 63 6f 6c 6)+1),'linewidth',1);.%,'facecol
192a0 6f 72 27 2c 27 6e 6f 6e 65 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 25 70 6c 6f or','none');................%plo
192c0 74 33 28 59 59 5f 6b 6b 28 31 2c 3a 29 2c 59 59 5f 6b 6b 28 33 2c 3a 29 2c 2d 59 59 5f 6b 6b 28 t3(YY_kk(1,:),YY_kk(3,:),-YY_kk(
192e0 32 2c 3a 29 2c 5b 27 6f 27 20 63 6f 6c 6f 72 73 28 72 65 6d 28 6b 6b 2d 31 2c 36 29 2b 31 29 5d 2,:),['o'.colors(rem(kk-1,6)+1)]
19300 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 28 75 75 28 31 29 2c 75 75 28 );................text(uu(1),uu(
19320 33 29 2c 2d 75 75 28 32 29 2c 6e 75 6d 32 73 74 72 28 6b 6b 29 2c 27 66 6f 6e 74 73 69 7a 65 27 3),-uu(2),num2str(kk),'fontsize'
19340 2c 31 34 2c 27 63 6f 6c 6f 72 27 2c 63 6f 6c 6f 72 73 28 72 65 6d 28 6b 6b 2d 31 2c 36 29 2b 31 ,14,'color',colors(rem(kk-1,6)+1
19360 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 ));.............else............
19380 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 67 75 72 65 28 34 29 3b 0a 20 ....................figure(4);..
193a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 6c 6f 74 33 28 59 59 5f 6b 6b 28 31 2c 3a 29 2c 59 ..............plot3(YY_kk(1,:),Y
193c0 59 5f 6b 6b 28 33 2c 3a 29 2c 2d 59 59 5f 6b 6b 28 32 2c 3a 29 2c 5b 27 2e 27 20 63 6f 6c 6f 72 Y_kk(3,:),-YY_kk(2,:),['.'.color
193e0 73 28 72 65 6d 28 6b 6b 2d 31 2c 36 29 2b 31 29 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 s(rem(kk-1,6)+1)]);.............
19400 20 20 20 74 65 78 74 28 75 75 28 31 29 2c 75 75 28 33 29 2c 2d 75 75 28 32 29 2c 6e 75 6d 32 73 ...text(uu(1),uu(3),-uu(2),num2s
19420 74 72 28 6b 6b 29 2c 27 66 6f 6e 74 73 69 7a 65 27 2c 31 34 2c 27 63 6f 6c 6f 72 27 2c 63 6f 6c tr(kk),'fontsize',14,'color',col
19440 6f 72 73 28 72 65 6d 28 6b 6b 2d 31 2c 36 29 2b 31 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 ors(rem(kk-1,6)+1));............
19460 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 20 20 20 20 .................end;...........
19480 20 20 0a 20 20 20 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a ............end;...........end;.
194a0 20 20 20 0a 65 6e 64 3b 0a 0a 66 69 67 75 72 65 28 34 29 3b 72 6f 74 61 74 65 33 64 20 6f 6e 3b ....end;..figure(4);rotate3d.on;
194c0 0a 61 78 69 73 28 27 65 71 75 61 6c 27 29 3b 0a 74 69 74 6c 65 28 27 45 78 74 72 69 6e 73 69 63 .axis('equal');.title('Extrinsic
194e0 20 70 61 72 61 6d 65 74 65 72 73 27 29 3b 0a 25 76 69 65 77 28 36 30 2c 33 30 29 3b 0a 76 69 65 .parameters');.%view(60,30);.vie
19500 77 28 61 2c 62 29 3b 0a 68 6f 6c 64 20 6f 66 66 3b 0a 0a 73 65 74 28 34 2c 27 4e 61 6d 65 27 2c w(a,b);.hold.off;..set(4,'Name',
19520 27 33 44 27 2c 27 4e 75 6d 62 65 72 54 69 74 6c 65 27 2c 27 6f 66 66 27 29 3b 0a 0a 25 25 25 25 '3D','NumberTitle','off');..%%%%
19540 25 25 0a 20 20 20 66 69 67 75 72 65 28 32 29 3b 0a 20 20 20 68 6f 6c 64 20 6f 6e 3b 0a 20 20 20 %%....figure(2);....hold.on;....
19560 70 6c 6f 74 28 58 58 28 31 2c 3a 29 2c 58 58 28 32 2c 3a 29 2c 27 72 2b 27 29 3b 0a 20 20 20 74 plot(XX(1,:),XX(2,:),'r+');....t
19580 69 74 6c 65 28 27 54 68 65 20 72 65 64 20 63 72 6f 73 73 65 73 20 73 68 6f 75 6c 64 20 62 65 20 itle('The.red.crosses.should.be.
195a0 63 6c 6f 73 65 20 74 6f 20 74 68 65 20 69 6d 61 67 65 20 63 6f 72 6e 65 72 73 27 29 3b 0a 20 20 close.to.the.image.corners');...
195c0 20 68 6f 6c 64 20 6f 66 66 3b 0a 20 20 20 0a 20 20 20 64 69 73 70 28 27 49 66 20 74 68 65 20 67 .hold.off;........disp('If.the.g
195e0 75 65 73 73 65 64 20 67 72 69 64 20 63 6f 72 6e 65 72 73 20 28 72 65 64 20 63 72 6f 73 73 65 73 uessed.grid.corners.(red.crosses
19600 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 67 69 6e 70 75 74 33 2e 6d 00 00 00 00 00 00 00 00 00 TOOLBOX_calib/ginput3.m.........
19620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
19640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
19660 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
19680 20 20 31 34 33 30 34 20 20 37 30 32 34 30 33 37 33 32 34 20 20 31 30 32 31 30 00 20 00 00 00 00 ..14304..7024037324..10210......
196a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
196c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
196e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
19700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
19720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
19740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
19760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
19780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
197a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
197c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
197e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
19800 66 75 6e 63 74 69 6f 6e 20 5b 6f 75 74 31 2c 6f 75 74 32 2c 6f 75 74 33 5d 20 3d 20 67 69 6e 70 function.[out1,out2,out3].=.ginp
19820 75 74 32 28 61 72 67 31 29 0a 25 47 49 4e 50 55 54 20 47 72 61 70 68 69 63 61 6c 20 69 6e 70 75 ut2(arg1).%GINPUT.Graphical.inpu
19840 74 20 66 72 6f 6d 20 6d 6f 75 73 65 2e 0a 25 20 20 20 5b 58 2c 59 5d 20 3d 20 47 49 4e 50 55 54 t.from.mouse..%...[X,Y].=.GINPUT
19860 28 4e 29 20 67 65 74 73 20 4e 20 70 6f 69 6e 74 73 20 66 72 6f 6d 20 74 68 65 20 63 75 72 72 65 (N).gets.N.points.from.the.curre
19880 6e 74 20 61 78 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 0a 25 20 20 20 74 68 65 20 58 2d 20 nt.axes.and.returns..%...the.X-.
198a0 61 6e 64 20 59 2d 63 6f 6f 72 64 69 6e 61 74 65 73 20 69 6e 20 6c 65 6e 67 74 68 20 4e 20 76 65 and.Y-coordinates.in.length.N.ve
198c0 63 74 6f 72 73 20 58 20 61 6e 64 20 59 2e 20 20 54 68 65 20 63 75 72 73 6f 72 0a 25 20 20 20 63 ctors.X.and.Y...The.cursor.%...c
198e0 61 6e 20 62 65 20 70 6f 73 69 74 69 6f 6e 65 64 20 75 73 69 6e 67 20 61 20 6d 6f 75 73 65 20 28 an.be.positioned.using.a.mouse.(
19900 6f 72 20 62 79 20 75 73 69 6e 67 20 74 68 65 20 41 72 72 6f 77 20 4b 65 79 73 20 6f 6e 20 73 6f or.by.using.the.Arrow.Keys.on.so
19920 6d 65 20 0a 25 20 20 20 73 79 73 74 65 6d 73 29 2e 20 20 44 61 74 61 20 70 6f 69 6e 74 73 20 61 me..%...systems)...Data.points.a
19940 72 65 20 65 6e 74 65 72 65 64 20 62 79 20 70 72 65 73 73 69 6e 67 20 61 20 6d 6f 75 73 65 20 62 re.entered.by.pressing.a.mouse.b
19960 75 74 74 6f 6e 0a 25 20 20 20 6f 72 20 61 6e 79 20 6b 65 79 20 6f 6e 20 74 68 65 20 6b 65 79 62 utton.%...or.any.key.on.the.keyb
19980 6f 61 72 64 20 65 78 63 65 70 74 20 63 61 72 72 69 61 67 65 20 72 65 74 75 72 6e 2c 20 77 68 69 oard.except.carriage.return,.whi
199a0 63 68 20 74 65 72 6d 69 6e 61 74 65 73 0a 25 20 20 20 74 68 65 20 69 6e 70 75 74 20 62 65 66 6f ch.terminates.%...the.input.befo
199c0 72 65 20 4e 20 70 6f 69 6e 74 73 20 61 72 65 20 65 6e 74 65 72 65 64 2e 0a 25 0a 25 20 20 20 5b re.N.points.are.entered..%.%...[
199e0 58 2c 59 5d 20 3d 20 47 49 4e 50 55 54 20 67 61 74 68 65 72 73 20 61 6e 20 75 6e 6c 69 6d 69 74 X,Y].=.GINPUT.gathers.an.unlimit
19a00 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 70 6f 69 6e 74 73 20 75 6e 74 69 6c 20 74 68 65 0a 25 20 ed.number.of.points.until.the.%.
19a20 20 20 72 65 74 75 72 6e 20 6b 65 79 20 69 73 20 70 72 65 73 73 65 64 2e 0a 25 20 0a 25 20 20 20 ..return.key.is.pressed..%..%...
19a40 5b 58 2c 59 2c 42 55 54 54 4f 4e 5d 20 3d 20 47 49 4e 50 55 54 28 4e 29 20 72 65 74 75 72 6e 73 [X,Y,BUTTON].=.GINPUT(N).returns
19a60 20 61 20 74 68 69 72 64 20 72 65 73 75 6c 74 2c 20 42 55 54 54 4f 4e 2c 20 74 68 61 74 20 0a 25 .a.third.result,.BUTTON,.that..%
19a80 20 20 20 63 6f 6e 74 61 69 6e 73 20 61 20 76 65 63 74 6f 72 20 6f 66 20 69 6e 74 65 67 65 72 73 ...contains.a.vector.of.integers
19aa0 20 73 70 65 63 69 66 79 69 6e 67 20 77 68 69 63 68 20 6d 6f 75 73 65 20 62 75 74 74 6f 6e 20 77 .specifying.which.mouse.button.w
19ac0 61 73 0a 25 20 20 20 75 73 65 64 20 28 31 2c 32 2c 33 20 66 72 6f 6d 20 6c 65 66 74 29 20 6f 72 as.%...used.(1,2,3.from.left).or
19ae0 20 41 53 43 49 49 20 6e 75 6d 62 65 72 73 20 69 66 20 61 20 6b 65 79 20 6f 6e 20 74 68 65 20 6b .ASCII.numbers.if.a.key.on.the.k
19b00 65 79 62 6f 61 72 64 0a 25 20 20 20 77 61 73 20 75 73 65 64 2e 0a 0a 25 20 20 20 43 6f 70 79 72 eyboard.%...was.used...%...Copyr
19b20 69 67 68 74 20 28 63 29 20 31 39 38 34 2d 39 36 20 62 79 20 54 68 65 20 4d 61 74 68 57 6f 72 6b ight.(c).1984-96.by.The.MathWork
19b40 73 2c 20 49 6e 63 2e 0a 25 20 20 20 24 52 65 76 69 73 69 6f 6e 3a 20 35 2e 31 38 20 24 20 20 24 s,.Inc..%...$Revision:.5.18.$..$
19b60 44 61 74 65 3a 20 31 39 39 36 2f 31 31 2f 31 30 20 31 37 3a 34 38 3a 30 38 20 24 0a 0a 25 20 46 Date:.1996/11/10.17:48:08.$..%.F
19b80 69 78 65 64 20 76 65 72 73 69 6f 6e 20 62 79 20 4a 65 61 6e 2d 59 76 65 73 20 42 6f 75 67 75 65 ixed.version.by.Jean-Yves.Bougue
19ba0 74 20 74 6f 20 68 61 76 65 20 61 20 63 72 6f 73 73 20 69 6e 73 74 65 61 64 20 6f 66 20 32 20 6c t.to.have.a.cross.instead.of.2.l
19bc0 69 6e 65 73 0a 25 20 4d 6f 72 65 20 76 69 73 69 62 6c 65 20 66 6f 72 20 69 6d 61 67 65 73 0a 0a ines.%.More.visible.for.images..
19be0 50 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 31 36 2c 31 36 29 3b 0a 50 28 31 3a 31 35 2c 31 3a 31 35 P.=.NaN*ones(16,16);.P(1:15,1:15
19c00 29 20 3d 20 32 2a 6f 6e 65 73 28 31 35 2c 31 35 29 3b 0a 50 28 32 3a 31 34 2c 32 3a 31 34 29 20 ).=.2*ones(15,15);.P(2:14,2:14).
19c20 3d 20 6f 6e 65 73 28 31 33 2c 31 33 29 3b 0a 50 28 33 3a 31 33 2c 33 3a 31 33 29 20 3d 20 4e 61 =.ones(13,13);.P(3:13,3:13).=.Na
19c40 4e 2a 6f 6e 65 73 28 31 31 2c 31 31 29 3b 0a 50 28 36 3a 31 30 2c 36 3a 31 30 29 20 3d 20 32 2a N*ones(11,11);.P(6:10,6:10).=.2*
19c60 6f 6e 65 73 28 35 2c 35 29 3b 0a 50 28 37 3a 39 2c 37 3a 39 29 20 3d 20 31 2a 6f 6e 65 73 28 33 ones(5,5);.P(7:9,7:9).=.1*ones(3
19c80 2c 33 29 3b 0a 0a 6f 75 74 31 20 3d 20 5b 5d 3b 20 6f 75 74 32 20 3d 20 5b 5d 3b 20 6f 75 74 33 ,3);..out1.=.[];.out2.=.[];.out3
19ca0 20 3d 20 5b 5d 3b 20 79 20 3d 20 5b 5d 3b 0a 63 20 3d 20 63 6f 6d 70 75 74 65 72 3b 0a 69 66 20 .=.[];.y.=.[];.c.=.computer;.if.
19cc0 7e 73 74 72 63 6d 70 28 63 28 31 3a 32 29 2c 27 50 43 27 29 20 26 20 7e 73 74 72 63 6d 70 28 63 ~strcmp(c(1:2),'PC').&.~strcmp(c
19ce0 28 31 3a 32 29 2c 27 4d 41 27 29 0a 20 20 20 20 74 70 20 3d 20 67 65 74 28 30 2c 27 54 65 72 6d (1:2),'MA').....tp.=.get(0,'Term
19d00 69 6e 61 6c 50 72 6f 74 6f 63 6f 6c 27 29 3b 0a 65 6c 73 65 0a 20 20 20 20 74 70 20 3d 20 27 6d inalProtocol');.else.....tp.=.'m
19d20 69 63 72 6f 27 3b 0a 65 6e 64 0a 0a 69 66 20 7e 73 74 72 63 6d 70 28 74 70 2c 27 6e 6f 6e 65 27 icro';.end..if.~strcmp(tp,'none'
19d40 29 20 26 20 7e 73 74 72 63 6d 70 28 74 70 2c 27 78 27 29 20 26 20 7e 73 74 72 63 6d 70 28 74 70 ).&.~strcmp(tp,'x').&.~strcmp(tp
19d60 2c 27 6d 69 63 72 6f 27 29 2c 0a 20 20 20 20 69 66 20 6e 61 72 67 6f 75 74 20 3d 3d 20 31 2c 0a ,'micro'),.....if.nargout.==.1,.
19d80 20 20 20 20 20 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3d 3d 20 31 2c 0a 20 20 20 20 20 20 20 20 ........if.nargin.==.1,.........
19da0 20 20 20 20 65 76 61 6c 28 27 6f 75 74 31 20 3d 20 74 72 6d 67 69 6e 70 75 74 28 61 72 67 31 29 ....eval('out1.=.trmginput(arg1)
19dc0 3b 27 29 3b 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 76 ;');.........else.............ev
19de0 61 6c 28 27 6f 75 74 31 20 3d 20 74 72 6d 67 69 6e 70 75 74 3b 27 29 3b 0a 20 20 20 20 20 20 20 al('out1.=.trmginput;');........
19e00 20 65 6e 64 0a 20 20 20 20 65 6c 73 65 69 66 20 6e 61 72 67 6f 75 74 20 3d 3d 20 32 20 7c 20 6e .end.....elseif.nargout.==.2.|.n
19e20 61 72 67 6f 75 74 20 3d 3d 20 30 2c 0a 20 20 20 20 20 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3d argout.==.0,.........if.nargin.=
19e40 3d 20 31 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 76 61 6c 28 27 5b 6f 75 74 31 2c 6f 75 74 =.1,.............eval('[out1,out
19e60 32 5d 20 3d 20 74 72 6d 67 69 6e 70 75 74 28 61 72 67 31 29 3b 27 29 3b 0a 20 20 20 20 20 20 20 2].=.trmginput(arg1);');........
19e80 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 76 61 6c 28 27 5b 6f 75 74 31 2c 6f 75 .else.............eval('[out1,ou
19ea0 74 32 5d 20 3d 20 74 72 6d 67 69 6e 70 75 74 3b 27 29 3b 0a 20 20 20 20 20 20 20 20 65 6e 64 0a t2].=.trmginput;');.........end.
19ec0 20 20 20 20 20 20 20 20 69 66 20 20 6e 61 72 67 6f 75 74 20 3d 3d 20 30 0a 20 20 20 20 20 20 20 ........if..nargout.==.0........
19ee0 20 20 20 20 20 6f 75 74 31 20 3d 20 5b 20 6f 75 74 31 20 6f 75 74 32 20 5d 3b 0a 20 20 20 20 20 .....out1.=.[.out1.out2.];......
19f00 20 20 20 65 6e 64 0a 20 20 20 20 65 6c 73 65 69 66 20 6e 61 72 67 6f 75 74 20 3d 3d 20 33 2c 0a ...end.....elseif.nargout.==.3,.
19f20 20 20 20 20 20 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3d 3d 20 31 2c 0a 20 20 20 20 20 20 20 20 ........if.nargin.==.1,.........
19f40 20 20 20 20 65 76 61 6c 28 27 5b 6f 75 74 31 2c 6f 75 74 32 2c 6f 75 74 33 5d 20 3d 20 74 72 6d ....eval('[out1,out2,out3].=.trm
19f60 67 69 6e 70 75 74 28 61 72 67 31 29 3b 27 29 3b 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20 ginput(arg1);');.........else...
19f80 20 20 20 20 20 20 20 20 20 20 65 76 61 6c 28 27 5b 6f 75 74 31 2c 6f 75 74 32 2c 6f 75 74 33 5d ..........eval('[out1,out2,out3]
19fa0 20 3d 20 74 72 6d 67 69 6e 70 75 74 3b 27 29 3b 0a 20 20 20 20 20 20 20 20 65 6e 64 0a 20 20 20 .=.trmginput;');.........end....
19fc0 20 65 6e 64 0a 65 6c 73 65 0a 0a 20 20 20 20 66 69 67 20 3d 20 67 63 66 3b 0a 20 20 20 20 66 69 .end.else......fig.=.gcf;.....fi
19fe0 67 75 72 65 28 67 63 66 29 3b 0a 0a 20 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3d 3d 20 30 0a 20 gure(gcf);......if.nargin.==.0..
1a000 20 20 20 20 20 20 20 68 6f 77 5f 6d 61 6e 79 20 3d 20 2d 31 3b 0a 20 20 20 20 20 20 20 20 62 20 .......how_many.=.-1;.........b.
1a020 3d 20 5b 5d 3b 0a 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 68 6f 77 5f 6d 61 6e 79 20 =.[];.....else.........how_many.
1a040 3d 20 61 72 67 31 3b 0a 20 20 20 20 20 20 20 20 62 20 3d 20 5b 5d 3b 0a 20 20 20 20 20 20 20 20 =.arg1;.........b.=.[];.........
1a060 69 66 20 20 69 73 73 74 72 28 68 6f 77 5f 6d 61 6e 79 29 20 2e 2e 2e 0a 20 20 20 20 20 20 20 20 if..isstr(how_many).............
1a080 20 20 20 20 7c 20 73 69 7a 65 28 68 6f 77 5f 6d 61 6e 79 2c 31 29 20 7e 3d 20 31 20 7c 20 73 69 ....|.size(how_many,1).~=.1.|.si
1a0a0 7a 65 28 68 6f 77 5f 6d 61 6e 79 2c 32 29 20 7e 3d 20 31 20 2e 2e 2e 0a 20 20 20 20 20 20 20 20 ze(how_many,2).~=.1.............
1a0c0 20 20 20 20 7c 20 7e 28 66 69 78 28 68 6f 77 5f 6d 61 6e 79 29 20 3d 3d 20 68 6f 77 5f 6d 61 6e ....|.~(fix(how_many).==.how_man
1a0e0 79 29 20 2e 2e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 68 6f 77 5f 6d 61 6e 79 20 3c 20 y).................|.how_many.<.
1a100 30 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 28 27 52 65 71 75 69 72 65 73 20 61 20 0.............error('Requires.a.
1a120 70 6f 73 69 74 69 76 65 20 69 6e 74 65 67 65 72 2e 27 29 0a 20 20 20 20 20 20 20 20 65 6e 64 0a positive.integer.').........end.
1a140 20 20 20 20 20 20 20 20 69 66 20 68 6f 77 5f 6d 61 6e 79 20 3d 3d 20 30 0a 20 20 20 20 20 20 20 ........if.how_many.==.0........
1a160 20 20 20 20 20 70 74 72 5f 66 69 67 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 68 .....ptr_fig.=.0;.............wh
1a180 69 6c 65 28 70 74 72 5f 66 69 67 20 7e 3d 20 66 69 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ile(ptr_fig.~=.fig).............
1a1a0 20 20 20 20 70 74 72 5f 66 69 67 20 3d 20 67 65 74 28 30 2c 27 50 6f 69 6e 74 65 72 57 69 6e 64 ....ptr_fig.=.get(0,'PointerWind
1a1c0 6f 77 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0a 20 20 20 20 20 20 20 20 20 20 ow');.............end...........
1a1e0 20 20 73 63 72 6e 5f 70 74 20 3d 20 67 65 74 28 30 2c 27 50 6f 69 6e 74 65 72 4c 6f 63 61 74 69 ..scrn_pt.=.get(0,'PointerLocati
1a200 6f 6e 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 20 3d 20 67 65 74 28 66 69 67 2c on');.............loc.=.get(fig,
1a220 27 50 6f 73 69 74 69 6f 6e 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 74 20 3d 20 5b 73 'Position');.............pt.=.[s
1a240 63 72 6e 5f 70 74 28 31 29 20 2d 20 6c 6f 63 28 31 29 2c 20 73 63 72 6e 5f 70 74 28 32 29 20 2d crn_pt(1).-.loc(1),.scrn_pt(2).-
1a260 20 6c 6f 63 28 32 29 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 31 20 3d 20 70 74 28 .loc(2)];.............out1.=.pt(
1a280 31 29 3b 20 79 20 3d 20 70 74 28 32 29 3b 0a 20 20 20 20 20 20 20 20 65 6c 73 65 69 66 20 68 6f 1);.y.=.pt(2);.........elseif.ho
1a2a0 77 5f 6d 61 6e 79 20 3c 20 30 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 28 27 41 72 w_many.<.0.............error('Ar
1a2c0 67 75 6d 65 6e 74 20 6d 75 73 74 20 62 65 20 61 20 70 6f 73 69 74 69 76 65 20 69 6e 74 65 67 65 gument.must.be.a.positive.intege
1a2e0 72 2e 27 29 0a 20 20 20 20 20 20 20 20 65 6e 64 0a 20 20 20 20 65 6e 64 0a 0a 70 6f 69 6e 74 65 r.').........end.....end..pointe
1a300 72 20 3d 20 67 65 74 28 67 63 66 2c 27 70 6f 69 6e 74 65 72 27 29 3b 0a 0a 73 65 74 28 67 63 66 r.=.get(gcf,'pointer');..set(gcf
1a320 2c 27 50 6f 69 6e 74 65 72 27 2c 27 63 75 73 74 6f 6d 27 2c 27 50 6f 69 6e 74 65 72 53 68 61 70 ,'Pointer','custom','PointerShap
1a340 65 43 44 61 74 61 27 2c 50 2c 27 50 6f 69 6e 74 65 72 53 68 61 70 65 48 6f 74 53 70 6f 74 27 2c eCData',P,'PointerShapeHotSpot',
1a360 5b 38 2c 38 5d 29 3b 0a 25 73 65 74 28 67 63 66 2c 27 70 6f 69 6e 74 65 72 27 2c 27 63 72 6f 73 [8,8]);.%set(gcf,'pointer','cros
1a380 73 68 61 69 72 27 29 3b 0a 20 20 20 20 66 69 67 5f 75 6e 69 74 73 20 3d 20 67 65 74 28 66 69 67 shair');.....fig_units.=.get(fig
1a3a0 2c 27 75 6e 69 74 73 27 29 3b 0a 20 20 20 20 63 68 61 72 20 3d 20 30 3b 0a 0a 20 20 20 20 77 68 ,'units');.....char.=.0;......wh
1a3c0 69 6c 65 20 68 6f 77 5f 6d 61 6e 79 20 7e 3d 20 30 0a 20 20 20 20 20 20 20 20 25 20 55 73 65 20 ile.how_many.~=.0.........%.Use.
1a3e0 6e 6f 2d 73 69 64 65 20 65 66 66 65 63 74 20 57 41 49 54 46 4f 52 42 55 54 54 4f 4e 50 52 45 53 no-side.effect.WAITFORBUTTONPRES
1a400 53 0a 20 20 20 20 20 20 20 20 77 61 73 65 72 72 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 65 76 S.........waserr.=.0;.........ev
1a420 61 6c 28 27 6b 65 79 64 6f 77 6e 20 3d 20 77 66 62 70 3b 27 2c 20 27 77 61 73 65 72 72 20 3d 20 al('keydown.=.wfbp;',.'waserr.=.
1a440 31 3b 27 29 3b 0a 20 20 20 20 20 20 20 20 69 66 28 77 61 73 65 72 72 20 3d 3d 20 31 29 0a 20 20 1;');.........if(waserr.==.1)...
1a460 20 20 20 20 69 66 28 69 73 68 61 6e 64 6c 65 28 66 69 67 29 29 0a 20 20 20 20 20 20 20 20 73 65 ....if(ishandle(fig)).........se
1a480 74 28 66 69 67 2c 27 70 6f 69 6e 74 65 72 27 2c 70 6f 69 6e 74 65 72 2c 27 75 6e 69 74 73 27 2c t(fig,'pointer',pointer,'units',
1a4a0 66 69 67 5f 75 6e 69 74 73 29 3b 0a 20 20 20 20 20 20 20 20 65 72 72 6f 72 28 27 49 6e 74 65 72 fig_units);.........error('Inter
1a4c0 72 75 70 74 65 64 27 29 3b 0a 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 65 72 72 rupted');.......else.........err
1a4e0 6f 72 28 27 49 6e 74 65 72 72 75 70 74 65 64 20 62 79 20 66 69 67 75 72 65 20 64 65 6c 65 74 69 or('Interrupted.by.figure.deleti
1a500 6f 6e 27 29 3b 0a 20 20 20 20 20 20 65 6e 64 0a 20 20 20 20 20 20 20 20 65 6e 64 0a 20 20 20 20 on');.......end.........end.....
1a520 20 20 0a 20 20 20 20 20 20 20 20 70 74 72 5f 66 69 67 20 3d 20 67 65 74 28 30 2c 27 43 75 72 72 ...........ptr_fig.=.get(0,'Curr
1a540 65 6e 74 46 69 67 75 72 65 27 29 3b 0a 20 20 20 20 20 20 20 20 69 66 28 70 74 72 5f 66 69 67 20 entFigure');.........if(ptr_fig.
1a560 3d 3d 20 66 69 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6b 65 79 64 6f 77 6e 0a 20 ==.fig).............if.keydown..
1a580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 68 61 72 20 3d 20 67 65 74 28 66 69 67 2c 20 27 ...............char.=.get(fig,.'
1a5a0 43 75 72 72 65 6e 74 43 68 61 72 61 63 74 65 72 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 CurrentCharacter');.............
1a5c0 20 20 20 20 62 75 74 74 6f 6e 20 3d 20 61 62 73 28 67 65 74 28 66 69 67 2c 20 27 43 75 72 72 65 ....button.=.abs(get(fig,.'Curre
1a5e0 6e 74 43 68 61 72 61 63 74 65 72 27 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ntCharacter'));.................
1a600 73 63 72 6e 5f 70 74 20 3d 20 67 65 74 28 30 2c 20 27 50 6f 69 6e 74 65 72 4c 6f 63 61 74 69 6f scrn_pt.=.get(0,.'PointerLocatio
1a620 6e 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 28 66 69 67 2c 27 75 6e n');.................set(fig,'un
1a640 69 74 73 27 2c 27 70 69 78 65 6c 73 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c its','pixels').................l
1a660 6f 63 20 3d 20 67 65 74 28 66 69 67 2c 20 27 50 6f 73 69 74 69 6f 6e 27 29 3b 0a 20 20 20 20 20 oc.=.get(fig,.'Position');......
1a680 20 20 20 20 20 20 20 20 20 20 20 70 74 20 3d 20 5b 73 63 72 6e 5f 70 74 28 31 29 20 2d 20 6c 6f ...........pt.=.[scrn_pt(1).-.lo
1a6a0 63 28 31 29 2c 20 73 63 72 6e 5f 70 74 28 32 29 20 2d 20 6c 6f 63 28 32 29 5d 3b 0a 20 20 20 20 c(1),.scrn_pt(2).-.loc(2)];.....
1a6c0 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 28 66 69 67 2c 27 43 75 72 72 65 6e 74 50 6f 69 6e ............set(fig,'CurrentPoin
1a6e0 74 27 2c 70 74 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 t',pt);.............else........
1a700 20 20 20 20 20 20 20 20 20 62 75 74 74 6f 6e 20 3d 20 67 65 74 28 66 69 67 2c 20 27 53 65 6c 65 .........button.=.get(fig,.'Sele
1a720 63 74 69 6f 6e 54 79 70 65 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 ctionType');.................if.
1a740 73 74 72 63 6d 70 28 62 75 74 74 6f 6e 2c 27 6f 70 65 6e 27 29 0a 20 20 20 20 20 20 20 20 20 20 strcmp(button,'open')...........
1a760 20 20 20 20 20 20 20 20 20 20 62 75 74 74 6f 6e 20 3d 20 62 28 6c 65 6e 67 74 68 28 62 29 29 3b ..........button.=.b(length(b));
1a780 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 69 66 20 73 74 72 63 6d 70 28 62 .................elseif.strcmp(b
1a7a0 75 74 74 6f 6e 2c 27 6e 6f 72 6d 61 6c 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 utton,'normal').................
1a7c0 20 20 20 20 62 75 74 74 6f 6e 20 3d 20 31 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ....button.=.1;.................
1a7e0 65 6c 73 65 69 66 20 73 74 72 63 6d 70 28 62 75 74 74 6f 6e 2c 27 65 78 74 65 6e 64 27 29 0a 20 elseif.strcmp(button,'extend')..
1a800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75 74 74 6f 6e 20 3d 20 32 3b 0a 20 ...................button.=.2;..
1a820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 69 66 20 73 74 72 63 6d 70 28 62 75 74 ...............elseif.strcmp(but
1a840 74 6f 6e 2c 27 61 6c 74 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 ton,'alt').....................b
1a860 75 74 74 6f 6e 20 3d 20 33 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0a utton.=.3;.................else.
1a880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 28 27 49 6e 76 61 6c ....................error('Inval
1a8a0 69 64 20 6d 6f 75 73 65 20 73 65 6c 65 63 74 69 6f 6e 2e 27 29 0a 20 20 20 20 20 20 20 20 20 20 id.mouse.selection.')...........
1a8c0 20 20 20 20 20 20 65 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0a 20 20 20 20 20 20 ......end.............end.......
1a8e0 20 20 20 20 20 20 70 74 20 3d 20 67 65 74 28 67 63 61 2c 20 27 43 75 72 72 65 6e 74 50 6f 69 6e ......pt.=.get(gca,.'CurrentPoin
1a900 74 27 29 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 77 5f 6d 61 6e 79 20 3d 20 68 6f 77 t');..............how_many.=.how
1a920 5f 6d 61 6e 79 20 2d 20 31 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 28 63 68 61 72 20 _many.-.1;..............if(char.
1a940 3d 3d 20 31 33 29 20 25 20 26 20 68 6f 77 5f 6d 61 6e 79 20 7e 3d 20 30 29 0a 20 20 20 20 20 20 ==.13).%.&.how_many.~=.0).......
1a960 20 20 20 20 20 20 20 20 20 20 25 20 69 66 20 74 68 65 20 72 65 74 75 72 6e 20 6b 65 79 20 77 61 ..........%.if.the.return.key.wa
1a980 73 20 70 72 65 73 73 65 64 2c 20 63 68 61 72 20 77 69 6c 6c 20 3d 3d 20 31 33 2c 0a 20 20 20 20 s.pressed,.char.will.==.13,.....
1a9a0 20 20 20 20 20 20 20 20 20 20 20 20 25 20 61 6e 64 20 74 68 61 74 27 73 20 6f 75 72 20 73 69 67 ............%.and.that's.our.sig
1a9c0 6e 61 6c 20 74 6f 20 62 72 65 61 6b 20 6f 75 74 20 6f 66 20 68 65 72 65 20 77 68 65 74 68 65 72 nal.to.break.out.of.here.whether
1a9e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 25 20 6f 72 20 6e 6f 74 20 77 65 20 68 61 76 .................%.or.not.we.hav
1aa00 65 20 63 6f 6c 6c 65 63 74 65 64 20 61 6c 6c 20 74 68 65 20 72 65 71 75 65 73 74 65 64 20 64 61 e.collected.all.the.requested.da
1aa20 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 25 20 70 6f 69 6e 74 73 2e 20 20 0a 20 ta.................%.points.....
1aa40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 25 20 49 66 20 74 68 69 73 20 77 61 73 20 61 6e 20 ...............%.If.this.was.an.
1aa60 65 61 72 6c 79 20 62 72 65 61 6b 6f 75 74 2c 20 64 6f 6e 27 74 20 69 6e 63 6c 75 64 65 0a 20 20 early.breakout,.don't.include...
1aa80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 25 20 74 68 65 20 3c 52 65 74 75 72 6e 3e 20 6b 65 79 ..............%.the.<Return>.key
1aaa0 20 69 6e 66 6f 20 69 6e 20 74 68 65 20 72 65 74 75 72 6e 20 61 72 72 61 79 73 2e 0a 20 20 20 20 .info.in.the.return.arrays......
1aac0 20 20 20 20 20 20 20 20 20 20 20 20 25 20 57 65 20 77 69 6c 6c 20 6e 6f 20 6c 6f 6e 67 65 72 20 ............%.We.will.no.longer.
1aae0 63 6f 75 6e 74 20 69 74 20 69 66 20 69 74 27 73 20 74 68 65 20 6c 61 73 74 20 69 6e 70 75 74 2e count.it.if.it's.the.last.input.
1ab00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 .................break;.........
1ab20 20 20 20 20 65 6e 64 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 31 20 3d 20 5b 6f 75 74 ....end..............out1.=.[out
1ab40 31 3b 70 74 28 31 2c 31 29 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 79 20 3d 20 5b 79 3b 70 1;pt(1,1)];.............y.=.[y;p
1ab60 74 28 31 2c 32 29 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 20 3d 20 5b 62 3b 62 75 74 74 t(1,2)];.............b.=.[b;butt
1ab80 6f 6e 5d 3b 0a 20 20 20 20 20 20 20 20 65 6e 64 0a 20 20 20 20 65 6e 64 0a 0a 20 20 20 20 73 65 on];.........end.....end......se
1aba0 74 28 66 69 67 2c 27 70 6f 69 6e 74 65 72 27 2c 70 6f 69 6e 74 65 72 2c 27 75 6e 69 74 73 27 2c t(fig,'pointer',pointer,'units',
1abc0 66 69 67 5f 75 6e 69 74 73 29 3b 0a 0a 20 20 20 20 69 66 20 6e 61 72 67 6f 75 74 20 3e 20 31 0a fig_units);......if.nargout.>.1.
1abe0 20 20 20 20 20 20 20 20 6f 75 74 32 20 3d 20 79 3b 0a 20 20 20 20 20 20 20 20 69 66 20 6e 61 72 ........out2.=.y;.........if.nar
1ac00 67 6f 75 74 20 3e 20 32 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 33 20 3d 20 62 3b 0a 20 gout.>.2.............out3.=.b;..
1ac20 20 20 20 20 20 20 20 65 6e 64 0a 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 6f 75 74 31 .......end.....else.........out1
1ac40 20 3d 20 5b 6f 75 74 31 20 79 5d 3b 0a 20 20 20 20 65 6e 64 0a 0a 65 6e 64 0a 0a 25 25 25 25 25 .=.[out1.y];.....end..end..%%%%%
1ac60 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1ac80 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 0a 66 75 6e 63 74 69 6f 6e 20 6b 65 79 20 %%%%%%%%%%%%%%%%%%.function.key.
1aca0 3d 20 77 66 62 70 0a 25 57 46 42 50 20 20 20 52 65 70 6c 61 63 65 6d 65 6e 74 20 66 6f 72 20 57 =.wfbp.%WFBP...Replacement.for.W
1acc0 41 49 54 46 4f 52 42 55 54 54 4f 4e 50 52 45 53 53 20 74 68 61 74 20 68 61 73 20 6e 6f 20 73 69 AITFORBUTTONPRESS.that.has.no.si
1ace0 64 65 20 65 66 66 65 63 74 73 2e 0a 0a 25 20 52 65 6d 6f 76 65 20 66 69 67 75 72 65 20 62 75 74 de.effects...%.Remove.figure.but
1ad00 74 6f 6e 20 66 75 6e 63 74 69 6f 6e 73 0a 66 70 72 6f 70 73 20 3d 20 7b 27 77 69 6e 64 6f 77 62 ton.functions.fprops.=.{'windowb
1ad20 75 74 74 6f 6e 75 70 66 63 6e 27 2c 27 62 75 74 74 6f 6e 64 6f 77 6e 66 63 6e 27 2c 20 2e 2e 2e uttonupfcn','buttondownfcn',....
1ad40 0a 20 20 20 20 20 20 20 20 20 20 27 77 69 6e 64 6f 77 62 75 74 74 6f 6e 64 6f 77 6e 66 63 6e 27 ...........'windowbuttondownfcn'
1ad60 2c 27 77 69 6e 64 6f 77 62 75 74 74 6f 6e 6d 6f 74 69 6f 6e 66 63 6e 27 7d 3b 0a 66 69 67 20 3d ,'windowbuttonmotionfcn'};.fig.=
1ad80 20 67 63 66 3b 0a 66 76 61 6c 73 20 3d 20 67 65 74 28 66 69 67 2c 66 70 72 6f 70 73 29 3b 0a 73 .gcf;.fvals.=.get(fig,fprops);.s
1ada0 65 74 28 66 69 67 2c 66 70 72 6f 70 73 2c 7b 27 27 2c 27 27 2c 27 27 2c 27 27 7d 29 0a 0a 25 20 et(fig,fprops,{'','','',''})..%.
1adc0 52 65 6d 6f 76 65 20 61 6c 6c 20 6f 74 68 65 72 20 62 75 74 74 6f 6e 64 6f 77 6e 20 66 75 6e 63 Remove.all.other.buttondown.func
1ade0 74 69 6f 6e 73 0a 61 78 20 3d 20 66 69 6e 64 6f 62 6a 28 66 69 67 2c 27 74 79 70 65 27 2c 27 61 tions.ax.=.findobj(fig,'type','a
1ae00 78 65 73 27 29 3b 0a 69 66 20 69 73 65 6d 70 74 79 28 61 78 29 0a 20 20 20 20 63 68 20 3d 20 7b xes');.if.isempty(ax).....ch.=.{
1ae20 7d 3b 0a 65 6c 73 65 0a 20 20 20 20 63 68 20 3d 20 67 65 74 28 61 78 2c 7b 27 43 68 69 6c 64 72 };.else.....ch.=.get(ax,{'Childr
1ae40 65 6e 27 7d 29 3b 0a 65 6e 64 0a 66 6f 72 20 69 3d 31 3a 6c 65 6e 67 74 68 28 63 68 29 2c 0a 20 en'});.end.for.i=1:length(ch),..
1ae60 20 20 20 63 68 7b 69 7d 20 3d 20 63 68 7b 69 7d 28 3a 29 27 3b 0a 65 6e 64 0a 68 20 3d 20 5b 61 ...ch{i}.=.ch{i}(:)';.end.h.=.[a
1ae80 78 28 3a 29 27 2c 63 68 7b 3a 7d 5d 3b 0a 76 61 6c 73 20 3d 20 67 65 74 28 68 2c 7b 27 62 75 74 x(:)',ch{:}];.vals.=.get(h,{'but
1aea0 74 6f 6e 64 6f 77 6e 66 63 6e 27 7d 29 3b 0a 6d 74 20 3d 20 72 65 70 6d 61 74 28 7b 27 27 7d 2c tondownfcn'});.mt.=.repmat({''},
1aec0 73 69 7a 65 28 76 61 6c 73 29 29 3b 0a 73 65 74 28 68 2c 7b 27 62 75 74 74 6f 6e 64 6f 77 6e 66 size(vals));.set(h,{'buttondownf
1aee0 63 6e 27 7d 2c 6d 74 29 3b 0a 0a 25 20 4e 6f 77 20 77 61 69 74 20 66 6f 72 20 74 68 61 74 20 62 cn'},mt);..%.Now.wait.for.that.b
1af00 75 74 74 6f 6e 70 72 65 73 73 2c 20 61 6e 64 20 63 68 65 63 6b 20 66 6f 72 20 65 72 72 6f 72 20 uttonpress,.and.check.for.error.
1af20 63 6f 6e 64 69 74 69 6f 6e 73 0a 77 61 73 65 72 72 20 3d 20 30 3b 0a 65 76 61 6c 28 5b 27 69 66 conditions.waserr.=.0;.eval(['if
1af40 20 6e 61 72 67 6f 75 74 3d 3d 30 2c 27 2c 20 2e 2e 2e 0a 20 20 20 20 20 20 27 20 20 20 77 61 69 .nargout==0,',...........'...wai
1af60 74 66 6f 72 62 75 74 74 6f 6e 70 72 65 73 73 2c 27 2c 20 2e 2e 2e 0a 20 20 20 20 20 20 27 65 6c tforbuttonpress,',...........'el
1af80 73 65 2c 27 2c 20 2e 2e 2e 0a 20 20 20 20 20 20 27 20 20 20 6b 65 79 64 6f 77 6e 20 3d 20 77 61 se,',...........'...keydown.=.wa
1afa0 69 74 66 6f 72 62 75 74 74 6f 6e 70 72 65 73 73 3b 27 2c 2e 2e 2e 0a 20 20 20 20 20 20 27 65 6e itforbuttonpress;',..........'en
1afc0 64 27 20 5d 2c 20 27 77 61 73 65 72 72 20 3d 20 31 3b 27 29 3b 0a 0a 25 20 50 75 74 20 65 76 65 d'.],.'waserr.=.1;');..%.Put.eve
1afe0 72 79 74 68 69 6e 67 20 62 61 63 6b 0a 69 66 28 69 73 68 61 6e 64 6c 65 28 66 69 67 29 29 0a 20 rything.back.if(ishandle(fig))..
1b000 20 73 65 74 28 66 69 67 2c 66 70 72 6f 70 73 2c 66 76 61 6c 73 29 0a 20 20 73 65 74 28 68 2c 7b .set(fig,fprops,fvals)...set(h,{
1b020 27 62 75 74 74 6f 6e 64 6f 77 6e 66 63 6e 27 7d 2c 76 61 6c 73 29 0a 65 6e 64 0a 0a 69 66 28 77 'buttondownfcn'},vals).end..if(w
1b040 61 73 65 72 72 20 3d 3d 20 31 29 0a 20 20 65 72 72 6f 72 28 27 49 6e 74 65 72 72 75 70 74 65 64 aserr.==.1)...error('Interrupted
1b060 27 29 3b 0a 65 6e 64 0a 0a 69 66 20 6e 61 72 67 6f 75 74 3e 30 2c 20 6b 65 79 20 3d 20 6b 65 79 ');.end..if.nargout>0,.key.=.key
1b080 64 6f 77 6e 3b 20 65 6e 64 0a 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 down;.end.%%%%%%%%%%%%%%%%%%%%%%
1b0a0 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1b0c0 25 25 25 0a 20 49 4d 41 47 45 53 20 25 25 25 25 25 25 25 25 25 25 25 25 25 0a 20 20 20 0a 09 65 %%%..IMAGES.%%%%%%%%%%%%%......e
1b0e0 6c 73 65 0a 20 20 20 09 0a 20 20 20 09 78 79 5f 63 6f 72 6e 65 72 73 5f 75 6e 64 69 73 74 20 3d lse..........xy_corners_undist.=
1b100 20 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 5f 6f 75 6c 75 28 5b 28 78 27 20 2d 20 63 63 28 .comp_distortion_oulu([(x'.-.cc(
1b120 31 29 29 2f 66 63 28 31 29 3b 28 79 27 2d 63 63 28 32 29 29 2f 66 63 28 31 29 5d 2c 6b 63 29 3b 1))/fc(1);(y'-cc(2))/fc(1)],kc);
1b140 0a 09 20 0a 09 20 09 78 75 20 3d 20 78 79 5f 63 6f 72 6e 65 72 73 5f 75 6e 64 69 73 74 28 31 2c .......xu.=.xy_corners_undist(1,
1b160 3a 29 27 3b 0a 09 20 09 79 75 20 3d 20 78 79 5f 63 6f 72 6e 65 72 73 5f 75 6e 64 69 73 74 28 32 :)';....yu.=.xy_corners_undist(2
1b180 2c 3a 29 27 3b 0a 09 20 0a 09 20 09 5b 58 58 75 5d 20 3d 20 70 72 6f 6a 65 63 74 65 64 47 72 69 ,:)';.......[XXu].=.projectedGri
1b1a0 64 20 28 20 5b 78 75 28 31 29 3b 79 75 28 31 29 5d 2c 20 5b 78 75 28 32 29 3b 79 75 28 32 29 5d d.(.[xu(1);yu(1)],.[xu(2);yu(2)]
1b1c0 2c 5b 78 75 28 33 29 3b 79 75 28 33 29 5d 2c 20 5b 78 75 28 34 29 3b 79 75 28 34 29 5d 2c 6e 5f ,[xu(3);yu(3)],.[xu(4);yu(4)],n_
1b1e0 73 71 5f 78 2b 31 2c 6e 5f 73 71 5f 79 2b 31 29 3b 20 25 20 54 68 65 20 66 75 6c 6c 20 67 72 69 sq_x+1,n_sq_y+1);.%.The.full.gri
1b200 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 2e 6d 00 00 TOOLBOX_calib/go_calib_optim.m..
1b220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b260 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
1b280 20 20 20 34 32 36 36 20 20 37 30 32 34 30 33 37 33 32 35 20 20 31 31 35 35 35 00 20 00 00 00 00 ...4266..7024037325..11555......
1b2a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b2c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b2e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b3a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b3c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b3e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b400 25 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 0a 25 0a 25 4d 61 69 6e 20 63 61 6c 69 62 72 61 74 %go_calib_optim.%.%Main.calibrat
1b420 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 2e 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 69 6e 74 72 69 ion.function..Computes.the.intri
1b440 6e 73 69 63 20 61 6e 64 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 2e 0a 25 52 nsic.andextrinsic.parameters..%R
1b460 75 6e 73 20 61 73 20 61 20 73 63 72 69 70 74 2e 0a 25 0a 25 49 4e 50 55 54 3a 20 78 5f 31 2c 78 uns.as.a.script..%.%INPUT:.x_1,x
1b480 5f 32 2c 78 5f 33 2c 2e 2e 2e 3a 20 46 65 61 74 75 72 65 20 6c 6f 63 61 74 69 6f 6e 73 20 6f 6e _2,x_3,...:.Feature.locations.on
1b4a0 20 74 68 65 20 69 6d 61 67 65 73 0a 25 20 20 20 20 20 20 20 58 5f 31 2c 58 5f 32 2c 58 5f 33 2c .the.images.%.......X_1,X_2,X_3,
1b4c0 2e 2e 2e 3a 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 67 72 69 64 20 63 6f 6f 72 64 69 6e 61 ...:.Corresponding.grid.coordina
1b4e0 74 65 73 0a 25 0a 25 4f 55 54 50 55 54 3a 20 66 63 3a 20 43 61 6d 65 72 61 20 66 6f 63 61 6c 20 tes.%.%OUTPUT:.fc:.Camera.focal.
1b500 6c 65 6e 67 74 68 0a 25 20 20 20 20 20 20 20 20 63 63 3a 20 50 72 69 6e 63 69 70 61 6c 20 70 6f length.%........cc:.Principal.po
1b520 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 0a 25 20 20 20 20 20 20 20 20 6b 63 3a 20 44 69 73 int.coordinates.%........kc:.Dis
1b540 74 6f 72 74 69 6f 6e 20 63 6f 65 66 66 69 63 69 65 6e 74 73 0a 25 20 20 20 20 20 20 20 20 4b 4b tortion.coefficients.%........KK
1b560 3a 20 54 68 65 20 63 61 6d 65 72 61 20 6d 61 74 72 69 78 20 28 63 6f 6e 74 61 69 6e 69 6e 67 20 :.The.camera.matrix.(containing.
1b580 66 63 20 61 6e 64 20 63 63 29 0a 25 20 20 20 20 20 20 20 20 6f 6d 63 5f 31 2c 6f 6d 63 5f 32 2c fc.and.cc).%........omc_1,omc_2,
1b5a0 6f 6d 63 5f 33 2c 2e 2e 2e 3a 20 33 44 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 73 20 61 omc_3,...:.3D.rotation.vectors.a
1b5c0 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 67 72 69 64 20 70 6f 73 69 74 69 6f 6e 73 20 69 6e ttached.to.the.grid.positions.in
1b5e0 20 73 70 61 63 65 0a 25 20 20 20 20 20 20 20 20 54 63 5f 31 2c 54 63 5f 32 2c 54 63 5f 33 2c 2e .space.%........Tc_1,Tc_2,Tc_3,.
1b600 2e 2e 3a 20 33 44 20 74 72 61 6e 73 6c 61 74 69 6f 6e 20 76 65 63 74 6f 72 73 20 61 74 74 61 63 ..:.3D.translation.vectors.attac
1b620 68 65 64 20 74 6f 20 74 68 65 20 67 72 69 64 20 70 6f 73 69 74 69 6f 6e 73 20 69 6e 20 73 70 61 hed.to.the.grid.positions.in.spa
1b640 63 65 0a 25 20 20 20 20 20 20 20 20 52 63 5f 31 2c 52 63 5f 32 2c 52 63 5f 33 2c 2e 2e 2e 3a 20 ce.%........Rc_1,Rc_2,Rc_3,...:.
1b660 33 44 20 72 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 63 65 73 20 63 6f 72 72 65 73 70 6f 6e 64 69 3D.rotation.matrices.correspondi
1b680 6e 67 20 74 6f 20 74 68 65 20 6f 6d 63 20 76 65 63 74 6f 72 73 0a 25 0a 25 4d 65 74 68 6f 64 3a ng.to.the.omc.vectors.%.%Method:
1b6a0 20 4d 69 6e 69 6d 69 7a 65 73 20 74 68 65 20 70 69 78 65 6c 20 72 65 70 72 6f 6a 65 63 74 69 6f .Minimizes.the.pixel.reprojectio
1b6c0 6e 20 65 72 72 6f 72 20 69 6e 20 74 68 65 20 6c 65 61 73 74 20 73 71 75 61 72 65 73 20 73 65 6e n.error.in.the.least.squares.sen
1b6e0 73 65 20 6f 76 65 72 20 74 68 65 20 69 6e 74 72 69 6e 73 69 63 0a 25 20 20 20 20 20 20 20 20 63 se.over.the.intrinsic.%........c
1b700 61 6d 65 72 61 20 70 61 72 61 6d 65 74 65 72 73 2c 20 61 6e 64 20 74 68 65 20 65 78 74 72 69 6e amera.parameters,.and.the.extrin
1b720 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 28 33 44 20 6c 6f 63 61 74 69 6f 6e 73 20 6f 66 20 sic.parameters.(3D.locations.of.
1b740 74 68 65 20 67 72 69 64 73 20 69 6e 20 73 70 61 63 65 29 0a 25 0a 25 4e 6f 74 65 3a 20 49 66 20 the.grids.in.space).%.%Note:.If.
1b760 74 68 65 20 69 6e 74 72 69 6e 73 69 63 20 63 61 6d 65 72 61 20 70 61 72 61 6d 65 74 65 72 73 20 the.intrinsic.camera.parameters.
1b780 28 66 63 2c 20 63 63 2c 20 6b 63 29 20 64 6f 20 6e 6f 74 20 65 78 69 73 74 20 62 65 66 6f 72 65 (fc,.cc,.kc).do.not.exist.before
1b7a0 2c 20 74 68 65 79 20 61 72 65 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 74 68 72 6f 75 67 68 0a 25 ,.they.are.initialized.through.%
1b7c0 20 20 20 20 20 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 69 6e 69 74 5f 69 6e 74 72 69 6e 73 69 ......the.function.init_intrinsi
1b7e0 63 5f 70 61 72 61 6d 2e 6d 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 74 68 65 20 76 61 72 69 61 62 c_param.m..Otherwise,.the.variab
1b800 6c 65 73 20 69 6e 20 6d 65 6d 6f 72 79 20 61 72 65 20 75 73 65 64 20 61 73 20 69 6e 69 74 69 61 les.in.memory.are.used.as.initia
1b820 6c 20 67 75 65 73 73 65 73 2e 0a 25 0a 25 4e 6f 74 65 3a 20 54 68 65 20 72 6f 77 20 76 65 63 74 l.guesses..%.%Note:.The.row.vect
1b840 6f 72 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 7a 65 72 or.active_images.consists.of.zer
1b860 6f 73 20 61 6e 64 20 6f 6e 65 73 2e 20 54 6f 20 64 65 61 63 74 69 76 61 74 65 20 61 6e 20 69 6d os.and.ones..To.deactivate.an.im
1b880 61 67 65 2c 20 73 65 74 20 74 68 65 0a 25 20 20 20 20 20 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e age,.set.the.%......correspondin
1b8a0 67 20 65 6e 74 72 79 20 69 6e 20 74 68 65 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 20 76 65 63 g.entry.in.the.active_images.vec
1b8c0 74 6f 72 20 74 6f 20 7a 65 72 6f 2e 0a 25 0a 25 56 45 52 59 20 49 4d 50 4f 52 54 41 4e 54 3a 20 tor.to.zero..%.%VERY.IMPORTANT:.
1b8e0 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 77 6f 72 6b 73 20 66 6f 72 20 32 44 20 61 6e 64 20 33 This.function.works.for.2D.and.3
1b900 44 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 72 69 67 73 2c 20 65 78 63 65 70 74 20 66 6f 72 20 69 D.calibration.rigs,.except.for.i
1b920 6e 69 74 5f 69 6e 74 72 69 6e 73 69 63 5f 70 61 72 61 6d 2e 6d 0a 25 74 68 61 74 20 69 73 20 73 nit_intrinsic_param.m.%that.is.s
1b940 6f 20 66 61 72 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 74 6f 20 77 6f 72 6b 20 6f 6e 6c 79 20 77 o.far.implemented.to.work.only.w
1b960 69 74 68 20 32 44 20 72 69 67 73 2e 0a 25 49 6e 20 74 68 65 20 66 75 74 75 72 65 2c 20 61 20 6d ith.2D.rigs..%In.the.future,.a.m
1b980 6f 72 65 20 67 65 6e 65 72 61 6c 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 74 68 65 ore.general.function.will.be.the
1b9a0 72 65 2e 0a 25 46 6f 72 20 6e 6f 77 2c 20 69 66 20 75 73 69 6e 67 20 61 20 33 44 20 63 61 6c 69 re..%For.now,.if.using.a.3D.cali
1b9c0 62 72 61 74 69 6f 6e 20 72 69 67 2c 20 73 65 74 20 71 75 69 63 6b 5f 69 6e 69 74 20 74 6f 20 31 bration.rig,.set.quick_init.to.1
1b9e0 20 66 6f 72 20 61 6e 20 65 61 73 79 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 74 .for.an.easy.initialization.of.t
1ba00 68 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 0a 0a 0a 64 65 73 61 63 74 69 76 61 74 65 64 5f 69 he.focal.length...desactivated_i
1ba20 6d 61 67 65 73 20 3d 20 5b 5d 3b 0a 0a 0a 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 74 65 mages.=.[];...go_calib_optim_ite
1ba40 72 3b 0a 0a 0a 69 66 20 7e 69 73 65 6d 70 74 79 28 64 65 73 61 63 74 69 76 61 74 65 64 5f 69 6d r;...if.~isempty(desactivated_im
1ba60 61 67 65 73 29 2c 0a 20 20 20 0a 20 20 20 70 61 72 61 6d 5f 6c 69 73 74 5f 73 61 76 65 20 3d 20 ages),........param_list_save.=.
1ba80 70 61 72 61 6d 5f 6c 69 73 74 3b 0a 20 20 20 0a 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e param_list;........fprintf(1,'\n
1baa0 4e 65 77 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 20 69 New.optimization.including.the.i
1bac0 6d 61 67 65 73 20 74 68 61 74 20 68 61 76 65 20 62 65 65 6e 20 64 65 61 63 74 69 76 61 74 65 64 mages.that.have.been.deactivated
1bae0 20 64 75 72 69 6e 67 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 6f 70 74 69 6d 69 7a 61 74 69 6f .during.the.previous.optimizatio
1bb00 6e 2e 5c 6e 27 29 3b 0a 20 20 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 64 65 73 61 63 74 69 n.\n');....active_images(desacti
1bb20 76 61 74 65 64 5f 69 6d 61 67 65 73 29 20 3d 20 6f 6e 65 73 28 31 2c 6c 65 6e 67 74 68 28 64 65 vated_images).=.ones(1,length(de
1bb40 73 61 63 74 69 76 61 74 65 64 5f 69 6d 61 67 65 73 29 29 3b 0a 20 20 20 64 65 73 61 63 74 69 76 sactivated_images));....desactiv
1bb60 61 74 65 64 5f 69 6d 61 67 65 73 20 3d 20 5b 5d 3b 0a 20 20 20 0a 20 20 20 67 6f 5f 63 61 6c 69 ated_images.=.[];........go_cali
1bb80 62 5f 6f 70 74 69 6d 5f 69 74 65 72 3b 0a 20 20 20 0a 20 20 20 69 66 20 7e 69 73 65 6d 70 74 79 b_optim_iter;........if.~isempty
1bba0 28 64 65 73 61 63 74 69 76 61 74 65 64 5f 69 6d 61 67 65 73 29 2c 0a 20 20 20 20 20 20 66 70 72 (desactivated_images),.......fpr
1bbc0 69 6e 74 66 28 31 2c 5b 27 4c 69 73 74 20 6f 66 20 69 6d 61 67 65 73 20 6c 65 66 74 20 64 65 73 intf(1,['List.of.images.left.des
1bbe0 61 63 74 69 76 61 74 65 64 3a 20 27 20 6e 75 6d 32 73 74 72 28 64 65 73 61 63 74 69 76 61 74 65 activated:.'.num2str(desactivate
1bc00 64 5f 69 6d 61 67 65 73 29 20 27 5c 6e 27 20 5d 20 29 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a d_images).'\n'.].);....end;.....
1bc20 20 20 20 70 61 72 61 6d 5f 6c 69 73 74 20 3d 20 5b 70 61 72 61 6d 5f 6c 69 73 74 5f 73 61 76 65 ...param_list.=.[param_list_save
1bc40 28 3a 2c 31 3a 65 6e 64 2d 31 29 20 70 61 72 61 6d 5f 6c 69 73 74 5d 3b 0a 20 20 20 0a 65 6e 64 (:,1:end-1).param_list];.....end
1bc60 3b 0a 0a 0a 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 47 52 41 50 48 49 43 ;...%%%%%%%%%%%%%%%%%%%%.GRAPHIC
1bc80 41 4c 20 4f 55 54 50 55 54 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 AL.OUTPUT.%%%%%%%%%%%%%%%%%%%%%%
1bca0 25 25 0a 0a 25 67 72 61 70 68 6f 75 74 5f 63 61 6c 69 62 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 %%..%graphout_calib;............
1bcc0 20 20 20 20 20 20 65 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0a 20 20 20 20 20 20 ......end.............end.......
1bce0 20 20 20 20 20 20 70 74 20 3d 20 67 65 74 28 67 63 61 2c 20 27 43 75 72 72 65 6e 74 50 6f 69 6e ......pt.=.get(gca,.'CurrentPoin
1bd00 74 27 29 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 77 5f 6d 61 6e 79 20 3d 20 68 6f 77 t');..............how_many.=.how
1bd20 5f 6d 61 6e 79 20 2d 20 31 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 28 63 68 61 72 20 _many.-.1;..............if(char.
1bd40 3d 3d 20 31 33 29 20 25 20 26 20 68 6f 77 5f 6d 61 6e 79 20 7e 3d 20 30 29 0a 20 20 20 20 20 20 ==.13).%.&.how_many.~=.0).......
1bd60 20 20 20 20 20 20 20 20 20 20 25 20 69 66 20 74 68 65 20 72 65 74 75 72 6e 20 6b 65 79 20 77 61 ..........%.if.the.return.key.wa
1bd80 73 20 70 72 65 73 73 65 64 2c 20 63 68 61 72 20 77 69 6c 6c 20 3d 3d 20 31 33 2c 0a 20 20 20 20 s.pressed,.char.will.==.13,.....
1bda0 20 20 20 20 20 20 20 20 20 20 20 20 25 20 61 6e 64 20 74 68 61 74 27 73 20 6f 75 72 20 73 69 67 ............%.and.that's.our.sig
1bdc0 6e 61 6c 20 74 6f 20 62 72 65 61 6b 20 6f 75 74 20 6f 66 20 68 65 72 65 20 77 68 65 74 68 65 72 nal.to.break.out.of.here.whether
1bde0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 25 20 6f 72 20 6e 6f 74 20 77 65 20 68 61 76 .................%.or.not.we.hav
1be00 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 33 44 2e 6d TOOLBOX_calib/go_calib_optim3D.m
1be20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1be40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1be60 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
1be80 20 20 31 35 30 32 30 20 20 37 30 32 34 30 33 37 33 32 36 20 20 31 31 37 35 33 00 20 00 00 00 00 ..15020..7024037326..11753......
1bea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1bec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1bee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1bf00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1bf20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1bf40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1bf60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1bf80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1bfa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1bfc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1bfe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c000 25 20 53 69 6d 70 6c 69 66 69 65 64 20 76 65 72 73 69 6f 6e 20 6f 66 20 67 6f 5f 63 61 6c 69 62 %.Simplified.version.of.go_calib
1c020 2e 6d 0a 0a 0a 69 66 20 7e 65 78 69 73 74 28 27 78 5f 31 27 29 2c 0a 20 20 20 63 6c 69 63 6b 5f .m...if.~exist('x_1'),....click_
1c040 63 61 6c 69 62 3b 0a 65 6e 64 3b 0a 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 4d 61 69 6e 20 calib;.end;...fprintf(1,'\nMain.
1c060 63 61 6c 69 62 72 61 74 69 6f 6e 20 70 72 6f 63 65 64 75 72 65 5c 6e 27 29 3b 0a 0a 25 20 69 6e calibration.procedure\n');..%.in
1c080 69 74 69 61 6c 20 67 75 65 73 73 20 66 6f 72 20 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 itial.guess.for.principal.point.
1c0a0 61 6e 64 20 64 69 73 74 6f 72 74 69 6f 6e 3a 0a 63 5f 69 6e 69 74 20 3d 20 5b 6e 78 3b 6e 79 5d and.distortion:.c_init.=.[nx;ny]
1c0c0 2f 32 20 2d 20 30 2e 35 3b 20 25 20 69 6e 69 74 69 61 6c 69 7a 65 20 61 74 20 74 68 65 20 63 65 /2.-.0.5;.%.initialize.at.the.ce
1c0e0 6e 74 65 72 20 6f 66 20 74 68 65 20 69 6d 61 67 65 0a 6b 5f 69 6e 69 74 20 3d 20 5b 30 3b 30 3b nter.of.the.image.k_init.=.[0;0;
1c100 30 3b 30 5d 3b 20 25 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 6f 20 7a 65 72 6f 20 28 6e 6f 20 64 0;0];.%.initialize.to.zero.(no.d
1c120 69 73 74 6f 72 74 69 6f 6e 29 0a 0a 0a 25 20 43 6f 6d 70 75 74 65 20 65 78 70 6c 69 63 69 74 65 istortion)...%.Compute.explicite
1c140 6c 79 20 74 68 65 20 66 6f 63 61 6c 20 6c 65 6e 74 67 68 20 75 73 69 6e 67 20 61 6c 6c 20 74 68 ly.the.focal.lentgh.using.all.th
1c160 65 20 28 6d 75 74 75 61 6c 6c 79 20 6f 72 74 68 6f 67 6f 6e 61 6c 29 20 76 61 6e 69 73 68 69 6e e.(mutually.orthogonal).vanishin
1c180 67 20 70 6f 69 6e 74 73 0a 25 20 6e 6f 74 65 3a 20 54 68 65 20 76 61 6e 69 68 69 6e 67 20 70 6f g.points.%.note:.The.vanihing.po
1c1a0 69 6e 74 73 20 61 72 65 20 68 69 64 64 65 6e 20 69 6e 20 74 68 65 20 70 6c 61 6e 61 72 20 63 6f ints.are.hidden.in.the.planar.co
1c1c0 6c 6c 69 6e 65 61 74 69 6f 6e 73 20 48 5f 6b 6b 0a 0a 41 20 3d 20 5b 5d 3b 0a 62 20 3d 20 5b 5d llineations.H_kk..A.=.[];.b.=.[]
1c1e0 3b 0a 0a 25 20 6d 61 74 72 69 78 20 74 68 61 74 20 73 75 62 74 72 61 63 74 20 74 68 65 20 70 72 ;..%.matrix.that.subtract.the.pr
1c200 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 3a 0a 53 75 62 5f 63 63 20 3d 20 5b 31 20 30 20 2d 63 5f incipal.point:.Sub_cc.=.[1.0.-c_
1c220 69 6e 69 74 28 31 29 3b 30 20 31 20 2d 63 5f 69 6e 69 74 28 32 29 3b 30 20 30 20 31 5d 3b 0a 0a init(1);0.1.-c_init(2);0.0.1];..
1c240 0a 66 6f 72 20 6b 6b 3d 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 0a 20 20 20 25 20 6c 65 66 74 20 50 .for.kk=1:n_ima,........%.left.P
1c260 61 74 74 65 72 6e 3a 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 48 6c 6b 6b 20 3d 20 48 6c 5f attern:........eval(['Hlkk.=.Hl_
1c280 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 48 6c 6b 6b '.num2str(kk).';']);........Hlkk
1c2a0 20 3d 20 53 75 62 5f 63 63 20 2a 20 48 6c 6b 6b 3b 0a 0a 20 20 20 25 20 45 78 74 72 61 63 74 20 .=.Sub_cc.*.Hlkk;.....%.Extract.
1c2c0 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 73 20 28 64 69 72 65 63 74 20 61 6e 64 20 64 69 61 vanishing.points.(direct.and.dia
1c2e0 67 6f 6e 61 6c 73 29 3a 0a 20 20 20 0a 20 20 20 56 6c 5f 68 6f 72 69 5f 70 69 78 20 3d 20 48 6c gonals):........Vl_hori_pix.=.Hl
1c300 6b 6b 28 3a 2c 31 29 3b 0a 20 20 20 56 6c 5f 76 65 72 74 5f 70 69 78 20 3d 20 48 6c 6b 6b 28 3a kk(:,1);....Vl_vert_pix.=.Hlkk(:
1c320 2c 32 29 3b 0a 20 20 20 56 6c 5f 64 69 61 67 31 5f 70 69 78 20 3d 20 28 48 6c 6b 6b 28 3a 2c 31 ,2);....Vl_diag1_pix.=.(Hlkk(:,1
1c340 29 2b 48 6c 6b 6b 28 3a 2c 32 29 29 2f 32 3b 0a 20 20 20 56 6c 5f 64 69 61 67 32 5f 70 69 78 20 )+Hlkk(:,2))/2;....Vl_diag2_pix.
1c360 3d 20 28 48 6c 6b 6b 28 3a 2c 31 29 2d 48 6c 6b 6b 28 3a 2c 32 29 29 2f 32 3b 0a 20 20 20 0a 20 =.(Hlkk(:,1)-Hlkk(:,2))/2;......
1c380 20 20 56 6c 5f 68 6f 72 69 5f 70 69 78 20 3d 20 56 6c 5f 68 6f 72 69 5f 70 69 78 2f 6e 6f 72 6d ..Vl_hori_pix.=.Vl_hori_pix/norm
1c3a0 28 56 6c 5f 68 6f 72 69 5f 70 69 78 29 3b 0a 20 20 20 56 6c 5f 76 65 72 74 5f 70 69 78 20 3d 20 (Vl_hori_pix);....Vl_vert_pix.=.
1c3c0 56 6c 5f 76 65 72 74 5f 70 69 78 2f 6e 6f 72 6d 28 56 6c 5f 76 65 72 74 5f 70 69 78 29 3b 0a 20 Vl_vert_pix/norm(Vl_vert_pix);..
1c3e0 20 20 56 6c 5f 64 69 61 67 31 5f 70 69 78 20 3d 20 56 6c 5f 64 69 61 67 31 5f 70 69 78 2f 6e 6f ..Vl_diag1_pix.=.Vl_diag1_pix/no
1c400 72 6d 28 56 6c 5f 64 69 61 67 31 5f 70 69 78 29 3b 0a 20 20 20 56 6c 5f 64 69 61 67 32 5f 70 69 rm(Vl_diag1_pix);....Vl_diag2_pi
1c420 78 20 3d 20 56 6c 5f 64 69 61 67 32 5f 70 69 78 2f 6e 6f 72 6d 28 56 6c 5f 64 69 61 67 32 5f 70 x.=.Vl_diag2_pix/norm(Vl_diag2_p
1c440 69 78 29 3b 0a 20 20 20 0a 20 20 20 61 6c 31 20 3d 20 56 6c 5f 68 6f 72 69 5f 70 69 78 28 31 29 ix);........al1.=.Vl_hori_pix(1)
1c460 3b 0a 20 20 20 62 6c 31 20 3d 20 56 6c 5f 68 6f 72 69 5f 70 69 78 28 32 29 3b 0a 20 20 20 63 6c ;....bl1.=.Vl_hori_pix(2);....cl
1c480 31 20 3d 20 56 6c 5f 68 6f 72 69 5f 70 69 78 28 33 29 3b 0a 20 20 20 0a 20 20 20 61 6c 32 20 3d 1.=.Vl_hori_pix(3);........al2.=
1c4a0 20 56 6c 5f 76 65 72 74 5f 70 69 78 28 31 29 3b 0a 20 20 20 62 6c 32 20 3d 20 56 6c 5f 76 65 72 .Vl_vert_pix(1);....bl2.=.Vl_ver
1c4c0 74 5f 70 69 78 28 32 29 3b 0a 20 20 20 63 6c 32 20 3d 20 56 6c 5f 76 65 72 74 5f 70 69 78 28 33 t_pix(2);....cl2.=.Vl_vert_pix(3
1c4e0 29 3b 0a 20 20 20 0a 20 20 20 61 6c 33 20 3d 20 56 6c 5f 64 69 61 67 31 5f 70 69 78 28 31 29 3b );........al3.=.Vl_diag1_pix(1);
1c500 0a 20 20 20 62 6c 33 20 3d 20 56 6c 5f 64 69 61 67 31 5f 70 69 78 28 32 29 3b 0a 20 20 20 63 6c ....bl3.=.Vl_diag1_pix(2);....cl
1c520 33 20 3d 20 56 6c 5f 64 69 61 67 31 5f 70 69 78 28 33 29 3b 0a 20 20 20 0a 20 20 20 61 6c 34 20 3.=.Vl_diag1_pix(3);........al4.
1c540 3d 20 56 6c 5f 64 69 61 67 32 5f 70 69 78 28 31 29 3b 0a 20 20 20 62 6c 34 20 3d 20 56 6c 5f 64 =.Vl_diag2_pix(1);....bl4.=.Vl_d
1c560 69 61 67 32 5f 70 69 78 28 32 29 3b 0a 20 20 20 63 6c 34 20 3d 20 56 6c 5f 64 69 61 67 32 5f 70 iag2_pix(2);....cl4.=.Vl_diag2_p
1c580 69 78 28 33 29 3b 0a 20 20 20 0a 20 20 20 25 20 72 69 67 68 74 20 50 61 74 74 65 72 6e 3a 0a 20 ix(3);........%.right.Pattern:..
1c5a0 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 48 72 6b 6b 20 3d 20 48 72 5f 27 20 6e 75 6d 32 73 74 72 ......eval(['Hrkk.=.Hr_'.num2str
1c5c0 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 48 72 6b 6b 20 3d 20 53 75 62 5f 63 63 (kk).';']);........Hrkk.=.Sub_cc
1c5e0 20 2a 20 48 72 6b 6b 3b 0a 0a 20 20 20 25 20 45 78 74 72 61 63 74 20 76 61 6e 69 73 68 69 6e 67 .*.Hrkk;.....%.Extract.vanishing
1c600 20 70 6f 69 6e 74 73 20 28 64 69 72 65 63 74 20 61 6e 64 20 64 69 61 67 6f 6e 61 6c 73 29 3a 0a .points.(direct.and.diagonals):.
1c620 20 20 20 0a 20 20 20 56 72 5f 68 6f 72 69 5f 70 69 78 20 3d 20 48 72 6b 6b 28 3a 2c 31 29 3b 0a .......Vr_hori_pix.=.Hrkk(:,1);.
1c640 20 20 20 56 72 5f 76 65 72 74 5f 70 69 78 20 3d 20 48 72 6b 6b 28 3a 2c 32 29 3b 0a 20 20 20 56 ...Vr_vert_pix.=.Hrkk(:,2);....V
1c660 72 5f 64 69 61 67 31 5f 70 69 78 20 3d 20 28 48 72 6b 6b 28 3a 2c 31 29 2b 48 72 6b 6b 28 3a 2c r_diag1_pix.=.(Hrkk(:,1)+Hrkk(:,
1c680 32 29 29 2f 32 3b 0a 20 20 20 56 72 5f 64 69 61 67 32 5f 70 69 78 20 3d 20 28 48 72 6b 6b 28 3a 2))/2;....Vr_diag2_pix.=.(Hrkk(:
1c6a0 2c 31 29 2d 48 72 6b 6b 28 3a 2c 32 29 29 2f 32 3b 0a 20 20 20 0a 20 20 20 56 72 5f 68 6f 72 69 ,1)-Hrkk(:,2))/2;........Vr_hori
1c6c0 5f 70 69 78 20 3d 20 56 72 5f 68 6f 72 69 5f 70 69 78 2f 6e 6f 72 6d 28 56 6c 5f 68 6f 72 69 5f _pix.=.Vr_hori_pix/norm(Vl_hori_
1c6e0 70 69 78 29 3b 0a 20 20 20 56 72 5f 76 65 72 74 5f 70 69 78 20 3d 20 56 72 5f 76 65 72 74 5f 70 pix);....Vr_vert_pix.=.Vr_vert_p
1c700 69 78 2f 6e 6f 72 6d 28 56 6c 5f 76 65 72 74 5f 70 69 78 29 3b 0a 20 20 20 56 72 5f 64 69 61 67 ix/norm(Vl_vert_pix);....Vr_diag
1c720 31 5f 70 69 78 20 3d 20 56 72 5f 64 69 61 67 31 5f 70 69 78 2f 6e 6f 72 6d 28 56 72 5f 64 69 61 1_pix.=.Vr_diag1_pix/norm(Vr_dia
1c740 67 31 5f 70 69 78 29 3b 0a 20 20 20 56 72 5f 64 69 61 67 32 5f 70 69 78 20 3d 20 56 72 5f 64 69 g1_pix);....Vr_diag2_pix.=.Vr_di
1c760 61 67 32 5f 70 69 78 2f 6e 6f 72 6d 28 56 72 5f 64 69 61 67 32 5f 70 69 78 29 3b 0a 20 20 20 0a ag2_pix/norm(Vr_diag2_pix);.....
1c780 20 20 20 61 72 31 20 3d 20 56 72 5f 68 6f 72 69 5f 70 69 78 28 31 29 3b 0a 20 20 20 62 72 31 20 ...ar1.=.Vr_hori_pix(1);....br1.
1c7a0 3d 20 56 72 5f 68 6f 72 69 5f 70 69 78 28 32 29 3b 0a 20 20 20 63 72 31 20 3d 20 56 72 5f 68 6f =.Vr_hori_pix(2);....cr1.=.Vr_ho
1c7c0 72 69 5f 70 69 78 28 33 29 3b 0a 20 20 20 0a 20 20 20 61 72 32 20 3d 20 56 72 5f 76 65 72 74 5f ri_pix(3);........ar2.=.Vr_vert_
1c7e0 70 69 78 28 31 29 3b 0a 20 20 20 62 72 32 20 3d 20 56 72 5f 76 65 72 74 5f 70 69 78 28 32 29 3b pix(1);....br2.=.Vr_vert_pix(2);
1c800 0a 20 20 20 63 72 32 20 3d 20 56 72 5f 76 65 72 74 5f 70 69 78 28 33 29 3b 0a 20 20 20 0a 20 20 ....cr2.=.Vr_vert_pix(3);.......
1c820 20 61 72 33 20 3d 20 56 72 5f 64 69 61 67 31 5f 70 69 78 28 31 29 3b 0a 20 20 20 62 72 33 20 3d .ar3.=.Vr_diag1_pix(1);....br3.=
1c840 20 56 72 5f 64 69 61 67 31 5f 70 69 78 28 32 29 3b 0a 20 20 20 63 72 33 20 3d 20 56 72 5f 64 69 .Vr_diag1_pix(2);....cr3.=.Vr_di
1c860 61 67 31 5f 70 69 78 28 33 29 3b 0a 20 20 20 0a 20 20 20 61 72 34 20 3d 20 56 72 5f 64 69 61 67 ag1_pix(3);........ar4.=.Vr_diag
1c880 32 5f 70 69 78 28 31 29 3b 0a 20 20 20 62 72 34 20 3d 20 56 72 5f 64 69 61 67 32 5f 70 69 78 28 2_pix(1);....br4.=.Vr_diag2_pix(
1c8a0 32 29 3b 0a 20 20 20 63 72 34 20 3d 20 56 72 5f 64 69 61 67 32 5f 70 69 78 28 33 29 3b 0a 20 20 2);....cr4.=.Vr_diag2_pix(3);...
1c8c0 20 0a 20 20 20 0a 20 20 20 25 20 43 6f 6c 6c 65 63 74 20 61 6c 6c 20 74 68 65 20 63 6f 6e 73 74 .........%.Collect.all.the.const
1c8e0 72 61 69 6e 74 73 3a 0a 20 20 20 0a 20 20 20 41 5f 6b 6b 20 3d 20 5b 61 6c 31 2a 61 6c 32 20 20 raints:........A_kk.=.[al1*al2..
1c900 62 6c 31 2a 62 6c 32 3b 0a 20 20 20 20 20 20 61 6c 33 2a 61 6c 34 20 20 62 6c 33 2a 62 6c 34 3b bl1*bl2;.......al3*al4..bl3*bl4;
1c920 0a 20 20 20 20 20 20 61 72 31 2a 61 72 32 20 20 62 72 31 2a 62 72 32 3b 0a 20 20 20 20 20 20 61 .......ar1*ar2..br1*br2;.......a
1c940 72 33 2a 61 72 34 20 20 62 72 33 2a 62 72 34 3b 0a 20 20 20 20 20 20 61 6c 31 2a 61 72 31 20 20 r3*ar4..br3*br4;.......al1*ar1..
1c960 62 6c 31 2a 62 72 31 5d 3b 0a 20 20 20 0a 20 20 20 62 5f 6b 6b 20 3d 20 2d 5b 63 6c 31 2a 63 6c bl1*br1];........b_kk.=.-[cl1*cl
1c980 32 3b 63 6c 33 2a 63 6c 34 3b 63 72 31 2a 63 72 32 3b 63 72 33 2a 63 72 34 3b 63 6c 31 2a 63 72 2;cl3*cl4;cr1*cr2;cr3*cr4;cl1*cr
1c9a0 31 5d 3b 0a 20 20 20 0a 0a 20 20 20 41 20 3d 20 5b 41 3b 41 5f 6b 6b 5d 3b 0a 20 20 20 62 20 3d 1];.........A.=.[A;A_kk];....b.=
1c9c0 20 5b 62 3b 62 5f 6b 6b 5d 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 25 20 75 73 65 20 61 6c 6c 20 74 .[b;b_kk];.....end;..%.use.all.t
1c9e0 68 65 20 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 73 20 74 6f 20 65 73 74 69 6d 61 74 65 20 he.vanishing.points.to.estimate.
1ca00 66 6f 63 61 6c 20 6c 65 6e 67 74 68 3a 0a 0a 66 5f 69 6e 69 74 20 3d 20 73 71 72 74 28 61 62 73 focal.length:..f_init.=.sqrt(abs
1ca20 28 31 2e 2f 28 69 6e 76 28 41 27 2a 41 29 2a 41 27 2a 62 29 29 29 3b 20 25 20 69 66 20 75 73 69 (1./(inv(A'*A)*A'*b)));.%.if.usi
1ca40 6e 67 20 61 20 74 77 6f 2d 66 6f 63 61 6c 20 6d 6f 64 65 6c 20 66 6f 72 20 69 6e 69 74 69 61 6c ng.a.two-focal.model.for.initial
1ca60 20 67 75 65 73 73 0a 0a 25 66 5f 69 6e 69 74 20 3d 20 73 71 72 74 28 62 27 2a 28 73 75 6d 28 41 .guess..%f_init.=.sqrt(b'*(sum(A
1ca80 27 29 27 29 20 2f 20 28 62 27 2a 62 29 29 20 2a 20 6f 6e 65 73 28 32 2c 31 29 3b 20 25 20 69 66 ')')./.(b'*b)).*.ones(2,1);.%.if
1caa0 20 73 69 6e 67 6c 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 20 6d 6f 64 65 6c 20 69 73 20 75 73 .single.focal.length.model.is.us
1cac0 65 64 0a 0a 0a 25 20 47 6c 6f 62 61 6c 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 6d 61 74 72 69 78 ed...%.Global.calibration.matrix
1cae0 20 28 69 6e 69 74 69 61 6c 20 67 75 65 73 73 29 3a 0a 20 20 20 09 0a 4b 4b 20 3d 20 5b 66 5f 69 .(initial.guess):......KK.=.[f_i
1cb00 6e 69 74 28 31 29 20 30 20 63 5f 69 6e 69 74 28 31 29 3b 30 20 66 5f 69 6e 69 74 28 32 29 20 63 nit(1).0.c_init(1);0.f_init(2).c
1cb20 5f 69 6e 69 74 28 32 29 3b 20 30 20 30 20 31 5d 3b 0a 69 6e 76 5f 4b 4b 20 3d 20 69 6e 76 28 4b _init(2);.0.0.1];.inv_KK.=.inv(K
1cb40 4b 29 3b 0a 0a 09 0a 25 20 43 6f 6d 70 75 74 69 6e 67 20 6f 66 20 74 68 65 20 65 78 74 72 69 6e K);....%.Computing.of.the.extrin
1cb60 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 28 66 72 6f 6d 20 74 68 65 20 63 6f 6c 6c 69 6e 65 sic.parameters.(from.the.colline
1cb80 61 74 69 6f 6e 73 29 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 0a 20 ations)..for.kk.=.1:n_ima,......
1cba0 20 20 65 76 61 6c 28 5b 27 48 6c 6b 6b 20 3d 20 48 6c 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 ..eval(['Hlkk.=.Hl_'.num2str(kk)
1cbc0 20 27 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 48 6c 32 20 3d 20 69 6e 76 5f 4b 4b 2a 48 6c 6b 6b .';']);........Hl2.=.inv_KK*Hlkk
1cbe0 3b 0a 20 20 20 20 20 20 0a 20 20 20 73 63 20 3d 20 6d 65 61 6e 28 5b 6e 6f 72 6d 28 48 6c 32 28 ;...........sc.=.mean([norm(Hl2(
1cc00 3a 2c 31 29 29 3b 6e 6f 72 6d 28 48 6c 32 28 3a 2c 32 29 29 5d 29 3b 0a 20 20 20 0a 20 09 48 6c :,1));norm(Hl2(:,2))]);.......Hl
1cc20 32 20 3d 20 48 6c 32 2f 73 63 3b 0a 20 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 48 72 6b 6b 20 2.=.Hl2/sc;.........eval(['Hrkk.
1cc40 3d 20 48 72 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 =.Hr_'.num2str(kk).';']);.......
1cc60 20 48 72 32 20 3d 20 69 6e 76 5f 4b 4b 2a 48 72 6b 6b 3b 0a 20 20 20 20 20 20 0a 20 20 20 73 63 .Hr2.=.inv_KK*Hrkk;...........sc
1cc80 20 3d 20 6d 65 61 6e 28 5b 6e 6f 72 6d 28 48 72 32 28 3a 2c 31 29 29 3b 6e 6f 72 6d 28 48 72 32 .=.mean([norm(Hr2(:,1));norm(Hr2
1cca0 28 3a 2c 32 29 29 5d 29 3b 0a 20 20 20 0a 20 20 20 48 72 32 20 3d 20 48 72 32 2f 73 63 3b 0a 20 (:,2))]);........Hr2.=.Hr2/sc;..
1ccc0 20 20 0a 20 20 20 6f 6d 63 6c 20 3d 20 72 6f 64 72 69 67 75 65 73 28 5b 48 6c 32 28 3a 2c 31 3a ......omcl.=.rodrigues([Hl2(:,1:
1cce0 32 29 20 63 72 6f 73 73 28 48 6c 32 28 3a 2c 31 29 2c 48 6c 32 28 3a 2c 32 29 29 5d 29 3b 0a 20 2).cross(Hl2(:,1),Hl2(:,2))]);..
1cd00 20 20 54 63 6c 20 3d 20 48 6c 32 28 3a 2c 33 29 3b 0a 20 20 20 0a 20 20 20 25 6f 6d 63 72 20 3d ..Tcl.=.Hl2(:,3);........%omcr.=
1cd20 20 72 6f 64 72 69 67 75 65 73 28 5b 48 72 32 28 3a 2c 31 3a 32 29 20 63 72 6f 73 73 28 48 72 32 .rodrigues([Hr2(:,1:2).cross(Hr2
1cd40 28 3a 2c 31 29 2c 48 72 32 28 3a 2c 32 29 29 5d 29 3b 0a 20 20 20 25 54 63 72 20 3d 20 48 72 32 (:,1),Hr2(:,2))]);....%Tcr.=.Hr2
1cd60 28 3a 2c 33 29 3b 0a 20 20 20 0a 20 20 20 0a 20 20 09 6f 6d 63 6b 6b 20 3d 20 6f 6d 63 6c 3b 20 (:,3);............omckk.=.omcl;.
1cd80 25 72 6f 64 72 69 67 75 65 73 28 5b 48 32 28 3a 2c 31 3a 32 29 20 63 72 6f 73 73 28 48 32 28 3a %rodrigues([H2(:,1:2).cross(H2(:
1cda0 2c 31 29 2c 48 32 28 3a 2c 32 29 29 5d 29 3b 0a 20 20 09 54 63 6b 6b 20 3d 20 54 63 6c 3b 20 25 ,1),H2(:,2))]);....Tckk.=.Tcl;.%
1cdc0 48 32 28 3a 2c 33 29 3b 0a 20 20 20 0a 20 20 09 65 76 61 6c 28 5b 27 6f 6d 63 5f 27 20 6e 75 6d H2(:,3);........eval(['omc_'.num
1cde0 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 6f 6d 63 6b 6b 3b 27 5d 29 3b 0a 20 20 09 65 76 61 6c 28 2str(kk).'.=.omckk;']);....eval(
1ce00 5b 27 54 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 54 63 6b 6b 3b 27 5d 29 3b ['Tc_'.num2str(kk).'.=.Tckk;']);
1ce20 0a 20 20 20 09 0a 65 6e 64 3b 0a 0a 0a 20 20 20 20 20 20 0a 25 20 49 6e 69 74 69 61 6c 69 73 61 ......end;..........%.Initialisa
1ce40 74 69 6f 6e 20 6f 66 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 20 66 6f 72 20 67 6c 6f 62 61 tion.of.the.parameters.for.globa
1ce60 6c 20 6d 69 6e 69 6d 69 7a 61 74 69 6f 6e 3a 0a 0a 69 6e 69 74 5f 70 61 72 61 6d 20 3d 20 5b 66 l.minimization:..init_param.=.[f
1ce80 5f 69 6e 69 74 3b 6b 5f 69 6e 69 74 5d 3b 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 _init;k_init];..for.kk.=.1:n_ima
1cea0 2c 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 69 6e 69 74 5f 70 61 72 61 6d 20 3d 20 5b 69 6e 69 ,.......eval(['init_param.=.[ini
1cec0 74 5f 70 61 72 61 6d 3b 20 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 20 54 63 t_param;.omc_'.num2str(kk).';.Tc
1cee0 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 5d 3b 27 5d 29 3b 0a 65 6e 64 3b 0a 0a 69 66 20 _'.num2str(kk).'];']);.end;..if.
1cf00 7e 65 78 69 73 74 28 27 6c 73 71 6e 6f 6e 6c 69 6e 27 29 2c 0a 0a 09 6f 70 74 69 6f 6e 73 20 3d ~exist('lsqnonlin'),...options.=
1cf20 20 5b 31 20 31 65 2d 34 20 31 65 2d 34 20 31 65 2d 36 20 20 30 20 30 20 30 20 30 20 30 20 30 20 .[1.1e-4.1e-4.1e-6..0.0.0.0.0.0.
1cf40 30 20 30 20 30 20 36 30 30 30 20 30 20 31 65 2d 38 20 30 2e 31 20 30 5d 3b 0a 0a 09 69 66 20 65 0.0.0.6000.0.1e-8.0.1.0];...if.e
1cf60 78 69 73 74 28 27 6c 65 61 73 74 73 71 27 29 2c 0a 20 20 20 09 73 73 73 20 3d 20 5b 27 5b 70 61 xist('leastsq'),.....sss.=.['[pa
1cf80 72 61 6d 2c 6f 70 74 5d 20 3d 20 6c 65 61 73 74 73 71 28 27 27 6d 75 6c 74 69 5f 65 72 72 6f 72 ram,opt].=.leastsq(''multi_error
1cfa0 5f 6f 75 6c 75 27 27 2c 69 6e 69 74 5f 70 61 72 61 6d 2c 6f 70 74 69 6f 6e 73 2c 5b 5d 2c 6e 5f _oulu'',init_param,options,[],n_
1cfc0 69 6d 61 2c 63 5f 69 6e 69 74 29 3b 27 5d 3b 0a 09 65 6c 73 65 0a 20 20 20 09 73 73 73 20 3d 20 ima,c_init);'];..else.....sss.=.
1cfe0 5b 27 5b 70 61 72 61 6d 2c 6f 70 74 5d 20 3d 20 6c 65 61 73 74 73 71 32 28 27 27 6d 75 6c 74 69 ['[param,opt].=.leastsq2(''multi
1d000 5f 65 72 72 6f 72 5f 6f 75 6c 75 27 27 2c 69 6e 69 74 5f 70 61 72 61 6d 2c 6f 70 74 69 6f 6e 73 _error_oulu'',init_param,options
1d020 2c 5b 5d 2c 6e 5f 69 6d 61 2c 63 5f 69 6e 69 74 29 3b 27 5d 3b 0a 09 65 6e 64 3b 0a 0a 65 6c 73 ,[],n_ima,c_init);'];..end;..els
1d040 65 0a 20 20 20 0a 20 20 20 6f 70 74 69 6f 6e 73 20 3d 20 6f 70 74 69 6d 73 65 74 28 27 6c 73 71 e........options.=.optimset('lsq
1d060 6e 6f 6e 6c 69 6e 27 29 3b 0a 20 20 20 6f 70 74 69 6f 6e 73 2e 4d 61 78 49 74 65 72 20 20 3d 20 nonlin');....options.MaxIter..=.
1d080 36 30 30 30 3b 0a 20 20 20 6f 70 74 69 6f 6e 73 2e 44 69 73 70 6c 61 79 20 3d 20 27 69 74 65 72 6000;....options.Display.=.'iter
1d0a0 27 3b 0a 20 20 09 73 73 73 20 3d 20 5b 27 5b 70 61 72 61 6d 2c 6f 70 74 5d 20 3d 20 6c 73 71 6e ';....sss.=.['[param,opt].=.lsqn
1d0c0 6f 6e 6c 69 6e 28 27 27 6d 75 6c 74 69 5f 65 72 72 6f 72 5f 6f 75 6c 75 27 27 2c 69 6e 69 74 5f onlin(''multi_error_oulu'',init_
1d0e0 70 61 72 61 6d 2c 5b 5d 2c 5b 5d 2c 6f 70 74 69 6f 6e 73 2c 6e 5f 69 6d 61 2c 63 5f 69 6e 69 74 param,[],[],options,n_ima,c_init
1d100 29 3b 27 5d 3b 0a 0a 65 6e 64 3b 0a 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 4f 70 74 69 6d );'];..end;...fprintf(1,'\nOptim
1d120 69 7a 61 74 69 6f 6e 20 6e 6f 74 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 20 70 72 69 6e 63 69 ization.not.including.the.princi
1d140 70 61 6c 20 70 6f 69 6e 74 2e 2e 2e 5c 6e 27 29 0a 65 76 61 6c 28 73 73 73 29 3b 0a 0a 68 69 73 pal.point...\n').eval(sss);..his
1d160 74 6f 72 79 20 20 3d 20 5b 5b 69 6e 69 74 5f 70 61 72 61 6d 3b 63 5f 69 6e 69 74 5d 20 5b 70 61 tory..=.[[init_param;c_init].[pa
1d180 72 61 6d 3b 63 5f 69 6e 69 74 5d 5d 3b 0a 0a 73 6f 6c 5f 6e 6f 5f 63 65 6e 74 65 72 20 3d 20 5b ram;c_init]];..sol_no_center.=.[
1d1a0 70 61 72 61 6d 3b 63 5f 69 6e 69 74 5d 3b 0a 0a 69 6e 69 74 5f 70 61 72 61 6d 20 3d 20 73 6f 6c param;c_init];..init_param.=.sol
1d1c0 5f 6e 6f 5f 63 65 6e 74 65 72 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 4f 70 74 69 6d 69 _no_center;..fprintf(1,'\nOptimi
1d1e0 7a 61 74 69 6f 6e 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 20 70 72 69 6e 63 69 70 61 6c 20 70 zation.including.the.principal.p
1d200 6f 69 6e 74 2e 2e 2e 5c 6e 27 29 0a 0a 65 76 61 6c 28 73 73 73 29 3b 0a 0a 68 69 73 74 6f 72 79 oint...\n')..eval(sss);..history
1d220 20 3d 20 5b 68 69 73 74 6f 72 79 20 70 61 72 61 6d 5d 3b 0a 0a 0a 73 6f 6c 5f 77 69 74 68 5f 63 .=.[history.param];...sol_with_c
1d240 65 6e 74 65 72 20 3d 20 70 61 72 61 6d 3b 0a 0a 0a 0a 0a 25 25 25 20 45 78 74 72 61 63 74 69 6f enter.=.param;.....%%%.Extractio
1d260 6e 20 6f 66 20 74 68 65 20 66 69 6e 61 6c 20 69 6e 74 72 69 6e 73 69 63 20 61 6e 64 20 65 78 74 n.of.the.final.intrinsic.and.ext
1d280 72 69 6e 73 69 63 20 70 61 72 61 6d 61 74 65 72 73 20 28 69 6e 20 74 68 65 20 6e 6f 2d 63 65 6e rinsic.paramaters.(in.the.no-cen
1d2a0 74 65 72 20 63 61 73 65 29 3a 0a 0a 73 6f 6c 75 74 69 6f 6e 20 3d 20 73 6f 6c 5f 6e 6f 5f 63 65 ter.case):..solution.=.sol_no_ce
1d2c0 6e 74 65 72 3b 0a 65 78 74 72 61 63 74 5f 70 61 72 61 6d 65 74 65 72 73 33 44 3b 0a 0a 66 70 72 nter;.extract_parameters3D;..fpr
1d2e0 69 6e 74 66 28 31 2c 27 5c 6e 5c 6e 43 61 6c 69 62 72 61 74 69 6f 6e 20 72 65 73 75 6c 74 73 20 intf(1,'\n\nCalibration.results.
1d300 77 69 74 68 6f 75 74 20 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 65 73 74 69 6d 61 74 69 without.principal.point.estimati
1d320 6f 6e 3a 5c 6e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 46 6f 63 61 6c 20 4c 65 6e 67 on:\n\n');.fprintf(1,'Focal.Leng
1d340 74 68 3a 20 20 20 20 20 66 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 th:.....fc.=.[.%3.5f...%3.5f]\n'
1d360 2c 66 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 50 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 ,fc);.fprintf(1,'Principal.point
1d380 3a 20 20 63 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 63 63 29 3b :..cc.=.[.%3.5f...%3.5f]\n',cc);
1d3a0 0a 66 70 72 69 6e 74 66 28 31 2c 27 44 69 73 74 6f 72 74 69 6f 6e 3a 20 20 20 20 20 20 20 6b 63 .fprintf(1,'Distortion:.......kc
1d3c0 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 20 20 20 25 33 2e .=.[.%3.5f...%3.5f...%3.5f...%3.
1d3e0 35 66 5d 5c 6e 27 2c 6b 63 29 3b 20 20 20 0a 66 70 72 69 6e 74 66 28 31 2c 5b 27 50 69 78 65 6c 5f]\n',kc);....fprintf(1,['Pixel
1d400 20 65 72 72 6f 72 3a 20 20 20 20 20 20 5b 63 6c 69 63 6b 20 6f 6e 20 27 27 73 6f 6c 2e 20 77 69 .error:......[click.on.''sol..wi
1d420 74 68 6f 75 74 20 63 65 6e 74 65 72 27 27 5d 5c 6e 27 5d 29 3b 20 0a 0a 0a 0a 0a 25 20 50 69 63 thout.center'']\n']);......%.Pic
1d440 6b 20 74 68 65 20 73 6f 6c 75 74 69 6f 6e 20 77 69 74 68 20 70 72 69 6e 63 69 70 61 6c 20 70 6f k.the.solution.with.principal.po
1d460 69 6e 74 0a 25 25 25 20 4e 4f 54 45 3a 20 41 74 20 74 68 61 74 20 70 6f 69 6e 74 2c 20 74 68 65 int.%%%.NOTE:.At.that.point,.the
1d480 20 75 73 65 72 20 63 61 6e 20 63 68 6f 6f 73 65 20 77 68 69 63 68 20 73 6f 6c 75 74 69 6f 6e 20 .user.can.choose.which.solution.
1d4a0 74 6f 20 70 69 63 6b 3a 20 77 69 74 68 20 6f 72 20 77 69 74 68 6f 75 74 0a 25 25 25 20 70 72 69 to.pick:.with.or.without.%%%.pri
1d4c0 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 65 73 74 69 6d 61 74 69 6f 6e 2e 20 42 79 20 64 65 66 61 ncipal.point.estimation..By.defa
1d4e0 75 6c 74 2c 20 77 65 20 70 69 63 6b 20 74 68 65 20 73 6f 6c 75 74 69 6f 6e 20 77 69 74 68 20 70 ult,.we.pick.the.solution.with.p
1d500 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 2e 0a 0a 73 6f 6c 75 74 69 6f 6e 20 3d 20 73 6f 6c 5f rincipal.point...solution.=.sol_
1d520 77 69 74 68 5f 63 65 6e 74 65 72 3b 0a 0a 0a 0a 25 25 25 20 45 78 74 72 61 63 74 69 6f 6e 20 6f with_center;....%%%.Extraction.o
1d540 66 20 74 68 65 20 66 69 6e 61 6c 20 69 6e 74 72 69 6e 73 69 63 20 61 6e 64 20 65 78 74 72 69 6e f.the.final.intrinsic.and.extrin
1d560 73 69 63 20 70 61 72 61 6d 61 74 65 72 73 3a 0a 0a 65 78 74 72 61 63 74 5f 70 61 72 61 6d 65 74 sic.paramaters:..extract_paramet
1d580 65 72 73 33 44 3b 0a 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 5c 6e 43 61 6c 69 62 72 61 74 ers3D;...fprintf(1,'\n\nCalibrat
1d5a0 69 6f 6e 20 72 65 73 75 6c 74 73 20 77 69 74 68 20 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 ion.results.with.principal.point
1d5c0 20 65 73 74 69 6d 61 74 69 6f 6e 3a 5c 6e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 46 .estimation:\n\n');.fprintf(1,'F
1d5e0 6f 63 61 6c 20 4c 65 6e 67 74 68 3a 20 20 20 20 20 66 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 ocal.Length:.....fc.=.[.%3.5f...
1d600 25 33 2e 35 66 5d 5c 6e 27 2c 66 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 50 72 69 6e 63 69 %3.5f]\n',fc);.fprintf(1,'Princi
1d620 70 61 6c 20 70 6f 69 6e 74 3a 20 20 63 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 pal.point:..cc.=.[.%3.5f...%3.5f
1d640 5d 5c 6e 27 2c 63 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 44 69 73 74 6f 72 74 69 6f 6e 3a ]\n',cc);.fprintf(1,'Distortion:
1d660 20 20 20 20 20 20 20 6b 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 20 20 20 25 33 .......kc.=.[.%3.5f...%3.5f...%3
1d680 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 6b 63 29 3b 20 20 20 0a 0a 0a 25 25 25 25 25 25 .5f...%3.5f]\n',kc);......%%%%%%
1d6a0 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 47 52 41 50 48 49 43 41 4c 20 4f 55 54 50 55 54 20 %%%%%%%%%%%%%%.GRAPHICAL.OUTPUT.
1d6c0 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 0a 0a 67 72 61 70 68 6f %%%%%%%%%%%%%%%%%%%%%%%%..grapho
1d6e0 75 74 5f 63 61 6c 69 62 33 44 3b 0a 0a 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 4e 6f 74 65 3a 20 ut_calib3D;....fprintf(1,'Note:.
1d700 49 66 20 74 68 65 20 73 6f 6c 75 74 69 6f 6e 20 69 73 20 6e 6f 74 20 73 61 74 69 73 66 61 63 74 If.the.solution.is.not.satisfact
1d720 6f 72 79 2c 20 73 65 6c 65 63 74 20 73 6f 6c 75 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 63 65 6e ory,.select.solution.without.cen
1d740 74 65 72 20 65 73 74 69 6d 61 74 69 6f 6e 2e 5c 6e 5c 6e 27 29 3b 0a 0a 0a 25 25 25 25 25 25 25 ter.estimation.\n\n');...%%%%%%%
1d760 25 25 25 25 25 25 25 20 53 61 76 65 20 61 6c 6c 20 74 68 65 20 43 61 6c 69 62 72 61 74 69 6f 6e %%%%%%%.Save.all.the.Calibration
1d780 20 72 65 73 75 6c 74 73 3a 0a 0a 64 69 73 70 28 27 53 61 76 65 20 63 61 6c 69 62 72 61 74 69 6f .results:..disp('Save.calibratio
1d7a0 6e 20 72 65 73 75 6c 74 73 20 75 6e 64 65 72 20 43 61 6c 69 62 5f 52 65 73 75 6c 74 73 2e 6d 61 n.results.under.Calib_Results.ma
1d7c0 74 27 29 3b 0a 0a 73 74 72 69 6e 67 5f 73 61 76 65 20 3d 20 27 73 61 76 65 20 43 61 6c 69 62 5f t');..string_save.=.'save.Calib_
1d7e0 52 65 73 75 6c 74 73 20 66 63 20 6b 63 20 63 63 20 65 78 20 78 20 79 20 73 6f 6c 75 74 69 6f 6e Results.fc.kc.cc.ex.x.y.solution
1d800 20 73 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 65 72 20 73 6f 6c 5f 6e 6f 5f 63 65 6e 74 65 72 20 68 .sol_with_center.sol_no_center.h
1d820 69 73 74 6f 72 79 20 77 69 6e 74 78 20 77 69 6e 74 79 20 6e 5f 69 6d 61 20 74 79 70 65 5f 6e 75 istory.wintx.winty.n_ima.type_nu
1d840 6d 62 65 72 69 6e 67 20 4e 5f 73 6c 6f 74 73 20 73 6d 61 6c 6c 5f 63 61 6c 69 62 5f 69 6d 61 67 mbering.N_slots.small_calib_imag
1d860 65 20 66 69 72 73 74 5f 6e 75 6d 20 69 6d 61 67 65 5f 6e 75 6d 62 65 72 73 20 66 6f 72 6d 61 74 e.first_num.image_numbers.format
1d880 5f 69 6d 61 67 65 20 63 61 6c 69 62 5f 6e 61 6d 65 20 48 63 61 6c 20 57 63 61 6c 20 6e 78 20 6e _image.calib_name.Hcal.Wcal.nx.n
1d8a0 79 20 6d 61 70 20 64 58 5f 64 65 66 61 75 6c 74 20 64 59 5f 64 65 66 61 75 6c 74 20 4b 4b 20 69 y.map.dX_default.dY_default.KK.i
1d8c0 6e 76 5f 4b 4b 20 64 58 20 64 59 27 3b 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c nv_KK.dX.dY';..for.kk.=.1:n_ima,
1d8e0 0a 20 20 20 73 74 72 69 6e 67 5f 73 61 76 65 20 3d 20 5b 73 74 72 69 6e 67 5f 73 61 76 65 20 27 ....string_save.=.[string_save.'
1d900 20 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b .X_'.num2str(kk).'.x_'.num2str(k
1d920 6b 29 20 27 20 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 65 78 5f 27 20 6e 75 6d 32 k).'.y_'.num2str(kk).'.ex_'.num2
1d940 73 74 72 28 6b 6b 29 20 27 20 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 54 63 str(kk).'.omc_'.num2str(kk).'.Tc
1d960 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 48 6c 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b _'.num2str(kk).'.Hl_'.num2str(kk
1d980 29 20 27 20 6e 6c 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 6e 6c 5f 73 ).'.nl_sq_x_'.num2str(kk).'.nl_s
1d9a0 71 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 48 72 5f 27 20 6e 75 6d 32 73 74 72 q_y_'.num2str(kk).'.Hr_'.num2str
1d9c0 28 6b 6b 29 20 27 20 6e 72 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 6e (kk).'.nr_sq_x_'.num2str(kk).'.n
1d9e0 72 5f 73 71 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 5d 3b 0a 65 6e 64 3b 0a 0a 65 76 61 r_sq_y_'.num2str(kk)];.end;..eva
1da00 6c 28 73 74 72 69 6e 67 5f 73 61 76 65 29 3b 0a 49 53 49 54 49 4f 4e 20 25 25 25 25 25 25 25 25 l(string_save);.ISITION.%%%%%%%%
1da20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 0a 20 20 20 0a 20 20 0a 20 20 20 %%%%%%%%%%%%%%%%%%%%%...........
1da40 78 31 20 3d 20 61 31 30 28 31 29 2f 61 31 30 28 33 29 3b 0a 20 20 20 78 34 20 3d 20 61 31 31 28 x1.=.a10(1)/a10(3);....x4.=.a11(
1da60 31 29 2f 61 31 31 28 33 29 3b 0a 20 20 20 0a 20 20 20 79 31 20 3d 20 61 31 30 28 32 29 2f 61 31 1)/a11(3);........y1.=.a10(2)/a1
1da80 30 28 33 29 3b 0a 20 20 20 79 34 20 3d 20 61 31 31 28 32 29 2f 61 31 31 28 33 29 3b 0a 20 20 20 0(3);....y4.=.a11(2)/a11(3);....
1daa0 0a 0a 20 20 66 69 67 75 72 65 28 32 29 3b 0a 20 20 68 6f 6c 64 20 6f 6e 3b 0a 20 20 70 6c 6f 74 ....figure(2);...hold.on;...plot
1dac0 28 5b 78 31 20 78 34 5d 2c 5b 79 31 20 79 34 5d 2c 27 63 2d 27 29 3b 0a 20 20 70 6c 6f 74 28 5b ([x1.x4],[y1.y4],'c-');...plot([
1dae0 78 31 20 78 34 5d 2c 5b 79 31 20 79 34 5d 2c 27 63 6f 27 29 3b 0a 20 20 68 6f 6c 64 20 6f 66 66 x1.x4],[y1.y4],'co');...hold.off
1db00 3b 0a 0a 20 20 20 74 69 74 6c 65 28 5b 27 43 6c 69 63 6b 20 6f 6e 20 74 68 65 20 74 77 6f 20 72 ;.....title(['Click.on.the.two.r
1db20 65 6d 61 69 6e 69 6e 67 20 65 78 74 72 65 6d 65 20 63 6f 72 6e 65 72 73 20 6f 66 20 74 68 65 20 emaining.extreme.corners.of.the.
1db40 72 69 67 68 74 20 72 65 63 74 61 6e 67 75 6c 61 72 20 70 61 74 74 65 72 6e 2e 2e 2e 20 49 6d 61 right.rectangular.pattern....Ima
1db60 67 65 20 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 5d 29 3b 0a 20 20 20 0a 20 20 20 64 69 73 70 28 ge.'.num2str(kk)]);........disp(
1db80 27 43 6c 69 63 6b 20 6f 6e 20 74 68 65 20 74 77 6f 20 72 65 6d 61 69 6e 69 6e 67 20 65 78 74 72 'Click.on.the.two.remaining.extr
1dba0 65 6d 65 20 63 6f 72 6e 65 72 73 20 6f 66 20 74 68 65 20 72 69 67 68 74 20 72 65 63 74 61 6e 67 eme.corners.of.the.right.rectang
1dbc0 75 6c 61 72 20 70 61 74 74 65 72 6e 2e 2e 2e 27 29 3b 0a 20 20 20 0a 20 20 20 5b 78 2c 79 5d 20 ular.pattern...');........[x,y].
1dbe0 3d 20 67 69 6e 70 75 74 33 28 32 29 3b 0a 20 20 20 0a 20 20 20 5b 58 63 2c 67 6f 6f 64 2c 62 61 =.ginput3(2);........[Xc,good,ba
1dc00 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 63 6f 6e TOOLBOX_calib/go_calib_optim_con
1dc20 74 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 t.m.............................
1dc40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1dc60 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
1dc80 20 20 20 36 35 31 30 20 20 37 30 32 34 30 33 37 33 32 37 20 20 31 32 35 37 34 00 20 00 00 00 00 ...6510..7024037327..12574......
1dca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1dcc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1dce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1dd00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1dd20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1dd40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1dd60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1dd80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1dda0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ddc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1dde0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1de00 25 20 53 69 6d 70 6c 69 66 69 65 64 20 76 65 72 73 69 6f 6e 20 6f 66 20 67 6f 5f 63 61 6c 69 62 %.Simplified.version.of.go_calib
1de20 2e 6d 0a 0a 69 66 20 7e 65 78 69 73 74 28 27 78 5f 31 27 29 2c 0a 20 20 20 63 6c 69 63 6b 5f 63 .m..if.~exist('x_1'),....click_c
1de40 61 6c 69 62 3b 0a 65 6e 64 3b 0a 20 20 20 20 20 20 0a 0a 25 20 49 6e 69 74 69 61 6c 69 73 61 74 alib;.end;.........%.Initialisat
1de60 69 6f 6e 20 6f 66 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 20 66 6f 72 20 67 6c 6f 62 61 6c ion.of.the.parameters.for.global
1de80 20 6d 69 6e 69 6d 69 7a 61 74 69 6f 6e 3a 0a 0a 69 6e 69 74 5f 70 61 72 61 6d 20 3d 20 5b 66 63 .minimization:..init_param.=.[fc
1dea0 3b 6b 63 5d 3b 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 0a 20 20 20 ;kc];..for.kk.=.1:n_ima,........
1dec0 69 66 20 7e 65 78 69 73 74 28 5b 27 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 5d 29 2c if.~exist(['omc_'.num2str(kk)]),
1dee0 0a 20 20 20 20 20 20 65 76 61 6c 28 5b 27 48 6b 6b 20 3d 20 48 5f 27 20 6e 75 6d 32 73 74 72 28 .......eval(['Hkk.=.H_'.num2str(
1df00 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 09 48 32 20 3d 20 69 6e 76 5f 4b 4b 2a 48 6b 6b 3b 0a kk).';']);.....H2.=.inv_KK*Hkk;.
1df20 20 20 20 20 20 20 73 63 20 3d 20 6d 65 61 6e 28 5b 6e 6f 72 6d 28 48 32 28 3a 2c 31 29 29 3b 6e ......sc.=.mean([norm(H2(:,1));n
1df40 6f 72 6d 28 48 32 28 3a 2c 32 29 29 5d 29 3b 0a 20 20 20 09 48 32 20 3d 20 48 32 2f 73 63 3b 0a orm(H2(:,2))]);.....H2.=.H2/sc;.
1df60 20 20 20 20 20 20 6f 6d 63 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 28 5b 48 32 28 3a 2c 31 3a ......omckk.=.rodrigues([H2(:,1:
1df80 32 29 20 63 72 6f 73 73 28 48 32 28 3a 2c 31 29 2c 48 32 28 3a 2c 32 29 29 5d 29 3b 0a 20 20 20 2).cross(H2(:,1),H2(:,2))]);....
1dfa0 20 20 20 54 63 6b 6b 20 3d 20 48 32 28 3a 2c 33 29 3b 0a 20 20 20 20 20 20 65 76 61 6c 28 5b 27 ...Tckk.=.H2(:,3);.......eval(['
1dfc0 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 6f 6d 63 6b 6b 3b 27 5d 29 3b omc_'.num2str(kk).'.=.omckk;']);
1dfe0 0a 20 20 20 20 20 20 65 76 61 6c 28 5b 27 54 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 .......eval(['Tc_'.num2str(kk).'
1e000 20 3d 20 54 63 6b 6b 3b 27 5d 29 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 65 76 61 6c .=.Tckk;']);....end;........eval
1e020 28 5b 27 69 6e 69 74 5f 70 61 72 61 6d 20 3d 20 5b 69 6e 69 74 5f 70 61 72 61 6d 3b 20 6f 6d 63 (['init_param.=.[init_param;.omc
1e040 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 20 54 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b _'.num2str(kk).';.Tc_'.num2str(k
1e060 6b 29 20 27 5d 3b 27 5d 29 3b 0a 65 6e 64 3b 0a 0a 69 6e 69 74 5f 70 61 72 61 6d 20 3d 20 5b 69 k).'];']);.end;..init_param.=.[i
1e080 6e 69 74 5f 70 61 72 61 6d 3b 63 63 5d 3b 0a 0a 0a 0a 25 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d nit_param;cc];....%-------------
1e0a0 2d 2d 2d 2d 2d 2d 2d 20 4d 61 69 6e 20 4f 70 74 69 6d 69 7a 61 74 69 6f 6e 3a 0a 0a 66 70 72 69 -------.Main.Optimization:..fpri
1e0c0 6e 74 66 28 31 2c 27 5c 6e 52 65 2d 4f 70 74 69 6d 69 7a 61 74 69 6f 6e 2e 2e 2e 5c 6e 27 29 0a ntf(1,'\nRe-Optimization...\n').
1e0e0 0a 0a 70 61 72 61 6d 20 3d 20 69 6e 69 74 5f 70 61 72 61 6d 3b 0a 63 68 61 6e 67 65 20 3d 20 31 ..param.=.init_param;.change.=.1
1e100 3b 0a 0a 69 74 65 72 20 3d 20 30 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 49 74 65 72 61 74 69 ;..iter.=.0;..fprintf(1,'Iterati
1e120 6f 6e 20 27 29 3b 0a 0a 77 68 69 6c 65 20 28 63 68 61 6e 67 65 20 3e 20 31 65 2d 36 29 26 28 69 on.');..while.(change.>.1e-6)&(i
1e140 74 65 72 20 3c 20 31 30 29 2c 0a 20 20 20 0a 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 25 64 2e ter.<.10),........fprintf(1,'%d.
1e160 2e 2e 27 2c 69 74 65 72 2b 31 29 3b 0a 0a 09 4a 4a 20 3d 20 5b 5d 3b 0a 09 65 78 20 3d 20 5b 5d ..',iter+1);...JJ.=.[];..ex.=.[]
1e180 3b 0a 09 0a 09 63 20 3d 20 70 61 72 61 6d 28 36 2a 6e 5f 69 6d 61 20 2b 20 34 20 2b 20 33 3a 36 ;....c.=.param(6*n_ima.+.4.+.3:6
1e1a0 2a 6e 5f 69 6d 61 20 2b 20 35 20 2b 20 33 29 3b 0a 09 66 20 3d 20 70 61 72 61 6d 28 31 3a 32 29 *n_ima.+.5.+.3);..f.=.param(1:2)
1e1c0 3b 0a 09 6b 20 3d 20 70 61 72 61 6d 28 33 3a 36 29 3b 0a 09 0a 09 66 6f 72 20 6b 6b 20 3d 20 31 ;..k.=.param(3:6);....for.kk.=.1
1e1e0 3a 6e 5f 69 6d 61 2c 0a 20 20 09 20 0a 20 20 20 09 6f 6d 63 6b 6b 20 3d 20 70 61 72 61 6d 28 34 :n_ima,..........omckk.=.param(4
1e200 2b 36 2a 28 6b 6b 2d 31 29 20 2b 20 33 3a 36 2a 6b 6b 20 2b 20 33 29 3b 0a 20 20 20 09 0a 20 20 +6*(kk-1).+.3:6*kk.+.3);........
1e220 09 09 54 63 6b 6b 20 3d 20 70 61 72 61 6d 28 36 2a 6b 6b 2b 31 20 2b 20 33 3a 36 2a 6b 6b 2b 33 ..Tckk.=.param(6*kk+1.+.3:6*kk+3
1e240 20 2b 20 33 29 3b 0a 20 20 20 09 0a 20 20 20 09 65 76 61 6c 28 5b 27 58 5f 6b 6b 20 3d 20 58 5f .+.3);..........eval(['X_kk.=.X_
1e260 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 09 65 76 61 6c 28 5b 27 '.num2str(kk).';']);.....eval(['
1e280 78 5f 6b 6b 20 3d 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 x_kk.=.x_'.num2str(kk).';']);...
1e2a0 20 09 0a 20 20 20 09 4e 70 20 3d 20 73 69 7a 65 28 58 5f 6b 6b 2c 32 29 3b 0a 20 20 20 09 0a 20 .......Np.=.size(X_kk,2);.......
1e2c0 20 20 09 4a 4a 6b 6b 20 3d 20 7a 65 72 6f 73 28 32 2a 4e 70 2c 6e 5f 69 6d 61 20 2a 20 36 20 2b ...JJkk.=.zeros(2*Np,n_ima.*.6.+
1e2e0 20 38 29 3b 0a 20 20 20 09 0a 20 20 20 09 5b 78 2c 64 78 64 6f 6d 2c 64 78 64 54 2c 64 78 64 66 .8);..........[x,dxdom,dxdT,dxdf
1e300 2c 64 78 64 63 2c 64 78 64 6b 5d 20 3d 20 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 28 58 5f 6b ,dxdc,dxdk].=.project_points(X_k
1e320 6b 2c 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 66 2c 63 2c 6b 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 09 k,omckk,Tckk,f,c,k);............
1e340 65 78 6b 6b 20 3d 20 78 5f 6b 6b 20 2d 20 78 3b 0a 20 20 20 0a 20 20 20 09 65 78 20 3d 20 5b 65 exkk.=.x_kk.-.x;.........ex.=.[e
1e360 78 3b 65 78 6b 6b 28 3a 29 5d 3b 0a 20 20 20 0a 20 20 20 09 4a 4a 6b 6b 28 3a 2c 31 3a 32 29 20 x;exkk(:)];.........JJkk(:,1:2).
1e380 3d 20 64 78 64 66 3b 0a 20 20 20 09 4a 4a 6b 6b 28 3a 2c 33 3a 36 29 20 3d 20 64 78 64 6b 3b 0a =.dxdf;.....JJkk(:,3:6).=.dxdk;.
1e3a0 20 20 20 09 4a 4a 6b 6b 28 3a 2c 34 2b 36 2a 28 6b 6b 2d 31 29 20 2b 20 33 3a 36 2a 6b 6b 20 2b ....JJkk(:,4+6*(kk-1).+.3:6*kk.+
1e3c0 20 33 29 20 3d 20 64 78 64 6f 6d 3b 0a 20 20 20 09 4a 4a 6b 6b 28 3a 2c 36 2a 6b 6b 2b 31 20 2b .3).=.dxdom;.....JJkk(:,6*kk+1.+
1e3e0 20 33 3a 36 2a 6b 6b 2b 33 20 2b 20 33 29 20 3d 20 64 78 64 54 3b 0a 20 20 20 09 4a 4a 6b 6b 28 .3:6*kk+3.+.3).=.dxdT;.....JJkk(
1e400 3a 2c 36 2a 6e 5f 69 6d 61 20 2b 20 34 20 2b 20 33 3a 36 2a 6e 5f 69 6d 61 20 2b 20 35 20 2b 20 :,6*n_ima.+.4.+.3:6*n_ima.+.5.+.
1e420 33 29 20 3d 20 64 78 64 63 3b 0a 20 20 20 09 0a 20 20 20 09 4a 4a 20 3d 20 5b 4a 4a 3b 4a 4a 6b 3).=.dxdc;..........JJ.=.[JJ;JJk
1e440 6b 5d 3b 0a 20 20 20 09 0a 09 65 6e 64 3b 0a 09 0a 09 70 61 72 61 6d 5f 69 6e 6e 6f 76 20 3d 20 k];.......end;....param_innov.=.
1e460 69 6e 76 28 4a 4a 27 2a 4a 4a 29 2a 28 4a 4a 27 29 2a 65 78 3b 0a 09 70 61 72 61 6d 5f 75 70 20 inv(JJ'*JJ)*(JJ')*ex;..param_up.
1e480 3d 20 70 61 72 61 6d 20 2b 20 70 61 72 61 6d 5f 69 6e 6e 6f 76 3b 0a 09 63 68 61 6e 67 65 20 3d =.param.+.param_innov;..change.=
1e4a0 20 6e 6f 72 6d 28 70 61 72 61 6d 5f 69 6e 6e 6f 76 29 2f 6e 6f 72 6d 28 70 61 72 61 6d 5f 75 70 .norm(param_innov)/norm(param_up
1e4c0 29 3b 0a 09 70 61 72 61 6d 20 3d 20 70 61 72 61 6d 5f 75 70 3b 0a 09 69 74 65 72 20 3d 20 69 74 );..param.=.param_up;..iter.=.it
1e4e0 65 72 20 2b 20 31 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 27 er.+.1;.....end;..fprintf(1,'\n'
1e500 29 3b 0a 0a 0a 73 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 65 72 20 3d 20 70 61 72 61 6d 3b 0a 0a 73 );...sol_with_center.=.param;..s
1e520 6f 6c 75 74 69 6f 6e 20 3d 20 73 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 65 72 3b 0a 0a 0a 25 25 25 olution.=.sol_with_center;...%%%
1e540 20 45 78 74 72 61 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 66 69 6e 61 6c 20 69 6e 74 72 69 6e 73 .Extraction.of.the.final.intrins
1e560 69 63 20 61 6e 64 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 61 74 65 72 73 3a 0a 0a 65 78 ic.and.extrinsic.paramaters:..ex
1e580 74 72 61 63 74 5f 70 61 72 61 6d 65 74 65 72 73 3b 0a 63 6f 6d 70 5f 65 72 72 6f 72 5f 63 61 6c tract_parameters;.comp_error_cal
1e5a0 69 62 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 5c 6e 43 61 6c 69 62 72 61 74 69 6f 6e 20 ib;..fprintf(1,'\n\nCalibration.
1e5c0 72 65 73 75 6c 74 73 20 77 69 74 68 20 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 65 73 74 results.with.principal.point.est
1e5e0 69 6d 61 74 69 6f 6e 3a 5c 6e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 46 6f 63 61 6c imation:\n\n');.fprintf(1,'Focal
1e600 20 4c 65 6e 67 74 68 3a 20 20 20 20 20 66 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 .Length:.....fc.=.[.%3.5f...%3.5
1e620 66 5d 5c 6e 27 2c 66 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 50 72 69 6e 63 69 70 61 6c 20 f]\n',fc);.fprintf(1,'Principal.
1e640 70 6f 69 6e 74 3a 20 20 63 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 point:..cc.=.[.%3.5f...%3.5f]\n'
1e660 2c 63 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 44 69 73 74 6f 72 74 69 6f 6e 3a 20 20 20 20 ,cc);.fprintf(1,'Distortion:....
1e680 20 20 20 6b 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 20 ...kc.=.[.%3.5f...%3.5f...%3.5f.
1e6a0 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 6b 63 29 3b 20 20 20 0a 66 70 72 69 6e 74 66 28 31 2c 27 50 ..%3.5f]\n',kc);....fprintf(1,'P
1e6c0 69 78 65 6c 20 65 72 72 6f 72 3a 20 20 20 20 20 20 65 72 72 20 3d 20 5b 20 25 33 2e 35 66 20 20 ixel.error:......err.=.[.%3.5f..
1e6e0 20 25 33 2e 35 66 5d 5c 6e 5c 6e 27 2c 65 72 72 5f 73 74 64 29 3b 20 0a 0a 0a 25 25 25 25 25 25 .%3.5f]\n\n',err_std);....%%%%%%
1e700 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 47 52 41 50 48 49 43 41 4c 20 4f 55 54 50 55 54 20 %%%%%%%%%%%%%%.GRAPHICAL.OUTPUT.
1e720 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 0a 0a 67 72 61 70 68 6f %%%%%%%%%%%%%%%%%%%%%%%%..grapho
1e740 75 74 5f 63 61 6c 69 62 3b 0a 0a 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 4e 6f 74 65 3a 20 49 66 ut_calib;....fprintf(1,'Note:.If
1e760 20 74 68 65 20 73 6f 6c 75 74 69 6f 6e 20 69 73 20 6e 6f 74 20 73 61 74 69 73 66 61 63 74 6f 72 .the.solution.is.not.satisfactor
1e780 79 2c 20 73 65 6c 65 63 74 20 73 6f 6c 75 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 63 65 6e 74 65 y,.select.solution.without.cente
1e7a0 72 20 65 73 74 69 6d 61 74 69 6f 6e 2e 5c 6e 5c 6e 27 29 3b 0a 0a 0a 25 25 25 25 25 25 25 25 25 r.estimation.\n\n');...%%%%%%%%%
1e7c0 25 25 25 25 25 20 53 61 76 65 20 61 6c 6c 20 74 68 65 20 43 61 6c 69 62 72 61 74 69 6f 6e 20 72 %%%%%.Save.all.the.Calibration.r
1e7e0 65 73 75 6c 74 73 3a 0a 0a 64 69 73 70 28 27 53 61 76 65 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 esults:..disp('Save.calibration.
1e800 72 65 73 75 6c 74 73 20 75 6e 64 65 72 20 43 61 6c 69 62 5f 52 65 73 75 6c 74 73 2e 6d 61 74 27 results.under.Calib_Results.mat'
1e820 29 3b 0a 0a 73 74 72 69 6e 67 5f 73 61 76 65 20 3d 20 27 73 61 76 65 20 43 61 6c 69 62 5f 52 65 );..string_save.=.'save.Calib_Re
1e840 73 75 6c 74 73 20 66 63 20 6b 63 20 63 63 20 65 78 20 78 20 79 20 73 6f 6c 75 74 69 6f 6e 20 73 sults.fc.kc.cc.ex.x.y.solution.s
1e860 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 65 72 20 73 6f 6c 75 74 69 6f 6e 5f 69 6e 69 74 20 68 69 73 ol_with_center.solution_init.his
1e880 74 6f 72 79 20 77 69 6e 74 78 20 77 69 6e 74 79 20 6e 5f 69 6d 61 20 74 79 70 65 5f 6e 75 6d 62 tory.wintx.winty.n_ima.type_numb
1e8a0 65 72 69 6e 67 20 4e 5f 73 6c 6f 74 73 20 73 6d 61 6c 6c 5f 63 61 6c 69 62 5f 69 6d 61 67 65 20 ering.N_slots.small_calib_image.
1e8c0 66 69 72 73 74 5f 6e 75 6d 20 69 6d 61 67 65 5f 6e 75 6d 62 65 72 73 20 66 6f 72 6d 61 74 5f 69 first_num.image_numbers.format_i
1e8e0 6d 61 67 65 20 63 61 6c 69 62 5f 6e 61 6d 65 20 48 63 61 6c 20 57 63 61 6c 20 6e 78 20 6e 79 20 mage.calib_name.Hcal.Wcal.nx.ny.
1e900 6d 61 70 20 64 58 5f 64 65 66 61 75 6c 74 20 64 59 5f 64 65 66 61 75 6c 74 20 4b 4b 20 69 6e 76 map.dX_default.dY_default.KK.inv
1e920 5f 4b 4b 20 64 58 20 64 59 27 3b 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 _KK.dX.dY';..for.kk.=.1:n_ima,..
1e940 20 20 73 74 72 69 6e 67 5f 73 61 76 65 20 3d 20 5b 73 74 72 69 6e 67 5f 73 61 76 65 20 27 20 58 ..string_save.=.[string_save.'.X
1e960 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 _'.num2str(kk).'.x_'.num2str(kk)
1e980 20 27 20 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 65 78 5f 27 20 6e 75 6d 32 73 74 .'.y_'.num2str(kk).'.ex_'.num2st
1e9a0 72 28 6b 6b 29 20 27 20 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 52 63 5f 27 r(kk).'.omc_'.num2str(kk).'.Rc_'
1e9c0 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 54 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 .num2str(kk).'.Tc_'.num2str(kk).
1e9e0 27 20 48 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 48 69 6e 69 5f 27 20 6e 75 6d 32 73 '.H_'.num2str(kk).'.Hini_'.num2s
1ea00 74 72 28 6b 6b 29 20 27 20 6e 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 tr(kk).'.n_sq_x_'.num2str(kk).'.
1ea20 6e 5f 73 71 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 77 69 6e 74 78 5f 27 20 6e n_sq_y_'.num2str(kk).'.wintx_'.n
1ea40 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 77 69 6e 74 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 um2str(kk).'.winty_'.num2str(kk)
1ea60 20 27 20 64 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 64 59 5f 27 20 6e 75 6d 32 73 .'.dX_'.num2str(kk).'.dY_'.num2s
1ea80 74 72 28 6b 6b 29 5d 3b 0a 65 6e 64 3b 0a 0a 65 76 61 6c 28 73 74 72 69 6e 67 5f 73 61 76 65 29 tr(kk)];.end;..eval(string_save)
1eaa0 3b 0a 0a 72 65 74 75 72 6e 3b 0a 0a 69 66 20 65 78 69 73 74 28 27 63 61 6c 69 62 5f 64 61 74 61 ;..return;..if.exist('calib_data
1eac0 2e 6d 61 74 27 29 2c 0a 20 20 20 63 63 63 20 3d 20 63 6f 6d 70 75 74 65 72 3b 0a 20 20 20 69 66 .mat'),....ccc.=.computer;....if
1eae0 20 63 63 63 28 31 29 3d 3d 27 50 27 2c 0a 20 20 20 20 20 20 65 76 61 6c 28 27 21 64 65 6c 20 63 .ccc(1)=='P',.......eval('!del.c
1eb00 61 6c 69 62 5f 64 61 74 61 2e 6d 61 74 27 29 3b 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 65 alib_data.mat');....else.......e
1eb20 76 61 6c 28 27 21 72 6d 20 63 61 6c 69 62 5f 64 61 74 61 2e 6d 61 74 27 29 3b 0a 20 20 20 65 6e val('!rm.calib_data.mat');....en
1eb40 64 3b 0a 65 6e 64 3b 0a 20 43 6f 6d 70 75 74 69 6e 67 20 6f 66 20 74 68 65 20 65 78 74 72 69 6e d;.end;..Computing.of.the.extrin
1eb60 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 28 66 72 6f 6d 20 74 68 65 20 63 6f 6c 6c 69 6e 65 sic.parameters.(from.the.colline
1eb80 61 74 69 6f 6e 73 29 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 0a 20 ations)..for.kk.=.1:n_ima,......
1eba0 20 20 65 76 61 6c 28 5b 27 48 6c 6b 6b 20 3d 20 48 6c 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 ..eval(['Hlkk.=.Hl_'.num2str(kk)
1ebc0 20 27 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 48 6c 32 20 3d 20 69 6e 76 5f 4b 4b 2a 48 6c 6b 6b .';']);........Hl2.=.inv_KK*Hlkk
1ebe0 3b 0a 20 20 20 20 20 20 0a 20 20 20 73 63 20 3d 20 6d 65 61 6e 28 5b 6e 6f 72 6d 28 48 6c 32 28 ;...........sc.=.mean([norm(Hl2(
1ec00 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 67 72 61 70 68 6f 75 74 5f 63 61 6c 69 62 2e 6d 00 00 TOOLBOX_calib/graphout_calib.m..
1ec20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ec40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ec60 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
1ec80 20 20 20 20 33 35 35 20 20 37 30 32 34 30 33 37 33 33 31 20 20 31 31 35 34 31 00 20 00 00 00 00 ....355..7024037331..11541......
1eca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ecc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ece0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ed00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ed20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ed40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ed60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ed80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1eda0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1edc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ede0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ee00 0a 0a 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 47 52 41 50 48 49 43 41 4c ..%%%%%%%%%%%%%%%%%%%%.GRAPHICAL
1ee20 20 4f 55 54 50 55 54 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 .OUTPUT.%%%%%%%%%%%%%%%%%%%%%%%%
1ee40 0a 0a 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 53 48 4f 57 20 45 58 54 52 ..%%%%%%%%%%%%%%%%%%%%.SHOW.EXTR
1ee60 49 4e 53 49 43 20 52 45 53 55 4c 54 53 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 INSIC.RESULTS.%%%%%%%%%%%%%%%%%%
1ee80 25 25 25 25 25 25 0a 0a 65 78 74 5f 63 61 6c 69 62 3b 0a 0a 25 25 25 25 25 25 25 25 25 25 25 25 %%%%%%..ext_calib;..%%%%%%%%%%%%
1eea0 25 25 25 25 25 25 25 25 20 52 45 50 52 4f 4a 45 43 54 20 4f 4e 20 54 48 45 20 49 4d 41 47 45 53 %%%%%%%%.REPROJECT.ON.THE.IMAGES
1eec0 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 0a 0a 72 65 70 72 6f .%%%%%%%%%%%%%%%%%%%%%%%%..repro
1eee0 6a 65 63 74 5f 63 61 6c 69 62 3b 0a 0a 61 64 2e 6d 00 65 72 00 00 04 2c 00 02 35 d7 00 1c 00 0f ject_calib;..ad.m.er...,..5.....
1ef00 70 72 6f 6a 65 63 74 32 5f 6f 75 6c 75 2e 6d 00 00 00 04 44 00 02 35 d8 00 1c 00 0f 70 72 6f 6a project2_oulu.m....D..5.....proj
1ef20 65 63 74 65 64 47 72 69 64 2e 6d 00 00 00 04 60 00 02 35 d9 00 20 00 10 70 72 6f 6a 65 63 74 5f ectedGrid.m....`..5.....project_
1ef40 70 6f 69 6e 74 73 2e 6d 00 47 72 69 00 00 04 74 00 02 35 da 00 18 00 09 72 65 61 64 72 61 73 2e points.m.Gri...t..5.....readras.
1ef60 6d 00 74 5f 00 00 04 94 00 02 35 db 00 24 00 15 72 65 63 6f 6d 70 5f 63 6f 72 6e 65 72 5f 63 61 m.t_......5..$..recomp_corner_ca
1ef80 6c 69 62 2e 6d 00 00 17 00 00 04 a4 00 02 35 dc 00 14 00 06 72 65 63 74 2e 6d 00 63 00 00 04 c0 lib.m.........5.....rect.m.c....
1efa0 00 02 35 dd 00 20 00 12 52 65 63 74 61 6e 67 6c 65 32 53 71 75 61 72 65 2e 6d 00 74 00 00 04 dc ..5.....Rectangle2Square.m.t....
1efc0 00 02 35 de 00 20 00 11 72 65 70 72 6f 6a 65 63 74 5f 63 61 6c 69 62 2e 6d 00 72 65 00 00 04 f0 ..5.....reproject_calib.m.re....
1efe0 00 02 35 df 00 18 00 0b 72 6f 64 72 69 67 75 65 73 2e 6d 00 00 00 05 04 00 02 35 e0 00 18 00 0a ..5.....rodrigues.m.......5.....
1f000 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 67 72 61 70 68 6f 75 74 5f 63 61 6c 69 62 33 44 2e 6d TOOLBOX_calib/graphout_calib3D.m
1f020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f060 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
1f080 20 20 20 37 31 32 36 20 20 37 30 32 34 30 33 37 33 33 32 20 20 31 31 37 35 34 00 20 00 00 00 00 ...7126..7024037332..11754......
1f0a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f0c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f0e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f200 0a 0a 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 47 52 41 50 48 49 43 41 4c ..%%%%%%%%%%%%%%%%%%%%.GRAPHICAL
1f220 20 4f 55 54 50 55 54 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 .OUTPUT.%%%%%%%%%%%%%%%%%%%%%%%%
1f240 0a 0a 0a 25 20 43 6f 6c 6f 72 20 63 6f 64 65 20 66 6f 72 20 65 61 63 68 20 69 6d 61 67 65 3a 0a ...%.Color.code.for.each.image:.
1f260 0a 63 6f 6c 6f 72 73 20 3d 20 27 62 72 67 6b 63 6d 27 3b 0a 0a 0a 25 25 25 20 53 68 6f 77 20 74 .colors.=.'brgkcm';...%%%.Show.t
1f280 68 65 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 0a 0a 49 50 20 3d 20 38 2a he.extrinsic.parameters..IP.=.8*
1f2a0 64 58 2a 28 5b 30 20 6e 78 2d 31 20 6e 78 2d 31 20 30 20 30 20 3b 20 30 20 30 20 6e 79 2d 31 20 dX*([0.nx-1.nx-1.0.0.;.0.0.ny-1.
1f2c0 6e 79 2d 31 20 30 3b 31 20 31 20 31 20 31 20 31 5d 20 2d 20 5b 63 63 3b 30 5d 2a 6f 6e 65 73 28 ny-1.0;1.1.1.1.1].-.[cc;0]*ones(
1f2e0 31 2c 35 29 29 20 2e 2f 20 28 5b 66 63 3b 31 5d 2a 6f 6e 65 73 28 31 2c 35 29 29 3b 0a 0a 0a 66 1,5))../.([fc;1]*ones(1,5));...f
1f300 69 67 75 72 65 28 34 29 3b 0a 5b 61 2c 62 5d 20 3d 20 76 69 65 77 3b 0a 0a 66 69 67 75 72 65 28 igure(4);.[a,b].=.view;..figure(
1f320 34 29 3b 0a 70 6c 6f 74 33 28 35 2a 5b 30 20 64 58 20 30 20 30 20 30 20 30 20 5d 2c 35 2a 5b 30 4);.plot3(5*[0.dX.0.0.0.0.],5*[0
1f340 20 30 20 30 20 30 20 30 20 64 58 5d 2c 2d 35 2a 5b 30 20 30 20 30 20 64 58 20 30 20 30 20 5d 2c .0.0.0.0.dX],-5*[0.0.0.dX.0.0.],
1f360 27 62 2d 27 2c 27 6c 69 6e 65 77 69 64 74 68 27 2c 32 27 29 3b 0a 68 6f 6c 64 20 6f 6e 3b 0a 70 'b-','linewidth',2');.hold.on;.p
1f380 6c 6f 74 33 28 49 50 28 31 2c 3a 29 2c 49 50 28 33 2c 3a 29 2c 2d 49 50 28 32 2c 3a 29 2c 27 72 lot3(IP(1,:),IP(3,:),-IP(2,:),'r
1f3a0 2d 27 2c 27 6c 69 6e 65 77 69 64 74 68 27 2c 32 29 3b 0a 74 65 78 74 28 36 2a 64 58 2c 30 2c 30 -','linewidth',2);.text(6*dX,0,0
1f3c0 2c 27 58 5f 63 27 29 3b 0a 74 65 78 74 28 2d 64 58 2c 35 2a 64 58 2c 30 2c 27 5a 5f 63 27 29 3b ,'X_c');.text(-dX,5*dX,0,'Z_c');
1f3e0 0a 74 65 78 74 28 30 2c 30 2c 2d 36 2a 64 58 2c 27 59 5f 63 27 29 3b 0a 74 65 78 74 28 2d 64 58 .text(0,0,-6*dX,'Y_c');.text(-dX
1f400 2c 2d 64 58 2c 64 58 2c 27 4f 5f 63 27 29 3b 0a 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 ,-dX,dX,'O_c');...for.kk.=.1:n_i
1f420 6d 61 2c 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 58 58 5f 6b 6b 20 3d 20 58 5f 27 20 6e 75 ma,........eval(['XX_kk.=.X_'.nu
1f440 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 6f 6d 63 5f 6b m2str(kk).';']);....eval(['omc_k
1f460 6b 20 3d 20 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 k.=.omc_'.num2str(kk).';']);....
1f480 65 76 61 6c 28 5b 27 54 63 5f 6b 6b 20 3d 20 54 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 eval(['Tc_kk.=.Tc_'.num2str(kk).
1f4a0 27 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 6e 6c 5f 73 71 5f 78 20 3d 20 6e ';']);........eval(['nl_sq_x.=.n
1f4c0 6c 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 65 l_sq_x_'.num2str(kk).';']);....e
1f4e0 76 61 6c 28 5b 27 6e 6c 5f 73 71 5f 79 20 3d 20 6e 6c 5f 73 71 5f 79 5f 27 20 6e 75 6d 32 73 74 val(['nl_sq_y.=.nl_sq_y_'.num2st
1f500 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 6e 72 5f 73 71 r(kk).';']);........eval(['nr_sq
1f520 5f 78 20 3d 20 6e 72 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 _x.=.nr_sq_x_'.num2str(kk).';'])
1f540 3b 0a 20 20 20 65 76 61 6c 28 5b 27 6e 72 5f 73 71 5f 79 20 3d 20 6e 72 5f 73 71 5f 79 5f 27 20 ;....eval(['nr_sq_y.=.nr_sq_y_'.
1f560 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 0a 20 20 20 52 5f 6b 6b 20 3d 20 72 6f num2str(kk).';']);.....R_kk.=.ro
1f580 64 72 69 67 75 65 73 28 6f 6d 63 5f 6b 6b 29 3b 0a 20 20 20 0a 20 20 20 59 59 5f 6b 6b 20 3d 20 drigues(omc_kk);........YY_kk.=.
1f5a0 52 5f 6b 6b 20 2a 20 58 58 5f 6b 6b 20 2b 20 54 63 5f 6b 6b 20 2a 20 6f 6e 65 73 28 31 2c 6c 65 R_kk.*.XX_kk.+.Tc_kk.*.ones(1,le
1f5c0 6e 67 74 68 28 58 58 5f 6b 6b 29 29 3b 0a 20 20 20 0a 20 20 20 59 59 6c 5f 6b 6b 20 3d 20 59 59 ngth(XX_kk));........YYl_kk.=.YY
1f5e0 5f 6b 6b 28 3a 2c 31 3a 28 6e 6c 5f 73 71 5f 78 2b 31 29 2a 28 6e 6c 5f 73 71 5f 79 2b 31 29 29 _kk(:,1:(nl_sq_x+1)*(nl_sq_y+1))
1f600 3b 0a 20 20 20 59 59 72 5f 6b 6b 20 3d 20 59 59 5f 6b 6b 28 3a 2c 28 6e 6c 5f 73 71 5f 78 2b 31 ;....YYr_kk.=.YY_kk(:,(nl_sq_x+1
1f620 29 2a 28 6e 6c 5f 73 71 5f 79 2b 31 29 2b 31 3a 65 6e 64 29 3b 0a 0a 20 20 20 0a 20 20 20 65 76 )*(nl_sq_y+1)+1:end);.........ev
1f640 61 6c 28 5b 27 59 59 6c 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 59 59 6c 5f 6b al(['YYl_'.num2str(kk).'.=.YYl_k
1f660 6b 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 59 59 72 5f 27 20 6e 75 6d 32 73 74 72 28 6b k;']);....eval(['YYr_'.num2str(k
1f680 6b 29 20 27 20 3d 20 59 59 72 5f 6b 6b 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 75 75 20 3d 20 5b k).'.=.YYr_kk;']);........uu.=.[
1f6a0 2d 64 58 3b 2d 64 59 3b 30 5d 2f 32 3b 0a 20 20 20 75 75 20 3d 20 52 5f 6b 6b 20 2a 20 75 75 20 -dX;-dY;0]/2;....uu.=.R_kk.*.uu.
1f6c0 2b 20 54 63 5f 6b 6b 3b 20 0a 20 20 20 0a 20 20 20 59 59 6c 78 20 3d 20 7a 65 72 6f 73 28 6e 6c +.Tc_kk;.........YYlx.=.zeros(nl
1f6e0 5f 73 71 5f 78 2b 31 2c 6e 6c 5f 73 71 5f 79 2b 31 29 3b 0a 20 20 20 59 59 6c 79 20 3d 20 7a 65 _sq_x+1,nl_sq_y+1);....YYly.=.ze
1f700 72 6f 73 28 6e 6c 5f 73 71 5f 78 2b 31 2c 6e 6c 5f 73 71 5f 79 2b 31 29 3b 0a 20 20 20 59 59 6c ros(nl_sq_x+1,nl_sq_y+1);....YYl
1f720 7a 20 3d 20 7a 65 72 6f 73 28 6e 6c 5f 73 71 5f 78 2b 31 2c 6e 6c 5f 73 71 5f 79 2b 31 29 3b 0a z.=.zeros(nl_sq_x+1,nl_sq_y+1);.
1f740 20 20 20 0a 20 20 20 59 59 72 78 20 3d 20 7a 65 72 6f 73 28 6e 72 5f 73 71 5f 78 2b 31 2c 6e 72 .......YYrx.=.zeros(nr_sq_x+1,nr
1f760 5f 73 71 5f 79 2b 31 29 3b 0a 20 20 20 59 59 72 79 20 3d 20 7a 65 72 6f 73 28 6e 72 5f 73 71 5f _sq_y+1);....YYry.=.zeros(nr_sq_
1f780 78 2b 31 2c 6e 72 5f 73 71 5f 79 2b 31 29 3b 0a 20 20 20 59 59 72 7a 20 3d 20 7a 65 72 6f 73 28 x+1,nr_sq_y+1);....YYrz.=.zeros(
1f7a0 6e 72 5f 73 71 5f 78 2b 31 2c 6e 72 5f 73 71 5f 79 2b 31 29 3b 0a 20 20 20 0a 20 20 20 59 59 6c nr_sq_x+1,nr_sq_y+1);........YYl
1f7c0 78 28 3a 29 20 3d 20 59 59 6c 5f 6b 6b 28 31 2c 3a 29 3b 0a 20 20 20 59 59 6c 79 28 3a 29 20 3d x(:).=.YYl_kk(1,:);....YYly(:).=
1f7e0 20 59 59 6c 5f 6b 6b 28 32 2c 3a 29 3b 0a 20 20 20 59 59 6c 7a 28 3a 29 20 3d 20 59 59 6c 5f 6b .YYl_kk(2,:);....YYlz(:).=.YYl_k
1f800 6b 28 33 2c 3a 29 3b 0a 20 20 20 0a 20 20 20 59 59 72 78 28 3a 29 20 3d 20 59 59 72 5f 6b 6b 28 k(3,:);........YYrx(:).=.YYr_kk(
1f820 31 2c 3a 29 3b 0a 20 20 20 59 59 72 79 28 3a 29 20 3d 20 59 59 72 5f 6b 6b 28 32 2c 3a 29 3b 0a 1,:);....YYry(:).=.YYr_kk(2,:);.
1f840 20 20 20 59 59 72 7a 28 3a 29 20 3d 20 59 59 72 5f 6b 6b 28 33 2c 3a 29 3b 0a 20 20 20 0a 20 20 ...YYrz(:).=.YYr_kk(3,:);.......
1f860 20 0a 20 20 20 25 6b 65 79 62 6f 61 72 64 3b 0a 20 20 20 0a 20 20 20 66 69 67 75 72 65 28 34 29 .....%keyboard;........figure(4)
1f880 3b 0a 20 20 20 68 68 68 3d 20 6d 65 73 68 28 59 59 6c 78 2c 59 59 6c 7a 2c 2d 59 59 6c 79 29 3b ;....hhh=.mesh(YYlx,YYlz,-YYly);
1f8a0 0a 20 20 20 73 65 74 28 68 68 68 2c 27 65 64 67 65 63 6f 6c 6f 72 27 2c 63 6f 6c 6f 72 73 28 72 ....set(hhh,'edgecolor',colors(r
1f8c0 65 6d 28 6b 6b 2d 31 2c 36 29 2b 31 29 2c 27 6c 69 6e 65 77 69 64 74 68 27 2c 31 29 3b 20 25 2c em(kk-1,6)+1),'linewidth',1);.%,
1f8e0 27 66 61 63 65 63 6f 6c 6f 72 27 2c 27 6e 6f 6e 65 27 29 3b 0a 20 20 20 25 70 6c 6f 74 33 28 59 'facecolor','none');....%plot3(Y
1f900 59 5f 6b 6b 28 31 2c 3a 29 2c 59 59 5f 6b 6b 28 33 2c 3a 29 2c 2d 59 59 5f 6b 6b 28 32 2c 3a 29 Y_kk(1,:),YY_kk(3,:),-YY_kk(2,:)
1f920 2c 5b 27 6f 27 20 63 6f 6c 6f 72 73 28 72 65 6d 28 6b 6b 2d 31 2c 36 29 2b 31 29 5d 29 3b 0a 20 ,['o'.colors(rem(kk-1,6)+1)]);..
1f940 20 20 68 68 68 3d 20 6d 65 73 68 28 59 59 72 78 2c 59 59 72 7a 2c 2d 59 59 72 79 29 3b 0a 20 20 ..hhh=.mesh(YYrx,YYrz,-YYry);...
1f960 20 73 65 74 28 68 68 68 2c 27 65 64 67 65 63 6f 6c 6f 72 27 2c 63 6f 6c 6f 72 73 28 72 65 6d 28 .set(hhh,'edgecolor',colors(rem(
1f980 6b 6b 2d 31 2c 36 29 2b 31 29 2c 27 6c 69 6e 65 77 69 64 74 68 27 2c 31 29 3b 0a 20 20 20 74 65 kk-1,6)+1),'linewidth',1);....te
1f9a0 78 74 28 75 75 28 31 29 2c 75 75 28 33 29 2c 2d 75 75 28 32 29 2c 6e 75 6d 32 73 74 72 28 6b 6b xt(uu(1),uu(3),-uu(2),num2str(kk
1f9c0 29 2c 27 66 6f 6e 74 73 69 7a 65 27 2c 31 34 2c 27 63 6f 6c 6f 72 27 2c 63 6f 6c 6f 72 73 28 72 ),'fontsize',14,'color',colors(r
1f9e0 65 6d 28 6b 6b 2d 31 2c 36 29 2b 31 29 29 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 66 69 67 75 72 65 em(kk-1,6)+1));.....end;..figure
1fa00 28 34 29 3b 72 6f 74 61 74 65 33 64 20 6f 6e 3b 0a 61 78 69 73 28 27 65 71 75 61 6c 27 29 3b 0a (4);rotate3d.on;.axis('equal');.
1fa20 74 69 74 6c 65 28 27 45 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 27 29 3b 0a 25 title('Extrinsic.parameters');.%
1fa40 76 69 65 77 28 36 30 2c 33 30 29 3b 0a 76 69 65 77 28 61 2c 62 29 3b 0a 68 6f 6c 64 20 6f 66 66 view(60,30);.view(a,b);.hold.off
1fa60 3b 0a 0a 0a 0a 25 20 52 65 70 72 6f 6a 65 63 74 20 74 68 65 20 70 61 74 74 65 72 6e 73 20 6f 6e ;....%.Reproject.the.patterns.on
1fa80 20 74 68 65 20 69 6d 61 67 65 73 2c 20 61 6e 64 20 63 6f 6d 70 75 74 65 20 74 68 65 20 70 69 78 .the.images,.and.compute.the.pix
1faa0 65 6c 20 65 72 72 6f 72 73 3a 0a 0a 25 20 52 65 6c 6f 61 64 20 74 68 65 20 69 6d 61 67 65 73 20 el.errors:..%.Reload.the.images.
1fac0 69 66 20 6e 65 63 65 73 73 61 72 79 0a 0a 69 66 20 7e 65 78 69 73 74 28 27 49 5f 31 27 29 2c 0a if.necessary..if.~exist('I_1'),.
1fae0 20 20 20 69 6d 61 5f 72 65 61 64 5f 63 61 6c 69 62 3b 0a 20 20 20 69 66 20 6e 6f 5f 69 6d 61 67 ...ima_read_calib;....if.no_imag
1fb00 65 5f 66 69 6c 65 2c 0a 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0a 20 20 20 65 6e 64 3b 0a 65 6e e_file,.......return;....end;.en
1fb20 64 3b 0a 0a 0a 65 78 20 3d 20 5b 5d 3b 20 25 20 47 6c 6f 62 61 6c 20 65 72 72 6f 72 20 76 65 63 d;...ex.=.[];.%.Global.error.vec
1fb40 74 6f 72 0a 78 20 3d 20 5b 5d 3b 20 25 20 44 65 74 65 63 74 65 64 20 63 6f 72 6e 65 72 73 20 6f tor.x.=.[];.%.Detected.corners.o
1fb60 6e 20 74 68 65 20 69 6d 61 67 65 20 70 6c 61 6e 65 0a 79 20 3d 20 5b 5d 3b 20 25 20 52 65 70 72 n.the.image.plane.y.=.[];.%.Repr
1fb80 6f 6a 65 63 74 65 64 20 70 6f 69 6e 74 73 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 ojected.points..for.kk.=.1:n_ima
1fba0 2c 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 6f 6d 63 6b 6b 20 3d 20 6f 6d 63 5f 27 20 6e 75 ,........eval(['omckk.=.omc_'.nu
1fbc0 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 54 63 6b 6b 20 m2str(kk).';']);....eval(['Tckk.
1fbe0 3d 20 54 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 =.Tc_'.num2str(kk).';']);.......
1fc00 20 52 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 6b 6b 29 3b 0a 20 20 20 0a 20 20 20 .Rkk.=.rodrigues(omckk);........
1fc20 65 76 61 6c 28 5b 27 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 20 3d 20 70 72 6f 6a eval(['y_'.num2str(kk).'..=.proj
1fc40 65 63 74 32 5f 6f 75 6c 75 28 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 2c 52 6b 6b 2c ect2_oulu(X_'.num2str(kk).',Rkk,
1fc60 54 63 6b 6b 2c 66 63 2c 63 63 2c 6b 63 29 3b 27 5d 29 3b 0a 0a 20 20 20 65 76 61 6c 28 5b 27 65 Tckk,fc,cc,kc);']);.....eval(['e
1fc80 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 x_'.num2str(kk).'.=.x_'.num2str(
1fca0 6b 6b 29 20 27 20 2d 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 kk).'.-y_'.num2str(kk).';']);...
1fcc0 20 0a 20 20 20 65 76 61 6c 28 5b 27 78 5f 6b 6b 20 3d 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b .....eval(['x_kk.=.x_'.num2str(k
1fce0 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 66 69 67 75 72 65 28 34 2b 6b 6b 29 3b 0a 20 k).';']);........figure(4+kk);..
1fd00 20 20 65 76 61 6c 28 5b 27 49 20 3d 20 49 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 ..eval(['I.=.I_'.num2str(kk).';'
1fd20 5d 29 3b 0a 20 20 20 69 6d 61 67 65 28 49 29 3b 20 68 6f 6c 64 20 6f 6e 3b 0a 20 20 20 63 6f 6c ]);....image(I);.hold.on;....col
1fd40 6f 72 6d 61 70 28 67 72 61 79 28 32 35 36 29 29 3b 0a 20 20 20 74 69 74 6c 65 28 5b 27 49 6d 61 ormap(gray(256));....title(['Ima
1fd60 67 65 20 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 2d 20 49 6d 61 67 65 20 70 6f 69 6e 74 ge.'.num2str(kk).'.-.Image.point
1fd80 73 20 28 2b 29 20 61 6e 64 20 72 65 70 72 6f 6a 65 63 74 65 64 20 67 72 69 64 20 70 6f 69 6e 74 s.(+).and.reprojected.grid.point
1fda0 73 20 28 6f 29 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 70 6c 6f 74 28 78 5f 27 20 6e 75 6d s.(o)']);....eval(['plot(x_'.num
1fdc0 32 73 74 72 28 6b 6b 29 20 27 28 31 2c 3a 29 2b 31 2c 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 2str(kk).'(1,:)+1,x_'.num2str(kk
1fde0 29 20 27 28 32 2c 3a 29 2b 31 2c 27 27 72 2b 27 27 29 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 ).'(2,:)+1,''r+'');']);....eval(
1fe00 5b 27 70 6c 6f 74 28 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 28 31 2c 3a 29 2b 31 2c ['plot(y_'.num2str(kk).'(1,:)+1,
1fe20 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 28 32 2c 3a 29 2b 31 2c 27 27 27 20 63 6f 6c y_'.num2str(kk).'(2,:)+1,'''.col
1fe40 6f 72 73 28 72 65 6d 28 6b 6b 2d 31 2c 36 29 2b 31 29 20 27 6f 27 27 29 3b 27 5d 29 3b 0a 20 20 ors(rem(kk-1,6)+1).'o'');']);...
1fe60 20 7a 6f 6f 6d 20 6f 6e 3b 0a 20 20 20 68 6f 6c 64 20 6f 66 66 3b 0a 20 20 20 0a 20 20 20 0a 20 .zoom.on;....hold.off;..........
1fe80 20 20 65 76 61 6c 28 5b 27 65 78 20 3d 20 5b 65 78 20 65 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b ..eval(['ex.=.[ex.ex_'.num2str(k
1fea0 6b 29 20 27 5d 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 78 20 3d 20 5b 78 20 78 5f 27 20 k).'];']);....eval(['x.=.[x.x_'.
1fec0 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 5d 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 79 20 num2str(kk).'];']);....eval(['y.
1fee0 3d 20 5b 79 20 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 5d 3b 27 5d 29 3b 0a 20 20 20 =.[y.y_'.num2str(kk).'];']);....
1ff00 0a 65 6e 64 3b 0a 0a 0a 66 69 67 75 72 65 28 35 2b 6e 5f 69 6d 61 29 3b 0a 66 6f 72 20 6b 6b 20 .end;...figure(5+n_ima);.for.kk.
1ff20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 65 76 61 6c 28 5b 27 70 6c 6f 74 28 65 78 5f 27 20 6e =.1:n_ima,....eval(['plot(ex_'.n
1ff40 75 6d 32 73 74 72 28 6b 6b 29 20 27 28 31 2c 3a 29 2c 65 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b um2str(kk).'(1,:),ex_'.num2str(k
1ff60 6b 29 20 27 28 32 2c 3a 29 2c 27 27 27 20 63 6f 6c 6f 72 73 28 72 65 6d 28 6b 6b 2d 31 2c 36 29 k).'(2,:),'''.colors(rem(kk-1,6)
1ff80 2b 31 29 20 27 2b 27 27 29 3b 27 5d 29 3b 0a 20 20 20 68 6f 6c 64 20 6f 6e 3b 0a 65 6e 64 3b 0a +1).'+'');']);....hold.on;.end;.
1ffa0 68 6f 6c 64 20 6f 66 66 3b 0a 61 78 69 73 28 27 65 71 75 61 6c 27 29 3b 0a 74 69 74 6c 65 28 27 hold.off;.axis('equal');.title('
1ffc0 52 65 70 72 6f 6a 65 63 74 69 6f 6e 20 65 72 72 6f 72 20 28 69 6e 20 70 69 78 65 6c 29 27 29 3b Reprojection.error.(in.pixel)');
1ffe0 0a 78 6c 61 62 65 6c 28 27 78 27 29 3b 0a 79 6c 61 62 65 6c 28 27 79 27 29 3b 0a 0a 65 72 72 5f .xlabel('x');.ylabel('y');..err_
20000 73 74 64 20 3d 20 73 74 64 28 65 78 27 29 27 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 50 69 78 std.=.std(ex')';..fprintf(1,'Pix
20020 65 6c 20 65 72 72 6f 72 3a 20 20 20 20 20 20 65 72 72 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 el.error:......err.=.[.%3.5f...%
20040 33 2e 35 66 5d 5c 6e 5c 6e 27 2c 65 72 72 5f 73 74 64 29 3b 20 0a 63 68 20 69 6d 61 67 65 3a 0a 3.5f]\n\n',err_std);..ch.image:.
20060 0a 63 6f 6c 6f 72 73 20 3d 20 27 62 72 67 6b 63 6d 27 3b 0a 0a 0a 25 25 25 20 53 68 6f 77 20 74 .colors.=.'brgkcm';...%%%.Show.t
20080 68 65 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 0a 0a 49 50 20 3d 20 38 2a he.extrinsic.parameters..IP.=.8*
200a0 64 58 2a 28 5b 30 20 6e 78 2d 31 20 6e 78 2d 31 20 30 20 30 20 3b 20 30 20 30 20 6e 79 2d 31 20 dX*([0.nx-1.nx-1.0.0.;.0.0.ny-1.
200c0 6e 79 2d 31 20 30 3b 31 20 31 20 31 20 31 20 31 5d 20 2d 20 5b 63 63 3b 30 5d 2a 6f 6e 65 73 28 ny-1.0;1.1.1.1.1].-.[cc;0]*ones(
200e0 31 2c 35 29 29 20 2e 2f 20 28 5b 66 63 3b 31 5d 2a 6f 6e 65 73 28 31 2c 35 29 29 3b 0a 0a 0a 66 1,5))../.([fc;1]*ones(1,5));...f
20100 69 67 75 72 65 28 34 29 3b 0a 5b 61 2c 62 5d 20 3d 20 76 69 65 77 3b 0a 0a 66 69 67 75 72 65 28 igure(4);.[a,b].=.view;..figure(
20120 34 29 3b 0a 70 6c 6f 74 33 28 35 2a 5b 30 20 64 58 20 30 20 30 20 30 20 30 20 5d 2c 35 2a 5b 30 4);.plot3(5*[0.dX.0.0.0.0.],5*[0
20140 20 30 20 30 20 30 20 30 20 64 58 5d 2c 2d 35 2a 5b 30 20 30 20 30 20 64 58 20 30 20 30 20 5d 2c .0.0.0.0.dX],-5*[0.0.0.dX.0.0.],
20160 27 62 2d 27 2c 27 6c 69 6e 65 77 69 64 74 68 27 2c 32 27 29 3b 0a 68 6f 6c 64 20 6f 6e 3b 0a 70 'b-','linewidth',2');.hold.on;.p
20180 6c 6f 74 33 28 49 50 28 31 2c 3a 29 2c 49 50 28 33 2c 3a 29 2c 2d 49 50 28 32 2c 3a 29 2c 27 72 lot3(IP(1,:),IP(3,:),-IP(2,:),'r
201a0 2d 27 2c 27 6c 69 6e 65 77 69 64 74 68 27 2c 32 29 3b 0a 74 65 78 74 28 36 2a 64 58 2c 30 2c 30 -','linewidth',2);.text(6*dX,0,0
201c0 2c 27 58 5f 63 27 29 3b 0a 74 65 78 74 28 2d 64 58 2c 35 2a 64 58 2c 30 2c 27 5a 5f 63 27 29 3b ,'X_c');.text(-dX,5*dX,0,'Z_c');
201e0 0a 74 65 78 74 28 30 2c 30 2c 2d 36 2a 64 58 2c 27 59 5f 63 27 29 3b 0a 74 65 78 74 28 2d 64 58 .text(0,0,-6*dX,'Y_c');.text(-dX
20200 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 69 6d 61 5f 72 65 61 64 5f 63 61 6c 69 62 2e 6d 00 00 TOOLBOX_calib/ima_read_calib.m..
20220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20260 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
20280 20 20 20 33 34 31 30 20 20 37 30 32 34 30 33 37 33 33 32 20 20 31 31 34 36 35 00 20 00 00 00 00 ...3410..7024037332..11465......
202a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
202c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
202e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
203a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
203c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
203e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20400 0a 69 66 20 7e 65 78 69 73 74 28 27 63 61 6c 69 62 5f 6e 61 6d 65 27 29 2c 0a 20 20 20 64 61 74 .if.~exist('calib_name'),....dat
20420 61 5f 63 61 6c 69 62 3b 0a 65 6e 64 3b 0a 0a 63 68 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 a_calib;.end;..check_active_imag
20440 65 73 3b 0a 0a 69 6d 61 67 65 73 5f 72 65 61 64 20 3d 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 es;..images_read.=.active_images
20460 3b 0a 0a 69 6d 61 67 65 5f 6e 75 6d 62 65 72 73 20 3d 20 66 69 72 73 74 5f 6e 75 6d 3a 6e 5f 69 ;..image_numbers.=.first_num:n_i
20480 6d 61 2d 31 2b 66 69 72 73 74 5f 6e 75 6d 3b 0a 0a 6e 6f 5f 69 6d 61 67 65 5f 66 69 6c 65 20 3d ma-1+first_num;..no_image_file.=
204a0 20 30 3b 0a 0a 69 20 3d 20 31 3b 0a 0a 77 68 69 6c 65 20 28 69 20 3c 3d 20 6e 5f 69 6d 61 29 2c .0;..i.=.1;..while.(i.<=.n_ima),
204c0 20 25 20 26 20 28 7e 6e 6f 5f 69 6d 61 67 65 5f 66 69 6c 65 29 2c 0a 20 20 20 0a 20 20 20 69 66 .%.&.(~no_image_file),........if
204e0 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 69 29 2c 0a 20 20 20 0a 20 20 20 09 25 66 70 72 69 .active_images(i),.........%fpri
20500 6e 74 66 28 31 2c 27 4c 6f 61 64 69 6e 67 20 69 6d 61 67 65 20 25 64 2e 2e 2e 5c 6e 27 2c 69 29 ntf(1,'Loading.image.%d...\n',i)
20520 3b 0a 20 20 20 0a 20 20 20 09 69 66 20 7e 74 79 70 65 5f 6e 75 6d 62 65 72 69 6e 67 2c 20 20 20 ;.........if.~type_numbering,...
20540 0a 20 20 20 20 20 20 09 6e 75 6d 62 65 72 5f 65 78 74 20 3d 20 20 6e 75 6d 32 73 74 72 28 69 6d ........number_ext.=..num2str(im
20560 61 67 65 5f 6e 75 6d 62 65 72 73 28 69 29 29 3b 0a 20 20 20 09 65 6c 73 65 0a 20 20 20 20 20 20 age_numbers(i));.....else.......
20580 09 6e 75 6d 62 65 72 5f 65 78 74 20 3d 20 73 70 72 69 6e 74 66 28 5b 27 25 2e 27 20 6e 75 6d 32 .number_ext.=.sprintf(['%.'.num2
205a0 73 74 72 28 4e 5f 73 6c 6f 74 73 29 20 27 64 27 5d 2c 69 6d 61 67 65 5f 6e 75 6d 62 65 72 73 28 str(N_slots).'d'],image_numbers(
205c0 69 29 29 3b 0a 20 20 20 09 65 6e 64 3b 0a 20 20 20 09 0a 20 20 20 20 20 20 69 6d 61 5f 6e 61 6d i));.....end;............ima_nam
205e0 65 20 3d 20 5b 63 61 6c 69 62 5f 6e 61 6d 65 20 20 6e 75 6d 62 65 72 5f 65 78 74 20 27 2e 27 20 e.=.[calib_name..number_ext.'.'.
20600 66 6f 72 6d 61 74 5f 69 6d 61 67 65 5d 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 69 66 20 69 format_image];..............if.i
20620 20 3d 3d 20 69 6e 64 5f 61 63 74 69 76 65 28 31 29 2c 0a 20 20 20 20 20 20 20 20 20 66 70 72 69 .==.ind_active(1),..........fpri
20640 6e 74 66 28 31 2c 27 4c 6f 61 64 69 6e 67 20 69 6d 61 67 65 20 27 29 3b 0a 20 20 20 20 20 20 65 ntf(1,'Loading.image.');.......e
20660 6e 64 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 69 66 20 65 78 69 73 74 28 69 6d 61 5f 6e 61 nd;..............if.exist(ima_na
20680 6d 65 29 2c 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 me),....................fprintf(
206a0 31 2c 27 25 64 2e 2e 2e 27 2c 69 29 3b 0a 20 20 20 20 20 20 09 0a 20 20 20 20 20 20 09 69 66 20 1,'%d...',i);................if.
206c0 66 6f 72 6d 61 74 5f 69 6d 61 67 65 28 31 29 20 3d 3d 20 27 70 27 2c 0a 20 20 20 20 20 20 20 20 format_image(1).==.'p',.........
206e0 20 09 49 69 20 3d 20 64 6f 75 62 6c 65 28 70 67 6d 72 65 61 64 28 69 6d 61 5f 6e 61 6d 65 29 29 ..Ii.=.double(pgmread(ima_name))
20700 3b 0a 20 20 20 20 20 20 09 65 6c 73 65 0a 20 20 20 20 20 20 09 09 69 66 20 66 6f 72 6d 61 74 5f ;........else.........if.format_
20720 69 6d 61 67 65 28 31 29 20 3d 3d 20 27 72 27 2c 0a 20 20 20 20 20 20 20 20 20 09 09 49 69 20 3d image(1).==.'r',............Ii.=
20740 20 72 65 61 64 72 61 73 28 69 6d 61 5f 6e 61 6d 65 29 3b 0a 20 20 20 09 09 09 65 6c 73 65 0a 20 .readras(ima_name);.......else..
20760 20 20 20 20 20 09 09 09 49 69 20 3d 20 64 6f 75 62 6c 65 28 69 6d 72 65 61 64 28 69 6d 61 5f 6e ........Ii.=.double(imread(ima_n
20780 61 6d 65 29 29 3b 0a 20 20 20 09 09 09 65 6e 64 3b 0a 20 20 20 20 20 20 09 65 6e 64 3b 0a 20 20 ame));.......end;........end;...
207a0 20 20 20 20 09 0a 20 20 20 09 09 69 66 20 73 69 7a 65 28 49 69 2c 33 29 3e 31 2c 0a 20 20 20 20 ...........if.size(Ii,3)>1,.....
207c0 20 20 09 09 49 69 20 3d 20 49 69 28 3a 2c 3a 2c 32 29 3b 0a 20 20 20 09 09 65 6e 64 3b 0a 20 20 ....Ii.=.Ii(:,:,2);......end;...
207e0 20 0a 20 20 20 09 09 65 76 61 6c 28 5b 27 49 5f 27 20 6e 75 6d 32 73 74 72 28 69 29 20 27 20 3d .......eval(['I_'.num2str(i).'.=
20800 20 49 69 3b 27 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 65 6c 73 65 0a 20 20 .Ii;']);.................else...
20820 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 25 64 2e 2e .................fprintf(1,'%d..
20840 2e 27 2c 69 29 3b 0a 0a 09 09 09 69 6d 61 67 65 73 5f 72 65 61 64 28 69 29 20 3d 20 30 3b 0a 0a .',i);.....images_read(i).=.0;..
20860 09 09 09 6e 6f 5f 69 6d 61 67 65 5f 66 69 6c 65 20 3d 20 31 3b 0a 20 20 20 20 20 20 20 20 20 0a ...no_image_file.=.1;...........
20880 09 09 65 6e 64 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 69 20 3d ..end;...........end;........i.=
208a0 20 69 2b 31 3b 20 20 20 0a 20 20 20 0a 65 6e 64 3b 0a 0a 0a 69 66 20 6e 6f 5f 69 6d 61 67 65 5f .i+1;........end;...if.no_image_
208c0 66 69 6c 65 2c 0a 20 20 20 0a 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 57 41 52 4e 49 4e file,........fprintf(1,'\nWARNIN
208e0 47 21 20 43 61 6e 6e 6f 74 20 6c 6f 61 64 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 69 6d 61 67 65 G!.Cannot.load.calibration.image
20900 73 5c 6e 27 29 3b 0a 20 20 20 0a 65 6c 73 65 0a 20 20 20 0a 20 20 20 66 70 72 69 6e 74 66 28 31 s\n');.....else........fprintf(1
20920 2c 27 5c 6e 27 29 3b 0a 0a 20 20 20 69 66 20 73 69 7a 65 28 49 5f 31 2c 31 29 7e 3d 34 38 30 2c ,'\n');.....if.size(I_1,1)~=480,
20940 0a 20 20 20 09 73 6d 61 6c 6c 5f 63 61 6c 69 62 5f 69 6d 61 67 65 20 3d 20 31 3b 0a 09 65 6c 73 .....small_calib_image.=.1;..els
20960 65 0a 20 20 20 09 73 6d 61 6c 6c 5f 63 61 6c 69 62 5f 69 6d 61 67 65 20 3d 20 30 3b 0a 09 65 6e e.....small_calib_image.=.0;..en
20980 64 3b 0a 20 20 20 0a 20 20 20 5b 48 63 61 6c 2c 57 63 61 6c 5d 20 3d 20 73 69 7a 65 28 49 5f 31 d;........[Hcal,Wcal].=.size(I_1
209a0 29 3b 20 09 25 20 73 69 7a 65 20 6f 66 20 74 68 65 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 69 6d );..%.size.of.the.calibration.im
209c0 61 67 65 0a 20 20 20 0a 20 20 20 5b 6e 79 2c 6e 78 5d 20 3d 20 73 69 7a 65 28 49 5f 31 29 3b 0a age........[ny,nx].=.size(I_1);.
209e0 20 20 20 0a 20 20 20 63 6c 69 63 6b 6e 61 6d 65 20 3d 20 5b 5d 3b 0a 20 20 20 0a 20 20 20 6d 61 .......clickname.=.[];........ma
20a00 70 20 3d 20 67 72 61 79 28 32 35 36 29 3b 0a 20 20 20 0a 09 25 73 74 72 69 6e 67 5f 73 61 76 65 p.=.gray(256);......%string_save
20a20 20 3d 20 27 73 61 76 65 20 63 61 6c 69 62 5f 64 61 74 61 20 6e 5f 69 6d 61 20 74 79 70 65 5f 6e .=.'save.calib_data.n_ima.type_n
20a40 75 6d 62 65 72 69 6e 67 20 4e 5f 73 6c 6f 74 73 20 69 6d 61 67 65 5f 6e 75 6d 62 65 72 73 20 66 umbering.N_slots.image_numbers.f
20a60 6f 72 6d 61 74 5f 69 6d 61 67 65 20 63 61 6c 69 62 5f 6e 61 6d 65 20 48 63 61 6c 20 57 63 61 6c ormat_image.calib_name.Hcal.Wcal
20a80 20 6e 78 20 6e 79 20 6d 61 70 20 73 6d 61 6c 6c 5f 63 61 6c 69 62 5f 69 6d 61 67 65 27 3b 0a 0a .nx.ny.map.small_calib_image';..
20aa0 09 25 65 76 61 6c 28 73 74 72 69 6e 67 5f 73 61 76 65 29 3b 0a 0a 09 64 69 73 70 28 27 64 6f 6e .%eval(string_save);...disp('don
20ac0 65 27 29 3b 0a 09 25 63 6c 69 63 6b 5f 63 61 6c 69 62 3b 0a 0a 65 6e 64 3b 0a 0a 69 66 20 7e 65 e');..%click_calib;..end;..if.~e
20ae0 78 69 73 74 28 27 6d 61 70 27 29 2c 20 6d 61 70 20 3d 20 67 72 61 79 28 32 35 36 29 3b 20 65 6e xist('map'),.map.=.gray(256);.en
20b00 64 3b 0a 0a 0a 0a 0a 0a 29 2c 59 59 5f 6b 6b 28 33 2c 3a 29 2c 2d 59 59 5f 6b 6b 28 32 2c 3a 29 d;......),YY_kk(3,:),-YY_kk(2,:)
20b20 2c 5b 27 6f 27 20 63 6f 6c 6f 72 73 28 72 65 6d 28 6b 6b 2d 31 2c 36 29 2b 31 29 5d 29 3b 0a 20 ,['o'.colors(rem(kk-1,6)+1)]);..
20b40 20 20 68 68 68 3d 20 6d 65 73 68 28 59 59 72 78 2c 59 59 72 7a 2c 2d 59 59 72 79 29 3b 0a 20 20 ..hhh=.mesh(YYrx,YYrz,-YYry);...
20b60 20 73 65 74 28 68 68 68 2c 27 65 64 67 65 63 6f 6c 6f 72 27 2c 63 6f 6c 6f 72 73 28 72 65 6d 28 .set(hhh,'edgecolor',colors(rem(
20b80 6b 6b 2d 31 2c 36 29 2b 31 29 2c 27 6c 69 6e 65 77 69 64 74 68 27 2c 31 29 3b 0a 20 20 20 74 65 kk-1,6)+1),'linewidth',1);....te
20ba0 78 74 28 75 75 28 31 29 2c 75 75 28 33 29 2c 2d 75 75 28 32 29 2c 6e 75 6d 32 73 74 72 28 6b 6b xt(uu(1),uu(3),-uu(2),num2str(kk
20bc0 29 2c 27 66 6f 6e 74 73 69 7a 65 27 2c 31 34 2c 27 63 6f 6c 6f 72 27 2c 63 6f 6c 6f 72 73 28 72 ),'fontsize',14,'color',colors(r
20be0 65 6d 28 6b 6b 2d 31 2c 36 29 2b 31 29 29 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 66 69 67 75 72 65 em(kk-1,6)+1));.....end;..figure
20c00 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 69 6e 69 74 5f 63 61 6c 69 62 5f 70 61 72 61 6d 2e 6d TOOLBOX_calib/init_calib_param.m
20c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20c60 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
20c80 20 20 31 32 37 36 31 20 20 37 30 32 34 30 33 37 33 33 33 20 20 31 32 31 30 31 00 20 00 00 00 00 ..12761..7024037333..12101......
20ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20e00 25 69 6e 69 74 5f 63 61 6c 69 62 5f 70 61 72 61 6d 0a 25 0a 25 49 6e 69 74 69 61 6c 69 7a 61 74 %init_calib_param.%.%Initializat
20e20 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e 74 72 69 6e 73 69 63 20 61 6e 64 20 65 78 74 72 69 6e 73 ion.of.the.intrinsic.and.extrins
20e40 69 63 20 70 61 72 61 6d 65 74 65 72 73 2e 0a 25 52 75 6e 73 20 61 73 20 61 20 73 63 72 69 70 74 ic.parameters..%Runs.as.a.script
20e60 2e 0a 25 0a 25 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6f 62 73 6f 6c 65 74 65 20 77 ..%.%This.function.is.obsolete.w
20e80 69 74 68 20 69 6e 69 74 5f 69 6e 74 72 69 6e 73 69 63 5f 70 61 72 61 6d 20 63 61 6c 6c 65 64 20 ith.init_intrinsic_param.called.
20ea0 66 72 6f 6d 20 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 0a 25 0a 25 49 4e 50 55 54 3a 20 78 5f from.go_calib_optim.%.%INPUT:.x_
20ec0 31 2c 78 5f 32 2c 78 5f 33 2c 2e 2e 2e 3a 20 46 65 61 74 75 72 65 20 6c 6f 63 61 74 69 6f 6e 73 1,x_2,x_3,...:.Feature.locations
20ee0 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 73 0a 25 20 20 20 20 20 20 20 58 5f 31 2c 58 5f 32 2c 58 .on.the.images.%.......X_1,X_2,X
20f00 5f 33 2c 2e 2e 2e 3a 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 67 72 69 64 20 63 6f 6f 72 64 _3,...:.Corresponding.grid.coord
20f20 69 6e 61 74 65 73 0a 25 0a 25 4f 55 54 50 55 54 3a 20 66 63 3a 20 43 61 6d 65 72 61 20 66 6f 63 inates.%.%OUTPUT:.fc:.Camera.foc
20f40 61 6c 20 6c 65 6e 67 74 68 0a 25 20 20 20 20 20 20 20 20 63 63 3a 20 50 72 69 6e 63 69 70 61 6c al.length.%........cc:.Principal
20f60 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 0a 25 09 20 20 20 20 20 20 6b 63 3a 20 44 .point.coordinates.%.......kc:.D
20f80 69 73 74 6f 72 74 69 6f 6e 20 63 6f 65 66 66 69 63 69 65 6e 74 73 0a 25 20 20 20 20 20 20 20 20 istortion.coefficients.%........
20fa0 4b 4b 3a 20 54 68 65 20 63 61 6d 65 72 61 20 6d 61 74 72 69 78 20 28 63 6f 6e 74 61 69 6e 69 6e KK:.The.camera.matrix.(containin
20fc0 67 20 66 63 20 61 6e 64 20 63 63 29 0a 25 20 20 20 20 20 20 20 20 6f 6d 63 5f 31 2c 6f 6d 63 5f g.fc.and.cc).%........omc_1,omc_
20fe0 32 2c 6f 6d 63 5f 33 2c 2e 2e 2e 3a 20 33 44 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 73 2,omc_3,...:.3D.rotation.vectors
21000 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 67 72 69 64 20 70 6f 73 69 74 69 6f 6e 73 20 .attached.to.the.grid.positions.
21020 69 6e 20 73 70 61 63 65 0a 25 20 20 20 20 20 20 20 20 54 63 5f 31 2c 54 63 5f 32 2c 54 63 5f 33 in.space.%........Tc_1,Tc_2,Tc_3
21040 2c 2e 2e 2e 3a 20 33 44 20 74 72 61 6e 73 6c 61 74 69 6f 6e 20 76 65 63 74 6f 72 73 20 61 74 74 ,...:.3D.translation.vectors.att
21060 61 63 68 65 64 20 74 6f 20 74 68 65 20 67 72 69 64 20 70 6f 73 69 74 69 6f 6e 73 20 69 6e 20 73 ached.to.the.grid.positions.in.s
21080 70 61 63 65 0a 25 20 20 20 20 20 20 20 20 52 63 5f 31 2c 52 63 5f 32 2c 52 63 5f 33 2c 2e 2e 2e pace.%........Rc_1,Rc_2,Rc_3,...
210a0 3a 20 33 44 20 72 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 63 65 73 20 63 6f 72 72 65 73 70 6f 6e :.3D.rotation.matrices.correspon
210c0 64 69 6e 67 20 74 6f 20 74 68 65 20 6f 6d 63 20 76 65 63 74 6f 72 73 0a 25 0a 25 4d 65 74 68 6f ding.to.the.omc.vectors.%.%Metho
210e0 64 3a 20 43 6f 6d 70 75 74 65 20 74 68 65 20 70 6c 61 6e 61 72 20 68 6f 6d 6f 67 72 61 70 68 69 d:.Compute.the.planar.homographi
21100 65 73 20 48 5f 31 2c 20 48 5f 32 2c 20 48 5f 33 2c 20 2e 2e 2e 20 61 6e 64 20 63 6f 6d 70 75 74 es.H_1,.H_2,.H_3,.....and.comput
21120 65 73 0a 25 20 20 20 20 20 20 20 20 74 68 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 20 66 63 20 es.%........the.focal.length.fc.
21140 66 72 6f 6d 20 6f 72 74 68 6f 67 6f 6e 61 6c 20 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 73 from.orthogonal.vanishing.points
21160 20 63 6f 6e 73 74 72 61 69 6e 74 2e 0a 25 20 20 20 20 20 20 20 20 54 68 65 20 70 72 69 6e 63 69 .constraint..%........The.princi
21180 70 61 6c 20 70 6f 69 6e 74 20 63 63 20 69 73 20 61 73 73 75 6d 65 64 20 61 74 20 74 68 65 20 63 pal.point.cc.is.assumed.at.the.c
211a0 65 6e 74 65 72 20 6f 66 20 74 68 65 20 69 6d 61 67 65 2e 0a 25 20 20 20 20 20 20 20 20 41 73 73 enter.of.the.image..%........Ass
211c0 75 6d 65 73 20 6e 6f 20 69 6d 61 67 65 20 64 69 73 74 6f 72 74 69 6f 6e 20 28 6b 63 20 3d 20 5b umes.no.image.distortion.(kc.=.[
211e0 30 3b 30 3b 30 3b 30 5d 29 0a 25 20 20 20 20 20 20 20 20 4f 6e 63 65 20 74 68 65 20 69 6e 74 72 0;0;0;0]).%........Once.the.intr
21200 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 61 72 65 20 65 73 74 69 6d 61 74 65 64 2c 20 insic.parameters.are.estimated,.
21220 74 68 65 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 0a 25 20 20 20 20 20 20 the.extrinsic.parameters.%......
21240 20 20 61 72 65 20 63 6f 6d 70 75 74 65 64 20 66 6f 72 20 65 61 63 68 20 69 6d 61 67 65 2e 0a 25 ..are.computed.for.each.image..%
21260 0a 25 4e 6f 74 65 3a 20 54 68 65 20 72 6f 77 20 76 65 63 74 6f 72 20 61 63 74 69 76 65 5f 69 6d .%Note:.The.row.vector.active_im
21280 61 67 65 73 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 7a 65 72 6f 73 20 61 6e 64 20 6f 6e 65 73 2e ages.consists.of.zeros.and.ones.
212a0 20 54 6f 20 64 65 61 63 74 69 76 61 74 65 20 61 6e 20 69 6d 61 67 65 2c 20 73 65 74 20 74 68 65 .To.deactivate.an.image,.set.the
212c0 0a 25 20 20 20 20 20 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 65 6e 74 72 79 20 69 6e 20 74 .%......corresponding.entry.in.t
212e0 68 65 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 20 76 65 63 74 6f 72 20 74 6f 20 7a 65 72 6f 2e he.active_images.vector.to.zero.
21300 0a 25 0a 25 0a 25 49 6d 70 6f 72 74 61 6e 74 20 66 75 6e 63 74 69 6f 6e 73 20 63 61 6c 6c 65 64 .%.%.%Important.functions.called
21320 20 77 69 74 68 69 6e 20 74 68 61 74 20 70 72 6f 67 72 61 6d 3a 0a 25 0a 25 63 6f 6d 70 75 74 65 .within.that.program:.%.%compute
21340 5f 68 6f 6d 6f 67 72 61 70 68 79 2e 6d 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 70 6c 61 6e _homography.m:.Computes.the.plan
21360 61 72 20 68 6f 6d 6f 67 72 61 70 68 79 20 62 65 74 77 65 65 6e 20 70 6f 69 6e 74 73 20 6f 6e 20 ar.homography.between.points.on.
21380 74 68 65 20 67 72 69 64 20 69 6e 20 33 44 2c 20 61 6e 64 20 74 68 65 20 69 6d 61 67 65 20 70 6c the.grid.in.3D,.and.the.image.pl
213a0 61 6e 65 2e 0a 25 0a 25 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 2e 6d 3a 20 43 6f 6d ane..%.%compute_extrinsic.m:.Com
213c0 70 75 74 65 73 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 20 6f 66 20 61 20 67 72 69 64 20 61 73 73 putes.the.location.of.a.grid.ass
213e0 75 6d 69 6e 67 20 6b 6e 6f 77 6e 20 69 6e 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 uming.known.intrinsic.parameters
21400 2e 0a 25 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 68 69 73 20 66 75 ..%......................This.fu
21420 6e 63 74 69 6f 6e 20 69 73 20 63 61 6c 6c 65 64 20 61 74 20 74 68 65 20 69 6e 69 74 69 61 6c 69 nction.is.called.at.the.initiali
21440 7a 61 74 69 6f 6e 20 73 74 65 70 2e 0a 0a 0a 0a 0a 63 68 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d zation.step......check_active_im
21460 61 67 65 73 3b 0a 0a 69 66 20 7e 65 78 69 73 74 28 5b 27 78 5f 27 20 6e 75 6d 32 73 74 72 28 69 ages;..if.~exist(['x_'.num2str(i
21480 6e 64 5f 61 63 74 69 76 65 28 31 29 29 20 5d 29 2c 0a 20 20 20 63 6c 69 63 6b 5f 63 61 6c 69 62 nd_active(1)).]),....click_calib
214a0 3b 0a 65 6e 64 3b 0a 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 49 6e 69 74 69 61 6c 69 7a 61 ;.end;...fprintf(1,'\nInitializa
214c0 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 70 61 72 61 6d 65 74 65 tion.of.the.calibration.paramete
214e0 72 73 20 2d 20 4e 75 6d 62 65 72 20 6f 66 20 69 6d 61 67 65 73 3a 20 25 64 5c 6e 27 2c 6c 65 6e rs.-.Number.of.images:.%d\n',len
21500 67 74 68 28 69 6e 64 5f 61 63 74 69 76 65 29 29 3b 0a 0a 0a 25 20 49 6e 69 74 69 61 6c 69 7a 65 gth(ind_active));...%.Initialize
21520 20 74 68 65 20 68 6f 6d 6f 67 72 61 70 68 69 65 73 3a 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e .the.homographies:..for.kk.=.1:n
21540 5f 69 6d 61 2c 0a 20 20 20 65 76 61 6c 28 5b 27 78 5f 6b 6b 20 3d 20 78 5f 27 20 6e 75 6d 32 73 _ima,....eval(['x_kk.=.x_'.num2s
21560 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 58 5f 6b 6b 20 3d 20 58 tr(kk).';']);....eval(['X_kk.=.X
21580 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 69 66 20 28 69 73 6e _'.num2str(kk).';']);....if.(isn
215a0 61 6e 28 78 5f 6b 6b 28 31 2c 31 29 29 29 2c 0a 20 20 20 20 20 20 69 66 20 61 63 74 69 76 65 5f an(x_kk(1,1))),.......if.active_
215c0 69 6d 61 67 65 73 28 6b 6b 29 2c 0a 20 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 images(kk),..........fprintf(1,'
215e0 57 41 52 4e 49 4e 47 3a 20 43 61 6e 6e 6f 74 20 63 61 6c 69 62 72 61 74 65 20 77 69 74 68 20 69 WARNING:.Cannot.calibrate.with.i
21600 6d 61 67 65 20 25 64 2e 20 4e 65 65 64 20 74 6f 20 65 78 74 72 61 63 74 20 67 72 69 64 20 63 6f mage.%d..Need.to.extract.grid.co
21620 72 6e 65 72 73 20 66 69 72 73 74 2e 5c 6e 27 2c 6b 6b 29 0a 20 20 20 20 20 20 20 20 20 66 70 72 rners.first.\n',kk)..........fpr
21640 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 53 65 74 20 61 63 74 69 76 65 5f 69 6d 61 67 intf(1,'.........Set.active_imag
21660 65 73 28 25 64 29 3d 31 3b 20 61 6e 64 20 72 75 6e 20 45 78 74 72 61 63 74 20 67 72 69 64 20 63 es(%d)=1;.and.run.Extract.grid.c
21680 6f 72 6e 65 72 73 2e 5c 6e 27 2c 6b 6b 29 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 orners.\n',kk).......end;.......
216a0 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 20 3d 20 30 3b 0a 20 20 20 65 6e 64 3b 0a 20 active_images(kk).=.0;....end;..
216c0 20 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 2c 0a 20 20 20 20 20 20 65 76 ..if.active_images(kk),.......ev
216e0 61 6c 28 5b 27 48 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 63 6f 6d 70 75 74 65 al(['H_'.num2str(kk).'.=.compute
21700 5f 68 6f 6d 6f 67 72 61 70 68 79 28 78 5f 6b 6b 2c 58 5f 6b 6b 28 31 3a 32 2c 3a 29 29 3b 27 5d _homography(x_kk,X_kk(1:2,:));']
21720 29 3b 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 65 76 61 6c 28 5b 27 48 5f 27 20 6e 75 6d 32 );....else.......eval(['H_'.num2
21740 73 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 33 2c 33 29 3b 27 5d 29 3b 0a 20 str(kk).'.=.NaN*ones(3,3);']);..
21760 20 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 63 68 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 65 73 ..end;.end;..check_active_images
21780 3b 0a 0a 25 20 69 6e 69 74 69 61 6c 20 67 75 65 73 73 20 66 6f 72 20 70 72 69 6e 63 69 70 61 6c ;..%.initial.guess.for.principal
217a0 20 70 6f 69 6e 74 20 61 6e 64 20 64 69 73 74 6f 72 74 69 6f 6e 3a 0a 0a 69 66 20 7e 65 78 69 73 .point.and.distortion:..if.~exis
217c0 74 28 27 6e 78 27 29 2c 20 5b 6e 79 2c 6e 78 5d 20 3d 20 73 69 7a 65 28 49 29 3b 20 65 6e 64 3b t('nx'),.[ny,nx].=.size(I);.end;
217e0 0a 0a 63 5f 69 6e 69 74 20 3d 20 5b 6e 78 3b 6e 79 5d 2f 32 20 2d 20 30 2e 35 3b 20 25 20 69 6e ..c_init.=.[nx;ny]/2.-.0.5;.%.in
21800 69 74 69 61 6c 69 7a 65 20 61 74 20 74 68 65 20 63 65 6e 74 65 72 20 6f 66 20 74 68 65 20 69 6d itialize.at.the.center.of.the.im
21820 61 67 65 0a 6b 5f 69 6e 69 74 20 3d 20 5b 30 3b 30 3b 30 3b 30 5d 3b 20 25 20 69 6e 69 74 69 61 age.k_init.=.[0;0;0;0];.%.initia
21840 6c 69 7a 65 20 74 6f 20 7a 65 72 6f 20 28 6e 6f 20 64 69 73 74 6f 72 74 69 6f 6e 29 0a 0a 0a 0a lize.to.zero.(no.distortion)....
21860 25 20 43 6f 6d 70 75 74 65 20 65 78 70 6c 69 63 69 74 65 6c 79 20 74 68 65 20 66 6f 63 61 6c 20 %.Compute.explicitely.the.focal.
21880 6c 65 6e 67 74 68 20 75 73 69 6e 67 20 61 6c 6c 20 74 68 65 20 28 6d 75 74 75 61 6c 6c 79 20 6f length.using.all.the.(mutually.o
218a0 72 74 68 6f 67 6f 6e 61 6c 29 20 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 73 0a 25 20 6e 6f rthogonal).vanishing.points.%.no
218c0 74 65 3a 20 54 68 65 20 76 61 6e 69 68 69 6e 67 20 70 6f 69 6e 74 73 20 61 72 65 20 68 69 64 64 te:.The.vanihing.points.are.hidd
218e0 65 6e 20 69 6e 20 74 68 65 20 70 6c 61 6e 61 72 20 63 6f 6c 6c 69 6e 65 61 74 69 6f 6e 73 20 48 en.in.the.planar.collineations.H
21900 5f 6b 6b 0a 0a 41 20 3d 20 5b 5d 3b 0a 62 20 3d 20 5b 5d 3b 0a 0a 25 20 6d 61 74 72 69 78 20 74 _kk..A.=.[];.b.=.[];..%.matrix.t
21920 68 61 74 20 73 75 62 74 72 61 63 74 20 74 68 65 20 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 hat.subtract.the.principal.point
21940 3a 0a 53 75 62 5f 63 63 20 3d 20 5b 31 20 30 20 2d 63 5f 69 6e 69 74 28 31 29 3b 30 20 31 20 2d :.Sub_cc.=.[1.0.-c_init(1);0.1.-
21960 63 5f 69 6e 69 74 28 32 29 3b 30 20 30 20 31 5d 3b 0a 0a 66 6f 72 20 6b 6b 3d 31 3a 6e 5f 69 6d c_init(2);0.0.1];..for.kk=1:n_im
21980 61 2c 0a 20 20 20 0a 20 20 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 2c 0a a,........if.active_images(kk),.
219a0 20 20 20 20 20 20 0a 20 20 20 09 65 76 61 6c 28 5b 27 48 6b 6b 20 3d 20 48 5f 27 20 6e 75 6d 32 ...........eval(['Hkk.=.H_'.num2
219c0 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 09 48 6b 6b 20 3d 20 53 75 62 str(kk).';']);.........Hkk.=.Sub
219e0 5f 63 63 20 2a 20 48 6b 6b 3b 20 20 20 0a 20 20 20 0a 20 20 20 09 25 20 45 78 74 72 61 63 74 20 _cc.*.Hkk;............%.Extract.
21a00 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 73 20 28 64 69 72 65 63 74 20 61 6e 64 20 64 69 61 vanishing.points.(direct.and.dia
21a20 67 6f 6e 61 6c 73 29 3a 0a 20 20 20 0a 20 20 20 09 56 5f 68 6f 72 69 5f 70 69 78 20 3d 20 48 6b gonals):.........V_hori_pix.=.Hk
21a40 6b 28 3a 2c 31 29 3b 0a 20 20 20 09 56 5f 76 65 72 74 5f 70 69 78 20 3d 20 48 6b 6b 28 3a 2c 32 k(:,1);.....V_vert_pix.=.Hkk(:,2
21a60 29 3b 0a 20 20 20 09 56 5f 64 69 61 67 31 5f 70 69 78 20 3d 20 28 48 6b 6b 28 3a 2c 31 29 2b 48 );.....V_diag1_pix.=.(Hkk(:,1)+H
21a80 6b 6b 28 3a 2c 32 29 29 2f 32 3b 0a 20 20 20 09 56 5f 64 69 61 67 32 5f 70 69 78 20 3d 20 28 48 kk(:,2))/2;.....V_diag2_pix.=.(H
21aa0 6b 6b 28 3a 2c 31 29 2d 48 6b 6b 28 3a 2c 32 29 29 2f 32 3b 0a 20 20 20 0a 20 20 20 09 56 5f 68 kk(:,1)-Hkk(:,2))/2;.........V_h
21ac0 6f 72 69 5f 70 69 78 20 3d 20 56 5f 68 6f 72 69 5f 70 69 78 2f 6e 6f 72 6d 28 56 5f 68 6f 72 69 ori_pix.=.V_hori_pix/norm(V_hori
21ae0 5f 70 69 78 29 3b 0a 20 20 20 09 56 5f 76 65 72 74 5f 70 69 78 20 3d 20 56 5f 76 65 72 74 5f 70 _pix);.....V_vert_pix.=.V_vert_p
21b00 69 78 2f 6e 6f 72 6d 28 56 5f 76 65 72 74 5f 70 69 78 29 3b 0a 20 20 20 09 56 5f 64 69 61 67 31 ix/norm(V_vert_pix);.....V_diag1
21b20 5f 70 69 78 20 3d 20 56 5f 64 69 61 67 31 5f 70 69 78 2f 6e 6f 72 6d 28 56 5f 64 69 61 67 31 5f _pix.=.V_diag1_pix/norm(V_diag1_
21b40 70 69 78 29 3b 0a 20 20 20 09 56 5f 64 69 61 67 32 5f 70 69 78 20 3d 20 56 5f 64 69 61 67 32 5f pix);.....V_diag2_pix.=.V_diag2_
21b60 70 69 78 2f 6e 6f 72 6d 28 56 5f 64 69 61 67 32 5f 70 69 78 29 3b 0a 20 20 20 20 20 20 0a 20 20 pix/norm(V_diag2_pix);..........
21b80 20 20 20 20 61 31 20 3d 20 56 5f 68 6f 72 69 5f 70 69 78 28 31 29 3b 0a 20 20 20 20 20 20 62 31 ....a1.=.V_hori_pix(1);.......b1
21ba0 20 3d 20 56 5f 68 6f 72 69 5f 70 69 78 28 32 29 3b 0a 20 20 20 20 20 20 63 31 20 3d 20 56 5f 68 .=.V_hori_pix(2);.......c1.=.V_h
21bc0 6f 72 69 5f 70 69 78 28 33 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 09 61 32 20 3d 20 56 5f 76 65 ori_pix(3);............a2.=.V_ve
21be0 72 74 5f 70 69 78 28 31 29 3b 0a 20 20 20 09 62 32 20 3d 20 56 5f 76 65 72 74 5f 70 69 78 28 32 rt_pix(1);.....b2.=.V_vert_pix(2
21c00 29 3b 0a 20 20 20 09 63 32 20 3d 20 56 5f 76 65 72 74 5f 70 69 78 28 33 29 3b 0a 20 20 20 09 0a );.....c2.=.V_vert_pix(3);......
21c20 20 20 20 09 61 33 20 3d 20 56 5f 64 69 61 67 31 5f 70 69 78 28 31 29 3b 0a 20 20 20 09 62 33 20 ....a3.=.V_diag1_pix(1);.....b3.
21c40 3d 20 56 5f 64 69 61 67 31 5f 70 69 78 28 32 29 3b 0a 20 20 20 09 63 33 20 3d 20 56 5f 64 69 61 =.V_diag1_pix(2);.....c3.=.V_dia
21c60 67 31 5f 70 69 78 28 33 29 3b 0a 20 20 20 09 0a 20 20 20 09 61 34 20 3d 20 56 5f 64 69 61 67 32 g1_pix(3);..........a4.=.V_diag2
21c80 5f 70 69 78 28 31 29 3b 0a 20 20 20 09 62 34 20 3d 20 56 5f 64 69 61 67 32 5f 70 69 78 28 32 29 _pix(1);.....b4.=.V_diag2_pix(2)
21ca0 3b 0a 20 20 20 09 63 34 20 3d 20 56 5f 64 69 61 67 32 5f 70 69 78 28 33 29 3b 0a 20 09 0a 20 09 ;.....c4.=.V_diag2_pix(3);......
21cc0 20 20 20 41 5f 6b 6b 20 3d 20 5b 61 31 2a 61 32 20 20 62 31 2a 62 32 3b 0a 09 20 20 20 20 09 20 ...A_kk.=.[a1*a2..b1*b2;........
21ce0 20 20 20 61 33 2a 61 34 20 20 62 33 2a 62 34 5d 3b 0a 20 20 20 0a 20 20 20 09 62 5f 6b 6b 20 3d ...a3*a4..b3*b4];.........b_kk.=
21d00 20 2d 5b 63 31 2a 63 32 3b 63 33 2a 63 34 5d 3b 0a 20 20 20 09 0a 09 09 0a 20 20 20 09 41 20 3d .-[c1*c2;c3*c4];.............A.=
21d20 20 5b 41 3b 41 5f 6b 6b 5d 3b 0a 20 20 20 09 62 20 3d 20 5b 62 3b 62 5f 6b 6b 5d 3b 0a 20 20 20 .[A;A_kk];.....b.=.[b;b_kk];....
21d40 20 20 20 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 0a 25 20 75 73 65 20 61 6c 6c .......end;.....end;...%.use.all
21d60 20 74 68 65 20 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 73 20 74 6f 20 65 73 74 69 6d 61 74 .the.vanishing.points.to.estimat
21d80 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 3a 0a 0a 66 5f 69 6e 69 74 20 3d 20 73 71 72 74 28 61 e.focal.length:..f_init.=.sqrt(a
21da0 62 73 28 31 2e 2f 28 69 6e 76 28 41 27 2a 41 29 2a 41 27 2a 62 29 29 29 3b 20 25 20 69 66 20 75 bs(1./(inv(A'*A)*A'*b)));.%.if.u
21dc0 73 69 6e 67 20 61 20 74 77 6f 2d 66 6f 63 61 6c 20 6d 6f 64 65 6c 20 66 6f 72 20 69 6e 69 74 69 sing.a.two-focal.model.for.initi
21de0 61 6c 20 67 75 65 73 73 0a 0a 25 66 5f 69 6e 69 74 20 3d 20 73 71 72 74 28 62 27 2a 28 73 75 6d al.guess..%f_init.=.sqrt(b'*(sum
21e00 28 41 27 29 27 29 20 2f 20 28 62 27 2a 62 29 29 20 2a 20 6f 6e 65 73 28 32 2c 31 29 3b 20 25 20 (A')')./.(b'*b)).*.ones(2,1);.%.
21e20 69 66 20 73 69 6e 67 6c 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 20 6d 6f 64 65 6c 20 69 73 20 if.single.focal.length.model.is.
21e40 75 73 65 64 0a 0a 0a 25 20 47 6c 6f 62 61 6c 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 6d 61 74 72 used...%.Global.calibration.matr
21e60 69 78 20 28 69 6e 69 74 69 61 6c 20 67 75 65 73 73 29 3a 0a 20 20 20 09 0a 4b 4b 20 3d 20 5b 66 ix.(initial.guess):......KK.=.[f
21e80 5f 69 6e 69 74 28 31 29 20 30 20 63 5f 69 6e 69 74 28 31 29 3b 30 20 66 5f 69 6e 69 74 28 32 29 _init(1).0.c_init(1);0.f_init(2)
21ea0 20 63 5f 69 6e 69 74 28 32 29 3b 20 30 20 30 20 31 5d 3b 0a 69 6e 76 5f 4b 4b 20 3d 20 69 6e 76 .c_init(2);.0.0.1];.inv_KK.=.inv
21ec0 28 4b 4b 29 3b 0a 0a 0a 63 63 20 3d 20 63 5f 69 6e 69 74 3b 0a 66 63 20 3d 20 66 5f 69 6e 69 74 (KK);...cc.=.c_init;.fc.=.f_init
21ee0 3b 0a 6b 63 20 3d 20 6b 5f 69 6e 69 74 3b 0a 0a 0a 25 20 43 6f 6d 70 75 74 69 6e 67 20 6f 66 20 ;.kc.=.k_init;...%.Computing.of.
21f00 74 68 65 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 28 66 72 6f 6d 20 74 the.extrinsic.parameters.(from.t
21f20 68 65 20 63 6f 6c 6c 69 6e 65 61 74 69 6f 6e 73 29 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f he.collineations)..for.kk.=.1:n_
21f40 69 6d 61 2c 0a 20 20 20 0a 20 20 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 ima,........if.active_images(kk)
21f60 2c 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 0a 20 20 20 09 65 76 61 6c 28 5b 27 78 5f 6b 6b 20 ,...................eval(['x_kk.
21f80 3d 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 20 20 20 65 =.x_'.num2str(kk).';']);.......e
21fa0 76 61 6c 28 5b 27 58 5f 6b 6b 20 3d 20 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 val(['X_kk.=.X_'.num2str(kk).';'
21fc0 5d 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 5b 6f 6d 63 6b 6b 2c 54 63 6b 6b 5d 20 3d 20 ]);..............[omckk,Tckk].=.
21fe0 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 28 78 5f 6b 6b 2c 58 5f 6b 6b 2c 66 63 2c 63 compute_extrinsic(x_kk,X_kk,fc,c
22000 63 2c 6b 63 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 52 63 6b 6b 20 3d 20 72 6f 64 72 69 c,kc);..............Rckk.=.rodri
22020 67 75 65 73 28 6f 6d 63 5f 6b 6b 29 3b 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 65 6c 73 65 0a gues(omc_kk);..............else.
22040 20 20 20 20 20 20 0a 20 20 20 20 20 20 6f 6d 63 6b 6b 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 33 2c .............omckk.=.NaN*ones(3,
22060 31 29 3b 0a 20 20 20 20 20 20 54 63 6b 6b 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 33 2c 31 29 3b 0a 1);.......Tckk.=.NaN*ones(3,1);.
22080 20 20 20 20 20 20 52 63 6b 6b 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 33 2c 33 29 3b 0a 20 20 20 20 ......Rckk.=.NaN*ones(3,3);.....
220a0 20 20 0a 09 65 6e 64 3b 0a 0a 20 20 20 65 76 61 6c 28 5b 27 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 ....end;.....eval(['omc_'.num2st
220c0 72 28 6b 6b 29 20 27 20 3d 20 6f 6d 63 6b 6b 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 52 r(kk).'.=.omckk;']);....eval(['R
220e0 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 52 63 6b 6b 3b 27 5d 29 3b 0a 20 20 c_'.num2str(kk).'.=.Rckk;']);...
22100 20 65 76 61 6c 28 5b 27 54 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 54 63 6b .eval(['Tc_'.num2str(kk).'.=.Tck
22120 6b 3b 27 5d 29 3b 0a 20 20 20 20 20 20 0a 65 6e 64 3b 0a 0a 0a 25 20 49 6e 69 74 69 61 6c 69 7a k;']);........end;...%.Initializ
22140 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 20 66 6f 72 20 67 6c 6f 62 ation.of.the.parameters.for.glob
22160 61 6c 20 6d 69 6e 69 6d 69 7a 61 74 69 6f 6e 3a 0a 0a 69 6e 69 74 5f 70 61 72 61 6d 20 3d 20 5b al.minimization:..init_param.=.[
22180 66 5f 69 6e 69 74 3b 6b 5f 69 6e 69 74 5d 3b 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d f_init;k_init];..for.kk.=.1:n_im
221a0 61 2c 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 69 6e 69 74 5f 70 61 72 61 6d 20 3d 20 5b 69 6e a,.......eval(['init_param.=.[in
221c0 69 74 5f 70 61 72 61 6d 3b 20 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 20 54 it_param;.omc_'.num2str(kk).';.T
221e0 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 5d 3b 27 5d 29 3b 0a 65 6e 64 3b 0a 0a 73 6f c_'.num2str(kk).'];']);.end;..so
22200 6c 75 74 69 6f 6e 5f 69 6e 69 74 20 3d 20 5b 69 6e 69 74 5f 70 61 72 61 6d 3b 63 5f 69 6e 69 74 lution_init.=.[init_param;c_init
22220 5d 3b 0a 0a 73 6f 6c 75 74 69 6f 6e 20 3d 20 73 6f 6c 75 74 69 6f 6e 5f 69 6e 69 74 3b 0a 0a 63 ];..solution.=.solution_init;..c
22240 6f 6d 70 5f 65 72 72 6f 72 5f 63 61 6c 69 62 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 5c omp_error_calib;..fprintf(1,'\n\
22260 6e 43 61 6c 69 62 72 61 74 69 6f 6e 20 70 61 72 61 6d 65 74 65 72 73 20 61 66 74 65 72 20 69 6e nCalibration.parameters.after.in
22280 69 74 69 61 6c 69 7a 61 74 69 6f 6e 3a 5c 6e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 itialization:\n\n');.fprintf(1,'
222a0 46 6f 63 61 6c 20 4c 65 6e 67 74 68 3a 20 20 20 20 20 66 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 Focal.Length:.....fc.=.[.%3.5f..
222c0 20 25 33 2e 35 66 5d 5c 6e 27 2c 66 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 50 72 69 6e 63 .%3.5f]\n',fc);.fprintf(1,'Princ
222e0 69 70 61 6c 20 70 6f 69 6e 74 3a 20 20 63 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 ipal.point:..cc.=.[.%3.5f...%3.5
22300 66 5d 5c 6e 27 2c 63 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 44 69 73 74 6f 72 74 69 6f 6e f]\n',cc);.fprintf(1,'Distortion
22320 3a 20 20 20 20 20 20 20 6b 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 20 20 20 25 :.......kc.=.[.%3.5f...%3.5f...%
22340 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 6b 63 29 3b 20 20 20 0a 66 70 72 69 6e 74 66 3.5f...%3.5f]\n',kc);....fprintf
22360 28 31 2c 27 50 69 78 65 6c 20 65 72 72 6f 72 3a 20 20 20 20 20 20 65 72 72 20 3d 20 5b 20 25 33 (1,'Pixel.error:......err.=.[.%3
22380 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 5c 6e 27 2c 65 72 72 5f 73 74 64 29 3b 20 0a 0a 0a 25 .5f...%3.5f]\n\n',err_std);....%
223a0 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 47 52 41 50 48 49 43 41 4c 20 4f 55 %%%%%%%%%%%%%%%%%%%.GRAPHICAL.OU
223c0 54 50 55 54 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 0a 0a 25 TPUT.%%%%%%%%%%%%%%%%%%%%%%%%..%
223e0 67 72 61 70 68 6f 75 74 5f 63 61 6c 69 62 3b 0a 0a 20 20 4f 6e 63 65 20 74 68 65 20 69 6e 74 72 graphout_calib;....Once.the.intr
22400 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 6c 6f 61 64 69 6e 67 5f 63 61 6c 69 62 2e 6d 00 00 00 TOOLBOX_calib/loading_calib.m...
22420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22460 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
22480 20 20 20 20 33 34 33 20 20 37 30 32 34 30 33 37 33 33 35 20 20 31 31 33 32 36 00 20 00 00 00 00 ....343..7024037335..11326......
224a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
224c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
224e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
225a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
225c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
225e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22600 69 66 20 7e 65 78 69 73 74 28 27 43 61 6c 69 62 5f 52 65 73 75 6c 74 73 2e 6d 61 74 27 29 2c 0a if.~exist('Calib_Results.mat'),.
22620 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 43 61 6c 69 62 72 61 74 69 6f 6e 20 66 69 6c 65 ...fprintf(1,'\nCalibration.file
22640 20 43 61 6c 69 62 5f 52 65 73 75 6c 74 73 2e 6d 61 74 20 6e 6f 74 20 66 6f 75 6e 64 21 5c 6e 27 .Calib_Results.mat.not.found!\n'
22660 29 3b 0a 20 20 20 72 65 74 75 72 6e 3b 0a 65 6e 64 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c );....return;.end;..fprintf(1,'\
22680 6e 4c 6f 61 64 69 6e 67 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 72 65 73 75 6c 74 73 20 66 72 6f nLoading.calibration.results.fro
226a0 6d 20 43 61 6c 69 62 5f 52 65 73 75 6c 74 73 2e 6d 61 74 5c 6e 27 29 3b 0a 0a 6c 6f 61 64 20 43 m.Calib_Results.mat\n');..load.C
226c0 61 6c 69 62 5f 52 65 73 75 6c 74 73 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 64 6f 6e 65 5c 6e 27 alib_Results..fprintf(1,'done\n'
226e0 29 3b 0a 6e 00 00 04 94 00 02 35 db 00 24 00 15 72 65 63 6f 6d 70 5f 63 6f 72 6e 65 72 5f 63 61 );.n......5..$..recomp_corner_ca
22700 6c 69 62 2e 6d 00 04 94 00 00 04 a4 00 02 35 dc 00 14 00 06 72 65 63 74 2e 6d 00 65 00 00 04 c0 lib.m.........5.....rect.m.e....
22720 00 02 35 dd 00 20 00 12 52 65 63 74 61 6e 67 6c 65 32 53 71 75 61 72 65 2e 6d 00 65 00 00 04 dc ..5.....Rectangle2Square.m.e....
22740 00 02 35 de 00 20 00 11 72 65 70 72 6f 6a 65 63 74 5f 63 61 6c 69 62 2e 6d 00 00 65 00 00 04 f0 ..5.....reproject_calib.m..e....
22760 00 02 35 df 00 18 00 0b 72 6f 64 72 69 67 75 65 73 2e 6d 00 00 00 05 04 00 02 35 e0 00 18 00 0a ..5.....rodrigues.m.......5.....
22780 72 6f 74 61 74 69 6f 6e 2e 6d 00 72 00 00 05 1c 00 02 36 9f 00 1c 00 0e 73 61 76 69 6e 67 5f 63 rotation.m.r......6.....saving_c
227a0 61 6c 69 62 2e 6d 00 6e 00 00 05 3c 00 02 36 a0 00 24 00 17 73 63 72 69 70 74 5f 66 69 74 5f 64 alib.m.n...<..6..$..script_fit_d
227c0 69 73 74 6f 72 74 69 6f 6e 2e 6d 00 00 00 05 5c 00 02 36 a1 00 24 00 16 73 65 6c 65 63 74 5f 73 istortion.m....\..6..$..select_s
227e0 6f 6c 5f 6e 6f 5f 63 65 6e 74 65 72 2e 6d 00 5c 00 00 05 80 00 02 36 a2 00 28 00 18 73 65 6c 65 ol_no_center.m.\......6..(..sele
22800 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 4d 75 6c 74 69 5f 43 61 6c 69 62 5f 6f 75 6c 75 2e 6d TOOLBOX_calib/Multi_Calib_oulu.m
22820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22860 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
22880 20 20 20 20 32 33 32 20 20 37 30 32 34 30 33 37 33 33 37 20 20 31 32 30 30 36 00 20 00 00 00 00 ....232..7024037337..12006......
228a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
228c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
228e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
229a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
229c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
229e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22a00 0a 25 20 65 6e 74 65 72 20 69 6d 61 67 65 20 6e 61 6d 65 73 2c 20 6e 75 6d 62 65 72 73 2c 20 2e .%.enter.image.names,.numbers,..
22a20 2e 2e 0a 64 61 74 61 5f 63 61 6c 69 62 3b 0a 0a 25 72 65 61 64 20 69 6d 61 67 65 73 20 66 72 6f ...data_calib;..%read.images.fro
22a40 6d 20 66 69 6c 65 73 0a 69 6d 61 5f 72 65 61 64 5f 63 61 6c 69 62 3b 0a 0a 63 6c 69 63 6b 5f 63 m.files.ima_read_calib;..click_c
22a60 61 6c 69 62 3b 0a 0a 25 67 6f 5f 63 61 6c 69 62 3b 20 25 20 74 68 65 20 6f 72 69 67 69 6e 61 6c alib;..%go_calib;.%.the.original
22a80 20 76 65 72 73 69 6f 6e 0a 0a 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 3b 0a 00 10 70 72 6f 6a .version..go_calib_optim;...proj
22aa0 65 63 74 5f 70 6f 69 6e 74 73 2e 6d 00 00 04 60 00 00 04 74 00 02 35 da 00 18 00 09 72 65 61 64 ect_points.m...`...t..5.....read
22ac0 72 61 73 2e 6d 00 2e 6d 00 00 04 94 00 02 35 db 00 24 00 15 72 65 63 6f 6d 70 5f 63 6f 72 6e 65 ras.m..m......5..$..recomp_corne
22ae0 72 5f 63 61 6c 69 62 2e 6d 00 35 db 00 00 04 a4 00 02 35 dc 00 14 00 06 72 65 63 74 2e 6d 00 61 r_calib.m.5.......5.....rect.m.a
22b00 00 00 04 c0 00 02 35 dd 00 20 00 12 52 65 63 74 61 6e 67 6c 65 32 53 71 75 61 72 65 2e 6d 00 c0 ......5.....Rectangle2Square.m..
22b20 00 00 04 dc 00 02 35 de 00 20 00 11 72 65 70 72 6f 6a 65 63 74 5f 63 61 6c 69 62 2e 6d 00 04 dc ......5.....reproject_calib.m...
22b40 00 00 04 f0 00 02 35 df 00 18 00 0b 72 6f 64 72 69 67 75 65 73 2e 6d 00 00 00 05 04 00 02 35 e0 ......5.....rodrigues.m.......5.
22b60 00 18 00 0a 72 6f 74 61 74 69 6f 6e 2e 6d 00 65 00 00 05 1c 00 02 36 9f 00 1c 00 0e 73 61 76 69 ....rotation.m.e......6.....savi
22b80 6e 67 5f 63 61 6c 69 62 2e 6d 00 72 00 00 05 3c 00 02 36 a0 00 24 00 17 73 63 72 69 70 74 5f 66 ng_calib.m.r...<..6..$..script_f
22ba0 69 74 5f 64 69 73 74 6f 72 74 69 6f 6e 2e 6d 00 00 00 05 5c 00 02 36 a1 00 24 00 16 73 65 6c 65 it_distortion.m....\..6..$..sele
22bc0 63 74 5f 73 6f 6c 5f 6e 6f 5f 63 65 6e 74 65 72 2e 6d 00 a1 00 00 05 80 00 02 36 a2 00 28 00 18 ct_sol_no_center.m........6..(..
22be0 73 65 6c 65 63 74 5f 73 6f 6c 5f 6e 6f 5f 63 65 6e 74 65 72 33 44 2e 6d 00 28 00 18 00 00 05 a4 select_sol_no_center3D.m.(......
22c00 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 6d 75 6c 74 69 5f 65 72 72 6f 72 5f 6f 75 6c 75 2e 6d TOOLBOX_calib/multi_error_oulu.m
22c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22c60 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
22c80 20 20 20 31 37 33 37 20 20 37 30 32 34 30 33 37 33 34 30 20 20 31 32 32 31 32 00 20 00 00 00 00 ...1737..7024037340..12212......
22ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22e00 66 75 6e 63 74 69 6f 6e 20 65 78 20 3d 20 6d 75 6c 74 69 5f 65 72 72 6f 72 5f 6f 75 6c 75 28 70 function.ex.=.multi_error_oulu(p
22e20 61 72 61 6d 2c 6e 5f 69 6d 61 2c 63 63 29 3b 0a 0a 67 6c 6f 62 61 6c 20 58 5f 31 20 78 5f 31 20 aram,n_ima,cc);..global.X_1.x_1.
22e40 58 5f 32 20 78 5f 32 20 58 5f 33 20 78 5f 33 20 58 5f 34 20 78 5f 34 20 58 5f 35 20 78 5f 35 20 X_2.x_2.X_3.x_3.X_4.x_4.X_5.x_5.
22e60 58 5f 36 20 78 5f 36 20 58 5f 37 20 78 5f 37 20 58 5f 38 20 78 5f 38 20 58 5f 39 20 78 5f 39 20 X_6.x_6.X_7.x_7.X_8.x_8.X_9.x_9.
22e80 58 5f 31 30 20 78 5f 31 30 20 58 5f 31 31 20 78 5f 31 31 20 58 5f 31 32 20 78 5f 31 32 20 58 5f X_10.x_10.X_11.x_11.X_12.x_12.X_
22ea0 31 33 20 78 5f 31 33 20 58 5f 31 34 20 78 5f 31 34 20 58 5f 31 35 20 78 5f 31 35 20 58 5f 31 36 13.x_13.X_14.x_14.X_15.x_15.X_16
22ec0 20 78 5f 31 36 20 58 5f 31 37 20 78 5f 31 37 20 58 5f 31 38 20 78 5f 31 38 20 58 5f 31 39 20 78 .x_16.X_17.x_17.X_18.x_18.X_19.x
22ee0 5f 31 39 20 58 5f 32 30 20 78 5f 32 30 20 58 5f 32 31 20 78 5f 32 31 20 58 5f 32 32 20 78 5f 32 _19.X_20.x_20.X_21.x_21.X_22.x_2
22f00 32 20 58 5f 32 33 20 78 5f 32 33 20 58 5f 32 34 20 78 5f 32 34 20 58 5f 32 35 20 78 5f 32 35 20 2.X_23.x_23.X_24.x_24.X_25.x_25.
22f20 58 5f 32 36 20 78 5f 32 36 20 58 5f 32 37 20 78 5f 32 37 20 58 5f 32 38 20 78 5f 32 38 20 58 5f X_26.x_26.X_27.x_27.X_28.x_28.X_
22f40 32 39 20 78 5f 32 39 20 58 5f 33 30 20 78 5f 33 30 0a 0a 66 63 20 3d 20 70 61 72 61 6d 28 31 3a 29.x_29.X_30.x_30..fc.=.param(1:
22f60 32 29 3b 0a 6b 63 20 3d 20 70 61 72 61 6d 28 33 3a 36 29 3b 0a 25 70 70 63 20 3d 20 70 61 72 61 2);.kc.=.param(3:6);.%ppc.=.para
22f80 6d 28 35 3a 36 29 3b 0a 0a 69 66 20 6c 65 6e 67 74 68 28 70 61 72 61 6d 29 20 3e 20 36 2a 6e 5f m(5:6);..if.length(param).>.6*n_
22fa0 69 6d 61 20 2b 20 33 20 2b 20 33 2c 0a 20 20 20 0a 20 20 20 63 63 20 3d 20 70 61 72 61 6d 28 36 ima.+.3.+.3,........cc.=.param(6
22fc0 2a 6e 5f 69 6d 61 20 2b 20 34 20 2b 20 33 3a 36 2a 6e 5f 69 6d 61 20 2b 20 35 20 2b 20 33 29 3b *n_ima.+.4.+.3:6*n_ima.+.5.+.3);
22fe0 0a 20 20 20 0a 20 20 20 69 66 20 6c 65 6e 67 74 68 28 70 61 72 61 6d 29 20 3e 20 36 2a 6e 5f 69 ........if.length(param).>.6*n_i
23000 6d 61 20 2b 20 35 20 2b 20 33 2c 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 63 5f 64 20 3d 20 70 ma.+.5.+.3,..............c_d.=.p
23020 61 72 61 6d 28 36 2a 6e 5f 69 6d 61 20 2b 20 36 20 2b 20 33 20 3a 36 2a 6e 5f 69 6d 61 20 2b 20 aram(6*n_ima.+.6.+.3.:6*n_ima.+.
23040 37 20 2b 20 33 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 0a 20 20 7.+.3);...........else..........
23060 20 20 20 20 63 5f 64 20 3d 20 5b 30 3b 30 5d 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a ....c_d.=.[0;0];...........end;.
23080 20 20 20 0a 65 6c 73 65 0a 20 20 20 0a 20 20 20 63 5f 64 20 3d 20 5b 30 3b 30 5d 3b 0a 0a 65 6e ....else........c_d.=.[0;0];..en
230a0 64 3b 0a 0a 0a 0a 65 78 20 3d 20 5b 5d 3b 0a 0a 25 6b 65 79 62 6f 61 72 64 3b 0a 0a 66 6f 72 20 d;....ex.=.[];..%keyboard;..for.
230c0 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 0a 20 20 20 6f 6d 63 6b 6b 20 3d 20 70 61 72 kk.=.1:n_ima,........omckk.=.par
230e0 61 6d 28 34 2b 36 2a 28 6b 6b 2d 31 29 20 2b 20 33 3a 36 2a 6b 6b 20 2b 20 33 29 3b 0a 20 20 20 am(4+6*(kk-1).+.3:6*kk.+.3);....
23100 0a 20 20 20 54 63 6b 6b 20 3d 20 70 61 72 61 6d 28 36 2a 6b 6b 2b 31 20 2b 20 33 3a 36 2a 6b 6b ....Tckk.=.param(6*kk+1.+.3:6*kk
23120 2b 33 20 2b 20 33 29 3b 0a 0a 20 20 20 52 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 +3.+.3);.....Rkk.=.rodrigues(omc
23140 6b 6b 29 3b 0a 0a 20 20 20 65 76 61 6c 28 5b 27 79 6b 6b 20 3d 20 70 72 6f 6a 65 63 74 32 5f 6f kk);.....eval(['ykk.=.project2_o
23160 75 6c 75 28 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 2c 52 6b 6b 2c 54 63 6b 6b 2c 66 ulu(X_'.num2str(kk).',Rkk,Tckk,f
23180 63 2c 63 63 2c 6b 63 29 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 65 78 6b 6b c,cc,kc);']);........eval(['exkk
231a0 20 3d 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 2d 79 6b 6b 3b 27 5d 29 3b 0a 0a .=.x_'.num2str(kk).'.-ykk;']);..
231c0 20 20 20 65 78 20 3d 20 5b 65 78 3b 65 78 6b 6b 28 3a 29 5d 3b 0a 20 20 20 0a 65 6e 64 3b 0a 54 ...ex.=.[ex;exkk(:)];.....end;.T
231e0 00 02 36 b4 00 20 00 13 63 68 65 63 6b 5f 63 6f 6e 76 65 72 67 65 6e 63 65 2e 6d 00 00 00 07 70 ..6.....check_convergence.m....p
23200 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 70 67 6d 72 65 61 64 2e 6d 00 00 00 00 00 00 00 00 00 TOOLBOX_calib/pgmread.m.........
23220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23260 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
23280 20 20 20 31 30 33 37 20 20 37 30 32 34 30 33 37 33 34 31 20 20 31 30 32 31 34 00 20 00 00 00 00 ...1037..7024037341..10214......
232a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
232c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
232e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
233a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
233c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
233e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23400 66 75 6e 63 74 69 6f 6e 20 69 6d 67 20 3d 20 70 67 6d 72 65 61 64 28 66 69 6c 65 6e 61 6d 65 29 function.img.=.pgmread(filename)
23420 0a 25 20 66 75 6e 63 74 69 6f 6e 20 69 6d 67 20 3d 20 70 67 6d 72 65 61 64 28 66 69 6c 65 6e 61 .%.function.img.=.pgmread(filena
23440 6d 65 29 0a 25 20 20 20 74 68 69 73 20 69 73 20 6d 79 20 76 65 72 73 69 6f 6e 20 6f 66 20 70 67 me).%...this.is.my.version.of.pg
23460 6d 72 65 61 64 20 66 6f 72 20 74 68 65 20 70 67 6d 20 66 69 6c 65 20 63 72 65 61 74 65 64 20 62 mread.for.the.pgm.file.created.b
23480 79 20 58 56 2e 0a 25 20 20 20 0a 25 20 20 74 68 69 73 20 70 72 6f 67 72 61 6d 20 61 6c 73 6f 20 y.XV..%....%..this.program.also.
234a0 63 6f 72 72 65 63 74 73 20 66 6f 72 20 74 68 65 20 73 68 69 66 74 73 20 69 6e 20 74 68 65 20 69 corrects.for.the.shifts.in.the.i
234c0 6d 61 67 65 20 66 72 6f 6d 20 70 6d 20 66 69 6c 65 2e 0a 0a 66 69 64 20 3d 20 66 6f 70 65 6e 28 mage.from.pm.file...fid.=.fopen(
234e0 66 69 6c 65 6e 61 6d 65 2c 27 72 27 29 3b 0a 66 73 63 61 6e 66 28 66 69 64 2c 20 27 50 35 5c 6e filename,'r');.fscanf(fid,.'P5\n
23500 27 29 3b 0a 63 6d 74 20 3d 20 27 23 27 3b 0a 77 68 69 6c 65 20 66 69 6e 64 73 74 72 28 63 6d 74 ');.cmt.=.'#';.while.findstr(cmt
23520 2c 20 27 23 27 29 2c 0a 20 20 63 6d 74 20 3d 20 66 67 65 74 73 28 66 69 64 29 3b 0a 20 20 20 69 ,.'#'),...cmt.=.fgets(fid);....i
23540 66 20 6c 65 6e 67 74 68 28 66 69 6e 64 73 74 72 28 63 6d 74 2c 20 27 23 27 29 29 20 7e 3d 20 31 f.length(findstr(cmt,.'#')).~=.1
23560 2c 0a 20 20 20 20 20 20 59 58 20 3d 20 73 73 63 61 6e 66 28 63 6d 74 2c 20 27 25 64 20 25 64 27 ,.......YX.=.sscanf(cmt,.'%d.%d'
23580 29 3b 0a 20 20 20 20 20 20 79 20 3d 20 59 58 28 31 29 3b 20 78 20 3d 20 59 58 28 32 29 3b 0a 20 );.......y.=.YX(1);.x.=.YX(2);..
235a0 20 20 65 6e 64 0a 65 6e 64 0a 0a 25 66 67 65 74 73 28 66 69 64 29 3b 0a 0a 25 69 6d 67 20 3d 20 ..end.end..%fgets(fid);..%img.=.
235c0 66 73 63 61 6e 66 28 66 69 64 2c 27 25 64 27 2c 73 69 7a 65 29 3b 0a 25 69 6d 67 20 3d 20 69 6d fscanf(fid,'%d',size);.%img.=.im
235e0 67 27 3b 0a 0a 69 6d 67 20 3d 20 66 72 65 61 64 28 66 69 64 2c 5b 79 2c 78 5d 2c 27 75 69 6e 74 g';..img.=.fread(fid,[y,x],'uint
23600 38 27 29 3b 0a 69 6d 67 20 3d 20 69 6d 67 27 3b 0a 66 63 6c 6f 73 65 28 66 69 64 29 3b 0a 0a 2e 8');.img.=.img';.fclose(fid);...
23620 6d 00 6e 74 00 00 05 f0 00 02 36 a6 00 18 00 09 74 65 73 74 5f 33 64 2e 6d 00 61 72 00 00 06 00 m.nt......6.....test_3d.m.ar....
23640 00 02 33 c0 00 14 00 06 69 73 33 44 2e 6d 00 09 00 00 06 1c 00 02 36 a7 00 20 00 11 75 6e 64 69 ..3.....is3D.m........6.....undi
23660 73 74 6f 72 74 5f 69 6d 61 67 65 2e 6d 00 00 09 00 00 06 34 00 02 36 a8 00 1c 00 0d 55 6e 57 61 stort_image.m......4..6.....UnWa
23680 72 70 50 6c 61 6e 65 2e 6d 00 65 2e 00 00 06 48 00 02 36 a9 00 18 00 0a 77 72 69 74 65 72 61 73 rpPlane.m.e....H..6.....writeras
236a0 2e 6d 00 6c 00 00 06 64 00 02 36 aa 00 20 00 10 65 72 72 6f 72 5f 61 6e 61 6c 79 73 69 73 2e 6d .m.l...d..6.....error_analysis.m
236c0 00 6d 00 6c 00 00 06 78 00 02 36 ab 00 18 00 09 6c 6f 61 64 69 6e 72 2e 6d 00 79 73 00 00 06 8c .m.l...x..6.....loadinr.m.ys....
236e0 00 02 36 ac 00 18 00 09 6c 6f 61 64 70 67 6d 2e 6d 00 61 64 00 00 06 a0 00 02 36 ad 00 18 00 09 ..6.....loadpgm.m.ad......6.....
23700 6c 6f 61 64 70 70 6d 2e 6d 00 61 64 00 00 06 b4 00 02 36 ae 00 18 00 09 73 61 76 65 69 6e 72 2e loadppm.m.ad......6.....saveinr.
23720 6d 00 61 64 00 00 06 c8 00 02 36 af 00 18 00 09 73 61 76 65 70 67 6d 2e 6d 00 76 65 00 00 06 dc m.ad......6.....savepgm.m.ve....
23740 00 02 36 b0 00 18 00 09 73 61 76 65 70 70 6d 2e 6d 00 76 65 00 00 06 fc 00 02 36 b1 00 24 00 16 ..6.....saveppm.m.ve......6..$..
23760 69 6e 69 74 5f 69 6e 74 72 69 6e 73 69 63 5f 70 61 72 61 6d 2e 6d 00 fc 00 00 07 18 00 02 36 b2 init_intrinsic_param.m........6.
23780 00 20 00 11 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 2e 6d 00 00 fc 00 00 07 38 00 02 36 b3 ....mean_std_robust.m......8..6.
237a0 00 24 00 14 72 75 6e 5f 65 72 72 6f 72 5f 61 6e 61 6c 79 73 69 73 2e 6d 00 00 07 38 00 00 07 54 .$..run_error_analysis.m...8...T
237c0 00 02 36 b4 00 20 00 13 63 68 65 63 6b 5f 63 6f 6e 76 65 72 67 65 6e 63 65 2e 6d 00 00 00 07 70 ..6.....check_convergence.m....p
237e0 00 02 36 b5 00 20 00 11 63 68 65 63 6b 5f 70 6c 61 6e 61 72 69 74 79 2e 6d 00 6d 00 00 00 07 88 ..6.....check_planarity.m.m.....
23800 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 70 72 6f 6a 65 63 74 32 5f 6f 75 6c 75 2e 6d 00 00 00 TOOLBOX_calib/project2_oulu.m...
23820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23860 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
23880 20 20 20 32 30 32 33 20 20 37 30 32 34 30 33 37 33 34 32 20 20 31 31 33 36 36 00 20 00 00 00 00 ...2023..7024037342..11366......
238a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
238c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
238e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
239a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
239c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
239e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23a00 66 75 6e 63 74 69 6f 6e 20 5b 78 5d 20 3d 20 70 72 6f 6a 65 63 74 32 5f 6f 75 6c 75 28 58 2c 52 function.[x].=.project2_oulu(X,R
23a20 2c 54 2c 66 2c 74 2c 6b 29 0a 25 50 52 4f 4a 45 43 54 20 20 20 20 20 53 75 62 73 69 64 69 61 72 ,T,f,t,k).%PROJECT.....Subsidiar
23a40 79 20 74 6f 20 63 61 6c 69 62 0a 0a 25 20 20 20 20 20 20 20 20 20 28 63 29 20 50 69 65 74 72 6f y.to.calib..%.........(c).Pietro
23a60 20 50 65 72 6f 6e 61 20 2d 2d 20 4d 61 72 63 68 20 32 34 2c 20 31 39 39 34 0a 25 20 20 20 20 20 .Perona.--.March.24,.1994.%.....
23a80 20 20 20 20 43 61 6c 69 66 6f 72 6e 69 61 20 49 6e 73 74 69 74 75 74 65 20 6f 66 20 54 65 63 68 ....California.Institute.of.Tech
23aa0 6e 6f 6c 6f 67 79 0a 25 20 20 20 20 20 20 20 20 20 50 61 73 61 64 65 6e 61 2c 20 43 41 0a 25 20 nology.%.........Pasadena,.CA.%.
23ac0 20 20 20 20 20 20 20 20 0a 25 20 20 20 20 20 20 20 20 20 52 65 6e 61 6d 65 64 20 62 65 63 61 75 .........%.........Renamed.becau
23ae0 73 65 20 70 72 6f 6a 65 63 74 20 65 78 69 73 74 73 20 69 6e 20 6d 61 74 6c 61 62 20 35 2e 32 21 se.project.exists.in.matlab.5.2!
23b00 21 21 0a 25 20 20 20 20 20 20 20 20 20 4e 6f 77 20 75 73 65 73 20 74 68 65 20 6d 6f 72 65 20 65 !!.%.........Now.uses.the.more.e
23b20 6c 61 62 6f 72 61 74 65 20 69 6e 74 72 69 6e 73 69 63 20 6d 6f 64 65 6c 20 66 72 6f 6d 20 4f 75 laborate.intrinsic.model.from.Ou
23b40 6c 75 0a 0a 0a 0a 5b 6d 2c 6e 5d 20 3d 20 73 69 7a 65 28 58 29 3b 0a 0a 59 20 3d 20 52 2a 58 20 lu....[m,n].=.size(X);..Y.=.R*X.
23b60 2b 20 54 2a 6f 6e 65 73 28 31 2c 6e 29 3b 0a 5a 20 3d 20 59 28 33 2c 3a 29 3b 0a 0a 66 20 3d 20 +.T*ones(1,n);.Z.=.Y(3,:);..f.=.
23b80 66 28 3a 29 3b 20 25 25 20 6d 61 6b 65 20 61 20 63 6f 6c 75 6d 6e 20 76 65 63 74 6f 72 0a 69 66 f(:);.%%.make.a.column.vector.if
23ba0 20 6c 65 6e 67 74 68 28 66 29 3d 3d 31 2c 0a 20 20 20 66 20 3d 20 5b 66 20 66 5d 27 3b 0a 65 6e .length(f)==1,....f.=.[f.f]';.en
23bc0 64 3b 0a 0a 78 20 3d 20 28 59 28 31 3a 32 2c 3a 29 20 2e 2f 20 28 6f 6e 65 73 28 32 2c 31 29 20 d;..x.=.(Y(1:2,:)../.(ones(2,1).
23be0 2a 20 5a 29 29 20 3b 0a 0a 0a 72 61 64 69 75 73 5f 32 20 3d 20 78 28 31 2c 3a 29 2e 5e 32 20 2b *.Z)).;...radius_2.=.x(1,:).^2.+
23c00 20 78 28 32 2c 3a 29 2e 5e 32 3b 0a 0a 69 66 20 6c 65 6e 67 74 68 28 6b 29 20 3e 20 31 2c 0a 0a .x(2,:).^2;..if.length(k).>.1,..
23c20 20 20 20 72 61 64 69 61 6c 5f 64 69 73 74 6f 72 74 69 6f 6e 20 3d 20 31 20 2b 20 6f 6e 65 73 28 ...radial_distortion.=.1.+.ones(
23c40 32 2c 31 29 20 2a 20 28 28 6b 28 31 29 20 2a 20 72 61 64 69 75 73 5f 32 29 20 2b 20 28 6b 28 32 2,1).*.((k(1).*.radius_2).+.(k(2
23c60 29 20 2a 20 72 61 64 69 75 73 5f 32 2e 5e 32 29 29 3b 0a 20 20 20 0a 20 20 20 69 66 20 6c 65 6e ).*.radius_2.^2));........if.len
23c80 67 74 68 28 6b 29 20 3c 20 34 2c 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 64 65 6c 74 61 5f 78 gth(k).<.4,..............delta_x
23ca0 20 3d 20 7a 65 72 6f 73 28 32 2c 6e 29 3b 20 0a 20 20 20 20 20 20 0a 20 20 20 65 6c 73 65 0a 20 .=.zeros(2,n);............else..
23cc0 20 20 0a 20 20 20 20 20 20 64 65 6c 74 61 5f 78 20 3d 20 5b 32 2a 6b 28 33 29 2a 78 28 31 2c 3a .........delta_x.=.[2*k(3)*x(1,:
23ce0 29 2e 2a 78 28 32 2c 3a 29 20 2b 20 6b 28 34 29 2a 28 72 61 64 69 75 73 5f 32 20 2b 20 32 2a 78 ).*x(2,:).+.k(4)*(radius_2.+.2*x
23d00 28 31 2c 3a 29 2e 5e 32 29 20 3b 0a 09 20 20 20 20 6b 28 33 29 20 2a 20 28 72 61 64 69 75 73 5f (1,:).^2).;......k(3).*.(radius_
23d20 32 20 2b 20 32 2a 78 28 32 2c 3a 29 2e 5e 32 29 2b 32 2a 6b 28 34 29 2a 78 28 31 2c 3a 29 2e 2a 2.+.2*x(2,:).^2)+2*k(4)*x(1,:).*
23d40 78 28 32 2c 3a 29 5d 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 0a 0a x(2,:)];...........end;.........
23d60 65 6c 73 65 0a 20 20 20 0a 20 20 20 72 61 64 69 61 6c 5f 64 69 73 74 6f 72 74 69 6f 6e 20 3d 20 else........radial_distortion.=.
23d80 31 20 2b 20 6f 6e 65 73 28 32 2c 31 29 20 2a 20 28 28 6b 28 31 29 20 2a 20 72 61 64 69 75 73 5f 1.+.ones(2,1).*.((k(1).*.radius_
23da0 32 29 29 3b 0a 0a 20 20 20 64 65 6c 74 61 5f 78 20 3d 20 7a 65 72 6f 73 28 32 2c 6e 29 3b 0a 20 2));.....delta_x.=.zeros(2,n);..
23dc0 20 20 0a 65 6e 64 3b 0a 0a 0a 78 20 3d 20 28 78 20 2e 2a 20 72 61 64 69 61 6c 5f 64 69 73 74 6f ...end;...x.=.(x..*.radial_disto
23de0 72 74 69 6f 6e 20 2b 20 64 65 6c 74 61 5f 78 29 2e 2a 20 28 66 20 2a 20 6f 6e 65 73 28 31 2c 6e rtion.+.delta_x).*.(f.*.ones(1,n
23e00 29 29 20 20 2b 20 74 2a 6f 6e 65 73 28 31 2c 6e 29 3b 0a 7a 65 2e 6d 00 00 00 07 b4 00 02 36 b8 ))..+.t*ones(1,n);.ze.m.......6.
23e20 00 1c 00 0e 72 69 67 69 64 5f 6d 6f 74 69 6f 6e 2e 6d 00 00 00 00 07 d8 00 02 36 b9 00 28 00 18 ....rigid_motion.m........6..(..
23e40 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 69 6e 69 74 2e 6d 00 00 00 00 00 00 08 00 compute_extrinsic_init.m........
23e60 00 02 36 ba 00 28 00 1a 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 72 65 66 69 6e 65 ..6..(..compute_extrinsic_refine
23e80 2e 6d 00 27 00 00 0a 00 00 02 36 bb 00 24 00 15 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 .m.'......6..$..go_calib_optim_i
23ea0 74 65 72 2e 6d 00 0a 63 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 74 65 72 2e 6d 00 0a 00 ter.m..cgo_calib_optim_iter.m...
23ec0 00 02 36 bb 00 24 00 15 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 74 65 72 2e 6d 00 0a 00 ..6..$..go_calib_optim_iter.m...
23ee0 00 02 36 bb 00 24 00 15 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 74 65 72 2e 6d 00 36 bb ..6..$..go_calib_optim_iter.m.6.
23f00 00 24 00 15 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 74 65 72 2e 6d 00 0a 00 6c 6c 65 64 .$..go_calib_optim_iter.m...lled
23f20 20 77 69 74 68 69 6e 20 74 68 61 74 20 70 72 6f 67 72 61 6d 3a 0a 25 0a 25 63 6f 6d 70 75 74 65 .within.that.program:.%.%compute
23f40 5f 68 6f 6d 6f 67 72 61 70 68 79 2e 6d 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 70 6c 61 6e _homography.m:.Computes.the.plan
23f60 61 72 20 68 6f 6d 6f 67 72 61 70 68 79 20 62 65 74 77 65 65 6e 20 70 6f 69 6e 74 73 20 6f 6e 20 ar.homography.between.points.on.
23f80 74 68 65 20 67 72 69 64 20 69 6e 20 33 44 2c 20 61 6e 64 20 74 68 65 20 69 6d 61 67 65 20 70 6c the.grid.in.3D,.and.the.image.pl
23fa0 61 6e 65 2e 0a 25 0a 25 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 2e 6d 3a 20 43 6f 6d ane..%.%compute_extrinsic.m:.Com
23fc0 70 75 74 65 73 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 20 6f 66 20 61 20 67 72 69 64 20 61 73 73 putes.the.location.of.a.grid.ass
23fe0 75 6d 69 6e 67 20 6b 6e 6f 77 6e 20 69 6e 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 uming.known.intrinsic.parameters
24000 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 70 72 6f 6a 65 63 74 65 64 47 72 69 64 2e 6d 00 00 00 TOOLBOX_calib/projectedGrid.m...
24020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24060 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
24080 20 20 20 20 37 31 34 20 20 37 30 32 34 30 33 37 33 34 33 20 20 31 31 33 34 35 00 20 00 00 00 00 ....714..7024037343..11345......
240a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
240c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
240e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
241a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
241c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
241e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24200 66 75 6e 63 74 69 6f 6e 20 5b 58 58 2c 48 5d 20 3d 20 70 72 6f 6a 65 63 74 65 64 47 72 69 64 20 function.[XX,H].=.projectedGrid.
24220 28 20 50 31 2c 20 50 32 2c 20 50 33 2c 20 50 34 20 2c 20 6e 78 2c 20 6e 79 29 3b 0a 0a 25 20 6e (.P1,.P2,.P3,.P4.,.nx,.ny);..%.n
24240 65 77 20 66 6f 72 6d 61 6c 69 73 6d 20 75 73 69 6e 67 20 68 6f 6d 6f 67 72 61 70 68 69 65 73 0a ew.formalism.using.homographies.
24260 0a 61 30 30 20 3d 20 5b 50 31 3b 31 5d 3b 0a 61 31 30 20 3d 20 5b 50 32 3b 31 5d 3b 0a 61 31 31 .a00.=.[P1;1];.a10.=.[P2;1];.a11
24280 20 3d 20 5b 50 33 3b 31 5d 3b 0a 61 30 31 20 3d 20 5b 50 34 3b 31 5d 3b 0a 0a 25 20 43 6f 6d 70 .=.[P3;1];.a01.=.[P4;1];..%.Comp
242a0 75 74 65 20 74 68 65 20 70 6c 61 6e 61 72 74 20 63 6f 6c 6c 69 6e 65 61 74 69 6f 6e 3a 0a 0a 5b ute.the.planart.collineation:..[
242c0 48 5d 20 3d 20 63 6f 6d 70 75 74 65 5f 63 6f 6c 6c 69 6e 65 61 74 69 6f 6e 20 28 61 30 30 2c 20 H].=.compute_collineation.(a00,.
242e0 61 31 30 2c 20 61 31 31 2c 20 61 30 31 29 3b 0a 0a 0a 25 20 42 75 69 6c 64 20 74 68 65 20 67 72 a10,.a11,.a01);...%.Build.the.gr
24300 69 64 20 75 73 69 6e 67 20 74 68 65 20 70 6c 61 6e 61 72 20 63 6f 6c 6c 69 6e 65 61 74 69 6f 6e id.using.the.planar.collineation
24320 3a 0a 0a 78 5f 6c 20 3d 20 28 28 30 3a 28 6e 78 2d 31 29 29 27 2a 6f 6e 65 73 28 31 2c 6e 79 29 :..x_l.=.((0:(nx-1))'*ones(1,ny)
24340 29 2f 28 6e 78 2d 31 29 3b 0a 79 5f 6c 20 3d 20 28 6f 6e 65 73 28 6e 78 2c 31 29 2a 28 30 3a 28 )/(nx-1);.y_l.=.(ones(nx,1)*(0:(
24360 6e 79 2d 31 29 29 29 2f 28 6e 79 2d 31 29 3b 0a 0a 70 74 73 20 3d 20 5b 78 5f 6c 28 3a 29 20 79 ny-1)))/(ny-1);..pts.=.[x_l(:).y
24380 5f 6c 28 3a 29 20 6f 6e 65 73 28 6e 78 2a 6e 79 2c 31 29 5d 27 3b 0a 0a 58 58 20 3d 20 48 2a 70 _l(:).ones(nx*ny,1)]';..XX.=.H*p
243a0 74 73 3b 0a 0a 58 58 20 3d 20 58 58 28 31 3a 32 2c 3a 29 20 2e 2f 20 28 6f 6e 65 73 28 32 2c 31 ts;..XX.=.XX(1:2,:)../.(ones(2,1
243c0 29 2a 58 58 28 33 2c 3a 29 29 3b 0a 63 65 6e 74 65 72 33 44 2e 6d 00 1a 00 00 05 dc 00 02 36 a5 )*XX(3,:));.center3D.m........6.
243e0 00 18 00 09 73 74 61 72 74 75 70 2e 6d 00 33 44 00 00 05 f0 00 02 36 a6 00 18 00 09 74 65 73 74 ....startup.m.3D......6.....test
24400 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 2e 6d 00 00 TOOLBOX_calib/project_points.m..
24420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24460 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
24480 20 20 31 35 33 34 33 20 20 37 30 32 34 30 33 37 33 34 33 20 20 31 31 36 36 36 00 20 00 00 00 00 ..15343..7024037343..11666......
244a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
244c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
244e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
245a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
245c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
245e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24600 66 75 6e 63 74 69 6f 6e 20 5b 78 70 2c 64 78 70 64 6f 6d 2c 64 78 70 64 54 2c 64 78 70 64 66 2c function.[xp,dxpdom,dxpdT,dxpdf,
24620 64 78 70 64 63 2c 64 78 70 64 6b 5d 20 3d 20 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 28 58 2c dxpdc,dxpdk].=.project_points(X,
24640 6f 6d 2c 54 2c 66 2c 63 2c 6b 29 0a 0a 25 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 2e 6d 0a 25 om,T,f,c,k)..%project_points.m.%
24660 0a 25 5b 78 70 2c 64 78 70 64 6f 6d 2c 64 78 70 64 54 2c 64 78 70 64 66 2c 64 78 70 64 63 2c 64 .%[xp,dxpdom,dxpdT,dxpdf,dxpdc,d
24680 78 70 64 6b 5d 20 3d 20 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 28 58 2c 6f 6d 2c 54 2c 66 2c xpdk].=.project_points(X,om,T,f,
246a0 63 2c 6b 29 0a 25 0a 25 50 72 6f 6a 65 63 74 73 20 61 20 33 44 20 73 74 72 75 63 74 75 72 65 20 c,k).%.%Projects.a.3D.structure.
246c0 6f 6e 74 6f 20 74 68 65 20 69 6d 61 67 65 20 70 6c 61 6e 65 2e 0a 25 0a 25 49 4e 50 55 54 3a 20 onto.the.image.plane..%.%INPUT:.
246e0 58 3a 20 33 44 20 73 74 72 75 63 74 75 72 65 20 69 6e 20 74 68 65 20 77 6f 72 6c 64 20 63 6f 6f X:.3D.structure.in.the.world.coo
24700 72 64 69 6e 61 74 65 20 66 72 61 6d 65 20 28 33 78 4e 20 6d 61 74 72 69 78 20 66 6f 72 20 4e 20 rdinate.frame.(3xN.matrix.for.N.
24720 70 6f 69 6e 74 73 29 0a 25 20 20 20 20 20 20 20 28 6f 6d 2c 54 29 3a 20 52 69 67 69 64 20 6d 6f points).%.......(om,T):.Rigid.mo
24740 74 69 6f 6e 20 70 61 72 61 6d 65 74 65 72 73 20 62 65 74 77 65 65 6e 20 77 6f 72 6c 64 20 63 6f tion.parameters.between.world.co
24760 6f 72 64 69 6e 61 74 65 20 66 72 61 6d 65 20 61 6e 64 20 63 61 6d 65 72 61 20 72 65 66 65 72 65 ordinate.frame.and.camera.refere
24780 6e 63 65 20 66 72 61 6d 65 0a 25 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 6d 3a 20 72 6f nce.frame.%...............om:.ro
247a0 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 28 33 78 31 20 76 65 63 74 6f 72 29 3b 20 54 3a 20 74 tation.vector.(3x1.vector);.T:.t
247c0 72 61 6e 73 6c 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 28 33 78 31 20 76 65 63 74 6f 72 29 0a 25 ranslation.vector.(3x1.vector).%
247e0 20 20 20 20 20 20 20 66 3a 20 63 61 6d 65 72 61 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 20 69 6e .......f:.camera.focal.length.in
24800 20 75 6e 69 74 73 20 6f 66 20 68 6f 72 69 7a 6f 6e 74 61 6c 20 61 6e 64 20 76 65 72 74 69 63 61 .units.of.horizontal.and.vertica
24820 6c 20 70 69 78 65 6c 20 75 6e 69 74 73 20 28 32 78 31 20 76 65 63 74 6f 72 29 0a 25 20 20 20 20 l.pixel.units.(2x1.vector).%....
24840 20 20 20 63 3a 20 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 6c 6f 63 61 74 69 6f 6e 20 69 ...c:.principal.point.location.i
24860 6e 20 70 69 78 65 6c 20 75 6e 69 74 73 20 28 32 78 31 20 76 65 63 74 6f 72 29 0a 25 20 20 20 20 n.pixel.units.(2x1.vector).%....
24880 20 20 20 6b 3a 20 44 69 73 74 6f 72 74 69 6f 6e 20 63 6f 65 66 66 69 63 69 65 6e 74 73 20 28 72 ...k:.Distortion.coefficients.(r
248a0 61 64 69 61 6c 20 61 6e 64 20 74 61 6e 67 65 6e 74 69 61 6c 29 20 28 34 78 31 20 76 65 63 74 6f adial.and.tangential).(4x1.vecto
248c0 72 29 0a 25 0a 25 4f 55 54 50 55 54 3a 20 78 70 3a 20 50 72 6f 6a 65 63 74 65 64 20 70 69 78 65 r).%.%OUTPUT:.xp:.Projected.pixe
248e0 6c 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 28 32 78 4e 20 6d 61 74 72 69 78 20 66 6f 72 20 4e 20 l.coordinates.(2xN.matrix.for.N.
24900 70 6f 69 6e 74 73 29 0a 25 20 20 20 20 20 20 20 20 64 78 70 64 6f 6d 3a 20 44 65 72 69 76 61 74 points).%........dxpdom:.Derivat
24920 69 76 65 20 6f 66 20 78 70 20 77 69 74 68 20 72 65 73 70 65 63 74 20 74 6f 20 6f 6d 20 28 28 32 ive.of.xp.with.respect.to.om.((2
24940 4e 29 78 33 20 6d 61 74 72 69 78 29 0a 25 20 20 20 20 20 20 20 20 64 78 70 64 54 3a 20 44 65 72 N)x3.matrix).%........dxpdT:.Der
24960 69 76 61 74 69 76 65 20 6f 66 20 78 70 20 77 69 74 68 20 72 65 73 70 65 63 74 20 74 6f 20 54 20 ivative.of.xp.with.respect.to.T.
24980 28 28 32 4e 29 78 33 20 6d 61 74 72 69 78 29 0a 25 20 20 20 20 20 20 20 20 64 78 70 64 66 3a 20 ((2N)x3.matrix).%........dxpdf:.
249a0 44 65 72 69 76 61 74 69 76 65 20 6f 66 20 78 70 20 77 69 74 68 20 72 65 73 70 65 63 74 20 74 6f Derivative.of.xp.with.respect.to
249c0 20 66 20 28 28 32 4e 29 78 32 20 6d 61 74 72 69 78 29 0a 25 20 20 20 20 20 20 20 20 64 78 70 64 .f.((2N)x2.matrix).%........dxpd
249e0 63 3a 20 44 65 72 69 76 61 74 69 76 65 20 6f 66 20 78 70 20 77 69 74 68 20 72 65 73 70 65 63 74 c:.Derivative.of.xp.with.respect
24a00 20 74 6f 20 63 20 28 28 32 4e 29 78 32 20 6d 61 74 72 69 78 29 0a 25 20 20 20 20 20 20 20 20 64 .to.c.((2N)x2.matrix).%........d
24a20 78 70 64 6b 3a 20 44 65 72 69 76 61 74 69 76 65 20 6f 66 20 78 70 20 77 69 74 68 20 72 65 73 70 xpdk:.Derivative.of.xp.with.resp
24a40 65 63 74 20 74 6f 20 6b 20 28 28 32 4e 29 78 34 20 6d 61 74 72 69 78 29 0a 25 0a 25 44 65 66 69 ect.to.k.((2N)x4.matrix).%.%Defi
24a60 6e 69 74 69 6f 6e 73 3a 0a 25 4c 65 74 20 50 20 62 65 20 61 20 70 6f 69 6e 74 20 69 6e 20 33 44 nitions:.%Let.P.be.a.point.in.3D
24a80 20 6f 66 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 58 20 69 6e 20 74 68 65 20 77 6f 72 6c 64 20 72 .of.coordinates.X.in.the.world.r
24aa0 65 66 65 72 65 6e 63 65 20 66 72 61 6d 65 20 28 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 6d 61 eference.frame.(stored.in.the.ma
24ac0 74 72 69 78 20 58 29 0a 25 54 68 65 20 63 6f 6f 72 64 69 6e 61 74 65 20 76 65 63 74 6f 72 20 6f trix.X).%The.coordinate.vector.o
24ae0 66 20 50 20 69 6e 20 74 68 65 20 63 61 6d 65 72 61 20 72 65 66 65 72 65 6e 63 65 20 66 72 61 6d f.P.in.the.camera.reference.fram
24b00 65 20 69 73 3a 20 58 63 20 3d 20 52 2a 58 20 2b 20 54 0a 25 77 68 65 72 65 20 52 20 69 73 20 74 e.is:.Xc.=.R*X.+.T.%where.R.is.t
24b20 68 65 20 72 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 78 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 he.rotation.matrix.corresponding
24b40 20 74 6f 20 74 68 65 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 6f 6d 3a 20 52 20 3d 20 .to.the.rotation.vector.om:.R.=.
24b60 72 6f 64 72 69 67 75 65 73 28 6f 6d 29 3b 0a 25 63 61 6c 6c 20 78 2c 20 79 20 61 6e 64 20 7a 20 rodrigues(om);.%call.x,.y.and.z.
24b80 74 68 65 20 33 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 6f 66 20 58 63 3a 20 78 20 3d 20 58 63 28 the.3.coordinates.of.Xc:.x.=.Xc(
24ba0 31 29 3b 20 79 20 3d 20 58 63 28 32 29 3b 20 7a 20 3d 20 58 63 28 33 29 3b 0a 25 54 68 65 20 70 1);.y.=.Xc(2);.z.=.Xc(3);.%The.p
24bc0 69 6e 65 68 6f 6c 65 20 70 72 6f 6a 65 63 74 69 6f 6e 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 6f inehole.projection.coordinates.o
24be0 66 20 50 20 69 73 20 5b 61 3b 62 5d 20 77 68 65 72 65 20 61 3d 78 2f 7a 20 61 6e 64 20 62 3d 79 f.P.is.[a;b].where.a=x/z.and.b=y
24c00 2f 7a 2e 0a 25 63 61 6c 6c 20 72 5e 32 20 3d 20 61 5e 32 20 2b 20 62 5e 32 2e 0a 25 54 68 65 20 /z..%call.r^2.=.a^2.+.b^2..%The.
24c20 64 69 73 74 6f 72 74 65 64 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 61 72 65 3a distorted.point.coordinates.are:
24c40 20 78 64 20 3d 20 5b 78 78 3b 79 79 5d 20 77 68 65 72 65 3a 0a 25 0a 25 78 78 20 3d 20 61 20 2a .xd.=.[xx;yy].where:.%.%xx.=.a.*
24c60 20 28 31 20 2b 20 6b 63 28 31 29 2a 72 5e 32 20 2b 20 6b 63 28 32 29 2a 72 5e 34 29 20 20 20 20 .(1.+.kc(1)*r^2.+.kc(2)*r^4)....
24c80 20 20 2b 20 20 20 20 20 20 32 2a 6b 63 28 33 29 2a 61 2a 62 20 2b 20 6b 63 28 34 29 2a 28 72 5e ..+......2*kc(3)*a*b.+.kc(4)*(r^
24ca0 32 20 2b 20 32 2a 61 5e 32 29 3b 0a 25 79 79 20 3d 20 62 20 2a 20 28 31 20 2b 20 6b 63 28 31 29 2.+.2*a^2);.%yy.=.b.*.(1.+.kc(1)
24cc0 2a 72 5e 32 20 2b 20 6b 63 28 32 29 2a 72 5e 34 29 20 20 20 20 20 20 2b 20 20 20 20 20 20 6b 63 *r^2.+.kc(2)*r^4)......+......kc
24ce0 28 33 29 2a 28 72 5e 32 20 2b 20 32 2a 62 5e 32 29 20 2b 20 32 2a 6b 63 28 34 29 2a 61 2a 62 3b (3)*(r^2.+.2*b^2).+.2*kc(4)*a*b;
24d00 0a 25 0a 25 54 68 65 20 6c 65 66 74 20 74 65 72 6d 73 20 63 6f 72 72 65 73 70 6f 6e 64 20 74 6f .%.%The.left.terms.correspond.to
24d20 20 72 61 64 69 61 6c 20 64 69 73 74 6f 72 74 69 6f 6e 2c 20 74 68 65 20 72 69 67 68 74 20 74 65 .radial.distortion,.the.right.te
24d40 72 6d 73 20 63 6f 72 72 65 73 70 6f 6e 64 20 74 6f 20 74 61 6e 67 65 6e 74 69 61 6c 20 64 69 73 rms.correspond.to.tangential.dis
24d60 74 6f 72 74 69 6f 6e 0a 25 0a 25 46 69 61 6e 6c 6c 79 2c 20 63 6f 6e 76 65 72 74 69 6f 6e 20 69 tortion.%.%Fianlly,.convertion.i
24d80 6e 74 6f 20 70 69 78 65 6c 20 63 6f 6f 72 64 69 6e 61 74 65 73 3a 20 54 68 65 20 66 69 6e 61 6c nto.pixel.coordinates:.The.final
24da0 20 70 69 78 65 6c 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 76 65 63 74 6f 72 20 78 70 3d 5b 78 78 .pixel.coordinates.vector.xp=[xx
24dc0 70 3b 79 79 70 5d 20 77 68 65 72 65 3a 0a 25 0a 25 78 78 70 20 3d 20 66 28 31 29 2a 78 78 20 2b p;yyp].where:.%.%xxp.=.f(1)*xx.+
24de0 20 63 28 31 29 0a 25 79 79 70 20 3d 20 66 28 32 29 2a 79 79 20 2b 20 63 28 32 29 0a 25 0a 25 0a .c(1).%yyp.=.f(2)*yy.+.c(2).%.%.
24e00 25 4e 4f 54 45 3a 20 41 62 6f 75 74 20 39 30 20 70 65 72 63 65 6e 74 20 6f 66 20 74 68 65 20 63 %NOTE:.About.90.percent.of.the.c
24e20 6f 64 65 20 74 61 6b 65 73 20 63 61 72 65 20 66 6f 20 63 6f 6d 70 75 74 69 6e 67 20 74 68 65 20 ode.takes.care.fo.computing.the.
24e40 4a 61 63 6f 62 69 61 6e 20 6d 61 74 72 69 63 65 73 0a 25 0a 25 0a 25 49 6d 70 6f 72 74 61 6e 74 Jacobian.matrices.%.%.%Important
24e60 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 65 64 20 77 69 74 68 69 6e 20 74 68 61 74 20 70 72 6f .function.called.within.that.pro
24e80 67 72 61 6d 3a 0a 25 0a 25 72 6f 64 72 69 67 75 65 73 2e 6d 3a 20 43 6f 6d 70 75 74 65 73 20 74 gram:.%.%rodrigues.m:.Computes.t
24ea0 68 65 20 72 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 78 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 he.rotation.matrix.corresponding
24ec0 20 74 6f 20 61 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 0a 25 0a 25 72 69 67 69 64 5f 6d .to.a.rotation.vector.%.%rigid_m
24ee0 6f 74 69 6f 6e 2e 6d 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 72 69 67 69 64 20 6d 6f 74 69 otion.m:.Computes.the.rigid.moti
24f00 6f 6e 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 6f 66 20 61 20 67 69 76 65 6e 20 73 74 72 on.transformation.of.a.given.str
24f20 75 63 74 75 72 65 0a 0a 0a 0a 69 66 20 6e 61 72 67 69 6e 20 3c 20 36 2c 0a 20 20 20 6b 20 3d 20 ucture....if.nargin.<.6,....k.=.
24f40 7a 65 72 6f 73 28 34 2c 31 29 3b 0a 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3c 20 35 2c 0a 20 20 zeros(4,1);....if.nargin.<.5,...
24f60 20 20 20 20 63 20 3d 20 7a 65 72 6f 73 28 32 2c 31 29 3b 0a 20 20 20 20 20 20 69 66 20 6e 61 72 ....c.=.zeros(2,1);.......if.nar
24f80 67 69 6e 20 3c 20 34 2c 0a 20 20 20 20 20 20 20 20 20 66 20 3d 20 6f 6e 65 73 28 32 2c 31 29 3b gin.<.4,..........f.=.ones(2,1);
24fa0 0a 20 20 20 20 20 20 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3c 20 33 2c 0a 20 20 20 20 20 20 20 ..........if.nargin.<.3,........
24fc0 20 20 20 20 20 54 20 3d 20 7a 65 72 6f 73 28 33 2c 31 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 .....T.=.zeros(3,1);............
24fe0 20 69 66 20 6e 61 72 67 69 6e 20 3c 20 32 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f .if.nargin.<.2,................o
25000 6d 20 3d 20 7a 65 72 6f 73 28 33 2c 31 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 m.=.zeros(3,1);................i
25020 66 20 6e 61 72 67 69 6e 20 3c 20 31 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 f.nargin.<.1,...................
25040 65 72 72 6f 72 28 27 4e 65 65 64 20 61 74 20 6c 65 61 73 74 20 61 20 33 44 20 73 74 72 75 63 74 error('Need.at.least.a.3D.struct
25060 75 72 65 20 74 6f 20 70 72 6f 6a 65 63 74 20 28 69 6e 20 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 ure.to.project.(in.project_point
25080 73 2e 6d 29 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e s.m)');...................return
250a0 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 20 20 20 20 ;................end;...........
250c0 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 65 6e 64 3b 0a ..end;..........end;.......end;.
250e0 20 20 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 0a 5b 6d 2c 6e 5d 20 3d 20 73 69 7a 65 28 58 29 3b 0a ...end;.end;...[m,n].=.size(X);.
25100 0a 5b 59 2c 64 59 64 6f 6d 2c 64 59 64 54 5d 20 3d 20 72 69 67 69 64 5f 6d 6f 74 69 6f 6e 28 58 .[Y,dYdom,dYdT].=.rigid_motion(X
25120 2c 6f 6d 2c 54 29 3b 0a 0a 0a 69 6e 76 5f 5a 20 3d 20 31 2e 2f 59 28 33 2c 3a 29 3b 0a 0a 78 20 ,om,T);...inv_Z.=.1./Y(3,:);..x.
25140 3d 20 28 59 28 31 3a 32 2c 3a 29 20 2e 2a 20 28 6f 6e 65 73 28 32 2c 31 29 20 2a 20 69 6e 76 5f =.(Y(1:2,:)..*.(ones(2,1).*.inv_
25160 5a 29 29 20 3b 0a 0a 0a 62 62 20 3d 20 28 2d 78 28 31 2c 3a 29 20 2e 2a 20 69 6e 76 5f 5a 29 27 Z)).;...bb.=.(-x(1,:)..*.inv_Z)'
25180 2a 6f 6e 65 73 28 31 2c 33 29 3b 0a 63 63 20 3d 20 28 2d 78 28 32 2c 3a 29 20 2e 2a 20 69 6e 76 *ones(1,3);.cc.=.(-x(2,:)..*.inv
251a0 5f 5a 29 27 2a 6f 6e 65 73 28 31 2c 33 29 3b 0a 0a 0a 64 78 64 6f 6d 20 3d 20 7a 65 72 6f 73 28 _Z)'*ones(1,3);...dxdom.=.zeros(
251c0 32 2a 6e 2c 33 29 3b 0a 64 78 64 6f 6d 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 28 28 69 6e 76 2*n,3);.dxdom(1:2:end,:).=.((inv
251e0 5f 5a 27 29 2a 6f 6e 65 73 28 31 2c 33 29 29 20 2e 2a 20 64 59 64 6f 6d 28 31 3a 33 3a 65 6e 64 _Z')*ones(1,3))..*.dYdom(1:3:end
25200 2c 3a 29 20 2b 20 62 62 20 2e 2a 20 64 59 64 6f 6d 28 33 3a 33 3a 65 6e 64 2c 3a 29 3b 0a 64 78 ,:).+.bb..*.dYdom(3:3:end,:);.dx
25220 64 6f 6d 28 32 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 28 28 69 6e 76 5f 5a 27 29 2a 6f 6e 65 73 28 dom(2:2:end,:).=.((inv_Z')*ones(
25240 31 2c 33 29 29 20 2e 2a 20 64 59 64 6f 6d 28 32 3a 33 3a 65 6e 64 2c 3a 29 20 2b 20 63 63 20 2e 1,3))..*.dYdom(2:3:end,:).+.cc..
25260 2a 20 64 59 64 6f 6d 28 33 3a 33 3a 65 6e 64 2c 3a 29 3b 0a 0a 64 78 64 54 20 3d 20 7a 65 72 6f *.dYdom(3:3:end,:);..dxdT.=.zero
25280 73 28 32 2a 6e 2c 33 29 3b 0a 64 78 64 54 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 28 28 69 6e s(2*n,3);.dxdT(1:2:end,:).=.((in
252a0 76 5f 5a 27 29 2a 6f 6e 65 73 28 31 2c 33 29 29 20 2e 2a 20 64 59 64 54 28 31 3a 33 3a 65 6e 64 v_Z')*ones(1,3))..*.dYdT(1:3:end
252c0 2c 3a 29 20 2b 20 62 62 20 2e 2a 20 64 59 64 54 28 33 3a 33 3a 65 6e 64 2c 3a 29 3b 0a 64 78 64 ,:).+.bb..*.dYdT(3:3:end,:);.dxd
252e0 54 28 32 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 28 28 69 6e 76 5f 5a 27 29 2a 6f 6e 65 73 28 31 2c T(2:2:end,:).=.((inv_Z')*ones(1,
25300 33 29 29 20 2e 2a 20 64 59 64 54 28 32 3a 33 3a 65 6e 64 2c 3a 29 20 2b 20 63 63 20 2e 2a 20 64 3))..*.dYdT(2:3:end,:).+.cc..*.d
25320 59 64 54 28 33 3a 33 3a 65 6e 64 2c 3a 29 3b 0a 0a 0a 25 20 41 64 64 20 64 69 73 74 6f 72 74 69 YdT(3:3:end,:);...%.Add.distorti
25340 6f 6e 3a 0a 0a 72 32 20 3d 20 78 28 31 2c 3a 29 2e 5e 32 20 2b 20 78 28 32 2c 3a 29 2e 5e 32 3b on:..r2.=.x(1,:).^2.+.x(2,:).^2;
25360 0a 0a 0a 0a 64 72 32 64 6f 6d 20 3d 20 32 2a 28 28 78 28 31 2c 3a 29 27 29 2a 6f 6e 65 73 28 31 ....dr2dom.=.2*((x(1,:)')*ones(1
25380 2c 33 29 29 20 2e 2a 20 64 78 64 6f 6d 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 2b 20 32 2a 28 28 78 ,3))..*.dxdom(1:2:end,:).+.2*((x
253a0 28 32 2c 3a 29 27 29 2a 6f 6e 65 73 28 31 2c 33 29 29 20 2e 2a 20 64 78 64 6f 6d 28 32 3a 32 3a (2,:)')*ones(1,3))..*.dxdom(2:2:
253c0 65 6e 64 2c 3a 29 3b 0a 64 72 32 64 54 20 3d 20 32 2a 28 28 78 28 31 2c 3a 29 27 29 2a 6f 6e 65 end,:);.dr2dT.=.2*((x(1,:)')*one
253e0 73 28 31 2c 33 29 29 20 2e 2a 20 64 78 64 54 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 2b 20 32 2a 28 s(1,3))..*.dxdT(1:2:end,:).+.2*(
25400 28 78 28 32 2c 3a 29 27 29 2a 6f 6e 65 73 28 31 2c 33 29 29 20 2e 2a 20 64 78 64 54 28 32 3a 32 (x(2,:)')*ones(1,3))..*.dxdT(2:2
25420 3a 65 6e 64 2c 3a 29 3b 0a 0a 0a 72 34 20 3d 20 72 32 2e 5e 32 3b 0a 0a 64 72 34 64 6f 6d 20 3d :end,:);...r4.=.r2.^2;..dr4dom.=
25440 20 32 2a 28 28 72 32 27 29 2a 6f 6e 65 73 28 31 2c 33 29 29 20 2e 2a 20 64 72 32 64 6f 6d 3b 0a .2*((r2')*ones(1,3))..*.dr2dom;.
25460 64 72 34 64 54 20 3d 20 32 2a 28 28 72 32 27 29 2a 6f 6e 65 73 28 31 2c 33 29 29 20 2e 2a 20 64 dr4dT.=.2*((r2')*ones(1,3))..*.d
25480 72 32 64 54 3b 0a 0a 0a 25 20 52 61 64 69 61 6c 20 64 69 73 74 6f 72 74 69 6f 6e 3a 0a 0a 63 64 r2dT;...%.Radial.distortion:..cd
254a0 69 73 74 20 3d 20 31 20 2b 20 6b 28 31 29 20 2a 20 72 32 20 2b 20 6b 28 32 29 20 2a 20 72 34 3b ist.=.1.+.k(1).*.r2.+.k(2).*.r4;
254c0 0a 0a 64 63 64 69 73 74 64 6f 6d 20 3d 20 6b 28 31 29 20 2a 20 64 72 32 64 6f 6d 20 2b 20 6b 28 ..dcdistdom.=.k(1).*.dr2dom.+.k(
254e0 32 29 20 2a 20 64 72 34 64 6f 6d 3b 0a 64 63 64 69 73 74 64 54 20 3d 20 6b 28 31 29 20 2a 20 64 2).*.dr4dom;.dcdistdT.=.k(1).*.d
25500 72 32 64 54 2b 20 6b 28 32 29 20 2a 20 64 72 34 64 54 3b 0a 64 63 64 69 73 74 64 6b 20 3d 20 5b r2dT+.k(2).*.dr4dT;.dcdistdk.=.[
25520 20 72 32 27 20 72 34 27 20 7a 65 72 6f 73 28 6e 2c 32 29 5d 3b 0a 0a 0a 78 64 31 20 3d 20 78 20 .r2'.r4'.zeros(n,2)];...xd1.=.x.
25540 2e 2a 20 28 6f 6e 65 73 28 32 2c 31 29 2a 63 64 69 73 74 29 3b 0a 0a 64 78 64 31 64 6f 6d 20 3d .*.(ones(2,1)*cdist);..dxd1dom.=
25560 20 7a 65 72 6f 73 28 32 2a 6e 2c 33 29 3b 0a 64 78 64 31 64 6f 6d 28 31 3a 32 3a 65 6e 64 2c 3a .zeros(2*n,3);.dxd1dom(1:2:end,:
25580 29 20 3d 20 28 78 28 31 2c 3a 29 27 2a 6f 6e 65 73 28 31 2c 33 29 29 20 2e 2a 20 64 63 64 69 73 ).=.(x(1,:)'*ones(1,3))..*.dcdis
255a0 74 64 6f 6d 3b 0a 64 78 64 31 64 6f 6d 28 32 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 28 78 28 32 2c tdom;.dxd1dom(2:2:end,:).=.(x(2,
255c0 3a 29 27 2a 6f 6e 65 73 28 31 2c 33 29 29 20 2e 2a 20 64 63 64 69 73 74 64 6f 6d 3b 0a 63 6f 65 :)'*ones(1,3))..*.dcdistdom;.coe
255e0 66 66 20 3d 20 28 72 65 73 68 61 70 65 28 5b 63 64 69 73 74 3b 63 64 69 73 74 5d 2c 32 2a 6e 2c ff.=.(reshape([cdist;cdist],2*n,
25600 31 29 2a 6f 6e 65 73 28 31 2c 33 29 29 3b 0a 64 78 64 31 64 6f 6d 20 3d 20 64 78 64 31 64 6f 6d 1)*ones(1,3));.dxd1dom.=.dxd1dom
25620 20 2b 20 63 6f 65 66 66 2e 2a 20 64 78 64 6f 6d 3b 0a 0a 64 78 64 31 64 54 20 3d 20 7a 65 72 6f .+.coeff.*.dxdom;..dxd1dT.=.zero
25640 73 28 32 2a 6e 2c 33 29 3b 0a 64 78 64 31 64 54 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 28 78 s(2*n,3);.dxd1dT(1:2:end,:).=.(x
25660 28 31 2c 3a 29 27 2a 6f 6e 65 73 28 31 2c 33 29 29 20 2e 2a 20 64 63 64 69 73 74 64 54 3b 0a 64 (1,:)'*ones(1,3))..*.dcdistdT;.d
25680 78 64 31 64 54 28 32 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 28 78 28 32 2c 3a 29 27 2a 6f 6e 65 73 xd1dT(2:2:end,:).=.(x(2,:)'*ones
256a0 28 31 2c 33 29 29 20 2e 2a 20 64 63 64 69 73 74 64 54 3b 0a 64 78 64 31 64 54 20 3d 20 64 78 64 (1,3))..*.dcdistdT;.dxd1dT.=.dxd
256c0 31 64 54 20 2b 20 63 6f 65 66 66 2e 2a 20 64 78 64 54 3b 0a 0a 64 78 64 31 64 6b 20 3d 20 7a 65 1dT.+.coeff.*.dxdT;..dxd1dk.=.ze
256e0 72 6f 73 28 32 2a 6e 2c 34 29 3b 0a 64 78 64 31 64 6b 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 ros(2*n,4);.dxd1dk(1:2:end,:).=.
25700 28 78 28 31 2c 3a 29 27 2a 6f 6e 65 73 28 31 2c 34 29 29 20 2e 2a 20 64 63 64 69 73 74 64 6b 3b (x(1,:)'*ones(1,4))..*.dcdistdk;
25720 0a 64 78 64 31 64 6b 28 32 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 28 78 28 32 2c 3a 29 27 2a 6f 6e .dxd1dk(2:2:end,:).=.(x(2,:)'*on
25740 65 73 28 31 2c 34 29 29 20 2e 2a 20 64 63 64 69 73 74 64 6b 3b 0a 0a 0a 0a 25 20 74 61 6e 67 65 es(1,4))..*.dcdistdk;....%.tange
25760 6e 74 69 61 6c 20 64 69 73 74 6f 72 74 69 6f 6e 3a 0a 0a 61 31 20 3d 20 32 2e 2a 78 28 31 2c 3a ntial.distortion:..a1.=.2.*x(1,:
25780 29 2e 2a 78 28 32 2c 3a 29 3b 0a 61 32 20 3d 20 72 32 20 2b 20 32 2a 78 28 31 2c 3a 29 2e 5e 32 ).*x(2,:);.a2.=.r2.+.2*x(1,:).^2
257a0 3b 0a 61 33 20 3d 20 72 32 20 2b 20 32 2a 78 28 32 2c 3a 29 2e 5e 32 3b 0a 0a 64 65 6c 74 61 5f ;.a3.=.r2.+.2*x(2,:).^2;..delta_
257c0 78 20 3d 20 5b 6b 28 33 29 2a 61 31 20 2b 20 6b 28 34 29 2a 61 32 20 3b 0a 20 20 20 6b 28 33 29 x.=.[k(3)*a1.+.k(4)*a2.;....k(3)
257e0 20 2a 20 61 33 20 2b 20 6b 28 34 29 2a 61 31 5d 3b 0a 0a 0a 64 64 65 6c 74 61 5f 78 64 78 20 3d .*.a3.+.k(4)*a1];...ddelta_xdx.=
25800 20 7a 65 72 6f 73 28 32 2a 6e 2c 32 2a 6e 29 3b 0a 61 61 20 3d 20 28 32 2a 6b 28 33 29 2a 78 28 .zeros(2*n,2*n);.aa.=.(2*k(3)*x(
25820 32 2c 3a 29 2b 36 2a 6b 28 34 29 2a 78 28 31 2c 3a 29 29 27 2a 6f 6e 65 73 28 31 2c 33 29 3b 0a 2,:)+6*k(4)*x(1,:))'*ones(1,3);.
25840 62 62 20 3d 20 28 32 2a 6b 28 33 29 2a 78 28 31 2c 3a 29 2b 32 2a 6b 28 34 29 2a 78 28 32 2c 3a bb.=.(2*k(3)*x(1,:)+2*k(4)*x(2,:
25860 29 29 27 2a 6f 6e 65 73 28 31 2c 33 29 3b 0a 63 63 20 3d 20 28 36 2a 6b 28 33 29 2a 78 28 32 2c ))'*ones(1,3);.cc.=.(6*k(3)*x(2,
25880 3a 29 2b 32 2a 6b 28 34 29 2a 78 28 31 2c 3a 29 29 27 2a 6f 6e 65 73 28 31 2c 33 29 3b 0a 0a 64 :)+2*k(4)*x(1,:))'*ones(1,3);..d
258a0 64 65 6c 74 61 5f 78 64 6f 6d 20 3d 20 7a 65 72 6f 73 28 32 2a 6e 2c 33 29 3b 0a 64 64 65 6c 74 delta_xdom.=.zeros(2*n,3);.ddelt
258c0 61 5f 78 64 6f 6d 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 61 61 20 2e 2a 20 64 78 64 6f 6d 28 a_xdom(1:2:end,:).=.aa..*.dxdom(
258e0 31 3a 32 3a 65 6e 64 2c 3a 29 20 2b 20 62 62 20 2e 2a 20 64 78 64 6f 6d 28 32 3a 32 3a 65 6e 64 1:2:end,:).+.bb..*.dxdom(2:2:end
25900 2c 3a 29 3b 0a 64 64 65 6c 74 61 5f 78 64 6f 6d 28 32 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 62 62 ,:);.ddelta_xdom(2:2:end,:).=.bb
25920 20 2e 2a 20 64 78 64 6f 6d 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 2b 20 63 63 20 2e 2a 20 64 78 64 ..*.dxdom(1:2:end,:).+.cc..*.dxd
25940 6f 6d 28 32 3a 32 3a 65 6e 64 2c 3a 29 3b 0a 0a 64 64 65 6c 74 61 5f 78 64 54 20 3d 20 7a 65 72 om(2:2:end,:);..ddelta_xdT.=.zer
25960 6f 73 28 32 2a 6e 2c 33 29 3b 0a 64 64 65 6c 74 61 5f 78 64 54 28 31 3a 32 3a 65 6e 64 2c 3a 29 os(2*n,3);.ddelta_xdT(1:2:end,:)
25980 20 3d 20 61 61 20 2e 2a 20 64 78 64 54 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 2b 20 62 62 20 2e 2a .=.aa..*.dxdT(1:2:end,:).+.bb..*
259a0 20 64 78 64 54 28 32 3a 32 3a 65 6e 64 2c 3a 29 3b 0a 64 64 65 6c 74 61 5f 78 64 54 28 32 3a 32 .dxdT(2:2:end,:);.ddelta_xdT(2:2
259c0 3a 65 6e 64 2c 3a 29 20 3d 20 62 62 20 2e 2a 20 64 78 64 54 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 :end,:).=.bb..*.dxdT(1:2:end,:).
259e0 2b 20 63 63 20 2e 2a 20 64 78 64 54 28 32 3a 32 3a 65 6e 64 2c 3a 29 3b 0a 0a 64 64 65 6c 74 61 +.cc..*.dxdT(2:2:end,:);..ddelta
25a00 5f 78 64 6b 20 3d 20 7a 65 72 6f 73 28 32 2a 6e 2c 34 29 3b 0a 64 64 65 6c 74 61 5f 78 64 6b 28 _xdk.=.zeros(2*n,4);.ddelta_xdk(
25a20 31 3a 32 3a 65 6e 64 2c 33 29 20 3d 20 61 31 27 3b 0a 64 64 65 6c 74 61 5f 78 64 6b 28 31 3a 32 1:2:end,3).=.a1';.ddelta_xdk(1:2
25a40 3a 65 6e 64 2c 34 29 20 3d 20 61 32 27 3b 0a 64 64 65 6c 74 61 5f 78 64 6b 28 32 3a 32 3a 65 6e :end,4).=.a2';.ddelta_xdk(2:2:en
25a60 64 2c 33 29 20 3d 20 61 33 27 3b 0a 64 64 65 6c 74 61 5f 78 64 6b 28 32 3a 32 3a 65 6e 64 2c 34 d,3).=.a3';.ddelta_xdk(2:2:end,4
25a80 29 20 3d 20 61 31 27 3b 0a 0a 0a 0a 78 64 32 20 3d 20 78 64 31 20 2b 20 64 65 6c 74 61 5f 78 3b ).=.a1';....xd2.=.xd1.+.delta_x;
25aa0 0a 0a 64 78 64 32 64 6f 6d 20 3d 20 64 78 64 31 64 6f 6d 20 2b 20 64 64 65 6c 74 61 5f 78 64 6f ..dxd2dom.=.dxd1dom.+.ddelta_xdo
25ac0 6d 20 3b 0a 64 78 64 32 64 54 20 3d 20 64 78 64 31 64 54 20 2b 20 64 64 65 6c 74 61 5f 78 64 54 m.;.dxd2dT.=.dxd1dT.+.ddelta_xdT
25ae0 3b 0a 64 78 64 32 64 6b 20 3d 20 64 78 64 31 64 6b 20 2b 20 64 64 65 6c 74 61 5f 78 64 6b 20 3b ;.dxd2dk.=.dxd1dk.+.ddelta_xdk.;
25b00 0a 0a 0a 25 20 50 69 78 65 6c 20 63 6f 6f 72 64 69 6e 61 74 65 73 3a 0a 0a 78 70 20 3d 20 78 64 ...%.Pixel.coordinates:..xp.=.xd
25b20 32 20 2e 2a 20 28 66 20 2a 20 6f 6e 65 73 28 31 2c 6e 29 29 20 20 2b 20 20 63 2a 6f 6e 65 73 28 2..*.(f.*.ones(1,n))..+..c*ones(
25b40 31 2c 6e 29 3b 0a 0a 63 6f 65 66 66 20 3d 20 72 65 73 68 61 70 65 28 66 2a 6f 6e 65 73 28 31 2c 1,n);..coeff.=.reshape(f*ones(1,
25b60 6e 29 2c 32 2a 6e 2c 31 29 3b 0a 0a 64 78 70 64 6f 6d 20 3d 20 28 63 6f 65 66 66 2a 6f 6e 65 73 n),2*n,1);..dxpdom.=.(coeff*ones
25b80 28 31 2c 33 29 29 20 2e 2a 20 64 78 64 32 64 6f 6d 3b 0a 64 78 70 64 54 20 3d 20 28 63 6f 65 66 (1,3))..*.dxd2dom;.dxpdT.=.(coef
25ba0 66 2a 6f 6e 65 73 28 31 2c 33 29 29 20 2e 2a 20 64 78 64 32 64 54 3b 0a 64 78 70 64 6b 20 3d 20 f*ones(1,3))..*.dxd2dT;.dxpdk.=.
25bc0 28 63 6f 65 66 66 2a 6f 6e 65 73 28 31 2c 34 29 29 20 2e 2a 20 64 78 64 32 64 6b 3b 0a 0a 64 78 (coeff*ones(1,4))..*.dxd2dk;..dx
25be0 70 64 66 20 3d 20 7a 65 72 6f 73 28 32 2a 6e 2c 32 29 3b 0a 64 78 70 64 66 28 31 3a 32 3a 65 6e pdf.=.zeros(2*n,2);.dxpdf(1:2:en
25c00 64 2c 31 29 20 3d 20 78 64 32 28 31 2c 3a 29 27 3b 0a 64 78 70 64 66 28 32 3a 32 3a 65 6e 64 2c d,1).=.xd2(1,:)';.dxpdf(2:2:end,
25c20 32 29 20 3d 20 78 64 32 28 32 2c 3a 29 27 3b 0a 0a 64 78 70 64 63 20 3d 20 7a 65 72 6f 73 28 32 2).=.xd2(2,:)';..dxpdc.=.zeros(2
25c40 2a 6e 2c 32 29 3b 0a 64 78 70 64 63 28 31 3a 32 3a 65 6e 64 2c 31 29 20 3d 20 6f 6e 65 73 28 6e *n,2);.dxpdc(1:2:end,1).=.ones(n
25c60 2c 31 29 3b 0a 64 78 70 64 63 28 32 3a 32 3a 65 6e 64 2c 32 29 20 3d 20 6f 6e 65 73 28 6e 2c 31 ,1);.dxpdc(2:2:end,2).=.ones(n,1
25c80 29 3b 0a 0a 0a 72 65 74 75 72 6e 3b 0a 0a 25 20 54 65 73 74 20 6f 66 20 74 68 65 20 4a 61 63 6f );...return;..%.Test.of.the.Jaco
25ca0 62 69 61 6e 73 3a 0a 0a 6e 20 3d 20 31 30 3b 0a 0a 58 20 3d 20 31 30 2a 72 61 6e 64 6e 28 33 2c bians:..n.=.10;..X.=.10*randn(3,
25cc0 6e 29 3b 0a 6f 6d 20 3d 20 72 61 6e 64 6e 28 33 2c 31 29 3b 0a 54 20 3d 20 5b 31 30 2a 72 61 6e n);.om.=.randn(3,1);.T.=.[10*ran
25ce0 64 6e 28 32 2c 31 29 3b 34 30 5d 3b 0a 66 20 3d 20 31 30 30 30 2a 72 61 6e 64 28 32 2c 31 29 3b dn(2,1);40];.f.=.1000*rand(2,1);
25d00 0a 63 20 3d 20 31 30 30 30 2a 72 61 6e 64 6e 28 32 2c 31 29 3b 0a 6b 20 3d 20 30 2e 35 2a 72 61 .c.=.1000*randn(2,1);.k.=.0.5*ra
25d20 6e 64 6e 28 34 2c 31 29 3b 0a 0a 0a 5b 78 2c 64 78 64 6f 6d 2c 64 78 64 54 2c 64 78 64 66 2c 64 ndn(4,1);...[x,dxdom,dxdT,dxdf,d
25d40 78 64 63 2c 64 78 64 6b 5d 20 3d 20 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 28 58 2c 6f 6d 2c xdc,dxdk].=.project_points(X,om,
25d60 54 2c 66 2c 63 2c 6b 29 3b 0a 0a 0a 25 20 54 65 73 74 20 6f 6e 20 6f 6d 3a 20 4e 4f 54 20 4f 4b T,f,c,k);...%.Test.on.om:.NOT.OK
25d80 0a 0a 64 6f 6d 20 3d 20 30 2e 30 30 30 30 30 30 30 30 31 20 2a 20 6e 6f 72 6d 28 6f 6d 29 2a 72 ..dom.=.0.000000001.*.norm(om)*r
25da0 61 6e 64 6e 28 33 2c 31 29 3b 0a 6f 6d 32 20 3d 20 6f 6d 20 2b 20 64 6f 6d 3b 0a 0a 5b 78 32 5d andn(3,1);.om2.=.om.+.dom;..[x2]
25dc0 20 3d 20 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 28 58 2c 6f 6d 32 2c 54 2c 66 2c 63 2c 6b 29 .=.project_points(X,om2,T,f,c,k)
25de0 3b 0a 0a 78 5f 70 72 65 64 20 3d 20 78 20 2b 20 72 65 73 68 61 70 65 28 64 78 64 6f 6d 20 2a 20 ;..x_pred.=.x.+.reshape(dxdom.*.
25e00 64 6f 6d 2c 32 2c 6e 29 3b 0a 0a 0a 6e 6f 72 6d 28 78 32 2d 78 29 2f 6e 6f 72 6d 28 78 32 20 2d dom,2,n);...norm(x2-x)/norm(x2.-
25e20 20 78 5f 70 72 65 64 29 0a 0a 0a 25 20 54 65 73 74 20 6f 6e 20 54 3a 20 4f 4b 21 21 0a 0a 64 54 .x_pred)...%.Test.on.T:.OK!!..dT
25e40 20 3d 20 30 2e 30 30 30 31 20 2a 20 6e 6f 72 6d 28 54 29 2a 72 61 6e 64 6e 28 33 2c 31 29 3b 0a .=.0.0001.*.norm(T)*randn(3,1);.
25e60 54 32 20 3d 20 54 20 2b 20 64 54 3b 0a 0a 5b 78 32 5d 20 3d 20 70 72 6f 6a 65 63 74 5f 70 6f 69 T2.=.T.+.dT;..[x2].=.project_poi
25e80 6e 74 73 28 58 2c 6f 6d 2c 54 32 2c 66 2c 63 2c 6b 29 3b 0a 0a 78 5f 70 72 65 64 20 3d 20 78 20 nts(X,om,T2,f,c,k);..x_pred.=.x.
25ea0 2b 20 72 65 73 68 61 70 65 28 64 78 64 54 20 2a 20 64 54 2c 32 2c 6e 29 3b 0a 0a 0a 6e 6f 72 6d +.reshape(dxdT.*.dT,2,n);...norm
25ec0 28 78 32 2d 78 29 2f 6e 6f 72 6d 28 78 32 20 2d 20 78 5f 70 72 65 64 29 0a 0a 0a 0a 25 20 54 65 (x2-x)/norm(x2.-.x_pred)....%.Te
25ee0 73 74 20 6f 6e 20 66 3a 20 4f 4b 21 21 0a 0a 64 66 20 3d 20 30 2e 30 30 31 20 2a 20 6e 6f 72 6d st.on.f:.OK!!..df.=.0.001.*.norm
25f00 28 66 29 2a 72 61 6e 64 6e 28 32 2c 31 29 3b 0a 66 32 20 3d 20 66 20 2b 20 64 66 3b 0a 0a 5b 78 (f)*randn(2,1);.f2.=.f.+.df;..[x
25f20 32 5d 20 3d 20 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 28 58 2c 6f 6d 2c 54 2c 66 32 2c 63 2c 2].=.project_points(X,om,T,f2,c,
25f40 6b 29 3b 0a 0a 78 5f 70 72 65 64 20 3d 20 78 20 2b 20 72 65 73 68 61 70 65 28 64 78 64 66 20 2a k);..x_pred.=.x.+.reshape(dxdf.*
25f60 20 64 66 2c 32 2c 6e 29 3b 0a 0a 0a 6e 6f 72 6d 28 78 32 2d 78 29 2f 6e 6f 72 6d 28 78 32 20 2d .df,2,n);...norm(x2-x)/norm(x2.-
25f80 20 78 5f 70 72 65 64 29 0a 0a 0a 25 20 54 65 73 74 20 6f 6e 20 63 3a 20 4f 4b 21 21 0a 0a 64 63 .x_pred)...%.Test.on.c:.OK!!..dc
25fa0 20 3d 20 30 2e 30 31 20 2a 20 6e 6f 72 6d 28 63 29 2a 72 61 6e 64 6e 28 32 2c 31 29 3b 0a 63 32 .=.0.01.*.norm(c)*randn(2,1);.c2
25fc0 20 3d 20 63 20 2b 20 64 63 3b 0a 0a 5b 78 32 5d 20 3d 20 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 .=.c.+.dc;..[x2].=.project_point
25fe0 73 28 58 2c 6f 6d 2c 54 2c 66 2c 63 32 2c 6b 29 3b 0a 0a 78 5f 70 72 65 64 20 3d 20 78 20 2b 20 s(X,om,T,f,c2,k);..x_pred.=.x.+.
26000 72 65 73 68 61 70 65 28 64 78 64 63 20 2a 20 64 63 2c 32 2c 6e 29 3b 0a 0a 6e 6f 72 6d 28 78 32 reshape(dxdc.*.dc,2,n);..norm(x2
26020 2d 78 29 2f 6e 6f 72 6d 28 78 32 20 2d 20 78 5f 70 72 65 64 29 0a 0a 25 20 54 65 73 74 20 6f 6e -x)/norm(x2.-.x_pred)..%.Test.on
26040 20 6b 3a 20 4f 4b 21 21 0a 0a 64 6b 20 3d 20 30 2e 30 30 31 20 2a 20 6e 6f 72 6d 28 34 29 2a 72 .k:.OK!!..dk.=.0.001.*.norm(4)*r
26060 61 6e 64 6e 28 34 2c 31 29 3b 0a 6b 32 20 3d 20 6b 20 2b 20 64 6b 3b 0a 0a 5b 78 32 5d 20 3d 20 andn(4,1);.k2.=.k.+.dk;..[x2].=.
26080 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 28 58 2c 6f 6d 2c 54 2c 66 2c 63 2c 6b 32 29 3b 0a 0a project_points(X,om,T,f,c,k2);..
260a0 78 5f 70 72 65 64 20 3d 20 78 20 2b 20 72 65 73 68 61 70 65 28 64 78 64 6b 20 2a 20 64 6b 2c 32 x_pred.=.x.+.reshape(dxdk.*.dk,2
260c0 2c 6e 29 3b 0a 0a 6e 6f 72 6d 28 78 32 2d 78 29 2f 6e 6f 72 6d 28 78 32 20 2d 20 78 5f 70 72 65 ,n);..norm(x2-x)/norm(x2.-.x_pre
260e0 64 29 0a 33 44 20 73 74 72 75 63 74 75 72 65 20 69 6e 20 74 68 65 20 77 6f 72 6c 64 20 63 6f 6f d).3D.structure.in.the.world.coo
26100 72 64 69 6e 61 74 65 20 66 72 61 6d 65 20 28 33 78 4e 20 6d 61 74 72 69 78 20 66 6f 72 20 4e 20 rdinate.frame.(3xN.matrix.for.N.
26120 70 6f 69 6e 74 73 29 0a 25 20 20 20 20 20 20 20 28 6f 6d 2c 54 29 3a 20 52 69 67 69 64 20 6d 6f points).%.......(om,T):.Rigid.mo
26140 74 69 6f 6e 20 70 61 72 61 6d 65 74 65 72 73 20 62 65 74 77 65 65 6e 20 77 6f 72 6c 64 20 63 6f tion.parameters.between.world.co
26160 6f 72 64 69 6e 61 74 65 20 66 72 61 6d 65 20 61 6e 64 20 63 61 6d 65 72 61 20 72 65 66 65 72 65 ordinate.frame.and.camera.refere
26180 6e 63 65 20 66 72 61 6d 65 0a 25 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 6d 3a 20 72 6f nce.frame.%...............om:.ro
261a0 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 28 33 78 31 20 76 65 63 74 6f 72 29 3b 20 54 3a 20 74 tation.vector.(3x1.vector);.T:.t
261c0 72 61 6e 73 6c 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 28 33 78 31 20 76 65 63 74 6f 72 29 0a 25 ranslation.vector.(3x1.vector).%
261e0 20 20 20 20 20 20 20 66 3a 20 63 61 6d 65 72 61 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 20 69 6e .......f:.camera.focal.length.in
26200 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 72 65 61 64 72 61 73 2e 6d 00 00 00 00 00 00 00 00 00 TOOLBOX_calib/readras.m.........
26220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
26240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
26260 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
26280 20 20 20 35 33 36 34 20 20 37 30 32 34 30 33 37 33 34 34 20 20 31 30 32 33 30 00 20 00 00 00 00 ...5364..7024037344..10230......
262a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
262c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
262e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
26300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
26320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
26340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
26360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
26380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
263a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
263c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
263e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
26400 66 75 6e 63 74 69 6f 6e 20 5b 58 2c 20 6d 61 70 5d 20 3d 20 72 65 61 64 72 61 73 28 66 69 6c 65 function.[X,.map].=.readras(file
26420 6e 61 6d 65 2c 20 79 73 2c 20 79 65 2c 20 78 73 2c 20 78 65 29 3b 0a 25 52 45 41 44 52 41 53 20 name,.ys,.ye,.xs,.xe);.%READRAS.
26440 52 65 61 64 20 61 6e 20 69 6d 61 67 65 20 66 69 6c 65 20 69 6e 20 73 75 6e 20 72 61 73 74 65 72 Read.an.image.file.in.sun.raster
26460 20 66 6f 72 6d 61 74 2e 0a 25 20 09 20 52 45 41 44 52 41 53 28 27 69 6d 61 67 65 66 69 6c 65 2e .format..%...READRAS('imagefile.
26480 72 61 73 27 29 20 72 65 61 64 73 20 61 20 22 73 75 6e 2e 72 61 73 74 65 72 22 20 69 6d 61 67 65 ras').reads.a."sun.raster".image
264a0 20 66 69 6c 65 2e 0a 25 09 20 5b 58 2c 20 6d 61 70 5d 20 3d 20 52 45 41 44 52 41 53 28 27 69 6d .file..%..[X,.map].=.READRAS('im
264c0 61 67 65 66 69 6c 65 2e 72 61 73 27 29 20 72 65 74 75 72 6e 73 20 62 6f 74 68 20 74 68 65 20 69 agefile.ras').returns.both.the.i
264e0 6d 61 67 65 20 61 6e 64 20 61 20 0a 25 09 20 63 6f 6c 6f 72 20 6d 61 70 2c 20 73 6f 20 74 68 61 mage.and.a..%..color.map,.so.tha
26500 74 0a 25 09 09 5b 58 2c 20 6d 61 70 5d 20 3d 20 72 65 61 64 72 61 73 28 27 69 6d 61 67 65 66 69 t.%..[X,.map].=.readras('imagefi
26520 6c 65 2e 72 61 73 27 29 3b 0a 25 09 09 69 6d 61 67 65 28 58 29 20 0a 25 09 09 63 6f 6c 6f 72 6d le.ras');.%..image(X)..%..colorm
26540 61 70 28 6d 61 70 29 0a 25 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 78 69 73 28 27 65 71 ap(map).%...............axis('eq
26560 75 61 6c 27 29 0a 25 09 20 77 69 6c 6c 20 64 69 73 70 6c 61 79 20 74 68 65 20 72 65 73 75 6c 74 ual').%..will.display.the.result
26580 20 77 69 74 68 20 74 68 65 20 70 72 6f 70 65 72 20 63 6f 6c 6f 72 73 2e 0a 25 09 20 4e 4f 54 45 .with.the.proper.colors..%..NOTE
265a0 3a 20 72 65 61 64 72 61 73 20 63 61 6e 6e 6f 74 20 64 65 61 6c 20 77 69 74 68 20 63 6f 6d 70 6c :.readras.cannot.deal.with.compl
265c0 69 63 61 74 65 64 20 63 6f 6c 6f 72 20 6d 61 70 73 2e 20 20 0a 25 09 20 20 20 20 20 20 20 49 6e icated.color.maps....%........In
265e0 20 66 61 63 74 2c 20 4d 61 74 6c 61 62 20 64 6f 65 73 6e 27 74 20 71 75 69 74 65 20 61 6c 6c 6f .fact,.Matlab.doesn't.quite.allo
26600 77 20 74 6f 20 77 6f 72 6b 20 77 69 74 68 20 63 6f 6c 6f 72 6d 61 70 73 0a 25 09 20 20 20 20 20 w.to.work.with.colormaps.%......
26620 20 20 77 69 74 68 20 6d 6f 72 65 20 74 68 61 6e 20 36 34 20 65 6e 74 72 69 65 73 2e 0a 25 0a 0a ..with.more.than.64.entries..%..
26640 25 25 0a 25 25 09 20 28 43 29 20 54 68 6f 6d 61 73 20 4b 2e 20 4c 65 75 6e 67 20 33 2f 33 30 2f %%.%%..(C).Thomas.K..Leung.3/30/
26660 39 33 2e 0a 25 25 09 20 43 61 6c 69 66 6f 72 6e 69 61 20 49 6e 73 74 69 74 75 74 65 20 6f 66 20 93..%%..California.Institute.of.
26680 54 65 63 68 6e 6f 6c 6f 67 79 2e 0a 25 25 09 20 4d 6f 64 69 66 69 65 64 20 62 79 20 41 6e 64 72 Technology..%%..Modified.by.Andr
266a0 65 61 20 4d 65 6e 6e 75 63 63 69 20 74 6f 20 64 65 61 6c 20 77 69 74 68 20 63 6f 6c 6f 72 20 69 ea.Mennucci.to.deal.with.color.i
266c0 6d 61 67 65 73 0a 25 25 0a 0a 25 20 50 43 20 61 6e 64 20 55 4e 49 58 20 76 65 72 73 69 6f 6e 20 mages.%%..%.PC.and.UNIX.version.
266e0 6f 66 20 72 65 61 64 72 61 73 20 2d 20 4a 65 61 6e 2d 59 76 65 73 20 42 6f 75 67 75 65 74 20 2d of.readras.-.Jean-Yves.Bouguet.-
26700 20 44 65 63 2e 20 31 39 39 38 0a 0a 64 6f 74 20 3d 20 6d 61 78 28 66 69 6e 64 28 66 69 6c 65 6e .Dec..1998..dot.=.max(find(filen
26720 61 6d 65 20 3d 3d 20 27 2e 27 29 29 3b 0a 73 75 66 66 69 78 20 3d 20 66 69 6c 65 6e 61 6d 65 28 ame.==.'.'));.suffix.=.filename(
26740 64 6f 74 2b 31 3a 64 6f 74 2b 33 29 3b 0a 0a 69 66 28 73 74 72 63 6d 70 28 73 75 66 66 69 78 2c dot+1:dot+3);..if(strcmp(suffix,
26760 20 27 72 61 73 27 29 29 09 09 09 25 20 72 61 73 74 65 72 20 66 69 6c 65 20 66 6f 72 6d 61 74 20 .'ras'))...%.raster.file.format.
26780 25 0a 09 66 70 20 3d 20 66 6f 70 65 6e 28 66 69 6c 65 6e 61 6d 65 2c 20 27 72 62 27 29 3b 0a 09 %..fp.=.fopen(filename,.'rb');..
267a0 69 66 28 66 70 3c 30 29 20 65 72 72 6f 72 28 5b 27 43 61 6e 6e 6f 74 20 6f 70 65 6e 20 27 20 66 if(fp<0).error(['Cannot.open.'.f
267c0 69 6c 65 6e 61 6d 65 20 27 2e 27 5d 29 2c 20 65 6e 64 0a 0a 09 25 52 65 61 64 20 61 6e 64 20 63 ilename.'.']),.end...%Read.and.c
267e0 72 61 63 6b 20 74 68 65 20 33 32 2d 62 79 74 65 20 68 65 61 64 65 72 0a 09 66 73 65 65 6b 28 66 rack.the.32-byte.header..fseek(f
26800 70 2c 20 34 2c 20 2d 31 29 3b 20 20 0a 0a 09 77 69 64 74 68 20 09 3d 20 32 5e 32 34 20 2a 20 66 p,.4,.-1);.....width..=.2^24.*.f
26820 72 65 61 64 28 66 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 32 5e 31 36 20 2a 20 66 72 read(fp,.1,.'uchar').+.2^16.*.fr
26840 65 61 64 28 66 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 32 5e 38 20 2a 20 66 72 65 61 ead(fp,.1,.'uchar').+.2^8.*.frea
26860 64 28 66 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 66 72 65 61 64 28 66 70 2c 20 31 2c d(fp,.1,.'uchar').+.fread(fp,.1,
26880 20 27 75 63 68 61 72 27 29 3b 0a 0a 09 68 65 69 67 68 74 20 09 3d 20 32 5e 32 34 20 2a 20 66 72 .'uchar');...height..=.2^24.*.fr
268a0 65 61 64 28 66 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 32 5e 31 36 20 2a 20 66 72 65 ead(fp,.1,.'uchar').+.2^16.*.fre
268c0 61 64 28 66 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 32 5e 38 20 2a 20 66 72 65 61 64 ad(fp,.1,.'uchar').+.2^8.*.fread
268e0 28 66 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 66 72 65 61 64 28 66 70 2c 20 31 2c 20 (fp,.1,.'uchar').+.fread(fp,.1,.
26900 27 75 63 68 61 72 27 29 3b 0a 0a 09 64 65 70 74 68 20 20 09 3d 20 32 5e 32 34 20 2a 20 66 72 65 'uchar');...depth...=.2^24.*.fre
26920 61 64 28 66 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 32 5e 31 36 20 2a 20 66 72 65 61 ad(fp,.1,.'uchar').+.2^16.*.frea
26940 64 28 66 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 32 5e 38 20 2a 20 66 72 65 61 64 28 d(fp,.1,.'uchar').+.2^8.*.fread(
26960 66 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 66 72 65 61 64 28 66 70 2c 20 31 2c 20 27 fp,.1,.'uchar').+.fread(fp,.1,.'
26980 75 63 68 61 72 27 29 3b 0a 0a 09 6c 65 6e 67 74 68 20 09 3d 20 32 5e 32 34 20 2a 20 66 72 65 61 uchar');...length..=.2^24.*.frea
269a0 64 28 66 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 32 5e 31 36 20 2a 20 66 72 65 61 64 d(fp,.1,.'uchar').+.2^16.*.fread
269c0 28 66 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 32 5e 38 20 2a 20 66 72 65 61 64 28 66 (fp,.1,.'uchar').+.2^8.*.fread(f
269e0 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 66 72 65 61 64 28 66 70 2c 20 31 2c 20 27 75 p,.1,.'uchar').+.fread(fp,.1,.'u
26a00 63 68 61 72 27 29 3b 0a 0a 09 74 79 70 65 20 20 20 09 3d 20 32 5e 32 34 20 2a 20 66 72 65 61 64 char');...type....=.2^24.*.fread
26a20 28 66 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 32 5e 31 36 20 2a 20 66 72 65 61 64 28 (fp,.1,.'uchar').+.2^16.*.fread(
26a40 66 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 32 5e 38 20 2a 20 66 72 65 61 64 28 66 70 fp,.1,.'uchar').+.2^8.*.fread(fp
26a60 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 66 72 65 61 64 28 66 70 2c 20 31 2c 20 27 75 63 ,.1,.'uchar').+.fread(fp,.1,.'uc
26a80 68 61 72 27 29 3b 0a 0a 09 6d 61 70 74 79 70 65 20 3d 20 32 5e 32 34 20 2a 20 66 72 65 61 64 28 har');...maptype.=.2^24.*.fread(
26aa0 66 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 32 5e 31 36 20 2a 20 66 72 65 61 64 28 66 fp,.1,.'uchar').+.2^16.*.fread(f
26ac0 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 32 5e 38 20 2a 20 66 72 65 61 64 28 66 70 2c p,.1,.'uchar').+.2^8.*.fread(fp,
26ae0 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 66 72 65 61 64 28 66 70 2c 20 31 2c 20 27 75 63 68 .1,.'uchar').+.fread(fp,.1,.'uch
26b00 61 72 27 29 3b 0a 0a 09 6d 61 70 6c 65 6e 20 20 3d 20 32 5e 32 34 20 2a 20 66 72 65 61 64 28 66 ar');...maplen..=.2^24.*.fread(f
26b20 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 32 5e 31 36 20 2a 20 66 72 65 61 64 28 66 70 p,.1,.'uchar').+.2^16.*.fread(fp
26b40 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 32 5e 38 20 2a 20 66 72 65 61 64 28 66 70 2c 20 ,.1,.'uchar').+.2^8.*.fread(fp,.
26b60 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 66 72 65 61 64 28 66 70 2c 20 31 2c 20 27 75 63 68 61 1,.'uchar').+.fread(fp,.1,.'ucha
26b80 72 27 29 3b 0a 0a 09 6d 61 70 6c 65 6e 20 3d 20 6d 61 70 6c 65 6e 20 2f 20 33 3b 0a 0a 09 69 66 r');...maplen.=.maplen./.3;...if
26ba0 20 6d 61 70 74 79 70 65 20 3d 3d 20 32 09 09 09 09 09 25 20 52 4d 54 5f 52 41 57 0a 09 09 6d 61 .maptype.==.2.....%.RMT_RAW...ma
26bc0 70 20 3d 20 66 72 65 61 64 28 66 70 2c 20 5b 6d 61 70 6c 65 6e 2c 20 33 5d 2c 20 27 75 63 68 61 p.=.fread(fp,.[maplen,.3],.'ucha
26be0 72 27 29 2f 32 35 35 3b 0a 25 09 09 69 66 20 6d 61 70 6c 65 6e 3c 36 34 2c 20 6d 61 70 3d 5b 6d r')/255;.%..if.maplen<64,.map=[m
26c00 61 70 27 2c 7a 65 72 6f 73 28 33 2c 36 34 2d 6d 61 70 6c 65 6e 29 5d 27 3b 6d 61 70 6c 65 6e 3d ap',zeros(3,64-maplen)]';maplen=
26c20 36 34 3b 20 65 6e 64 3b 0a 09 65 6c 73 65 69 66 20 6d 61 70 74 79 70 65 20 3d 3d 20 31 09 09 09 64;.end;..elseif.maptype.==.1...
26c40 09 25 20 52 4d 54 5f 45 51 55 41 4c 5f 52 47 42 0a 09 09 6d 61 70 28 3a 2c 31 29 20 3d 20 66 72 .%.RMT_EQUAL_RGB...map(:,1).=.fr
26c60 65 61 64 28 66 70 2c 20 5b 6d 61 70 6c 65 6e 5d 2c 20 27 75 63 68 61 72 27 29 3b 0a 09 09 6d 61 ead(fp,.[maplen],.'uchar');...ma
26c80 70 28 3a 2c 32 29 20 3d 20 66 72 65 61 64 28 66 70 2c 20 5b 6d 61 70 6c 65 6e 5d 2c 20 27 75 63 p(:,2).=.fread(fp,.[maplen],.'uc
26ca0 68 61 72 27 29 3b 0a 09 09 6d 61 70 28 3a 2c 33 29 20 3d 20 66 72 65 61 64 28 66 70 2c 20 5b 6d har');...map(:,3).=.fread(fp,.[m
26cc0 61 70 6c 65 6e 5d 2c 20 27 75 63 68 61 72 27 29 3b 0a 09 09 25 6d 61 78 6d 61 70 20 3d 20 6d 61 aplen],.'uchar');...%maxmap.=.ma
26ce0 78 28 6d 61 78 28 6d 61 70 29 29 3b 0a 09 09 6d 61 70 20 3d 20 6d 61 70 2f 32 35 35 3b 0a 09 20 x(max(map));...map.=.map/255;...
26d00 20 20 20 20 20 20 20 69 66 20 6d 61 70 6c 65 6e 3c 36 34 2c 20 6d 61 70 3d 5b 6d 61 70 27 2c 7a .......if.maplen<64,.map=[map',z
26d20 65 72 6f 73 28 33 2c 36 34 2d 6d 61 70 6c 65 6e 29 5d 27 3b 20 6d 61 70 6c 65 6e 3d 36 34 3b 20 eros(3,64-maplen)]';.maplen=64;.
26d40 65 6e 64 3b 0a 09 65 6c 73 65 20 09 09 09 09 09 09 25 20 52 4d 54 5f 4e 4f 4e 45 0a 09 09 6d 61 end;..else.......%.RMT_NONE...ma
26d60 70 20 3d 20 5b 5d 3b 0a 09 65 6e 64 0a 25 09 69 66 20 6d 61 70 6c 65 6e 3e 36 34 2c 0a 25 20 20 p.=.[];..end.%.if.maplen>64,.%..
26d80 20 20 20 20 20 20 20 20 20 20 6d 61 70 3d 5b 6d 61 70 27 2c 7a 65 72 6f 73 28 33 2c 32 35 36 2d ..........map=[map',zeros(3,256-
26da0 6d 61 70 6c 65 6e 29 5d 27 3b 0a 25 09 65 6e 64 3b 0a 0a 09 25 20 52 65 61 64 20 74 68 65 20 69 maplen)]';.%.end;...%.Read.the.i
26dc0 6d 61 67 65 0a 0a 09 69 66 20 72 65 6d 28 77 69 64 74 68 2c 32 29 20 3d 3d 20 31 0a 09 09 58 74 mage...if.rem(width,2).==.1...Xt
26de0 20 3d 20 66 72 65 61 64 28 66 70 2c 20 5b 77 69 64 74 68 2b 31 2c 20 68 65 69 67 68 74 5d 2c 20 .=.fread(fp,.[width+1,.height],.
26e00 27 75 63 68 61 72 27 29 3b 0a 09 09 58 20 3d 20 58 74 28 31 3a 77 69 64 74 68 2c 20 3a 29 27 3b 'uchar');...X.=.Xt(1:width,.:)';
26e20 0a 09 65 6c 73 65 0a 09 09 58 74 20 3d 20 66 72 65 61 64 28 66 70 2c 20 5b 77 69 64 74 68 2c 20 ..else...Xt.=.fread(fp,.[width,.
26e40 68 65 69 67 68 74 5d 2c 20 27 75 63 68 61 72 27 29 3b 0a 09 09 58 20 3d 20 58 74 27 3b 0a 09 65 height],.'uchar');...X.=.Xt';..e
26e60 6e 64 0a 09 58 20 3d 20 58 20 2b 20 31 3b 0a 09 66 63 6c 6f 73 65 28 66 70 29 3b 0a 65 6c 73 65 nd..X.=.X.+.1;..fclose(fp);.else
26e80 0a 09 65 72 72 6f 72 28 27 49 6d 61 67 65 20 66 69 6c 65 20 6e 61 6d 65 20 6d 75 73 74 20 65 6e ..error('Image.file.name.must.en
26ea0 64 20 69 6e 20 65 69 74 68 65 72 20 27 27 72 61 73 27 27 20 6f 72 20 27 27 72 61 73 74 27 27 2e d.in.either.''ras''.or.''rast''.
26ec0 27 29 3b 0a 65 6e 64 0a 0a 0a 69 66 20 6e 61 72 67 69 6e 20 3d 3d 20 35 0a 0a 09 58 20 3d 20 58 ');.end...if.nargin.==.5...X.=.X
26ee0 28 79 73 3a 79 65 2c 20 78 73 3a 78 65 29 3b 0a 0a 65 6e 64 20 3d 20 73 69 7a 65 28 58 29 3b 0a (ys:ye,.xs:xe);..end.=.size(X);.
26f00 0a 5b 59 2c 64 59 64 6f 6d 2c 64 59 64 54 5d 20 3d 20 72 69 67 69 64 5f 6d 6f 74 69 6f 6e 28 58 .[Y,dYdom,dYdT].=.rigid_motion(X
26f20 2c 6f 6d 2c 54 29 3b 0a 0a 0a 69 6e 76 5f 5a 20 3d 20 31 2e 2f 59 28 33 2c 3a 29 3b 0a 0a 78 20 ,om,T);...inv_Z.=.1./Y(3,:);..x.
26f40 3d 20 28 59 28 31 3a 32 2c 3a 29 20 2e 2a 20 28 6f 6e 65 73 28 32 2c 31 29 20 2a 20 69 6e 76 5f =.(Y(1:2,:)..*.(ones(2,1).*.inv_
26f60 5a 29 29 20 3b 0a 0a 0a 62 62 20 3d 20 28 2d 78 28 31 2c 3a 29 20 2e 2a 20 69 6e 76 5f 5a 29 27 Z)).;...bb.=.(-x(1,:)..*.inv_Z)'
26f80 2a 6f 6e 65 73 28 31 2c 33 29 3b 0a 63 63 20 3d 20 28 2d 78 28 32 2c 3a 29 20 2e 2a 20 69 6e 76 *ones(1,3);.cc.=.(-x(2,:)..*.inv
26fa0 5f 5a 29 27 2a 6f 6e 65 73 28 31 2c 33 29 3b 0a 0a 0a 64 78 64 6f 6d 20 3d 20 7a 65 72 6f 73 28 _Z)'*ones(1,3);...dxdom.=.zeros(
26fc0 32 2a 6e 2c 33 29 3b 0a 64 78 64 6f 6d 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 28 28 69 6e 76 2*n,3);.dxdom(1:2:end,:).=.((inv
26fe0 5f 5a 27 29 2a 6f 6e 65 73 28 31 2c 33 29 29 20 2e 2a 20 64 59 64 6f 6d 28 31 3a 33 3a 65 6e 64 _Z')*ones(1,3))..*.dYdom(1:3:end
27000 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 72 65 63 6f 6d 70 5f 63 6f 72 6e 65 72 5f 63 61 6c 69 TOOLBOX_calib/recomp_corner_cali
27020 62 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b.m.............................
27040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27060 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
27080 20 20 20 34 31 37 37 20 20 37 30 32 34 30 33 37 33 34 35 20 20 31 32 36 30 30 00 20 00 00 00 00 ...4177..7024037345..12600......
270a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
270c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
270e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
271a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
271c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
271e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27200 25 20 52 65 2d 73 65 6c 65 63 74 20 74 65 20 63 6f 72 6e 65 72 73 20 61 66 74 65 72 20 63 61 6c %.Re-select.te.corners.after.cal
27220 69 62 72 61 74 69 6f 6e 0a 0a 63 68 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 0a ibration..check_active_images;..
27240 69 66 20 7e 65 78 69 73 74 28 5b 27 79 5f 27 20 6e 75 6d 32 73 74 72 28 69 6e 64 5f 61 63 74 69 if.~exist(['y_'.num2str(ind_acti
27260 76 65 28 31 29 29 5d 29 2c 0a 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 4e 65 65 64 20 74 6f 20 ve(1))]),....fprintf(1,'Need.to.
27280 63 61 6c 69 62 72 61 74 65 20 6f 6e 63 65 20 62 65 66 6f 72 65 20 62 65 66 6f 72 65 20 72 65 63 calibrate.once.before.before.rec
272a0 6f 6d 70 75 74 69 6e 67 20 69 6d 61 67 65 20 63 6f 72 6e 65 72 73 2e 20 4d 61 79 62 65 20 6e 65 omputing.image.corners..Maybe.ne
272c0 65 64 20 74 6f 20 6c 6f 61 64 20 43 61 6c 69 62 5f 52 65 73 75 6c 74 73 2e 6d 61 74 20 66 69 6c ed.to.load.Calib_Results.mat.fil
272e0 65 2e 5c 6e 27 29 3b 0a 20 20 20 72 65 74 75 72 6e 3b 0a 65 6e 64 3b 0a 0a 69 66 20 7e 65 78 69 e.\n');....return;.end;..if.~exi
27300 73 74 28 5b 27 49 5f 27 20 6e 75 6d 32 73 74 72 28 69 6e 64 5f 61 63 74 69 76 65 28 31 29 29 5d st(['I_'.num2str(ind_active(1))]
27320 29 2c 0a 20 20 20 69 6d 61 5f 72 65 61 64 5f 63 61 6c 69 62 3b 0a 20 20 20 69 66 20 6e 6f 5f 69 ),....ima_read_calib;....if.no_i
27340 6d 61 67 65 5f 66 69 6c 65 2c 0a 20 20 20 20 20 20 64 69 73 70 28 27 43 61 6e 6e 6f 74 20 65 78 mage_file,.......disp('Cannot.ex
27360 74 72 61 63 74 20 63 6f 72 6e 65 72 73 20 77 69 74 68 6f 75 74 20 69 6d 61 67 65 73 27 29 3b 0a tract.corners.without.images');.
27380 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0a 20 20 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 66 70 72 69 ......return;....end;.end;..fpri
273a0 6e 74 66 28 31 2c 27 5c 6e 52 65 2d 65 78 74 72 61 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 67 72 ntf(1,'\nRe-extraction.of.the.gr
273c0 69 64 20 63 6f 72 6e 65 72 73 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 73 20 28 61 66 74 65 72 20 id.corners.on.the.images.(after.
273e0 66 69 72 73 74 20 63 61 6c 69 62 72 61 74 69 6f 6e 29 5c 6e 27 29 3b 0a 0a 64 69 73 70 28 27 57 first.calibration)\n');..disp('W
27400 69 6e 64 6f 77 20 73 69 7a 65 20 66 6f 72 20 63 6f 72 6e 65 72 20 66 69 6e 64 65 72 20 28 77 69 indow.size.for.corner.finder.(wi
27420 6e 74 78 20 61 6e 64 20 77 69 6e 74 79 29 3a 27 29 3b 0a 77 69 6e 74 78 20 3d 20 69 6e 70 75 74 ntx.and.winty):');.wintx.=.input
27440 28 27 77 69 6e 74 78 20 28 5b 5d 20 3d 20 35 29 20 3d 20 27 29 3b 0a 69 66 20 69 73 65 6d 70 74 ('wintx.([].=.5).=.');.if.isempt
27460 79 28 77 69 6e 74 78 29 2c 20 77 69 6e 74 78 20 3d 20 35 3b 20 65 6e 64 3b 0a 77 69 6e 74 78 20 y(wintx),.wintx.=.5;.end;.wintx.
27480 3d 20 72 6f 75 6e 64 28 77 69 6e 74 78 29 3b 0a 77 69 6e 74 79 20 3d 20 69 6e 70 75 74 28 27 77 =.round(wintx);.winty.=.input('w
274a0 69 6e 74 79 20 28 5b 5d 20 3d 20 35 29 20 3d 20 27 29 3b 0a 69 66 20 69 73 65 6d 70 74 79 28 77 inty.([].=.5).=.');.if.isempty(w
274c0 69 6e 74 79 29 2c 20 77 69 6e 74 79 20 3d 20 35 3b 20 65 6e 64 3b 0a 77 69 6e 74 79 20 3d 20 72 inty),.winty.=.5;.end;.winty.=.r
274e0 6f 75 6e 64 28 77 69 6e 74 79 29 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 57 69 6e 64 6f 77 20 ound(winty);..fprintf(1,'Window.
27500 73 69 7a 65 20 3d 20 25 64 78 25 64 5c 6e 27 2c 32 2a 77 69 6e 74 78 2b 31 2c 32 2a 77 69 6e 74 size.=.%dx%d\n',2*wintx+1,2*wint
27520 79 2b 31 29 3b 0a 0a 69 6d 61 5f 6e 75 6d 62 65 72 73 20 3d 20 69 6e 70 75 74 28 27 4e 75 6d 62 y+1);..ima_numbers.=.input('Numb
27540 65 72 28 73 29 20 6f 66 20 69 6d 61 67 65 28 73 29 20 74 6f 20 70 72 6f 63 65 73 73 20 28 5b 5d er(s).of.image(s).to.process.([]
27560 20 3d 20 61 6c 6c 20 69 6d 61 67 65 73 29 20 3d 20 27 29 3b 0a 0a 69 66 20 69 73 65 6d 70 74 79 .=.all.images).=.');..if.isempty
27580 28 69 6d 61 5f 6e 75 6d 62 65 72 73 29 2c 0a 20 20 20 69 6d 61 5f 70 72 6f 63 20 3d 20 31 3a 6e (ima_numbers),....ima_proc.=.1:n
275a0 5f 69 6d 61 3b 0a 65 6c 73 65 0a 20 20 20 69 6d 61 5f 70 72 6f 63 20 3d 20 69 6d 61 5f 6e 75 6d _ima;.else....ima_proc.=.ima_num
275c0 62 65 72 73 3b 0a 65 6e 64 3b 0a 0a 71 5f 61 75 74 6f 20 3d 20 69 6e 70 75 74 28 27 55 73 65 20 bers;.end;..q_auto.=.input('Use.
275e0 74 68 65 20 70 72 6f 6a 65 63 74 69 6f 6e 20 6f 66 20 33 44 20 67 72 69 64 20 6f 72 20 6d 61 6e the.projection.of.3D.grid.or.man
27600 75 61 6c 20 63 6c 69 63 6b 20 28 5b 5d 3d 61 75 74 6f 2c 20 6f 74 68 65 72 3d 6d 61 6e 75 61 6c ual.click.([]=auto,.other=manual
27620 29 3a 20 27 29 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 50 72 6f 63 65 73 73 69 6e 67 20 69 6d ):.');..fprintf(1,'Processing.im
27640 61 67 65 20 27 29 3b 0a 0a 66 6f 72 20 6b 6b 20 3d 20 69 6d 61 5f 70 72 6f 63 3b 0a 20 20 20 0a age.');..for.kk.=.ima_proc;.....
27660 20 20 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 2c 0a 20 20 20 0a 09 09 66 ...if.active_images(kk),.......f
27680 70 72 69 6e 74 66 28 31 2c 27 25 64 2e 2e 2e 27 2c 6b 6b 29 3b 0a 20 20 20 0a 20 20 20 09 69 66 printf(1,'%d...',kk);.........if
276a0 20 69 73 65 6d 70 74 79 28 71 5f 61 75 74 6f 29 2c 0a 20 20 20 0a 20 20 09 09 09 65 76 61 6c 28 .isempty(q_auto),..........eval(
276c0 5b 27 49 20 3d 20 49 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 ['I.=.I_'.num2str(kk).';']);....
276e0 0a 20 20 20 09 09 65 76 61 6c 28 5b 27 79 20 3d 20 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 ......eval(['y.=.y_'.num2str(kk)
27700 20 27 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 09 09 78 63 20 3d 20 63 6f 72 6e 65 72 66 69 6e 64 .';']);..........xc.=.cornerfind
27720 65 72 28 79 2b 31 2c 49 2c 77 69 6e 74 79 2c 77 69 6e 74 78 29 3b 20 25 20 74 68 65 20 66 6f 75 er(y+1,I,winty,wintx);.%.the.fou
27740 72 20 63 6f 72 6e 65 72 73 0a 20 20 20 0a 20 20 20 20 20 20 09 65 76 61 6c 28 5b 27 77 69 6e 74 r.corners............eval(['wint
27760 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 77 69 6e 74 78 3b 27 5d 29 3b 0a 20 x_'.num2str(kk).'.=.wintx;']);..
27780 20 20 20 20 20 09 65 76 61 6c 28 5b 27 77 69 6e 74 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 ......eval(['winty_'.num2str(kk)
277a0 20 27 20 3d 20 77 69 6e 74 79 3b 27 5d 29 3b 0a 20 20 20 20 20 20 09 0a 20 20 20 09 09 65 76 61 .'.=.winty;']);..............eva
277c0 6c 28 5b 27 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3d 20 78 63 20 2d 20 31 3b 27 5d l(['x_'.num2str(kk).'=.xc.-.1;']
277e0 29 3b 0a 20 20 20 09 0a 20 20 20 09 65 6c 73 65 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 09 66 );..........else...............f
27800 70 72 69 6e 74 66 28 31 2c 27 5c 6e 27 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 09 63 6c printf(1,'\n');...............cl
27820 69 63 6b 5f 69 6d 61 5f 63 61 6c 69 62 3b 0a 20 20 20 20 20 20 0a 20 20 20 09 65 6e 64 3b 0a 20 ick_ima_calib;............end;..
27840 20 20 20 20 20 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 69 66 20 7e 65 .........else..............if.~e
27860 78 69 73 74 28 5b 27 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 5d 29 2c 0a 20 20 20 20 xist(['omc_'.num2str(kk)]),.....
27880 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 65 76 61 6c 28 5b 27 64 58 5f 27 20 6e 75 6d 32 73 ...............eval(['dX_'.num2s
278a0 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 3b 27 5d 29 3b 0a 20 20 20 09 09 65 76 61 6c 28 5b 27 tr(kk).'.=.NaN;']);......eval(['
278c0 64 59 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 3b 27 5d 29 3b 20 20 0a dY_'.num2str(kk).'.=.NaN;']);...
278e0 20 20 09 09 09 0a 20 20 20 09 09 65 76 61 6c 28 5b 27 77 69 6e 74 78 5f 27 20 6e 75 6d 32 73 74 ...........eval(['wintx_'.num2st
27900 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 3b 27 5d 29 3b 0a 20 20 20 09 09 65 76 61 6c 28 5b 27 77 r(kk).'.=.NaN;']);......eval(['w
27920 69 6e 74 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 3b 27 5d 29 3b 0a inty_'.num2str(kk).'.=.NaN;']);.
27940 09 09 09 0a 09 20 20 20 09 65 76 61 6c 28 5b 27 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 .........eval(['x_'.num2str(kk).
27960 27 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 32 2c 31 29 3b 27 5d 29 3b 0a 20 20 20 09 09 65 76 61 6c '.=.NaN*ones(2,1);']);......eval
27980 28 5b 27 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 (['X_'.num2str(kk).'.=.NaN*ones(
279a0 33 2c 31 29 3b 27 5d 29 3b 0a 20 20 20 09 09 0a 20 20 20 09 09 65 76 61 6c 28 5b 27 6e 5f 73 71 3,1);']);............eval(['n_sq
279c0 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 3b 27 5d 29 3b 0a 20 20 _x_'.num2str(kk).'.=.NaN;']);...
279e0 20 09 09 65 76 61 6c 28 5b 27 6e 5f 73 71 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 ...eval(['n_sq_y_'.num2str(kk).'
27a00 20 3d 20 4e 61 4e 3b 27 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 65 6e 64 3b .=.NaN;']);.................end;
27a20 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 0a 65 6e 64 3b 0a 0a 25 20 ...........end;.........end;..%.
27a40 52 65 63 6f 6d 70 75 74 65 20 74 68 65 20 65 72 72 6f 72 3a 0a 0a 63 6f 6d 70 5f 65 72 72 6f 72 Recompute.the.error:..comp_error
27a60 5f 63 61 6c 69 62 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 64 6f 6e 65 5c 6e 27 29 3b 61 _calib;..fprintf(1,'\ndone\n');a
27a80 70 28 3a 2c 32 29 20 3d 20 66 72 65 61 64 28 66 70 2c 20 5b 6d 61 70 6c 65 6e 5d 2c 20 27 75 63 p(:,2).=.fread(fp,.[maplen],.'uc
27aa0 68 61 72 27 29 3b 0a 09 09 6d 61 70 28 3a 2c 33 29 20 3d 20 66 72 65 61 64 28 66 70 2c 20 5b 6d har');...map(:,3).=.fread(fp,.[m
27ac0 61 70 6c 65 6e 5d 2c 20 27 75 63 68 61 72 27 29 3b 0a 09 09 25 6d 61 78 6d 61 70 20 3d 20 6d 61 aplen],.'uchar');...%maxmap.=.ma
27ae0 78 28 6d 61 78 28 6d 61 70 29 29 3b 0a 09 09 6d 61 70 20 3d 20 6d 61 70 2f 32 35 35 3b 0a 09 20 x(max(map));...map.=.map/255;...
27b00 20 20 20 20 20 20 20 69 66 20 6d 61 70 6c 65 6e 3c 36 34 2c 20 6d 61 70 3d 5b 6d 61 70 27 2c 7a .......if.maplen<64,.map=[map',z
27b20 65 72 6f 73 28 33 2c 36 34 2d 6d 61 70 6c 65 6e 29 5d 27 3b 20 6d 61 70 6c 65 6e 3d 36 34 3b 20 eros(3,64-maplen)]';.maplen=64;.
27b40 65 6e 64 3b 0a 09 65 6c 73 65 20 09 09 09 09 09 09 25 20 52 4d 54 5f 4e 4f 4e 45 0a 09 09 6d 61 end;..else.......%.RMT_NONE...ma
27b60 70 20 3d 20 5b 5d 3b 0a 09 65 6e 64 0a 25 09 69 66 20 6d 61 70 6c 65 6e 3e 36 34 2c 0a 25 20 20 p.=.[];..end.%.if.maplen>64,.%..
27b80 20 20 20 20 20 20 20 20 20 20 6d 61 70 3d 5b 6d 61 70 27 2c 7a 65 72 6f 73 28 33 2c 32 35 36 2d ..........map=[map',zeros(3,256-
27ba0 6d 61 70 6c 65 6e 29 5d 27 3b 0a 25 09 65 6e 64 3b 0a 0a 09 25 20 52 65 61 64 20 74 68 65 20 69 maplen)]';.%.end;...%.Read.the.i
27bc0 6d 61 67 65 0a 0a 09 69 66 20 72 65 6d 28 77 69 64 74 68 2c 32 29 20 3d 3d 20 31 0a 09 09 58 74 mage...if.rem(width,2).==.1...Xt
27be0 20 3d 20 66 72 65 61 64 28 66 70 2c 20 5b 77 69 64 74 68 2b 31 2c 20 68 65 69 67 68 74 5d 2c 20 .=.fread(fp,.[width+1,.height],.
27c00 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 72 65 63 74 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 TOOLBOX_calib/rect.m............
27c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27c60 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
27c80 20 20 20 33 36 33 35 20 20 37 30 32 34 30 33 37 33 34 36 20 20 20 37 35 34 35 00 20 00 00 00 00 ...3635..7024037346...7545......
27ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27e00 66 75 6e 63 74 69 6f 6e 20 5b 49 72 65 63 5d 20 3d 20 72 65 63 74 28 49 2c 52 2c 66 2c 63 2c 6b function.[Irec].=.rect(I,R,f,c,k
27e20 2c 4b 4b 5f 6e 65 77 29 3b 0a 0a 0a 25 20 4e 6f 74 65 3a 20 52 20 69 73 20 74 68 65 20 6d 6f 74 ,KK_new);...%.Note:.R.is.the.mot
27e40 69 6f 6e 20 6f 66 20 74 68 65 20 70 6f 69 6e 74 73 20 69 6e 20 73 70 61 63 65 0a 25 20 53 6f 3a ion.of.the.points.in.space.%.So:
27e60 20 58 32 20 3d 20 52 2a 58 20 77 68 65 72 65 20 58 3a 20 63 6f 6f 72 64 20 69 6e 20 74 68 65 20 .X2.=.R*X.where.X:.coord.in.the.
27e80 6f 6c 64 20 72 65 66 65 72 65 6e 63 65 20 66 72 61 6d 65 2c 20 58 32 3a 20 63 6f 6f 72 64 20 69 old.reference.frame,.X2:.coord.i
27ea0 6e 20 74 68 65 20 6e 65 77 20 72 65 66 20 66 72 61 6d 65 2e 0a 0a 5b 6e 72 2c 6e 63 5d 20 3d 20 n.the.new.ref.frame...[nr,nc].=.
27ec0 73 69 7a 65 28 49 29 3b 0a 0a 49 72 65 63 20 3d 20 32 35 35 2a 6f 6e 65 73 28 6e 72 2c 6e 63 29 size(I);..Irec.=.255*ones(nr,nc)
27ee0 3b 0a 0a 5b 6d 78 2c 6d 79 5d 20 3d 20 6d 65 73 68 67 72 69 64 28 31 3a 6e 63 2c 20 31 3a 6e 72 ;..[mx,my].=.meshgrid(1:nc,.1:nr
27f00 29 3b 0a 70 78 20 3d 20 72 65 73 68 61 70 65 28 6d 78 27 2c 6e 63 2a 6e 72 2c 31 29 3b 0a 70 79 );.px.=.reshape(mx',nc*nr,1);.py
27f20 20 3d 20 72 65 73 68 61 70 65 28 6d 79 27 2c 6e 63 2a 6e 72 2c 31 29 3b 0a 0a 72 61 79 73 20 3d .=.reshape(my',nc*nr,1);..rays.=
27f40 20 69 6e 76 28 4b 4b 5f 6e 65 77 29 2a 5b 28 70 78 20 2d 20 31 29 27 3b 28 70 79 20 2d 20 31 29 .inv(KK_new)*[(px.-.1)';(py.-.1)
27f60 27 3b 6f 6e 65 73 28 31 2c 6c 65 6e 67 74 68 28 70 78 29 29 5d 3b 0a 0a 0a 25 20 52 6f 74 61 74 ';ones(1,length(px))];...%.Rotat
27f80 69 6f 6e 3a 20 28 6f 72 20 61 66 66 69 6e 65 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 29 3a ion:.(or.affine.transformation):
27fa0 0a 0a 72 61 79 73 32 20 3d 20 52 27 2a 72 61 79 73 3b 0a 0a 0a 78 20 3d 20 5b 72 61 79 73 32 28 ..rays2.=.R'*rays;...x.=.[rays2(
27fc0 31 2c 3a 29 2e 2f 72 61 79 73 32 28 33 2c 3a 29 3b 72 61 79 73 32 28 32 2c 3a 29 2e 2f 72 61 79 1,:)./rays2(3,:);rays2(2,:)./ray
27fe0 73 32 28 33 2c 3a 29 5d 3b 0a 0a 25 20 41 64 64 20 64 69 73 74 6f 72 74 69 6f 6e 3a 0a 0a 6b 31 s2(3,:)];..%.Add.distortion:..k1
28000 20 3d 20 6b 28 31 29 3b 0a 6b 32 20 3d 20 6b 28 32 29 3b 0a 0a 70 31 20 3d 20 6b 28 33 29 3b 0a .=.k(1);.k2.=.k(2);..p1.=.k(3);.
28020 70 32 20 3d 20 6b 28 34 29 3b 0a 0a 72 5f 32 20 3d 20 73 75 6d 28 78 2e 5e 32 29 3b 0a 0a 64 65 p2.=.k(4);..r_2.=.sum(x.^2);..de
28040 6c 74 61 5f 78 20 3d 20 5b 32 2a 70 31 2a 78 28 31 2c 3a 29 2e 2a 78 28 32 2c 3a 29 20 2b 20 70 lta_x.=.[2*p1*x(1,:).*x(2,:).+.p
28060 32 2a 28 72 5f 32 20 2b 20 32 2a 78 28 31 2c 3a 29 2e 5e 32 29 20 3b 0a 20 20 20 20 20 20 20 20 2*(r_2.+.2*x(1,:).^2).;.........
28080 20 20 20 70 31 20 2a 20 28 72 5f 32 20 2b 20 32 2a 78 28 32 2c 3a 29 2e 5e 32 29 2b 32 2a 70 32 ...p1.*.(r_2.+.2*x(2,:).^2)+2*p2
280a0 2a 78 28 31 2c 3a 29 2e 2a 78 28 32 2c 3a 29 5d 3b 0a 0a 78 64 20 3d 20 28 6f 6e 65 73 28 32 2c *x(1,:).*x(2,:)];..xd.=.(ones(2,
280c0 31 29 2a 28 20 31 20 2b 20 6b 31 20 2a 20 72 5f 32 20 2b 20 6b 32 20 2a 20 72 5f 32 2e 5e 32 29 1)*(.1.+.k1.*.r_2.+.k2.*.r_2.^2)
280e0 29 20 2e 2a 20 78 20 2b 20 64 65 6c 74 61 5f 78 3b 0a 0a 0a 25 20 52 65 63 6f 6e 76 65 72 74 20 )..*.x.+.delta_x;...%.Reconvert.
28100 69 6e 20 70 69 78 65 6c 73 3a 0a 0a 70 78 32 20 3d 20 66 28 31 29 2a 78 64 28 31 2c 3a 29 2b 63 in.pixels:..px2.=.f(1)*xd(1,:)+c
28120 28 31 29 3b 0a 70 79 32 20 3d 20 66 28 32 29 2a 78 64 28 32 2c 3a 29 2b 63 28 32 29 3b 0a 0a 0a (1);.py2.=.f(2)*xd(2,:)+c(2);...
28140 25 20 49 6e 74 65 72 70 6f 6c 61 74 65 20 62 65 74 77 65 65 6e 20 74 68 65 20 63 6c 6f 73 65 73 %.Interpolate.between.the.closes
28160 74 20 70 69 78 65 6c 73 3a 0a 0a 0a 70 78 5f 30 20 3d 20 66 6c 6f 6f 72 28 70 78 32 29 3b 0a 70 t.pixels:...px_0.=.floor(px2);.p
28180 78 5f 31 20 3d 20 70 78 5f 30 20 2b 20 31 3b 0a 61 6c 70 68 61 5f 78 20 3d 20 70 78 32 20 2d 20 x_1.=.px_0.+.1;.alpha_x.=.px2.-.
281a0 70 78 5f 30 3b 0a 0a 70 79 5f 30 20 3d 20 66 6c 6f 6f 72 28 70 79 32 29 3b 0a 70 79 5f 31 20 3d px_0;..py_0.=.floor(py2);.py_1.=
281c0 20 70 79 5f 30 20 2b 20 31 3b 0a 61 6c 70 68 61 5f 79 20 3d 20 70 79 32 20 2d 20 70 79 5f 30 3b .py_0.+.1;.alpha_y.=.py2.-.py_0;
281e0 0a 0a 67 6f 6f 64 5f 70 6f 69 6e 74 73 20 3d 20 66 69 6e 64 28 28 70 78 5f 30 20 3e 3d 20 30 29 ..good_points.=.find((px_0.>=.0)
28200 20 26 20 28 70 78 5f 31 20 3c 3d 20 28 6e 63 2d 31 29 29 20 26 20 28 70 79 5f 30 20 3e 3d 20 30 .&.(px_1.<=.(nc-1)).&.(py_0.>=.0
28220 29 20 26 20 28 70 79 5f 31 20 3c 3d 20 28 6e 72 2d 31 29 29 29 3b 0a 0a 49 5f 6c 75 20 3d 20 49 ).&.(py_1.<=.(nr-1)));..I_lu.=.I
28240 28 70 78 5f 30 28 67 6f 6f 64 5f 70 6f 69 6e 74 73 29 20 2a 20 6e 72 20 2b 20 70 79 5f 30 28 67 (px_0(good_points).*.nr.+.py_0(g
28260 6f 6f 64 5f 70 6f 69 6e 74 73 29 20 2b 20 31 29 3b 0a 49 5f 72 75 20 3d 20 49 28 70 78 5f 31 28 ood_points).+.1);.I_ru.=.I(px_1(
28280 67 6f 6f 64 5f 70 6f 69 6e 74 73 29 20 2a 20 6e 72 20 2b 20 70 79 5f 30 28 67 6f 6f 64 5f 70 6f good_points).*.nr.+.py_0(good_po
282a0 69 6e 74 73 29 20 2b 20 31 29 3b 0a 49 5f 6c 64 20 3d 20 49 28 70 78 5f 30 28 67 6f 6f 64 5f 70 ints).+.1);.I_ld.=.I(px_0(good_p
282c0 6f 69 6e 74 73 29 20 2a 20 6e 72 20 2b 20 70 79 5f 31 28 67 6f 6f 64 5f 70 6f 69 6e 74 73 29 20 oints).*.nr.+.py_1(good_points).
282e0 2b 20 31 29 3b 0a 49 5f 72 64 20 3d 20 49 28 70 78 5f 31 28 67 6f 6f 64 5f 70 6f 69 6e 74 73 29 +.1);.I_rd.=.I(px_1(good_points)
28300 20 2a 20 6e 72 20 2b 20 70 79 5f 31 28 67 6f 6f 64 5f 70 6f 69 6e 74 73 29 20 2b 20 31 29 3b 0a .*.nr.+.py_1(good_points).+.1);.
28320 0a 0a 49 5f 69 6e 74 65 72 70 20 3d 20 28 31 20 2d 20 61 6c 70 68 61 5f 79 28 67 6f 6f 64 5f 70 ..I_interp.=.(1.-.alpha_y(good_p
28340 6f 69 6e 74 73 29 29 2e 2a 28 28 31 20 2d 20 61 6c 70 68 61 5f 78 28 67 6f 6f 64 5f 70 6f 69 6e oints)).*((1.-.alpha_x(good_poin
28360 74 73 29 29 2e 2a 20 49 5f 6c 75 20 2b 20 61 6c 70 68 61 5f 78 28 67 6f 6f 64 5f 70 6f 69 6e 74 ts)).*.I_lu.+.alpha_x(good_point
28380 73 29 20 2e 2a 20 49 5f 72 75 29 20 2b 20 61 6c 70 68 61 5f 79 28 67 6f 6f 64 5f 70 6f 69 6e 74 s)..*.I_ru).+.alpha_y(good_point
283a0 73 29 20 2e 2a 20 28 28 31 20 2d 20 61 6c 70 68 61 5f 78 28 67 6f 6f 64 5f 70 6f 69 6e 74 73 29 s)..*.((1.-.alpha_x(good_points)
283c0 29 2e 2a 20 49 5f 6c 64 20 2b 20 61 6c 70 68 61 5f 78 28 67 6f 6f 64 5f 70 6f 69 6e 74 73 29 20 ).*.I_ld.+.alpha_x(good_points).
283e0 2e 2a 20 49 5f 72 64 29 3b 0a 0a 0a 49 72 65 63 28 28 70 78 28 67 6f 6f 64 5f 70 6f 69 6e 74 73 .*.I_rd);...Irec((px(good_points
28400 29 2d 31 29 2a 6e 72 20 2b 20 70 79 28 67 6f 6f 64 5f 70 6f 69 6e 74 73 29 29 20 3d 20 49 5f 69 )-1)*nr.+.py(good_points)).=.I_i
28420 6e 74 65 72 70 3b 0a 0a 0a 0a 72 65 74 75 72 6e 3b 0a 0a 0a 25 20 43 6f 6e 76 65 72 74 20 69 6e nterp;....return;...%.Convert.in
28440 20 69 6e 64 69 63 65 73 3a 0a 0a 66 61 63 74 20 3d 20 33 3b 0a 0a 5b 58 58 2c 59 59 5d 3d 20 6d .indices:..fact.=.3;..[XX,YY]=.m
28460 65 73 68 67 72 69 64 28 31 3a 6e 63 2c 31 3a 6e 72 29 3b 0a 5b 58 58 69 2c 59 59 69 5d 3d 20 6d eshgrid(1:nc,1:nr);.[XXi,YYi]=.m
28480 65 73 68 67 72 69 64 28 31 3a 31 2f 66 61 63 74 3a 6e 63 2c 31 3a 31 2f 66 61 63 74 3a 6e 72 29 eshgrid(1:1/fact:nc,1:1/fact:nr)
284a0 3b 0a 0a 25 74 69 63 3b 0a 49 69 6e 74 65 72 70 20 3d 20 69 6e 74 65 72 70 32 28 58 58 2c 59 59 ;..%tic;.Iinterp.=.interp2(XX,YY
284c0 2c 49 2c 58 58 69 2c 59 59 69 29 3b 20 0a 25 74 6f 63 0a 0a 5b 6e 72 69 2c 6e 63 69 5d 20 3d 20 ,I,XXi,YYi);..%toc..[nri,nci].=.
284e0 73 69 7a 65 28 49 69 6e 74 65 72 70 29 3b 0a 0a 0a 69 6e 64 5f 63 6f 6c 20 3d 20 72 6f 75 6e 64 size(Iinterp);...ind_col.=.round
28500 28 66 61 63 74 2a 28 66 28 31 29 2a 78 64 28 31 2c 3a 29 2b 63 28 31 29 29 29 2b 31 3b 0a 69 6e (fact*(f(1)*xd(1,:)+c(1)))+1;.in
28520 64 5f 72 6f 77 20 3d 20 72 6f 75 6e 64 28 66 61 63 74 2a 28 66 28 32 29 2a 78 64 28 32 2c 3a 29 d_row.=.round(fact*(f(2)*xd(2,:)
28540 2b 63 28 32 29 29 29 2b 31 3b 0a 0a 67 6f 6f 64 5f 70 6f 69 6e 74 73 20 3d 20 66 69 6e 64 28 28 +c(2)))+1;..good_points.=.find((
28560 69 6e 64 5f 63 6f 6c 20 3e 3d 31 29 26 28 69 6e 64 5f 63 6f 6c 3c 3d 6e 63 69 29 26 28 69 6e 64 ind_col.>=1)&(ind_col<=nci)&(ind
28580 5f 72 6f 77 20 3e 3d 31 29 26 20 28 69 6e 64 5f 72 6f 77 20 3c 3d 6e 72 69 29 29 3b 0a 6b 6b 29 _row.>=1)&.(ind_row.<=nri));.kk)
285a0 20 27 20 3d 20 77 69 6e 74 79 3b 27 5d 29 3b 0a 20 20 20 20 20 20 09 0a 20 20 20 09 09 65 76 61 .'.=.winty;']);..............eva
285c0 6c 28 5b 27 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3d 20 78 63 20 2d 20 31 3b 27 5d l(['x_'.num2str(kk).'=.xc.-.1;']
285e0 29 3b 0a 20 20 20 09 0a 20 20 20 09 65 6c 73 65 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 09 66 );..........else...............f
28600 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 52 65 63 74 61 6e 67 6c 65 32 53 71 75 61 72 65 2e 6d TOOLBOX_calib/Rectangle2Square.m
28620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28660 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
28680 20 20 20 20 36 36 35 20 20 37 30 32 34 30 33 37 33 34 37 20 20 31 31 37 34 30 00 20 00 00 00 00 ....665..7024037347..11740......
286a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
286c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
286e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
287a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
287c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
287e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28800 66 75 6e 63 74 69 6f 6e 20 5b 73 71 75 61 72 65 5d 20 3d 20 52 65 63 74 61 6e 67 6c 65 32 53 71 function.[square].=.Rectangle2Sq
28820 75 61 72 65 28 72 65 63 74 61 6e 67 6c 65 2c 4c 2c 57 29 3b 0a 0a 25 20 47 65 6e 65 72 61 74 65 uare(rectangle,L,W);..%.Generate
28840 20 74 68 65 20 73 71 75 61 72 65 20 66 72 6f 6d 20 61 20 72 65 63 74 61 6e 67 6c 65 20 6f 66 20 .the.square.from.a.rectangle.of.
28860 6b 6e 6f 77 6e 20 73 65 67 6d 65 6e 74 20 6c 65 6e 67 74 68 73 0a 25 20 66 72 6f 6d 20 70 74 31 known.segment.lengths.%.from.pt1
28880 20 74 6f 20 70 74 32 20 3a 20 4c 0a 25 20 66 72 6f 6d 20 70 74 32 20 74 6f 20 70 74 33 20 3a 20 .to.pt2.:.L.%.from.pt2.to.pt3.:.
288a0 57 0a 0a 5b 75 5f 68 6f 72 69 2c 75 5f 76 65 72 74 5d 20 3d 20 55 6e 57 61 72 70 50 6c 61 6e 65 W..[u_hori,u_vert].=.UnWarpPlane
288c0 28 72 65 63 74 61 6e 67 6c 65 29 3b 0a 0a 63 6f 65 66 66 5f 78 20 3d 20 73 71 72 74 28 57 2f 4c (rectangle);..coeff_x.=.sqrt(W/L
288e0 29 3b 0a 63 6f 65 66 66 5f 79 20 3d 20 31 2f 63 6f 65 66 66 5f 78 3b 0a 0a 78 5f 63 6f 6f 72 64 );.coeff_y.=.1/coeff_x;..x_coord
28900 20 3d 20 5b 20 30 20 63 6f 65 66 66 5f 78 20 20 63 6f 65 66 66 5f 78 20 30 5d 3b 0a 79 5f 63 6f .=.[.0.coeff_x..coeff_x.0];.y_co
28920 6f 72 64 20 3d 20 5b 20 30 20 30 20 63 6f 65 66 66 5f 79 20 63 6f 65 66 66 5f 79 5d 3b 0a 0a 0a ord.=.[.0.0.coeff_y.coeff_y];...
28940 73 71 75 61 72 65 20 3d 20 72 65 63 74 61 6e 67 6c 65 28 3a 2c 31 29 20 2a 20 6f 6e 65 73 28 31 square.=.rectangle(:,1).*.ones(1
28960 2c 34 29 20 2b 20 75 5f 68 6f 72 69 2a 78 5f 63 6f 6f 72 64 20 2b 20 75 5f 76 65 72 74 2a 79 5f ,4).+.u_hori*x_coord.+.u_vert*y_
28980 63 6f 6f 72 64 3b 0a 73 71 75 61 72 65 20 3d 20 73 71 75 61 72 65 20 2e 2f 20 28 6f 6e 65 73 28 coord;.square.=.square../.(ones(
289a0 33 2c 31 29 2a 73 71 75 61 72 65 28 33 2c 3a 29 29 3b 0a 0a 0a 02 36 a8 00 1c 00 0d 55 6e 57 61 3,1)*square(3,:));....6.....UnWa
289c0 72 70 50 6c 61 6e 65 2e 6d 00 36 a8 00 00 06 48 00 02 36 a9 00 18 00 0a 77 72 69 74 65 72 61 73 rpPlane.m.6....H..6.....writeras
289e0 2e 6d 00 48 00 00 06 64 00 02 36 aa 00 20 00 10 65 72 72 6f 72 5f 61 6e 61 6c 79 73 69 73 2e 6d .m.H...d..6.....error_analysis.m
28a00 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 72 65 70 72 6f 6a 65 63 74 5f 63 61 6c 69 62 2e 6d 00 TOOLBOX_calib/reproject_calib.m.
28a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28a60 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
28a80 20 20 20 33 37 33 37 20 20 37 30 32 34 30 33 37 33 34 37 20 20 31 31 37 34 33 00 20 00 00 00 00 ...3737..7024037347..11743......
28aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28c00 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 52 45 50 52 4f 4a 45 43 54 20 4f %%%%%%%%%%%%%%%%%%%%.REPROJECT.O
28c20 4e 20 54 48 45 20 49 4d 41 47 45 53 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 N.THE.IMAGES.%%%%%%%%%%%%%%%%%%%
28c40 25 25 25 25 25 0a 0a 69 66 20 7e 65 78 69 73 74 28 27 6e 6f 5f 69 6d 61 67 65 27 29 2c 0a 20 20 %%%%%..if.~exist('no_image'),...
28c60 20 6e 6f 5f 69 6d 61 67 65 20 3d 20 30 3b 0a 65 6e 64 3b 0a 0a 63 68 65 63 6b 5f 61 63 74 69 76 .no_image.=.0;.end;..check_activ
28c80 65 5f 69 6d 61 67 65 73 3b 0a 0a 0a 25 20 43 6f 6c 6f 72 20 63 6f 64 65 20 66 6f 72 20 65 61 63 e_images;...%.Color.code.for.eac
28ca0 68 20 69 6d 61 67 65 3a 0a 0a 63 6f 6c 6f 72 73 20 3d 20 27 62 72 67 6b 63 6d 27 3b 0a 0a 25 20 h.image:..colors.=.'brgkcm';..%.
28cc0 52 65 70 72 6f 6a 65 63 74 20 74 68 65 20 70 61 74 74 65 72 6e 73 20 6f 6e 20 74 68 65 20 69 6d Reproject.the.patterns.on.the.im
28ce0 61 67 65 73 2c 20 61 6e 64 20 63 6f 6d 70 75 74 65 20 74 68 65 20 70 69 78 65 6c 20 65 72 72 6f ages,.and.compute.the.pixel.erro
28d00 72 73 3a 0a 0a 25 20 52 65 6c 6f 61 64 20 74 68 65 20 69 6d 61 67 65 73 20 69 66 20 6e 65 63 65 rs:..%.Reload.the.images.if.nece
28d20 73 73 61 72 79 0a 0a 69 66 20 7e 65 78 69 73 74 28 5b 27 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 ssary..if.~exist(['omc_'.num2str
28d40 28 69 6e 64 5f 61 63 74 69 76 65 28 31 29 29 20 5d 29 2c 0a 20 20 20 66 70 72 69 6e 74 66 28 31 (ind_active(1)).]),....fprintf(1
28d60 2c 27 4e 65 65 64 20 74 6f 20 63 61 6c 69 62 72 61 74 65 20 62 65 66 6f 72 65 20 73 68 6f 77 69 ,'Need.to.calibrate.before.showi
28d80 6e 67 20 69 6d 61 67 65 20 72 65 70 72 6f 6a 65 63 74 69 6f 6e 2e 20 4d 61 79 62 65 20 6e 65 65 ng.image.reprojection..Maybe.nee
28da0 64 20 74 6f 20 6c 6f 61 64 20 43 61 6c 69 62 5f 52 65 73 75 6c 74 73 2e 6d 61 74 20 66 69 6c 65 d.to.load.Calib_Results.mat.file
28dc0 2e 5c 6e 27 29 3b 0a 20 20 20 72 65 74 75 72 6e 3b 0a 65 6e 64 3b 0a 0a 69 66 20 7e 6e 6f 5f 69 .\n');....return;.end;..if.~no_i
28de0 6d 61 67 65 2c 0a 09 69 66 20 7e 65 78 69 73 74 28 5b 27 49 5f 27 20 6e 75 6d 32 73 74 72 28 69 mage,..if.~exist(['I_'.num2str(i
28e00 6e 64 5f 61 63 74 69 76 65 28 31 29 29 20 5d 27 29 2c 0a 20 20 20 09 69 6d 61 5f 72 65 61 64 5f nd_active(1)).]'),.....ima_read_
28e20 63 61 6c 69 62 3b 0a 20 20 20 09 69 66 20 6e 6f 5f 69 6d 61 67 65 5f 66 69 6c 65 2c 0a 20 20 20 calib;.....if.no_image_file,....
28e40 20 20 20 09 66 70 72 69 6e 74 66 28 31 2c 27 57 41 52 4e 49 4e 47 3a 20 44 6f 20 6e 6f 74 20 73 ....fprintf(1,'WARNING:.Do.not.s
28e60 68 6f 77 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 69 6d 61 67 65 73 5c 6e 27 29 3b 20 25 72 65 how.the.original.images\n');.%re
28e80 74 75 72 6e 3b 0a 20 20 20 09 65 6e 64 3b 0a 20 20 20 65 6e 64 3b 0a 65 6c 73 65 0a 20 20 20 6e turn;.....end;....end;.else....n
28ea0 6f 5f 69 6d 61 67 65 5f 66 69 6c 65 20 3d 20 31 3b 0a 65 6e 64 3b 0a 0a 0a 0a 69 6d 61 5f 6e 75 o_image_file.=.1;.end;....ima_nu
28ec0 6d 62 65 72 73 20 3d 20 69 6e 70 75 74 28 27 4e 75 6d 62 65 72 28 73 29 20 6f 66 20 69 6d 61 67 mbers.=.input('Number(s).of.imag
28ee0 65 28 73 29 20 74 6f 20 73 68 6f 77 20 28 5b 5d 20 3d 20 61 6c 6c 20 69 6d 61 67 65 73 29 20 3d e(s).to.show.([].=.all.images).=
28f00 20 27 29 3b 0a 0a 69 66 20 69 73 65 6d 70 74 79 28 69 6d 61 5f 6e 75 6d 62 65 72 73 29 2c 0a 20 .');..if.isempty(ima_numbers),..
28f20 20 20 69 6d 61 5f 70 72 6f 63 20 3d 20 31 3a 6e 5f 69 6d 61 3b 0a 65 6c 73 65 0a 20 20 20 69 6d ..ima_proc.=.1:n_ima;.else....im
28f40 61 5f 70 72 6f 63 20 3d 20 69 6d 61 5f 6e 75 6d 62 65 72 73 3b 0a 65 6e 64 3b 0a 0a 0a 66 69 67 a_proc.=.ima_numbers;.end;...fig
28f60 75 72 65 28 35 29 3b 0a 66 6f 72 20 6b 6b 20 3d 20 69 6d 61 5f 70 72 6f 63 2c 20 25 31 3a 6e 5f ure(5);.for.kk.=.ima_proc,.%1:n_
28f80 69 6d 61 2c 0a 20 20 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 20 26 20 65 ima,....if.active_images(kk).&.e
28fa0 76 61 6c 28 5b 27 7e 69 73 6e 61 6e 28 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 28 31 val(['~isnan(y_'.num2str(kk).'(1
28fc0 2c 31 29 29 27 5d 29 2c 0a 09 20 20 20 65 76 61 6c 28 5b 27 70 6c 6f 74 28 65 78 5f 27 20 6e 75 ,1))']),.....eval(['plot(ex_'.nu
28fe0 6d 32 73 74 72 28 6b 6b 29 20 27 28 31 2c 3a 29 2c 65 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b m2str(kk).'(1,:),ex_'.num2str(kk
29000 29 20 27 28 32 2c 3a 29 2c 27 27 27 20 63 6f 6c 6f 72 73 28 72 65 6d 28 6b 6b 2d 31 2c 36 29 2b ).'(2,:),'''.colors(rem(kk-1,6)+
29020 31 29 20 27 2b 27 27 29 3b 27 5d 29 3b 0a 20 20 20 20 20 20 68 6f 6c 64 20 6f 6e 3b 0a 20 20 20 1).'+'');']);.......hold.on;....
29040 65 6e 64 3b 0a 65 6e 64 3b 0a 68 6f 6c 64 20 6f 66 66 3b 0a 61 78 69 73 28 27 65 71 75 61 6c 27 end;.end;.hold.off;.axis('equal'
29060 29 3b 0a 74 69 74 6c 65 28 27 52 65 70 72 6f 6a 65 63 74 69 6f 6e 20 65 72 72 6f 72 20 28 69 6e );.title('Reprojection.error.(in
29080 20 70 69 78 65 6c 29 27 29 3b 0a 78 6c 61 62 65 6c 28 27 78 27 29 3b 0a 79 6c 61 62 65 6c 28 27 .pixel)');.xlabel('x');.ylabel('
290a0 79 27 29 3b 0a 64 72 61 77 6e 6f 77 3b 0a 0a 73 65 74 28 35 2c 27 4e 61 6d 65 27 2c 27 65 72 72 y');.drawnow;..set(5,'Name','err
290c0 6f 72 27 2c 27 4e 75 6d 62 65 72 54 69 74 6c 65 27 2c 27 6f 66 66 27 29 3b 0a 0a 0a 0a 66 6f 72 or','NumberTitle','off');....for
290e0 20 6b 6b 20 3d 20 69 6d 61 5f 70 72 6f 63 2c 0a 20 20 20 0a 20 20 20 69 66 20 61 63 74 69 76 65 .kk.=.ima_proc,........if.active
29100 5f 69 6d 61 67 65 73 28 6b 6b 29 20 26 20 65 76 61 6c 28 5b 27 7e 69 73 6e 61 6e 28 79 5f 27 20 _images(kk).&.eval(['~isnan(y_'.
29120 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 28 31 2c 31 29 29 27 5d 29 2c 0a 20 20 20 0a 20 20 20 09 num2str(kk).'(1,1))']),.........
29140 69 66 20 65 78 69 73 74 28 5b 27 49 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 5d 29 2c 0a 20 20 if.exist(['I_'.num2str(kk)]),...
29160 20 20 20 20 09 65 76 61 6c 28 5b 27 49 20 3d 20 49 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 .....eval(['I.=.I_'.num2str(kk).
29180 27 3b 27 5d 29 3b 0a 20 20 20 09 65 6c 73 65 0a 20 20 20 20 20 20 09 49 20 3d 20 32 35 35 2a 6f ';']);.....else........I.=.255*o
291a0 6e 65 73 28 6e 79 2c 6e 78 29 3b 0a 20 20 20 09 65 6e 64 3b 0a 20 20 20 0a 20 20 20 09 66 69 67 nes(ny,nx);.....end;.........fig
291c0 75 72 65 28 35 2b 6b 6b 29 3b 0a 20 20 20 09 69 6d 61 67 65 28 49 29 3b 20 68 6f 6c 64 20 6f 6e ure(5+kk);.....image(I);.hold.on
291e0 3b 0a 20 20 20 09 63 6f 6c 6f 72 6d 61 70 28 67 72 61 79 28 32 35 36 29 29 3b 0a 20 20 20 09 74 ;.....colormap(gray(256));.....t
29200 69 74 6c 65 28 5b 27 49 6d 61 67 65 20 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 2d 20 49 itle(['Image.'.num2str(kk).'.-.I
29220 6d 61 67 65 20 70 6f 69 6e 74 73 20 28 2b 29 20 61 6e 64 20 72 65 70 72 6f 6a 65 63 74 65 64 20 mage.points.(+).and.reprojected.
29240 67 72 69 64 20 70 6f 69 6e 74 73 20 28 6f 29 27 5d 29 3b 0a 20 20 20 09 65 76 61 6c 28 5b 27 70 grid.points.(o)']);.....eval(['p
29260 6c 6f 74 28 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 28 31 2c 3a 29 2b 31 2c 78 5f 27 lot(x_'.num2str(kk).'(1,:)+1,x_'
29280 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 28 32 2c 3a 29 2b 31 2c 27 27 72 2b 27 27 29 3b 27 5d .num2str(kk).'(2,:)+1,''r+'');']
292a0 29 3b 0a 20 20 20 09 65 76 61 6c 28 5b 27 70 6c 6f 74 28 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b );.....eval(['plot(y_'.num2str(k
292c0 6b 29 20 27 28 31 2c 3a 29 2b 31 2c 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 28 32 2c k).'(1,:)+1,y_'.num2str(kk).'(2,
292e0 3a 29 2b 31 2c 27 27 27 20 63 6f 6c 6f 72 73 28 72 65 6d 28 6b 6b 2d 31 2c 36 29 2b 31 29 20 27 :)+1,'''.colors(rem(kk-1,6)+1).'
29300 6f 27 27 29 3b 27 5d 29 3b 0a 20 20 20 09 7a 6f 6f 6d 20 6f 6e 3b 0a 20 20 20 09 68 6f 6c 64 20 o'');']);.....zoom.on;.....hold.
29320 6f 66 66 3b 0a 20 20 20 09 64 72 61 77 6e 6f 77 3b 0a 0a 20 20 20 20 20 20 73 65 74 28 35 2b 6b off;.....drawnow;........set(5+k
29340 6b 2c 27 4e 61 6d 65 27 2c 6e 75 6d 32 73 74 72 28 6b 6b 29 2c 27 4e 75 6d 62 65 72 54 69 74 6c k,'Name',num2str(kk),'NumberTitl
29360 65 27 2c 27 6f 66 66 27 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a 65 6e e','off');...........end;.....en
29380 64 3b 0a 0a 0a 65 72 72 5f 73 74 64 20 3d 20 73 74 64 28 65 78 27 29 27 3b 0a 0a 66 70 72 69 6e d;...err_std.=.std(ex')';..fprin
293a0 74 66 28 31 2c 27 50 69 78 65 6c 20 65 72 72 6f 72 3a 20 20 20 20 20 20 65 72 72 20 3d 20 5b 20 tf(1,'Pixel.error:......err.=.[.
293c0 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 5c 6e 27 2c 65 72 72 5f 73 74 64 29 3b 20 0a 20 %3.5f...%3.5f]\n\n',err_std);...
293e0 20 09 09 65 76 61 6c 28 5b 27 6e 5f 73 71 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 ...eval(['n_sq_y_'.num2str(kk).'
29400 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 72 6f 64 72 69 67 75 65 73 2e 6d 00 00 00 00 00 00 00 TOOLBOX_calib/rodrigues.m.......
29420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
29440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
29460 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
29480 20 20 31 30 36 32 36 20 20 37 30 32 34 30 33 37 33 35 31 20 20 31 30 36 32 35 00 20 00 00 00 00 ..10626..7024037351..10625......
294a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
294c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
294e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
29500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
29520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
29540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
29560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
29580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
295a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
295c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
295e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
29600 66 75 6e 63 74 69 6f 6e 09 5b 6f 75 74 2c 64 6f 75 74 5d 3d 72 6f 64 72 69 67 75 65 73 28 69 6e function.[out,dout]=rodrigues(in
29620 29 0a 0a 25 20 52 4f 44 52 49 47 55 45 53 09 54 72 61 6e 73 66 6f 72 6d 20 72 6f 74 61 74 69 6f )..%.RODRIGUES.Transform.rotatio
29640 6e 20 6d 61 74 72 69 78 20 69 6e 74 6f 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 61 6e n.matrix.into.rotation.vector.an
29660 64 20 76 69 63 65 76 65 72 73 61 2e 0a 25 09 09 0a 25 09 09 53 69 6e 74 61 78 3a 20 20 5b 4f 55 d.viceversa..%...%..Sintax:..[OU
29680 54 5d 3d 52 4f 44 52 49 47 55 45 53 28 49 4e 29 0a 25 20 09 09 49 66 20 49 4e 20 69 73 20 61 20 T]=RODRIGUES(IN).%...If.IN.is.a.
296a0 33 78 33 20 72 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 78 20 74 68 65 6e 20 4f 55 54 20 69 73 20 3x3.rotation.matrix.then.OUT.is.
296c0 74 68 65 0a 25 09 09 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 33 78 31 20 72 6f 74 61 74 69 6f the.%..corresponding.3x1.rotatio
296e0 6e 20 76 65 63 74 6f 72 0a 25 20 09 09 69 66 20 49 4e 20 69 73 20 61 20 72 6f 74 61 74 69 6f 6e n.vector.%...if.IN.is.a.rotation
29700 20 33 2d 76 65 63 74 6f 72 20 74 68 65 6e 20 4f 55 54 20 69 73 20 74 68 65 20 0a 25 09 09 63 6f .3-vector.then.OUT.is.the..%..co
29720 72 72 65 73 70 6f 6e 64 69 6e 67 20 33 78 33 20 72 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 78 0a rresponding.3x3.rotation.matrix.
29740 25 0a 0a 25 25 0a 25 25 09 09 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 4d 61 72 63 68 20 31 39 %..%%.%%..Copyright.(c).March.19
29760 39 33 20 2d 2d 20 50 69 65 74 72 6f 20 50 65 72 6f 6e 61 0a 25 25 09 09 43 61 6c 69 66 6f 72 6e 93.--.Pietro.Perona.%%..Californ
29780 69 61 20 49 6e 73 74 69 74 75 74 65 20 6f 66 20 54 65 63 68 6e 6f 6c 6f 67 79 0a 25 25 0a 0a 25 ia.Institute.of.Technology.%%..%
297a0 25 20 41 4c 4c 20 43 48 45 43 4b 45 44 20 42 59 20 4a 45 41 4e 2d 59 56 45 53 20 42 4f 55 47 55 %.ALL.CHECKED.BY.JEAN-YVES.BOUGU
297c0 45 54 2c 20 4f 63 74 6f 62 65 72 20 31 39 39 35 2e 0a 25 25 20 46 4f 52 20 41 4c 4c 20 4a 41 43 ET,.October.1995..%%.FOR.ALL.JAC
297e0 4f 42 49 41 4e 20 4d 41 54 52 49 43 45 53 20 21 21 21 20 4c 4f 4f 4b 20 41 54 20 54 48 45 20 54 OBIAN.MATRICES.!!!.LOOK.AT.THE.T
29800 45 53 54 20 41 54 20 54 48 45 20 45 4e 44 20 21 21 0a 0a 25 25 20 42 55 47 20 77 68 65 6e 20 6e EST.AT.THE.END.!!..%%.BUG.when.n
29820 6f 72 6d 28 6f 6d 29 3d 70 69 20 66 69 78 65 64 20 2d 2d 20 41 70 72 69 6c 20 36 74 68 2c 20 31 orm(om)=pi.fixed.--.April.6th,.1
29840 39 39 37 3b 0a 25 25 20 4a 65 61 6e 2d 59 76 65 73 20 42 6f 75 67 75 65 74 0a 0a 0a 5b 6d 2c 6e 997;.%%.Jean-Yves.Bouguet...[m,n
29860 5d 20 3d 20 73 69 7a 65 28 69 6e 29 3b 0a 25 62 69 67 65 70 73 20 3d 20 31 30 65 2b 34 2a 65 70 ].=.size(in);.%bigeps.=.10e+4*ep
29880 73 3b 0a 62 69 67 65 70 73 20 3d 20 31 30 65 2b 32 30 2a 65 70 73 3b 0a 0a 69 66 20 28 28 6d 3d s;.bigeps.=.10e+20*eps;..if.((m=
298a0 3d 31 29 20 26 20 28 6e 3d 3d 33 29 29 20 7c 20 28 28 6d 3d 3d 33 29 20 26 20 28 6e 3d 3d 31 29 =1).&.(n==3)).|.((m==3).&.(n==1)
298c0 29 20 25 25 20 69 74 20 69 73 20 61 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 0a 20 20 20 ).%%.it.is.a.rotation.vector....
298e0 74 68 65 74 61 20 3d 20 6e 6f 72 6d 28 69 6e 29 3b 0a 20 20 20 69 66 20 74 68 65 74 61 20 3c 20 theta.=.norm(in);....if.theta.<.
29900 65 70 73 0a 20 20 20 20 20 20 52 20 3d 20 65 79 65 28 33 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 eps.......R.=.eye(3);...........
29920 20 20 20 25 69 66 20 6e 61 72 67 6f 75 74 20 3e 20 31 2c 0a 20 20 20 20 20 20 0a 20 20 20 20 20 ...%if.nargout.>.1,.............
29940 20 64 52 64 69 6e 20 3d 20 5b 30 20 30 20 30 3b 0a 09 20 20 20 20 20 20 20 30 20 30 20 31 3b 0a .dRdin.=.[0.0.0;.........0.0.1;.
29960 09 20 20 20 20 20 20 20 30 20 2d 31 20 30 3b 0a 09 20 20 20 20 20 20 20 30 20 30 20 2d 31 3b 0a ........0.-1.0;.........0.0.-1;.
29980 09 20 20 20 20 20 20 20 30 20 30 20 30 3b 0a 09 20 20 20 20 20 20 20 31 20 30 20 30 3b 0a 09 20 ........0.0.0;.........1.0.0;...
299a0 20 20 20 20 20 20 30 20 31 20 30 3b 0a 09 20 20 20 20 20 20 20 2d 31 20 30 20 30 3b 0a 20 20 20 ......0.1.0;.........-1.0.0;....
299c0 20 20 20 20 20 20 20 30 20 30 20 30 5d 3b 0a 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 25 65 .......0.0.0];................%e
299e0 6e 64 3b 0a 09 20 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 69 66 20 6e 3d 3d 6c 65 6e 67 74 nd;.......else.......if.n==lengt
29a00 68 28 69 6e 29 20 20 69 6e 3d 69 6e 27 3b 20 65 6e 64 3b 20 09 25 25 20 6d 61 6b 65 20 69 74 20 h(in)..in=in';.end;..%%.make.it.
29a20 61 20 63 6f 6c 75 6d 6e 20 76 65 63 2e 20 69 66 20 6e 65 63 65 73 73 2e 0a 09 20 0a 09 20 25 6d a.column.vec..if.necess.......%m
29a40 33 20 3d 20 5b 69 6e 2c 74 68 65 74 61 5d 0a 0a 09 20 64 6d 33 64 69 6e 20 3d 20 5b 65 79 65 28 3.=.[in,theta]....dm3din.=.[eye(
29a60 33 29 3b 69 6e 27 2f 74 68 65 74 61 5d 3b 0a 0a 09 20 6f 6d 65 67 61 20 3d 20 69 6e 2f 74 68 65 3);in'/theta];....omega.=.in/the
29a80 74 61 3b 0a 09 20 0a 09 20 25 6d 32 20 3d 20 5b 6f 6d 65 67 61 3b 74 68 65 74 61 5d 0a 09 20 0a ta;......%m2.=.[omega;theta]....
29aa0 09 20 64 6d 32 64 6d 33 20 3d 20 5b 65 79 65 28 33 29 2f 74 68 65 74 61 20 2d 69 6e 2f 74 68 65 ..dm2dm3.=.[eye(3)/theta.-in/the
29ac0 74 61 5e 32 3b 20 7a 65 72 6f 73 28 31 2c 33 29 20 31 5d 3b 0a 09 20 0a 09 20 61 6c 70 68 61 20 ta^2;.zeros(1,3).1];......alpha.
29ae0 3d 20 63 6f 73 28 74 68 65 74 61 29 3b 0a 09 20 62 65 74 61 20 3d 20 73 69 6e 28 74 68 65 74 61 =.cos(theta);...beta.=.sin(theta
29b00 29 3b 0a 09 20 67 61 6d 6d 61 20 3d 20 31 2d 63 6f 73 28 74 68 65 74 61 29 3b 0a 09 20 6f 6d 65 );...gamma.=.1-cos(theta);...ome
29b20 67 61 76 3d 5b 5b 30 20 2d 6f 6d 65 67 61 28 33 29 20 6f 6d 65 67 61 28 32 29 5d 3b 5b 6f 6d 65 gav=[[0.-omega(3).omega(2)];[ome
29b40 67 61 28 33 29 20 30 20 2d 6f 6d 65 67 61 28 31 29 5d 3b 5b 2d 6f 6d 65 67 61 28 32 29 20 6f 6d ga(3).0.-omega(1)];[-omega(2).om
29b60 65 67 61 28 31 29 20 30 20 5d 5d 3b 0a 09 20 41 20 3d 20 6f 6d 65 67 61 2a 6f 6d 65 67 61 27 3b ega(1).0.]];...A.=.omega*omega';
29b80 0a 09 20 0a 09 20 25 6d 31 20 3d 20 5b 61 6c 70 68 61 3b 62 65 74 61 3b 67 61 6d 6d 61 3b 6f 6d ......%m1.=.[alpha;beta;gamma;om
29ba0 65 67 61 76 3b 41 5d 3b 0a 09 20 0a 09 20 64 6d 31 64 6d 32 20 3d 20 7a 65 72 6f 73 28 32 31 2c egav;A];......dm1dm2.=.zeros(21,
29bc0 34 29 3b 0a 09 20 64 6d 31 64 6d 32 28 31 2c 34 29 20 3d 20 2d 73 69 6e 28 74 68 65 74 61 29 3b 4);...dm1dm2(1,4).=.-sin(theta);
29be0 0a 09 20 64 6d 31 64 6d 32 28 32 2c 34 29 20 3d 20 63 6f 73 28 74 68 65 74 61 29 3b 0a 09 20 64 ...dm1dm2(2,4).=.cos(theta);...d
29c00 6d 31 64 6d 32 28 33 2c 34 29 20 3d 20 73 69 6e 28 74 68 65 74 61 29 3b 0a 09 20 64 6d 31 64 6d m1dm2(3,4).=.sin(theta);...dm1dm
29c20 32 28 34 3a 31 32 2c 31 3a 33 29 20 3d 20 5b 30 20 30 20 30 20 30 20 30 20 31 20 30 20 2d 31 20 2(4:12,1:3).=.[0.0.0.0.0.1.0.-1.
29c40 30 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30 20 30 20 2d 31 20 0;.......................0.0.-1.
29c60 30 20 30 20 30 20 31 20 30 20 30 3b 0a 09 09 09 20 20 20 20 20 30 20 31 20 30 20 2d 31 20 30 20 0.0.0.1.0.0;.........0.1.0.-1.0.
29c80 30 20 30 20 30 20 30 5d 27 3b 0a 09 09 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 77 31 0.0.0.0]';....................w1
29ca0 20 3d 20 6f 6d 65 67 61 28 31 29 3b 0a 09 20 77 32 20 3d 20 6f 6d 65 67 61 28 32 29 3b 0a 09 20 .=.omega(1);...w2.=.omega(2);...
29cc0 77 33 20 3d 20 6f 6d 65 67 61 28 33 29 3b 0a 09 20 0a 09 20 64 6d 31 64 6d 32 28 31 33 3a 32 31 w3.=.omega(3);......dm1dm2(13:21
29ce0 2c 31 29 20 3d 20 5b 32 2a 77 31 3b 77 32 3b 77 33 3b 77 32 3b 30 3b 30 3b 77 33 3b 30 3b 30 5d ,1).=.[2*w1;w2;w3;w2;0;0;w3;0;0]
29d00 3b 0a 09 20 64 6d 31 64 6d 32 28 31 33 3a 20 32 31 2c 32 29 20 3d 20 5b 30 3b 77 31 3b 30 3b 77 ;...dm1dm2(13:.21,2).=.[0;w1;0;w
29d20 31 3b 32 2a 77 32 3b 77 33 3b 30 3b 77 33 3b 30 5d 3b 0a 09 20 64 6d 31 64 6d 32 28 31 33 3a 32 1;2*w2;w3;0;w3;0];...dm1dm2(13:2
29d40 31 2c 33 29 20 3d 20 5b 30 3b 30 3b 77 31 3b 30 3b 30 3b 77 32 3b 77 31 3b 77 32 3b 32 2a 77 33 1,3).=.[0;0;w1;0;0;w2;w1;w2;2*w3
29d60 5d 3b 0a 09 20 0a 09 20 52 20 3d 20 65 79 65 28 33 29 2a 61 6c 70 68 61 20 2b 20 6f 6d 65 67 61 ];......R.=.eye(3)*alpha.+.omega
29d80 76 2a 62 65 74 61 20 2b 20 41 2a 67 61 6d 6d 61 3b 0a 09 20 0a 09 20 64 52 64 6d 31 20 3d 20 7a v*beta.+.A*gamma;......dRdm1.=.z
29da0 65 72 6f 73 28 39 2c 32 31 29 3b 0a 09 20 0a 09 20 64 52 64 6d 31 28 5b 31 20 35 20 39 5d 2c 31 eros(9,21);......dRdm1([1.5.9],1
29dc0 29 20 3d 20 6f 6e 65 73 28 33 2c 31 29 3b 0a 09 20 64 52 64 6d 31 28 3a 2c 32 29 20 3d 20 6f 6d ).=.ones(3,1);...dRdm1(:,2).=.om
29de0 65 67 61 76 28 3a 29 3b 0a 09 20 64 52 64 6d 31 28 3a 2c 34 3a 31 32 29 20 3d 20 62 65 74 61 2a egav(:);...dRdm1(:,4:12).=.beta*
29e00 65 79 65 28 39 29 3b 0a 09 20 64 52 64 6d 31 28 3a 2c 33 29 20 3d 20 41 28 3a 29 3b 0a 09 20 64 eye(9);...dRdm1(:,3).=.A(:);...d
29e20 52 64 6d 31 28 3a 2c 31 33 3a 32 31 29 20 3d 20 67 61 6d 6d 61 2a 65 79 65 28 39 29 3b 0a 09 20 Rdm1(:,13:21).=.gamma*eye(9);...
29e40 0a 09 20 64 52 64 69 6e 20 3d 20 64 52 64 6d 31 20 2a 20 64 6d 31 64 6d 32 20 2a 20 64 6d 32 64 ...dRdin.=.dRdm1.*.dm1dm2.*.dm2d
29e60 6d 33 20 2a 20 64 6d 33 64 69 6e 3b 0a 09 20 0a 09 20 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 m3.*.dm3din;.............end;...
29e80 20 20 20 20 6f 75 74 20 3d 20 52 3b 0a 20 20 20 20 20 20 64 6f 75 74 20 3d 20 64 52 64 69 6e 3b ....out.=.R;.......dout.=.dRdin;
29ea0 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 25 25 20 69 74 20 69 73 20 70 72 6f 62 2e 20 61 20 72 ..............%%.it.is.prob..a.r
29ec0 6f 74 20 6d 61 74 72 2e 0a 20 20 20 65 6c 73 65 69 66 20 28 28 6d 3d 3d 6e 29 20 26 20 28 6d 3d ot.matr.....elseif.((m==n).&.(m=
29ee0 3d 33 29 20 26 20 28 6e 6f 72 6d 28 69 6e 27 20 2a 20 69 6e 20 2d 20 65 79 65 28 33 29 29 20 3c =3).&.(norm(in'.*.in.-.eye(3)).<
29f00 20 62 69 67 65 70 73 29 2e 2e 2e 0a 09 20 20 20 20 26 20 28 61 62 73 28 64 65 74 28 69 6e 29 2d .bigeps).........&.(abs(det(in)-
29f20 31 29 20 3c 20 62 69 67 65 70 73 29 29 0a 20 20 20 20 20 20 52 20 3d 20 69 6e 3b 0a 20 20 20 20 1).<.bigeps)).......R.=.in;.....
29f40 20 20 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 74 72 20 3d 20 28 74 72 61 .......................tr.=.(tra
29f60 63 65 28 52 29 2d 31 29 2f 32 3b 0a 20 20 20 20 20 20 64 74 72 64 52 20 3d 20 5b 31 20 30 20 30 ce(R)-1)/2;.......dtrdR.=.[1.0.0
29f80 20 30 20 31 20 30 20 30 20 30 20 31 5d 2f 32 3b 0a 20 20 20 20 20 20 74 68 65 74 61 20 3d 20 72 .0.1.0.0.0.1]/2;.......theta.=.r
29fa0 65 61 6c 28 61 63 6f 73 28 74 72 29 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 0a 20 20 20 eal(acos(tr));..................
29fc0 20 20 20 69 66 20 73 69 6e 28 74 68 65 74 61 29 20 3e 3d 20 31 65 2d 35 2c 0a 09 20 0a 09 20 64 ...if.sin(theta).>=.1e-5,......d
29fe0 74 68 65 74 61 64 74 72 20 3d 20 2d 31 2f 73 71 72 74 28 31 2d 74 72 5e 32 29 3b 0a 09 20 0a 09 thetadtr.=.-1/sqrt(1-tr^2);.....
2a000 20 64 74 68 65 74 61 64 52 20 3d 20 64 74 68 65 74 61 64 74 72 20 2a 20 64 74 72 64 52 3b 0a 09 .dthetadR.=.dthetadtr.*.dtrdR;..
2a020 20 25 20 76 61 72 31 20 3d 20 5b 76 74 68 3b 74 68 65 74 61 5d 3b 0a 09 20 76 74 68 20 3d 20 31 .%.var1.=.[vth;theta];...vth.=.1
2a040 2f 28 32 2a 73 69 6e 28 74 68 65 74 61 29 29 3b 0a 09 20 64 76 74 68 64 74 68 65 74 61 20 3d 20 /(2*sin(theta));...dvthdtheta.=.
2a060 2d 76 74 68 2a 63 6f 73 28 74 68 65 74 61 29 2f 73 69 6e 28 74 68 65 74 61 29 3b 0a 09 20 64 76 -vth*cos(theta)/sin(theta);...dv
2a080 61 72 31 64 74 68 65 74 61 20 3d 20 5b 64 76 74 68 64 74 68 65 74 61 3b 31 5d 3b 0a 09 20 0a 09 ar1dtheta.=.[dvthdtheta;1];.....
2a0a0 20 64 76 61 72 31 64 52 20 3d 20 20 64 76 61 72 31 64 74 68 65 74 61 20 2a 20 64 74 68 65 74 61 .dvar1dR.=..dvar1dtheta.*.dtheta
2a0c0 64 52 3b 0a 09 20 0a 09 20 0a 09 20 6f 6d 31 20 3d 20 5b 52 28 33 2c 32 29 2d 52 28 32 2c 33 29 dR;.........om1.=.[R(3,2)-R(2,3)
2a0e0 2c 20 52 28 31 2c 33 29 2d 52 28 33 2c 31 29 2c 20 52 28 32 2c 31 29 2d 52 28 31 2c 32 29 5d 27 ,.R(1,3)-R(3,1),.R(2,1)-R(1,2)]'
2a100 3b 0a 09 20 0a 09 20 64 6f 6d 31 64 52 20 3d 20 5b 30 20 30 20 30 20 30 20 30 20 31 20 30 20 2d ;......dom1dR.=.[0.0.0.0.0.1.0.-
2a120 31 20 30 3b 0a 09 20 20 20 20 20 20 20 30 20 30 20 2d 31 20 30 20 30 20 30 20 31 20 30 20 30 3b 1.0;.........0.0.-1.0.0.0.1.0.0;
2a140 0a 09 20 20 20 20 20 20 20 30 20 31 20 30 20 2d 31 20 30 20 30 20 30 20 30 20 30 5d 3b 0a 09 20 .........0.1.0.-1.0.0.0.0.0];...
2a160 0a 09 20 25 20 76 61 72 20 3d 20 5b 6f 6d 31 3b 76 74 68 3b 74 68 65 74 61 5d 3b 0a 09 20 64 76 ...%.var.=.[om1;vth;theta];...dv
2a180 61 72 64 52 20 3d 20 5b 64 6f 6d 31 64 52 3b 64 76 61 72 31 64 52 5d 3b 0a 09 20 0a 09 20 25 20 ardR.=.[dom1dR;dvar1dR];......%.
2a1a0 76 61 72 32 20 3d 20 5b 6f 6d 3b 74 68 65 74 61 5d 3b 0a 09 20 6f 6d 20 3d 20 76 74 68 2a 6f 6d var2.=.[om;theta];...om.=.vth*om
2a1c0 31 3b 0a 09 20 64 6f 6d 64 76 61 72 20 3d 20 5b 76 74 68 2a 65 79 65 28 33 29 20 6f 6d 31 20 7a 1;...domdvar.=.[vth*eye(3).om1.z
2a1e0 65 72 6f 73 28 33 2c 31 29 5d 3b 0a 09 20 64 74 68 65 74 61 64 76 61 72 20 3d 20 5b 30 20 30 20 eros(3,1)];...dthetadvar.=.[0.0.
2a200 30 20 30 20 31 5d 3b 0a 09 20 64 76 61 72 32 64 76 61 72 20 3d 20 5b 64 6f 6d 64 76 61 72 3b 64 0.0.1];...dvar2dvar.=.[domdvar;d
2a220 74 68 65 74 61 64 76 61 72 5d 3b 0a 09 20 0a 09 20 0a 09 20 6f 75 74 20 3d 20 6f 6d 2a 74 68 65 thetadvar];.........out.=.om*the
2a240 74 61 3b 0a 09 20 64 6f 6d 65 67 61 64 76 61 72 32 20 3d 20 5b 74 68 65 74 61 2a 65 79 65 28 33 ta;...domegadvar2.=.[theta*eye(3
2a260 29 20 6f 6d 5d 3b 0a 09 20 0a 09 20 64 6f 75 74 20 3d 20 64 6f 6d 65 67 61 64 76 61 72 32 20 2a ).om];......dout.=.domegadvar2.*
2a280 20 64 76 61 72 32 64 76 61 72 20 2a 20 64 76 61 72 64 52 3b 0a 09 20 0a 09 20 0a 20 20 20 20 20 .dvar2dvar.*.dvardR;............
2a2a0 20 65 6c 73 65 0a 09 20 69 66 20 74 72 20 3e 20 30 3b 20 09 09 09 25 20 63 61 73 65 20 6e 6f 72 .else...if.tr.>.0;....%.case.nor
2a2c0 6d 28 6f 6d 29 3d 30 3b 0a 09 20 20 20 20 0a 09 20 20 20 20 6f 75 74 20 3d 20 5b 30 20 30 20 30 m(om)=0;............out.=.[0.0.0
2a2e0 5d 27 3b 0a 09 20 20 20 20 0a 09 20 20 20 20 64 6f 75 74 20 3d 20 5b 30 20 30 20 30 20 30 20 30 ]';............dout.=.[0.0.0.0.0
2a300 20 31 2f 32 20 30 20 2d 31 2f 32 20 30 3b 0a 09 09 20 20 30 20 30 20 2d 31 2f 32 20 30 20 30 20 .1/2.0.-1/2.0;.....0.0.-1/2.0.0.
2a320 30 20 31 2f 32 20 30 20 30 3b 0a 09 09 20 20 30 20 31 2f 32 20 30 20 2d 31 2f 32 20 30 20 30 20 0.1/2.0.0;.....0.1/2.0.-1/2.0.0.
2a340 30 20 30 20 30 5d 3b 0a 09 20 65 6c 73 65 20 09 09 09 09 25 20 63 61 73 65 20 6e 6f 72 6d 28 6f 0.0.0];...else.....%.case.norm(o
2a360 6d 29 3d 70 69 3b 20 25 25 20 66 69 78 65 64 20 41 70 72 69 6c 20 36 74 68 0a 09 20 20 20 20 0a m)=pi;.%%.fixed.April.6th.......
2a380 09 20 20 20 20 0a 09 20 20 20 20 6f 75 74 20 3d 20 74 68 65 74 61 20 2a 20 28 73 71 72 74 28 28 ...........out.=.theta.*.(sqrt((
2a3a0 64 69 61 67 28 52 29 2b 31 29 2f 32 29 2e 2a 5b 31 3b 32 2a 28 52 28 31 2c 32 3a 33 29 3e 3d 30 diag(R)+1)/2).*[1;2*(R(1,2:3)>=0
2a3c0 29 27 2d 31 5d 29 3b 0a 09 20 20 20 20 25 6b 65 79 62 6f 61 72 64 3b 0a 09 20 20 20 20 0a 09 20 )'-1]);......%keyboard;.........
2a3e0 20 20 20 69 66 20 6e 61 72 67 6f 75 74 20 3e 20 31 2c 0a 09 20 20 20 20 20 20 20 66 70 72 69 6e ...if.nargout.>.1,.........fprin
2a400 74 66 28 31 2c 27 57 41 52 4e 49 4e 47 21 21 21 21 20 4a 61 63 6f 62 69 61 6e 20 64 6f 6d 64 52 tf(1,'WARNING!!!!.Jacobian.domdR
2a420 20 75 6e 64 65 66 69 6e 65 64 21 21 21 5c 6e 27 29 3b 0a 09 09 20 09 64 6f 75 74 20 3d 20 4e 61 .undefined!!!\n');.....dout.=.Na
2a440 4e 2a 6f 6e 65 73 28 33 2c 39 29 3b 0a 09 20 20 20 20 65 6e 64 3b 0a 09 20 65 6e 64 3b 20 0a 20 N*ones(3,9);......end;...end;...
2a460 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 65 .....end;...........else.......e
2a480 72 72 6f 72 28 27 4e 65 69 74 68 65 72 20 61 20 72 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 78 20 rror('Neither.a.rotation.matrix.
2a4a0 6e 6f 72 20 61 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 77 65 72 65 20 70 72 6f 76 69 nor.a.rotation.vector.were.provi
2a4c0 64 65 64 27 29 3b 0a 20 20 20 65 6e 64 3b 0a 0a 72 65 74 75 72 6e 3b 0a 0a 25 25 20 74 65 73 74 ded');....end;..return;..%%.test
2a4e0 20 6f 66 20 74 68 65 20 4a 61 63 6f 62 69 61 6e 73 3a 0a 0a 25 25 25 25 20 54 45 53 54 20 4f 46 .of.the.Jacobians:..%%%%.TEST.OF
2a500 20 64 52 64 6f 6d 3a 0a 6f 6d 20 3d 20 72 61 6e 64 6e 28 33 2c 31 29 3b 0a 64 6f 6d 20 3d 20 72 .dRdom:.om.=.randn(3,1);.dom.=.r
2a520 61 6e 64 6e 28 33 2c 31 29 2f 31 30 30 30 30 30 30 3b 0a 0a 5b 52 31 2c 64 52 31 5d 20 3d 20 72 andn(3,1)/1000000;..[R1,dR1].=.r
2a540 6f 64 72 69 67 75 65 73 28 6f 6d 29 3b 0a 52 32 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 2b odrigues(om);.R2.=.rodrigues(om+
2a560 64 6f 6d 29 3b 0a 0a 52 32 61 20 3d 20 52 31 20 2b 20 72 65 73 68 61 70 65 28 64 52 31 20 2a 20 dom);..R2a.=.R1.+.reshape(dR1.*.
2a580 64 6f 6d 2c 33 2c 33 29 3b 0a 0a 67 61 69 6e 20 3d 20 6e 6f 72 6d 28 52 32 20 2d 20 52 31 29 2f dom,3,3);..gain.=.norm(R2.-.R1)/
2a5a0 6e 6f 72 6d 28 52 32 20 2d 20 52 32 61 29 0a 0a 25 25 25 20 54 45 53 54 20 4f 46 20 64 4f 6d 64 norm(R2.-.R2a)..%%%.TEST.OF.dOmd
2a5c0 52 3a 0a 6f 6d 20 3d 20 72 61 6e 64 6e 28 33 2c 31 29 3b 0a 52 20 3d 20 72 6f 64 72 69 67 75 65 R:.om.=.randn(3,1);.R.=.rodrigue
2a5e0 73 28 6f 6d 29 3b 0a 64 6f 6d 20 3d 20 72 61 6e 64 6e 28 33 2c 31 29 2f 31 30 30 30 30 3b 0a 64 s(om);.dom.=.randn(3,1)/10000;.d
2a600 52 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 2b 64 6f 6d 29 20 2d 20 52 3b 0a 0a 5b 6f 6d 63 R.=.rodrigues(om+dom).-.R;..[omc
2a620 2c 64 6f 6d 64 52 5d 20 3d 20 72 6f 64 72 69 67 75 65 73 28 52 29 3b 0a 5b 6f 6d 32 5d 20 3d 20 ,domdR].=.rodrigues(R);.[om2].=.
2a640 72 6f 64 72 69 67 75 65 73 28 52 2b 64 52 29 3b 0a 0a 6f 6d 5f 61 70 70 20 3d 20 6f 6d 63 20 2b rodrigues(R+dR);..om_app.=.omc.+
2a660 20 64 6f 6d 64 52 2a 64 52 28 3a 29 3b 0a 0a 67 61 69 6e 20 3d 20 6e 6f 72 6d 28 6f 6d 32 20 2d .domdR*dR(:);..gain.=.norm(om2.-
2a680 20 6f 6d 63 29 2f 6e 6f 72 6d 28 6f 6d 32 20 2d 20 6f 6d 5f 61 70 70 29 0a 0a 0a 25 25 25 20 4f .omc)/norm(om2.-.om_app)...%%%.O
2a6a0 54 48 45 52 20 42 55 47 3a 20 28 46 49 58 45 44 20 4e 4f 57 21 21 21 29 0a 0a 6f 6d 75 20 3d 20 THER.BUG:.(FIXED.NOW!!!)..omu.=.
2a6c0 72 61 6e 64 6e 28 33 2c 31 29 3b 20 20 20 0a 6f 6d 75 20 3d 20 6f 6d 75 2f 6e 6f 72 6d 28 6f 6d randn(3,1);....omu.=.omu/norm(om
2a6e0 75 29 0a 6f 6d 20 3d 20 70 69 2a 6f 6d 75 3b 20 20 20 20 20 20 20 20 0a 5b 52 2c 64 52 5d 3d 20 u).om.=.pi*omu;.........[R,dR]=.
2a700 72 6f 64 72 69 67 75 65 73 28 6f 6d 29 3b 0a 5b 6f 6d 32 5d 20 3d 20 72 6f 64 72 69 67 75 65 73 rodrigues(om);.[om2].=.rodrigues
2a720 28 52 29 3b 0a 5b 6f 6d 20 6f 6d 32 5d 0a 0a 25 25 25 20 4e 4f 52 4d 41 4c 20 4f 50 45 52 41 54 (R);.[om.om2]..%%%.NORMAL.OPERAT
2a740 49 4f 4e 0a 0a 6f 6d 20 3d 20 72 61 6e 64 6e 28 33 2c 31 29 3b 20 20 20 20 20 20 20 20 20 0a 5b ION..om.=.randn(3,1);..........[
2a760 52 2c 64 52 5d 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 29 3b 0a 5b 6f 6d 32 5d 20 3d 20 72 6f R,dR]=.rodrigues(om);.[om2].=.ro
2a780 64 72 69 67 75 65 73 28 52 29 3b 0a 5b 6f 6d 20 6f 6d 32 5d 0a 0a 20 64 52 64 6d 31 20 3d 20 7a drigues(R);.[om.om2]...dRdm1.=.z
2a7a0 65 72 6f 73 28 39 2c 32 31 29 3b 0a 09 20 0a 09 20 64 52 64 6d 31 28 5b 31 20 35 20 39 5d 2c 31 eros(9,21);......dRdm1([1.5.9],1
2a7c0 29 20 3d 20 6f 6e 65 73 28 33 2c 31 29 3b 0a 09 20 64 52 64 6d 31 28 3a 2c 32 29 20 3d 20 6f 6d ).=.ones(3,1);...dRdm1(:,2).=.om
2a7e0 65 67 61 76 28 3a 29 3b 0a 09 20 64 52 64 6d 31 28 3a 2c 34 3a 31 32 29 20 3d 20 62 65 74 61 2a egav(:);...dRdm1(:,4:12).=.beta*
2a800 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 72 6f 74 61 74 69 6f 6e 2e 6d 00 00 00 00 00 00 00 00 TOOLBOX_calib/rotation.m........
2a820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a860 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
2a880 20 20 20 20 33 34 36 20 20 37 30 32 34 30 33 37 33 35 32 20 20 31 30 34 32 30 00 20 00 00 00 00 ....346..7024037352..10420......
2a8a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a8c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a8e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a9a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a9c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a9e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2aa00 66 75 6e 63 74 69 6f 6e 20 5b 5d 20 3d 20 72 6f 74 61 74 69 6f 6e 28 73 74 29 3b 0a 0a 69 66 20 function.[].=.rotation(st);..if.
2aa20 6e 61 72 67 69 6e 20 3c 20 31 2c 0a 20 20 20 73 74 3d 20 31 3b 0a 65 6e 64 3b 0a 0a 0a 66 69 67 nargin.<.1,....st=.1;.end;...fig
2aa40 20 3d 20 67 63 66 3b 0a 0a 61 78 20 3d 20 67 63 61 3b 0a 0a 76 76 20 3d 20 67 65 74 28 61 78 2c .=.gcf;..ax.=.gca;..vv.=.get(ax,
2aa60 27 76 69 65 77 27 29 3b 0a 0a 61 7a 20 3d 20 76 76 28 31 29 3b 0a 65 6c 20 3d 20 76 76 28 32 29 'view');..az.=.vv(1);.el.=.vv(2)
2aa80 3b 0a 0a 66 6f 72 20 61 7a 69 20 3d 20 61 7a 3a 2d 61 62 73 28 73 74 29 3a 61 7a 2d 33 36 30 2c ;..for.azi.=.az:-abs(st):az-360,
2aaa0 0a 20 20 20 0a 20 20 20 73 65 74 28 61 78 2c 27 76 69 65 77 27 2c 5b 61 7a 69 20 65 6c 5d 29 3b ........set(ax,'view',[azi.el]);
2aac0 0a 20 20 20 66 69 67 75 72 65 28 66 69 67 29 3b 0a 20 20 20 64 72 61 77 6e 6f 77 3b 0a 20 20 20 ....figure(fig);....drawnow;....
2aae0 0a 65 6e 64 3b 0a 68 5f 63 65 6e 74 65 72 33 44 2e 6d 00 65 00 00 05 dc 00 02 36 a5 00 18 00 09 .end;.h_center3D.m.e......6.....
2ab00 73 74 61 72 74 75 70 2e 6d 00 00 a4 00 00 05 f0 00 02 36 a6 00 18 00 09 74 65 73 74 5f 33 64 2e startup.m.........6.....test_3d.
2ab20 6d 00 6e 74 00 00 06 00 00 02 33 c0 00 14 00 06 69 73 33 44 2e 6d 00 2e 00 00 06 1c 00 02 36 a7 m.nt......3.....is3D.m........6.
2ab40 00 20 00 11 75 6e 64 69 73 74 6f 72 74 5f 69 6d 61 67 65 2e 6d 00 36 a7 00 00 06 34 00 02 36 a8 ....undistort_image.m.6....4..6.
2ab60 00 1c 00 0d 55 6e 57 61 72 70 50 6c 61 6e 65 2e 6d 00 06 34 00 00 06 48 00 02 36 a9 00 18 00 0a ....UnWarpPlane.m..4...H..6.....
2ab80 77 72 69 74 65 72 61 73 2e 6d 00 2e 00 00 06 64 00 02 36 aa 00 20 00 10 65 72 72 6f 72 5f 61 6e writeras.m.....d..6.....error_an
2aba0 61 6c 79 73 69 73 2e 6d 00 02 36 aa 00 00 06 78 00 02 36 ab 00 18 00 09 6c 6f 61 64 69 6e 72 2e alysis.m..6....x..6.....loadinr.
2abc0 6d 00 00 6c 00 00 06 8c 00 02 36 ac 00 18 00 09 6c 6f 61 64 70 67 6d 2e 6d 00 79 73 00 00 06 a0 m..l......6.....loadpgm.m.ys....
2abe0 00 02 36 ad 00 18 00 09 6c 6f 61 64 70 70 6d 2e 6d 00 61 64 00 00 06 b4 00 02 36 ae 00 18 00 09 ..6.....loadppm.m.ad......6.....
2ac00 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 73 61 76 69 6e 67 5f 63 61 6c 69 62 2e 6d 00 00 00 00 TOOLBOX_calib/saving_calib.m....
2ac20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ac40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ac60 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
2ac80 20 20 20 32 31 30 33 20 20 37 30 32 34 30 33 37 33 35 36 20 20 31 31 32 31 37 00 20 00 00 00 00 ...2103..7024037356..11217......
2aca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2acc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ace0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ad00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ad20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ad40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ad60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ad80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ada0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2adc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ade0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ae00 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 53 61 76 69 6e 67 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 fprintf(1,'\nSaving.calibration.
2ae20 72 65 73 75 6c 74 73 20 75 6e 64 65 72 20 43 61 6c 69 62 5f 52 65 73 75 6c 74 73 2e 6d 61 74 5c results.under.Calib_Results.mat\
2ae40 6e 27 29 3b 0a 0a 63 68 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 0a 69 66 20 7e n');..check_active_images;..if.~
2ae60 65 78 69 73 74 28 27 73 6f 6c 75 74 69 6f 6e 5f 69 6e 69 74 27 29 2c 20 73 6f 6c 75 74 69 6f 6e exist('solution_init'),.solution
2ae80 5f 69 6e 69 74 20 3d 20 5b 5d 3b 20 65 6e 64 3b 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 _init.=.[];.end;..for.kk.=.1:n_i
2aea0 6d 61 2c 0a 20 20 20 69 66 20 7e 65 78 69 73 74 28 5b 27 64 58 5f 27 20 6e 75 6d 32 73 74 72 28 ma,....if.~exist(['dX_'.num2str(
2aec0 6b 6b 29 5d 29 2c 20 65 76 61 6c 28 5b 27 64 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 kk)]),.eval(['dX_'.num2str(kk).'
2aee0 3d 20 64 58 3b 27 5d 29 3b 20 65 6e 64 3b 0a 20 20 20 69 66 20 7e 65 78 69 73 74 28 5b 27 64 59 =.dX;']);.end;....if.~exist(['dY
2af00 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 5d 29 2c 20 65 76 61 6c 28 5b 27 64 59 5f 27 20 6e 75 _'.num2str(kk)]),.eval(['dY_'.nu
2af20 6d 32 73 74 72 28 6b 6b 29 20 27 3d 20 64 59 3b 27 5d 29 3b 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a m2str(kk).'=.dY;']);.end;.end;..
2af40 69 66 20 7e 65 78 69 73 74 28 27 70 61 72 61 6d 5f 6c 69 73 74 27 29 2c 0a 20 20 20 70 61 72 61 if.~exist('param_list'),....para
2af60 6d 5f 6c 69 73 74 20 3d 20 73 6f 6c 75 74 69 6f 6e 3b 0a 65 6e 64 3b 0a 0a 0a 73 74 72 69 6e 67 m_list.=.solution;.end;...string
2af80 5f 73 61 76 65 20 3d 20 27 73 61 76 65 20 43 61 6c 69 62 5f 52 65 73 75 6c 74 73 20 70 61 72 61 _save.=.'save.Calib_Results.para
2afa0 6d 5f 6c 69 73 74 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 20 69 6e 64 5f 61 63 74 69 76 65 20 m_list.active_images.ind_active.
2afc0 66 63 20 6b 63 20 63 63 20 65 78 20 78 20 79 20 73 6f 6c 75 74 69 6f 6e 20 73 6f 6c 5f 77 69 74 fc.kc.cc.ex.x.y.solution.sol_wit
2afe0 68 5f 63 65 6e 74 65 72 20 73 6f 6c 75 74 69 6f 6e 5f 69 6e 69 74 20 77 69 6e 74 78 20 77 69 6e h_center.solution_init.wintx.win
2b000 74 79 20 6e 5f 69 6d 61 20 74 79 70 65 5f 6e 75 6d 62 65 72 69 6e 67 20 4e 5f 73 6c 6f 74 73 20 ty.n_ima.type_numbering.N_slots.
2b020 73 6d 61 6c 6c 5f 63 61 6c 69 62 5f 69 6d 61 67 65 20 66 69 72 73 74 5f 6e 75 6d 20 69 6d 61 67 small_calib_image.first_num.imag
2b040 65 5f 6e 75 6d 62 65 72 73 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 63 61 6c 69 62 5f 6e 61 6d e_numbers.format_image.calib_nam
2b060 65 20 48 63 61 6c 20 57 63 61 6c 20 6e 78 20 6e 79 20 6d 61 70 20 64 58 5f 64 65 66 61 75 6c 74 e.Hcal.Wcal.nx.ny.map.dX_default
2b080 20 64 59 5f 64 65 66 61 75 6c 74 20 4b 4b 20 69 6e 76 5f 4b 4b 20 64 58 20 64 59 27 3b 0a 0a 66 .dY_default.KK.inv_KK.dX.dY';..f
2b0a0 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 73 74 72 69 6e 67 5f 73 61 76 65 20 or.kk.=.1:n_ima,....string_save.
2b0c0 3d 20 5b 73 74 72 69 6e 67 5f 73 61 76 65 20 27 20 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 =.[string_save.'.X_'.num2str(kk)
2b0e0 20 27 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 79 5f 27 20 6e 75 6d 32 73 74 72 .'.x_'.num2str(kk).'.y_'.num2str
2b100 28 6b 6b 29 20 27 20 65 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 6f 6d 63 5f 27 20 (kk).'.ex_'.num2str(kk).'.omc_'.
2b120 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 52 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 num2str(kk).'.Rc_'.num2str(kk).'
2b140 20 54 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 48 5f 27 20 6e 75 6d 32 73 74 72 28 .Tc_'.num2str(kk).'.H_'.num2str(
2b160 6b 6b 29 20 27 20 6e 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 6e 5f 73 kk).'.n_sq_x_'.num2str(kk).'.n_s
2b180 71 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 77 69 6e 74 78 5f 27 20 6e 75 6d 32 q_y_'.num2str(kk).'.wintx_'.num2
2b1a0 73 74 72 28 6b 6b 29 20 27 20 77 69 6e 74 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 str(kk).'.winty_'.num2str(kk).'.
2b1c0 64 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 64 59 5f 27 20 6e 75 6d 32 73 74 72 28 dX_'.num2str(kk).'.dY_'.num2str(
2b1e0 6b 6b 29 5d 3b 0a 65 6e 64 3b 0a 0a 25 66 70 72 69 6e 74 66 28 31 2c 27 54 6f 20 6c 6f 61 64 20 kk)];.end;..%fprintf(1,'To.load.
2b200 6c 61 74 65 72 20 63 6c 69 63 6b 20 6f 6e 20 4c 6f 61 64 5c 6e 27 29 3b 0a 0a 66 70 72 69 6e 74 later.click.on.Load\n');..fprint
2b220 66 28 31 2c 27 64 6f 6e 65 5c 6e 27 29 3b 0a 0a 65 76 61 6c 28 73 74 72 69 6e 67 5f 73 61 76 65 f(1,'done\n');..eval(string_save
2b240 29 3b 0a 6e 65 73 28 33 2c 39 29 3b 0a 09 20 20 20 20 65 6e 64 3b 0a 09 20 65 6e 64 3b 20 0a 20 );.nes(3,9);......end;...end;...
2b260 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 65 .....end;...........else.......e
2b280 72 72 6f 72 28 27 4e 65 69 74 68 65 72 20 61 20 72 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 78 20 rror('Neither.a.rotation.matrix.
2b2a0 6e 6f 72 20 61 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 77 65 72 65 20 70 72 6f 76 69 nor.a.rotation.vector.were.provi
2b2c0 64 65 64 27 29 3b 0a 20 20 20 65 6e 64 3b 0a 0a 72 65 74 75 72 6e 3b 0a 0a 25 25 20 74 65 73 74 ded');....end;..return;..%%.test
2b2e0 20 6f 66 20 74 68 65 20 4a 61 63 6f 62 69 61 6e 73 3a 0a 0a 25 25 25 25 20 54 45 53 54 20 4f 46 .of.the.Jacobians:..%%%%.TEST.OF
2b300 20 64 52 64 6f 6d 3a 0a 6f 6d 20 3d 20 72 61 6e 64 6e 28 33 2c 31 29 3b 0a 64 6f 6d 20 3d 20 72 .dRdom:.om.=.randn(3,1);.dom.=.r
2b320 61 6e 64 6e 28 33 2c 31 29 2f 31 30 30 30 30 30 30 3b 0a 0a 5b 52 31 2c 64 52 31 5d 20 3d 20 72 andn(3,1)/1000000;..[R1,dR1].=.r
2b340 6f 64 72 69 67 75 65 73 28 6f 6d 29 3b 0a 52 32 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 2b odrigues(om);.R2.=.rodrigues(om+
2b360 64 6f 6d 29 3b 0a 0a 52 32 61 20 3d 20 52 31 20 2b 20 72 65 73 68 61 70 65 28 64 52 31 20 2a 20 dom);..R2a.=.R1.+.reshape(dR1.*.
2b380 64 6f 6d 2c 33 2c 33 29 3b 0a 0a 67 61 69 6e 20 3d 20 6e 6f 72 6d 28 52 32 20 2d 20 52 31 29 2f dom,3,3);..gain.=.norm(R2.-.R1)/
2b3a0 6e 6f 72 6d 28 52 32 20 2d 20 52 32 61 29 0a 0a 25 25 25 20 54 45 53 54 20 4f 46 20 64 4f 6d 64 norm(R2.-.R2a)..%%%.TEST.OF.dOmd
2b3c0 52 3a 0a 6f 6d 20 3d 20 72 61 6e 64 6e 28 33 2c 31 29 3b 0a 52 20 3d 20 72 6f 64 72 69 67 75 65 R:.om.=.randn(3,1);.R.=.rodrigue
2b3e0 73 28 6f 6d 29 3b 0a 64 6f 6d 20 3d 20 72 61 6e 64 6e 28 33 2c 31 29 2f 31 30 30 30 30 3b 0a 64 s(om);.dom.=.randn(3,1)/10000;.d
2b400 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 73 63 72 69 70 74 5f 66 69 74 5f 64 69 73 74 6f 72 74 TOOLBOX_calib/script_fit_distort
2b420 69 6f 6e 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ion.m...........................
2b440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b460 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
2b480 20 20 20 31 37 32 35 20 20 37 30 32 34 30 33 37 33 35 37 20 20 31 33 32 33 34 00 20 00 00 00 00 ...1725..7024037357..13234......
2b4a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b4c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b4e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b5a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b5c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b5e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b600 0a 20 20 20 20 20 20 73 61 74 69 73 5f 64 69 73 74 6f 72 74 20 3d 20 30 3b 0a 20 20 20 20 20 20 .......satis_distort.=.0;.......
2b620 0a 20 20 20 20 20 20 64 69 73 70 28 5b 27 45 73 74 69 6d 61 74 65 64 20 66 6f 63 61 6c 3a 20 27 .......disp(['Estimated.focal:.'
2b640 20 6e 75 6d 32 73 74 72 28 66 5f 67 29 20 27 20 70 69 78 65 6c 73 27 5d 29 3b 0a 20 20 20 20 20 .num2str(f_g).'.pixels']);......
2b660 20 0a 20 20 20 20 20 20 77 68 69 6c 65 20 7e 73 61 74 69 73 5f 64 69 73 74 6f 72 74 2c 0a 0a 09 ........while.~satis_distort,...
2b680 20 6b 5f 67 20 3d 20 69 6e 70 75 74 28 27 47 75 65 73 73 20 66 6f 72 20 64 69 73 74 6f 72 74 69 .k_g.=.input('Guess.for.distorti
2b6a0 6f 6e 20 66 61 63 74 6f 72 20 6b 63 20 28 5b 5d 3d 30 29 3a 20 27 29 3b 0a 09 20 0a 09 20 69 66 on.factor.kc.([]=0):.');......if
2b6c0 20 69 73 65 6d 70 74 79 28 6b 5f 67 29 2c 20 6b 5f 67 20 3d 20 30 3b 20 65 6e 64 3b 0a 20 20 20 .isempty(k_g),.k_g.=.0;.end;....
2b6e0 20 20 20 0a 09 20 78 79 5f 63 6f 72 6e 65 72 73 5f 75 6e 64 69 73 74 20 3d 20 63 6f 6d 70 5f 64 ......xy_corners_undist.=.comp_d
2b700 69 73 74 6f 72 74 69 6f 6e 32 28 5b 78 27 20 2d 20 63 5f 67 28 31 29 3b 79 27 2d 63 5f 67 28 32 istortion2([x'.-.c_g(1);y'-c_g(2
2b720 29 5d 2f 66 5f 67 2c 6b 5f 67 29 3b 0a 09 20 0a 09 20 78 75 20 3d 20 78 79 5f 63 6f 72 6e 65 72 )]/f_g,k_g);......xu.=.xy_corner
2b740 73 5f 75 6e 64 69 73 74 28 31 2c 3a 29 27 3b 0a 09 20 79 75 20 3d 20 78 79 5f 63 6f 72 6e 65 72 s_undist(1,:)';...yu.=.xy_corner
2b760 73 5f 75 6e 64 69 73 74 28 32 2c 3a 29 27 3b 0a 09 20 0a 09 20 5b 58 58 75 5d 20 3d 20 70 72 6f s_undist(2,:)';......[XXu].=.pro
2b780 6a 65 63 74 65 64 47 72 69 64 20 28 20 5b 78 75 28 31 29 3b 79 75 28 31 29 5d 2c 20 5b 78 75 28 jectedGrid.(.[xu(1);yu(1)],.[xu(
2b7a0 32 29 3b 79 75 28 32 29 5d 2c 5b 78 75 28 33 29 3b 79 75 28 33 29 5d 2c 20 5b 78 75 28 34 29 3b 2);yu(2)],[xu(3);yu(3)],.[xu(4);
2b7c0 79 75 28 34 29 5d 2c 6e 5f 73 71 5f 78 2b 31 2c 6e 5f 73 71 5f 79 2b 31 29 3b 20 25 20 54 68 65 yu(4)],n_sq_x+1,n_sq_y+1);.%.The
2b7e0 20 66 75 6c 6c 20 67 72 69 64 0a 09 20 0a 09 20 58 58 20 3d 20 28 6f 6e 65 73 28 32 2c 31 29 2a .full.grid......XX.=.(ones(2,1)*
2b800 28 31 20 2b 20 6b 5f 67 20 2a 20 73 75 6d 28 58 58 75 2e 5e 32 29 29 29 20 2e 2a 20 58 58 75 3b (1.+.k_g.*.sum(XXu.^2)))..*.XXu;
2b820 0a 09 20 58 58 28 31 2c 3a 29 20 3d 20 66 5f 67 2a 58 58 28 31 2c 3a 29 2b 63 5f 67 28 31 29 3b ...XX(1,:).=.f_g*XX(1,:)+c_g(1);
2b840 0a 09 20 58 58 28 32 2c 3a 29 20 3d 20 66 5f 67 2a 58 58 28 32 2c 3a 29 2b 63 5f 67 28 32 29 3b ...XX(2,:).=.f_g*XX(2,:)+c_g(2);
2b860 0a 09 20 0a 09 20 66 69 67 75 72 65 28 32 29 3b 0a 09 20 69 6d 61 67 65 28 49 29 3b 0a 09 20 63 ......figure(2);...image(I);...c
2b880 6f 6c 6f 72 6d 61 70 28 6d 61 70 29 3b 0a 09 20 7a 6f 6f 6d 20 6f 6e 3b 0a 09 20 68 6f 6c 64 20 olormap(map);...zoom.on;...hold.
2b8a0 6f 6e 3b 0a 09 20 25 70 6c 6f 74 28 66 5f 67 2a 58 58 75 28 31 2c 3a 29 2b 63 5f 67 28 31 29 2c on;...%plot(f_g*XXu(1,:)+c_g(1),
2b8c0 66 5f 67 2a 58 58 75 28 32 2c 3a 29 2b 63 5f 67 28 32 29 2c 27 72 6f 27 29 3b 0a 09 20 70 6c 6f f_g*XXu(2,:)+c_g(2),'ro');...plo
2b8e0 74 28 58 58 28 31 2c 3a 29 2c 58 58 28 32 2c 3a 29 2c 27 72 2b 27 29 3b 0a 09 20 74 69 74 6c 65 t(XX(1,:),XX(2,:),'r+');...title
2b900 28 27 54 68 65 20 72 65 64 20 63 72 6f 73 73 65 73 20 73 68 6f 75 6c 64 20 62 65 20 6f 6e 20 74 ('The.red.crosses.should.be.on.t
2b920 68 65 20 67 72 69 64 20 63 6f 72 6e 65 72 73 2e 2e 2e 27 29 3b 0a 09 20 68 6f 6c 64 20 6f 66 66 he.grid.corners...');...hold.off
2b940 3b 0a 09 20 0a 09 20 73 61 74 69 73 5f 64 69 73 74 6f 72 74 20 3d 20 69 6e 70 75 74 28 27 53 61 ;......satis_distort.=.input('Sa
2b960 74 69 73 66 69 65 64 20 77 69 74 68 20 64 69 73 74 6f 72 74 69 6f 6e 3f 20 28 5b 5d 3d 6e 6f 2c tisfied.with.distortion?.([]=no,
2b980 20 6f 74 68 65 72 3d 79 65 73 29 20 27 29 3b 0a 09 20 0a 09 20 73 61 74 69 73 5f 64 69 73 74 6f .other=yes).');......satis_disto
2b9a0 72 74 20 3d 20 7e 69 73 65 6d 70 74 79 28 73 61 74 69 73 5f 64 69 73 74 6f 72 74 29 3b 0a 09 20 rt.=.~isempty(satis_distort);...
2b9c0 0a 09 20 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 5f 27 20 6e 75 6d 32 73 74 72 28 ..........end;......._'.num2str(
2b9e0 6b 6b 29 5d 3b 0a 65 6e 64 3b 0a 0a 25 66 70 72 69 6e 74 66 28 31 2c 27 54 6f 20 6c 6f 61 64 20 kk)];.end;..%fprintf(1,'To.load.
2ba00 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 73 65 6c 65 63 74 5f 73 6f 6c 5f 6e 6f 5f 63 65 6e 74 TOOLBOX_calib/select_sol_no_cent
2ba20 65 72 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 er.m............................
2ba40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ba60 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
2ba80 20 20 20 31 33 30 32 20 20 37 30 32 34 30 33 37 33 36 30 20 20 31 32 37 36 31 00 20 00 00 00 00 ...1302..7024037360..12761......
2baa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bb00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bb20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bb40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bb60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bb80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bbc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bbe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bc00 25 25 25 20 53 65 6c 65 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 61 6c 69 62 72 61 74 69 6f 6e %%%.Selection.of.the.calibration
2bc20 20 73 6f 6c 75 74 69 6f 6e 20 77 69 74 68 20 63 65 6e 74 65 72 20 65 73 74 69 6d 61 74 69 6f 6e .solution.with.center.estimation
2bc40 0a 0a 69 66 20 7e 65 78 69 73 74 28 27 73 6f 6c 5f 6e 6f 5f 63 65 6e 74 65 72 27 29 2c 0a 20 20 ..if.~exist('sol_no_center'),...
2bc60 20 66 70 72 69 6e 74 66 28 31 2c 27 4e 65 65 64 20 74 6f 20 63 61 6c 69 62 72 61 74 65 20 62 65 .fprintf(1,'Need.to.calibrate.be
2bc80 66 6f 72 65 20 73 65 6c 65 63 74 69 6e 67 20 73 6f 6c 75 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 fore.selecting.solution.without.
2bca0 63 65 6e 74 65 72 2e 20 4d 61 79 62 65 20 6e 65 65 64 20 74 6f 20 6c 6f 61 64 20 43 61 6c 69 62 center..Maybe.need.to.load.Calib
2bcc0 5f 52 65 73 75 6c 74 73 2e 6d 61 74 20 66 69 6c 65 2e 5c 6e 27 29 3b 0a 20 20 20 72 65 74 75 72 _Results.mat.file.\n');....retur
2bce0 6e 3b 0a 65 6e 64 3b 0a 0a 73 6f 6c 75 74 69 6f 6e 20 3d 20 73 6f 6c 5f 6e 6f 5f 63 65 6e 74 65 n;.end;..solution.=.sol_no_cente
2bd00 72 3b 0a 0a 25 25 25 20 45 78 74 72 61 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 66 69 6e 61 6c 20 r;..%%%.Extraction.of.the.final.
2bd20 69 6e 74 72 69 6e 73 69 63 20 61 6e 64 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 61 74 65 intrinsic.and.extrinsic.paramate
2bd40 72 73 3a 0a 0a 65 78 74 72 61 63 74 5f 70 61 72 61 6d 65 74 65 72 73 3b 0a 63 6f 6d 70 5f 65 72 rs:..extract_parameters;.comp_er
2bd60 72 6f 72 5f 63 61 6c 69 62 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 5c 6e 43 61 6c 69 62 ror_calib;..fprintf(1,'\n\nCalib
2bd80 72 61 74 69 6f 6e 20 72 65 73 75 6c 74 73 20 77 69 74 68 6f 75 74 20 70 72 69 6e 63 69 70 61 6c ration.results.without.principal
2bda0 20 70 6f 69 6e 74 20 65 73 74 69 6d 61 74 69 6f 6e 3a 5c 6e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 .point.estimation:\n\n');.fprint
2bdc0 66 28 31 2c 27 46 6f 63 61 6c 20 4c 65 6e 67 74 68 3a 20 20 20 20 20 66 63 20 3d 20 5b 20 25 33 f(1,'Focal.Length:.....fc.=.[.%3
2bde0 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 66 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 .5f...%3.5f]\n',fc);.fprintf(1,'
2be00 50 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 3a 20 20 63 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 Principal.point:..cc.=.[.%3.5f..
2be20 20 25 33 2e 35 66 5d 5c 6e 27 2c 63 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 44 69 73 74 6f .%3.5f]\n',cc);.fprintf(1,'Disto
2be40 72 74 69 6f 6e 3a 20 20 20 20 20 20 20 6b 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 rtion:.......kc.=.[.%3.5f...%3.5
2be60 66 20 20 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 6b 63 29 3b 20 20 20 0a 66 70 f...%3.5f...%3.5f]\n',kc);....fp
2be80 72 69 6e 74 66 28 31 2c 27 50 69 78 65 6c 20 65 72 72 6f 72 3a 20 20 20 20 20 20 65 72 72 20 3d rintf(1,'Pixel.error:......err.=
2bea0 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 5c 6e 27 2c 65 72 72 5f 73 74 64 29 3b .[.%3.5f...%3.5f]\n\n',err_std);
2bec0 20 0a 07 b4 00 02 36 b8 00 1c 00 0e 72 69 67 69 64 5f 6d 6f 74 69 6f 6e 2e 6d 00 6d 00 00 07 d8 ......6.....rigid_motion.m.m....
2bee0 00 02 36 b9 00 28 00 18 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 69 6e 69 74 2e 6d ..6..(..compute_extrinsic_init.m
2bf00 00 00 07 d8 00 00 08 00 00 02 36 ba 00 28 00 1a 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 ..........6..(..compute_extrinsi
2bf20 63 5f 72 65 66 69 6e 65 2e 6d 00 00 00 00 0a 00 00 02 36 bb 00 24 00 15 67 6f 5f 63 61 6c 69 62 c_refine.m........6..$..go_calib
2bf40 5f 6f 70 74 69 6d 5f 69 74 65 72 2e 6d 00 00 1a 74 6f 72 74 20 3d 20 69 6e 70 75 74 28 27 53 61 _optim_iter.m...tort.=.input('Sa
2bf60 74 69 73 66 69 65 64 20 77 69 74 68 20 64 69 73 74 6f 72 74 69 6f 6e 3f 20 28 5b 5d 3d 6e 6f 2c tisfied.with.distortion?.([]=no,
2bf80 20 6f 74 68 65 72 3d 79 65 73 29 20 27 29 3b 0a 09 20 0a 09 20 73 61 74 69 73 5f 64 69 73 74 6f .other=yes).');......satis_disto
2bfa0 72 74 20 3d 20 7e 69 73 65 6d 70 74 79 28 73 61 74 69 73 5f 64 69 73 74 6f 72 74 29 3b 0a 09 20 rt.=.~isempty(satis_distort);...
2bfc0 0a 09 20 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 5f 27 20 6e 75 6d 32 73 74 72 28 ..........end;......._'.num2str(
2bfe0 6b 6b 29 5d 3b 0a 65 6e 64 3b 0a 0a 25 66 70 72 69 6e 74 66 28 31 2c 27 54 6f 20 6c 6f 61 64 20 kk)];.end;..%fprintf(1,'To.load.
2c000 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 73 65 6c 65 63 74 5f 73 6f 6c 5f 6e 6f 5f 63 65 6e 74 TOOLBOX_calib/select_sol_no_cent
2c020 65 72 33 44 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 er3D.m..........................
2c040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c060 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
2c080 20 20 20 31 30 33 36 20 20 37 30 32 34 30 33 37 33 36 31 20 20 31 33 31 35 35 00 20 00 00 00 00 ...1036..7024037361..13155......
2c0a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c0c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c0e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c200 25 25 25 20 53 65 6c 65 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 61 6c 69 62 72 61 74 69 6f 6e %%%.Selection.of.the.calibration
2c220 20 73 6f 6c 75 74 69 6f 6e 20 77 69 74 68 20 63 65 6e 74 65 72 20 65 73 74 69 6d 61 74 69 6f 6e .solution.with.center.estimation
2c240 0a 0a 73 6f 6c 75 74 69 6f 6e 20 3d 20 73 6f 6c 5f 6e 6f 5f 63 65 6e 74 65 72 3b 0a 0a 25 25 25 ..solution.=.sol_no_center;..%%%
2c260 20 45 78 74 72 61 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 66 69 6e 61 6c 20 69 6e 74 72 69 6e 73 .Extraction.of.the.final.intrins
2c280 69 63 20 61 6e 64 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 61 74 65 72 73 3a 0a 0a 65 78 ic.and.extrinsic.paramaters:..ex
2c2a0 74 72 61 63 74 5f 70 61 72 61 6d 65 74 65 72 73 33 44 3b 0a 0a 0a 66 70 72 69 6e 74 66 28 31 2c tract_parameters3D;...fprintf(1,
2c2c0 27 5c 6e 5c 6e 43 61 6c 69 62 72 61 74 69 6f 6e 20 72 65 73 75 6c 74 73 20 77 69 74 68 6f 75 74 '\n\nCalibration.results.without
2c2e0 20 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 65 73 74 69 6d 61 74 69 6f 6e 3a 5c 6e 5c 6e .principal.point.estimation:\n\n
2c300 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 46 6f 63 61 6c 20 4c 65 6e 67 74 68 3a 20 20 20 20 ');.fprintf(1,'Focal.Length:....
2c320 20 66 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 66 63 29 3b 0a 66 .fc.=.[.%3.5f...%3.5f]\n',fc);.f
2c340 70 72 69 6e 74 66 28 31 2c 27 50 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 3a 20 20 63 63 20 3d printf(1,'Principal.point:..cc.=
2c360 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 63 63 29 3b 0a 66 70 72 69 6e 74 .[.%3.5f...%3.5f]\n',cc);.fprint
2c380 66 28 31 2c 27 44 69 73 74 6f 72 74 69 6f 6e 3a 20 20 20 20 20 20 20 6b 63 20 3d 20 5b 20 25 33 f(1,'Distortion:.......kc.=.[.%3
2c3a0 2e 35 66 20 20 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c .5f...%3.5f...%3.5f...%3.5f]\n',
2c3c0 6b 63 29 3b 20 20 20 0a 0a 0a 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 47 kc);......%%%%%%%%%%%%%%%%%%%%.G
2c3e0 52 41 50 48 49 43 41 4c 20 4f 55 54 50 55 54 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 RAPHICAL.OUTPUT.%%%%%%%%%%%%%%%%
2c400 25 25 25 25 25 25 25 25 0a 0a 67 72 61 70 68 6f 75 74 5f 63 61 6c 69 62 33 44 3b 0a 0a 0a 79 73 %%%%%%%%..graphout_calib3D;...ys
2c420 69 73 2e 6d 00 00 61 6d 00 00 07 54 00 02 36 b4 00 20 00 13 63 68 65 63 6b 5f 63 6f 6e 76 65 72 is.m..am...T..6.....check_conver
2c440 67 65 6e 63 65 2e 6d 00 00 00 07 70 00 02 36 b5 00 20 00 11 63 68 65 63 6b 5f 70 6c 61 6e 61 72 gence.m....p..6.....check_planar
2c460 69 74 79 2e 6d 00 6e 63 00 00 07 88 00 02 36 b6 00 1c 00 0e 63 6f 6e 76 65 72 74 5f 6f 75 6c 75 ity.m.nc......6.....convert_oulu
2c480 2e 6d 00 72 00 00 07 9c 00 02 36 b7 00 18 00 0b 6e 6f 72 6d 61 6c 69 7a 65 2e 6d 00 00 00 07 b4 .m.r......6.....normalize.m.....
2c4a0 00 02 36 b8 00 1c 00 0e 72 69 67 69 64 5f 6d 6f 74 69 6f 6e 2e 6d 00 6d 00 00 07 d8 00 02 36 b9 ..6.....rigid_motion.m.m......6.
2c4c0 00 28 00 18 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 69 6e 69 74 2e 6d 00 00 07 d8 .(..compute_extrinsic_init.m....
2c4e0 00 00 08 00 00 02 36 ba 00 28 00 1a 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 72 65 ......6..(..compute_extrinsic_re
2c500 66 69 6e 65 2e 6d 00 00 00 00 0a 00 00 02 36 bb 00 24 00 15 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 fine.m........6..$..go_calib_opt
2c520 69 6d 5f 69 74 65 72 2e 6d 00 00 00 00 00 0a 00 00 02 36 bb 00 24 00 15 67 6f 5f 63 61 6c 69 62 im_iter.m.........6..$..go_calib
2c540 5f 6f 70 74 69 6d 5f 69 74 65 72 2e 6d 00 00 1a 74 6f 72 74 20 3d 20 69 6e 70 75 74 28 27 53 61 _optim_iter.m...tort.=.input('Sa
2c560 74 69 73 66 69 65 64 20 77 69 74 68 20 64 69 73 74 6f 72 74 69 6f 6e 3f 20 28 5b 5d 3d 6e 6f 2c tisfied.with.distortion?.([]=no,
2c580 20 6f 74 68 65 72 3d 79 65 73 29 20 27 29 3b 0a 09 20 0a 09 20 73 61 74 69 73 5f 64 69 73 74 6f .other=yes).');......satis_disto
2c5a0 72 74 20 3d 20 7e 69 73 65 6d 70 74 79 28 73 61 74 69 73 5f 64 69 73 74 6f 72 74 29 3b 0a 09 20 rt.=.~isempty(satis_distort);...
2c5c0 0a 09 20 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 5f 27 20 6e 75 6d 32 73 74 72 28 ..........end;......._'.num2str(
2c5e0 6b 6b 29 5d 3b 0a 65 6e 64 3b 0a 0a 25 66 70 72 69 6e 74 66 28 31 2c 27 54 6f 20 6c 6f 61 64 20 kk)];.end;..%fprintf(1,'To.load.
2c600 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 73 65 6c 65 63 74 5f 73 6f 6c 5f 77 69 74 68 5f 63 65 TOOLBOX_calib/select_sol_with_ce
2c620 6e 74 65 72 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 nter.m..........................
2c640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c660 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
2c680 20 20 20 31 33 30 30 20 20 37 30 32 34 30 33 37 33 36 32 20 20 31 33 33 32 30 00 20 00 00 00 00 ...1300..7024037362..13320......
2c6a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c6c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c6e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c7c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c7e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c800 25 25 25 20 53 65 6c 65 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 61 6c 69 62 72 61 74 69 6f 6e %%%.Selection.of.the.calibration
2c820 20 73 6f 6c 75 74 69 6f 6e 20 77 69 74 68 20 63 65 6e 74 65 72 20 65 73 74 69 6d 61 74 69 6f 6e .solution.with.center.estimation
2c840 0a 0a 69 66 20 7e 65 78 69 73 74 28 27 73 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 65 72 27 29 2c 0a ..if.~exist('sol_with_center'),.
2c860 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 4e 65 65 64 20 74 6f 20 63 61 6c 69 62 72 61 74 65 20 ...fprintf(1,'Need.to.calibrate.
2c880 62 65 66 6f 72 65 20 73 65 6c 65 63 74 69 6e 67 20 73 6f 6c 75 74 69 6f 6e 20 77 69 74 68 20 63 before.selecting.solution.with.c
2c8a0 65 6e 74 65 72 2e 20 4d 61 79 62 65 20 6e 65 65 64 20 74 6f 20 6c 6f 61 64 20 43 61 6c 69 62 5f enter..Maybe.need.to.load.Calib_
2c8c0 52 65 73 75 6c 74 73 2e 6d 61 74 20 66 69 6c 65 2e 5c 6e 27 29 3b 0a 20 20 20 72 65 74 75 72 6e Results.mat.file.\n');....return
2c8e0 3b 0a 65 6e 64 3b 0a 0a 73 6f 6c 75 74 69 6f 6e 20 3d 20 73 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 ;.end;..solution.=.sol_with_cent
2c900 65 72 3b 0a 0a 25 25 25 20 45 78 74 72 61 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 66 69 6e 61 6c er;..%%%.Extraction.of.the.final
2c920 20 69 6e 74 72 69 6e 73 69 63 20 61 6e 64 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 61 74 .intrinsic.and.extrinsic.paramat
2c940 65 72 73 3a 0a 0a 65 78 74 72 61 63 74 5f 70 61 72 61 6d 65 74 65 72 73 3b 0a 63 6f 6d 70 5f 65 ers:..extract_parameters;.comp_e
2c960 72 72 6f 72 5f 63 61 6c 69 62 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 5c 6e 43 61 6c 69 rror_calib;..fprintf(1,'\n\nCali
2c980 62 72 61 74 69 6f 6e 20 72 65 73 75 6c 74 73 20 77 69 74 68 20 70 72 69 6e 63 69 70 61 6c 20 70 bration.results.with.principal.p
2c9a0 6f 69 6e 74 20 65 73 74 69 6d 61 74 69 6f 6e 3a 5c 6e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 oint.estimation:\n\n');.fprintf(
2c9c0 31 2c 27 46 6f 63 61 6c 20 4c 65 6e 67 74 68 3a 20 20 20 20 20 66 63 20 3d 20 5b 20 25 33 2e 35 1,'Focal.Length:.....fc.=.[.%3.5
2c9e0 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 66 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 50 72 f...%3.5f]\n',fc);.fprintf(1,'Pr
2ca00 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 3a 20 20 63 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 incipal.point:..cc.=.[.%3.5f...%
2ca20 33 2e 35 66 5d 5c 6e 27 2c 63 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 44 69 73 74 6f 72 74 3.5f]\n',cc);.fprintf(1,'Distort
2ca40 69 6f 6e 3a 20 20 20 20 20 20 20 6b 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 20 ion:.......kc.=.[.%3.5f...%3.5f.
2ca60 20 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 6b 63 29 3b 20 20 20 0a 66 70 72 69 ..%3.5f...%3.5f]\n',kc);....fpri
2ca80 6e 74 66 28 31 2c 27 50 69 78 65 6c 20 65 72 72 6f 72 3a 20 20 20 20 20 20 65 72 72 20 3d 20 5b ntf(1,'Pixel.error:......err.=.[
2caa0 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 5c 6e 27 2c 65 72 72 5f 73 74 64 29 3b 20 0a .%3.5f...%3.5f]\n\n',err_std);..
2cac0 00 28 00 1a 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 72 65 66 69 6e 65 2e 6d 00 d8 .(..compute_extrinsic_refine.m..
2cae0 00 00 0a 00 00 02 36 bb 00 24 00 15 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 74 65 72 2e ......6..$..go_calib_optim_iter.
2cb00 6d 00 6e 65 2e 6d 00 00 00 00 0a 00 00 02 36 bb 00 24 00 15 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 m.ne.m........6..$..go_calib_opt
2cb20 69 6d 5f 69 74 65 72 2e 6d 00 00 00 00 00 0a 00 00 02 36 bb 00 24 00 15 67 6f 5f 63 61 6c 69 62 im_iter.m.........6..$..go_calib
2cb40 5f 6f 70 74 69 6d 5f 69 74 65 72 2e 6d 00 00 1a 74 6f 72 74 20 3d 20 69 6e 70 75 74 28 27 53 61 _optim_iter.m...tort.=.input('Sa
2cb60 74 69 73 66 69 65 64 20 77 69 74 68 20 64 69 73 74 6f 72 74 69 6f 6e 3f 20 28 5b 5d 3d 6e 6f 2c tisfied.with.distortion?.([]=no,
2cb80 20 6f 74 68 65 72 3d 79 65 73 29 20 27 29 3b 0a 09 20 0a 09 20 73 61 74 69 73 5f 64 69 73 74 6f .other=yes).');......satis_disto
2cba0 72 74 20 3d 20 7e 69 73 65 6d 70 74 79 28 73 61 74 69 73 5f 64 69 73 74 6f 72 74 29 3b 0a 09 20 rt.=.~isempty(satis_distort);...
2cbc0 0a 09 20 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 5f 27 20 6e 75 6d 32 73 74 72 28 ..........end;......._'.num2str(
2cbe0 6b 6b 29 5d 3b 0a 65 6e 64 3b 0a 0a 25 66 70 72 69 6e 74 66 28 31 2c 27 54 6f 20 6c 6f 61 64 20 kk)];.end;..%fprintf(1,'To.load.
2cc00 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 73 65 6c 65 63 74 5f 73 6f 6c 5f 77 69 74 68 5f 63 65 TOOLBOX_calib/select_sol_with_ce
2cc20 6e 74 65 72 33 44 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 nter3D.m........................
2cc40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cc60 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
2cc80 20 20 20 31 30 33 35 20 20 37 30 32 34 30 33 37 33 36 33 20 20 31 33 35 31 35 00 20 00 00 00 00 ...1035..7024037363..13515......
2cca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ccc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cd00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cd20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cd40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cd60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cd80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cda0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cdc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cde0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ce00 25 25 25 20 53 65 6c 65 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 61 6c 69 62 72 61 74 69 6f 6e %%%.Selection.of.the.calibration
2ce20 20 73 6f 6c 75 74 69 6f 6e 20 77 69 74 68 20 63 65 6e 74 65 72 20 65 73 74 69 6d 61 74 69 6f 6e .solution.with.center.estimation
2ce40 0a 0a 73 6f 6c 75 74 69 6f 6e 20 3d 20 73 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 65 72 3b 0a 0a 25 ..solution.=.sol_with_center;..%
2ce60 25 25 20 45 78 74 72 61 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 66 69 6e 61 6c 20 69 6e 74 72 69 %%.Extraction.of.the.final.intri
2ce80 6e 73 69 63 20 61 6e 64 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 61 74 65 72 73 3a 0a 0a nsic.and.extrinsic.paramaters:..
2cea0 65 78 74 72 61 63 74 5f 70 61 72 61 6d 65 74 65 72 73 33 44 3b 0a 0a 0a 66 70 72 69 6e 74 66 28 extract_parameters3D;...fprintf(
2cec0 31 2c 27 5c 6e 5c 6e 43 61 6c 69 62 72 61 74 69 6f 6e 20 72 65 73 75 6c 74 73 20 77 69 74 68 20 1,'\n\nCalibration.results.with.
2cee0 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 65 73 74 69 6d 61 74 69 6f 6e 3a 5c 6e 5c 6e 27 principal.point.estimation:\n\n'
2cf00 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 46 6f 63 61 6c 20 4c 65 6e 67 74 68 3a 20 20 20 20 20 );.fprintf(1,'Focal.Length:.....
2cf20 66 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 66 63 29 3b 0a 66 70 fc.=.[.%3.5f...%3.5f]\n',fc);.fp
2cf40 72 69 6e 74 66 28 31 2c 27 50 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 3a 20 20 63 63 20 3d 20 rintf(1,'Principal.point:..cc.=.
2cf60 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 63 63 29 3b 0a 66 70 72 69 6e 74 66 [.%3.5f...%3.5f]\n',cc);.fprintf
2cf80 28 31 2c 27 44 69 73 74 6f 72 74 69 6f 6e 3a 20 20 20 20 20 20 20 6b 63 20 3d 20 5b 20 25 33 2e (1,'Distortion:.......kc.=.[.%3.
2cfa0 35 66 20 20 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 6b 5f...%3.5f...%3.5f...%3.5f]\n',k
2cfc0 63 29 3b 20 20 20 0a 0a 0a 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 47 52 c);......%%%%%%%%%%%%%%%%%%%%.GR
2cfe0 41 50 48 49 43 41 4c 20 4f 55 54 50 55 54 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 APHICAL.OUTPUT.%%%%%%%%%%%%%%%%%
2d000 25 25 25 25 25 25 25 0a 0a 67 72 61 70 68 6f 75 74 5f 63 61 6c 69 62 33 44 3b 0a 0a 0a 02 36 b6 %%%%%%%..graphout_calib3D;....6.
2d020 00 1c 00 0e 63 6f 6e 76 65 72 74 5f 6f 75 6c 75 2e 6d 00 6c 00 00 07 9c 00 02 36 b7 00 18 00 0b ....convert_oulu.m.l......6.....
2d040 6e 6f 72 6d 61 6c 69 7a 65 2e 6d 00 00 00 07 b4 00 02 36 b8 00 1c 00 0e 72 69 67 69 64 5f 6d 6f normalize.m.......6.....rigid_mo
2d060 74 69 6f 6e 2e 6d 00 0b 00 00 07 d8 00 02 36 b9 00 28 00 18 63 6f 6d 70 75 74 65 5f 65 78 74 72 tion.m........6..(..compute_extr
2d080 69 6e 73 69 63 5f 69 6e 69 74 2e 6d 00 6d 00 0b 00 00 08 00 00 02 36 ba 00 28 00 1a 63 6f 6d 70 insic_init.m.m........6..(..comp
2d0a0 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 72 65 66 69 6e 65 2e 6d 00 6d 00 00 0a 00 00 02 36 bb ute_extrinsic_refine.m.m......6.
2d0c0 00 24 00 15 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 74 65 72 2e 6d 00 6e 65 2e 6d 00 d8 .$..go_calib_optim_iter.m.ne.m..
2d0e0 00 00 0a 00 00 02 36 bb 00 24 00 15 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 74 65 72 2e ......6..$..go_calib_optim_iter.
2d100 6d 00 6e 65 2e 6d 00 00 00 00 0a 00 00 02 36 bb 00 24 00 15 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 m.ne.m........6..$..go_calib_opt
2d120 69 6d 5f 69 74 65 72 2e 6d 00 00 00 00 00 0a 00 00 02 36 bb 00 24 00 15 67 6f 5f 63 61 6c 69 62 im_iter.m.........6..$..go_calib
2d140 5f 6f 70 74 69 6d 5f 69 74 65 72 2e 6d 00 00 1a 74 6f 72 74 20 3d 20 69 6e 70 75 74 28 27 53 61 _optim_iter.m...tort.=.input('Sa
2d160 74 69 73 66 69 65 64 20 77 69 74 68 20 64 69 73 74 6f 72 74 69 6f 6e 3f 20 28 5b 5d 3d 6e 6f 2c tisfied.with.distortion?.([]=no,
2d180 20 6f 74 68 65 72 3d 79 65 73 29 20 27 29 3b 0a 09 20 0a 09 20 73 61 74 69 73 5f 64 69 73 74 6f .other=yes).');......satis_disto
2d1a0 72 74 20 3d 20 7e 69 73 65 6d 70 74 79 28 73 61 74 69 73 5f 64 69 73 74 6f 72 74 29 3b 0a 09 20 rt.=.~isempty(satis_distort);...
2d1c0 0a 09 20 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 5f 27 20 6e 75 6d 32 73 74 72 28 ..........end;......._'.num2str(
2d1e0 6b 6b 29 5d 3b 0a 65 6e 64 3b 0a 0a 25 66 70 72 69 6e 74 66 28 31 2c 27 54 6f 20 6c 6f 61 64 20 kk)];.end;..%fprintf(1,'To.load.
2d200 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 73 74 61 72 74 75 70 2e 6d 00 00 00 00 00 00 00 00 00 TOOLBOX_calib/startup.m.........
2d220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d260 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
2d280 20 20 20 20 31 33 35 20 20 37 30 32 34 30 33 37 33 36 34 20 20 31 30 32 36 32 00 20 00 00 00 00 ....135..7024037364..10262......
2d2a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d2c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d2e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d3a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d3c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d3e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d400 25 20 4d 61 69 6e 20 63 61 6d 65 72 61 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 74 6f 6f 6c 62 6f %.Main.camera.calibration.toolbo
2d420 78 3a 0a 0a 63 61 6c 69 62 5f 67 75 69 3b 0a 0a 25 63 61 6c 69 62 5f 67 75 69 3b 0a 0a 70 61 74 x:..calib_gui;..%calib_gui;..pat
2d440 68 28 70 77 64 2c 70 61 74 68 29 3b 0a 0a 66 6f 72 6d 61 74 20 63 6f 6d 70 61 63 74 0a 67 65 2e h(pwd,path);..format.compact.ge.
2d460 6d 00 00 06 00 00 06 34 00 02 36 a8 00 1c 00 0d 55 6e 57 61 72 70 50 6c 61 6e 65 2e 6d 00 6f 72 m......4..6.....UnWarpPlane.m.or
2d480 00 00 06 48 00 02 36 a9 00 18 00 0a 77 72 69 74 65 72 61 73 2e 6d 00 0d 00 00 06 64 00 02 36 aa ...H..6.....writeras.m.....d..6.
2d4a0 00 20 00 10 65 72 72 6f 72 5f 61 6e 61 6c 79 73 69 73 2e 6d 00 72 69 74 00 00 06 78 00 02 36 ab ....error_analysis.m.rit...x..6.
2d4c0 00 18 00 09 6c 6f 61 64 69 6e 72 2e 6d 00 72 6f 00 00 06 8c 00 02 36 ac 00 18 00 09 6c 6f 61 64 ....loadinr.m.ro......6.....load
2d4e0 70 67 6d 2e 6d 00 36 ab 00 00 06 a0 00 02 36 ad 00 18 00 09 6c 6f 61 64 70 70 6d 2e 6d 00 36 ac pgm.m.6.......6.....loadppm.m.6.
2d500 00 00 06 b4 00 02 36 ae 00 18 00 09 73 61 76 65 69 6e 72 2e 6d 00 36 ad 00 00 06 c8 00 02 36 af ......6.....saveinr.m.6.......6.
2d520 00 18 00 09 73 61 76 65 70 67 6d 2e 6d 00 36 ae 00 00 06 dc 00 02 36 b0 00 18 00 09 73 61 76 65 ....savepgm.m.6.......6.....save
2d540 70 70 6d 2e 6d 00 36 af 00 00 06 fc 00 02 36 b1 00 24 00 16 69 6e 69 74 5f 69 6e 74 72 69 6e 73 ppm.m.6.......6..$..init_intrins
2d560 69 63 5f 70 61 72 61 6d 2e 6d 00 2e 00 00 07 18 00 02 36 b2 00 20 00 11 6d 65 61 6e 5f 73 74 64 ic_param.m........6.....mean_std
2d580 5f 72 6f 62 75 73 74 2e 6d 00 5f 70 00 00 07 38 00 02 36 b3 00 24 00 14 72 75 6e 5f 65 72 72 6f _robust.m._p...8..6..$..run_erro
2d5a0 72 5f 61 6e 61 6c 79 73 69 73 2e 6d 00 73 74 2e 00 00 07 54 00 02 36 b4 00 20 00 13 63 68 65 63 r_analysis.m.st....T..6.....chec
2d5c0 6b 5f 63 6f 6e 76 65 72 67 65 6e 63 65 2e 6d 00 00 00 07 70 00 02 36 b5 00 20 00 11 63 68 65 63 k_convergence.m....p..6.....chec
2d5e0 6b 5f 70 6c 61 6e 61 72 69 74 79 2e 6d 00 65 72 00 00 07 88 00 02 36 b6 00 1c 00 0e 63 6f 6e 76 k_planarity.m.er......6.....conv
2d600 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 74 65 73 74 5f 33 64 2e 6d 00 00 00 00 00 00 00 00 00 TOOLBOX_calib/test_3d.m.........
2d620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d660 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
2d680 20 20 20 34 33 36 31 20 20 37 30 32 34 30 33 37 33 36 35 20 20 31 30 31 35 33 00 20 00 00 00 00 ...4361..7024037365..10153......
2d6a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d6c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d6e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d7c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d7e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d800 52 63 5f 31 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 31 29 3b 0a 52 63 5f 32 20 3d 20 Rc_1.=.rodrigues(omc_1);.Rc_2.=.
2d820 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 32 29 3b 0a 52 63 5f 33 20 3d 20 72 6f 64 72 69 67 75 rodrigues(omc_2);.Rc_3.=.rodrigu
2d840 65 73 28 6f 6d 63 5f 33 29 3b 0a 52 63 5f 34 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f es(omc_3);.Rc_4.=.rodrigues(omc_
2d860 34 29 3b 0a 52 63 5f 35 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 35 29 3b 0a 52 63 5f 4);.Rc_5.=.rodrigues(omc_5);.Rc_
2d880 36 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 36 29 3b 0a 52 63 5f 37 20 3d 20 72 6f 64 6.=.rodrigues(omc_6);.Rc_7.=.rod
2d8a0 72 69 67 75 65 73 28 6f 6d 63 5f 37 29 3b 0a 52 63 5f 38 20 3d 20 72 6f 64 72 69 67 75 65 73 28 rigues(omc_7);.Rc_8.=.rodrigues(
2d8c0 6f 6d 63 5f 38 29 3b 0a 52 63 5f 39 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 39 29 3b omc_8);.Rc_9.=.rodrigues(omc_9);
2d8e0 0a 0a 52 63 5f 31 30 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 31 30 29 3b 0a 52 63 5f ..Rc_10.=.rodrigues(omc_10);.Rc_
2d900 31 31 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 31 31 29 3b 0a 52 63 5f 31 32 20 3d 20 11.=.rodrigues(omc_11);.Rc_12.=.
2d920 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 31 32 29 3b 0a 52 63 5f 31 33 20 3d 20 72 6f 64 72 69 rodrigues(omc_12);.Rc_13.=.rodri
2d940 67 75 65 73 28 6f 6d 63 5f 31 33 29 3b 0a 52 63 5f 31 34 20 3d 20 72 6f 64 72 69 67 75 65 73 28 gues(omc_13);.Rc_14.=.rodrigues(
2d960 6f 6d 63 5f 31 34 29 3b 0a 52 63 5f 31 35 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 31 omc_14);.Rc_15.=.rodrigues(omc_1
2d980 35 29 3b 0a 52 63 5f 31 36 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 31 36 29 3b 0a 52 5);.Rc_16.=.rodrigues(omc_16);.R
2d9a0 63 5f 31 37 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 31 37 29 3b 0a 52 63 5f 31 38 20 c_17.=.rodrigues(omc_17);.Rc_18.
2d9c0 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 31 38 29 3b 0a 0a 0a 0a 52 52 31 20 3d 20 52 63 =.rodrigues(omc_18);....RR1.=.Rc
2d9e0 5f 31 27 2a 52 63 5f 31 30 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 72 6f 64 72 69 67 75 65 73 _1'*Rc_10;.%.should.be.rodrigues
2da00 28 5b 30 3b 70 69 2f 32 3b 30 5d 29 0a 54 54 31 20 3d 20 52 63 5f 31 27 2a 28 54 63 5f 31 30 2d ([0;pi/2;0]).TT1.=.Rc_1'*(Tc_10-
2da20 54 63 5f 31 29 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 5b 64 58 2a 6e 5f 73 71 5f 78 5f 31 3b Tc_1);.%.should.be.[dX*n_sq_x_1;
2da40 30 3b 30 5d 0a 0a 58 72 5f 31 20 3d 20 52 52 31 20 2a 20 58 5f 31 30 20 20 2b 20 54 54 31 2a 6f 0;0]..Xr_1.=.RR1.*.X_10..+.TT1*o
2da60 6e 65 73 28 31 2c 6c 65 6e 67 74 68 28 58 5f 31 30 29 29 3b 0a 0a 66 69 67 75 72 65 28 31 29 3b nes(1,length(X_10));..figure(1);
2da80 0a 70 6c 6f 74 33 28 58 5f 31 28 31 2c 3a 29 2c 58 5f 31 28 32 2c 3a 29 2c 58 5f 31 28 33 2c 3a .plot3(X_1(1,:),X_1(2,:),X_1(3,:
2daa0 29 2c 27 72 2b 27 29 3b 20 68 6f 6c 64 20 6f 6e 3b 0a 70 6c 6f 74 33 28 58 72 5f 31 28 31 2c 3a ),'r+');.hold.on;.plot3(Xr_1(1,:
2dac0 29 2c 58 72 5f 31 28 32 2c 3a 29 2c 58 72 5f 31 28 33 2c 3a 29 2c 27 67 2b 27 29 3b 0a 68 6f 6c ),Xr_1(2,:),Xr_1(3,:),'g+');.hol
2dae0 64 20 6f 66 66 3b 0a 61 78 69 73 28 27 65 71 75 61 6c 27 29 3b 0a 72 6f 74 61 74 65 33 64 20 6f d.off;.axis('equal');.rotate3d.o
2db00 6e 3b 0a 76 69 65 77 28 30 2c 30 29 3b 0a 78 6c 61 62 65 6c 28 27 78 27 29 3b 0a 79 6c 61 62 65 n;.view(0,0);.xlabel('x');.ylabe
2db20 6c 28 27 79 27 29 3b 0a 7a 6c 61 62 65 6c 28 27 7a 27 29 3b 0a 0a 61 61 61 20 3d 20 5b 5d 3b 0a l('y');.zlabel('z');..aaa.=.[];.
2db40 0a 52 52 31 20 3d 20 52 63 5f 31 27 2a 52 63 5f 31 30 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 .RR1.=.Rc_1'*Rc_10;.%.should.be.
2db60 72 6f 64 72 69 67 75 65 73 28 5b 30 3b 70 69 2f 32 3b 30 5d 29 0a 54 54 31 20 3d 20 52 63 5f 31 rodrigues([0;pi/2;0]).TT1.=.Rc_1
2db80 27 2a 28 54 63 5f 31 30 2d 54 63 5f 31 29 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 5b 64 58 2a '*(Tc_10-Tc_1);.%.should.be.[dX*
2dba0 6e 5f 73 71 5f 78 5f 31 3b 30 3b 30 5d 0a 65 72 72 20 3d 20 72 6f 64 72 69 67 75 65 73 28 52 52 n_sq_x_1;0;0].err.=.rodrigues(RR
2dbc0 31 29 20 2d 20 5b 30 3b 70 69 2f 32 3b 30 5d 0a 61 61 61 20 3d 20 5b 61 61 61 20 32 2a 73 69 6e 1).-.[0;pi/2;0].aaa.=.[aaa.2*sin
2dbe0 28 65 72 72 28 32 29 2f 32 29 2a 2e 33 33 2a 31 30 30 30 5d 3b 0a 0a 52 52 32 20 3d 20 52 63 5f (err(2)/2)*.33*1000];..RR2.=.Rc_
2dc00 32 27 2a 52 63 5f 31 31 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 72 6f 64 72 69 67 75 65 73 28 2'*Rc_11;.%.should.be.rodrigues(
2dc20 5b 30 3b 70 69 2f 32 3b 30 5d 29 0a 54 54 32 20 3d 20 52 63 5f 32 27 2a 28 54 63 5f 31 31 2d 54 [0;pi/2;0]).TT2.=.Rc_2'*(Tc_11-T
2dc40 63 5f 32 29 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 5b 64 58 2a 6e 5f 73 71 5f 78 5f 31 3b 30 c_2);.%.should.be.[dX*n_sq_x_1;0
2dc60 3b 30 5d 0a 65 72 72 20 3d 20 72 6f 64 72 69 67 75 65 73 28 52 52 32 29 20 2d 20 5b 30 3b 70 69 ;0].err.=.rodrigues(RR2).-.[0;pi
2dc80 2f 32 3b 30 5d 0a 61 61 61 20 3d 20 5b 61 61 61 20 32 2a 73 69 6e 28 65 72 72 28 32 29 2f 32 29 /2;0].aaa.=.[aaa.2*sin(err(2)/2)
2dca0 2a 2e 33 33 2a 31 30 30 30 5d 3b 0a 0a 52 52 33 20 3d 20 52 63 5f 33 27 2a 52 63 5f 31 32 3b 20 *.33*1000];..RR3.=.Rc_3'*Rc_12;.
2dcc0 25 20 73 68 6f 75 6c 64 20 62 65 20 72 6f 64 72 69 67 75 65 73 28 5b 30 3b 70 69 2f 32 3b 30 5d %.should.be.rodrigues([0;pi/2;0]
2dce0 29 0a 54 54 33 20 3d 20 52 63 5f 33 27 2a 28 54 63 5f 31 32 2d 54 63 5f 33 29 3b 20 25 20 73 68 ).TT3.=.Rc_3'*(Tc_12-Tc_3);.%.sh
2dd00 6f 75 6c 64 20 62 65 20 5b 64 58 2a 6e 5f 73 71 5f 78 5f 31 3b 30 3b 30 5d 0a 65 72 72 20 3d 20 ould.be.[dX*n_sq_x_1;0;0].err.=.
2dd20 72 6f 64 72 69 67 75 65 73 28 52 52 33 29 20 2d 20 5b 30 3b 70 69 2f 32 3b 30 5d 0a 61 61 61 20 rodrigues(RR3).-.[0;pi/2;0].aaa.
2dd40 3d 20 5b 61 61 61 20 32 2a 73 69 6e 28 65 72 72 28 32 29 2f 32 29 2a 2e 33 33 2a 31 30 30 30 5d =.[aaa.2*sin(err(2)/2)*.33*1000]
2dd60 3b 0a 0a 52 52 34 20 3d 20 52 63 5f 34 27 2a 52 63 5f 31 33 3b 20 25 20 73 68 6f 75 6c 64 20 62 ;..RR4.=.Rc_4'*Rc_13;.%.should.b
2dd80 65 20 72 6f 64 72 69 67 75 65 73 28 5b 30 3b 70 69 2f 32 3b 30 5d 29 0a 54 54 34 20 3d 20 52 63 e.rodrigues([0;pi/2;0]).TT4.=.Rc
2dda0 5f 34 27 2a 28 54 63 5f 31 33 2d 54 63 5f 34 29 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 5b 64 _4'*(Tc_13-Tc_4);.%.should.be.[d
2ddc0 58 2a 6e 5f 73 71 5f 78 5f 31 3b 30 3b 30 5d 0a 65 72 72 20 3d 20 72 6f 64 72 69 67 75 65 73 28 X*n_sq_x_1;0;0].err.=.rodrigues(
2dde0 52 52 34 29 20 2d 20 5b 30 3b 70 69 2f 32 3b 30 5d 0a 61 61 61 20 3d 20 5b 61 61 61 20 32 2a 73 RR4).-.[0;pi/2;0].aaa.=.[aaa.2*s
2de00 69 6e 28 65 72 72 28 32 29 2f 32 29 2a 2e 33 33 2a 31 30 30 30 5d 3b 0a 0a 52 52 35 20 3d 20 52 in(err(2)/2)*.33*1000];..RR5.=.R
2de20 63 5f 35 27 2a 52 63 5f 31 34 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 72 6f 64 72 69 67 75 65 c_5'*Rc_14;.%.should.be.rodrigue
2de40 73 28 5b 30 3b 70 69 2f 32 3b 30 5d 29 0a 54 54 35 20 3d 20 52 63 5f 35 27 2a 28 54 63 5f 31 34 s([0;pi/2;0]).TT5.=.Rc_5'*(Tc_14
2de60 2d 54 63 5f 35 29 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 5b 64 58 2a 6e 5f 73 71 5f 78 5f 31 -Tc_5);.%.should.be.[dX*n_sq_x_1
2de80 3b 30 3b 30 5d 0a 65 72 72 20 3d 20 72 6f 64 72 69 67 75 65 73 28 52 52 35 29 20 2d 20 5b 30 3b ;0;0].err.=.rodrigues(RR5).-.[0;
2dea0 70 69 2f 32 3b 30 5d 0a 61 61 61 20 3d 20 5b 61 61 61 20 32 2a 73 69 6e 28 65 72 72 28 32 29 2f pi/2;0].aaa.=.[aaa.2*sin(err(2)/
2dec0 32 29 2a 2e 33 33 2a 31 30 30 30 5d 3b 0a 0a 52 52 36 20 3d 20 52 63 5f 36 27 2a 52 63 5f 31 35 2)*.33*1000];..RR6.=.Rc_6'*Rc_15
2dee0 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 72 6f 64 72 69 67 75 65 73 28 5b 30 3b 70 69 2f 32 3b ;.%.should.be.rodrigues([0;pi/2;
2df00 30 5d 29 0a 54 54 36 20 3d 20 52 63 5f 36 27 2a 28 54 63 5f 31 35 2d 54 63 5f 36 29 3b 20 25 20 0]).TT6.=.Rc_6'*(Tc_15-Tc_6);.%.
2df20 73 68 6f 75 6c 64 20 62 65 20 5b 64 58 2a 6e 5f 73 71 5f 78 5f 31 3b 30 3b 30 5d 0a 65 72 72 20 should.be.[dX*n_sq_x_1;0;0].err.
2df40 3d 20 72 6f 64 72 69 67 75 65 73 28 52 52 36 29 20 2d 20 5b 30 3b 70 69 2f 32 3b 30 5d 0a 61 61 =.rodrigues(RR6).-.[0;pi/2;0].aa
2df60 61 20 3d 20 5b 61 61 61 20 32 2a 73 69 6e 28 65 72 72 28 32 29 2f 32 29 2a 2e 33 33 2a 31 30 30 a.=.[aaa.2*sin(err(2)/2)*.33*100
2df80 30 5d 3b 0a 0a 52 52 37 20 3d 20 52 63 5f 37 27 2a 52 63 5f 31 36 3b 20 25 20 73 68 6f 75 6c 64 0];..RR7.=.Rc_7'*Rc_16;.%.should
2dfa0 20 62 65 20 72 6f 64 72 69 67 75 65 73 28 5b 30 3b 70 69 2f 32 3b 30 5d 29 0a 54 54 37 20 3d 20 .be.rodrigues([0;pi/2;0]).TT7.=.
2dfc0 52 63 5f 37 27 2a 28 54 63 5f 31 36 2d 54 63 5f 37 29 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 Rc_7'*(Tc_16-Tc_7);.%.should.be.
2dfe0 5b 64 58 2a 6e 5f 73 71 5f 78 5f 31 3b 30 3b 30 5d 0a 65 72 72 20 3d 20 72 6f 64 72 69 67 75 65 [dX*n_sq_x_1;0;0].err.=.rodrigue
2e000 73 28 52 52 37 29 20 2d 20 5b 30 3b 70 69 2f 32 3b 30 5d 0a 61 61 61 20 3d 20 5b 61 61 61 20 32 s(RR7).-.[0;pi/2;0].aaa.=.[aaa.2
2e020 2a 73 69 6e 28 65 72 72 28 32 29 2f 32 29 2a 2e 33 33 2a 31 30 30 30 5d 3b 0a 0a 52 52 38 20 3d *sin(err(2)/2)*.33*1000];..RR8.=
2e040 20 52 63 5f 38 27 2a 52 63 5f 31 37 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 72 6f 64 72 69 67 .Rc_8'*Rc_17;.%.should.be.rodrig
2e060 75 65 73 28 5b 30 3b 70 69 2f 32 3b 30 5d 29 0a 54 54 38 20 3d 20 52 63 5f 38 27 2a 28 54 63 5f ues([0;pi/2;0]).TT8.=.Rc_8'*(Tc_
2e080 31 37 2d 54 63 5f 38 29 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 5b 64 58 2a 6e 5f 73 71 5f 78 17-Tc_8);.%.should.be.[dX*n_sq_x
2e0a0 5f 31 3b 30 3b 30 5d 0a 65 72 72 20 3d 20 72 6f 64 72 69 67 75 65 73 28 52 52 38 29 20 2d 20 5b _1;0;0].err.=.rodrigues(RR8).-.[
2e0c0 30 3b 70 69 2f 32 3b 30 5d 0a 61 61 61 20 3d 20 5b 61 61 61 20 32 2a 73 69 6e 28 65 72 72 28 32 0;pi/2;0].aaa.=.[aaa.2*sin(err(2
2e0e0 29 2f 32 29 2a 2e 33 33 2a 31 30 30 30 5d 3b 0a 0a 65 73 28 6f 6d 63 5f 31 30 29 3b 0a 52 63 5f )/2)*.33*1000];..es(omc_10);.Rc_
2e100 31 31 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 31 31 29 3b 0a 52 63 5f 31 32 20 3d 20 11.=.rodrigues(omc_11);.Rc_12.=.
2e120 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 31 32 29 3b 0a 52 63 5f 31 33 20 3d 20 72 6f 64 72 69 rodrigues(omc_12);.Rc_13.=.rodri
2e140 67 75 65 73 28 6f 6d 63 5f 31 33 29 3b 0a 52 63 5f 31 34 20 3d 20 72 6f 64 72 69 67 75 65 73 28 gues(omc_13);.Rc_14.=.rodrigues(
2e160 6f 6d 63 5f 31 34 29 3b 0a 52 63 5f 31 35 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 31 omc_14);.Rc_15.=.rodrigues(omc_1
2e180 35 29 3b 0a 52 63 5f 31 36 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 31 36 29 3b 0a 52 5);.Rc_16.=.rodrigues(omc_16);.R
2e1a0 63 5f 31 37 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 31 37 29 3b 0a 52 63 5f 31 38 20 c_17.=.rodrigues(omc_17);.Rc_18.
2e1c0 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 31 38 29 3b 0a 0a 0a 0a 52 52 31 20 3d 20 52 63 =.rodrigues(omc_18);....RR1.=.Rc
2e1e0 5f 31 27 2a 52 63 5f 31 30 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 72 6f 64 72 69 67 75 65 73 _1'*Rc_10;.%.should.be.rodrigues
2e200 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 69 73 33 44 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 TOOLBOX_calib/is3D.m............
2e220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e260 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
2e280 20 20 20 20 33 32 31 20 20 37 30 32 34 30 33 37 33 33 34 20 20 20 37 33 35 34 00 20 00 00 00 00 ....321..7024037334...7354......
2e2a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e2c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e2e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e3a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e3c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e3e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e400 66 75 6e 63 74 69 6f 6e 20 74 65 73 74 20 3d 20 69 73 33 44 28 58 29 2c 0a 0a 0a 4e 70 20 3d 20 function.test.=.is3D(X),...Np.=.
2e420 73 69 7a 65 28 58 2c 32 29 3b 0a 0a 25 25 20 43 68 65 63 6b 20 66 6f 72 20 70 6c 61 6e 61 72 69 size(X,2);..%%.Check.for.planari
2e440 74 79 20 6f 66 20 74 68 65 20 73 74 72 75 63 74 75 72 65 3a 0a 0a 58 5f 6d 65 61 6e 20 3d 20 6d ty.of.the.structure:..X_mean.=.m
2e460 65 61 6e 28 58 27 29 27 3b 0a 0a 59 20 3d 20 58 20 2d 20 28 58 5f 6d 65 61 6e 2a 6f 6e 65 73 28 ean(X')';..Y.=.X.-.(X_mean*ones(
2e480 31 2c 4e 70 29 29 3b 0a 0a 59 59 20 3d 20 59 2a 59 27 3b 0a 0a 5b 55 2c 53 2c 56 5d 20 3d 20 73 1,Np));..YY.=.Y*Y';..[U,S,V].=.s
2e4a0 76 64 28 59 59 29 3b 0a 0a 72 20 3d 20 53 28 33 2c 33 29 2f 53 28 32 2c 32 29 3b 0a 0a 74 65 73 vd(YY);..r.=.S(3,3)/S(2,2);..tes
2e4c0 74 20 3d 20 28 72 20 3e 20 31 65 2d 33 29 3b 0a 0a 00 06 b4 00 02 36 ae 00 18 00 09 73 61 76 65 t.=.(r.>.1e-3);.......6.....save
2e4e0 69 6e 72 2e 6d 00 36 ab 00 00 06 c8 00 02 36 af 00 18 00 09 73 61 76 65 70 67 6d 2e 6d 00 36 ac inr.m.6.......6.....savepgm.m.6.
2e500 00 00 06 dc 00 02 36 b0 00 18 00 09 73 61 76 65 70 70 6d 2e 6d 00 36 ad 00 00 06 fc 00 02 36 b1 ......6.....saveppm.m.6.......6.
2e520 00 24 00 16 69 6e 69 74 5f 69 6e 74 72 69 6e 73 69 63 5f 70 61 72 61 6d 2e 6d 00 16 00 00 07 18 .$..init_intrinsic_param.m......
2e540 00 02 36 b2 00 20 00 11 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 2e 6d 00 36 b2 00 00 07 38 ..6.....mean_std_robust.m.6....8
2e560 00 02 36 b3 00 24 00 14 72 75 6e 5f 65 72 72 6f 72 5f 61 6e 61 6c 79 73 69 73 2e 6d 00 24 00 14 ..6..$..run_error_analysis.m.$..
2e580 00 00 07 54 00 02 36 b4 00 20 00 13 63 68 65 63 6b 5f 63 6f 6e 76 65 72 67 65 6e 63 65 2e 6d 00 ...T..6.....check_convergence.m.
2e5a0 00 00 07 70 00 02 36 b5 00 20 00 11 63 68 65 63 6b 5f 70 6c 61 6e 61 72 69 74 79 2e 6d 00 36 b5 ...p..6.....check_planarity.m.6.
2e5c0 00 00 07 88 00 02 36 b6 00 1c 00 0e 63 6f 6e 76 65 72 74 5f 6f 75 6c 75 2e 6d 00 88 00 00 07 9c ......6.....convert_oulu.m......
2e5e0 00 02 36 b7 00 18 00 0b 6e 6f 72 6d 61 6c 69 7a 65 2e 6d 00 00 00 07 b4 00 02 36 b8 00 1c 00 0e ..6.....normalize.m.......6.....
2e600 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 75 6e 64 69 73 74 6f 72 74 5f 69 6d 61 67 65 2e 6d 00 TOOLBOX_calib/undistort_image.m.
2e620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e660 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
2e680 20 20 20 33 34 30 36 20 20 37 30 32 34 30 33 37 33 36 36 20 20 31 32 30 30 33 00 20 00 00 00 00 ...3406..7024037366..12003......
2e6a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e6c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e6e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e7c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e7e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e800 25 25 25 20 49 4e 50 55 54 20 54 48 45 20 49 4d 41 47 45 20 46 49 4c 45 20 4e 41 4d 45 3a 0a 0a %%%.INPUT.THE.IMAGE.FILE.NAME:..
2e820 64 69 72 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 27 29 3b 0a 64 69 73 70 28 27 50 72 6f dir;..fprintf(1,'\n');.disp('Pro
2e840 67 72 61 6d 20 74 68 61 74 20 75 6e 64 69 73 74 6f 72 74 20 61 6e 20 69 6d 61 67 65 27 29 3b 0a gram.that.undistort.an.image');.
2e860 64 69 73 70 28 27 54 68 65 20 69 6e 74 72 69 6e 73 69 63 20 63 61 6d 65 72 61 20 70 61 72 61 6d disp('The.intrinsic.camera.param
2e880 65 74 65 72 73 20 61 72 65 20 61 73 73 75 6d 65 64 20 74 6f 20 62 65 20 6b 6e 6f 77 6e 20 28 70 eters.are.assumed.to.be.known.(p
2e8a0 72 65 76 69 6f 75 73 6c 79 20 63 6f 6d 70 75 74 65 64 29 27 29 3b 0a 0a 66 70 72 69 6e 74 66 28 reviously.computed)');..fprintf(
2e8c0 31 2c 27 5c 6e 27 29 3b 0a 69 6d 61 67 65 5f 6e 61 6d 65 20 3d 20 69 6e 70 75 74 28 27 49 6d 61 1,'\n');.image_name.=.input('Ima
2e8e0 67 65 20 6e 61 6d 65 20 28 66 75 6c 6c 20 6e 61 6d 65 20 77 69 74 68 6f 75 74 20 65 78 74 65 6e ge.name.(full.name.without.exten
2e900 73 69 6f 6e 29 3a 20 27 2c 27 73 27 29 3b 0a 0a 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 sion):.','s');..format_image2.=.
2e920 27 30 27 3b 0a 0a 77 68 69 6c 65 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 3d 20 27 30 27 '0';..while.format_image2.==.'0'
2e940 2c 0a 20 20 20 0a 20 20 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 20 69 6e 70 75 74 28 ,........format_image2.=..input(
2e960 27 49 6d 61 67 65 20 66 6f 72 6d 61 74 3a 20 28 5b 5d 3d 27 27 72 27 27 3d 27 27 72 61 73 27 27 'Image.format:.([]=''r''=''ras''
2e980 2c 20 27 27 62 27 27 3d 27 27 62 6d 70 27 27 2c 20 27 27 74 27 27 3d 27 27 74 69 66 27 27 2c 20 ,.''b''=''bmp'',.''t''=''tif'',.
2e9a0 27 27 70 27 27 3d 27 27 70 67 6d 27 27 2c 20 27 27 6a 27 27 3d 27 27 6a 70 67 27 27 29 20 27 2c ''p''=''pgm'',.''j''=''jpg'').',
2e9c0 27 73 27 29 3b 0a 0a 09 69 66 20 69 73 65 6d 70 74 79 28 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 's');...if.isempty(format_image2
2e9e0 29 2c 0a 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 27 72 61 73 27 3b 0a 09 65 ),.....format_image2.=.'ras';..e
2ea00 6e 64 3b 0a 0a 09 69 66 20 6c 6f 77 65 72 28 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 28 31 29 29 nd;...if.lower(format_image2(1))
2ea20 20 3d 3d 20 27 62 27 2c 0a 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 27 62 6d .==.'b',.....format_image2.=.'bm
2ea40 70 27 3b 0a 09 65 6c 73 65 0a 20 20 20 09 69 66 20 6c 6f 77 65 72 28 66 6f 72 6d 61 74 5f 69 6d p';..else.....if.lower(format_im
2ea60 61 67 65 32 28 31 29 29 20 3d 3d 20 27 74 27 2c 0a 20 20 20 20 20 20 09 66 6f 72 6d 61 74 5f 69 age2(1)).==.'t',........format_i
2ea80 6d 61 67 65 32 20 3d 20 27 74 69 66 27 3b 0a 20 20 20 09 65 6c 73 65 0a 20 20 20 20 20 20 09 69 mage2.=.'tif';.....else........i
2eaa0 66 20 6c 6f 77 65 72 28 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 28 31 29 29 20 3d 3d 20 27 70 27 f.lower(format_image2(1)).==.'p'
2eac0 2c 0a 20 20 20 20 20 20 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 27 70 67 6d ,...........format_image2.=.'pgm
2eae0 27 3b 0a 09 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 09 20 20 20 20 20 20 69 66 20 6c 6f 77 65 ';........else...........if.lowe
2eb00 72 28 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 28 31 29 29 20 3d 3d 20 27 6a 27 2c 0a 20 20 20 20 r(format_image2(1)).==.'j',.....
2eb20 20 20 09 20 20 20 20 20 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 27 6a 70 67 27 3b 0a .........format_image2.=.'jpg';.
2eb40 20 20 20 20 20 20 20 20 20 09 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 09 69 66 20 6c ..........else..............if.l
2eb60 6f 77 65 72 28 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 28 31 29 29 20 3d 3d 20 27 72 27 2c 0a 09 ower(format_image2(1)).==.'r',..
2eb80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 27 ...............format_image2.=.'
2eba0 72 61 73 27 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 ras';................else.......
2ebc0 20 20 20 20 20 20 20 09 09 64 69 73 70 28 27 49 6e 76 61 6c 69 64 20 69 6d 61 67 65 20 66 6f 72 .........disp('Invalid.image.for
2ebe0 6d 61 74 27 29 3b 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 09 20 20 20 20 20 20 20 20 20 66 6f mat');........................fo
2ec00 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 27 30 27 3b 20 25 20 41 73 6b 20 66 6f 72 20 66 6f 72 rmat_image2.=.'0';.%.Ask.for.for
2ec20 6d 61 74 20 6f 6e 63 65 20 61 67 61 69 6e 0a 20 20 20 20 20 20 20 20 20 09 20 20 20 65 6e 64 3b mat.once.again..............end;
2ec40 0a 20 20 20 20 20 20 09 20 20 20 65 6e 64 3b 0a 09 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 09 ...........end;........end;.....
2ec60 65 6e 64 3b 0a 09 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 69 6d 61 5f 6e 61 6d 65 20 3d 20 5b 69 6d 61 end;..end;.end;..ima_name.=.[ima
2ec80 67 65 5f 6e 61 6d 65 20 27 2e 27 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 5d 3b 0a 0a 0a 0a 25 25 ge_name.'.'.format_image];....%%
2eca0 25 20 52 45 41 44 20 49 4e 20 49 4d 41 47 45 3a 0a 0a 69 66 20 66 6f 72 6d 61 74 5f 69 6d 61 67 %.READ.IN.IMAGE:..if.format_imag
2ecc0 65 28 31 29 20 3d 3d 20 27 70 27 2c 0a 20 20 20 49 20 3d 20 64 6f 75 62 6c 65 28 70 67 6d 72 65 e(1).==.'p',....I.=.double(pgmre
2ece0 61 64 28 69 6d 61 5f 6e 61 6d 65 29 29 3b 0a 65 6c 73 65 0a 20 20 20 69 66 20 66 6f 72 6d 61 74 ad(ima_name));.else....if.format
2ed00 5f 69 6d 61 67 65 28 31 29 20 3d 3d 20 27 72 27 2c 0a 20 20 20 20 20 20 49 20 3d 20 72 65 61 64 _image(1).==.'r',.......I.=.read
2ed20 72 61 73 28 69 6d 61 5f 6e 61 6d 65 29 3b 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 49 20 3d ras(ima_name);....else.......I.=
2ed40 20 64 6f 75 62 6c 65 28 69 6d 72 65 61 64 28 69 6d 61 5f 6e 61 6d 65 29 29 3b 0a 20 20 20 65 6e .double(imread(ima_name));....en
2ed60 64 3b 0a 65 6e 64 3b 0a 20 20 20 20 20 0a 69 66 20 73 69 7a 65 28 49 2c 33 29 3e 31 2c 0a 20 20 d;.end;.......if.size(I,3)>1,...
2ed80 20 49 20 3d 20 49 28 3a 2c 3a 2c 32 29 3b 0a 65 6e 64 3b 0a 20 20 20 0a 20 20 20 0a 25 25 20 53 .I.=.I(:,:,2);.end;.........%%.S
2eda0 48 4f 57 20 54 48 45 20 4f 52 49 47 49 4e 41 4c 20 49 4d 41 47 45 3a 0a 0a 66 69 67 75 72 65 28 HOW.THE.ORIGINAL.IMAGE:..figure(
2edc0 32 29 3b 0a 69 6d 61 67 65 28 49 29 3b 0a 63 6f 6c 6f 72 6d 61 70 28 67 72 61 79 28 32 35 36 29 2);.image(I);.colormap(gray(256)
2ede0 29 3b 0a 74 69 74 6c 65 28 27 4f 72 69 67 69 6e 61 6c 20 69 6d 61 67 65 20 28 77 69 74 68 20 64 );.title('Original.image.(with.d
2ee00 69 73 74 6f 72 74 69 6f 6e 29 20 2d 20 53 74 6f 72 65 64 20 69 6e 20 61 72 72 61 79 20 49 27 29 istortion).-.Stored.in.array.I')
2ee20 3b 0a 64 72 61 77 6e 6f 77 3b 0a 0a 0a 25 25 20 55 4e 44 49 53 54 4f 52 54 20 54 48 45 20 49 4d ;.drawnow;...%%.UNDISTORT.THE.IM
2ee40 41 47 45 3a 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 43 6f 6d 70 75 74 75 74 69 6e 67 20 74 68 65 AGE:..fprintf(1,'Compututing.the
2ee60 20 75 6e 64 69 73 74 6f 72 74 65 64 20 69 6d 61 67 65 2e 2e 2e 5c 6e 27 29 0a 0a 5b 49 32 5d 20 .undistorted.image...\n')..[I2].
2ee80 3d 20 72 65 63 74 28 49 2c 65 79 65 28 33 29 2c 66 63 2c 63 63 2c 6b 63 2c 4b 4b 29 3b 0a 0a 0a =.rect(I,eye(3),fc,cc,kc,KK);...
2eea0 66 69 67 75 72 65 28 33 29 3b 0a 69 6d 61 67 65 28 49 32 29 3b 0a 63 6f 6c 6f 72 6d 61 70 28 67 figure(3);.image(I2);.colormap(g
2eec0 72 61 79 28 32 35 36 29 29 3b 0a 74 69 74 6c 65 28 27 55 6e 64 69 73 74 6f 72 74 65 64 20 69 6d ray(256));.title('Undistorted.im
2eee0 61 67 65 20 2d 20 53 74 6f 72 65 64 20 69 6e 20 61 72 72 61 79 20 49 32 27 29 3b 0a 64 72 61 77 age.-.Stored.in.array.I2');.draw
2ef00 6e 6f 77 3b 0a 0a 36 20 3d 20 52 63 5f 36 27 2a 28 54 63 5f 31 35 2d 54 63 5f 36 29 3b 20 25 20 now;..6.=.Rc_6'*(Tc_15-Tc_6);.%.
2ef20 73 68 6f 75 6c 64 20 62 65 20 5b 64 58 2a 6e 5f 73 71 5f 78 5f 31 3b 30 3b 30 5d 0a 65 72 72 20 should.be.[dX*n_sq_x_1;0;0].err.
2ef40 3d 20 72 6f 64 72 69 67 75 65 73 28 52 52 36 29 20 2d 20 5b 30 3b 70 69 2f 32 3b 30 5d 0a 61 61 =.rodrigues(RR6).-.[0;pi/2;0].aa
2ef60 61 20 3d 20 5b 61 61 61 20 32 2a 73 69 6e 28 65 72 72 28 32 29 2f 32 29 2a 2e 33 33 2a 31 30 30 a.=.[aaa.2*sin(err(2)/2)*.33*100
2ef80 30 5d 3b 0a 0a 52 52 37 20 3d 20 52 63 5f 37 27 2a 52 63 5f 31 36 3b 20 25 20 73 68 6f 75 6c 64 0];..RR7.=.Rc_7'*Rc_16;.%.should
2efa0 20 62 65 20 72 6f 64 72 69 67 75 65 73 28 5b 30 3b 70 69 2f 32 3b 30 5d 29 0a 54 54 37 20 3d 20 .be.rodrigues([0;pi/2;0]).TT7.=.
2efc0 52 63 5f 37 27 2a 28 54 63 5f 31 36 2d 54 63 5f 37 29 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 Rc_7'*(Tc_16-Tc_7);.%.should.be.
2efe0 5b 64 58 2a 6e 5f 73 71 5f 78 5f 31 3b 30 3b 30 5d 0a 65 72 72 20 3d 20 72 6f 64 72 69 67 75 65 [dX*n_sq_x_1;0;0].err.=.rodrigue
2f000 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 55 6e 57 61 72 70 50 6c 61 6e 65 2e 6d 00 00 00 00 00 TOOLBOX_calib/UnWarpPlane.m.....
2f020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f060 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
2f080 20 20 20 31 35 36 37 20 20 37 30 32 34 30 33 37 33 36 37 20 20 31 31 30 31 31 00 20 00 00 00 00 ...1567..7024037367..11011......
2f0a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f0c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f0e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f200 66 75 6e 63 74 69 6f 6e 20 20 5b 75 5f 68 6f 72 69 2c 75 5f 76 65 72 74 5d 20 3d 20 55 6e 57 61 function..[u_hori,u_vert].=.UnWa
2f220 72 70 50 6c 61 6e 65 28 78 31 2c 78 32 2c 78 33 2c 78 34 29 3b 0a 0a 25 20 52 65 63 6f 76 65 72 rpPlane(x1,x2,x3,x4);..%.Recover
2f240 73 20 74 68 65 20 74 77 6f 20 33 44 20 64 69 72 65 63 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 72 s.the.two.3D.directions.of.the.r
2f260 65 63 74 61 6e 67 75 6c 61 72 20 70 61 74 63 68 20 78 31 78 32 78 33 78 34 0a 25 20 78 31 20 69 ectangular.patch.x1x2x3x4.%.x1.i
2f280 73 20 74 68 65 20 6f 72 69 67 69 6e 20 70 6f 69 6e 74 2c 20 69 65 20 61 6e 79 20 70 6f 69 6e 74 s.the.origin.point,.ie.any.point
2f2a0 20 6f 66 20 70 6c 61 6e 61 72 20 63 6f 6f 72 64 69 6e 61 74 65 20 28 78 2c 79 29 20 6f 6e 20 74 .of.planar.coordinate.(x,y).on.t
2f2c0 68 65 0a 25 20 72 65 63 74 61 6e 67 75 6c 61 72 20 70 61 74 63 68 20 77 69 6c 6c 20 62 65 20 70 he.%.rectangular.patch.will.be.p
2f2e0 72 6f 6a 65 63 74 65 64 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 20 70 6c 61 6e 65 20 61 74 3a 0a rojected.on.the.image.plane.at:.
2f300 25 20 78 31 20 2b 20 78 20 2a 20 75 5f 68 6f 72 69 20 2b 20 79 20 2a 20 75 5f 76 65 72 74 0a 25 %.x1.+.x.*.u_hori.+.y.*.u_vert.%
2f320 0a 25 20 4e 6f 74 65 3a 20 75 5f 68 6f 72 69 20 61 6e 64 20 75 5f 76 65 72 74 20 61 72 65 20 61 .%.Note:.u_hori.and.u_vert.are.a
2f340 6c 73 6f 20 74 68 65 20 74 77 6f 20 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 73 2e 0a 0a 0a lso.the.two.vanishing.points....
2f360 69 66 20 6e 61 72 67 69 6e 20 3c 20 34 2c 0a 20 20 20 0a 20 20 20 78 34 20 3d 20 78 31 28 3a 2c if.nargin.<.4,........x4.=.x1(:,
2f380 34 29 3b 0a 20 20 20 78 33 20 3d 20 78 31 28 3a 2c 33 29 3b 0a 20 20 20 78 32 20 3d 20 78 31 28 4);....x3.=.x1(:,3);....x2.=.x1(
2f3a0 3a 2c 32 29 3b 0a 20 20 20 78 31 20 3d 20 78 31 28 3a 2c 31 29 3b 0a 20 20 20 0a 65 6e 64 3b 0a :,2);....x1.=.x1(:,1);.....end;.
2f3c0 0a 0a 25 20 49 6d 61 67 65 20 50 72 6f 6a 65 63 74 69 6f 6e 3a 0a 4c 31 20 3d 20 63 72 6f 73 73 ..%.Image.Projection:.L1.=.cross
2f3e0 28 78 31 2c 78 32 29 3b 0a 4c 32 20 3d 20 63 72 6f 73 73 28 78 34 2c 78 33 29 3b 0a 4c 33 20 3d (x1,x2);.L2.=.cross(x4,x3);.L3.=
2f400 20 63 72 6f 73 73 28 78 32 2c 78 33 29 3b 0a 4c 34 20 3d 20 63 72 6f 73 73 28 78 31 2c 78 34 29 .cross(x2,x3);.L4.=.cross(x1,x4)
2f420 3b 0a 0a 25 20 56 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 3a 0a 56 31 20 3d 20 63 72 6f 73 73 ;..%.Vanishing.point:.V1.=.cross
2f440 28 4c 31 2c 4c 32 29 3b 0a 56 32 20 3d 20 63 72 6f 73 73 28 4c 33 2c 4c 34 29 3b 0a 0a 25 20 48 (L1,L2);.V2.=.cross(L3,L4);..%.H
2f460 6f 72 69 7a 6f 6e 20 6c 69 6e 65 3a 0a 48 20 3d 20 63 72 6f 73 73 28 56 31 2c 56 32 29 3b 0a 0a orizon.line:.H.=.cross(V1,V2);..
2f480 69 66 20 48 28 33 29 20 3c 20 30 2c 20 48 20 20 3d 20 2d 48 3b 20 65 6e 64 3b 0a 0a 0a 48 20 3d if.H(3).<.0,.H..=.-H;.end;...H.=
2f4a0 20 48 20 2f 20 6e 6f 72 6d 28 48 29 3b 0a 0a 0a 58 31 20 3d 20 78 31 20 2f 20 64 6f 74 28 48 2c .H./.norm(H);...X1.=.x1./.dot(H,
2f4c0 78 31 29 3b 0a 58 32 20 3d 20 78 32 20 2f 20 64 6f 74 28 48 2c 78 32 29 3b 0a 58 33 20 3d 20 78 x1);.X2.=.x2./.dot(H,x2);.X3.=.x
2f4e0 33 20 2f 20 64 6f 74 28 48 2c 78 33 29 3b 0a 58 34 20 3d 20 78 34 20 2f 20 64 6f 74 28 48 2c 78 3./.dot(H,x3);.X4.=.x4./.dot(H,x
2f500 34 29 3b 0a 0a 73 63 61 6c 65 20 3d 20 58 31 28 33 29 3b 0a 0a 58 31 20 3d 20 58 31 2f 73 63 61 4);..scale.=.X1(3);..X1.=.X1/sca
2f520 6c 65 3b 0a 58 32 20 3d 20 58 32 2f 73 63 61 6c 65 3b 0a 58 33 20 3d 20 58 33 2f 73 63 61 6c 65 le;.X2.=.X2/scale;.X3.=.X3/scale
2f540 3b 0a 58 34 20 3d 20 58 34 2f 73 63 61 6c 65 3b 0a 0a 0a 75 5f 68 6f 72 69 20 3d 20 58 32 20 2d ;.X4.=.X4/scale;...u_hori.=.X2.-
2f560 20 58 31 3b 0a 75 5f 76 65 72 74 20 3d 20 58 34 20 2d 20 58 31 3b 0a 3d 3d 20 27 72 27 2c 0a 09 .X1;.u_vert.=.X4.-.X1;.==.'r',..
2f580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 27 ...............format_image2.=.'
2f5a0 72 61 73 27 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 ras';................else.......
2f5c0 20 20 20 20 20 20 20 09 09 64 69 73 70 28 27 49 6e 76 61 6c 69 64 20 69 6d 61 67 65 20 66 6f 72 .........disp('Invalid.image.for
2f5e0 6d 61 74 27 29 3b 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 09 20 20 20 20 20 20 20 20 20 66 6f mat');........................fo
2f600 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 77 72 69 74 65 72 61 73 2e 6d 00 00 00 00 00 00 00 00 TOOLBOX_calib/writeras.m........
2f620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f660 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
2f680 20 20 20 34 35 31 32 20 20 37 30 32 34 30 33 37 33 37 30 20 20 31 30 34 34 30 00 20 00 00 00 00 ...4512..7024037370..10440......
2f6a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f6c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f6e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f7c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f7e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f800 66 75 6e 63 74 69 6f 6e 20 77 72 69 74 65 72 61 73 28 66 69 6c 65 6e 61 6d 65 2c 20 69 6d 61 67 function.writeras(filename,.imag
2f820 65 2c 20 6d 61 70 29 3b 0a 25 57 52 49 54 45 52 41 53 20 57 72 69 74 65 20 61 6e 20 69 6d 61 67 e,.map);.%WRITERAS.Write.an.imag
2f840 65 20 66 69 6c 65 20 69 6e 20 73 75 6e 20 72 61 73 74 65 72 20 66 6f 72 6d 61 74 2e 0a 25 20 09 e.file.in.sun.raster.format..%..
2f860 20 20 57 52 49 54 45 52 41 53 28 27 69 6d 61 67 65 66 69 6c 65 2e 72 61 73 27 2c 20 69 6d 61 67 ..WRITERAS('imagefile.ras',.imag
2f880 65 5f 6d 61 74 72 69 78 2c 20 6d 61 70 29 20 77 72 69 74 65 73 20 61 20 0a 25 09 20 20 22 73 75 e_matrix,.map).writes.a..%..."su
2f8a0 6e 2e 72 61 73 74 65 72 22 20 69 6d 61 67 65 20 66 69 6c 65 2e 0a 0a 25 09 20 20 57 72 69 74 74 n.raster".image.file...%...Writt
2f8c0 65 6e 20 62 79 20 54 68 6f 6d 61 73 20 4b 2e 20 4c 65 75 6e 67 20 33 2f 33 30 2f 39 33 2e 0a 25 en.by.Thomas.K..Leung.3/30/93..%
2f8e0 09 20 20 40 20 43 61 6c 69 66 6f 72 6e 69 61 20 49 6e 73 74 69 74 75 74 65 20 6f 66 20 54 65 63 ...@.California.Institute.of.Tec
2f900 68 6e 6f 6c 6f 67 79 2e 0a 0a 0a 25 20 50 43 20 61 6e 64 20 55 4e 49 58 20 76 65 72 73 69 6f 6e hnology....%.PC.and.UNIX.version
2f920 20 6f 66 20 77 72 69 74 65 72 61 73 20 2d 20 4a 65 61 6e 2d 59 76 65 73 20 42 6f 75 67 75 65 74 .of.writeras.-.Jean-Yves.Bouguet
2f940 20 2d 20 44 65 63 2e 20 31 39 39 38 0a 0a 64 6f 74 20 3d 20 6d 61 78 28 66 69 6e 64 28 66 69 6c .-.Dec..1998..dot.=.max(find(fil
2f960 65 6e 61 6d 65 20 3d 3d 20 27 2e 27 29 29 3b 0a 73 75 66 66 69 78 20 3d 20 66 69 6c 65 6e 61 6d ename.==.'.'));.suffix.=.filenam
2f980 65 28 64 6f 74 2b 31 3a 64 6f 74 2b 33 29 3b 0a 0a 69 66 20 6e 61 72 67 69 6e 20 3c 20 33 2c 0a e(dot+1:dot+3);..if.nargin.<.3,.
2f9a0 20 20 20 6d 61 70 20 3d 20 5b 5d 3b 0a 65 6e 64 3b 0a 0a 69 66 28 73 74 72 63 6d 70 28 73 75 66 ...map.=.[];.end;..if(strcmp(suf
2f9c0 66 69 78 2c 20 27 72 61 73 27 29 29 0a 09 25 57 72 69 74 65 20 68 65 61 64 65 72 0a 0a 09 66 70 fix,.'ras'))..%Write.header...fp
2f9e0 20 3d 20 66 6f 70 65 6e 28 66 69 6c 65 6e 61 6d 65 2c 20 27 77 62 27 29 3b 0a 09 69 66 28 66 70 .=.fopen(filename,.'wb');..if(fp
2fa00 20 3c 20 30 29 20 65 72 72 6f 72 28 5b 27 43 61 6e 6e 6f 74 20 6f 70 65 6e 20 27 20 66 69 6c 65 .<.0).error(['Cannot.open.'.file
2fa20 6e 61 6d 65 20 27 2e 27 5d 29 2c 20 65 6e 64 0a 0a 09 5b 68 65 69 67 68 74 2c 20 77 69 64 74 68 name.'.']),.end...[height,.width
2fa40 5d 20 3d 20 73 69 7a 65 28 69 6d 61 67 65 29 3b 0a 09 69 6d 61 67 65 20 3d 20 69 6d 61 67 65 20 ].=.size(image);..image.=.image.
2fa60 2d 20 31 3b 0a 09 6d 61 70 73 69 7a 65 20 3d 20 73 69 7a 65 28 6d 61 70 2c 20 31 29 2a 73 69 7a -.1;..mapsize.=.size(map,.1)*siz
2fa80 65 28 6d 61 70 2c 32 29 3b 0a 09 25 66 77 72 69 74 65 28 66 70 2c 20 2e 2e 2e 0a 09 25 20 20 20 e(map,2);..%fwrite(fp,......%...
2faa0 20 20 20 20 5b 31 35 30 34 30 37 38 34 38 35 2c 20 77 69 64 74 68 2c 20 68 65 69 67 68 74 2c 20 ....[1504078485,.width,.height,.
2fac0 38 2c 20 68 65 69 67 68 74 2a 77 69 64 74 68 2c 20 31 2c 20 31 2c 20 6d 61 70 73 69 7a 65 5d 2c 8,.height*width,.1,.1,.mapsize],
2fae0 20 2e 2e 2e 0a 20 20 20 25 20 20 20 20 20 20 20 27 6c 6f 6e 67 27 29 3b 0a 20 20 20 0a 20 20 20 ........%.......'long');........
2fb00 0a 20 20 20 7a 65 72 6f 5f 73 74 72 20 3d 20 27 30 30 30 30 30 30 30 30 27 3b 0a 20 20 20 0a 20 ....zero_str.=.'00000000';......
2fb20 20 20 25 20 4d 41 47 49 43 20 4e 55 4d 42 45 52 3a 0a 20 20 20 0a 0a 09 66 77 72 69 74 65 28 66 ..%.MAGIC.NUMBER:.......fwrite(f
2fb40 70 2c 38 39 2c 27 75 63 68 61 72 27 29 3b 0a 20 20 20 66 77 72 69 74 65 28 66 70 2c 31 36 36 2c p,89,'uchar');....fwrite(fp,166,
2fb60 27 75 63 68 61 72 27 29 3b 0a 20 20 20 66 77 72 69 74 65 28 66 70 2c 31 30 36 2c 27 75 63 68 61 'uchar');....fwrite(fp,106,'ucha
2fb80 72 27 29 3b 0a 20 20 20 66 77 72 69 74 65 28 66 70 2c 31 34 39 2c 27 75 63 68 61 72 27 29 3b 0a r');....fwrite(fp,149,'uchar');.
2fba0 0a 20 20 20 77 69 64 74 68 5f 73 74 72 20 3d 20 64 65 63 32 68 65 78 28 77 69 64 74 68 29 3b 0a ....width_str.=.dec2hex(width);.
2fbc0 09 77 69 64 74 68 5f 73 74 72 20 3d 20 5b 7a 65 72 6f 5f 73 74 72 28 31 3a 38 2d 6c 65 6e 67 74 .width_str.=.[zero_str(1:8-lengt
2fbe0 68 28 77 69 64 74 68 5f 73 74 72 29 29 20 77 69 64 74 68 5f 73 74 72 5d 3b 0a 20 20 20 0a 20 20 h(width_str)).width_str];.......
2fc00 20 66 6f 72 20 69 69 20 3d 20 31 3a 32 3a 37 2c 0a 20 20 20 09 66 77 72 69 74 65 28 66 70 2c 68 .for.ii.=.1:2:7,.....fwrite(fp,h
2fc20 65 78 32 64 65 63 28 77 69 64 74 68 5f 73 74 72 28 69 69 3a 69 69 2b 31 29 29 2c 27 75 63 68 61 ex2dec(width_str(ii:ii+1)),'ucha
2fc40 72 27 29 3b 0a 09 65 6e 64 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 68 65 69 67 68 74 5f 73 74 72 r');..end;............height_str
2fc60 20 3d 20 64 65 63 32 68 65 78 28 68 65 69 67 68 74 29 3b 0a 09 68 65 69 67 68 74 5f 73 74 72 20 .=.dec2hex(height);..height_str.
2fc80 3d 20 5b 7a 65 72 6f 5f 73 74 72 28 31 3a 38 2d 6c 65 6e 67 74 68 28 68 65 69 67 68 74 5f 73 74 =.[zero_str(1:8-length(height_st
2fca0 72 29 29 20 68 65 69 67 68 74 5f 73 74 72 5d 3b 0a 20 20 20 0a 20 20 20 66 6f 72 20 69 69 20 3d r)).height_str];........for.ii.=
2fcc0 20 31 3a 32 3a 37 2c 0a 20 20 20 09 66 77 72 69 74 65 28 66 70 2c 68 65 78 32 64 65 63 28 68 65 .1:2:7,.....fwrite(fp,hex2dec(he
2fce0 69 67 68 74 5f 73 74 72 28 69 69 3a 69 69 2b 31 29 29 2c 27 75 63 68 61 72 27 29 3b 0a 20 20 20 ight_str(ii:ii+1)),'uchar');....
2fd00 65 6e 64 3b 0a 20 20 20 0a 20 20 20 66 77 72 69 74 65 28 66 70 2c 30 2c 27 75 63 68 61 72 27 29 end;........fwrite(fp,0,'uchar')
2fd20 3b 0a 20 20 20 66 77 72 69 74 65 28 66 70 2c 30 2c 27 75 63 68 61 72 27 29 3b 0a 20 20 20 66 77 ;....fwrite(fp,0,'uchar');....fw
2fd40 72 69 74 65 28 66 70 2c 30 2c 27 75 63 68 61 72 27 29 3b 0a 20 20 20 66 77 72 69 74 65 28 66 70 rite(fp,0,'uchar');....fwrite(fp
2fd60 2c 38 2c 27 75 63 68 61 72 27 29 3b 0a 20 20 20 0a 20 20 20 6c 6c 20 3d 20 68 65 69 67 68 74 2a ,8,'uchar');........ll.=.height*
2fd80 77 69 64 74 68 3b 0a 20 20 20 6c 6c 5f 73 74 72 20 3d 20 64 65 63 32 68 65 78 28 6c 6c 29 3b 0a width;....ll_str.=.dec2hex(ll);.
2fda0 20 20 20 6c 6c 5f 73 74 72 20 3d 20 5b 7a 65 72 6f 5f 73 74 72 28 31 3a 38 2d 6c 65 6e 67 74 68 ...ll_str.=.[zero_str(1:8-length
2fdc0 28 6c 6c 5f 73 74 72 29 29 20 6c 6c 5f 73 74 72 5d 3b 0a 20 20 20 0a 20 20 20 66 6f 72 20 69 69 (ll_str)).ll_str];........for.ii
2fde0 20 3d 20 31 3a 32 3a 37 2c 0a 20 20 20 09 66 77 72 69 74 65 28 66 70 2c 68 65 78 32 64 65 63 28 .=.1:2:7,.....fwrite(fp,hex2dec(
2fe00 6c 6c 5f 73 74 72 28 69 69 3a 69 69 2b 31 29 29 2c 27 75 63 68 61 72 27 29 3b 0a 09 65 6e 64 3b ll_str(ii:ii+1)),'uchar');..end;
2fe20 0a 20 20 0a 20 20 20 66 77 72 69 74 65 28 66 70 2c 30 2c 27 75 63 68 61 72 27 29 3b 0a 20 20 20 .......fwrite(fp,0,'uchar');....
2fe40 66 77 72 69 74 65 28 66 70 2c 30 2c 27 75 63 68 61 72 27 29 3b 0a 20 20 20 66 77 72 69 74 65 28 fwrite(fp,0,'uchar');....fwrite(
2fe60 66 70 2c 30 2c 27 75 63 68 61 72 27 29 3b 0a 20 20 20 66 77 72 69 74 65 28 66 70 2c 31 2c 27 75 fp,0,'uchar');....fwrite(fp,1,'u
2fe80 63 68 61 72 27 29 3b 0a 20 20 20 66 77 72 69 74 65 28 66 70 2c 30 2c 27 75 63 68 61 72 27 29 3b char');....fwrite(fp,0,'uchar');
2fea0 0a 20 20 20 66 77 72 69 74 65 28 66 70 2c 30 2c 27 75 63 68 61 72 27 29 3b 0a 20 20 20 66 77 72 ....fwrite(fp,0,'uchar');....fwr
2fec0 69 74 65 28 66 70 2c 30 2c 27 75 63 68 61 72 27 29 3b 0a 20 20 20 66 77 72 69 74 65 28 66 70 2c ite(fp,0,'uchar');....fwrite(fp,
2fee0 7e 7e 6d 61 70 73 69 7a 65 2c 27 75 63 68 61 72 27 29 3b 0a 0a 20 20 20 6d 61 70 73 69 7a 65 5f ~~mapsize,'uchar');.....mapsize_
2ff00 73 74 72 20 3d 20 64 65 63 32 68 65 78 28 6d 61 70 73 69 7a 65 29 3b 0a 20 20 20 6d 61 70 73 69 str.=.dec2hex(mapsize);....mapsi
2ff20 7a 65 5f 73 74 72 20 3d 20 5b 7a 65 72 6f 5f 73 74 72 28 31 3a 38 2d 6c 65 6e 67 74 68 28 6d 61 ze_str.=.[zero_str(1:8-length(ma
2ff40 70 73 69 7a 65 5f 73 74 72 29 29 20 6d 61 70 73 69 7a 65 5f 73 74 72 5d 3b 0a 20 20 20 0a 20 20 psize_str)).mapsize_str];.......
2ff60 20 25 6b 65 79 62 6f 61 72 64 3b 0a 20 20 20 0a 20 20 20 66 6f 72 20 69 69 20 3d 20 31 3a 32 3a .%keyboard;........for.ii.=.1:2:
2ff80 37 2c 0a 20 20 20 09 66 77 72 69 74 65 28 66 70 2c 68 65 78 32 64 65 63 28 6d 61 70 73 69 7a 65 7,.....fwrite(fp,hex2dec(mapsize
2ffa0 5f 73 74 72 28 69 69 3a 69 69 2b 31 29 29 2c 27 75 63 68 61 72 27 29 3b 0a 09 65 6e 64 3b 0a 20 _str(ii:ii+1)),'uchar');..end;..
2ffc0 0a 20 20 20 0a 09 69 66 20 6d 61 70 73 69 7a 65 20 7e 3d 20 30 0a 09 09 6d 61 70 20 3d 20 6d 69 ......if.mapsize.~=.0...map.=.mi
2ffe0 6e 28 32 35 35 2c 20 66 69 78 28 32 35 35 2a 6d 61 70 29 29 3b 0a 09 09 66 77 72 69 74 65 28 66 n(255,.fix(255*map));...fwrite(f
30000 70 2c 20 6d 61 70 2c 20 27 75 63 68 61 72 27 29 3b 0a 09 65 6e 64 0a 09 69 66 20 72 65 6d 28 77 p,.map,.'uchar');..end..if.rem(w
30020 69 64 74 68 2c 32 29 20 3d 3d 20 31 0a 09 09 69 6d 61 67 65 20 3d 20 5b 69 6d 61 67 65 27 3b 20 idth,2).==.1...image.=.[image';.
30040 7a 65 72 6f 73 28 31 2c 20 68 65 69 67 68 74 29 5d 27 3b 0a 09 09 74 6f 70 20 3d 20 32 35 35 20 zeros(1,.height)]';...top.=.255.
30060 2a 20 6f 6e 65 73 28 73 69 7a 65 28 69 6d 61 67 65 29 29 3b 0a 09 09 66 77 72 69 74 65 28 66 70 *.ones(size(image));...fwrite(fp
30080 2c 20 6d 69 6e 28 74 6f 70 2c 69 6d 61 67 65 29 27 2c 20 27 75 63 68 61 72 27 29 3b 0a 09 65 6c ,.min(top,image)',.'uchar');..el
300a0 73 65 0a 09 09 74 6f 70 20 3d 20 32 35 35 20 2a 20 6f 6e 65 73 28 73 69 7a 65 28 69 6d 61 67 65 se...top.=.255.*.ones(size(image
300c0 29 29 3b 0a 09 09 66 77 72 69 74 65 28 66 70 2c 20 6d 69 6e 28 74 6f 70 2c 69 6d 61 67 65 29 27 ));...fwrite(fp,.min(top,image)'
300e0 2c 20 27 75 63 68 61 72 27 29 3b 0a 09 65 6e 64 0a 09 66 63 6c 6f 73 65 28 66 70 29 3b 0a 65 6c ,.'uchar');..end..fclose(fp);.el
30100 73 65 0a 09 65 72 72 6f 72 28 27 49 6d 61 67 65 20 66 69 6c 65 20 6e 61 6d 65 20 6d 75 73 74 20 se..error('Image.file.name.must.
30120 65 6e 64 20 69 6e 20 65 69 74 68 65 72 20 27 27 72 61 73 27 27 20 6f 72 20 27 27 72 61 73 74 27 end.in.either.''ras''.or.''rast'
30140 27 2e 27 29 3b 0a 65 6e 64 0a 39 38 0a 0a 64 6f 74 20 3d 20 6d 61 78 28 66 69 6e 64 28 66 69 6c '.');.end.98..dot.=.max(find(fil
30160 65 6e 61 6d 65 20 3d 3d 20 27 2e 27 29 29 3b 0a 73 75 66 66 69 78 20 3d 20 66 69 6c 65 6e 61 6d ename.==.'.'));.suffix.=.filenam
30180 65 28 64 6f 74 2b 31 3a 64 6f 74 2b 33 29 3b 0a 0a 69 66 20 6e 61 72 67 69 6e 20 3c 20 33 2c 0a e(dot+1:dot+3);..if.nargin.<.3,.
301a0 20 20 20 6d 61 70 20 3d 20 5b 5d 3b 0a 65 6e 64 3b 0a 0a 69 66 28 73 74 72 63 6d 70 28 73 75 66 ...map.=.[];.end;..if(strcmp(suf
301c0 66 69 78 2c 20 27 72 61 73 27 29 29 0a 09 25 57 72 69 74 65 20 68 65 61 64 65 72 0a 0a 09 66 70 fix,.'ras'))..%Write.header...fp
301e0 20 3d 20 66 6f 70 65 6e 28 66 69 6c 65 6e 61 6d 65 2c 20 27 77 62 27 29 3b 0a 09 69 66 28 66 70 .=.fopen(filename,.'wb');..if(fp
30200 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 65 72 72 6f 72 5f 61 6e 61 6c 79 73 69 73 2e 6d 00 00 TOOLBOX_calib/error_analysis.m..
30220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
30240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
30260 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
30280 20 20 20 36 34 35 37 20 20 37 30 32 34 30 33 37 33 32 30 20 20 31 31 36 34 31 00 20 00 00 00 00 ...6457..7024037320..11641......
302a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
302c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
302e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
30300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
30320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
30340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
30360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
30380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
303a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
303c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
303e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
30400 25 25 25 20 45 52 52 4f 52 5f 41 4e 41 4c 59 53 49 53 0a 25 25 25 20 54 68 69 73 20 73 69 6d 75 %%%.ERROR_ANALYSIS.%%%.This.simu
30420 6c 61 74 69 6f 6e 20 68 65 6c 70 73 20 63 6f 70 75 74 69 6e 67 20 74 68 65 20 61 63 74 75 72 61 lation.helps.coputing.the.actura
30440 63 69 65 73 20 6f 66 20 63 61 6c 69 62 72 61 74 69 6f 6e 0a 25 25 25 20 52 75 6e 20 69 74 20 61 cies.of.calibration.%%%.Run.it.a
30460 66 74 65 72 20 74 68 65 20 6d 61 69 6e 20 63 61 6c 69 62 72 61 74 69 6f 6e 0a 0a 0a 0a 4e 5f 72 fter.the.main.calibration....N_r
30480 75 6e 73 20 3d 20 32 30 30 3b 0a 0a 25 4e 5f 69 6d 61 5f 61 63 74 69 76 65 20 3d 20 34 3b 0a 0a uns.=.200;..%N_ima_active.=.4;..
304a0 73 61 76 69 6e 67 20 3d 20 31 3b 0a 0a 69 66 20 31 2c 20 25 7e 65 78 69 73 74 28 27 66 63 5f 6c saving.=.1;..if.1,.%~exist('fc_l
304c0 69 73 74 27 29 2c 20 25 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 0a 20 20 20 0a 20 20 20 25 ist'),.%.initialization........%
304e0 20 49 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 3a 0a 20 20 20 0a 20 20 20 6c 6f 61 64 20 43 61 6c .Initialization:........load.Cal
30500 69 62 5f 52 65 73 75 6c 74 73 3b 0a 20 20 20 63 68 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 ib_Results;....check_active_imag
30520 65 73 3b 0a 20 20 20 0a 09 66 63 5f 6c 69 73 74 20 3d 20 5b 5d 3b 0a 09 63 63 5f 6c 69 73 74 20 es;......fc_list.=.[];..cc_list.
30540 3d 20 5b 5d 3b 0a 09 6b 63 5f 6c 69 73 74 20 3d 20 5b 5d 3b 0a 20 20 20 61 63 74 69 76 65 5f 69 =.[];..kc_list.=.[];....active_i
30560 6d 61 67 65 73 5f 6c 69 73 74 20 3d 20 5b 5d 3b 0a 20 20 20 0a 20 20 20 0a 09 66 6f 72 20 6b 6b mages_list.=.[];..........for.kk
30580 3d 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 09 0a 20 20 20 09 65 76 61 6c 28 5b 27 6f 6d 63 5f 6c 69 =1:n_ima,..........eval(['omc_li
305a0 73 74 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 5b 5d 3b 27 5d 29 3b 0a 20 20 20 st_'.num2str(kk).'.=.[];']);....
305c0 09 65 76 61 6c 28 5b 27 54 63 5f 6c 69 73 74 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 .eval(['Tc_list_'.num2str(kk).'.
305e0 3d 20 5b 5d 3b 27 5d 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a 09 0a 09 25 73 78 20 =.[];']);...........end;....%sx.
30600 3d 20 6d 65 64 69 61 6e 28 61 62 73 28 65 78 28 31 2c 3a 29 29 29 2a 31 2e 34 38 33 36 3b 0a 09 =.median(abs(ex(1,:)))*1.4836;..
30620 25 73 79 20 3d 20 6d 65 64 69 61 6e 28 61 62 73 28 65 78 28 32 2c 3a 29 29 29 2a 31 2e 34 38 33 %sy.=.median(abs(ex(2,:)))*1.483
30640 36 3b 0a 09 0a 09 73 78 20 3d 20 73 74 64 28 65 78 28 31 2c 3a 29 29 3b 0a 09 73 79 20 3d 20 73 6;....sx.=.std(ex(1,:));..sy.=.s
30660 74 64 28 65 78 28 32 2c 3a 29 29 3b 0a 20 20 20 0a 09 25 20 53 61 76 69 6e 67 20 74 68 65 20 66 td(ex(2,:));......%.Saving.the.f
30680 65 61 74 75 72 65 20 6c 6f 63 61 74 69 6f 6e 73 3a 0a 0a 09 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e eature.locations:...for.kk.=.1:n
306a0 5f 69 6d 61 2c 0a 20 20 20 09 0a 20 20 20 09 65 76 61 6c 28 5b 27 78 5f 73 61 76 65 5f 27 20 6e _ima,..........eval(['x_save_'.n
306c0 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 um2str(kk).'.=.x_'.num2str(kk).'
306e0 3b 27 5d 29 3b 0a 20 20 20 09 65 76 61 6c 28 5b 27 79 5f 73 61 76 65 5f 27 20 6e 75 6d 32 73 74 ;']);.....eval(['y_save_'.num2st
30700 72 28 6b 6b 29 20 27 20 3d 20 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b r(kk).'.=.y_'.num2str(kk).';']);
30720 0a 0a 09 65 6e 64 3b 0a 20 20 20 0a 20 20 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 5f 73 61 76 ...end;........active_images_sav
30740 65 20 3d 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 20 20 20 69 6e 64 5f 61 63 74 69 76 65 e.=.active_images;....ind_active
30760 5f 73 61 76 65 20 3d 20 69 6e 64 5f 61 63 74 69 76 65 3b 0a 20 20 20 0a 20 20 20 66 63 5f 73 61 _save.=.ind_active;........fc_sa
30780 76 65 20 3d 20 66 63 3b 0a 20 20 20 63 63 5f 73 61 76 65 20 3d 20 63 63 3b 0a 20 20 20 6b 63 5f ve.=.fc;....cc_save.=.cc;....kc_
307a0 73 61 76 65 20 3d 20 6b 63 3b 0a 20 20 20 4b 4b 5f 73 61 76 65 20 3d 20 4b 4b 3b 0a 20 20 20 0a save.=.kc;....KK_save.=.KK;.....
307c0 0a 65 6e 64 3b 0a 0a 0a 0a 0a 25 25 25 20 54 68 65 20 6d 61 69 6e 20 6c 6f 6f 70 3a 0a 0a 0a 66 .end;.....%%%.The.main.loop:...f
307e0 6f 72 20 6e 74 72 69 61 6c 20 3d 20 31 3a 4e 5f 72 75 6e 73 2c 0a 20 20 20 0a 20 20 20 66 70 72 or.ntrial.=.1:N_runs,........fpr
30800 69 6e 74 66 28 31 2c 27 5c 6e 52 75 6e 20 6e 75 6d 62 65 72 3a 20 25 64 5c 6e 27 2c 6e 74 72 69 intf(1,'\nRun.number:.%d\n',ntri
30820 61 6c 29 3b 0a 20 20 20 66 70 72 69 6e 74 66 28 31 2c 20 20 27 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c al);....fprintf(1,..'----------\
30840 6e 27 29 3b 0a 20 20 20 0a 20 20 20 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 n');........for.kk.=.1:n_ima,...
30860 20 20 20 20 0a 20 20 20 20 20 20 65 76 61 6c 28 5b 27 79 5f 6b 6b 20 3d 20 79 5f 73 61 76 65 5f ...........eval(['y_kk.=.y_save_
30880 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 0a 20 20 20 20 20 20 0a 20 20 20 20 20 '.num2str(kk).';']).............
308a0 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 20 26 20 7e 69 73 6e 61 6e 28 79 .if.active_images(kk).&.~isnan(y
308c0 5f 6b 6b 28 31 2c 31 29 29 2c 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 4e 6b _kk(1,1)),....................Nk
308e0 6b 20 3d 20 73 69 7a 65 28 79 5f 6b 6b 2c 32 29 3b 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 k.=.size(y_kk,2);...............
30900 20 20 20 20 20 78 5f 6b 6b 5f 6e 65 77 20 3d 20 79 5f 6b 6b 20 2b 20 5b 73 78 20 2a 20 72 61 6e .....x_kk_new.=.y_kk.+.[sx.*.ran
30920 64 6e 28 31 2c 4e 6b 6b 29 3b 73 79 2a 72 61 6e 64 6e 28 31 2c 4e 6b 6b 29 5d 3b 0a 20 20 20 20 dn(1,Nkk);sy*randn(1,Nkk)];.....
30940 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 65 76 61 6c 28 5b 27 78 5f 27 20 6e 75 6d 32 73 74 ...............eval(['x_'.num2st
30960 72 28 6b 6b 29 20 27 20 3d 20 78 5f 6b 6b 5f 6e 65 77 3b 27 5d 29 3b 0a 20 20 20 20 20 20 20 20 r(kk).'.=.x_kk_new;']);.........
30980 20 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a ........end;...........end;.....
309a0 20 20 20 4e 5f 61 63 74 69 76 65 20 3d 20 6c 65 6e 67 74 68 28 69 6e 64 5f 61 63 74 69 76 65 5f ...N_active.=.length(ind_active_
309c0 73 61 76 65 29 3b 0a 20 20 20 6a 75 6e 6b 20 3d 20 72 61 6e 64 6e 28 31 2c 4e 5f 61 63 74 69 76 save);....junk.=.randn(1,N_activ
309e0 65 29 3b 0a 20 20 20 5b 6a 75 6e 6b 2c 6a 75 6e 6b 32 5d 20 3d 20 73 6f 72 74 28 6a 75 6e 6b 29 e);....[junk,junk2].=.sort(junk)
30a00 3b 0a 20 20 20 0a 20 20 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 20 3d 20 7a 65 72 6f 73 28 31 ;........active_images.=.zeros(1
30a20 2c 6e 5f 69 6d 61 29 3b 0a 20 20 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 69 6e 64 5f 61 63 ,n_ima);....active_images(ind_ac
30a40 74 69 76 65 5f 73 61 76 65 28 6a 75 6e 6b 32 28 31 3a 4e 5f 69 6d 61 5f 61 63 74 69 76 65 29 29 tive_save(junk2(1:N_ima_active))
30a60 29 20 3d 20 6f 6e 65 73 28 31 2c 4e 5f 69 6d 61 5f 61 63 74 69 76 65 29 3b 0a 20 20 20 0a 20 20 ).=.ones(1,N_ima_active);.......
30a80 20 66 63 20 3d 20 66 63 5f 73 61 76 65 3b 0a 20 20 20 63 63 20 3d 20 63 63 5f 73 61 76 65 3b 0a .fc.=.fc_save;....cc.=.cc_save;.
30aa0 20 20 20 6b 63 20 3d 20 6b 63 5f 73 61 76 65 3b 0a 20 20 20 4b 4b 20 3d 20 4b 4b 5f 73 61 76 65 ...kc.=.kc_save;....KK.=.KK_save
30ac0 3b 0a 20 20 20 0a 20 20 20 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 3b 0a 20 20 20 0a 20 20 20 ;........go_calib_optim;........
30ae0 66 63 5f 6c 69 73 74 20 3d 20 5b 66 63 5f 6c 69 73 74 20 66 63 5d 3b 0a 20 20 20 63 63 5f 6c 69 fc_list.=.[fc_list.fc];....cc_li
30b00 73 74 20 3d 20 5b 63 63 5f 6c 69 73 74 20 63 63 5d 3b 0a 20 20 20 6b 63 5f 6c 69 73 74 20 3d 20 st.=.[cc_list.cc];....kc_list.=.
30b20 5b 6b 63 5f 6c 69 73 74 20 6b 63 5d 3b 0a 20 20 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 5f 6c [kc_list.kc];....active_images_l
30b40 69 73 74 20 3d 20 5b 61 63 74 69 76 65 5f 69 6d 61 67 65 73 5f 6c 69 73 74 20 61 63 74 69 76 65 ist.=.[active_images_list.active
30b60 5f 69 6d 61 67 65 73 27 5d 3b 0a 20 20 20 0a 20 20 20 66 6f 72 20 6b 6b 3d 31 3a 6e 5f 69 6d 61 _images'];........for.kk=1:n_ima
30b80 2c 0a 20 20 20 0a 20 20 20 09 65 76 61 6c 28 5b 27 6f 6d 63 5f 6c 69 73 74 5f 27 20 6e 75 6d 32 ,.........eval(['omc_list_'.num2
30ba0 73 74 72 28 6b 6b 29 20 27 20 3d 20 5b 20 6f 6d 63 5f 6c 69 73 74 5f 27 20 6e 75 6d 32 73 74 72 str(kk).'.=.[.omc_list_'.num2str
30bc0 28 6b 6b 29 20 27 20 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 5d 3b 27 5d 29 (kk).'.omc_'.num2str(kk).'.];'])
30be0 3b 0a 20 20 20 09 65 76 61 6c 28 5b 27 54 63 5f 6c 69 73 74 5f 27 20 6e 75 6d 32 73 74 72 28 6b ;.....eval(['Tc_list_'.num2str(k
30c00 6b 29 20 27 20 3d 20 5b 20 54 63 5f 6c 69 73 74 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 k).'.=.[.Tc_list_'.num2str(kk).'
30c20 20 54 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 5d 3b 27 5d 29 3b 0a 20 20 20 0a 09 .Tc_'.num2str(kk).'.];']);......
30c40 65 6e 64 3b 0a 0a 65 6e 64 3b 0a 0a 0a 0a 0a 69 66 20 30 2c 0a 0a 25 20 52 65 73 74 6f 72 69 6e end;..end;.....if.0,..%.Restorin
30c60 67 20 74 68 65 20 66 65 61 74 75 72 65 20 6c 6f 63 61 74 69 6f 6e 73 3a 0a 0a 66 6f 72 20 6b 6b g.the.feature.locations:..for.kk
30c80 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 78 5f 27 20 6e 75 .=.1:n_ima,........eval(['x_'.nu
30ca0 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 78 5f 73 61 76 65 5f 27 20 6e 75 6d 32 73 74 72 28 6b m2str(kk).'.=.x_save_'.num2str(k
30cc0 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c k).';']);.....end;..fprintf(1,'\
30ce0 6e 46 69 6e 61 6c 20 72 75 6e 20 28 77 69 74 68 20 74 68 65 20 72 65 61 6c 20 64 61 74 61 29 5c nFinal.run.(with.the.real.data)\
30d00 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 20 20 27 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d n');.fprintf(1,..'--------------
30d20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 27 29 3b 0a 0a 61 63 74 69 76 65 5f 69 6d ----------------\n');..active_im
30d40 61 67 65 73 20 3d 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 5f 73 61 76 65 3b 0a 69 6e 64 5f 61 ages.=.active_images_save;.ind_a
30d60 63 74 69 76 65 20 3d 20 69 6e 64 5f 61 63 74 69 76 65 5f 73 61 76 65 3b 0a 0a 67 6f 5f 63 61 6c ctive.=.ind_active_save;..go_cal
30d80 69 62 5f 6f 70 74 69 6d 3b 0a 20 20 20 0a 66 63 5f 6c 69 73 74 20 3d 20 5b 66 63 5f 6c 69 73 74 ib_optim;.....fc_list.=.[fc_list
30da0 20 66 63 5d 3b 0a 63 63 5f 6c 69 73 74 20 3d 20 5b 63 63 5f 6c 69 73 74 20 63 63 5d 3b 0a 6b 63 .fc];.cc_list.=.[cc_list.cc];.kc
30dc0 5f 6c 69 73 74 20 3d 20 5b 6b 63 5f 6c 69 73 74 20 6b 63 5d 3b 0a 61 63 74 69 76 65 5f 69 6d 61 _list.=.[kc_list.kc];.active_ima
30de0 67 65 73 5f 6c 69 73 74 20 3d 20 5b 61 63 74 69 76 65 5f 69 6d 61 67 65 73 5f 6c 69 73 74 20 61 ges_list.=.[active_images_list.a
30e00 63 74 69 76 65 5f 69 6d 61 67 65 73 27 5d 3b 0a 0a 66 6f 72 20 6b 6b 3d 31 3a 6e 5f 69 6d 61 2c ctive_images'];..for.kk=1:n_ima,
30e20 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 6f 6d 63 5f 6c 69 73 74 5f 27 20 6e 75 6d 32 73 74 ........eval(['omc_list_'.num2st
30e40 72 28 6b 6b 29 20 27 20 3d 20 5b 20 6f 6d 63 5f 6c 69 73 74 5f 27 20 6e 75 6d 32 73 74 72 28 6b r(kk).'.=.[.omc_list_'.num2str(k
30e60 6b 29 20 27 20 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 5d 3b 27 5d 29 3b 0a k).'.omc_'.num2str(kk).'.];']);.
30e80 20 20 20 65 76 61 6c 28 5b 27 54 63 5f 6c 69 73 74 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 ...eval(['Tc_list_'.num2str(kk).
30ea0 27 20 3d 20 5b 20 54 63 5f 6c 69 73 74 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 54 63 '.=.[.Tc_list_'.num2str(kk).'.Tc
30ec0 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 5d 3b 27 5d 29 3b 0a 20 20 20 0a 65 6e 64 3b _'.num2str(kk).'.];']);.....end;
30ee0 0a 0a 65 6e 64 3b 0a 0a 0a 0a 0a 0a 69 66 20 73 61 76 69 6e 67 2c 0a 20 20 20 0a 64 69 73 70 28 ..end;......if.saving,.....disp(
30f00 5b 27 53 61 76 65 20 43 61 6c 69 62 72 61 74 69 6f 6e 20 61 63 63 75 72 61 63 79 20 72 65 73 75 ['Save.Calibration.accuracy.resu
30f20 6c 74 73 20 75 6e 64 65 72 20 43 61 6c 69 62 5f 41 63 63 75 72 61 63 69 65 73 5f 27 20 6e 75 6d lts.under.Calib_Accuracies_'.num
30f40 32 73 74 72 28 4e 5f 69 6d 61 5f 61 63 74 69 76 65 29 20 27 2e 6d 61 74 27 5d 29 3b 0a 0a 73 74 2str(N_ima_active).'.mat']);..st
30f60 72 69 6e 67 5f 73 61 76 65 20 3d 20 5b 27 73 61 76 65 20 43 61 6c 69 62 5f 41 63 63 75 72 61 63 ring_save.=.['save.Calib_Accurac
30f80 69 65 73 5f 27 20 6e 75 6d 32 73 74 72 28 4e 5f 69 6d 61 5f 61 63 74 69 76 65 29 20 27 20 61 63 ies_'.num2str(N_ima_active).'.ac
30fa0 74 69 76 65 5f 69 6d 61 67 65 73 20 6e 5f 69 6d 61 20 4e 5f 69 6d 61 5f 61 63 74 69 76 65 20 4e tive_images.n_ima.N_ima_active.N
30fc0 5f 72 75 6e 73 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 5f 6c 69 73 74 20 66 63 20 63 63 20 6b _runs.active_images_list.fc.cc.k
30fe0 63 20 66 63 5f 6c 69 73 74 20 63 63 5f 6c 69 73 74 20 6b 63 5f 6c 69 73 74 27 5d 3b 0a 0a 66 6f c.fc_list.cc_list.kc_list'];..fo
31000 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 73 74 72 69 6e 67 5f 73 61 76 65 20 3d r.kk.=.1:n_ima,....string_save.=
31020 20 5b 73 74 72 69 6e 67 5f 73 61 76 65 20 27 20 54 63 5f 6c 69 73 74 5f 27 20 6e 75 6d 32 73 74 .[string_save.'.Tc_list_'.num2st
31040 72 28 6b 6b 29 20 27 20 6f 6d 63 5f 6c 69 73 74 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 20 r(kk).'.omc_list_'.num2str(kk)..
31060 27 20 54 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 6f 6d 63 5f 27 20 6e 75 6d 32 73 '.Tc_'.num2str(kk).'.omc_'.num2s
31080 74 72 28 6b 6b 29 20 5d 3b 0a 65 6e 64 3b 0a 0a 65 76 61 6c 28 73 74 72 69 6e 67 5f 73 61 76 65 tr(kk).];.end;..eval(string_save
310a0 29 3b 0a 0a 65 6e 64 3b 0a 0a 0a 72 65 74 75 72 6e 3b 0a 0a 73 74 64 28 66 63 5f 6c 69 73 74 27 );..end;...return;..std(fc_list'
310c0 29 0a 0a 73 74 64 28 63 63 5f 6c 69 73 74 27 29 0a 0a 73 74 64 28 6b 63 5f 6c 69 73 74 27 29 0a )..std(cc_list')..std(kc_list').
310e0 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b .for.kk.=.1:n_ima,........eval([
31100 27 73 74 64 28 54 63 5f 6c 69 73 74 5f 27 20 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 27 27 29 'std(Tc_list_'..num2str(kk).''')
31120 27 5d 29 0a 20 20 20 0a 65 6e 64 3b 0a 0a 0a 0a 0a 0a 25 20 41 64 64 20 64 69 73 74 6f 72 74 69 ']).....end;......%.Add.distorti
31140 6f 6e 3a 0a 0a 72 32 20 3d 20 78 28 31 2c 3a 29 2e 5e 32 20 2b 20 78 28 32 2c 3a 29 2e 5e 32 3b on:..r2.=.x(1,:).^2.+.x(2,:).^2;
31160 0a 0a 0a 0a 64 72 32 64 6f 6d 20 3d 20 32 2a 28 28 78 28 31 2c 3a 29 27 29 2a 6f 6e 65 73 28 31 ....dr2dom.=.2*((x(1,:)')*ones(1
31180 2c 33 29 29 20 2e 2a 20 64 78 64 6f 6d 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 2b 20 32 2a 28 28 78 ,3))..*.dxdom(1:2:end,:).+.2*((x
311a0 28 32 2c 3a 29 27 29 2a 6f 6e 65 73 28 31 2c 33 29 29 20 2e 2a 20 64 78 64 6f 6d 28 32 3a 32 3a (2,:)')*ones(1,3))..*.dxdom(2:2:
311c0 65 6e 64 2c 3a 29 3b 0a 64 72 32 64 54 20 3d 20 32 2a 28 28 78 28 31 2c 3a 29 27 29 2a 6f 6e 65 end,:);.dr2dT.=.2*((x(1,:)')*one
311e0 73 28 31 2c 33 29 29 20 2e 2a 20 64 78 64 54 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 2b 20 32 2a 28 s(1,3))..*.dxdT(1:2:end,:).+.2*(
31200 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 6c 6f 61 64 69 6e 72 2e 6d 00 00 00 00 00 00 00 00 00 TOOLBOX_calib/loadinr.m.........
31220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31260 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
31280 20 20 20 32 30 30 35 20 20 37 30 32 34 30 33 37 33 33 35 20 20 31 30 32 32 34 00 20 00 00 00 00 ...2005..7024037335..10224......
312a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
312c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
312e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
313a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
313c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
313e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31400 25 4c 4f 41 44 49 4e 52 09 4c 6f 61 64 20 61 6e 20 49 4e 52 49 4d 41 47 45 20 66 6f 72 6d 61 74 %LOADINR.Load.an.INRIMAGE.format
31420 20 66 69 6c 65 0a 25 0a 25 09 4c 4f 41 44 49 4e 52 28 66 69 6c 65 6e 61 6d 65 2c 20 69 6d 29 0a .file.%.%.LOADINR(filename,.im).
31440 25 0a 25 09 4c 6f 61 64 20 61 6e 20 49 4e 52 49 41 20 69 6d 61 67 65 20 66 6f 72 6d 61 74 20 66 %.%.Load.an.INRIA.image.format.f
31460 69 6c 65 20 61 6e 64 20 72 65 74 75 72 6e 20 69 74 20 61 73 20 61 20 6d 61 74 72 69 78 0a 25 0a ile.and.return.it.as.a.matrix.%.
31480 25 20 53 45 45 20 41 4c 53 4f 3a 09 73 61 76 65 69 6e 72 0a 25 0a 25 09 43 6f 70 79 72 69 67 68 %.SEE.ALSO:.saveinr.%.%.Copyrigh
314a0 74 20 28 63 29 20 50 65 74 65 72 20 43 6f 72 6b 65 2c 20 31 39 39 39 20 20 4d 61 63 68 69 6e 65 t.(c).Peter.Corke,.1999..Machine
314c0 20 56 69 73 69 6f 6e 20 54 6f 6f 6c 62 6f 78 20 66 6f 72 20 4d 61 74 6c 61 62 0a 0a 0a 25 20 50 .Vision.Toolbox.for.Matlab...%.P
314e0 65 74 65 72 20 43 6f 72 6b 65 20 31 39 39 36 0a 0a 66 75 6e 63 74 69 6f 6e 20 69 6d 20 3d 20 6c eter.Corke.1996..function.im.=.l
31500 6f 61 64 69 6e 72 28 66 6e 61 6d 65 2c 20 69 6d 29 0a 0a 09 66 69 64 20 3d 20 66 6f 70 65 6e 28 oadinr(fname,.im)...fid.=.fopen(
31520 66 6e 61 6d 65 2c 20 27 72 27 29 3b 0a 0a 09 73 20 3d 20 66 67 65 74 73 28 66 69 64 29 3b 0a 09 fname,.'r');...s.=.fgets(fid);..
31540 69 66 20 73 74 72 63 6d 70 28 73 28 31 3a 31 32 29 2c 20 27 23 49 4e 52 49 4d 41 47 45 2d 34 23 if.strcmp(s(1:12),.'#INRIMAGE-4#
31560 27 29 20 3d 3d 20 30 2c 0a 09 09 65 72 72 6f 72 28 27 6e 6f 74 20 49 4e 52 49 4d 41 47 45 20 66 ').==.0,...error('not.INRIMAGE.f
31580 6f 72 6d 61 74 27 29 3b 0a 09 65 6e 64 0a 0a 09 25 20 6e 6f 74 20 76 65 72 79 20 63 6f 6d 70 6c ormat');..end...%.not.very.compl
315a0 65 74 65 2c 20 6f 6e 6c 79 20 6c 6f 6f 6b 73 20 66 6f 72 20 74 68 65 20 58 2f 59 44 49 4d 20 6b ete,.only.looks.for.the.X/YDIM.k
315c0 65 79 73 0a 09 77 68 69 6c 65 20 31 2c 0a 09 09 73 20 3d 20 66 67 65 74 73 28 66 69 64 29 3b 0a eys..while.1,...s.=.fgets(fid);.
315e0 09 09 6e 20 3d 20 6c 65 6e 67 74 68 28 73 29 20 2d 20 31 3b 0a 09 09 69 66 20 73 28 31 29 20 3d ..n.=.length(s).-.1;...if.s(1).=
31600 3d 20 27 23 27 2c 0a 09 09 09 62 72 65 61 6b 0a 09 09 65 6e 64 0a 09 09 69 66 20 73 74 72 63 6d =.'#',....break...end...if.strcm
31620 70 28 73 28 31 3a 35 29 2c 20 27 58 44 49 4d 3d 27 29 2c 0a 09 09 09 63 6f 6c 73 20 3d 20 73 74 p(s(1:5),.'XDIM='),....cols.=.st
31640 72 32 6e 75 6d 28 73 28 36 3a 6e 29 29 3b 0a 09 09 65 6e 64 0a 09 09 69 66 20 73 74 72 63 6d 70 r2num(s(6:n));...end...if.strcmp
31660 28 73 28 31 3a 35 29 2c 20 27 59 44 49 4d 3d 27 29 2c 0a 09 09 09 72 6f 77 73 20 3d 20 73 74 72 (s(1:5),.'YDIM='),....rows.=.str
31680 32 6e 75 6d 28 73 28 36 3a 6e 29 29 3b 0a 09 09 65 6e 64 0a 09 09 69 66 20 73 74 72 63 6d 70 28 2num(s(6:n));...end...if.strcmp(
316a0 73 28 31 3a 34 29 2c 20 27 43 50 55 3d 27 29 2c 0a 09 09 09 69 66 20 73 74 72 63 6d 70 28 73 28 s(1:4),.'CPU='),....if.strcmp(s(
316c0 35 3a 6e 29 2c 20 27 73 75 6e 27 29 20 3d 3d 20 30 2c 0a 09 09 09 09 65 72 72 6f 72 28 27 6e 6f 5:n),.'sun').==.0,.....error('no
316e0 74 20 73 75 6e 20 64 61 74 61 20 6f 72 64 65 72 69 6e 67 27 29 3b 0a 09 09 09 65 6e 64 0a 09 09 t.sun.data.ordering');....end...
31700 65 6e 64 0a 09 09 0a 09 65 6e 64 0a 09 64 69 73 70 28 5b 27 49 4e 52 49 4d 41 47 45 20 66 6f 72 end.....end..disp(['INRIMAGE.for
31720 6d 61 74 20 66 69 6c 65 20 27 20 6e 75 6d 32 73 74 72 28 72 6f 77 73 29 20 27 20 78 20 27 20 6e mat.file.'.num2str(rows).'.x.'.n
31740 75 6d 32 73 74 72 28 63 6f 6c 73 29 5d 29 0a 0a 09 25 20 6e 6f 77 20 74 68 65 20 62 69 6e 61 72 um2str(cols)])...%.now.the.binar
31760 79 20 64 61 74 61 0a 09 66 73 65 65 6b 28 66 69 64 2c 20 32 35 36 2c 20 27 62 6f 66 27 29 3b 0a y.data..fseek(fid,.256,.'bof');.
31780 09 5b 69 6d 20 63 6f 75 6e 74 5d 20 3d 20 66 72 65 61 64 28 66 69 64 2c 20 5b 63 6f 6c 73 20 72 .[im.count].=.fread(fid,.[cols.r
317a0 6f 77 73 5d 2c 20 27 66 6c 6f 61 74 33 32 27 29 3b 0a 09 69 6d 20 3d 20 69 6d 27 3b 0a 09 69 66 ows],.'float32');..im.=.im';..if
317c0 20 63 6f 75 6e 74 20 7e 3d 20 28 72 6f 77 73 2a 63 6f 6c 73 29 2c 0a 09 09 65 72 72 6f 72 28 27 .count.~=.(rows*cols),...error('
317e0 66 69 6c 65 20 74 6f 6f 20 73 68 6f 72 74 27 29 3b 0a 09 65 6e 64 0a 09 66 63 6c 6f 73 65 28 66 file.too.short');..end..fclose(f
31800 69 64 29 3b 0a 31 2c 27 5c 6e 52 75 6e 20 6e 75 6d 62 65 72 3a 20 25 64 5c 6e 27 2c 6e 74 72 69 id);.1,'\nRun.number:.%d\n',ntri
31820 61 6c 29 3b 0a 20 20 20 66 70 72 69 6e 74 66 28 31 2c 20 20 27 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c al);....fprintf(1,..'----------\
31840 6e 27 29 3b 0a 20 20 20 0a 20 20 20 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 n');........for.kk.=.1:n_ima,...
31860 20 20 20 20 0a 20 20 20 20 20 20 65 76 61 6c 28 5b 27 79 5f 6b 6b 20 3d 20 79 5f 73 61 76 65 5f ...........eval(['y_kk.=.y_save_
31880 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 0a 20 20 20 20 20 20 0a 20 20 20 20 20 '.num2str(kk).';']).............
318a0 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 20 26 20 7e 69 73 6e 61 6e 28 79 .if.active_images(kk).&.~isnan(y
318c0 5f 6b 6b 28 31 2c 31 29 29 2c 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 4e 6b _kk(1,1)),....................Nk
318e0 6b 20 3d 20 73 69 7a 65 28 79 5f 6b 6b 2c 32 29 3b 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 k.=.size(y_kk,2);...............
31900 20 20 20 20 20 78 5f 6b 6b 5f 6e 65 77 20 3d 20 79 5f 6b 6b 20 2b 20 5b 73 78 20 2a 20 72 61 6e .....x_kk_new.=.y_kk.+.[sx.*.ran
31920 64 6e 28 31 2c 4e 6b 6b 29 3b 73 79 2a 72 61 6e 64 6e 28 31 2c 4e 6b 6b 29 5d 3b 0a 20 20 20 20 dn(1,Nkk);sy*randn(1,Nkk)];.....
31940 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 65 76 61 6c 28 5b 27 78 5f 27 20 6e 75 6d 32 73 74 ...............eval(['x_'.num2st
31960 72 28 6b 6b 29 20 27 20 3d 20 78 5f 6b 6b 5f 6e 65 77 3b 27 5d 29 3b 0a 20 20 20 20 20 20 20 20 r(kk).'.=.x_kk_new;']);.........
31980 20 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a ........end;...........end;.....
319a0 20 20 20 4e 5f 61 63 74 69 76 65 20 3d 20 6c 65 6e 67 74 68 28 69 6e 64 5f 61 63 74 69 76 65 5f ...N_active.=.length(ind_active_
319c0 73 61 76 65 29 3b 0a 20 20 20 6a 75 6e 6b 20 3d 20 72 61 6e 64 6e 28 31 2c 4e 5f 61 63 74 69 76 save);....junk.=.randn(1,N_activ
319e0 65 29 3b 0a 20 20 20 5b 6a 75 6e 6b 2c 6a 75 6e 6b 32 5d 20 3d 20 73 6f 72 74 28 6a 75 6e 6b 29 e);....[junk,junk2].=.sort(junk)
31a00 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 6c 6f 61 64 70 67 6d 2e 6d 00 00 00 00 00 00 00 00 00 TOOLBOX_calib/loadpgm.m.........
31a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31a60 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
31a80 20 20 20 33 34 35 34 20 20 37 30 32 34 30 33 37 33 33 36 20 20 31 30 32 33 31 00 20 00 00 00 00 ...3454..7024037336..10231......
31aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31c00 25 4c 4f 41 44 50 47 4d 09 4c 6f 61 64 20 61 20 50 47 4d 20 69 6d 61 67 65 0a 25 0a 25 09 49 20 %LOADPGM.Load.a.PGM.image.%.%.I.
31c20 3d 20 6c 6f 61 64 70 67 6d 28 66 69 6c 65 6e 61 6d 65 29 0a 25 0a 25 09 52 65 74 75 72 6e 73 20 =.loadpgm(filename).%.%.Returns.
31c40 61 20 6d 61 74 72 69 78 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 69 6d 61 67 65 20 6c 6f a.matrix.containing.the.image.lo
31c60 61 64 65 64 20 66 72 6f 6d 20 74 68 65 20 50 47 4d 20 66 6f 72 6d 61 74 0a 25 09 66 69 6c 65 20 aded.from.the.PGM.format.%.file.
31c80 66 69 6c 65 6e 61 6d 65 2e 20 20 48 61 6e 64 6c 65 73 20 41 53 43 49 49 20 28 50 32 29 20 61 6e filename...Handles.ASCII.(P2).an
31ca0 64 20 62 69 6e 61 72 79 20 28 50 35 29 20 50 47 4d 20 66 69 6c 65 20 66 6f 72 6d 61 74 73 2e 0a d.binary.(P5).PGM.file.formats..
31cc0 25 0a 25 09 49 66 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 20 68 61 73 20 6e 6f 20 65 78 74 65 6e %.%.If.the.filename.has.no.exten
31ce0 73 69 6f 6e 2c 20 61 6e 64 20 6f 70 65 6e 20 66 61 69 6c 73 2c 20 61 20 27 2e 70 67 6d 27 20 77 sion,.and.open.fails,.a.'.pgm'.w
31d00 69 6c 6c 0a 25 09 62 65 20 61 70 70 65 6e 64 65 64 2e 0a 25 0a 25 0a 25 09 43 6f 70 79 72 69 67 ill.%.be.appended..%.%.%.Copyrig
31d20 68 74 20 28 63 29 20 50 65 74 65 72 20 43 6f 72 6b 65 2c 20 31 39 39 39 20 20 4d 61 63 68 69 6e ht.(c).Peter.Corke,.1999..Machin
31d40 65 20 56 69 73 69 6f 6e 20 54 6f 6f 6c 62 6f 78 20 66 6f 72 20 4d 61 74 6c 61 62 0a 0a 0a 25 20 e.Vision.Toolbox.for.Matlab...%.
31d60 50 65 74 65 72 20 43 6f 72 6b 65 20 31 39 39 34 0a 0a 66 75 6e 63 74 69 6f 6e 20 49 20 3d 20 6c Peter.Corke.1994..function.I.=.l
31d80 6f 61 64 70 67 6d 28 66 69 6c 65 29 0a 09 77 68 69 74 65 20 3d 20 5b 27 20 27 20 39 20 31 30 20 oadpgm(file)..white.=.['.'.9.10.
31da0 31 33 5d 3b 09 25 20 73 70 61 63 65 2c 20 74 61 62 2c 20 6c 66 2c 20 63 72 0a 09 77 68 69 74 65 13];.%.space,.tab,.lf,.cr..white
31dc0 20 3d 20 73 65 74 73 74 72 28 77 68 69 74 65 29 3b 0a 0a 09 66 69 64 20 3d 20 66 6f 70 65 6e 28 .=.setstr(white);...fid.=.fopen(
31de0 66 69 6c 65 2c 20 27 72 27 29 3b 0a 09 69 66 20 66 69 64 20 3c 20 30 2c 0a 09 09 66 69 64 20 3d file,.'r');..if.fid.<.0,...fid.=
31e00 20 66 6f 70 65 6e 28 5b 66 69 6c 65 20 27 2e 70 67 6d 27 5d 2c 20 27 72 27 29 3b 0a 09 65 6e 64 .fopen([file.'.pgm'],.'r');..end
31e20 0a 09 69 66 20 66 69 64 20 3c 20 30 2c 0a 09 09 65 72 72 6f 72 28 27 43 6f 75 6c 64 6e 27 27 74 ..if.fid.<.0,...error('Couldn''t
31e40 20 6f 70 65 6e 20 66 69 6c 65 27 29 3b 0a 09 65 6e 64 0a 09 09 0a 09 6d 61 67 69 63 20 3d 20 66 .open.file');..end.....magic.=.f
31e60 72 65 61 64 28 66 69 64 2c 20 32 2c 20 27 63 68 61 72 27 29 3b 0a 09 77 68 69 6c 65 20 31 0a 09 read(fid,.2,.'char');..while.1..
31e80 09 63 20 3d 20 66 72 65 61 64 28 66 69 64 2c 31 2c 27 63 68 61 72 27 29 3b 0a 09 09 69 66 20 63 .c.=.fread(fid,1,'char');...if.c
31ea0 20 3d 3d 20 27 23 27 2c 0a 09 09 09 66 67 65 74 6c 28 66 69 64 29 3b 0a 09 09 65 6c 73 65 69 66 .==.'#',....fgetl(fid);...elseif
31ec0 20 7e 61 6e 79 28 63 20 3d 3d 20 77 68 69 74 65 29 0a 09 09 09 66 73 65 65 6b 28 66 69 64 2c 20 .~any(c.==.white)....fseek(fid,.
31ee0 2d 31 2c 20 27 63 6f 66 27 29 3b 09 25 20 75 6e 70 75 74 63 28 29 0a 09 09 09 62 72 65 61 6b 3b -1,.'cof');.%.unputc()....break;
31f00 0a 09 09 65 6e 64 0a 09 65 6e 64 0a 09 63 6f 6c 73 20 3d 20 66 73 63 61 6e 66 28 66 69 64 2c 20 ...end..end..cols.=.fscanf(fid,.
31f20 27 25 64 27 2c 20 31 29 3b 0a 09 77 68 69 6c 65 20 31 0a 09 09 63 20 3d 20 66 72 65 61 64 28 66 '%d',.1);..while.1...c.=.fread(f
31f40 69 64 2c 31 2c 27 63 68 61 72 27 29 3b 0a 09 09 69 66 20 63 20 3d 3d 20 27 23 27 2c 0a 09 09 09 id,1,'char');...if.c.==.'#',....
31f60 66 67 65 74 6c 28 66 69 64 29 3b 0a 09 09 65 6c 73 65 69 66 20 7e 61 6e 79 28 63 20 3d 3d 20 77 fgetl(fid);...elseif.~any(c.==.w
31f80 68 69 74 65 29 0a 09 09 09 66 73 65 65 6b 28 66 69 64 2c 20 2d 31 2c 20 27 63 6f 66 27 29 3b 09 hite)....fseek(fid,.-1,.'cof');.
31fa0 25 20 75 6e 70 75 74 63 28 29 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 65 6e 64 0a 09 65 6e 64 0a %.unputc()....break;...end..end.
31fc0 09 72 6f 77 73 20 3d 20 66 73 63 61 6e 66 28 66 69 64 2c 20 27 25 64 27 2c 20 31 29 3b 0a 09 77 .rows.=.fscanf(fid,.'%d',.1);..w
31fe0 68 69 6c 65 20 31 0a 09 09 63 20 3d 20 66 72 65 61 64 28 66 69 64 2c 31 2c 27 63 68 61 72 27 29 hile.1...c.=.fread(fid,1,'char')
32000 3b 0a 09 09 69 66 20 63 20 3d 3d 20 27 23 27 2c 0a 09 09 09 66 67 65 74 6c 28 66 69 64 29 3b 0a ;...if.c.==.'#',....fgetl(fid);.
32020 09 09 65 6c 73 65 69 66 20 7e 61 6e 79 28 63 20 3d 3d 20 77 68 69 74 65 29 0a 09 09 09 66 73 65 ..elseif.~any(c.==.white)....fse
32040 65 6b 28 66 69 64 2c 20 2d 31 2c 20 27 63 6f 66 27 29 3b 09 25 20 75 6e 70 75 74 63 28 29 0a 09 ek(fid,.-1,.'cof');.%.unputc()..
32060 09 09 62 72 65 61 6b 3b 0a 09 09 65 6e 64 0a 09 65 6e 64 0a 09 6d 61 78 76 61 6c 20 3d 20 66 73 ..break;...end..end..maxval.=.fs
32080 63 61 6e 66 28 66 69 64 2c 20 27 25 64 27 2c 20 31 29 3b 0a 09 77 68 69 6c 65 20 31 0a 09 09 63 canf(fid,.'%d',.1);..while.1...c
320a0 20 3d 20 66 72 65 61 64 28 66 69 64 2c 31 2c 27 63 68 61 72 27 29 3b 0a 09 09 69 66 20 63 20 3d .=.fread(fid,1,'char');...if.c.=
320c0 3d 20 27 23 27 2c 0a 09 09 09 66 67 65 74 6c 28 66 69 64 29 3b 0a 09 09 65 6c 73 65 69 66 20 7e =.'#',....fgetl(fid);...elseif.~
320e0 61 6e 79 28 63 20 3d 3d 20 77 68 69 74 65 29 0a 09 09 09 66 73 65 65 6b 28 66 69 64 2c 20 2d 31 any(c.==.white)....fseek(fid,.-1
32100 2c 20 27 63 6f 66 27 29 3b 09 25 20 75 6e 70 75 74 63 28 29 0a 09 09 09 62 72 65 61 6b 3b 0a 09 ,.'cof');.%.unputc()....break;..
32120 09 65 6e 64 0a 09 65 6e 64 0a 09 69 66 20 6d 61 67 69 63 28 31 29 20 3d 3d 20 27 50 27 2c 0a 09 .end..end..if.magic(1).==.'P',..
32140 09 69 66 20 6d 61 67 69 63 28 32 29 20 3d 3d 20 27 32 27 2c 0a 09 09 09 64 69 73 70 28 5b 27 41 .if.magic(2).==.'2',....disp(['A
32160 53 43 49 49 20 50 47 4d 20 66 69 6c 65 20 27 20 6e 75 6d 32 73 74 72 28 72 6f 77 73 29 20 27 20 SCII.PGM.file.'.num2str(rows).'.
32180 78 20 27 20 6e 75 6d 32 73 74 72 28 63 6f 6c 73 29 5d 29 0a 09 09 09 49 20 3d 20 66 73 63 61 6e x.'.num2str(cols)])....I.=.fscan
321a0 66 28 66 69 64 2c 20 27 25 64 27 2c 20 5b 63 6f 6c 73 20 72 6f 77 73 5d 29 27 3b 0a 09 09 65 6c f(fid,.'%d',.[cols.rows])';...el
321c0 73 65 69 66 20 6d 61 67 69 63 28 32 29 20 3d 3d 20 27 35 27 2c 0a 09 09 09 64 69 73 70 28 5b 27 seif.magic(2).==.'5',....disp(['
321e0 42 69 6e 61 72 79 20 50 47 4d 20 66 69 6c 65 20 27 20 6e 75 6d 32 73 74 72 28 72 6f 77 73 29 20 Binary.PGM.file.'.num2str(rows).
32200 27 20 78 20 27 20 6e 75 6d 32 73 74 72 28 63 6f 6c 73 29 5d 29 0a 09 09 09 69 66 20 6d 61 78 76 '.x.'.num2str(cols)])....if.maxv
32220 61 6c 20 3d 3d 20 31 2c 0a 09 09 09 09 66 6d 74 20 3d 20 27 75 6e 69 6e 74 31 27 3b 0a 09 09 09 al.==.1,.....fmt.=.'unint1';....
32240 65 6c 73 65 69 66 20 6d 61 78 76 61 6c 20 3d 3d 20 31 35 2c 0a 09 09 09 09 66 6d 74 20 3d 20 27 elseif.maxval.==.15,.....fmt.=.'
32260 75 69 6e 74 34 27 3b 0a 09 09 09 65 6c 73 65 69 66 20 6d 61 78 76 61 6c 20 3d 3d 20 32 35 35 2c uint4';....elseif.maxval.==.255,
32280 0a 09 09 09 09 66 6d 74 20 3d 20 27 75 69 6e 74 38 27 3b 0a 09 09 09 65 6c 73 65 69 66 20 6d 61 .....fmt.=.'uint8';....elseif.ma
322a0 78 76 61 6c 20 3d 3d 20 32 5e 33 32 2d 31 2c 0a 09 09 09 09 66 6d 74 20 3d 20 27 75 69 6e 74 33 xval.==.2^32-1,.....fmt.=.'uint3
322c0 32 27 3b 0a 09 09 09 65 6e 64 0a 09 09 09 49 20 3d 20 66 72 65 61 64 28 66 69 64 2c 20 5b 63 6f 2';....end....I.=.fread(fid,.[co
322e0 6c 73 20 72 6f 77 73 5d 2c 20 66 6d 74 29 27 3b 0a 09 09 65 6c 73 65 0a 09 09 09 64 69 73 70 28 ls.rows],.fmt)';...else....disp(
32300 27 4e 6f 74 20 61 20 50 47 4d 20 66 69 6c 65 27 29 3b 0a 09 09 65 6e 64 0a 09 65 6e 64 0a 09 66 'Not.a.PGM.file');...end..end..f
32320 63 6c 6f 73 65 28 66 69 64 29 3b 0a 68 69 6c 65 20 31 0a 09 09 63 20 3d 20 66 72 65 61 64 28 66 close(fid);.hile.1...c.=.fread(f
32340 69 64 2c 31 2c 27 63 68 61 72 27 29 3b 0a 09 09 69 66 20 63 20 3d 3d 20 27 23 27 2c 0a 09 09 09 id,1,'char');...if.c.==.'#',....
32360 66 67 65 74 6c 28 66 69 64 29 3b 0a 09 09 65 6c 73 65 69 66 20 7e 61 6e 79 28 63 20 3d 3d 20 77 fgetl(fid);...elseif.~any(c.==.w
32380 68 69 74 65 29 0a 09 09 09 66 73 65 65 6b 28 66 69 64 2c 20 2d 31 2c 20 27 63 6f 66 27 29 3b 09 hite)....fseek(fid,.-1,.'cof');.
323a0 25 20 75 6e 70 75 74 63 28 29 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 65 6e 64 0a 09 65 6e 64 0a %.unputc()....break;...end..end.
323c0 09 72 6f 77 73 20 3d 20 66 73 63 61 6e 66 28 66 69 64 2c 20 27 25 64 27 2c 20 31 29 3b 0a 09 77 .rows.=.fscanf(fid,.'%d',.1);..w
323e0 68 69 6c 65 20 31 0a 09 09 63 20 3d 20 66 72 65 61 64 28 66 69 64 2c 31 2c 27 63 68 61 72 27 29 hile.1...c.=.fread(fid,1,'char')
32400 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 6c 6f 61 64 70 70 6d 2e 6d 00 00 00 00 00 00 00 00 00 TOOLBOX_calib/loadppm.m.........
32420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
32440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
32460 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
32480 20 20 20 34 30 36 32 20 20 37 30 32 34 30 33 37 33 33 36 20 20 31 30 32 33 36 00 20 00 00 00 00 ...4062..7024037336..10236......
324a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
324c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
324e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
32500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
32520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
32540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
32560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
32580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
325a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
325c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
325e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
32600 25 4c 4f 41 44 50 50 4d 09 4c 6f 61 64 20 61 20 50 50 4d 20 69 6d 61 67 65 0a 25 0a 25 09 5b 52 %LOADPPM.Load.a.PPM.image.%.%.[R
32620 2c 47 2c 42 5d 20 3d 20 6c 6f 61 64 70 70 6d 28 66 69 6c 65 6e 61 6d 65 29 0a 25 0a 25 09 52 65 ,G,B].=.loadppm(filename).%.%.Re
32640 74 75 72 6e 73 20 61 20 6d 61 74 72 69 78 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 69 6d turns.a.matrix.containing.the.im
32660 61 67 65 20 6c 6f 61 64 65 64 20 66 72 6f 6d 20 74 68 65 20 50 50 4d 20 66 6f 72 6d 61 74 0a 25 age.loaded.from.the.PPM.format.%
32680 09 66 69 6c 65 20 66 69 6c 65 6e 61 6d 65 2e 20 20 48 61 6e 64 6c 65 73 20 41 53 43 49 49 20 28 .file.filename...Handles.ASCII.(
326a0 50 33 29 20 61 6e 64 20 62 69 6e 61 72 79 20 28 50 36 29 20 50 50 4d 20 66 69 6c 65 20 66 6f 72 P3).and.binary.(P6).PPM.file.for
326c0 6d 61 74 73 2e 0a 25 0a 25 09 49 66 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 20 68 61 73 20 6e 6f mats..%.%.If.the.filename.has.no
326e0 20 65 78 74 65 6e 73 69 6f 6e 2c 20 61 6e 64 20 6f 70 65 6e 20 66 61 69 6c 73 2c 20 61 20 27 2e .extension,.and.open.fails,.a.'.
32700 70 70 6d 27 20 61 6e 64 0a 25 09 27 2e 70 6e 6d 27 20 65 78 74 65 6e 73 69 6f 6e 20 77 69 6c 6c ppm'.and.%.'.pnm'.extension.will
32720 20 62 65 20 74 72 69 65 64 2e 0a 25 0a 25 20 53 45 45 20 41 4c 53 4f 3a 09 73 61 76 65 70 70 6d .be.tried..%.%.SEE.ALSO:.saveppm
32740 20 6c 6f 61 64 70 67 6d 0a 25 0a 25 09 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 50 65 74 65 72 .loadpgm.%.%.Copyright.(c).Peter
32760 20 43 6f 72 6b 65 2c 20 31 39 39 39 20 20 4d 61 63 68 69 6e 65 20 56 69 73 69 6f 6e 20 54 6f 6f .Corke,.1999..Machine.Vision.Too
32780 6c 62 6f 78 20 66 6f 72 20 4d 61 74 6c 61 62 0a 0a 0a 25 20 50 65 74 65 72 20 43 6f 72 6b 65 20 lbox.for.Matlab...%.Peter.Corke.
327a0 31 39 39 34 0a 0a 66 75 6e 63 74 69 6f 6e 20 5b 52 2c 47 2c 42 5d 20 3d 20 6c 6f 61 64 70 70 6d 1994..function.[R,G,B].=.loadppm
327c0 28 66 69 6c 65 29 0a 09 77 68 69 74 65 20 3d 20 5b 27 20 27 20 39 20 31 30 20 31 33 5d 3b 09 25 (file)..white.=.['.'.9.10.13];.%
327e0 20 73 70 61 63 65 2c 20 74 61 62 2c 20 6c 66 2c 20 63 72 0a 09 77 68 69 74 65 20 3d 20 73 65 74 .space,.tab,.lf,.cr..white.=.set
32800 73 74 72 28 77 68 69 74 65 29 3b 0a 0a 09 66 69 64 20 3d 20 66 6f 70 65 6e 28 66 69 6c 65 2c 20 str(white);...fid.=.fopen(file,.
32820 27 72 27 29 3b 0a 09 69 66 20 66 69 64 20 3c 20 30 2c 0a 09 09 66 69 64 20 3d 20 66 6f 70 65 6e 'r');..if.fid.<.0,...fid.=.fopen
32840 28 5b 66 69 6c 65 20 27 2e 70 70 6d 27 5d 2c 20 27 72 27 29 3b 0a 09 65 6e 64 0a 09 69 66 20 66 ([file.'.ppm'],.'r');..end..if.f
32860 69 64 20 3c 20 30 2c 0a 09 09 66 69 64 20 3d 20 66 6f 70 65 6e 28 5b 66 69 6c 65 20 27 2e 70 6e id.<.0,...fid.=.fopen([file.'.pn
32880 6d 27 5d 2c 20 27 72 27 29 3b 0a 09 65 6e 64 0a 09 69 66 20 66 69 64 20 3c 20 30 2c 0a 09 09 65 m'],.'r');..end..if.fid.<.0,...e
328a0 72 72 6f 72 28 27 43 6f 75 6c 64 6e 27 27 74 20 6f 70 65 6e 20 66 69 6c 65 27 29 3b 0a 09 65 6e rror('Couldn''t.open.file');..en
328c0 64 0a 09 09 0a 09 6d 61 67 69 63 20 3d 20 66 72 65 61 64 28 66 69 64 2c 20 32 2c 20 27 63 68 61 d.....magic.=.fread(fid,.2,.'cha
328e0 72 27 29 3b 0a 09 77 68 69 6c 65 20 31 0a 09 09 63 20 3d 20 66 72 65 61 64 28 66 69 64 2c 31 2c r');..while.1...c.=.fread(fid,1,
32900 27 63 68 61 72 27 29 3b 0a 09 09 69 66 20 63 20 3d 3d 20 27 23 27 2c 0a 09 09 09 66 67 65 74 6c 'char');...if.c.==.'#',....fgetl
32920 28 66 69 64 29 3b 0a 09 09 65 6c 73 65 69 66 20 7e 61 6e 79 28 63 20 3d 3d 20 77 68 69 74 65 29 (fid);...elseif.~any(c.==.white)
32940 0a 09 09 09 66 73 65 65 6b 28 66 69 64 2c 20 2d 31 2c 20 27 63 6f 66 27 29 3b 09 25 20 75 6e 70 ....fseek(fid,.-1,.'cof');.%.unp
32960 75 74 63 28 29 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 65 6e 64 0a 09 65 6e 64 0a 09 63 6f 6c 73 utc()....break;...end..end..cols
32980 20 3d 20 66 73 63 61 6e 66 28 66 69 64 2c 20 27 25 64 27 2c 20 31 29 3b 0a 09 77 68 69 6c 65 20 .=.fscanf(fid,.'%d',.1);..while.
329a0 31 0a 09 09 63 20 3d 20 66 72 65 61 64 28 66 69 64 2c 31 2c 27 63 68 61 72 27 29 3b 0a 09 09 69 1...c.=.fread(fid,1,'char');...i
329c0 66 20 63 20 3d 3d 20 27 23 27 2c 0a 09 09 09 66 67 65 74 6c 28 66 69 64 29 3b 0a 09 09 65 6c 73 f.c.==.'#',....fgetl(fid);...els
329e0 65 69 66 20 7e 61 6e 79 28 63 20 3d 3d 20 77 68 69 74 65 29 0a 09 09 09 66 73 65 65 6b 28 66 69 eif.~any(c.==.white)....fseek(fi
32a00 64 2c 20 2d 31 2c 20 27 63 6f 66 27 29 3b 09 25 20 75 6e 70 75 74 63 28 29 0a 09 09 09 62 72 65 d,.-1,.'cof');.%.unputc()....bre
32a20 61 6b 3b 0a 09 09 65 6e 64 0a 09 65 6e 64 0a 09 72 6f 77 73 20 3d 20 66 73 63 61 6e 66 28 66 69 ak;...end..end..rows.=.fscanf(fi
32a40 64 2c 20 27 25 64 27 2c 20 31 29 3b 0a 09 77 68 69 6c 65 20 31 0a 09 09 63 20 3d 20 66 72 65 61 d,.'%d',.1);..while.1...c.=.frea
32a60 64 28 66 69 64 2c 31 2c 27 63 68 61 72 27 29 3b 0a 09 09 69 66 20 63 20 3d 3d 20 27 23 27 2c 0a d(fid,1,'char');...if.c.==.'#',.
32a80 09 09 09 66 67 65 74 6c 28 66 69 64 29 3b 0a 09 09 65 6c 73 65 69 66 20 7e 61 6e 79 28 63 20 3d ...fgetl(fid);...elseif.~any(c.=
32aa0 3d 20 77 68 69 74 65 29 0a 09 09 09 66 73 65 65 6b 28 66 69 64 2c 20 2d 31 2c 20 27 63 6f 66 27 =.white)....fseek(fid,.-1,.'cof'
32ac0 29 3b 09 25 20 75 6e 70 75 74 63 28 29 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 65 6e 64 0a 09 65 );.%.unputc()....break;...end..e
32ae0 6e 64 0a 09 6d 61 78 76 61 6c 20 3d 20 66 73 63 61 6e 66 28 66 69 64 2c 20 27 25 64 27 2c 20 31 nd..maxval.=.fscanf(fid,.'%d',.1
32b00 29 3b 0a 09 77 68 69 6c 65 20 31 0a 09 09 63 20 3d 20 66 72 65 61 64 28 66 69 64 2c 31 2c 27 63 );..while.1...c.=.fread(fid,1,'c
32b20 68 61 72 27 29 3b 0a 09 09 69 66 20 63 20 3d 3d 20 27 23 27 2c 0a 09 09 09 66 67 65 74 6c 28 66 har');...if.c.==.'#',....fgetl(f
32b40 69 64 29 3b 0a 09 09 65 6c 73 65 69 66 20 7e 61 6e 79 28 63 20 3d 3d 20 77 68 69 74 65 29 0a 09 id);...elseif.~any(c.==.white)..
32b60 09 09 66 73 65 65 6b 28 66 69 64 2c 20 2d 31 2c 20 27 63 6f 66 27 29 3b 09 25 20 75 6e 70 75 74 ..fseek(fid,.-1,.'cof');.%.unput
32b80 63 28 29 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 65 6e 64 0a 09 65 6e 64 0a 09 69 66 20 6d 61 67 c()....break;...end..end..if.mag
32ba0 69 63 28 31 29 20 3d 3d 20 27 50 27 2c 0a 09 09 69 66 20 6d 61 67 69 63 28 32 29 20 3d 3d 20 27 ic(1).==.'P',...if.magic(2).==.'
32bc0 33 27 2c 0a 09 09 09 64 69 73 70 28 5b 27 41 53 43 49 49 20 50 50 4d 20 66 69 6c 65 20 27 20 6e 3',....disp(['ASCII.PPM.file.'.n
32be0 75 6d 32 73 74 72 28 72 6f 77 73 29 20 27 20 78 20 27 20 6e 75 6d 32 73 74 72 28 63 6f 6c 73 29 um2str(rows).'.x.'.num2str(cols)
32c00 5d 29 0a 09 09 09 49 20 3d 20 66 73 63 61 6e 66 28 66 69 64 2c 20 27 25 64 27 2c 20 5b 63 6f 6c ])....I.=.fscanf(fid,.'%d',.[col
32c20 73 2a 33 20 72 6f 77 73 5d 29 3b 0a 09 09 65 6c 73 65 69 66 20 6d 61 67 69 63 28 32 29 20 3d 3d s*3.rows]);...elseif.magic(2).==
32c40 20 27 36 27 2c 0a 09 09 09 64 69 73 70 28 5b 27 42 69 6e 61 72 79 20 50 50 4d 20 66 69 6c 65 20 .'6',....disp(['Binary.PPM.file.
32c60 27 20 6e 75 6d 32 73 74 72 28 72 6f 77 73 29 20 27 20 78 20 27 20 6e 75 6d 32 73 74 72 28 63 6f '.num2str(rows).'.x.'.num2str(co
32c80 6c 73 29 5d 29 0a 09 09 09 69 66 20 6d 61 78 76 61 6c 20 3d 3d 20 31 2c 0a 09 09 09 09 66 6d 74 ls)])....if.maxval.==.1,.....fmt
32ca0 20 3d 20 27 75 6e 69 6e 74 31 27 3b 0a 09 09 09 65 6c 73 65 69 66 20 6d 61 78 76 61 6c 20 3d 3d .=.'unint1';....elseif.maxval.==
32cc0 20 31 35 2c 0a 09 09 09 09 66 6d 74 20 3d 20 27 75 69 6e 74 34 27 3b 0a 09 09 09 65 6c 73 65 69 .15,.....fmt.=.'uint4';....elsei
32ce0 66 20 6d 61 78 76 61 6c 20 3d 3d 20 32 35 35 2c 0a 09 09 09 09 66 6d 74 20 3d 20 27 75 69 6e 74 f.maxval.==.255,.....fmt.=.'uint
32d00 38 27 3b 0a 09 09 09 65 6c 73 65 69 66 20 6d 61 78 76 61 6c 20 3d 3d 20 32 5e 33 32 2d 31 2c 0a 8';....elseif.maxval.==.2^32-1,.
32d20 09 09 09 09 66 6d 74 20 3d 20 27 75 69 6e 74 33 32 27 3b 0a 09 09 09 65 6e 64 0a 09 09 09 49 20 ....fmt.=.'uint32';....end....I.
32d40 3d 20 66 72 65 61 64 28 66 69 64 2c 20 5b 63 6f 6c 73 2a 33 20 72 6f 77 73 5d 2c 20 66 6d 74 29 =.fread(fid,.[cols*3.rows],.fmt)
32d60 3b 0a 09 09 65 6c 73 65 0a 09 09 09 64 69 73 70 28 27 4e 6f 74 20 61 20 50 50 4d 20 66 69 6c 65 ;...else....disp('Not.a.PPM.file
32d80 27 29 3b 0a 09 09 65 6e 64 0a 09 65 6e 64 0a 09 25 0a 09 25 20 6e 6f 77 20 74 68 65 20 6d 61 74 ');...end..end..%..%.now.the.mat
32da0 72 69 78 20 68 61 73 20 69 6e 74 65 72 6c 65 61 76 65 64 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 52 rix.has.interleaved.columns.of.R
32dc0 2c 20 47 2c 20 42 0a 09 25 0a 09 49 20 3d 20 49 27 3b 0a 09 73 69 7a 65 28 49 29 0a 09 52 20 3d ,.G,.B..%..I.=.I';..size(I)..R.=
32de0 20 49 28 3a 2c 31 3a 33 3a 28 63 6f 6c 73 2a 33 29 29 3b 0a 09 47 20 3d 20 49 28 3a 2c 32 3a 33 .I(:,1:3:(cols*3));..G.=.I(:,2:3
32e00 3a 28 63 6f 6c 73 2a 33 29 29 3b 0a 09 42 20 3d 20 49 28 3a 2c 33 3a 33 3a 28 63 6f 6c 73 2a 33 :(cols*3));..B.=.I(:,3:3:(cols*3
32e20 29 29 3b 0a 09 66 63 6c 6f 73 65 28 66 69 64 29 3b 0a 27 20 5d 3b 27 5d 29 3b 0a 20 20 20 0a 09 ));..fclose(fid);.'.];']);......
32e40 65 6e 64 3b 0a 0a 65 6e 64 3b 0a 0a 0a 0a 0a 69 66 20 30 2c 0a 0a 25 20 52 65 73 74 6f 72 69 6e end;..end;.....if.0,..%.Restorin
32e60 67 20 74 68 65 20 66 65 61 74 75 72 65 20 6c 6f 63 61 74 69 6f 6e 73 3a 0a 0a 66 6f 72 20 6b 6b g.the.feature.locations:..for.kk
32e80 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 78 5f 27 20 6e 75 .=.1:n_ima,........eval(['x_'.nu
32ea0 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 78 5f 73 61 76 65 5f 27 20 6e 75 6d 32 73 74 72 28 6b m2str(kk).'.=.x_save_'.num2str(k
32ec0 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c k).';']);.....end;..fprintf(1,'\
32ee0 6e 46 69 6e 61 6c 20 72 75 6e 20 28 77 69 74 68 20 74 68 65 20 72 65 61 6c 20 64 61 74 61 29 5c nFinal.run.(with.the.real.data)\
32f00 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 20 20 27 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d n');.fprintf(1,..'--------------
32f20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 27 29 3b 0a 0a 61 63 74 69 76 65 5f 69 6d ----------------\n');..active_im
32f40 61 67 65 73 20 3d 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 5f 73 61 76 65 3b 0a 69 6e 64 5f 61 ages.=.active_images_save;.ind_a
32f60 63 74 69 76 65 20 3d 20 69 6e 64 5f 61 63 74 69 76 65 5f 73 61 76 65 3b 0a 0a 67 6f 5f 63 61 6c ctive.=.ind_active_save;..go_cal
32f80 69 62 5f 6f 70 74 69 6d 3b 0a 20 20 20 0a 66 63 5f 6c 69 73 74 20 3d 20 5b 66 63 5f 6c 69 73 74 ib_optim;.....fc_list.=.[fc_list
32fa0 20 66 63 5d 3b 0a 63 63 5f 6c 69 73 74 20 3d 20 5b 63 63 5f 6c 69 73 74 20 63 63 5d 3b 0a 6b 63 .fc];.cc_list.=.[cc_list.cc];.kc
32fc0 5f 6c 69 73 74 20 3d 20 5b 6b 63 5f 6c 69 73 74 20 6b 63 5d 3b 0a 61 63 74 69 76 65 5f 69 6d 61 _list.=.[kc_list.kc];.active_ima
32fe0 67 65 73 5f 6c 69 73 74 20 3d 20 5b 61 63 74 69 76 65 5f 69 6d 61 67 65 73 5f 6c 69 73 74 20 61 ges_list.=.[active_images_list.a
33000 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 73 61 76 65 69 6e 72 2e 6d 00 00 00 00 00 00 00 00 00 TOOLBOX_calib/saveinr.m.........
33020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33060 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
33080 20 20 20 31 36 36 35 20 20 37 30 32 34 30 33 37 33 35 34 20 20 31 30 32 35 37 00 20 00 00 00 00 ...1665..7024037354..10257......
330a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
330c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
330e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
331a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
331c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
331e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33200 25 53 41 56 45 49 4e 52 09 57 72 69 74 65 20 61 6e 20 49 4e 52 49 4d 41 47 45 20 66 6f 72 6d 61 %SAVEINR.Write.an.INRIMAGE.forma
33220 74 20 66 69 6c 65 0a 25 0a 25 09 53 41 56 45 49 4e 52 28 66 69 6c 65 6e 61 6d 65 2c 20 69 6d 29 t.file.%.%.SAVEINR(filename,.im)
33240 0a 25 0a 25 09 53 61 76 65 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 69 6d 61 67 65 20 61 .%.%.Saves.the.specified.image.a
33260 72 72 61 79 20 69 6e 20 61 20 49 4e 52 49 41 20 69 6d 61 67 65 20 66 6f 72 6d 61 74 20 66 69 6c rray.in.a.INRIA.image.format.fil
33280 65 2e 0a 25 0a 25 20 53 45 45 20 41 4c 53 4f 3a 09 6c 6f 61 64 69 6e 72 0a 25 0a 25 09 43 6f 70 e..%.%.SEE.ALSO:.loadinr.%.%.Cop
332a0 79 72 69 67 68 74 20 28 63 29 20 50 65 74 65 72 20 43 6f 72 6b 65 2c 20 31 39 39 39 20 20 4d 61 yright.(c).Peter.Corke,.1999..Ma
332c0 63 68 69 6e 65 20 56 69 73 69 6f 6e 20 54 6f 6f 6c 62 6f 78 20 66 6f 72 20 4d 61 74 6c 61 62 0a chine.Vision.Toolbox.for.Matlab.
332e0 0a 25 20 50 65 74 65 72 20 43 6f 72 6b 65 20 31 39 39 36 0a 0a 66 75 6e 63 74 69 6f 6e 20 73 61 .%.Peter.Corke.1996..function.sa
33300 76 65 69 6e 72 28 66 6e 61 6d 65 2c 20 69 6d 29 0a 0a 09 66 69 64 20 3d 20 66 6f 70 65 6e 28 66 veinr(fname,.im)...fid.=.fopen(f
33320 6e 61 6d 65 2c 20 27 77 27 29 3b 0a 09 5b 72 2c 63 5d 20 3d 20 73 69 7a 65 28 69 6d 27 29 3b 0a name,.'w');..[r,c].=.size(im');.
33340 0a 09 25 20 62 75 69 6c 64 20 74 68 65 20 68 65 61 64 65 72 0a 09 68 64 72 20 3d 20 5b 5d 3b 0a ..%.build.the.header..hdr.=.[];.
33360 09 73 20 3d 20 73 70 72 69 6e 74 66 28 27 23 49 4e 52 49 4d 41 47 45 2d 34 23 7b 5c 6e 27 29 3b .s.=.sprintf('#INRIMAGE-4#{\n');
33380 0a 09 68 64 72 20 3d 20 5b 68 64 72 20 73 5d 3b 0a 09 73 20 3d 20 73 70 72 69 6e 74 66 28 27 58 ..hdr.=.[hdr.s];..s.=.sprintf('X
333a0 44 49 4d 3d 25 64 5c 6e 27 2c 63 29 3b 0a 09 68 64 72 20 3d 20 5b 68 64 72 20 73 5d 3b 0a 09 73 DIM=%d\n',c);..hdr.=.[hdr.s];..s
333c0 20 3d 20 73 70 72 69 6e 74 66 28 27 59 44 49 4d 3d 25 64 5c 6e 27 2c 72 29 3b 0a 09 68 64 72 20 .=.sprintf('YDIM=%d\n',r);..hdr.
333e0 3d 20 5b 68 64 72 20 73 5d 3b 0a 09 73 20 3d 20 73 70 72 69 6e 74 66 28 27 5a 44 49 4d 3d 31 5c =.[hdr.s];..s.=.sprintf('ZDIM=1\
33400 6e 27 29 3b 0a 09 68 64 72 20 3d 20 5b 68 64 72 20 73 5d 3b 0a 09 73 20 3d 20 73 70 72 69 6e 74 n');..hdr.=.[hdr.s];..s.=.sprint
33420 66 28 27 56 44 49 4d 3d 31 5c 6e 27 29 3b 0a 09 68 64 72 20 3d 20 5b 68 64 72 20 73 5d 3b 0a 09 f('VDIM=1\n');..hdr.=.[hdr.s];..
33440 73 20 3d 20 73 70 72 69 6e 74 66 28 27 54 59 50 45 3d 66 6c 6f 61 74 5c 6e 27 29 3b 0a 09 68 64 s.=.sprintf('TYPE=float\n');..hd
33460 72 20 3d 20 5b 68 64 72 20 73 5d 3b 0a 09 73 20 3d 20 73 70 72 69 6e 74 66 28 27 50 49 58 53 49 r.=.[hdr.s];..s.=.sprintf('PIXSI
33480 5a 45 3d 33 32 5c 6e 27 29 3b 0a 09 68 64 72 20 3d 20 5b 68 64 72 20 73 5d 3b 0a 09 73 20 3d 20 ZE=32\n');..hdr.=.[hdr.s];..s.=.
334a0 73 70 72 69 6e 74 66 28 27 53 43 41 4c 45 3d 32 2a 2a 30 5c 6e 27 29 3b 0a 09 68 64 72 20 3d 20 sprintf('SCALE=2**0\n');..hdr.=.
334c0 5b 68 64 72 20 73 5d 3b 0a 09 73 20 3d 20 73 70 72 69 6e 74 66 28 27 43 50 55 3d 73 75 6e 5c 6e [hdr.s];..s.=.sprintf('CPU=sun\n
334e0 23 27 29 3b 0a 09 68 64 72 20 3d 20 5b 68 64 72 20 73 5d 3b 0a 0a 09 25 20 6d 61 6b 65 20 69 74 #');..hdr.=.[hdr.s];...%.make.it
33500 20 32 35 36 20 62 79 74 65 73 20 6c 6f 6e 67 20 61 6e 64 20 77 72 69 74 65 20 69 74 0a 09 68 64 .256.bytes.long.and.write.it..hd
33520 72 32 35 36 20 3d 20 7a 65 72 6f 73 28 31 2c 32 35 36 29 3b 0a 09 68 64 72 32 35 36 28 31 3a 6c r256.=.zeros(1,256);..hdr256(1:l
33540 65 6e 67 74 68 28 68 64 72 29 29 20 3d 20 68 64 72 3b 0a 09 66 77 72 69 74 65 28 66 69 64 2c 20 ength(hdr)).=.hdr;..fwrite(fid,.
33560 68 64 72 32 35 36 2c 20 27 75 63 68 61 72 27 29 3b 0a 0a 09 25 20 6e 6f 77 20 74 68 65 20 62 69 hdr256,.'uchar');...%.now.the.bi
33580 6e 61 72 79 20 64 61 74 61 0a 09 66 77 72 69 74 65 28 66 69 64 2c 20 69 6d 27 2c 20 27 66 6c 6f nary.data..fwrite(fid,.im',.'flo
335a0 61 74 33 32 27 29 3b 0a 09 66 63 6c 6f 73 65 28 66 69 64 29 0a 63 68 61 72 27 29 3b 0a 09 09 69 at32');..fclose(fid).char');...i
335c0 66 20 63 20 3d 3d 20 27 23 27 2c 0a 09 09 09 66 67 65 74 6c 28 66 69 64 29 3b 0a 09 09 65 6c 73 f.c.==.'#',....fgetl(fid);...els
335e0 65 69 66 20 7e 61 6e 79 28 63 20 3d 3d 20 77 68 69 74 65 29 0a 09 09 09 66 73 65 65 6b 28 66 69 eif.~any(c.==.white)....fseek(fi
33600 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 73 61 76 65 70 67 6d 2e 6d 00 00 00 00 00 00 00 00 00 TOOLBOX_calib/savepgm.m.........
33620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33660 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
33680 20 20 20 20 36 37 36 20 20 37 30 32 34 30 33 37 33 35 35 20 20 31 30 32 33 34 00 20 00 00 00 00 ....676..7024037355..10234......
336a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
336c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
336e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
337a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
337c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
337e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33800 25 53 41 56 45 50 47 4d 09 57 72 69 74 65 20 61 20 50 47 4d 20 66 6f 72 6d 61 74 20 66 69 6c 65 %SAVEPGM.Write.a.PGM.format.file
33820 0a 25 0a 25 09 53 41 56 45 50 47 4d 28 66 69 6c 65 6e 61 6d 65 2c 20 69 6d 29 0a 25 0a 25 09 53 .%.%.SAVEPGM(filename,.im).%.%.S
33840 61 76 65 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 69 6d 61 67 65 20 61 72 72 61 79 20 69 aves.the.specified.image.array.i
33860 6e 20 61 20 62 69 6e 61 72 79 20 28 50 35 29 20 66 6f 72 6d 61 74 20 50 47 4d 20 69 6d 61 67 65 n.a.binary.(P5).format.PGM.image
33880 20 66 69 6c 65 2e 0a 25 20 0a 25 20 53 45 45 20 41 4c 53 4f 3a 09 6c 6f 61 64 70 67 6d 0a 25 0a .file..%..%.SEE.ALSO:.loadpgm.%.
338a0 25 09 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 50 65 74 65 72 20 43 6f 72 6b 65 2c 20 31 39 39 %.Copyright.(c).Peter.Corke,.199
338c0 39 20 20 4d 61 63 68 69 6e 65 20 56 69 73 69 6f 6e 20 54 6f 6f 6c 62 6f 78 20 66 6f 72 20 4d 61 9..Machine.Vision.Toolbox.for.Ma
338e0 74 6c 61 62 0a 0a 0a 25 20 50 65 74 65 72 20 43 6f 72 6b 65 20 31 39 39 34 0a 0a 66 75 6e 63 74 tlab...%.Peter.Corke.1994..funct
33900 69 6f 6e 20 73 61 76 65 70 67 6d 28 66 6e 61 6d 65 2c 20 69 6d 29 0a 0a 09 66 69 64 20 3d 20 66 ion.savepgm(fname,.im)...fid.=.f
33920 6f 70 65 6e 28 66 6e 61 6d 65 2c 20 27 77 27 29 3b 0a 09 5b 72 2c 63 5d 20 3d 20 73 69 7a 65 28 open(fname,.'w');..[r,c].=.size(
33940 69 6d 27 29 3b 0a 09 66 70 72 69 6e 74 66 28 66 69 64 2c 20 27 50 35 5c 6e 27 29 3b 0a 09 66 70 im');..fprintf(fid,.'P5\n');..fp
33960 72 69 6e 74 66 28 66 69 64 2c 20 27 25 64 20 25 64 5c 6e 27 2c 20 72 2c 20 63 29 3b 0a 09 66 70 rintf(fid,.'%d.%d\n',.r,.c);..fp
33980 72 69 6e 74 66 28 66 69 64 2c 20 27 32 35 35 5c 6e 27 29 3b 0a 09 66 77 72 69 74 65 28 66 69 64 rintf(fid,.'255\n');..fwrite(fid
339a0 2c 20 69 6d 27 2c 20 27 75 63 68 61 72 27 29 3b 0a 09 66 63 6c 6f 73 65 28 66 69 64 29 0a 09 73 ,.im',.'uchar');..fclose(fid)..s
339c0 20 3d 20 73 70 72 69 6e 74 66 28 27 59 44 49 4d 3d 25 64 5c 6e 27 2c 72 29 3b 0a 09 68 64 72 20 .=.sprintf('YDIM=%d\n',r);..hdr.
339e0 3d 20 5b 68 64 72 20 73 5d 3b 0a 09 73 20 3d 20 73 70 72 69 6e 74 66 28 27 5a 44 49 4d 3d 31 5c =.[hdr.s];..s.=.sprintf('ZDIM=1\
33a00 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 73 61 76 65 70 70 6d 2e 6d 00 00 00 00 00 00 00 00 00 TOOLBOX_calib/saveppm.m.........
33a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33a60 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
33a80 20 20 20 31 30 30 32 20 20 37 30 32 34 30 33 37 33 35 35 20 20 31 30 32 34 35 00 20 00 00 00 00 ...1002..7024037355..10245......
33aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33c00 25 53 41 56 45 50 50 4d 09 57 72 69 74 65 20 61 20 50 50 4d 20 66 6f 72 6d 61 74 20 66 69 6c 65 %SAVEPPM.Write.a.PPM.format.file
33c20 0a 25 0a 25 09 53 41 56 45 50 50 4d 28 66 69 6c 65 6e 61 6d 65 2c 20 72 2c 20 67 2c 20 62 29 0a .%.%.SAVEPPM(filename,.r,.g,.b).
33c40 25 0a 25 09 53 61 76 65 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 72 65 64 2c 20 67 72 65 %.%.Saves.the.specified.red,.gre
33c60 65 6e 20 61 6e 64 20 62 6c 75 65 20 70 6c 61 6e 65 73 20 69 6e 20 61 20 62 69 6e 61 72 79 20 28 en.and.blue.planes.in.a.binary.(
33c80 50 36 29 0a 25 09 66 6f 72 6d 61 74 20 50 50 4d 20 69 6d 61 67 65 20 66 69 6c 65 2e 0a 25 0a 25 P6).%.format.PPM.image.file..%.%
33ca0 20 53 45 45 20 41 4c 53 4f 3a 09 6c 6f 61 64 70 70 6d 0a 25 0a 25 09 43 6f 70 79 72 69 67 68 74 .SEE.ALSO:.loadppm.%.%.Copyright
33cc0 20 28 63 29 20 50 65 74 65 72 20 43 6f 72 6b 65 2c 20 31 39 39 39 20 20 4d 61 63 68 69 6e 65 20 .(c).Peter.Corke,.1999..Machine.
33ce0 56 69 73 69 6f 6e 20 54 6f 6f 6c 62 6f 78 20 66 6f 72 20 4d 61 74 6c 61 62 0a 0a 0a 25 20 50 65 Vision.Toolbox.for.Matlab...%.Pe
33d00 74 65 72 20 43 6f 72 6b 65 20 31 39 39 34 0a 0a 66 75 6e 63 74 69 6f 6e 20 73 61 76 65 70 70 6d ter.Corke.1994..function.saveppm
33d20 28 66 6e 61 6d 65 2c 20 52 2c 20 47 2c 20 42 29 0a 0a 09 66 69 64 20 3d 20 66 6f 70 65 6e 28 66 (fname,.R,.G,.B)...fid.=.fopen(f
33d40 6e 61 6d 65 2c 20 27 77 27 29 3b 0a 09 5b 72 2c 63 5d 20 3d 20 73 69 7a 65 28 52 27 29 3b 0a 09 name,.'w');..[r,c].=.size(R');..
33d60 66 70 72 69 6e 74 66 28 66 69 64 2c 20 27 50 36 5c 6e 27 29 3b 0a 09 66 70 72 69 6e 74 66 28 66 fprintf(fid,.'P6\n');..fprintf(f
33d80 69 64 2c 20 27 25 64 20 25 64 5c 6e 27 2c 20 72 2c 20 63 29 3b 0a 09 66 70 72 69 6e 74 66 28 66 id,.'%d.%d\n',.r,.c);..fprintf(f
33da0 69 64 2c 20 27 32 35 35 5c 6e 27 29 3b 0a 09 69 6d 20 3d 20 5b 52 28 3a 29 20 47 28 3a 29 20 42 id,.'255\n');..im.=.[R(:).G(:).B
33dc0 28 3a 29 5d 3b 0a 09 69 6d 20 3d 20 72 65 73 68 61 70 65 28 63 2c 72 29 3b 0a 09 66 77 72 69 74 (:)];..im.=.reshape(c,r);..fwrit
33de0 65 28 66 69 64 2c 20 69 6d 2c 20 27 75 63 68 61 72 27 29 3b 0a 09 66 63 6c 6f 73 65 28 66 69 64 e(fid,.im,.'uchar');..fclose(fid
33e00 29 0a 29 3b 0a 09 68 64 72 20 3d 20 5b 68 64 72 20 73 5d 3b 0a 09 73 20 3d 20 73 70 72 69 6e 74 ).);..hdr.=.[hdr.s];..s.=.sprint
33e20 66 28 27 56 44 49 4d 3d 31 5c 6e 27 29 3b 0a 09 68 64 72 20 3d 20 5b 68 64 72 20 73 5d 3b 0a 09 f('VDIM=1\n');..hdr.=.[hdr.s];..
33e40 73 20 3d 20 73 70 72 69 6e 74 66 28 27 54 59 50 45 3d 66 6c 6f 61 74 5c 6e 27 29 3b 0a 09 68 64 s.=.sprintf('TYPE=float\n');..hd
33e60 72 20 3d 20 5b 68 64 72 20 73 5d 3b 0a 09 73 20 3d 20 73 70 72 69 6e 74 66 28 27 50 49 58 53 49 r.=.[hdr.s];..s.=.sprintf('PIXSI
33e80 5a 45 3d 33 32 5c 6e 27 29 3b 0a 09 68 64 72 20 3d 20 5b 68 64 72 20 73 5d 3b 0a 09 73 20 3d 20 ZE=32\n');..hdr.=.[hdr.s];..s.=.
33ea0 73 70 72 69 6e 74 66 28 27 53 43 41 4c 45 3d 32 2a 2a 30 5c 6e 27 29 3b 0a 09 68 64 72 20 3d 20 sprintf('SCALE=2**0\n');..hdr.=.
33ec0 5b 68 64 72 20 73 5d 3b 0a 09 73 20 3d 20 73 70 72 69 6e 74 66 28 27 43 50 55 3d 73 75 6e 5c 6e [hdr.s];..s.=.sprintf('CPU=sun\n
33ee0 23 27 29 3b 0a 09 68 64 72 20 3d 20 5b 68 64 72 20 73 5d 3b 0a 0a 09 25 20 6d 61 6b 65 20 69 74 #');..hdr.=.[hdr.s];...%.make.it
33f00 20 32 35 36 20 62 79 74 65 73 20 6c 6f 6e 67 20 61 6e 64 20 77 72 69 74 65 20 69 74 0a 09 68 64 .256.bytes.long.and.write.it..hd
33f20 72 32 35 36 20 3d 20 7a 65 72 6f 73 28 31 2c 32 35 36 29 3b 0a 09 68 64 72 32 35 36 28 31 3a 6c r256.=.zeros(1,256);..hdr256(1:l
33f40 65 6e 67 74 68 28 68 64 72 29 29 20 3d 20 68 64 72 3b 0a 09 66 77 72 69 74 65 28 66 69 64 2c 20 ength(hdr)).=.hdr;..fwrite(fid,.
33f60 68 64 72 32 35 36 2c 20 27 75 63 68 61 72 27 29 3b 0a 0a 09 25 20 6e 6f 77 20 74 68 65 20 62 69 hdr256,.'uchar');...%.now.the.bi
33f80 6e 61 72 79 20 64 61 74 61 0a 09 66 77 72 69 74 65 28 66 69 64 2c 20 69 6d 27 2c 20 27 66 6c 6f nary.data..fwrite(fid,.im',.'flo
33fa0 61 74 33 32 27 29 3b 0a 09 66 63 6c 6f 73 65 28 66 69 64 29 0a 63 68 61 72 27 29 3b 0a 09 09 69 at32');..fclose(fid).char');...i
33fc0 66 20 63 20 3d 3d 20 27 23 27 2c 0a 09 09 09 66 67 65 74 6c 28 66 69 64 29 3b 0a 09 09 65 6c 73 f.c.==.'#',....fgetl(fid);...els
33fe0 65 69 66 20 7e 61 6e 79 28 63 20 3d 3d 20 77 68 69 74 65 29 0a 09 09 09 66 73 65 65 6b 28 66 69 eif.~any(c.==.white)....fseek(fi
34000 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 69 6e 69 74 5f 69 6e 74 72 69 6e 73 69 63 5f 70 61 72 TOOLBOX_calib/init_intrinsic_par
34020 61 6d 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 am.m............................
34040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
34060 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
34080 20 20 31 30 30 30 32 20 20 37 30 32 34 30 33 37 33 33 34 20 20 31 33 30 31 34 00 20 00 00 00 00 ..10002..7024037334..13014......
340a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
340c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
340e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
34100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
34120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
34140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
34160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
34180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
341a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
341c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
341e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
34200 25 69 6e 69 74 5f 69 6e 74 72 69 6e 73 69 63 5f 70 61 72 61 6d 0a 25 0a 25 49 6e 69 74 69 61 6c %init_intrinsic_param.%.%Initial
34220 69 7a 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 ization.of.the.intrinsic.paramet
34240 65 72 73 2e 0a 25 52 75 6e 73 20 61 73 20 61 20 73 63 72 69 70 74 2e 0a 25 0a 25 49 4e 50 55 54 ers..%Runs.as.a.script..%.%INPUT
34260 3a 20 78 5f 31 2c 78 5f 32 2c 78 5f 33 2c 2e 2e 2e 3a 20 46 65 61 74 75 72 65 20 6c 6f 63 61 74 :.x_1,x_2,x_3,...:.Feature.locat
34280 69 6f 6e 73 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 73 0a 25 20 20 20 20 20 20 20 58 5f 31 2c 58 ions.on.the.images.%.......X_1,X
342a0 5f 32 2c 58 5f 33 2c 2e 2e 2e 3a 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 67 72 69 64 20 63 _2,X_3,...:.Corresponding.grid.c
342c0 6f 6f 72 64 69 6e 61 74 65 73 0a 25 0a 25 4f 55 54 50 55 54 3a 20 66 63 3a 20 43 61 6d 65 72 61 oordinates.%.%OUTPUT:.fc:.Camera
342e0 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 0a 25 20 20 20 20 20 20 20 20 63 63 3a 20 50 72 69 6e 63 .focal.length.%........cc:.Princ
34300 69 70 61 6c 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 0a 25 09 20 20 20 20 20 20 6b ipal.point.coordinates.%.......k
34320 63 3a 20 44 69 73 74 6f 72 74 69 6f 6e 20 63 6f 65 66 66 69 63 69 65 6e 74 73 0a 25 20 20 20 20 c:.Distortion.coefficients.%....
34340 20 20 20 20 4b 4b 3a 20 54 68 65 20 63 61 6d 65 72 61 20 6d 61 74 72 69 78 20 28 63 6f 6e 74 61 ....KK:.The.camera.matrix.(conta
34360 69 6e 69 6e 67 20 66 63 20 61 6e 64 20 63 63 29 0a 25 0a 25 4d 65 74 68 6f 64 3a 20 43 6f 6d 70 ining.fc.and.cc).%.%Method:.Comp
34380 75 74 65 73 20 74 68 65 20 70 6c 61 6e 61 72 20 68 6f 6d 6f 67 72 61 70 68 69 65 73 20 48 5f 31 utes.the.planar.homographies.H_1
343a0 2c 20 48 5f 32 2c 20 48 5f 33 2c 20 2e 2e 2e 20 61 6e 64 20 63 6f 6d 70 75 74 65 73 0a 25 20 20 ,.H_2,.H_3,.....and.computes.%..
343c0 20 20 20 20 20 20 74 68 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 20 66 63 20 66 72 6f 6d 20 6f ......the.focal.length.fc.from.o
343e0 72 74 68 6f 67 6f 6e 61 6c 20 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 73 20 63 6f 6e 73 74 rthogonal.vanishing.points.const
34400 72 61 69 6e 74 2e 0a 25 20 20 20 20 20 20 20 20 54 68 65 20 70 72 69 6e 63 69 70 61 6c 20 70 6f raint..%........The.principal.po
34420 69 6e 74 20 63 63 20 69 73 20 61 73 73 75 6d 65 64 20 61 74 20 74 68 65 20 63 65 6e 74 65 72 20 int.cc.is.assumed.at.the.center.
34440 6f 66 20 74 68 65 20 69 6d 61 67 65 2e 0a 25 20 20 20 20 20 20 20 20 41 73 73 75 6d 65 73 20 6e of.the.image..%........Assumes.n
34460 6f 20 69 6d 61 67 65 20 64 69 73 74 6f 72 74 69 6f 6e 20 28 6b 63 20 3d 20 5b 30 3b 30 3b 30 3b o.image.distortion.(kc.=.[0;0;0;
34480 30 5d 29 0a 25 0a 25 4e 6f 74 65 3a 20 54 68 65 20 72 6f 77 20 76 65 63 74 6f 72 20 61 63 74 69 0]).%.%Note:.The.row.vector.acti
344a0 76 65 5f 69 6d 61 67 65 73 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 7a 65 72 6f 73 20 61 6e 64 20 ve_images.consists.of.zeros.and.
344c0 6f 6e 65 73 2e 20 54 6f 20 64 65 61 63 74 69 76 61 74 65 20 61 6e 20 69 6d 61 67 65 2c 20 73 65 ones..To.deactivate.an.image,.se
344e0 74 20 74 68 65 0a 25 20 20 20 20 20 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 65 6e 74 72 79 t.the.%......corresponding.entry
34500 20 69 6e 20 74 68 65 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 20 76 65 63 74 6f 72 20 74 6f 20 .in.the.active_images.vector.to.
34520 7a 65 72 6f 2e 0a 25 0a 25 0a 25 49 6d 70 6f 72 74 61 6e 74 20 66 75 6e 63 74 69 6f 6e 20 63 61 zero..%.%.%Important.function.ca
34540 6c 6c 65 64 20 77 69 74 68 69 6e 20 74 68 61 74 20 70 72 6f 67 72 61 6d 3a 0a 25 0a 25 63 6f 6d lled.within.that.program:.%.%com
34560 70 75 74 65 5f 68 6f 6d 6f 67 72 61 70 68 79 2e 6d 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 pute_homography.m:.Computes.the.
34580 70 6c 61 6e 61 72 20 68 6f 6d 6f 67 72 61 70 68 79 20 62 65 74 77 65 65 6e 20 70 6f 69 6e 74 73 planar.homography.between.points
345a0 20 6f 6e 20 74 68 65 20 67 72 69 64 20 69 6e 20 33 44 2c 20 61 6e 64 20 74 68 65 20 69 6d 61 67 .on.the.grid.in.3D,.and.the.imag
345c0 65 20 70 6c 61 6e 65 2e 0a 25 0a 25 0a 25 56 45 52 59 20 49 4d 50 4f 52 54 41 4e 54 3a 20 54 68 e.plane..%.%.%VERY.IMPORTANT:.Th
345e0 69 73 20 66 75 6e 63 74 69 6f 6e 20 77 6f 72 6b 73 20 6f 6e 79 6c 20 77 69 74 68 20 32 44 20 72 is.function.works.onyl.with.2D.r
34600 69 67 73 2e 0a 25 49 6e 20 74 68 65 20 66 75 74 75 72 65 2c 20 61 20 6d 6f 72 65 20 67 65 6e 65 igs..%In.the.future,.a.more.gene
34620 72 61 6c 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 74 68 65 72 65 20 28 77 6f 72 6b ral.function.will.be.there.(work
34640 69 6e 67 20 77 69 74 68 20 33 44 20 72 69 67 73 20 61 73 20 77 65 6c 6c 29 2e 0a 0a 0a 0a 63 68 ing.with.3D.rigs.as.well).....ch
34660 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 0a 69 66 20 7e 65 78 69 73 74 28 5b 27 eck_active_images;..if.~exist(['
34680 78 5f 27 20 6e 75 6d 32 73 74 72 28 69 6e 64 5f 61 63 74 69 76 65 28 31 29 29 20 5d 29 2c 0a 20 x_'.num2str(ind_active(1)).]),..
346a0 20 20 63 6c 69 63 6b 5f 63 61 6c 69 62 3b 0a 65 6e 64 3b 0a 0a 0a 66 70 72 69 6e 74 66 28 31 2c ..click_calib;.end;...fprintf(1,
346c0 27 5c 6e 49 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e 74 72 69 6e 73 '\nInitialization.of.the.intrins
346e0 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 2d 20 4e 75 6d 62 65 72 20 6f 66 20 69 6d 61 67 65 73 ic.parameters.-.Number.of.images
34700 3a 20 25 64 5c 6e 27 2c 6c 65 6e 67 74 68 28 69 6e 64 5f 61 63 74 69 76 65 29 29 3b 0a 0a 0a 25 :.%d\n',length(ind_active));...%
34720 20 49 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20 68 6f 6d 6f 67 72 61 70 68 69 65 73 3a 0a 0a 66 .Initialize.the.homographies:..f
34740 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 65 76 61 6c 28 5b 27 78 5f 6b 6b 20 or.kk.=.1:n_ima,....eval(['x_kk.
34760 3d 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c =.x_'.num2str(kk).';']);....eval
34780 28 5b 27 58 5f 6b 6b 20 3d 20 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b (['X_kk.=.X_'.num2str(kk).';']);
347a0 0a 20 20 20 69 66 20 28 69 73 6e 61 6e 28 78 5f 6b 6b 28 31 2c 31 29 29 29 2c 0a 20 20 20 20 20 ....if.(isnan(x_kk(1,1))),......
347c0 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 2c 0a 20 20 20 20 20 20 20 20 20 .if.active_images(kk),..........
347e0 66 70 72 69 6e 74 66 28 31 2c 27 57 41 52 4e 49 4e 47 3a 20 43 61 6e 6e 6f 74 20 63 61 6c 69 62 fprintf(1,'WARNING:.Cannot.calib
34800 72 61 74 65 20 77 69 74 68 20 69 6d 61 67 65 20 25 64 2e 20 4e 65 65 64 20 74 6f 20 65 78 74 72 rate.with.image.%d..Need.to.extr
34820 61 63 74 20 67 72 69 64 20 63 6f 72 6e 65 72 73 20 66 69 72 73 74 2e 5c 6e 27 2c 6b 6b 29 0a 20 act.grid.corners.first.\n',kk)..
34840 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 53 65 74 20 ........fprintf(1,'.........Set.
34860 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 25 64 29 3d 31 3b 20 61 6e 64 20 72 75 6e 20 45 78 74 active_images(%d)=1;.and.run.Ext
34880 72 61 63 74 20 67 72 69 64 20 63 6f 72 6e 65 72 73 2e 5c 6e 27 2c 6b 6b 29 0a 20 20 20 20 20 20 ract.grid.corners.\n',kk).......
348a0 65 6e 64 3b 0a 20 20 20 20 20 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 20 3d 20 30 end;.......active_images(kk).=.0
348c0 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b ;....end;....if.active_images(kk
348e0 29 2c 0a 20 20 20 20 20 20 65 76 61 6c 28 5b 27 48 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 ),.......eval(['H_'.num2str(kk).
34900 27 20 3d 20 63 6f 6d 70 75 74 65 5f 68 6f 6d 6f 67 72 61 70 68 79 28 78 5f 6b 6b 2c 58 5f 6b 6b '.=.compute_homography(x_kk,X_kk
34920 28 31 3a 32 2c 3a 29 29 3b 27 5d 29 3b 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 65 76 61 6c (1:2,:));']);....else.......eval
34940 28 5b 27 48 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 (['H_'.num2str(kk).'.=.NaN*ones(
34960 33 2c 33 29 3b 27 5d 29 3b 0a 20 20 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 63 68 65 63 6b 5f 61 63 3,3);']);....end;.end;..check_ac
34980 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 0a 25 20 69 6e 69 74 69 61 6c 20 67 75 65 73 73 20 66 6f tive_images;..%.initial.guess.fo
349a0 72 20 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 61 6e 64 20 64 69 73 74 6f 72 74 69 6f 6e r.principal.point.and.distortion
349c0 3a 0a 0a 69 66 20 7e 65 78 69 73 74 28 27 6e 78 27 29 2c 20 5b 6e 79 2c 6e 78 5d 20 3d 20 73 69 :..if.~exist('nx'),.[ny,nx].=.si
349e0 7a 65 28 49 29 3b 20 65 6e 64 3b 0a 0a 63 5f 69 6e 69 74 20 3d 20 5b 6e 78 3b 6e 79 5d 2f 32 20 ze(I);.end;..c_init.=.[nx;ny]/2.
34a00 2d 20 30 2e 35 3b 20 25 20 69 6e 69 74 69 61 6c 69 7a 65 20 61 74 20 74 68 65 20 63 65 6e 74 65 -.0.5;.%.initialize.at.the.cente
34a20 72 20 6f 66 20 74 68 65 20 69 6d 61 67 65 0a 6b 5f 69 6e 69 74 20 3d 20 5b 30 3b 30 3b 30 3b 30 r.of.the.image.k_init.=.[0;0;0;0
34a40 5d 3b 20 25 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 6f 20 7a 65 72 6f 20 28 6e 6f 20 64 69 73 74 ];.%.initialize.to.zero.(no.dist
34a60 6f 72 74 69 6f 6e 29 0a 0a 0a 0a 25 20 43 6f 6d 70 75 74 65 20 65 78 70 6c 69 63 69 74 65 6c 79 ortion)....%.Compute.explicitely
34a80 20 74 68 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 20 75 73 69 6e 67 20 61 6c 6c 20 74 68 65 20 .the.focal.length.using.all.the.
34aa0 28 6d 75 74 75 61 6c 6c 79 20 6f 72 74 68 6f 67 6f 6e 61 6c 29 20 76 61 6e 69 73 68 69 6e 67 20 (mutually.orthogonal).vanishing.
34ac0 70 6f 69 6e 74 73 0a 25 20 6e 6f 74 65 3a 20 54 68 65 20 76 61 6e 69 68 69 6e 67 20 70 6f 69 6e points.%.note:.The.vanihing.poin
34ae0 74 73 20 61 72 65 20 68 69 64 64 65 6e 20 69 6e 20 74 68 65 20 70 6c 61 6e 61 72 20 63 6f 6c 6c ts.are.hidden.in.the.planar.coll
34b00 69 6e 65 61 74 69 6f 6e 73 20 48 5f 6b 6b 0a 0a 41 20 3d 20 5b 5d 3b 0a 62 20 3d 20 5b 5d 3b 0a ineations.H_kk..A.=.[];.b.=.[];.
34b20 0a 25 20 6d 61 74 72 69 78 20 74 68 61 74 20 73 75 62 74 72 61 63 74 20 74 68 65 20 70 72 69 6e .%.matrix.that.subtract.the.prin
34b40 63 69 70 61 6c 20 70 6f 69 6e 74 3a 0a 53 75 62 5f 63 63 20 3d 20 5b 31 20 30 20 2d 63 5f 69 6e cipal.point:.Sub_cc.=.[1.0.-c_in
34b60 69 74 28 31 29 3b 30 20 31 20 2d 63 5f 69 6e 69 74 28 32 29 3b 30 20 30 20 31 5d 3b 0a 0a 66 6f it(1);0.1.-c_init(2);0.0.1];..fo
34b80 72 20 6b 6b 3d 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 0a 20 20 20 69 66 20 61 63 74 69 76 65 5f 69 r.kk=1:n_ima,........if.active_i
34ba0 6d 61 67 65 73 28 6b 6b 29 2c 0a 20 20 20 20 20 20 0a 20 20 20 09 65 76 61 6c 28 5b 27 48 6b 6b mages(kk),............eval(['Hkk
34bc0 20 3d 20 48 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 .=.H_'.num2str(kk).';']);.......
34be0 20 09 48 6b 6b 20 3d 20 53 75 62 5f 63 63 20 2a 20 48 6b 6b 3b 20 20 20 0a 20 20 20 0a 20 20 20 ..Hkk.=.Sub_cc.*.Hkk;...........
34c00 09 25 20 45 78 74 72 61 63 74 20 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 73 20 28 64 69 72 .%.Extract.vanishing.points.(dir
34c20 65 63 74 20 61 6e 64 20 64 69 61 67 6f 6e 61 6c 73 29 3a 0a 20 20 20 0a 20 20 20 09 56 5f 68 6f ect.and.diagonals):.........V_ho
34c40 72 69 5f 70 69 78 20 3d 20 48 6b 6b 28 3a 2c 31 29 3b 0a 20 20 20 09 56 5f 76 65 72 74 5f 70 69 ri_pix.=.Hkk(:,1);.....V_vert_pi
34c60 78 20 3d 20 48 6b 6b 28 3a 2c 32 29 3b 0a 20 20 20 09 56 5f 64 69 61 67 31 5f 70 69 78 20 3d 20 x.=.Hkk(:,2);.....V_diag1_pix.=.
34c80 28 48 6b 6b 28 3a 2c 31 29 2b 48 6b 6b 28 3a 2c 32 29 29 2f 32 3b 0a 20 20 20 09 56 5f 64 69 61 (Hkk(:,1)+Hkk(:,2))/2;.....V_dia
34ca0 67 32 5f 70 69 78 20 3d 20 28 48 6b 6b 28 3a 2c 31 29 2d 48 6b 6b 28 3a 2c 32 29 29 2f 32 3b 0a g2_pix.=.(Hkk(:,1)-Hkk(:,2))/2;.
34cc0 20 20 20 0a 20 20 20 09 56 5f 68 6f 72 69 5f 70 69 78 20 3d 20 56 5f 68 6f 72 69 5f 70 69 78 2f ........V_hori_pix.=.V_hori_pix/
34ce0 6e 6f 72 6d 28 56 5f 68 6f 72 69 5f 70 69 78 29 3b 0a 20 20 20 09 56 5f 76 65 72 74 5f 70 69 78 norm(V_hori_pix);.....V_vert_pix
34d00 20 3d 20 56 5f 76 65 72 74 5f 70 69 78 2f 6e 6f 72 6d 28 56 5f 76 65 72 74 5f 70 69 78 29 3b 0a .=.V_vert_pix/norm(V_vert_pix);.
34d20 20 20 20 09 56 5f 64 69 61 67 31 5f 70 69 78 20 3d 20 56 5f 64 69 61 67 31 5f 70 69 78 2f 6e 6f ....V_diag1_pix.=.V_diag1_pix/no
34d40 72 6d 28 56 5f 64 69 61 67 31 5f 70 69 78 29 3b 0a 20 20 20 09 56 5f 64 69 61 67 32 5f 70 69 78 rm(V_diag1_pix);.....V_diag2_pix
34d60 20 3d 20 56 5f 64 69 61 67 32 5f 70 69 78 2f 6e 6f 72 6d 28 56 5f 64 69 61 67 32 5f 70 69 78 29 .=.V_diag2_pix/norm(V_diag2_pix)
34d80 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 61 31 20 3d 20 56 5f 68 6f 72 69 5f 70 69 78 28 31 ;..............a1.=.V_hori_pix(1
34da0 29 3b 0a 20 20 20 20 20 20 62 31 20 3d 20 56 5f 68 6f 72 69 5f 70 69 78 28 32 29 3b 0a 20 20 20 );.......b1.=.V_hori_pix(2);....
34dc0 20 20 20 63 31 20 3d 20 56 5f 68 6f 72 69 5f 70 69 78 28 33 29 3b 0a 20 20 20 20 20 20 0a 20 20 ...c1.=.V_hori_pix(3);..........
34de0 20 09 61 32 20 3d 20 56 5f 76 65 72 74 5f 70 69 78 28 31 29 3b 0a 20 20 20 09 62 32 20 3d 20 56 ..a2.=.V_vert_pix(1);.....b2.=.V
34e00 5f 76 65 72 74 5f 70 69 78 28 32 29 3b 0a 20 20 20 09 63 32 20 3d 20 56 5f 76 65 72 74 5f 70 69 _vert_pix(2);.....c2.=.V_vert_pi
34e20 78 28 33 29 3b 0a 20 20 20 09 0a 20 20 20 09 61 33 20 3d 20 56 5f 64 69 61 67 31 5f 70 69 78 28 x(3);..........a3.=.V_diag1_pix(
34e40 31 29 3b 0a 20 20 20 09 62 33 20 3d 20 56 5f 64 69 61 67 31 5f 70 69 78 28 32 29 3b 0a 20 20 20 1);.....b3.=.V_diag1_pix(2);....
34e60 09 63 33 20 3d 20 56 5f 64 69 61 67 31 5f 70 69 78 28 33 29 3b 0a 20 20 20 09 0a 20 20 20 09 61 .c3.=.V_diag1_pix(3);..........a
34e80 34 20 3d 20 56 5f 64 69 61 67 32 5f 70 69 78 28 31 29 3b 0a 20 20 20 09 62 34 20 3d 20 56 5f 64 4.=.V_diag2_pix(1);.....b4.=.V_d
34ea0 69 61 67 32 5f 70 69 78 28 32 29 3b 0a 20 20 20 09 63 34 20 3d 20 56 5f 64 69 61 67 32 5f 70 69 iag2_pix(2);.....c4.=.V_diag2_pi
34ec0 78 28 33 29 3b 0a 20 09 0a 20 09 20 20 20 41 5f 6b 6b 20 3d 20 5b 61 31 2a 61 32 20 20 62 31 2a x(3);.........A_kk.=.[a1*a2..b1*
34ee0 62 32 3b 0a 09 20 20 20 20 09 20 20 20 20 61 33 2a 61 34 20 20 62 33 2a 62 34 5d 3b 0a 20 20 20 b2;...........a3*a4..b3*b4];....
34f00 0a 20 20 20 09 62 5f 6b 6b 20 3d 20 2d 5b 63 31 2a 63 32 3b 63 33 2a 63 34 5d 3b 0a 20 20 20 09 .....b_kk.=.-[c1*c2;c3*c4];.....
34f20 0a 09 09 0a 20 20 20 09 41 20 3d 20 5b 41 3b 41 5f 6b 6b 5d 3b 0a 20 20 20 09 62 20 3d 20 5b 62 ........A.=.[A;A_kk];.....b.=.[b
34f40 3b 62 5f 6b 6b 5d 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a 65 6e 64 3b 0a ;b_kk];...........end;.....end;.
34f60 0a 0a 25 20 75 73 65 20 61 6c 6c 20 74 68 65 20 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 73 ..%.use.all.the.vanishing.points
34f80 20 74 6f 20 65 73 74 69 6d 61 74 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 3a 0a 0a 66 5f 69 6e .to.estimate.focal.length:..f_in
34fa0 69 74 20 3d 20 73 71 72 74 28 61 62 73 28 31 2e 2f 28 69 6e 76 28 41 27 2a 41 29 2a 41 27 2a 62 it.=.sqrt(abs(1./(inv(A'*A)*A'*b
34fc0 29 29 29 3b 20 25 20 69 66 20 75 73 69 6e 67 20 61 20 74 77 6f 2d 66 6f 63 61 6c 20 6d 6f 64 65 )));.%.if.using.a.two-focal.mode
34fe0 6c 20 66 6f 72 20 69 6e 69 74 69 61 6c 20 67 75 65 73 73 0a 0a 25 66 5f 69 6e 69 74 20 3d 20 73 l.for.initial.guess..%f_init.=.s
35000 71 72 74 28 62 27 2a 28 73 75 6d 28 41 27 29 27 29 20 2f 20 28 62 27 2a 62 29 29 20 2a 20 6f 6e qrt(b'*(sum(A')')./.(b'*b)).*.on
35020 65 73 28 32 2c 31 29 3b 20 25 20 69 66 20 73 69 6e 67 6c 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 es(2,1);.%.if.single.focal.lengt
35040 68 20 6d 6f 64 65 6c 20 69 73 20 75 73 65 64 0a 0a 0a 25 20 47 6c 6f 62 61 6c 20 63 61 6c 69 62 h.model.is.used...%.Global.calib
35060 72 61 74 69 6f 6e 20 6d 61 74 72 69 78 20 28 69 6e 69 74 69 61 6c 20 67 75 65 73 73 29 3a 0a 20 ration.matrix.(initial.guess):..
35080 20 20 09 0a 4b 4b 20 3d 20 5b 66 5f 69 6e 69 74 28 31 29 20 30 20 63 5f 69 6e 69 74 28 31 29 3b ....KK.=.[f_init(1).0.c_init(1);
350a0 30 20 66 5f 69 6e 69 74 28 32 29 20 63 5f 69 6e 69 74 28 32 29 3b 20 30 20 30 20 31 5d 3b 0a 69 0.f_init(2).c_init(2);.0.0.1];.i
350c0 6e 76 5f 4b 4b 20 3d 20 69 6e 76 28 4b 4b 29 3b 0a 0a 0a 63 63 20 3d 20 63 5f 69 6e 69 74 3b 0a nv_KK.=.inv(KK);...cc.=.c_init;.
350e0 66 63 20 3d 20 66 5f 69 6e 69 74 3b 0a 6b 63 20 3d 20 6b 5f 69 6e 69 74 3b 0a 0a 0a 66 70 72 69 fc.=.f_init;.kc.=.k_init;...fpri
35100 6e 74 66 28 31 2c 27 5c 6e 5c 6e 43 61 6c 69 62 72 61 74 69 6f 6e 20 70 61 72 61 6d 65 74 65 72 ntf(1,'\n\nCalibration.parameter
35120 73 20 61 66 74 65 72 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 3a 5c 6e 5c 6e 27 29 3b 0a 66 s.after.initialization:\n\n');.f
35140 70 72 69 6e 74 66 28 31 2c 27 46 6f 63 61 6c 20 4c 65 6e 67 74 68 3a 20 20 20 20 20 66 63 20 3d printf(1,'Focal.Length:.....fc.=
35160 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 66 63 29 3b 0a 66 70 72 69 6e 74 .[.%3.5f...%3.5f]\n',fc);.fprint
35180 66 28 31 2c 27 50 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 3a 20 20 63 63 20 3d 20 5b 20 25 33 f(1,'Principal.point:..cc.=.[.%3
351a0 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 63 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 .5f...%3.5f]\n',cc);.fprintf(1,'
351c0 44 69 73 74 6f 72 74 69 6f 6e 3a 20 20 20 20 20 20 20 6b 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 Distortion:.......kc.=.[.%3.5f..
351e0 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 5c 6e 27 2c 6b 63 29 .%3.5f...%3.5f...%3.5f]\n\n',kc)
35200 3b 0a 2a 6f 6e 65 73 28 31 2c 33 29 29 3b 0a 64 78 64 31 64 6f 6d 20 3d 20 64 78 64 31 64 6f 6d ;.*ones(1,3));.dxd1dom.=.dxd1dom
35220 20 2b 20 63 6f 65 66 66 2e 2a 20 64 78 64 6f 6d 3b 0a 0a 64 78 64 31 64 54 20 3d 20 7a 65 72 6f .+.coeff.*.dxdom;..dxd1dT.=.zero
35240 73 28 32 2a 6e 2c 33 29 3b 0a 64 78 64 31 64 54 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 28 78 s(2*n,3);.dxd1dT(1:2:end,:).=.(x
35260 28 31 2c 3a 29 27 2a 6f 6e 65 73 28 31 2c 33 29 29 20 2e 2a 20 64 63 64 69 73 74 64 54 3b 0a 64 (1,:)'*ones(1,3))..*.dcdistdT;.d
35280 78 64 31 64 54 28 32 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 28 78 28 32 2c 3a 29 27 2a 6f 6e 65 73 xd1dT(2:2:end,:).=.(x(2,:)'*ones
352a0 28 31 2c 33 29 29 20 2e 2a 20 64 63 64 69 73 74 64 54 3b 0a 64 78 64 31 64 54 20 3d 20 64 78 64 (1,3))..*.dcdistdT;.dxd1dT.=.dxd
352c0 31 64 54 20 2b 20 63 6f 65 66 66 2e 2a 20 64 78 64 54 3b 0a 0a 64 78 64 31 64 6b 20 3d 20 7a 65 1dT.+.coeff.*.dxdT;..dxd1dk.=.ze
352e0 72 6f 73 28 32 2a 6e 2c 34 29 3b 0a 64 78 64 31 64 6b 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 ros(2*n,4);.dxd1dk(1:2:end,:).=.
35300 28 78 28 31 2c 3a 29 27 2a 6f 6e 65 73 28 31 2c 34 29 29 20 2e 2a 20 64 63 64 69 73 74 64 6b 3b (x(1,:)'*ones(1,4))..*.dcdistdk;
35320 0a 64 78 64 31 64 6b 28 32 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 28 78 28 32 2c 3a 29 27 2a 6f 6e .dxd1dk(2:2:end,:).=.(x(2,:)'*on
35340 65 73 28 31 2c 34 29 29 20 2e 2a 20 64 63 64 69 73 74 64 6b 3b 0a 0a 0a 0a 25 20 74 61 6e 67 65 es(1,4))..*.dcdistdk;....%.tange
35360 6e 74 69 61 6c 20 64 69 73 74 6f 72 74 69 6f 6e 3a 0a 0a 61 31 20 3d 20 32 2e 2a 78 28 31 2c 3a ntial.distortion:..a1.=.2.*x(1,:
35380 29 2e 2a 78 28 32 2c 3a 29 3b 0a 61 32 20 3d 20 72 32 20 2b 20 32 2a 78 28 31 2c 3a 29 2e 5e 32 ).*x(2,:);.a2.=.r2.+.2*x(1,:).^2
353a0 3b 0a 61 33 20 3d 20 72 32 20 2b 20 32 2a 78 28 32 2c 3a 29 2e 5e 32 3b 0a 0a 64 65 6c 74 61 5f ;.a3.=.r2.+.2*x(2,:).^2;..delta_
353c0 78 20 3d 20 5b 6b 28 33 29 2a 61 31 20 2b 20 6b 28 34 29 2a 61 32 20 3b 0a 20 20 20 6b 28 33 29 x.=.[k(3)*a1.+.k(4)*a2.;....k(3)
353e0 20 2a 20 61 33 20 2b 20 6b 28 34 29 2a 61 31 5d 3b 0a 0a 0a 64 64 65 6c 74 61 5f 78 64 78 20 3d .*.a3.+.k(4)*a1];...ddelta_xdx.=
35400 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 2e 6d 00 TOOLBOX_calib/mean_std_robust.m.
35420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
35440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
35460 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
35480 20 20 20 20 31 34 30 20 20 37 30 32 34 30 33 37 33 33 37 20 20 31 31 37 34 34 00 20 00 00 00 00 ....140..7024037337..11744......
354a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
354c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
354e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
35500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
35520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
35540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
35560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
35580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
355a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
355c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
355e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
35600 66 75 6e 63 74 69 6f 6e 20 5b 6d 2c 73 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 function.[m,s].=.mean_std_robust
35620 28 78 29 3b 0a 0a 78 20 3d 20 78 28 3a 29 3b 0a 0a 6d 20 3d 20 6d 65 64 69 61 6e 28 78 29 3b 0a (x);..x.=.x(:);..m.=.median(x);.
35640 0a 73 20 3d 20 6d 65 64 69 61 6e 28 61 62 73 28 78 20 2d 20 6d 29 29 2a 31 2e 34 38 33 36 3b 0a .s.=.median(abs(x.-.m))*1.4836;.
35660 65 2e 6d 00 00 00 07 70 00 02 36 b5 00 20 00 11 63 68 65 63 6b 5f 70 6c 61 6e 61 72 69 74 79 2e e.m....p..6.....check_planarity.
35680 6d 00 6e 63 00 00 07 88 00 02 36 b6 00 1c 00 0e 63 6f 6e 76 65 72 74 5f 6f 75 6c 75 2e 6d 00 72 m.nc......6.....convert_oulu.m.r
356a0 00 00 07 9c 00 02 36 b7 00 18 00 0b 6e 6f 72 6d 61 6c 69 7a 65 2e 6d 00 00 00 07 b4 00 02 36 b8 ......6.....normalize.m.......6.
356c0 00 1c 00 0e 72 69 67 69 64 5f 6d 6f 74 69 6f 6e 2e 6d 00 6d 00 00 07 d8 00 02 36 b9 00 28 00 18 ....rigid_motion.m.m......6..(..
356e0 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 69 6e 69 74 2e 6d 00 00 07 d8 00 00 08 00 compute_extrinsic_init.m........
35700 00 02 36 ba 00 28 00 1a 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 72 65 66 69 6e 65 ..6..(..compute_extrinsic_refine
35720 2e 6d 00 00 00 00 0a 00 00 02 36 bb 00 24 00 15 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 .m........6..$..go_calib_optim_i
35740 74 65 72 2e 6d 00 00 70 54 68 65 20 63 61 6d 65 72 61 20 6d 61 74 72 69 78 20 28 63 6f 6e 74 61 ter.m..pThe.camera.matrix.(conta
35760 69 6e 69 6e 67 20 66 63 20 61 6e 64 20 63 63 29 0a 25 0a 25 4d 65 74 68 6f 64 3a 20 43 6f 6d 70 ining.fc.and.cc).%.%Method:.Comp
35780 75 74 65 73 20 74 68 65 20 70 6c 61 6e 61 72 20 68 6f 6d 6f 67 72 61 70 68 69 65 73 20 48 5f 31 utes.the.planar.homographies.H_1
357a0 2c 20 48 5f 32 2c 20 48 5f 33 2c 20 2e 2e 2e 20 61 6e 64 20 63 6f 6d 70 75 74 65 73 0a 25 20 20 ,.H_2,.H_3,.....and.computes.%..
357c0 20 20 20 20 20 20 74 68 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 20 66 63 20 66 72 6f 6d 20 6f ......the.focal.length.fc.from.o
357e0 72 74 68 6f 67 6f 6e 61 6c 20 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 73 20 63 6f 6e 73 74 rthogonal.vanishing.points.const
35800 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 72 75 6e 5f 65 72 72 6f 72 5f 61 6e 61 6c 79 73 69 73 TOOLBOX_calib/run_error_analysis
35820 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .m..............................
35840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
35860 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
35880 20 20 20 32 30 30 32 20 20 37 30 32 34 30 33 37 33 35 33 20 20 31 32 35 31 31 00 20 00 00 00 00 ...2002..7024037353..12511......
358a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
358c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
358e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
35900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
35920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
35940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
35960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
35980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
359a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
359c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
359e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
35a00 25 25 25 20 50 72 6f 67 72 61 6d 20 74 68 61 74 20 6c 61 75 6e 63 68 73 20 74 68 65 20 63 6f 6d %%%.Program.that.launchs.the.com
35a20 70 6c 65 74 65 20 0a 0a 66 6f 72 20 4e 5f 69 6d 61 5f 61 63 74 69 76 65 20 3d 20 31 3a 33 30 2c plete...for.N_ima_active.=.1:30,
35a40 0a 20 20 20 0a 20 20 20 65 72 72 6f 72 5f 61 6e 61 6c 79 73 69 73 3b 0a 20 20 20 0a 65 6e 64 3b ........error_analysis;.....end;
35a60 0a 0a 0a 0a 72 65 74 75 72 6e 3b 0a 0a 0a 66 20 3d 20 5b 5d 3b 0a 66 5f 73 74 64 20 3d 20 5b 5d ....return;...f.=.[];.f_std.=.[]
35a80 3b 0a 0a 63 20 3d 20 5b 5d 3b 0a 63 5f 73 74 64 20 3d 20 5b 5d 3b 0a 0a 6b 20 3d 20 5b 5d 3b 0a ;..c.=.[];.c_std.=.[];..k.=.[];.
35aa0 6b 5f 73 74 64 20 3d 20 5b 5d 3b 0a 0a 4e 4e 20 3d 20 33 30 3b 0a 0a 66 6f 72 20 72 72 20 3d 20 k_std.=.[];..NN.=.30;..for.rr.=.
35ac0 31 3a 4e 4e 2c 0a 20 20 20 0a 20 20 20 6c 6f 61 64 28 5b 27 43 61 6c 69 62 5f 41 63 63 75 72 61 1:NN,........load(['Calib_Accura
35ae0 63 69 65 73 5f 27 20 6e 75 6d 32 73 74 72 28 72 72 29 5d 29 3b 0a 20 20 20 0a 20 20 20 5b 6d 31 cies_'.num2str(rr)]);........[m1
35b00 2c 73 31 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 28 66 63 5f 6c 69 73 74 28 31 ,s1].=.mean_std_robust(fc_list(1
35b20 2c 3a 29 29 3b 0a 20 20 20 5b 6d 32 2c 73 32 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 ,:));....[m2,s2].=.mean_std_robu
35b40 73 74 28 66 63 5f 6c 69 73 74 28 32 2c 3a 29 29 3b 0a 20 20 20 0a 20 20 20 66 20 3d 20 5b 66 20 st(fc_list(2,:));........f.=.[f.
35b60 5b 6d 31 3b 6d 32 5d 5d 3b 0a 20 20 20 66 5f 73 74 64 20 3d 20 5b 66 5f 73 74 64 20 5b 73 31 3b [m1;m2]];....f_std.=.[f_std.[s1;
35b80 73 32 5d 5d 3b 0a 20 20 20 0a 20 20 20 5b 6d 31 2c 73 31 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f s2]];........[m1,s1].=.mean_std_
35ba0 72 6f 62 75 73 74 28 63 63 5f 6c 69 73 74 28 31 2c 3a 29 29 3b 0a 20 20 20 5b 6d 32 2c 73 32 5d robust(cc_list(1,:));....[m2,s2]
35bc0 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 28 63 63 5f 6c 69 73 74 28 32 2c 3a 29 29 .=.mean_std_robust(cc_list(2,:))
35be0 3b 0a 20 20 20 0a 20 20 20 63 20 3d 20 5b 63 20 5b 6d 31 3b 6d 32 5d 5d 3b 0a 20 20 20 63 5f 73 ;........c.=.[c.[m1;m2]];....c_s
35c00 74 64 20 3d 20 5b 63 5f 73 74 64 20 5b 73 31 3b 73 32 5d 5d 3b 0a 20 20 20 20 20 20 0a 20 20 20 td.=.[c_std.[s1;s2]];...........
35c20 5b 6d 31 2c 73 31 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 28 6b 63 5f 6c 69 73 [m1,s1].=.mean_std_robust(kc_lis
35c40 74 28 31 2c 3a 29 29 3b 0a 20 20 20 5b 6d 32 2c 73 32 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 t(1,:));....[m2,s2].=.mean_std_r
35c60 6f 62 75 73 74 28 6b 63 5f 6c 69 73 74 28 32 2c 3a 29 29 3b 0a 20 20 20 5b 6d 33 2c 73 33 5d 20 obust(kc_list(2,:));....[m3,s3].
35c80 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 28 6b 63 5f 6c 69 73 74 28 33 2c 3a 29 29 3b =.mean_std_robust(kc_list(3,:));
35ca0 0a 20 20 20 5b 6d 34 2c 73 34 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 28 6b 63 ....[m4,s4].=.mean_std_robust(kc
35cc0 5f 6c 69 73 74 28 34 2c 3a 29 29 3b 0a 20 20 20 0a 20 20 20 6b 20 3d 20 5b 6b 20 5b 6d 31 3b 6d _list(4,:));........k.=.[k.[m1;m
35ce0 32 3b 6d 33 3b 6d 34 5d 5d 3b 0a 20 20 20 6b 5f 73 74 64 20 3d 20 5b 6b 5f 73 74 64 20 5b 73 31 2;m3;m4]];....k_std.=.[k_std.[s1
35d00 3b 73 32 3b 73 33 3b 73 34 5d 5d 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 66 69 67 75 72 65 28 31 29 ;s2;s3;s4]];.....end;..figure(1)
35d20 3b 0a 65 72 72 6f 72 62 61 72 28 5b 31 3a 4e 4e 3b 31 3a 4e 4e 5d 27 2c 66 27 2c 66 5f 73 74 64 ;.errorbar([1:NN;1:NN]',f',f_std
35d40 27 29 3b 0a 66 69 67 75 72 65 28 32 29 3b 0a 65 72 72 6f 72 62 61 72 28 5b 31 3a 4e 4e 3b 31 3a ');.figure(2);.errorbar([1:NN;1:
35d60 4e 4e 5d 27 2c 63 27 2c 63 5f 73 74 64 27 29 3b 0a 66 69 67 75 72 65 28 33 29 3b 0a 65 72 72 6f NN]',c',c_std');.figure(3);.erro
35d80 72 62 61 72 28 5b 31 3a 4e 4e 3b 31 3a 4e 4e 3b 31 3a 4e 4e 3b 31 3a 4e 4e 5d 27 2c 6b 27 2c 6b rbar([1:NN;1:NN;1:NN;1:NN]',k',k
35da0 5f 73 74 64 27 29 3b 0a 0a 66 69 67 75 72 65 28 34 29 3b 0a 73 65 6d 69 6c 6f 67 79 28 66 5f 73 _std');..figure(4);.semilogy(f_s
35dc0 74 64 27 29 3b 0a 0a 66 69 67 75 72 65 28 35 29 3b 0a 73 65 6d 69 6c 6f 67 79 28 63 5f 73 74 64 td');..figure(5);.semilogy(c_std
35de0 27 29 3b 0a 0a 66 69 67 75 72 65 28 36 29 3b 0a 73 65 6d 69 6c 6f 67 79 28 6b 5f 73 74 64 27 29 ');..figure(6);.semilogy(k_std')
35e00 3b 0a 73 2e 0a 25 49 6e 20 74 68 65 20 66 75 74 75 72 65 2c 20 61 20 6d 6f 72 65 20 67 65 6e 65 ;.s..%In.the.future,.a.more.gene
35e20 72 61 6c 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 74 68 65 72 65 20 28 77 6f 72 6b ral.function.will.be.there.(work
35e40 69 6e 67 20 77 69 74 68 20 33 44 20 72 69 67 73 20 61 73 20 77 65 6c 6c 29 2e 0a 0a 0a 0a 63 68 ing.with.3D.rigs.as.well).....ch
35e60 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 0a 69 66 20 7e 65 78 69 73 74 28 5b 27 eck_active_images;..if.~exist(['
35e80 78 5f 27 20 6e 75 6d 32 73 74 72 28 69 6e 64 5f 61 63 74 69 76 65 28 31 29 29 20 5d 29 2c 0a 20 x_'.num2str(ind_active(1)).]),..
35ea0 20 20 63 6c 69 63 6b 5f 63 61 6c 69 62 3b 0a 65 6e 64 3b 0a 0a 0a 66 70 72 69 6e 74 66 28 31 2c ..click_calib;.end;...fprintf(1,
35ec0 27 5c 6e 49 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e 74 72 69 6e 73 '\nInitialization.of.the.intrins
35ee0 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 2d 20 4e 75 6d 62 65 72 20 6f 66 20 69 6d 61 67 65 73 ic.parameters.-.Number.of.images
35f00 3a 20 25 64 5c 6e 27 2c 6c 65 6e 67 74 68 28 69 6e 64 5f 61 63 74 69 76 65 29 29 3b 0a 0a 0a 25 :.%d\n',length(ind_active));...%
35f20 20 49 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20 68 6f 6d 6f 67 72 61 70 68 69 65 73 3a 0a 0a 66 .Initialize.the.homographies:..f
35f40 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 65 76 61 6c 28 5b 27 78 5f 6b 6b 20 or.kk.=.1:n_ima,....eval(['x_kk.
35f60 3d 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c =.x_'.num2str(kk).';']);....eval
35f80 28 5b 27 58 5f 6b 6b 20 3d 20 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b (['X_kk.=.X_'.num2str(kk).';']);
35fa0 0a 20 20 20 69 66 20 28 69 73 6e 61 6e 28 78 5f 6b 6b 28 31 2c 31 29 29 29 2c 0a 20 20 20 20 20 ....if.(isnan(x_kk(1,1))),......
35fc0 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 2c 0a 20 20 20 20 20 20 20 20 20 .if.active_images(kk),..........
35fe0 66 70 72 69 6e 74 66 28 31 2c 27 57 41 52 4e 49 4e 47 3a 20 43 61 6e 6e 6f 74 20 63 61 6c 69 62 fprintf(1,'WARNING:.Cannot.calib
36000 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 68 65 63 6b 5f 63 6f 6e 76 65 72 67 65 6e 63 65 2e TOOLBOX_calib/check_convergence.
36020 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 m...............................
36040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36060 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
36080 20 20 20 20 33 33 35 20 20 37 30 32 34 30 33 37 33 30 34 20 20 31 32 32 30 37 00 20 00 00 00 00 ....335..7024037304..12207......
360a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
360c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
360e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
361a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
361c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
361e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36200 25 25 25 20 52 65 70 6c 61 79 20 74 68 65 20 73 65 74 20 6f 66 20 73 6f 6c 75 74 69 6f 6e 20 76 %%%.Replay.the.set.of.solution.v
36220 65 63 74 6f 72 73 3a 0a 0a 4e 5f 69 74 65 72 20 3d 20 73 69 7a 65 28 70 61 72 61 6d 5f 6c 69 73 ectors:..N_iter.=.size(param_lis
36240 74 2c 32 29 3b 0a 0a 66 6f 72 20 6e 6e 20 3d 20 31 3a 4e 5f 69 74 65 72 2c 0a 20 20 20 0a 20 20 t,2);..for.nn.=.1:N_iter,.......
36260 20 73 6f 6c 75 74 69 6f 6e 20 3d 20 70 61 72 61 6d 5f 6c 69 73 74 28 3a 2c 6e 6e 29 3b 0a 20 20 .solution.=.param_list(:,nn);...
36280 20 0a 20 20 20 65 78 74 72 61 63 74 5f 70 61 72 61 6d 65 74 65 72 73 3b 0a 20 20 20 63 6f 6d 70 .....extract_parameters;....comp
362a0 5f 65 72 72 6f 72 5f 63 61 6c 69 62 3b 0a 20 20 20 0a 20 20 20 65 78 74 5f 63 61 6c 69 62 3b 0a _error_calib;........ext_calib;.
362c0 20 20 20 0a 20 20 20 64 72 61 77 6e 6f 77 3b 0a 20 20 20 0a 20 20 20 0a 65 6e 64 3b 0a 6d 00 00 .......drawnow;.........end;.m..
362e0 00 00 0a 00 00 02 36 bb 00 24 00 15 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 74 65 72 2e ......6..$..go_calib_optim_iter.
36300 6d 00 00 ba 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 28 66 63 5f 6c 69 73 74 28 31 m....=.mean_std_robust(fc_list(1
36320 2c 3a 29 29 3b 0a 20 20 20 5b 6d 32 2c 73 32 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 ,:));....[m2,s2].=.mean_std_robu
36340 73 74 28 66 63 5f 6c 69 73 74 28 32 2c 3a 29 29 3b 0a 20 20 20 0a 20 20 20 66 20 3d 20 5b 66 20 st(fc_list(2,:));........f.=.[f.
36360 5b 6d 31 3b 6d 32 5d 5d 3b 0a 20 20 20 66 5f 73 74 64 20 3d 20 5b 66 5f 73 74 64 20 5b 73 31 3b [m1;m2]];....f_std.=.[f_std.[s1;
36380 73 32 5d 5d 3b 0a 20 20 20 0a 20 20 20 5b 6d 31 2c 73 31 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f s2]];........[m1,s1].=.mean_std_
363a0 72 6f 62 75 73 74 28 63 63 5f 6c 69 73 74 28 31 2c 3a 29 29 3b 0a 20 20 20 5b 6d 32 2c 73 32 5d robust(cc_list(1,:));....[m2,s2]
363c0 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 28 63 63 5f 6c 69 73 74 28 32 2c 3a 29 29 .=.mean_std_robust(cc_list(2,:))
363e0 3b 0a 20 20 20 0a 20 20 20 63 20 3d 20 5b 63 20 5b 6d 31 3b 6d 32 5d 5d 3b 0a 20 20 20 63 5f 73 ;........c.=.[c.[m1;m2]];....c_s
36400 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 68 65 63 6b 5f 70 6c 61 6e 61 72 69 74 79 2e 6d 00 TOOLBOX_calib/check_planarity.m.
36420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36460 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
36480 20 20 20 31 30 30 35 20 20 37 30 32 34 30 33 37 33 30 35 20 20 31 31 37 33 30 00 20 00 00 00 00 ...1005..7024037305..11730......
364a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
364c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
364e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
365a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
365c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
365e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36600 25 20 43 68 65 63 6b 20 74 68 65 20 70 6c 61 6e 61 72 69 74 79 20 6f 66 20 61 20 73 74 72 75 63 %.Check.the.planarity.of.a.struc
36620 74 75 72 65 3a 0a 0a 58 20 3d 20 58 5f 31 3b 0a 4e 20 3d 20 73 69 7a 65 28 58 2c 32 29 3b 0a 0a ture:..X.=.X_1;.N.=.size(X,2);..
36640 25 58 28 33 2c 3a 29 20 3d 20 30 2e 31 2a 72 61 6e 64 6e 28 31 2c 4e 29 3b 0a 0a 6f 6d 20 3d 20 %X(3,:).=.0.1*randn(1,N);..om.=.
36660 72 61 6e 64 28 33 2c 31 29 3b 0a 54 20 3d 20 31 30 2a 72 61 6e 64 28 33 2c 31 29 3b 0a 52 20 3d rand(3,1);.T.=.10*rand(3,1);.R.=
36680 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 29 3b 0a 0a 58 20 3d 20 52 20 2a 20 58 20 20 2b 20 54 2a .rodrigues(om);..X.=.R.*.X..+.T*
366a0 6f 6e 65 73 28 31 2c 4e 29 3b 0a 0a 0a 0a 0a 0a 0a 4e 20 3d 20 73 69 7a 65 28 58 2c 32 29 3b 0a ones(1,N);.......N.=.size(X,2);.
366c0 58 5f 6d 65 61 6e 20 3d 20 6d 65 61 6e 28 58 27 29 27 3b 0a 0a 59 20 3d 20 58 20 2d 20 28 58 5f X_mean.=.mean(X')';..Y.=.X.-.(X_
366e0 6d 65 61 6e 2a 6f 6e 65 73 28 31 2c 4e 29 29 3b 0a 0a 59 59 20 3d 20 59 2a 59 27 3b 0a 0a 5b 55 mean*ones(1,N));..YY.=.Y*Y';..[U
36700 2c 53 2c 56 5d 20 3d 20 73 76 64 28 59 59 29 3b 0a 0a 72 20 3d 20 53 28 33 2c 33 29 2f 53 28 32 ,S,V].=.svd(YY);..r.=.S(3,3)/S(2
36720 2c 32 29 3b 0a 0a 25 20 69 66 20 72 20 69 73 20 6c 65 73 73 20 74 68 61 6e 20 31 65 2d 34 3a 0a ,2);..%.if.r.is.less.than.1e-4:.
36740 0a 52 5f 74 72 61 6e 73 66 6f 72 6d 20 3d 20 56 27 3b 0a 54 5f 74 72 61 6e 73 66 6f 72 6d 20 3d .R_transform.=.V';.T_transform.=
36760 20 2d 28 56 27 29 2a 58 5f 6d 65 61 6e 3b 0a 0a 0a 25 20 54 68 72 65 73 68 20 66 6f 72 20 72 3a .-(V')*X_mean;...%.Thresh.for.r:
36780 20 31 65 2d 34 0a 0a 58 5f 6e 65 77 20 3d 20 52 5f 74 72 61 6e 73 66 6f 72 6d 2a 58 20 2b 20 54 .1e-4..X_new.=.R_transform*X.+.T
367a0 5f 74 72 61 6e 73 66 6f 72 6d 2a 6f 6e 65 73 28 31 2c 4e 29 3b 0a 0a 0a 25 20 49 66 20 58 63 20 _transform*ones(1,N);...%.If.Xc.
367c0 3d 20 52 63 20 2a 20 58 5f 6e 65 77 20 2b 20 54 63 2c 20 74 68 65 6e 20 58 63 20 3d 20 52 63 20 =.Rc.*.X_new.+.Tc,.then.Xc.=.Rc.
367e0 2a 20 52 5f 74 72 61 6e 73 66 6f 72 6d 20 2a 20 58 20 2b 20 54 63 20 2b 20 54 5f 74 72 61 6e 73 *.R_transform.*.X.+.Tc.+.T_trans
36800 66 6f 72 6d 0a 5b 63 5f 73 74 64 20 5b 73 31 3b 73 32 5d 5d 3b 0a 20 20 20 20 20 20 0a 20 20 20 form.[c_std.[s1;s2]];...........
36820 5b 6d 31 2c 73 31 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 28 6b 63 5f 6c 69 73 [m1,s1].=.mean_std_robust(kc_lis
36840 74 28 31 2c 3a 29 29 3b 0a 20 20 20 5b 6d 32 2c 73 32 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 t(1,:));....[m2,s2].=.mean_std_r
36860 6f 62 75 73 74 28 6b 63 5f 6c 69 73 74 28 32 2c 3a 29 29 3b 0a 20 20 20 5b 6d 33 2c 73 33 5d 20 obust(kc_list(2,:));....[m3,s3].
36880 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 28 6b 63 5f 6c 69 73 74 28 33 2c 3a 29 29 3b =.mean_std_robust(kc_list(3,:));
368a0 0a 20 20 20 5b 6d 34 2c 73 34 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 28 6b 63 ....[m4,s4].=.mean_std_robust(kc
368c0 5f 6c 69 73 74 28 34 2c 3a 29 29 3b 0a 20 20 20 0a 20 20 20 6b 20 3d 20 5b 6b 20 5b 6d 31 3b 6d _list(4,:));........k.=.[k.[m1;m
368e0 32 3b 6d 33 3b 6d 34 5d 5d 3b 0a 20 20 20 6b 5f 73 74 64 20 3d 20 5b 6b 5f 73 74 64 20 5b 73 31 2;m3;m4]];....k_std.=.[k_std.[s1
36900 3b 73 32 3b 73 33 3b 73 34 5d 5d 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 66 69 67 75 72 65 28 31 29 ;s2;s3;s4]];.....end;..figure(1)
36920 3b 0a 65 72 72 6f 72 62 61 72 28 5b 31 3a 4e 4e 3b 31 3a 4e 4e 5d 27 2c 66 27 2c 66 5f 73 74 64 ;.errorbar([1:NN;1:NN]',f',f_std
36940 27 29 3b 0a 66 69 67 75 72 65 28 32 29 3b 0a 65 72 72 6f 72 62 61 72 28 5b 31 3a 4e 4e 3b 31 3a ');.figure(2);.errorbar([1:NN;1:
36960 4e 4e 5d 27 2c 63 27 2c 63 5f 73 74 64 27 29 3b 0a 66 69 67 75 72 65 28 33 29 3b 0a 65 72 72 6f NN]',c',c_std');.figure(3);.erro
36980 72 62 61 72 28 5b 31 3a 4e 4e 3b 31 3a 4e 4e 3b 31 3a 4e 4e 3b 31 3a 4e 4e 5d 27 2c 6b 27 2c 6b rbar([1:NN;1:NN;1:NN;1:NN]',k',k
369a0 5f 73 74 64 27 29 3b 0a 0a 66 69 67 75 72 65 28 34 29 3b 0a 73 65 6d 69 6c 6f 67 79 28 66 5f 73 _std');..figure(4);.semilogy(f_s
369c0 74 64 27 29 3b 0a 0a 66 69 67 75 72 65 28 35 29 3b 0a 73 65 6d 69 6c 6f 67 79 28 63 5f 73 74 64 td');..figure(5);.semilogy(c_std
369e0 27 29 3b 0a 0a 66 69 67 75 72 65 28 36 29 3b 0a 73 65 6d 69 6c 6f 67 79 28 6b 5f 73 74 64 27 29 ');..figure(6);.semilogy(k_std')
36a00 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6f 6e 76 65 72 74 5f 6f 75 6c 75 2e 6d 00 00 00 00 TOOLBOX_calib/convert_oulu.m....
36a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36a60 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
36a80 20 20 20 31 30 30 32 20 20 37 30 32 34 30 33 37 33 31 35 20 20 31 31 33 31 32 00 20 00 00 00 00 ...1002..7024037315..11312......
36aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36c00 25 25 20 43 6f 6e 76 65 72 74 73 20 64 61 74 61 20 66 69 6c 65 20 66 72 6f 6d 20 6f 75 6c 75 20 %%.Converts.data.file.from.oulu.
36c20 74 6f 20 6d 69 6e 65 3a 0a 0a 6c 6f 61 64 20 63 61 64 65 6d 6f 2c 0a 6e 5f 69 6d 61 20 3d 20 30 to.mine:..load.cademo,.n_ima.=.0
36c40 3b 0a 0a 6e 6f 5f 65 72 72 6f 72 20 3d 20 31 3b 0a 0a 69 69 20 3d 20 31 3b 0a 0a 77 68 69 6c 65 ;..no_error.=.1;..ii.=.1;..while
36c60 20 6e 6f 5f 65 72 72 6f 72 2c 0a 20 20 20 0a 20 20 20 64 61 74 61 6e 61 6d 65 20 3d 20 5b 27 64 .no_error,........dataname.=.['d
36c80 61 74 61 27 20 6e 75 6d 32 73 74 72 28 69 69 29 5d 3b 0a 20 20 20 0a 20 20 20 69 66 20 65 78 69 ata'.num2str(ii)];........if.exi
36ca0 73 74 28 64 61 74 61 6e 61 6d 65 29 2c 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 6e 5f 69 6d 61 st(dataname),..............n_ima
36cc0 20 3d 20 6e 5f 69 6d 61 20 2b 31 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 65 76 61 6c 28 5b .=.n_ima.+1;..............eval([
36ce0 27 78 5f 27 20 6e 75 6d 32 73 74 72 28 69 69 29 20 27 3d 20 27 20 64 61 74 61 6e 61 6d 65 20 27 'x_'.num2str(ii).'=.'.dataname.'
36d00 28 3a 2c 34 3a 35 29 27 27 3b 27 5d 29 0a 20 20 20 20 20 20 65 76 61 6c 28 5b 27 58 5f 27 20 6e (:,4:5)'';']).......eval(['X_'.n
36d20 75 6d 32 73 74 72 28 69 69 29 20 27 3d 20 27 20 64 61 74 61 6e 61 6d 65 20 27 28 3a 2c 31 3a 33 um2str(ii).'=.'.dataname.'(:,1:3
36d40 29 27 27 3b 27 5d 29 0a 20 20 20 20 20 20 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 6e 6f 5f )'';'])...........else.......no_
36d60 65 72 72 6f 72 20 3d 20 30 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 69 69 20 3d 20 69 error.=.0;....end;........ii.=.i
36d80 69 20 2b 20 31 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 6e 78 20 3d 20 35 30 30 3b 0a 6e 79 20 3d 20 i.+.1;.....end;..nx.=.500;.ny.=.
36da0 35 30 30 3b 0a 0a 6e 6f 5f 69 6d 61 67 65 20 3d 20 31 3b 0a 6e 6f 5f 67 72 69 64 20 3d 20 31 3b 500;..no_image.=.1;.no_grid.=.1;
36dc0 0a 0a 73 61 76 65 20 64 61 74 61 20 20 6e 5f 69 6d 61 20 78 5f 31 20 58 5f 31 20 78 5f 32 20 58 ..save.data..n_ima.x_1.X_1.x_2.X
36de0 5f 32 20 78 5f 33 20 58 5f 33 20 6e 78 20 6e 79 20 6e 6f 5f 69 6d 61 67 65 20 6e 6f 5f 67 72 69 _2.x_3.X_3.nx.ny.no_image.no_gri
36e00 64 0a 72 6d 0a 5b 63 5f 73 74 64 20 5b 73 31 3b 73 32 5d 5d 3b 0a 20 20 20 20 20 20 0a 20 20 20 d.rm.[c_std.[s1;s2]];...........
36e20 5b 6d 31 2c 73 31 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 28 6b 63 5f 6c 69 73 [m1,s1].=.mean_std_robust(kc_lis
36e40 74 28 31 2c 3a 29 29 3b 0a 20 20 20 5b 6d 32 2c 73 32 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 t(1,:));....[m2,s2].=.mean_std_r
36e60 6f 62 75 73 74 28 6b 63 5f 6c 69 73 74 28 32 2c 3a 29 29 3b 0a 20 20 20 5b 6d 33 2c 73 33 5d 20 obust(kc_list(2,:));....[m3,s3].
36e80 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 28 6b 63 5f 6c 69 73 74 28 33 2c 3a 29 29 3b =.mean_std_robust(kc_list(3,:));
36ea0 0a 20 20 20 5b 6d 34 2c 73 34 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 28 6b 63 ....[m4,s4].=.mean_std_robust(kc
36ec0 5f 6c 69 73 74 28 34 2c 3a 29 29 3b 0a 20 20 20 0a 20 20 20 6b 20 3d 20 5b 6b 20 5b 6d 31 3b 6d _list(4,:));........k.=.[k.[m1;m
36ee0 32 3b 6d 33 3b 6d 34 5d 5d 3b 0a 20 20 20 6b 5f 73 74 64 20 3d 20 5b 6b 5f 73 74 64 20 5b 73 31 2;m3;m4]];....k_std.=.[k_std.[s1
36f00 3b 73 32 3b 73 33 3b 73 34 5d 5d 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 66 69 67 75 72 65 28 31 29 ;s2;s3;s4]];.....end;..figure(1)
36f20 3b 0a 65 72 72 6f 72 62 61 72 28 5b 31 3a 4e 4e 3b 31 3a 4e 4e 5d 27 2c 66 27 2c 66 5f 73 74 64 ;.errorbar([1:NN;1:NN]',f',f_std
36f40 27 29 3b 0a 66 69 67 75 72 65 28 32 29 3b 0a 65 72 72 6f 72 62 61 72 28 5b 31 3a 4e 4e 3b 31 3a ');.figure(2);.errorbar([1:NN;1:
36f60 4e 4e 5d 27 2c 63 27 2c 63 5f 73 74 64 27 29 3b 0a 66 69 67 75 72 65 28 33 29 3b 0a 65 72 72 6f NN]',c',c_std');.figure(3);.erro
36f80 72 62 61 72 28 5b 31 3a 4e 4e 3b 31 3a 4e 4e 3b 31 3a 4e 4e 3b 31 3a 4e 4e 5d 27 2c 6b 27 2c 6b rbar([1:NN;1:NN;1:NN;1:NN]',k',k
36fa0 5f 73 74 64 27 29 3b 0a 0a 66 69 67 75 72 65 28 34 29 3b 0a 73 65 6d 69 6c 6f 67 79 28 66 5f 73 _std');..figure(4);.semilogy(f_s
36fc0 74 64 27 29 3b 0a 0a 66 69 67 75 72 65 28 35 29 3b 0a 73 65 6d 69 6c 6f 67 79 28 63 5f 73 74 64 td');..figure(5);.semilogy(c_std
36fe0 27 29 3b 0a 0a 66 69 67 75 72 65 28 36 29 3b 0a 73 65 6d 69 6c 6f 67 79 28 6b 5f 73 74 64 27 29 ');..figure(6);.semilogy(k_std')
37000 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 6e 6f 72 6d 61 6c 69 7a 65 2e 6d 00 00 00 00 00 00 00 TOOLBOX_calib/normalize.m.......
37020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
37040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
37060 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
37080 20 20 20 31 34 30 33 20 20 37 30 32 34 30 33 37 33 34 31 20 20 31 30 35 37 32 00 20 00 00 00 00 ...1403..7024037341..10572......
370a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
370c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
370e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
37100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
37120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
37140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
37160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
37180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
371a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
371c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
371e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
37200 66 75 6e 63 74 69 6f 6e 20 5b 78 6e 5d 20 3d 20 6e 6f 72 6d 61 6c 69 7a 65 28 78 5f 6b 6b 2c 66 function.[xn].=.normalize(x_kk,f
37220 63 2c 63 63 2c 6b 63 29 2c 0a 0a 25 6e 6f 72 6d 61 6c 69 7a 65 0a 25 0a 25 5b 78 6e 5d 20 3d 20 c,cc,kc),..%normalize.%.%[xn].=.
37240 6e 6f 72 6d 61 6c 69 7a 65 28 78 5f 6b 6b 2c 66 63 2c 63 63 2c 6b 63 29 0a 25 0a 25 43 6f 6d 70 normalize(x_kk,fc,cc,kc).%.%Comp
37260 75 74 65 73 20 74 68 65 20 6e 6f 72 6d 61 6c 69 7a 65 64 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 utes.the.normalized.coordinates.
37280 78 6e 20 67 69 76 65 6e 20 74 68 65 20 70 69 78 65 6c 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 78 xn.given.the.pixel.coordinates.x
372a0 5f 6b 6b 0a 25 61 6e 64 20 74 68 65 20 69 6e 74 72 69 6e 73 69 63 20 63 61 6d 65 72 61 20 70 61 _kk.%and.the.intrinsic.camera.pa
372c0 72 61 6d 65 74 65 72 73 20 66 63 2c 20 63 63 20 61 6e 64 20 6b 63 2e 0a 25 0a 25 49 4e 50 55 54 rameters.fc,.cc.and.kc..%.%INPUT
372e0 3a 20 78 5f 6b 6b 3a 20 46 65 61 74 75 72 65 20 6c 6f 63 61 74 69 6f 6e 73 20 6f 6e 20 74 68 65 :.x_kk:.Feature.locations.on.the
37300 20 69 6d 61 67 65 73 0a 25 20 20 20 20 20 20 20 66 63 3a 20 43 61 6d 65 72 61 20 66 6f 63 61 6c .images.%.......fc:.Camera.focal
37320 20 6c 65 6e 67 74 68 0a 25 20 20 20 20 20 20 20 63 63 3a 20 50 72 69 6e 63 69 70 61 6c 20 70 6f .length.%.......cc:.Principal.po
37340 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 0a 25 20 20 20 20 20 20 20 6b 63 3a 20 44 69 73 74 int.coordinates.%.......kc:.Dist
37360 6f 72 74 69 6f 6e 20 63 6f 65 66 66 69 63 69 65 6e 74 73 0a 25 0a 25 4f 55 54 50 55 54 3a 20 78 ortion.coefficients.%.%OUTPUT:.x
37380 6e 3a 20 4e 6f 72 6d 61 6c 69 7a 65 64 20 66 65 61 74 75 72 65 20 6c 6f 63 61 74 69 6f 6e 73 20 n:.Normalized.feature.locations.
373a0 6f 6e 20 74 68 65 20 69 6d 61 67 65 20 70 6c 61 6e 65 20 28 61 20 32 58 4e 20 6d 61 74 72 69 78 on.the.image.plane.(a.2XN.matrix
373c0 29 0a 25 0a 25 49 6d 70 6f 72 74 61 6e 74 20 66 75 6e 63 74 69 6f 6e 73 20 63 61 6c 6c 65 64 20 ).%.%Important.functions.called.
373e0 77 69 74 68 69 6e 20 74 68 61 74 20 70 72 6f 67 72 61 6d 3a 0a 25 0a 25 63 6f 6d 70 5f 64 69 73 within.that.program:.%.%comp_dis
37400 74 6f 72 74 69 6f 6e 5f 6f 75 6c 75 3a 20 75 6e 64 69 73 74 6f 72 74 20 70 69 78 65 6c 20 63 6f tortion_oulu:.undistort.pixel.co
37420 6f 72 64 69 6e 61 74 65 73 2e 0a 0a 0a 0a 25 20 46 69 72 73 74 20 73 75 62 74 72 61 63 74 20 70 ordinates.....%.First.subtract.p
37440 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 2c 20 61 6e 64 20 64 69 76 69 64 65 20 62 79 20 74 68 rincipal.point,.and.divide.by.th
37460 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 3a 0a 0a 78 5f 64 69 73 74 6f 72 74 20 3d 20 5b 28 78 e.focal.length:..x_distort.=.[(x
37480 5f 6b 6b 28 31 2c 3a 29 20 2d 20 63 63 28 31 29 29 2f 66 63 28 31 29 3b 28 78 5f 6b 6b 28 32 2c _kk(1,:).-.cc(1))/fc(1);(x_kk(2,
374a0 3a 29 20 2d 20 63 63 28 32 29 29 2f 66 63 28 32 29 5d 3b 0a 0a 0a 25 43 6f 6d 70 65 6e 73 61 74 :).-.cc(2))/fc(2)];...%Compensat
374c0 65 20 66 6f 72 20 6c 65 6e 73 20 64 69 73 74 6f 72 74 69 6f 6e 3a 0a 0a 78 6e 20 3d 20 63 6f 6d e.for.lens.distortion:..xn.=.com
374e0 70 5f 64 69 73 74 6f 72 74 69 6f 6e 5f 6f 75 6c 75 28 78 5f 64 69 73 74 6f 72 74 2c 6b 63 29 3b p_distortion_oulu(x_distort,kc);
37500 0a 0a 0a 3b 73 33 3b 73 34 5d 5d 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 66 69 67 75 72 65 28 31 29 ...;s3;s4]];.....end;..figure(1)
37520 3b 0a 65 72 72 6f 72 62 61 72 28 5b 31 3a 4e 4e 3b 31 3a 4e 4e 5d 27 2c 66 27 2c 66 5f 73 74 64 ;.errorbar([1:NN;1:NN]',f',f_std
37540 27 29 3b 0a 66 69 67 75 72 65 28 32 29 3b 0a 65 72 72 6f 72 62 61 72 28 5b 31 3a 4e 4e 3b 31 3a ');.figure(2);.errorbar([1:NN;1:
37560 4e 4e 5d 27 2c 63 27 2c 63 5f 73 74 64 27 29 3b 0a 66 69 67 75 72 65 28 33 29 3b 0a 65 72 72 6f NN]',c',c_std');.figure(3);.erro
37580 72 62 61 72 28 5b 31 3a 4e 4e 3b 31 3a 4e 4e 3b 31 3a 4e 4e 3b 31 3a 4e 4e 5d 27 2c 6b 27 2c 6b rbar([1:NN;1:NN;1:NN;1:NN]',k',k
375a0 5f 73 74 64 27 29 3b 0a 0a 66 69 67 75 72 65 28 34 29 3b 0a 73 65 6d 69 6c 6f 67 79 28 66 5f 73 _std');..figure(4);.semilogy(f_s
375c0 74 64 27 29 3b 0a 0a 66 69 67 75 72 65 28 35 29 3b 0a 73 65 6d 69 6c 6f 67 79 28 63 5f 73 74 64 td');..figure(5);.semilogy(c_std
375e0 27 29 3b 0a 0a 66 69 67 75 72 65 28 36 29 3b 0a 73 65 6d 69 6c 6f 67 79 28 6b 5f 73 74 64 27 29 ');..figure(6);.semilogy(k_std')
37600 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 72 69 67 69 64 5f 6d 6f 74 69 6f 6e 2e 6d 00 00 00 00 TOOLBOX_calib/rigid_motion.m....
37620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
37640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
37660 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
37680 20 20 20 33 31 37 37 20 20 37 30 32 34 30 33 37 33 35 30 20 20 31 31 32 36 37 00 20 00 00 00 00 ...3177..7024037350..11267......
376a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
376c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
376e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
37700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
37720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
37740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
37760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
37780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
377a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
377c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
377e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
37800 66 75 6e 63 74 69 6f 6e 20 5b 59 2c 64 59 64 6f 6d 2c 64 59 64 54 5d 20 3d 20 72 69 67 69 64 5f function.[Y,dYdom,dYdT].=.rigid_
37820 6d 6f 74 69 6f 6e 28 58 2c 6f 6d 2c 54 29 3b 0a 0a 25 72 69 67 69 64 5f 6d 6f 74 69 6f 6e 2e 6d motion(X,om,T);..%rigid_motion.m
37840 0a 25 0a 25 5b 59 2c 64 59 64 6f 6d 2c 64 59 64 54 5d 20 3d 20 72 69 67 69 64 5f 6d 6f 74 69 6f .%.%[Y,dYdom,dYdT].=.rigid_motio
37860 6e 28 58 2c 6f 6d 2c 54 29 0a 25 0a 25 43 6f 6d 70 75 74 65 73 20 74 68 65 20 72 69 67 69 64 20 n(X,om,T).%.%Computes.the.rigid.
37880 6d 6f 74 69 6f 6e 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 59 20 3d 20 52 2a 58 2b 54 2c motion.transformation.Y.=.R*X+T,
378a0 20 77 68 65 72 65 20 52 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 29 2e 0a 25 0a 25 49 4e 50 .where.R.=.rodrigues(om)..%.%INP
378c0 55 54 3a 20 58 3a 20 33 44 20 73 74 72 75 63 74 75 72 65 20 69 6e 20 74 68 65 20 77 6f 72 6c 64 UT:.X:.3D.structure.in.the.world
378e0 20 63 6f 6f 72 64 69 6e 61 74 65 20 66 72 61 6d 65 20 28 33 78 4e 20 6d 61 74 72 69 78 20 66 6f .coordinate.frame.(3xN.matrix.fo
37900 72 20 4e 20 70 6f 69 6e 74 73 29 0a 25 20 20 20 20 20 20 20 28 6f 6d 2c 54 29 3a 20 52 69 67 69 r.N.points).%.......(om,T):.Rigi
37920 64 20 6d 6f 74 69 6f 6e 20 70 61 72 61 6d 65 74 65 72 73 20 62 65 74 77 65 65 6e 20 77 6f 72 6c d.motion.parameters.between.worl
37940 64 20 63 6f 6f 72 64 69 6e 61 74 65 20 66 72 61 6d 65 20 61 6e 64 20 63 61 6d 65 72 61 20 72 65 d.coordinate.frame.and.camera.re
37960 66 65 72 65 6e 63 65 20 66 72 61 6d 65 0a 25 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 6d ference.frame.%...............om
37980 3a 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 28 33 78 31 20 76 65 63 74 6f 72 29 3b 20 :.rotation.vector.(3x1.vector);.
379a0 54 3a 20 74 72 61 6e 73 6c 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 28 33 78 31 20 76 65 63 74 6f T:.translation.vector.(3x1.vecto
379c0 72 29 0a 25 0a 25 4f 55 54 50 55 54 3a 20 59 3a 20 33 44 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 r).%.%OUTPUT:.Y:.3D.coordinates.
379e0 6f 66 20 74 68 65 20 73 74 72 75 63 74 75 72 65 20 70 6f 69 6e 74 73 20 69 6e 20 74 68 65 20 63 of.the.structure.points.in.the.c
37a00 61 6d 65 72 61 20 72 65 66 65 72 65 6e 63 65 20 66 72 61 6d 65 20 28 33 78 4e 20 6d 61 74 72 69 amera.reference.frame.(3xN.matri
37a20 78 20 66 6f 72 20 4e 20 70 6f 69 6e 74 73 29 0a 25 20 20 20 20 20 20 20 20 64 59 64 6f 6d 3a 20 x.for.N.points).%........dYdom:.
37a40 44 65 72 69 76 61 74 69 76 65 20 6f 66 20 59 20 77 69 74 68 20 72 65 73 70 65 63 74 20 74 6f 20 Derivative.of.Y.with.respect.to.
37a60 6f 6d 20 28 28 33 4e 29 78 33 20 6d 61 74 72 69 78 29 0a 25 20 20 20 20 20 20 20 20 64 59 64 54 om.((3N)x3.matrix).%........dYdT
37a80 3a 20 44 65 72 69 76 61 74 69 76 65 20 6f 66 20 59 20 77 69 74 68 20 72 65 73 70 65 63 74 20 74 :.Derivative.of.Y.with.respect.t
37aa0 6f 20 54 20 28 28 33 4e 29 78 33 20 6d 61 74 72 69 78 29 0a 25 0a 25 44 65 66 69 6e 69 74 69 6f o.T.((3N)x3.matrix).%.%Definitio
37ac0 6e 73 3a 0a 25 4c 65 74 20 50 20 62 65 20 61 20 70 6f 69 6e 74 20 69 6e 20 33 44 20 6f 66 20 63 ns:.%Let.P.be.a.point.in.3D.of.c
37ae0 6f 6f 72 64 69 6e 61 74 65 73 20 58 20 69 6e 20 74 68 65 20 77 6f 72 6c 64 20 72 65 66 65 72 65 oordinates.X.in.the.world.refere
37b00 6e 63 65 20 66 72 61 6d 65 20 28 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 6d 61 74 72 69 78 20 nce.frame.(stored.in.the.matrix.
37b20 58 29 0a 25 54 68 65 20 63 6f 6f 72 64 69 6e 61 74 65 20 76 65 63 74 6f 72 20 6f 66 20 50 20 69 X).%The.coordinate.vector.of.P.i
37b40 6e 20 74 68 65 20 63 61 6d 65 72 61 20 72 65 66 65 72 65 6e 63 65 20 66 72 61 6d 65 20 69 73 3a n.the.camera.reference.frame.is:
37b60 20 59 20 3d 20 52 2a 58 20 2b 20 54 0a 25 77 68 65 72 65 20 52 20 69 73 20 74 68 65 20 72 6f 74 .Y.=.R*X.+.T.%where.R.is.the.rot
37b80 61 74 69 6f 6e 20 6d 61 74 72 69 78 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 ation.matrix.corresponding.to.th
37ba0 65 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 6f 6d 3a 20 52 20 3d 20 72 6f 64 72 69 67 e.rotation.vector.om:.R.=.rodrig
37bc0 75 65 73 28 6f 6d 29 3b 0a 25 0a 25 49 6d 70 6f 72 74 61 6e 74 20 66 75 6e 63 74 69 6f 6e 20 63 ues(om);.%.%Important.function.c
37be0 61 6c 6c 65 64 20 77 69 74 68 69 6e 20 74 68 61 74 20 70 72 6f 67 72 61 6d 3a 0a 25 0a 25 72 6f alled.within.that.program:.%.%ro
37c00 64 72 69 67 75 65 73 2e 6d 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 72 6f 74 61 74 69 6f 6e drigues.m:.Computes.the.rotation
37c20 20 6d 61 74 72 69 78 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 61 20 72 6f 74 61 74 .matrix.corresponding.to.a.rotat
37c40 69 6f 6e 20 76 65 63 74 6f 72 0a 0a 0a 0a 69 66 20 6e 61 72 67 69 6e 20 3c 20 33 2c 0a 20 20 20 ion.vector....if.nargin.<.3,....
37c60 54 20 3d 20 7a 65 72 6f 73 28 33 2c 31 29 3b 0a 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3c 20 32 T.=.zeros(3,1);....if.nargin.<.2
37c80 2c 0a 20 20 20 20 20 20 6f 6d 20 3d 20 7a 65 72 6f 73 28 33 2c 31 29 3b 0a 20 20 20 20 20 20 69 ,.......om.=.zeros(3,1);.......i
37ca0 66 20 6e 61 72 67 69 6e 20 3c 20 31 2c 0a 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 28 27 4e 65 f.nargin.<.1,..........error('Ne
37cc0 65 64 20 61 74 20 6c 65 61 73 74 20 61 20 33 44 20 73 74 72 75 63 74 75 72 65 20 61 73 20 69 6e ed.at.least.a.3D.structure.as.in
37ce0 70 75 74 20 28 69 6e 20 72 69 67 69 64 5f 6d 6f 74 69 6f 6e 2e 6d 29 27 29 3b 0a 20 20 20 20 20 put.(in.rigid_motion.m)');......
37d00 20 20 20 20 72 65 74 75 72 6e 3b 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 65 6e 64 3b 0a 65 ....return;.......end;....end;.e
37d20 6e 64 3b 0a 0a 0a 5b 52 2c 64 52 64 6f 6d 5d 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 29 3b nd;...[R,dRdom].=.rodrigues(om);
37d40 0a 0a 5b 6d 2c 6e 5d 20 3d 20 73 69 7a 65 28 58 29 3b 0a 0a 59 20 3d 20 52 2a 58 20 2b 20 54 2a ..[m,n].=.size(X);..Y.=.R*X.+.T*
37d60 6f 6e 65 73 28 31 2c 6e 29 3b 0a 0a 69 66 20 6e 61 72 67 6f 75 74 20 3e 20 31 2c 0a 20 20 20 0a ones(1,n);..if.nargout.>.1,.....
37d80 0a 64 59 64 52 20 3d 20 7a 65 72 6f 73 28 33 2a 6e 2c 39 29 3b 0a 64 59 64 54 20 3d 20 7a 65 72 .dYdR.=.zeros(3*n,9);.dYdT.=.zer
37da0 6f 73 28 33 2a 6e 2c 33 29 3b 0a 0a 64 59 64 52 28 31 3a 33 3a 65 6e 64 2c 31 3a 33 3a 65 6e 64 os(3*n,3);..dYdR(1:3:end,1:3:end
37dc0 29 20 3d 20 20 58 27 3b 0a 64 59 64 52 28 32 3a 33 3a 65 6e 64 2c 32 3a 33 3a 65 6e 64 29 20 3d ).=..X';.dYdR(2:3:end,2:3:end).=
37de0 20 20 58 27 3b 0a 64 59 64 52 28 33 3a 33 3a 65 6e 64 2c 33 3a 33 3a 65 6e 64 29 20 3d 20 20 58 ..X';.dYdR(3:3:end,3:3:end).=..X
37e00 27 3b 0a 0a 64 59 64 54 28 31 3a 33 3a 65 6e 64 2c 31 29 20 3d 20 20 6f 6e 65 73 28 6e 2c 31 29 ';..dYdT(1:3:end,1).=..ones(n,1)
37e20 3b 0a 64 59 64 54 28 32 3a 33 3a 65 6e 64 2c 32 29 20 3d 20 20 6f 6e 65 73 28 6e 2c 31 29 3b 0a ;.dYdT(2:3:end,2).=..ones(n,1);.
37e40 64 59 64 54 28 33 3a 33 3a 65 6e 64 2c 33 29 20 3d 20 20 6f 6e 65 73 28 6e 2c 31 29 3b 0a 0a 64 dYdT(3:3:end,3).=..ones(n,1);..d
37e60 59 64 6f 6d 20 3d 20 64 59 64 52 20 2a 20 64 52 64 6f 6d 3b 0a 0a 65 6e 64 3b 0a 0a 0a 0a 0a 74 Ydom.=.dYdR.*.dRdom;..end;.....t
37e80 72 61 63 74 20 67 72 69 64 20 63 6f 72 6e 65 72 73 2e 5c 6e 27 2c 6b 6b 29 0a 20 20 20 20 20 20 ract.grid.corners.\n',kk).......
37ea0 65 6e 64 3b 0a 20 20 20 20 20 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 20 3d 20 30 end;.......active_images(kk).=.0
37ec0 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b ;....end;....if.active_images(kk
37ee0 29 2c 0a 20 20 20 20 20 20 65 76 61 6c 28 5b 27 48 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 ),.......eval(['H_'.num2str(kk).
37f00 27 20 3d 20 63 6f 6d 70 75 74 65 5f 68 6f 6d 6f 67 72 61 70 68 79 28 78 5f 6b 6b 2c 58 5f 6b 6b '.=.compute_homography(x_kk,X_kk
37f20 28 31 3a 32 2c 3a 29 29 3b 27 5d 29 3b 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 65 76 61 6c (1:2,:));']);....else.......eval
37f40 28 5b 27 48 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 (['H_'.num2str(kk).'.=.NaN*ones(
37f60 33 2c 33 29 3b 27 5d 29 3b 0a 20 20 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 63 68 65 63 6b 5f 61 63 3,3);']);....end;.end;..check_ac
37f80 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 0a 25 20 69 6e 69 74 69 61 6c 20 67 75 65 73 73 20 66 6f tive_images;..%.initial.guess.fo
37fa0 72 20 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 61 6e 64 20 64 69 73 74 6f 72 74 69 6f 6e r.principal.point.and.distortion
37fc0 3a 0a 0a 69 66 20 7e 65 78 69 73 74 28 27 6e 78 27 29 2c 20 5b 6e 79 2c 6e 78 5d 20 3d 20 73 69 :..if.~exist('nx'),.[ny,nx].=.si
37fe0 7a 65 28 49 29 3b 20 65 6e 64 3b 0a 0a 63 5f 69 6e 69 74 20 3d 20 5b 6e 78 3b 6e 79 5d 2f 32 20 ze(I);.end;..c_init.=.[nx;ny]/2.
38000 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f TOOLBOX_calib/compute_extrinsic_
38020 69 6e 69 74 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 init.m..........................
38040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
38060 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
38080 20 20 20 36 36 34 30 20 20 37 30 32 34 30 33 37 33 31 31 20 20 31 33 33 36 36 00 20 00 00 00 00 ...6640..7024037311..13366......
380a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
380c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
380e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
38100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
38120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
38140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
38160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
38180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
381a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
381c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
381e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
38200 66 75 6e 63 74 69 6f 6e 20 5b 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 52 63 6b 6b 5d 20 3d 20 63 6f 6d function.[omckk,Tckk,Rckk].=.com
38220 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 69 6e 69 74 28 78 5f 6b 6b 2c 58 5f 6b 6b 2c 66 63 pute_extrinsic_init(x_kk,X_kk,fc
38240 2c 63 63 2c 6b 63 29 2c 0a 0a 25 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 0a 25 0a 25 ,cc,kc),..%compute_extrinsic.%.%
38260 5b 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 52 63 6b 6b 5d 20 3d 20 63 6f 6d 70 75 74 65 5f 65 78 74 72 [omckk,Tckk,Rckk].=.compute_extr
38280 69 6e 73 69 63 5f 69 6e 69 74 28 78 5f 6b 6b 2c 58 5f 6b 6b 2c 66 63 2c 63 63 2c 6b 63 29 0a 25 insic_init(x_kk,X_kk,fc,cc,kc).%
382a0 0a 25 43 6f 6d 70 75 74 65 73 20 74 68 65 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 .%Computes.the.extrinsic.paramet
382c0 65 72 73 20 61 74 74 61 63 68 65 64 20 74 6f 20 61 20 33 44 20 73 74 72 75 63 74 75 72 65 20 58 ers.attached.to.a.3D.structure.X
382e0 5f 6b 6b 20 67 69 76 65 6e 20 69 74 73 20 70 72 6f 6a 65 63 74 69 6f 6e 0a 25 6f 6e 20 74 68 65 _kk.given.its.projection.%on.the
38300 20 69 6d 61 67 65 20 70 6c 61 6e 65 20 78 5f 6b 6b 20 61 6e 64 20 74 68 65 20 69 6e 74 72 69 6e .image.plane.x_kk.and.the.intrin
38320 73 69 63 20 63 61 6d 65 72 61 20 70 61 72 61 6d 65 74 65 72 73 20 66 63 2c 20 63 63 20 61 6e 64 sic.camera.parameters.fc,.cc.and
38340 20 6b 63 2e 0a 25 57 6f 72 6b 73 20 77 69 74 68 20 70 6c 61 6e 61 72 20 61 6e 64 20 6e 6f 6e 2d .kc..%Works.with.planar.and.non-
38360 70 6c 61 6e 61 72 20 73 74 72 75 63 74 75 72 65 73 2e 0a 25 0a 25 49 4e 50 55 54 3a 20 78 5f 6b planar.structures..%.%INPUT:.x_k
38380 6b 3a 20 46 65 61 74 75 72 65 20 6c 6f 63 61 74 69 6f 6e 73 20 6f 6e 20 74 68 65 20 69 6d 61 67 k:.Feature.locations.on.the.imag
383a0 65 73 0a 25 20 20 20 20 20 20 20 58 5f 6b 6b 3a 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 67 es.%.......X_kk:.Corresponding.g
383c0 72 69 64 20 63 6f 6f 72 64 69 6e 61 74 65 73 0a 25 20 20 20 20 20 20 20 66 63 3a 20 43 61 6d 65 rid.coordinates.%.......fc:.Came
383e0 72 61 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 0a 25 20 20 20 20 20 20 20 63 63 3a 20 50 72 69 6e ra.focal.length.%.......cc:.Prin
38400 63 69 70 61 6c 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 0a 25 20 20 20 20 20 20 20 cipal.point.coordinates.%.......
38420 6b 63 3a 20 44 69 73 74 6f 72 74 69 6f 6e 20 63 6f 65 66 66 69 63 69 65 6e 74 73 0a 25 0a 25 4f kc:.Distortion.coefficients.%.%O
38440 55 54 50 55 54 3a 20 6f 6d 63 6b 6b 3a 20 33 44 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 UTPUT:.omckk:.3D.rotation.vector
38460 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 67 72 69 64 20 70 6f 73 69 74 69 6f 6e 73 20 .attached.to.the.grid.positions.
38480 69 6e 20 73 70 61 63 65 0a 25 20 20 20 20 20 20 20 20 54 63 6b 6b 3a 20 33 44 20 74 72 61 6e 73 in.space.%........Tckk:.3D.trans
384a0 6c 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 67 72 lation.vector.attached.to.the.gr
384c0 69 64 20 70 6f 73 69 74 69 6f 6e 73 20 69 6e 20 73 70 61 63 65 0a 25 20 20 20 20 20 20 20 20 52 id.positions.in.space.%........R
384e0 63 6b 6b 3a 20 33 44 20 72 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 63 65 73 20 63 6f 72 72 65 73 ckk:.3D.rotation.matrices.corres
38500 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 6f 6d 63 20 76 65 63 74 6f 72 73 0a 25 0a 25 4d 65 ponding.to.the.omc.vectors.%.%Me
38520 74 68 6f 64 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 6e 6f 72 6d 61 6c 69 7a 65 64 20 70 6f thod:.Computes.the.normalized.po
38540 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 2c 20 74 68 65 6e 20 63 6f 6d 70 75 74 65 73 20 74 int.coordinates,.then.computes.t
38560 68 65 20 33 44 20 70 6f 73 65 0a 25 0a 25 49 6d 70 6f 72 74 61 6e 74 20 66 75 6e 63 74 69 6f 6e he.3D.pose.%.%Important.function
38580 73 20 63 61 6c 6c 65 64 20 77 69 74 68 69 6e 20 74 68 61 74 20 70 72 6f 67 72 61 6d 3a 0a 25 0a s.called.within.that.program:.%.
385a0 25 6e 6f 72 6d 61 6c 69 7a 65 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 6e 6f 72 6d 61 6c 69 %normalize:.Computes.the.normali
385c0 7a 65 20 69 6d 61 67 65 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 2e 0a 25 0a 25 70 ze.image.point.coordinates..%.%p
385e0 6f 73 65 33 44 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 33 44 20 70 6f 73 65 20 6f 66 20 74 ose3D:.Computes.the.3D.pose.of.t
38600 68 65 20 73 74 72 75 63 74 75 72 65 20 67 69 76 65 6e 20 74 68 65 20 6e 6f 72 6d 61 6c 69 7a 65 he.structure.given.the.normalize
38620 64 20 69 6d 61 67 65 20 70 72 6f 6a 65 63 74 69 6f 6e 2e 0a 25 0a 25 70 72 6f 6a 65 63 74 5f 70 d.image.projection..%.%project_p
38640 6f 69 6e 74 73 2e 6d 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 32 44 20 69 6d 61 67 65 20 70 oints.m:.Computes.the.2D.image.p
38660 72 6f 6a 65 63 74 69 6f 6e 73 20 6f 66 20 61 20 73 65 74 20 6f 66 20 33 44 20 70 6f 69 6e 74 73 rojections.of.a.set.of.3D.points
38680 0a 0a 0a 0a 0a 69 66 20 6e 61 72 67 69 6e 20 3c 20 35 2c 0a 20 20 20 6b 63 20 3d 20 7a 65 72 6f .....if.nargin.<.5,....kc.=.zero
386a0 73 28 34 2c 31 29 3b 0a 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3c 20 34 2c 0a 20 20 20 20 20 20 s(4,1);....if.nargin.<.4,.......
386c0 63 63 20 3d 20 7a 65 72 6f 73 28 32 2c 31 29 3b 0a 20 20 20 20 20 20 69 66 20 6e 61 72 67 69 6e cc.=.zeros(2,1);.......if.nargin
386e0 20 3c 20 33 2c 0a 20 20 20 20 20 20 20 20 20 66 63 20 3d 20 6f 6e 65 73 28 32 2c 31 29 3b 0a 20 .<.3,..........fc.=.ones(2,1);..
38700 20 20 20 20 20 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3c 20 32 2c 0a 20 20 20 20 20 20 20 20 20 ........if.nargin.<.2,..........
38720 20 20 20 65 72 72 6f 72 28 27 4e 65 65 64 20 32 44 20 70 72 6f 6a 65 63 74 69 6f 6e 73 20 61 6e ...error('Need.2D.projections.an
38740 64 20 33 44 20 70 6f 69 6e 74 73 20 28 69 6e 20 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 d.3D.points.(in.compute_extrinsi
38760 63 2e 6d 29 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0a 20 20 20 20 c.m)');.............return;.....
38780 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 65 6e 64 3b 0a 65 6e 64 .....end;.......end;....end;.end
387a0 3b 0a 0a 0a 0a 25 20 43 6f 6d 70 75 74 65 20 74 68 65 20 6e 6f 72 6d 61 6c 69 7a 65 64 20 63 6f ;....%.Compute.the.normalized.co
387c0 6f 72 64 69 6e 61 74 65 73 3a 0a 0a 78 6e 20 3d 20 6e 6f 72 6d 61 6c 69 7a 65 28 78 5f 6b 6b 2c ordinates:..xn.=.normalize(x_kk,
387e0 66 63 2c 63 63 2c 6b 63 29 3b 0a 0a 0a 0a 4e 70 20 3d 20 73 69 7a 65 28 78 6e 2c 32 29 3b 0a 0a fc,cc,kc);....Np.=.size(xn,2);..
38800 25 25 20 43 68 65 63 6b 20 66 6f 72 20 70 6c 61 6e 61 72 69 74 79 20 6f 66 20 74 68 65 20 73 74 %%.Check.for.planarity.of.the.st
38820 72 75 63 74 75 72 65 3a 0a 0a 58 5f 6d 65 61 6e 20 3d 20 6d 65 61 6e 28 58 5f 6b 6b 27 29 27 3b ructure:..X_mean.=.mean(X_kk')';
38840 0a 0a 59 20 3d 20 58 5f 6b 6b 20 2d 20 28 58 5f 6d 65 61 6e 2a 6f 6e 65 73 28 31 2c 4e 70 29 29 ..Y.=.X_kk.-.(X_mean*ones(1,Np))
38860 3b 0a 0a 59 59 20 3d 20 59 2a 59 27 3b 0a 0a 5b 55 2c 53 2c 56 5d 20 3d 20 73 76 64 28 59 59 29 ;..YY.=.Y*Y';..[U,S,V].=.svd(YY)
38880 3b 0a 0a 72 20 3d 20 53 28 33 2c 33 29 2f 53 28 32 2c 32 29 3b 0a 0a 69 66 20 28 72 20 3c 20 31 ;..r.=.S(3,3)/S(2,2);..if.(r.<.1
388a0 65 2d 33 29 7c 28 4e 70 20 3c 20 36 29 2c 20 25 31 65 2d 33 2c 20 25 31 65 2d 34 2c 20 25 6e 6f e-3)|(Np.<.6),.%1e-3,.%1e-4,.%no
388c0 72 6d 28 58 5f 6b 6b 28 33 2c 3a 29 29 20 3c 20 65 70 73 2c 20 25 20 54 65 73 74 20 6f 66 20 70 rm(X_kk(3,:)).<.eps,.%.Test.of.p
388e0 6c 61 6e 61 72 69 74 79 0a 20 20 20 0a 20 20 20 25 66 70 72 69 6e 74 66 28 31 2c 27 50 6c 61 6e lanarity........%fprintf(1,'Plan
38900 61 72 20 73 74 72 75 63 74 75 72 65 20 64 65 74 65 63 74 65 64 3a 20 72 3d 25 66 5c 6e 27 2c 72 ar.structure.detected:.r=%f\n',r
38920 29 3b 0a 0a 20 20 20 25 20 54 72 61 6e 73 66 6f 72 6d 20 74 68 65 20 70 6c 61 6e 65 20 74 6f 20 );.....%.Transform.the.plane.to.
38940 62 72 69 6e 67 20 69 74 20 69 6e 20 74 68 65 20 5a 3d 30 20 70 6c 61 6e 65 3a 0a 20 20 20 0a 20 bring.it.in.the.Z=0.plane:......
38960 20 20 52 5f 74 72 61 6e 73 66 6f 72 6d 20 3d 20 56 27 3b 0a 20 20 20 0a 20 20 20 69 66 20 64 65 ..R_transform.=.V';........if.de
38980 74 28 52 5f 74 72 61 6e 73 66 6f 72 6d 29 20 3c 20 30 2c 20 52 5f 74 72 61 6e 73 66 6f 72 6d 20 t(R_transform).<.0,.R_transform.
389a0 3d 20 2d 52 5f 74 72 61 6e 73 66 6f 72 6d 3b 20 65 6e 64 3b 0a 20 20 20 0a 09 54 5f 74 72 61 6e =.-R_transform;.end;......T_tran
389c0 73 66 6f 72 6d 20 3d 20 2d 28 52 5f 74 72 61 6e 73 66 6f 72 6d 29 2a 58 5f 6d 65 61 6e 3b 0a 0a sform.=.-(R_transform)*X_mean;..
389e0 09 58 5f 6e 65 77 20 3d 20 52 5f 74 72 61 6e 73 66 6f 72 6d 2a 58 5f 6b 6b 20 2b 20 54 5f 74 72 .X_new.=.R_transform*X_kk.+.T_tr
38a00 61 6e 73 66 6f 72 6d 2a 6f 6e 65 73 28 31 2c 4e 70 29 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 ansform*ones(1,Np);............%
38a20 20 43 6f 6d 70 75 74 65 20 74 68 65 20 70 6c 61 6e 61 72 20 68 6f 6d 6f 67 72 61 70 68 79 3a 0a .Compute.the.planar.homography:.
38a40 20 20 20 0a 20 20 20 48 20 3d 20 63 6f 6d 70 75 74 65 5f 68 6f 6d 6f 67 72 61 70 68 79 20 28 78 .......H.=.compute_homography.(x
38a60 6e 2c 58 5f 6e 65 77 28 31 3a 32 2c 3a 29 29 3b 0a 20 20 20 0a 20 20 20 25 20 44 65 2d 65 6d 62 n,X_new(1:2,:));........%.De-emb
38a80 65 64 20 74 68 65 20 6d 6f 74 69 6f 6e 20 70 61 72 61 6d 65 74 65 72 73 20 66 72 6f 6d 20 74 68 ed.the.motion.parameters.from.th
38aa0 65 20 68 6f 6d 6f 67 72 61 70 68 79 3a 0a 20 20 20 0a 20 20 20 73 63 20 3d 20 6d 65 61 6e 28 5b e.homography:........sc.=.mean([
38ac0 6e 6f 72 6d 28 48 28 3a 2c 31 29 29 3b 6e 6f 72 6d 28 48 28 3a 2c 32 29 29 5d 29 3b 0a 20 20 20 norm(H(:,1));norm(H(:,2))]);....
38ae0 0a 20 20 20 48 20 3d 20 48 2f 73 63 3b 0a 20 20 20 0a 20 20 20 6f 6d 63 6b 6b 20 3d 20 72 6f 64 ....H.=.H/sc;........omckk.=.rod
38b00 72 69 67 75 65 73 28 5b 48 28 3a 2c 31 3a 32 29 20 63 72 6f 73 73 28 48 28 3a 2c 31 29 2c 48 28 rigues([H(:,1:2).cross(H(:,1),H(
38b20 3a 2c 32 29 29 5d 29 3b 0a 20 20 20 52 63 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 :,2))]);....Rckk.=.rodrigues(omc
38b40 6b 6b 29 3b 0a 20 20 20 54 63 6b 6b 20 3d 20 48 28 3a 2c 33 29 3b 0a 20 20 20 0a 20 20 20 25 49 kk);....Tckk.=.H(:,3);........%I
38b60 66 20 58 63 20 3d 20 52 63 6b 6b 20 2a 20 58 5f 6e 65 77 20 2b 20 54 63 6b 6b 2c 20 74 68 65 6e f.Xc.=.Rckk.*.X_new.+.Tckk,.then
38b80 20 58 63 20 3d 20 52 63 6b 6b 20 2a 20 52 5f 74 72 61 6e 73 66 6f 72 6d 20 2a 20 58 5f 6b 6b 20 .Xc.=.Rckk.*.R_transform.*.X_kk.
38ba0 2b 20 54 63 6b 6b 20 2b 20 54 5f 74 72 61 6e 73 66 6f 72 6d 0a 20 20 20 0a 20 20 20 54 63 6b 6b +.Tckk.+.T_transform........Tckk
38bc0 20 3d 20 54 63 6b 6b 20 2b 20 52 63 6b 6b 2a 20 54 5f 74 72 61 6e 73 66 6f 72 6d 3b 0a 20 20 20 .=.Tckk.+.Rckk*.T_transform;....
38be0 52 63 6b 6b 20 3d 20 52 63 6b 6b 20 2a 20 52 5f 74 72 61 6e 73 66 6f 72 6d 3b 0a 0a 20 20 20 6f Rckk.=.Rckk.*.R_transform;.....o
38c00 6d 63 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 28 52 63 6b 6b 29 3b 0a 20 20 20 52 63 6b 6b 20 mckk.=.rodrigues(Rckk);....Rckk.
38c20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 6b 6b 29 3b 0a 20 20 20 0a 20 20 20 0a 65 6c 73 65 =.rodrigues(omckk);.........else
38c40 0a 20 20 20 0a 20 20 20 25 66 70 72 69 6e 74 66 28 31 2c 27 4e 6f 6e 20 70 6c 61 6e 61 72 20 73 ........%fprintf(1,'Non.planar.s
38c60 74 72 75 63 74 75 72 65 20 64 65 74 65 63 74 65 64 3a 20 72 3d 25 66 5c 6e 27 2c 72 29 3b 0a 0a tructure.detected:.r=%f\n',r);..
38c80 20 20 20 25 20 43 6f 6d 70 75 74 65 73 20 61 6e 20 69 6e 69 74 69 61 6c 20 67 75 65 73 73 20 66 ...%.Computes.an.initial.guess.f
38ca0 6f 72 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 28 77 6f 72 6b 73 20 66 or.extrinsic.parameters.(works.f
38cc0 6f 72 20 67 65 6e 65 72 61 6c 20 33 64 20 73 74 72 75 63 74 75 72 65 2c 20 6e 6f 74 20 70 6c 61 or.general.3d.structure,.not.pla
38ce0 6e 61 72 21 21 21 29 3a 0a 20 20 20 25 20 54 68 65 20 44 4c 54 20 6d 65 74 68 6f 64 20 69 73 20 nar!!!):....%.The.DLT.method.is.
38d00 61 70 70 6c 69 65 64 20 68 65 72 65 21 21 0a 20 20 20 0a 20 20 20 4a 20 3d 20 7a 65 72 6f 73 28 applied.here!!........J.=.zeros(
38d20 32 2a 4e 70 2c 31 32 29 3b 0a 09 0a 09 78 58 20 3d 20 28 6f 6e 65 73 28 33 2c 31 29 2a 78 6e 28 2*Np,12);....xX.=.(ones(3,1)*xn(
38d40 31 2c 3a 29 29 2e 2a 58 5f 6b 6b 3b 0a 09 79 58 20 3d 20 28 6f 6e 65 73 28 33 2c 31 29 2a 78 6e 1,:)).*X_kk;..yX.=.(ones(3,1)*xn
38d60 28 32 2c 3a 29 29 2e 2a 58 5f 6b 6b 3b 0a 09 0a 09 4a 28 31 3a 32 3a 65 6e 64 2c 5b 31 20 34 20 (2,:)).*X_kk;....J(1:2:end,[1.4.
38d80 37 5d 29 20 3d 20 2d 58 5f 6b 6b 27 3b 0a 09 4a 28 32 3a 32 3a 65 6e 64 2c 5b 32 20 35 20 38 5d 7]).=.-X_kk';..J(2:2:end,[2.5.8]
38da0 29 20 3d 20 58 5f 6b 6b 27 3b 0a 09 4a 28 31 3a 32 3a 65 6e 64 2c 5b 33 20 36 20 39 5d 29 20 3d ).=.X_kk';..J(1:2:end,[3.6.9]).=
38dc0 20 78 58 27 3b 0a 09 4a 28 32 3a 32 3a 65 6e 64 2c 5b 33 20 36 20 39 5d 29 20 3d 20 2d 79 58 27 .xX';..J(2:2:end,[3.6.9]).=.-yX'
38de0 3b 0a 09 4a 28 31 3a 32 3a 65 6e 64 2c 31 32 29 20 3d 20 78 6e 28 31 2c 3a 29 27 3b 0a 09 4a 28 ;..J(1:2:end,12).=.xn(1,:)';..J(
38e00 32 3a 32 3a 65 6e 64 2c 31 32 29 20 3d 20 2d 78 6e 28 32 2c 3a 29 27 3b 0a 09 4a 28 31 3a 32 3a 2:2:end,12).=.-xn(2,:)';..J(1:2:
38e20 65 6e 64 2c 31 30 29 20 3d 20 2d 6f 6e 65 73 28 4e 70 2c 31 29 3b 0a 09 4a 28 32 3a 32 3a 65 6e end,10).=.-ones(Np,1);..J(2:2:en
38e40 64 2c 31 31 29 20 3d 20 6f 6e 65 73 28 4e 70 2c 31 29 3b 0a 09 0a 09 4a 4a 20 3d 20 4a 27 2a 4a d,11).=.ones(Np,1);....JJ.=.J'*J
38e60 3b 0a 09 5b 55 2c 53 2c 56 5d 20 3d 20 73 76 64 28 4a 4a 29 3b 0a 20 20 20 0a 20 20 20 52 52 20 ;..[U,S,V].=.svd(JJ);........RR.
38e80 3d 20 72 65 73 68 61 70 65 28 56 28 31 3a 39 2c 31 32 29 2c 33 2c 33 29 3b 0a 20 20 20 0a 20 20 =.reshape(V(1:9,12),3,3);.......
38ea0 20 69 66 20 64 65 74 28 52 52 29 20 3c 20 30 2c 0a 20 20 20 20 20 20 56 28 3a 2c 31 32 29 20 3d .if.det(RR).<.0,.......V(:,12).=
38ec0 20 2d 56 28 3a 2c 31 32 29 3b 0a 20 20 20 20 20 20 52 52 20 3d 20 2d 52 52 3b 0a 20 20 20 65 6e .-V(:,12);.......RR.=.-RR;....en
38ee0 64 3b 0a 20 20 20 0a 20 20 20 5b 55 72 2c 53 72 2c 56 72 5d 20 3d 20 73 76 64 28 52 52 29 3b 0a d;........[Ur,Sr,Vr].=.svd(RR);.
38f00 20 20 20 0a 20 20 20 52 63 6b 6b 20 3d 20 55 72 2a 56 72 27 3b 0a 20 20 20 0a 20 20 20 73 63 20 .......Rckk.=.Ur*Vr';........sc.
38f20 3d 20 6e 6f 72 6d 28 56 28 31 3a 39 2c 31 32 29 29 20 2f 20 6e 6f 72 6d 28 52 63 6b 6b 28 3a 29 =.norm(V(1:9,12))./.norm(Rckk(:)
38f40 29 3b 0a 20 20 20 54 63 6b 6b 20 3d 20 56 28 31 30 3a 31 32 2c 31 32 29 2f 73 63 3b 0a 20 20 20 );....Tckk.=.V(10:12,12)/sc;....
38f60 0a 09 6f 6d 63 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 28 52 63 6b 6b 29 3b 0a 20 20 20 52 63 ..omckk.=.rodrigues(Rckk);....Rc
38f80 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 6b 6b 29 3b 0a 20 20 20 0a 65 6e 64 3b 0a kk.=.rodrigues(omckk);.....end;.
38fa0 69 74 20 3d 20 73 71 72 74 28 61 62 73 28 31 2e 2f 28 69 6e 76 28 41 27 2a 41 29 2a 41 27 2a 62 it.=.sqrt(abs(1./(inv(A'*A)*A'*b
38fc0 29 29 29 3b 20 25 20 69 66 20 75 73 69 6e 67 20 61 20 74 77 6f 2d 66 6f 63 61 6c 20 6d 6f 64 65 )));.%.if.using.a.two-focal.mode
38fe0 6c 20 66 6f 72 20 69 6e 69 74 69 61 6c 20 67 75 65 73 73 0a 0a 25 66 5f 69 6e 69 74 20 3d 20 73 l.for.initial.guess..%f_init.=.s
39000 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f TOOLBOX_calib/compute_extrinsic_
39020 72 65 66 69 6e 65 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 refine.m........................
39040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
39060 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
39080 20 20 20 34 36 32 33 20 20 37 30 32 34 30 33 37 33 31 31 20 20 31 33 36 37 32 00 20 00 00 00 00 ...4623..7024037311..13672......
390a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
390c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
390e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
39100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
39120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
39140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
39160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
39180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
391a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
391c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
391e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
39200 66 75 6e 63 74 69 6f 6e 20 5b 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 52 63 6b 6b 2c 4a 4a 5d 20 3d 20 function.[omckk,Tckk,Rckk,JJ].=.
39220 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 72 65 66 69 6e 65 28 6f 6d 63 5f 69 6e 69 compute_extrinsic_refine(omc_ini
39240 74 2c 54 63 5f 69 6e 69 74 2c 78 5f 6b 6b 2c 58 5f 6b 6b 2c 66 63 2c 63 63 2c 6b 63 2c 4d 61 78 t,Tc_init,x_kk,X_kk,fc,cc,kc,Max
39260 49 74 65 72 2c 74 68 72 65 73 68 5f 63 6f 6e 64 29 2c 0a 0a 25 63 6f 6d 70 75 74 65 5f 65 78 74 Iter,thresh_cond),..%compute_ext
39280 72 69 6e 73 69 63 0a 25 0a 25 5b 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 52 63 6b 6b 5d 20 3d 20 63 6f rinsic.%.%[omckk,Tckk,Rckk].=.co
392a0 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 72 65 66 69 6e 65 28 78 5f 6b 6b 2c 58 5f 6b 6b mpute_extrinsic_refine(x_kk,X_kk
392c0 2c 66 63 2c 63 63 2c 6b 63 2c 4d 61 78 49 74 65 72 29 0a 25 0a 25 43 6f 6d 70 75 74 65 73 20 74 ,fc,cc,kc,MaxIter).%.%Computes.t
392e0 68 65 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 61 74 74 61 63 68 65 64 he.extrinsic.parameters.attached
39300 20 74 6f 20 61 20 33 44 20 73 74 72 75 63 74 75 72 65 20 58 5f 6b 6b 20 67 69 76 65 6e 20 69 74 .to.a.3D.structure.X_kk.given.it
39320 73 20 70 72 6f 6a 65 63 74 69 6f 6e 0a 25 6f 6e 20 74 68 65 20 69 6d 61 67 65 20 70 6c 61 6e 65 s.projection.%on.the.image.plane
39340 20 78 5f 6b 6b 20 61 6e 64 20 74 68 65 20 69 6e 74 72 69 6e 73 69 63 20 63 61 6d 65 72 61 20 70 .x_kk.and.the.intrinsic.camera.p
39360 61 72 61 6d 65 74 65 72 73 20 66 63 2c 20 63 63 20 61 6e 64 20 6b 63 2e 0a 25 57 6f 72 6b 73 20 arameters.fc,.cc.and.kc..%Works.
39380 77 69 74 68 20 70 6c 61 6e 61 72 20 61 6e 64 20 6e 6f 6e 2d 70 6c 61 6e 61 72 20 73 74 72 75 63 with.planar.and.non-planar.struc
393a0 74 75 72 65 73 2e 0a 25 0a 25 49 4e 50 55 54 3a 20 78 5f 6b 6b 3a 20 46 65 61 74 75 72 65 20 6c tures..%.%INPUT:.x_kk:.Feature.l
393c0 6f 63 61 74 69 6f 6e 73 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 73 0a 25 20 20 20 20 20 20 20 58 ocations.on.the.images.%.......X
393e0 5f 6b 6b 3a 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 67 72 69 64 20 63 6f 6f 72 64 69 6e 61 _kk:.Corresponding.grid.coordina
39400 74 65 73 0a 25 20 20 20 20 20 20 20 66 63 3a 20 43 61 6d 65 72 61 20 66 6f 63 61 6c 20 6c 65 6e tes.%.......fc:.Camera.focal.len
39420 67 74 68 0a 25 20 20 20 20 20 20 20 63 63 3a 20 50 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 gth.%.......cc:.Principal.point.
39440 63 6f 6f 72 64 69 6e 61 74 65 73 0a 25 20 20 20 20 20 20 20 6b 63 3a 20 44 69 73 74 6f 72 74 69 coordinates.%.......kc:.Distorti
39460 6f 6e 20 63 6f 65 66 66 69 63 69 65 6e 74 73 0a 25 20 20 20 20 20 20 20 4d 61 78 49 74 65 72 3a on.coefficients.%.......MaxIter:
39480 20 4d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 69 74 65 72 61 74 69 6f 6e 73 0a 25 0a .Maximum.number.of.iterations.%.
394a0 25 4f 55 54 50 55 54 3a 20 6f 6d 63 6b 6b 3a 20 33 44 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 %OUTPUT:.omckk:.3D.rotation.vect
394c0 6f 72 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 67 72 69 64 20 70 6f 73 69 74 69 6f 6e or.attached.to.the.grid.position
394e0 73 20 69 6e 20 73 70 61 63 65 0a 25 20 20 20 20 20 20 20 20 54 63 6b 6b 3a 20 33 44 20 74 72 61 s.in.space.%........Tckk:.3D.tra
39500 6e 73 6c 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 nslation.vector.attached.to.the.
39520 67 72 69 64 20 70 6f 73 69 74 69 6f 6e 73 20 69 6e 20 73 70 61 63 65 0a 25 20 20 20 20 20 20 20 grid.positions.in.space.%.......
39540 20 52 63 6b 6b 3a 20 33 44 20 72 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 63 65 73 20 63 6f 72 72 .Rckk:.3D.rotation.matrices.corr
39560 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 6f 6d 63 20 76 65 63 74 6f 72 73 0a 0a 25 0a esponding.to.the.omc.vectors..%.
39580 25 4d 65 74 68 6f 64 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 6e 6f 72 6d 61 6c 69 7a 65 64 %Method:.Computes.the.normalized
395a0 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 2c 20 74 68 65 6e 20 63 6f 6d 70 75 74 65 .point.coordinates,.then.compute
395c0 73 20 74 68 65 20 33 44 20 70 6f 73 65 0a 25 0a 25 49 6d 70 6f 72 74 61 6e 74 20 66 75 6e 63 74 s.the.3D.pose.%.%Important.funct
395e0 69 6f 6e 73 20 63 61 6c 6c 65 64 20 77 69 74 68 69 6e 20 74 68 61 74 20 70 72 6f 67 72 61 6d 3a ions.called.within.that.program:
39600 0a 25 0a 25 6e 6f 72 6d 61 6c 69 7a 65 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 6e 6f 72 6d .%.%normalize:.Computes.the.norm
39620 61 6c 69 7a 65 20 69 6d 61 67 65 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 2e 0a 25 alize.image.point.coordinates..%
39640 0a 25 70 6f 73 65 33 44 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 33 44 20 70 6f 73 65 20 6f .%pose3D:.Computes.the.3D.pose.o
39660 66 20 74 68 65 20 73 74 72 75 63 74 75 72 65 20 67 69 76 65 6e 20 74 68 65 20 6e 6f 72 6d 61 6c f.the.structure.given.the.normal
39680 69 7a 65 64 20 69 6d 61 67 65 20 70 72 6f 6a 65 63 74 69 6f 6e 2e 0a 25 0a 25 70 72 6f 6a 65 63 ized.image.projection..%.%projec
396a0 74 5f 70 6f 69 6e 74 73 2e 6d 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 32 44 20 69 6d 61 67 t_points.m:.Computes.the.2D.imag
396c0 65 20 70 72 6f 6a 65 63 74 69 6f 6e 73 20 6f 66 20 61 20 73 65 74 20 6f 66 20 33 44 20 70 6f 69 e.projections.of.a.set.of.3D.poi
396e0 6e 74 73 0a 0a 0a 69 66 20 6e 61 72 67 69 6e 20 3c 20 39 2c 0a 20 20 20 74 68 72 65 73 68 5f 63 nts...if.nargin.<.9,....thresh_c
39700 6f 6e 64 20 3d 20 69 6e 66 3b 0a 65 6e 64 3b 0a 0a 0a 69 66 20 6e 61 72 67 69 6e 20 3c 20 38 2c ond.=.inf;.end;...if.nargin.<.8,
39720 0a 20 20 20 4d 61 78 49 74 65 72 20 3d 20 32 30 3b 0a 65 6e 64 3b 0a 0a 0a 69 66 20 6e 61 72 67 ....MaxIter.=.20;.end;...if.narg
39740 69 6e 20 3c 20 37 2c 0a 20 20 20 6b 63 20 3d 20 7a 65 72 6f 73 28 34 2c 31 29 3b 0a 20 20 20 69 in.<.7,....kc.=.zeros(4,1);....i
39760 66 20 6e 61 72 67 69 6e 20 3c 20 36 2c 0a 20 20 20 20 20 20 63 63 20 3d 20 7a 65 72 6f 73 28 32 f.nargin.<.6,.......cc.=.zeros(2
39780 2c 31 29 3b 0a 20 20 20 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3c 20 35 2c 0a 20 20 20 20 20 20 ,1);.......if.nargin.<.5,.......
397a0 20 20 20 66 63 20 3d 20 6f 6e 65 73 28 32 2c 31 29 3b 0a 20 20 20 20 20 20 20 20 20 69 66 20 6e ...fc.=.ones(2,1);..........if.n
397c0 61 72 67 69 6e 20 3c 20 34 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 28 27 4e 65 argin.<.4,.............error('Ne
397e0 65 64 20 32 44 20 70 72 6f 6a 65 63 74 69 6f 6e 73 20 61 6e 64 20 33 44 20 70 6f 69 6e 74 73 20 ed.2D.projections.and.3D.points.
39800 28 69 6e 20 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 72 65 66 69 6e 65 2e 6d 29 27 (in.compute_extrinsic_refine.m)'
39820 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0a 20 20 20 20 20 20 20 20 20 );.............return;..........
39840 65 6e 64 3b 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 0a 25 end;.......end;....end;.end;...%
39860 20 49 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 3a 0a 0a 6f 6d 63 6b 6b 20 3d 20 6f 6d 63 5f 69 6e .Initialization:..omckk.=.omc_in
39880 69 74 3b 0a 54 63 6b 6b 20 3d 20 54 63 5f 69 6e 69 74 3b 0a 0a 0a 25 20 46 69 6e 61 6c 20 6f 70 it;.Tckk.=.Tc_init;...%.Final.op
398a0 74 69 6d 69 7a 61 74 69 6f 6e 20 28 6d 69 6e 69 6d 69 7a 65 20 74 68 65 20 72 65 70 72 6f 6a 65 timization.(minimize.the.reproje
398c0 63 74 69 6f 6e 20 65 72 72 6f 72 20 69 6e 20 70 69 78 65 6c 29 3a 0a 25 20 74 68 72 6f 75 67 68 ction.error.in.pixel):.%.through
398e0 20 47 72 61 64 69 65 6e 74 20 44 65 73 63 65 6e 74 3a 0a 0a 70 61 72 61 6d 20 3d 20 5b 6f 6d 63 .Gradient.Descent:..param.=.[omc
39900 6b 6b 3b 54 63 6b 6b 5d 3b 0a 0a 63 68 61 6e 67 65 20 3d 20 31 3b 0a 0a 69 74 65 72 20 3d 20 30 kk;Tckk];..change.=.1;..iter.=.0
39920 3b 0a 0a 25 6b 65 79 62 6f 61 72 64 3b 0a 0a 25 66 70 72 69 6e 74 66 28 31 2c 27 47 72 61 64 69 ;..%keyboard;..%fprintf(1,'Gradi
39940 65 6e 74 20 64 65 73 63 65 6e 74 20 69 74 65 72 61 74 69 6f 6e 73 3a 20 27 29 3b 0a 0a 77 68 69 ent.descent.iterations:.');..whi
39960 6c 65 20 28 63 68 61 6e 67 65 20 3e 20 31 65 2d 31 30 29 26 28 69 74 65 72 20 3c 20 4d 61 78 49 le.(change.>.1e-10)&(iter.<.MaxI
39980 74 65 72 29 2c 0a 20 20 20 0a 20 20 20 25 66 70 72 69 6e 74 66 28 31 2c 27 25 64 2e 2e 2e 27 2c ter),........%fprintf(1,'%d...',
399a0 69 74 65 72 2b 31 29 3b 0a 0a 20 20 20 5b 78 2c 64 78 64 6f 6d 2c 64 78 64 54 5d 20 3d 20 70 72 iter+1);.....[x,dxdom,dxdT].=.pr
399c0 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 28 58 5f 6b 6b 2c 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 66 63 2c oject_points(X_kk,omckk,Tckk,fc,
399e0 63 63 2c 6b 63 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 78 20 3d 20 78 5f 6b 6b 20 2d 20 78 3b cc,kc);...........ex.=.x_kk.-.x;
39a00 0a 20 20 20 0a 20 20 20 25 6b 65 79 62 6f 61 72 64 3b 0a 20 20 20 0a 20 20 20 4a 4a 20 3d 20 5b ........%keyboard;........JJ.=.[
39a20 64 78 64 6f 6d 20 64 78 64 54 5d 3b 0a 20 20 20 0a 20 20 20 69 66 20 63 6f 6e 64 28 4a 4a 29 20 dxdom.dxdT];........if.cond(JJ).
39a40 3e 20 74 68 72 65 73 68 5f 63 6f 6e 64 2c 0a 20 20 20 20 20 20 63 68 61 6e 67 65 20 3d 20 30 3b >.thresh_cond,.......change.=.0;
39a60 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 0a 20 20 20 09 4a 4a 32 20 3d 20 4a 4a 27 2a 4a 4a ....else............JJ2.=.JJ'*JJ
39a80 3b 0a 20 20 20 0a 09 09 70 61 72 61 6d 5f 69 6e 6e 6f 76 20 3d 20 69 6e 76 28 4a 4a 32 29 2a 28 ;.......param_innov.=.inv(JJ2)*(
39aa0 4a 4a 27 29 2a 65 78 28 3a 29 3b 0a 09 09 70 61 72 61 6d 5f 75 70 20 3d 20 70 61 72 61 6d 20 2b JJ')*ex(:);...param_up.=.param.+
39ac0 20 70 61 72 61 6d 5f 69 6e 6e 6f 76 3b 0a 09 09 63 68 61 6e 67 65 20 3d 20 6e 6f 72 6d 28 70 61 .param_innov;...change.=.norm(pa
39ae0 72 61 6d 5f 69 6e 6e 6f 76 29 2f 6e 6f 72 6d 28 70 61 72 61 6d 5f 75 70 29 3b 0a 09 09 70 61 72 ram_innov)/norm(param_up);...par
39b00 61 6d 20 3d 20 70 61 72 61 6d 5f 75 70 3b 0a 09 09 69 74 65 72 20 3d 20 69 74 65 72 20 2b 20 31 am.=.param_up;...iter.=.iter.+.1
39b20 3b 0a 20 20 20 0a 20 20 20 09 6f 6d 63 6b 6b 20 3d 20 70 61 72 61 6d 28 31 3a 33 29 3b 0a 20 20 ;.........omckk.=.param(1:3);...
39b40 20 09 54 63 6b 6b 20 3d 20 70 61 72 61 6d 28 34 3a 36 29 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 ..Tckk.=.param(4:6);....end;....
39b60 0a 65 6e 64 3b 0a 0a 25 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 27 29 3b 0a 0a 52 63 6b 6b 20 3d .end;..%fprintf(1,'\n');..Rckk.=
39b80 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 6b 6b 29 3b 0a 73 66 6f 72 6d 20 2a 20 58 5f 6b 6b 20 .rodrigues(omckk);.sform.*.X_kk.
39ba0 2b 20 54 63 6b 6b 20 2b 20 54 5f 74 72 61 6e 73 66 6f 72 6d 0a 20 20 20 0a 20 20 20 54 63 6b 6b +.Tckk.+.T_transform........Tckk
39bc0 20 3d 20 54 63 6b 6b 20 2b 20 52 63 6b 6b 2a 20 54 5f 74 72 61 6e 73 66 6f 72 6d 3b 0a 20 20 20 .=.Tckk.+.Rckk*.T_transform;....
39be0 52 63 6b 6b 20 3d 20 52 63 6b 6b 20 2a 20 52 5f 74 72 61 6e 73 66 6f 72 6d 3b 0a 0a 20 20 20 6f Rckk.=.Rckk.*.R_transform;.....o
39c00 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 74 65 TOOLBOX_calib/go_calib_optim_ite
39c20 72 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 r.m.............................
39c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
39c60 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
39c80 20 20 32 33 30 37 35 20 20 37 30 32 34 30 33 37 33 33 30 20 20 31 32 36 31 33 00 20 00 00 00 00 ..23075..7024037330..12613......
39ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
39cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
39ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
39d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
39d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
39d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
39d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
39d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
39da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
39dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
39de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
39e00 25 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 74 65 72 0a 25 0a 25 4d 61 69 6e 20 63 61 6c %go_calib_optim_iter.%.%Main.cal
39e20 69 62 72 61 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 2e 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 ibration.function..Computes.the.
39e40 69 6e 74 72 69 6e 73 69 63 20 61 6e 64 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 intrinsic.andextrinsic.parameter
39e60 73 2e 0a 25 52 75 6e 73 20 61 73 20 61 20 73 63 72 69 70 74 2e 0a 25 0a 25 49 4e 50 55 54 3a 20 s..%Runs.as.a.script..%.%INPUT:.
39e80 78 5f 31 2c 78 5f 32 2c 78 5f 33 2c 2e 2e 2e 3a 20 46 65 61 74 75 72 65 20 6c 6f 63 61 74 69 6f x_1,x_2,x_3,...:.Feature.locatio
39ea0 6e 73 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 73 0a 25 20 20 20 20 20 20 20 58 5f 31 2c 58 5f 32 ns.on.the.images.%.......X_1,X_2
39ec0 2c 58 5f 33 2c 2e 2e 2e 3a 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 67 72 69 64 20 63 6f 6f ,X_3,...:.Corresponding.grid.coo
39ee0 72 64 69 6e 61 74 65 73 0a 25 0a 25 4f 55 54 50 55 54 3a 20 66 63 3a 20 43 61 6d 65 72 61 20 66 rdinates.%.%OUTPUT:.fc:.Camera.f
39f00 6f 63 61 6c 20 6c 65 6e 67 74 68 0a 25 20 20 20 20 20 20 20 20 63 63 3a 20 50 72 69 6e 63 69 70 ocal.length.%........cc:.Princip
39f20 61 6c 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 0a 25 20 20 20 20 20 20 20 20 6b 63 al.point.coordinates.%........kc
39f40 3a 20 44 69 73 74 6f 72 74 69 6f 6e 20 63 6f 65 66 66 69 63 69 65 6e 74 73 0a 25 20 20 20 20 20 :.Distortion.coefficients.%.....
39f60 20 20 20 4b 4b 3a 20 54 68 65 20 63 61 6d 65 72 61 20 6d 61 74 72 69 78 20 28 63 6f 6e 74 61 69 ...KK:.The.camera.matrix.(contai
39f80 6e 69 6e 67 20 66 63 20 61 6e 64 20 63 63 29 0a 25 20 20 20 20 20 20 20 20 6f 6d 63 5f 31 2c 6f ning.fc.and.cc).%........omc_1,o
39fa0 6d 63 5f 32 2c 6f 6d 63 5f 33 2c 2e 2e 2e 3a 20 33 44 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 mc_2,omc_3,...:.3D.rotation.vect
39fc0 6f 72 73 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 67 72 69 64 20 70 6f 73 69 74 69 6f ors.attached.to.the.grid.positio
39fe0 6e 73 20 69 6e 20 73 70 61 63 65 0a 25 20 20 20 20 20 20 20 20 54 63 5f 31 2c 54 63 5f 32 2c 54 ns.in.space.%........Tc_1,Tc_2,T
3a000 63 5f 33 2c 2e 2e 2e 3a 20 33 44 20 74 72 61 6e 73 6c 61 74 69 6f 6e 20 76 65 63 74 6f 72 73 20 c_3,...:.3D.translation.vectors.
3a020 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 67 72 69 64 20 70 6f 73 69 74 69 6f 6e 73 20 69 attached.to.the.grid.positions.i
3a040 6e 20 73 70 61 63 65 0a 25 20 20 20 20 20 20 20 20 52 63 5f 31 2c 52 63 5f 32 2c 52 63 5f 33 2c n.space.%........Rc_1,Rc_2,Rc_3,
3a060 2e 2e 2e 3a 20 33 44 20 72 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 63 65 73 20 63 6f 72 72 65 73 ...:.3D.rotation.matrices.corres
3a080 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 6f 6d 63 20 76 65 63 74 6f 72 73 0a 25 0a 25 4d 65 ponding.to.the.omc.vectors.%.%Me
3a0a0 74 68 6f 64 3a 20 4d 69 6e 69 6d 69 7a 65 73 20 74 68 65 20 70 69 78 65 6c 20 72 65 70 72 6f 6a thod:.Minimizes.the.pixel.reproj
3a0c0 65 63 74 69 6f 6e 20 65 72 72 6f 72 20 69 6e 20 74 68 65 20 6c 65 61 73 74 20 73 71 75 61 72 65 ection.error.in.the.least.square
3a0e0 73 20 73 65 6e 73 65 20 6f 76 65 72 20 74 68 65 20 69 6e 74 72 69 6e 73 69 63 0a 25 20 20 20 20 s.sense.over.the.intrinsic.%....
3a100 20 20 20 20 63 61 6d 65 72 61 20 70 61 72 61 6d 65 74 65 72 73 2c 20 61 6e 64 20 74 68 65 20 65 ....camera.parameters,.and.the.e
3a120 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 28 33 44 20 6c 6f 63 61 74 69 6f 6e xtrinsic.parameters.(3D.location
3a140 73 20 6f 66 20 74 68 65 20 67 72 69 64 73 20 69 6e 20 73 70 61 63 65 29 0a 25 0a 25 4e 6f 74 65 s.of.the.grids.in.space).%.%Note
3a160 3a 20 49 66 20 74 68 65 20 69 6e 74 72 69 6e 73 69 63 20 63 61 6d 65 72 61 20 70 61 72 61 6d 65 :.If.the.intrinsic.camera.parame
3a180 74 65 72 73 20 28 66 63 2c 20 63 63 2c 20 6b 63 29 20 64 6f 20 6e 6f 74 20 65 78 69 73 74 20 62 ters.(fc,.cc,.kc).do.not.exist.b
3a1a0 65 66 6f 72 65 2c 20 74 68 65 79 20 61 72 65 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 74 68 72 6f efore,.they.are.initialized.thro
3a1c0 75 67 68 0a 25 20 20 20 20 20 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 69 6e 69 74 5f 69 6e 74 ugh.%......the.function.init_int
3a1e0 72 69 6e 73 69 63 5f 70 61 72 61 6d 2e 6d 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 74 68 65 20 76 rinsic_param.m..Otherwise,.the.v
3a200 61 72 69 61 62 6c 65 73 20 69 6e 20 6d 65 6d 6f 72 79 20 61 72 65 20 75 73 65 64 20 61 73 20 69 ariables.in.memory.are.used.as.i
3a220 6e 69 74 69 61 6c 20 67 75 65 73 73 65 73 2e 0a 25 0a 25 4e 6f 74 65 3a 20 54 68 65 20 72 6f 77 nitial.guesses..%.%Note:.The.row
3a240 20 76 65 63 74 6f 72 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 20 63 6f 6e 73 69 73 74 73 20 6f .vector.active_images.consists.o
3a260 66 20 7a 65 72 6f 73 20 61 6e 64 20 6f 6e 65 73 2e 20 54 6f 20 64 65 61 63 74 69 76 61 74 65 20 f.zeros.and.ones..To.deactivate.
3a280 61 6e 20 69 6d 61 67 65 2c 20 73 65 74 20 74 68 65 0a 25 20 20 20 20 20 20 63 6f 72 72 65 73 70 an.image,.set.the.%......corresp
3a2a0 6f 6e 64 69 6e 67 20 65 6e 74 72 79 20 69 6e 20 74 68 65 20 61 63 74 69 76 65 5f 69 6d 61 67 65 onding.entry.in.the.active_image
3a2c0 73 20 76 65 63 74 6f 72 20 74 6f 20 7a 65 72 6f 2e 0a 25 0a 25 56 45 52 59 20 49 4d 50 4f 52 54 s.vector.to.zero..%.%VERY.IMPORT
3a2e0 41 4e 54 3a 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 77 6f 72 6b 73 20 66 6f 72 20 32 44 20 ANT:.This.function.works.for.2D.
3a300 61 6e 64 20 33 44 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 72 69 67 73 2c 20 65 78 63 65 70 74 20 and.3D.calibration.rigs,.except.
3a320 66 6f 72 20 69 6e 69 74 5f 69 6e 74 72 69 6e 73 69 63 5f 70 61 72 61 6d 2e 6d 0a 25 74 68 61 74 for.init_intrinsic_param.m.%that
3a340 20 69 73 20 73 6f 20 66 61 72 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 74 6f 20 77 6f 72 6b 20 6f .is.so.far.implemented.to.work.o
3a360 6e 6c 79 20 77 69 74 68 20 32 44 20 72 69 67 73 2e 0a 25 49 6e 20 74 68 65 20 66 75 74 75 72 65 nly.with.2D.rigs..%In.the.future
3a380 2c 20 61 20 6d 6f 72 65 20 67 65 6e 65 72 61 6c 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62 ,.a.more.general.function.will.b
3a3a0 65 20 74 68 65 72 65 2e 0a 25 46 6f 72 20 6e 6f 77 2c 20 69 66 20 75 73 69 6e 67 20 61 20 33 44 e.there..%For.now,.if.using.a.3D
3a3c0 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 72 69 67 2c 20 71 75 69 63 6b 5f 69 6e 69 74 20 69 73 20 .calibration.rig,.quick_init.is.
3a3e0 73 65 74 20 74 6f 20 31 20 66 6f 72 20 61 6e 20 65 61 73 79 20 69 6e 69 74 69 61 6c 69 7a 61 74 set.to.1.for.an.easy.initializat
3a400 69 6f 6e 20 6f 66 20 74 68 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 0a 0a 0a 63 68 65 63 6b 5f ion.of.the.focal.length...check_
3a420 61 63 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 0a 0a 0a 71 75 69 63 6b 5f 69 6e 69 74 20 3d 20 30 active_images;....quick_init.=.0
3a440 3b 20 25 20 53 65 74 20 74 6f 20 31 20 66 6f 72 20 75 73 69 6e 67 20 61 20 71 75 69 63 6b 20 69 ;.%.Set.to.1.for.using.a.quick.i
3a460 6e 69 74 20 28 6e 65 63 65 73 73 61 72 79 20 77 68 65 6e 20 75 73 69 6e 67 20 33 44 20 72 69 67 nit.(necessary.when.using.3D.rig
3a480 73 29 0a 0a 0a 0a 25 20 43 68 65 63 6b 20 33 44 2d 6e 65 73 73 20 6f 66 20 74 68 65 20 63 61 6c s)....%.Check.3D-ness.of.the.cal
3a4a0 69 62 72 61 74 69 6f 6e 20 72 69 67 3a 0a 72 69 67 33 44 20 3d 20 30 3b 0a 66 6f 72 20 6b 6b 20 ibration.rig:.rig3D.=.0;.for.kk.
3a4c0 3d 20 69 6e 64 5f 61 63 74 69 76 65 2c 0a 20 20 20 65 76 61 6c 28 5b 27 58 5f 6b 6b 20 3d 20 58 =.ind_active,....eval(['X_kk.=.X
3a4e0 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 69 66 20 69 73 33 44 _'.num2str(kk).';']);....if.is3D
3a500 28 58 5f 6b 6b 29 2c 0a 20 20 20 20 20 20 72 69 67 33 44 20 3d 20 31 3b 0a 20 20 20 65 6e 64 3b (X_kk),.......rig3D.=.1;....end;
3a520 0a 65 6e 64 3b 0a 0a 0a 0a 25 20 49 66 20 74 68 65 20 72 69 67 20 69 73 20 33 44 2c 20 74 68 65 .end;....%.If.the.rig.is.3D,.the
3a540 6e 20 6e 6f 20 63 68 6f 69 63 65 3a 20 74 68 65 20 6f 6e 6c 79 20 76 61 6c 69 64 20 69 6e 69 74 n.no.choice:.the.only.valid.init
3a560 69 61 6c 69 7a 61 74 69 6f 6e 20 69 73 20 6d 61 6e 75 61 6c 21 0a 69 66 20 72 69 67 33 44 2c 0a ialization.is.manual!.if.rig3D,.
3a580 20 20 20 71 75 69 63 6b 5f 69 6e 69 74 20 3d 20 31 3b 0a 65 6e 64 3b 0a 0a 0a 0a 0a 61 6c 70 68 ...quick_init.=.1;.end;.....alph
3a5a0 61 20 3d 20 30 2e 34 3b 20 25 20 73 65 74 20 61 6c 70 68 61 20 3d 20 31 3b 20 66 6f 72 20 73 74 a.=.0.4;.%.set.alpha.=.1;.for.st
3a5c0 65 65 70 65 73 74 20 67 72 61 64 69 65 6e 74 20 64 65 73 63 65 6e 74 0a 0a 0a 25 20 43 6f 6e 64 eepest.gradient.descent...%.Cond
3a5e0 69 74 69 6f 6e 69 6e 67 20 74 68 72 65 73 68 6f 6c 64 20 66 6f 72 20 76 69 65 77 20 72 65 6a 65 itioning.threshold.for.view.reje
3a600 63 74 69 6f 6e 0a 74 68 72 65 73 68 5f 63 6f 6e 64 20 3d 20 31 65 36 3b 0a 0a 0a 0a 0a 25 25 20 ction.thresh_cond.=.1e6;.....%%.
3a620 49 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e 74 72 69 6e 73 69 63 20 Initialization.of.the.intrinsic.
3a640 70 61 72 61 6d 65 74 65 72 73 20 28 69 66 20 6e 65 63 65 73 73 61 72 79 29 0a 0a 69 66 20 7e 65 parameters.(if.necessary)..if.~e
3a660 78 69 73 74 28 27 63 63 27 29 2c 0a 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 49 6e 69 74 69 61 xist('cc'),....fprintf(1,'Initia
3a680 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 lization.of.the.principal.point.
3a6a0 61 74 20 74 68 65 20 63 65 6e 74 65 72 20 6f 66 20 74 68 65 20 69 6d 61 67 65 2e 5c 6e 27 29 3b at.the.center.of.the.image.\n');
3a6c0 0a 20 20 20 63 63 20 3d 20 5b 28 6e 78 2d 31 29 2f 32 3b 28 6e 79 2d 31 29 2f 32 5d 3b 0a 65 6e ....cc.=.[(nx-1)/2;(ny-1)/2];.en
3a6e0 64 3b 0a 0a 0a 69 66 20 7e 65 78 69 73 74 28 27 6b 63 27 29 2c 0a 20 20 20 66 70 72 69 6e 74 66 d;...if.~exist('kc'),....fprintf
3a700 28 31 2c 27 49 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 69 6d 61 67 65 20 (1,'Initialization.of.the.image.
3a720 64 69 73 74 6f 72 74 69 6f 6e 20 74 6f 20 7a 65 72 6f 2e 5c 6e 27 29 3b 0a 20 20 20 6b 63 20 3d distortion.to.zero.\n');....kc.=
3a740 20 7a 65 72 6f 73 28 34 2c 31 29 3b 0a 65 6e 64 3b 0a 0a 0a 69 66 20 7e 65 78 69 73 74 28 27 66 .zeros(4,1);.end;...if.~exist('f
3a760 63 27 29 26 20 71 75 69 63 6b 5f 69 6e 69 74 2c 0a 20 20 20 46 4f 56 5f 61 6e 67 6c 65 20 3d 20 c')&.quick_init,....FOV_angle.=.
3a780 33 35 3b 20 25 20 49 6e 69 74 69 61 6c 20 63 61 6d 65 72 61 20 66 69 65 6c 64 20 6f 66 20 76 69 35;.%.Initial.camera.field.of.vi
3a7a0 65 77 20 69 6e 20 64 65 67 72 65 65 73 0a 20 20 20 66 70 72 69 6e 74 66 28 31 2c 5b 27 49 6e 69 ew.in.degrees....fprintf(1,['Ini
3a7c0 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 20 tialization.of.the.focal.length.
3a7e0 74 6f 20 61 20 46 4f 56 20 6f 66 20 27 20 6e 75 6d 32 73 74 72 28 46 4f 56 5f 61 6e 67 6c 65 29 to.a.FOV.of.'.num2str(FOV_angle)
3a800 20 27 20 64 65 67 72 65 65 73 2e 5c 6e 27 5d 29 3b 0a 20 20 20 66 63 20 3d 20 28 6e 78 2f 32 29 .'.degrees.\n']);....fc.=.(nx/2)
3a820 2f 74 61 6e 28 70 69 2a 46 4f 56 5f 61 6e 67 6c 65 2f 33 36 30 29 20 2a 20 6f 6e 65 73 28 32 2c /tan(pi*FOV_angle/360).*.ones(2,
3a840 31 29 3b 0a 65 6e 64 3b 0a 0a 0a 69 66 20 7e 65 78 69 73 74 28 27 66 63 27 29 2c 0a 20 20 20 25 1);.end;...if.~exist('fc'),....%
3a860 20 49 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e 74 72 69 6e 73 69 63 .Initialization.of.the.intrinsic
3a880 20 70 61 72 61 6d 65 74 65 72 73 3a 0a 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 49 6e 69 74 69 .parameters:....fprintf(1,'Initi
3a8a0 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e 74 72 69 6e 73 69 63 20 70 61 72 61 6d alization.of.the.intrinsic.param
3a8c0 65 74 65 72 73 20 75 73 69 6e 67 20 74 68 65 20 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 73 eters.using.the.vanishing.points
3a8e0 20 6f 66 20 70 6c 61 6e 61 72 20 70 61 74 74 65 72 6e 73 2e 5c 6e 27 29 0a 20 20 20 69 6e 69 74 .of.planar.patterns.\n')....init
3a900 5f 69 6e 74 72 69 6e 73 69 63 5f 70 61 72 61 6d 3b 20 25 20 54 68 65 20 72 69 67 68 74 20 77 61 _intrinsic_param;.%.The.right.wa
3a920 79 20 74 6f 20 67 6f 20 28 69 66 20 71 75 69 63 6b 5f 69 6e 69 74 20 69 73 20 6e 6f 74 20 61 63 y.to.go.(if.quick_init.is.not.ac
3a940 74 69 76 65 29 21 0a 65 6e 64 3b 0a 0a 0a 0a 25 25 20 49 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e tive)!.end;....%%.Initialization
3a960 20 6f 66 20 74 68 65 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 66 6f 72 .of.the.extrinsic.parameters.for
3a980 20 67 6c 6f 62 61 6c 20 6d 69 6e 69 6d 69 7a 61 74 69 6f 6e 3a 0a 0a 69 6e 69 74 5f 70 61 72 61 .global.minimization:..init_para
3a9a0 6d 20 3d 20 5b 66 63 3b 6b 63 5d 3b 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a m.=.[fc;kc];..for.kk.=.1:n_ima,.
3a9c0 0a 09 69 66 20 65 78 69 73 74 28 5b 27 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 5d 29 2c 0a ..if.exist(['x_'.num2str(kk)]),.
3a9e0 20 20 20 0a 20 20 20 09 65 76 61 6c 28 5b 27 78 5f 6b 6b 20 3d 20 78 5f 27 20 6e 75 6d 32 73 74 ........eval(['x_kk.=.x_'.num2st
3aa00 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 20 20 20 65 76 61 6c 28 5b 27 58 5f 6b 6b 20 3d r(kk).';']);.......eval(['X_kk.=
3aa20 20 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 20 20 20 0a 20 .X_'.num2str(kk).';']);.........
3aa40 20 20 09 69 66 20 28 69 73 6e 61 6e 28 78 5f 6b 6b 28 31 2c 31 29 29 29 2c 0a 20 20 20 20 20 20 ...if.(isnan(x_kk(1,1))),.......
3aa60 09 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 2c 0a 20 20 20 20 20 20 20 20 20 .if.active_images(kk),..........
3aa80 09 66 70 72 69 6e 74 66 28 31 2c 27 57 61 72 6e 69 6e 67 3a 20 43 61 6e 6e 6f 74 20 63 61 6c 69 .fprintf(1,'Warning:.Cannot.cali
3aaa0 62 72 61 74 65 20 77 69 74 68 20 69 6d 61 67 65 20 25 64 2e 20 4e 65 65 64 20 74 6f 20 65 78 74 brate.with.image.%d..Need.to.ext
3aac0 72 61 63 74 20 67 72 69 64 20 63 6f 72 6e 65 72 73 20 66 69 72 73 74 2e 5c 6e 27 2c 6b 6b 29 0a ract.grid.corners.first.\n',kk).
3aae0 20 20 20 20 20 20 20 20 20 09 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 53 65 ..........fprintf(1,'.........Se
3ab00 74 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 25 64 29 3d 31 3b 20 61 6e 64 20 72 75 6e 20 45 t.active_images(%d)=1;.and.run.E
3ab20 78 74 72 61 63 74 20 67 72 69 64 20 63 6f 72 6e 65 72 73 2e 5c 6e 27 2c 6b 6b 29 0a 20 20 20 20 xtract.grid.corners.\n',kk).....
3ab40 20 20 09 65 6e 64 3b 0a 20 20 20 20 20 20 09 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 ...end;........active_images(kk)
3ab60 20 3d 20 30 3b 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 69 66 20 61 63 74 69 76 65 .=.0;.......end;.......if.active
3ab80 5f 69 6d 61 67 65 73 28 6b 6b 29 2c 0a 20 20 20 20 20 20 20 20 20 5b 6f 6d 63 6b 6b 2c 54 63 6b _images(kk),..........[omckk,Tck
3aba0 6b 5d 20 3d 20 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 69 6e 69 74 28 78 5f 6b 6b k].=.compute_extrinsic_init(x_kk
3abc0 2c 58 5f 6b 6b 2c 66 63 2c 63 63 2c 6b 63 29 3b 0a 20 20 20 20 20 20 20 20 20 5b 6f 6d 63 6b 6b ,X_kk,fc,cc,kc);..........[omckk
3abe0 2c 54 63 6b 6b 2c 52 63 6b 6b 2c 4a 4a 5f 6b 6b 5d 20 3d 20 63 6f 6d 70 75 74 65 5f 65 78 74 72 ,Tckk,Rckk,JJ_kk].=.compute_extr
3ac00 69 6e 73 69 63 5f 72 65 66 69 6e 65 28 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 78 5f 6b 6b 2c 58 5f 6b insic_refine(omckk,Tckk,x_kk,X_k
3ac20 6b 2c 66 63 2c 63 63 2c 6b 63 2c 32 30 2c 74 68 72 65 73 68 5f 63 6f 6e 64 29 3b 0a 20 20 20 20 k,fc,cc,kc,20,thresh_cond);.....
3ac40 20 20 20 20 20 69 66 20 63 6f 6e 64 28 4a 4a 5f 6b 6b 29 3e 20 74 68 72 65 73 68 5f 63 6f 6e 64 .....if.cond(JJ_kk)>.thresh_cond
3ac60 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 20 ,.............active_images(kk).
3ac80 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 6d 63 6b 6b 20 3d 20 4e 61 4e 2a 6f 6e 65 =.0;.............omckk.=.NaN*one
3aca0 73 28 33 2c 31 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 63 6b 6b 20 3d 20 4e 61 4e 2a 6f s(3,1);.............Tckk.=.NaN*o
3acc0 6e 65 73 28 33 2c 31 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 31 2c nes(3,1);.............fprintf(1,
3ace0 27 5c 6e 57 61 72 6e 69 6e 67 3a 20 56 69 65 77 20 23 25 64 20 69 6c 6c 2d 63 6f 6e 64 69 74 69 '\nWarning:.View.#%d.ill-conditi
3ad00 6f 6e 65 64 2e 20 54 68 69 73 20 69 6d 61 67 65 20 69 73 20 6e 6f 77 20 73 65 74 20 69 6e 61 63 oned..This.image.is.now.set.inac
3ad20 74 69 76 65 2e 5c 6e 27 2c 6b 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 73 61 63 74 69 tive.\n',kk).............desacti
3ad40 76 61 74 65 64 5f 69 6d 61 67 65 73 20 3d 20 5b 64 65 73 61 63 74 69 76 61 74 65 64 5f 69 6d 61 vated_images.=.[desactivated_ima
3ad60 67 65 73 20 6b 6b 5d 3b 0a 20 20 20 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 20 20 20 ges.kk];..........end;..........
3ad80 69 66 20 69 73 6e 61 6e 28 6f 6d 63 6b 6b 28 31 2c 31 29 29 2c 0a 20 20 20 20 20 20 20 20 20 20 if.isnan(omckk(1,1)),...........
3ada0 20 20 25 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 57 61 72 6e 69 6e 67 3a 20 44 65 73 61 63 74 69 ..%fprintf(1,'\nWarning:.Desacti
3adc0 76 61 74 69 6e 67 20 69 6d 61 67 65 20 25 64 2e 20 52 65 2d 61 63 74 69 76 61 74 65 20 69 74 20 vating.image.%d..Re-activate.it.
3ade0 6c 61 74 65 72 20 62 79 20 74 79 70 69 6e 67 3a 5c 6e 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 later.by.typing:\nactive_images(
3ae00 25 64 29 3d 31 3b 5c 6e 61 6e 64 20 72 65 2d 72 75 6e 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 5c %d)=1;\nand.re-run.optimization\
3ae20 6e 27 2c 5b 6b 6b 20 6b 6b 5d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 69 76 65 5f 69 n',[kk.kk]).............active_i
3ae40 6d 61 67 65 73 28 6b 6b 29 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 mages(kk).=.0;..........end;....
3ae60 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 6f 6d 63 6b 6b 20 3d 20 4e 61 4e 2a 6f 6e 65 ...else..........omckk.=.NaN*one
3ae80 73 28 33 2c 31 29 3b 0a 20 20 20 20 20 20 20 20 20 54 63 6b 6b 20 3d 20 4e 61 4e 2a 6f 6e 65 73 s(3,1);..........Tckk.=.NaN*ones
3aea0 28 33 2c 31 29 3b 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 65 6c 73 65 0a 20 20 (3,1);.......end;........else...
3aec0 20 20 20 20 0a 20 20 20 20 20 20 6f 6d 63 6b 6b 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 33 2c 31 29 ...........omckk.=.NaN*ones(3,1)
3aee0 3b 0a 20 20 20 20 20 20 54 63 6b 6b 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 33 2c 31 29 3b 0a 20 20 ;.......Tckk.=.NaN*ones(3,1);...
3af00 20 20 20 20 0a 20 20 20 20 20 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 2c ...........if.active_images(kk),
3af20 0a 20 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 57 61 72 6e 69 6e 67 3a 20 43 61 ..........fprintf(1,'Warning:.Ca
3af40 6e 6e 6f 74 20 63 61 6c 69 62 72 61 74 65 20 77 69 74 68 20 69 6d 61 67 65 20 25 64 2e 20 4e 65 nnot.calibrate.with.image.%d..Ne
3af60 65 64 20 74 6f 20 65 78 74 72 61 63 74 20 67 72 69 64 20 63 6f 72 6e 65 72 73 20 66 69 72 73 74 ed.to.extract.grid.corners.first
3af80 2e 5c 6e 27 2c 6b 6b 29 0a 20 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 .\n',kk)..........fprintf(1,'...
3afa0 20 20 20 20 20 20 53 65 74 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 25 64 29 3d 31 3b 20 61 ......Set.active_images(%d)=1;.a
3afc0 6e 64 20 72 75 6e 20 45 78 74 72 61 63 74 20 67 72 69 64 20 63 6f 72 6e 65 72 73 2e 5c 6e 27 2c nd.run.Extract.grid.corners.\n',
3afe0 6b 6b 29 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 61 63 74 69 kk).......end;..............acti
3b000 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 20 3d 20 30 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 ve_images(kk).=.0;...........end
3b020 3b 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b ;........eval(['omc_'.num2str(kk
3b040 29 20 27 20 3d 20 6f 6d 63 6b 6b 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 54 63 5f 27 20 ).'.=.omckk;']);....eval(['Tc_'.
3b060 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 54 63 6b 6b 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 num2str(kk).'.=.Tckk;']);.......
3b080 20 65 76 61 6c 28 5b 27 69 6e 69 74 5f 70 61 72 61 6d 20 3d 20 5b 69 6e 69 74 5f 70 61 72 61 6d .eval(['init_param.=.[init_param
3b0a0 3b 20 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 20 54 63 5f 27 20 6e 75 6d 32 ;.omc_'.num2str(kk).';.Tc_'.num2
3b0c0 73 74 72 28 6b 6b 29 20 27 5d 3b 27 5d 29 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 0a 63 68 65 63 6b str(kk).'];']);.....end;...check
3b0e0 5f 61 63 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 0a 69 6e 69 74 5f 70 61 72 61 6d 20 3d 20 5b 69 _active_images;..init_param.=.[i
3b100 6e 69 74 5f 70 61 72 61 6d 3b 63 63 5d 3b 0a 0a 25 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d nit_param;cc];..%---------------
3b120 2d 2d 2d 2d 2d 20 4d 61 69 6e 20 4f 70 74 69 6d 69 7a 61 74 69 6f 6e 3a 0a 0a 66 70 72 69 6e 74 -----.Main.Optimization:..fprint
3b140 66 28 31 2c 27 5c 6e 4d 61 69 6e 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 6f 70 74 69 6d 69 7a 61 f(1,'\nMain.calibration.optimiza
3b160 74 69 6f 6e 20 70 72 6f 63 65 64 75 72 65 20 2d 20 4e 75 6d 62 65 72 20 6f 66 20 69 6d 61 67 65 tion.procedure.-.Number.of.image
3b180 73 3a 20 25 64 5c 6e 27 2c 6c 65 6e 67 74 68 28 69 6e 64 5f 61 63 74 69 76 65 29 29 3b 0a 0a 0a s:.%d\n',length(ind_active));...
3b1a0 25 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 76 65 63 74 6f 72 20 68 65 6c 70 73 20 74 6f 20 %.The.following.vector.helps.to.
3b1c0 73 65 6c 65 63 74 20 74 68 65 20 76 61 72 69 61 62 6c 65 73 20 74 6f 20 75 70 64 61 74 65 3a 0a select.the.variables.to.update:.
3b1e0 69 6e 64 5f 4a 61 63 20 3d 20 66 69 6e 64 28 5b 6f 6e 65 73 28 36 2c 31 29 3b 72 65 73 68 61 70 ind_Jac.=.find([ones(6,1);reshap
3b200 65 28 6f 6e 65 73 28 36 2c 31 29 2a 61 63 74 69 76 65 5f 69 6d 61 67 65 73 2c 36 2a 6e 5f 69 6d e(ones(6,1)*active_images,6*n_im
3b220 61 2c 31 29 3b 6f 6e 65 73 28 32 2c 31 29 5d 29 27 3b 0a 0a 70 61 72 61 6d 20 3d 20 69 6e 69 74 a,1);ones(2,1)])';..param.=.init
3b240 5f 70 61 72 61 6d 3b 0a 63 68 61 6e 67 65 20 3d 20 31 3b 0a 0a 69 74 65 72 20 3d 20 30 3b 0a 0a _param;.change.=.1;..iter.=.0;..
3b260 66 70 72 69 6e 74 66 28 31 2c 27 47 72 61 64 69 65 6e 74 20 64 65 73 63 65 6e 74 20 69 74 65 72 fprintf(1,'Gradient.descent.iter
3b280 61 74 69 6f 6e 73 3a 20 27 29 3b 0a 0a 70 61 72 61 6d 5f 6c 69 73 74 20 3d 20 70 61 72 61 6d 3b ations:.');..param_list.=.param;
3b2a0 0a 0a 4d 61 78 49 74 65 72 20 3d 20 33 30 3b 0a 0a 0a 77 68 69 6c 65 20 28 63 68 61 6e 67 65 20 ..MaxIter.=.30;...while.(change.
3b2c0 3e 20 31 65 2d 36 29 26 28 69 74 65 72 20 3c 20 4d 61 78 49 74 65 72 29 2c 0a 20 20 20 0a 20 20 >.1e-6)&(iter.<.MaxIter),.......
3b2e0 20 66 70 72 69 6e 74 66 28 31 2c 27 25 64 2e 2e 2e 27 2c 69 74 65 72 2b 31 29 3b 0a 20 20 20 0a .fprintf(1,'%d...',iter+1);.....
3b300 20 20 20 0a 20 20 20 25 25 20 54 68 65 20 66 69 72 73 74 20 73 74 65 70 20 63 6f 6e 73 69 73 74 .......%%.The.first.step.consist
3b320 73 20 6f 66 20 75 70 64 61 74 69 6e 67 20 74 68 65 20 77 68 6f 6c 65 20 76 65 63 74 6f 72 20 6f s.of.updating.the.whole.vector.o
3b340 66 20 6b 6e 6f 77 6e 73 20 28 69 6e 74 72 69 6e 73 69 63 20 2b 20 65 78 74 72 69 6e 73 69 63 20 f.knowns.(intrinsic.+.extrinsic.
3b360 6f 66 20 61 63 74 69 76 65 0a 20 20 20 25 25 20 69 6d 61 67 65 73 29 20 74 68 72 6f 75 67 68 20 of.active....%%.images).through.
3b380 61 20 6f 6e 65 20 73 74 65 70 20 73 74 65 65 70 65 73 74 20 67 72 61 64 69 65 6e 74 20 64 65 73 a.one.step.steepest.gradient.des
3b3a0 63 65 6e 74 2e 0a 20 20 20 0a 09 4a 4a 20 3d 20 5b 5d 3b 0a 09 65 78 20 3d 20 5b 5d 3b 0a 09 0a cent.......JJ.=.[];..ex.=.[];...
3b3c0 09 63 20 3d 20 70 61 72 61 6d 28 36 2a 6e 5f 69 6d 61 20 2b 20 34 20 2b 20 33 3a 36 2a 6e 5f 69 .c.=.param(6*n_ima.+.4.+.3:6*n_i
3b3e0 6d 61 20 2b 20 35 20 2b 20 33 29 3b 0a 09 66 20 3d 20 70 61 72 61 6d 28 31 3a 32 29 3b 0a 09 6b ma.+.5.+.3);..f.=.param(1:2);..k
3b400 20 3d 20 70 61 72 61 6d 28 33 3a 36 29 3b 0a 09 0a 20 20 20 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e .=.param(3:6);......for.kk.=.1:n
3b420 5f 69 6d 61 2c 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 _ima,..............if.active_ima
3b440 67 65 73 28 6b 6b 29 2c 0a 20 20 09 20 0a 20 20 20 09 09 6f 6d 63 6b 6b 20 3d 20 70 61 72 61 6d ges(kk),...........omckk.=.param
3b460 28 34 2b 36 2a 28 6b 6b 2d 31 29 20 2b 20 33 3a 36 2a 6b 6b 20 2b 20 33 29 3b 0a 20 20 20 09 0a (4+6*(kk-1).+.3:6*kk.+.3);......
3b480 20 20 20 20 20 20 20 20 20 54 63 6b 6b 20 3d 20 70 61 72 61 6d 28 36 2a 6b 6b 2b 31 20 2b 20 33 .........Tckk.=.param(6*kk+1.+.3
3b4a0 3a 36 2a 6b 6b 2b 33 20 2b 20 33 29 3b 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 :6*kk+3.+.3);...................
3b4c0 20 69 66 20 69 73 6e 61 6e 28 6f 6d 63 6b 6b 28 31 29 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 .if.isnan(omckk(1)),............
3b4e0 20 66 70 72 69 6e 74 66 28 31 2c 27 49 6e 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 .fprintf(1,'Intrinsic.parameters
3b500 20 61 74 20 66 72 61 6d 65 20 25 64 20 64 6f 20 6e 6f 74 20 65 78 69 73 74 5c 6e 27 2c 6b 6b 29 .at.frame.%d.do.not.exist\n',kk)
3b520 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0a 20 20 20 20 20 20 20 20 20 65 ;.............return;..........e
3b540 6e 64 3b 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 09 09 65 76 61 6c 28 5b 27 58 5f 6b 6b 20 3d nd;................eval(['X_kk.=
3b560 20 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 09 09 65 76 61 .X_'.num2str(kk).';']);......eva
3b580 6c 28 5b 27 78 5f 6b 6b 20 3d 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 l(['x_kk.=.x_'.num2str(kk).';'])
3b5a0 3b 0a 20 20 20 09 0a 20 20 20 09 09 4e 70 20 3d 20 73 69 7a 65 28 58 5f 6b 6b 2c 32 29 3b 0a 20 ;...........Np.=.size(X_kk,2);..
3b5c0 20 20 09 0a 20 20 20 09 09 4a 4a 6b 6b 20 3d 20 7a 65 72 6f 73 28 32 2a 4e 70 2c 6e 5f 69 6d 61 .........JJkk.=.zeros(2*Np,n_ima
3b5e0 20 2a 20 36 20 2b 20 38 29 3b 0a 20 20 20 09 0a 20 20 20 09 09 5b 78 2c 64 78 64 6f 6d 2c 64 78 .*.6.+.8);...........[x,dxdom,dx
3b600 64 54 2c 64 78 64 66 2c 64 78 64 63 2c 64 78 64 6b 5d 20 3d 20 70 72 6f 6a 65 63 74 5f 70 6f 69 dT,dxdf,dxdc,dxdk].=.project_poi
3b620 6e 74 73 28 58 5f 6b 6b 2c 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 66 2c 63 2c 6b 29 3b 0a 20 20 20 20 nts(X_kk,omckk,Tckk,f,c,k);.....
3b640 20 20 0a 20 20 20 09 09 65 78 6b 6b 20 3d 20 78 5f 6b 6b 20 2d 20 78 3b 0a 20 20 20 0a 20 20 20 ........exkk.=.x_kk.-.x;........
3b660 09 09 65 78 20 3d 20 5b 65 78 3b 65 78 6b 6b 28 3a 29 5d 3b 0a 20 20 20 0a 20 20 20 09 09 4a 4a ..ex.=.[ex;exkk(:)];..........JJ
3b680 6b 6b 28 3a 2c 31 3a 32 29 20 3d 20 64 78 64 66 3b 0a 20 20 20 09 09 4a 4a 6b 6b 28 3a 2c 33 3a kk(:,1:2).=.dxdf;......JJkk(:,3:
3b6a0 36 29 20 3d 20 64 78 64 6b 3b 0a 20 20 20 09 09 4a 4a 6b 6b 28 3a 2c 34 2b 36 2a 28 6b 6b 2d 31 6).=.dxdk;......JJkk(:,4+6*(kk-1
3b6c0 29 20 2b 20 33 3a 36 2a 6b 6b 20 2b 20 33 29 20 3d 20 64 78 64 6f 6d 3b 0a 20 20 20 09 09 4a 4a ).+.3:6*kk.+.3).=.dxdom;......JJ
3b6e0 6b 6b 28 3a 2c 36 2a 6b 6b 2b 31 20 2b 20 33 3a 36 2a 6b 6b 2b 33 20 2b 20 33 29 20 3d 20 64 78 kk(:,6*kk+1.+.3:6*kk+3.+.3).=.dx
3b700 64 54 3b 0a 20 20 20 09 09 4a 4a 6b 6b 28 3a 2c 36 2a 6e 5f 69 6d 61 20 2b 20 34 20 2b 20 33 3a dT;......JJkk(:,6*n_ima.+.4.+.3:
3b720 36 2a 6e 5f 69 6d 61 20 2b 20 35 20 2b 20 33 29 20 3d 20 64 78 64 63 3b 0a 20 20 20 09 09 09 0a 6*n_ima.+.5.+.3).=.dxdc;........
3b740 20 20 20 20 20 20 20 20 20 4a 4a 20 3d 20 5b 4a 4a 3b 4a 4a 6b 6b 5d 3b 0a 20 20 20 20 20 20 20 .........JJ.=.[JJ;JJkk];........
3b760 20 20 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 25 20 43 68 65 63 6b 20 69 66 ......................%.Check.if
3b780 20 74 68 69 73 20 76 69 65 77 20 69 73 20 69 6c 6c 2d 63 6f 6e 64 69 74 69 6f 6e 65 64 3a 0a 20 .this.view.is.ill-conditioned:..
3b7a0 20 20 20 20 20 20 20 20 4a 4a 5f 6b 6b 20 3d 20 5b 64 78 64 6f 6d 20 64 78 64 54 5d 3b 0a 20 20 ........JJ_kk.=.[dxdom.dxdT];...
3b7c0 20 20 20 20 20 20 20 69 66 20 63 6f 6e 64 28 4a 4a 5f 6b 6b 29 3e 20 74 68 72 65 73 68 5f 63 6f .......if.cond(JJ_kk)>.thresh_co
3b7e0 6e 64 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b nd,.............active_images(kk
3b800 29 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e ).=.0;.............fprintf(1,'\n
3b820 57 61 72 6e 69 6e 67 3a 20 56 69 65 77 20 23 25 64 20 69 6c 6c 2d 63 6f 6e 64 69 74 69 6f 6e 65 Warning:.View.#%d.ill-conditione
3b840 64 2e 20 54 68 69 73 20 69 6d 61 67 65 20 69 73 20 6e 6f 77 20 73 65 74 20 69 6e 61 63 74 69 76 d..This.image.is.now.set.inactiv
3b860 65 2e 5c 6e 27 2c 6b 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 73 61 63 74 69 76 61 74 e.\n',kk).............desactivat
3b880 65 64 5f 69 6d 61 67 65 73 20 3d 20 5b 64 65 73 61 63 74 69 76 61 74 65 64 5f 69 6d 61 67 65 73 ed_images.=.[desactivated_images
3b8a0 20 6b 6b 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 61 6d 28 34 2b 36 2a 28 6b 6b 2d .kk];.............param(4+6*(kk-
3b8c0 31 29 20 2b 20 33 3a 36 2a 6b 6b 2b 33 20 2b 20 33 29 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 36 2c 1).+.3:6*kk+3.+.3).=.NaN*ones(6,
3b8e0 31 29 3b 0a 20 20 20 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 1);..........end;...............
3b900 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 09 0a 20 20 20 65 6e 64 3b ...............end;.........end;
3b920 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 20 4c 69 73 74 20 6f 66 20 61 63 74 69 76 65 20 69 6d 61 ............%.List.of.active.ima
3b940 67 65 73 20 28 6e 65 63 65 73 73 61 72 79 20 69 66 20 63 68 61 6e 67 65 64 29 3a 0a 20 20 20 63 ges.(necessary.if.changed):....c
3b960 68 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 20 20 20 69 6e 64 5f 4a 61 63 20 3d heck_active_images;....ind_Jac.=
3b980 20 66 69 6e 64 28 5b 6f 6e 65 73 28 36 2c 31 29 3b 72 65 73 68 61 70 65 28 6f 6e 65 73 28 36 2c .find([ones(6,1);reshape(ones(6,
3b9a0 31 29 2a 61 63 74 69 76 65 5f 69 6d 61 67 65 73 2c 36 2a 6e 5f 69 6d 61 2c 31 29 3b 6f 6e 65 73 1)*active_images,6*n_ima,1);ones
3b9c0 28 32 2c 31 29 5d 29 27 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 4a 4a 20 3d 20 4a 4a 28 3a 2c 69 (2,1)])';............JJ.=.JJ(:,i
3b9e0 6e 64 5f 4a 61 63 29 3b 0a 20 20 20 0a 20 20 20 4a 4a 32 20 3d 20 4a 4a 27 2a 4a 4a 3b 0a 20 20 nd_Jac);........JJ2.=.JJ'*JJ;...
3ba00 20 0a 20 20 20 0a 20 20 20 25 20 53 6d 6f 6f 74 68 69 6e 67 20 63 6f 65 66 66 69 63 69 65 6e 74 .........%.Smoothing.coefficient
3ba20 3a 0a 20 20 20 0a 20 20 20 61 6c 70 68 61 32 20 3d 20 31 2d 28 31 2d 61 6c 70 68 61 29 5e 28 69 :........alpha2.=.1-(1-alpha)^(i
3ba40 74 65 72 2b 31 29 3b 20 25 73 65 74 20 74 6f 20 31 20 74 6f 20 75 6e 64 6f 20 61 6e 79 20 73 6d ter+1);.%set.to.1.to.undo.any.sm
3ba60 6f 6f 74 68 69 6e 67 21 0a 20 20 20 0a 20 20 20 0a 20 20 20 70 61 72 61 6d 5f 69 6e 6e 6f 76 20 oothing!............param_innov.
3ba80 3d 20 61 6c 70 68 61 32 2a 69 6e 76 28 4a 4a 32 29 2a 28 4a 4a 27 29 2a 65 78 3b 0a 20 20 20 70 =.alpha2*inv(JJ2)*(JJ')*ex;....p
3baa0 61 72 61 6d 5f 75 70 20 3d 20 70 61 72 61 6d 28 69 6e 64 5f 4a 61 63 29 20 2b 20 70 61 72 61 6d aram_up.=.param(ind_Jac).+.param
3bac0 5f 69 6e 6e 6f 76 3b 0a 20 20 20 70 61 72 61 6d 28 69 6e 64 5f 4a 61 63 29 20 3d 20 70 61 72 61 _innov;....param(ind_Jac).=.para
3bae0 6d 5f 75 70 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 20 4e 65 77 20 69 6e 74 72 69 6e 73 69 63 m_up;............%.New.intrinsic
3bb00 20 70 61 72 61 6d 65 74 65 72 73 3a 0a 20 20 20 0a 20 20 20 66 63 5f 63 75 72 72 65 6e 74 20 3d .parameters:........fc_current.=
3bb20 20 70 61 72 61 6d 28 31 3a 32 29 3b 0a 20 20 20 63 63 5f 63 75 72 72 65 6e 74 20 3d 20 70 61 72 .param(1:2);....cc_current.=.par
3bb40 61 6d 28 36 2a 6e 5f 69 6d 61 20 2b 20 34 20 2b 20 33 3a 36 2a 6e 5f 69 6d 61 20 2b 20 35 20 2b am(6*n_ima.+.4.+.3:6*n_ima.+.5.+
3bb60 20 33 29 3b 0a 20 20 20 6b 63 5f 63 75 72 72 65 6e 74 20 3d 20 70 61 72 61 6d 28 33 3a 36 29 3b .3);....kc_current.=.param(3:6);
3bb80 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 20 43 68 61 6e 67 65 20 6f 6e 20 74 68 65 20 69 6e 74 72 ............%.Change.on.the.intr
3bba0 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 3a 0a 20 20 20 63 68 61 6e 67 65 20 3d 20 6e 6f insic.parameters:....change.=.no
3bbc0 72 6d 28 5b 66 63 5f 63 75 72 72 65 6e 74 3b 63 63 5f 63 75 72 72 65 6e 74 5d 20 2d 20 5b 66 3b rm([fc_current;cc_current].-.[f;
3bbe0 63 5d 29 2f 6e 6f 72 6d 28 5b 66 63 5f 63 75 72 72 65 6e 74 3b 63 63 5f 63 75 72 72 65 6e 74 5d c])/norm([fc_current;cc_current]
3bc00 29 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 25 20 53 65 63 6f 6e 64 20 73 74 65 70 3a 20 28 6f );............%%.Second.step:.(o
3bc20 70 74 69 6f 6e 61 6c 29 20 2d 20 49 74 20 6d 61 6b 65 73 20 63 6f 6e 76 65 72 67 65 6e 63 65 20 ptional).-.It.makes.convergence.
3bc40 66 61 73 74 65 72 2c 20 61 6e 64 20 74 68 65 20 72 65 67 69 6f 6e 20 6f 66 20 63 6f 6e 76 65 72 faster,.and.the.region.of.conver
3bc60 67 65 6e 63 65 20 4c 41 52 47 45 52 21 21 21 0a 20 20 20 25 25 20 52 65 63 6f 6d 70 75 74 65 20 gence.LARGER!!!....%%.Recompute.
3bc80 74 68 65 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 6f 6e 6c 79 20 75 73 the.extrinsic.parameters.only.us
3bca0 69 6e 67 20 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 2e 6d 20 28 74 68 69 73 20 6d 61 ing.compute_extrinsic.m.(this.ma
3bcc0 79 20 62 65 20 75 73 65 66 75 6c 20 73 6f 6d 65 74 69 6d 65 73 29 0a 20 20 20 25 25 20 54 68 65 y.be.useful.sometimes)....%%.The
3bce0 20 63 6f 6d 70 6c 65 74 65 20 67 72 61 64 69 65 6e 74 20 64 65 73 63 65 6e 74 20 6d 65 74 68 6f .complete.gradient.descent.metho
3bd00 64 20 69 73 20 75 73 65 66 75 6c 20 74 6f 20 70 72 65 63 69 73 65 6c 79 20 75 70 64 61 74 65 20 d.is.useful.to.precisely.update.
3bd20 74 68 65 20 69 6e 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 2e 0a 20 20 20 20 20 20 the.intrinsic.parameters........
3bd40 0a 20 20 20 4d 61 78 49 74 65 72 32 20 3d 20 32 30 3b 0a 20 20 20 0a 20 20 20 66 6f 72 20 6b 6b ....MaxIter2.=.20;........for.kk
3bd60 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 20 20 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 .=.1:n_ima,.......if.active_imag
3bd80 65 73 28 6b 6b 29 2c 0a 20 20 20 20 20 20 20 20 20 6f 6d 63 5f 63 75 72 72 65 6e 74 20 3d 20 70 es(kk),..........omc_current.=.p
3bda0 61 72 61 6d 28 34 2b 36 2a 28 6b 6b 2d 31 29 20 2b 20 33 3a 36 2a 6b 6b 20 2b 20 33 29 3b 0a 20 aram(4+6*(kk-1).+.3:6*kk.+.3);..
3bdc0 20 20 20 20 20 20 20 20 54 63 5f 63 75 72 72 65 6e 74 20 3d 20 70 61 72 61 6d 28 36 2a 6b 6b 2b ........Tc_current.=.param(6*kk+
3bde0 31 20 2b 20 33 3a 36 2a 6b 6b 2b 33 20 2b 20 33 29 3b 0a 20 20 20 20 20 20 09 65 76 61 6c 28 5b 1.+.3:6*kk+3.+.3);........eval([
3be00 27 58 5f 6b 6b 20 3d 20 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 'X_kk.=.X_'.num2str(kk).';']);..
3be20 20 20 20 20 20 20 20 20 65 76 61 6c 28 5b 27 78 5f 6b 6b 20 3d 20 78 5f 27 20 6e 75 6d 32 73 74 ........eval(['x_kk.=.x_'.num2st
3be40 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 5b 6f 6d 63 5f 63 75 72 72 65 r(kk).';']);..........[omc_curre
3be60 6e 74 2c 54 63 5f 63 75 72 72 65 6e 74 5d 20 3d 20 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 nt,Tc_current].=.compute_extrins
3be80 69 63 5f 69 6e 69 74 28 78 5f 6b 6b 2c 58 5f 6b 6b 2c 66 63 5f 63 75 72 72 65 6e 74 2c 63 63 5f ic_init(x_kk,X_kk,fc_current,cc_
3bea0 63 75 72 72 65 6e 74 2c 6b 63 5f 63 75 72 72 65 6e 74 29 3b 0a 20 20 20 20 20 20 20 20 20 5b 6f current,kc_current);..........[o
3bec0 6d 63 6b 6b 2c 54 63 6b 6b 2c 52 63 6b 6b 2c 4a 4a 5f 6b 6b 5d 20 3d 20 63 6f 6d 70 75 74 65 5f mckk,Tckk,Rckk,JJ_kk].=.compute_
3bee0 65 78 74 72 69 6e 73 69 63 5f 72 65 66 69 6e 65 28 6f 6d 63 5f 63 75 72 72 65 6e 74 2c 54 63 5f extrinsic_refine(omc_current,Tc_
3bf00 63 75 72 72 65 6e 74 2c 78 5f 6b 6b 2c 58 5f 6b 6b 2c 66 63 5f 63 75 72 72 65 6e 74 2c 63 63 5f current,x_kk,X_kk,fc_current,cc_
3bf20 63 75 72 72 65 6e 74 2c 6b 63 5f 63 75 72 72 65 6e 74 2c 4d 61 78 49 74 65 72 32 2c 74 68 72 65 current,kc_current,MaxIter2,thre
3bf40 73 68 5f 63 6f 6e 64 29 3b 0a 20 20 20 20 20 20 20 20 20 69 66 20 63 6f 6e 64 28 4a 4a 5f 6b 6b sh_cond);..........if.cond(JJ_kk
3bf60 29 3e 20 74 68 72 65 73 68 5f 63 6f 6e 64 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 69 )>.thresh_cond,.............acti
3bf80 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 ve_images(kk).=.0;.............f
3bfa0 70 72 69 6e 74 66 28 31 2c 27 5c 6e 57 61 72 6e 69 6e 67 3a 20 56 69 65 77 20 23 25 64 20 69 6c printf(1,'\nWarning:.View.#%d.il
3bfc0 6c 2d 63 6f 6e 64 69 74 69 6f 6e 65 64 2e 20 54 68 69 73 20 69 6d 61 67 65 20 69 73 20 6e 6f 77 l-conditioned..This.image.is.now
3bfe0 20 73 65 74 20 69 6e 61 63 74 69 76 65 2e 5c 6e 27 2c 6b 6b 29 0a 20 20 20 20 20 20 20 20 20 20 .set.inactive.\n',kk)...........
3c000 20 20 64 65 73 61 63 74 69 76 61 74 65 64 5f 69 6d 61 67 65 73 20 3d 20 5b 64 65 73 61 63 74 69 ..desactivated_images.=.[desacti
3c020 76 61 74 65 64 5f 69 6d 61 67 65 73 20 6b 6b 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 6d vated_images.kk];.............om
3c040 63 6b 6b 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 33 2c 31 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 ckk.=.NaN*ones(3,1);............
3c060 20 54 63 6b 6b 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 33 2c 31 29 3b 0a 20 20 20 20 20 20 20 20 20 .Tckk.=.NaN*ones(3,1);..........
3c080 65 6e 64 3b 0a 09 09 09 70 61 72 61 6d 28 34 2b 36 2a 28 6b 6b 2d 31 29 20 2b 20 33 3a 36 2a 6b end;....param(4+6*(kk-1).+.3:6*k
3c0a0 6b 20 2b 20 33 29 20 3d 20 6f 6d 63 6b 6b 3b 0a 20 20 20 20 20 20 20 20 20 70 61 72 61 6d 28 36 k.+.3).=.omckk;..........param(6
3c0c0 2a 6b 6b 2b 31 20 2b 20 33 3a 36 2a 6b 6b 2b 33 20 2b 20 33 29 20 3d 20 54 63 6b 6b 3b 0a 20 20 *kk+1.+.3:6*kk+3.+.3).=.Tckk;...
3c0e0 20 20 20 20 65 6e 64 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 25 66 70 72 69 6e 74 66 ....end;....end;........%fprintf
3c100 28 31 2c 27 5c 6e 5c 6e 43 61 6c 69 62 72 61 74 69 6f 6e 20 72 65 73 75 6c 74 73 20 61 66 74 65 (1,'\n\nCalibration.results.afte
3c120 72 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 3a 5c 6e 5c 6e 27 29 3b 0a 20 20 20 25 66 70 72 69 6e r.optimization:\n\n');....%fprin
3c140 74 66 28 31 2c 27 66 6f 63 61 6c 20 20 20 20 20 20 3d 20 5b 25 33 2e 35 66 20 20 20 25 33 2e 35 tf(1,'focal......=.[%3.5f...%3.5
3c160 66 5d 5c 6e 27 2c 66 63 5f 63 75 72 72 65 6e 74 29 3b 0a 20 20 20 25 66 70 72 69 6e 74 66 28 31 f]\n',fc_current);....%fprintf(1
3c180 2c 27 63 65 6e 74 65 72 20 20 20 20 20 3d 20 5b 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e ,'center.....=.[%3.5f...%3.5f]\n
3c1a0 27 2c 63 63 5f 63 75 72 72 65 6e 74 29 3b 0a 20 20 20 25 66 70 72 69 6e 74 66 28 31 2c 27 64 69 ',cc_current);....%fprintf(1,'di
3c1c0 73 74 6f 72 74 69 6f 6e 20 3d 20 5b 25 33 2e 35 66 20 20 20 25 33 2e 35 66 20 20 25 33 2e 35 66 stortion.=.[%3.5f...%3.5f..%3.5f
3c1e0 20 20 20 25 33 2e 35 66 5d 5c 6e 5c 6e 27 2c 6b 63 5f 63 75 72 72 65 6e 74 29 3b 20 20 20 0a 20 ...%3.5f]\n\n',kc_current);.....
3c200 20 20 0a 20 20 20 0a 20 20 20 70 61 72 61 6d 5f 6c 69 73 74 20 3d 20 5b 70 61 72 61 6d 5f 6c 69 ..........param_list.=.[param_li
3c220 73 74 20 70 61 72 61 6d 5d 3b 0a 20 20 20 0a 20 20 20 69 74 65 72 20 3d 20 69 74 65 72 20 2b 20 st.param];........iter.=.iter.+.
3c240 31 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 27 29 3b 0a 0a 0a 1;.....end;..fprintf(1,'\n');...
3c260 73 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 65 72 20 3d 20 70 61 72 61 6d 3b 0a 0a 73 6f 6c 75 74 69 sol_with_center.=.param;..soluti
3c280 6f 6e 20 3d 20 70 61 72 61 6d 3b 0a 0a 0a 25 25 25 20 45 78 74 72 61 63 74 69 6f 6e 20 6f 66 20 on.=.param;...%%%.Extraction.of.
3c2a0 74 68 65 20 66 69 6e 61 6c 20 69 6e 74 72 69 6e 73 69 63 20 61 6e 64 20 65 78 74 72 69 6e 73 69 the.final.intrinsic.and.extrinsi
3c2c0 63 20 70 61 72 61 6d 61 74 65 72 73 3a 0a 0a 65 78 74 72 61 63 74 5f 70 61 72 61 6d 65 74 65 72 c.paramaters:..extract_parameter
3c2e0 73 3b 0a 63 6f 6d 70 5f 65 72 72 6f 72 5f 63 61 6c 69 62 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c s;.comp_error_calib;..fprintf(1,
3c300 27 5c 6e 5c 6e 43 61 6c 69 62 72 61 74 69 6f 6e 20 72 65 73 75 6c 74 73 20 61 66 74 65 72 20 6f '\n\nCalibration.results.after.o
3c320 70 74 69 6d 69 7a 61 74 69 6f 6e 3a 5c 6e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 46 ptimization:\n\n');.fprintf(1,'F
3c340 6f 63 61 6c 20 4c 65 6e 67 74 68 3a 20 20 20 20 20 66 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 ocal.Length:.....fc.=.[.%3.5f...
3c360 25 33 2e 35 66 5d 5c 6e 27 2c 66 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 50 72 69 6e 63 69 %3.5f]\n',fc);.fprintf(1,'Princi
3c380 70 61 6c 20 70 6f 69 6e 74 3a 20 20 63 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 pal.point:..cc.=.[.%3.5f...%3.5f
3c3a0 5d 5c 6e 27 2c 63 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 44 69 73 74 6f 72 74 69 6f 6e 3a ]\n',cc);.fprintf(1,'Distortion:
3c3c0 20 20 20 20 20 20 20 6b 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 20 20 20 25 33 .......kc.=.[.%3.5f...%3.5f...%3
3c3e0 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 6b 63 29 3b 20 20 20 0a 66 70 72 69 6e 74 66 28 .5f...%3.5f]\n',kc);....fprintf(
3c400 31 2c 27 50 69 78 65 6c 20 65 72 72 6f 72 3a 20 20 20 20 20 20 65 72 72 20 3d 20 5b 20 25 33 2e 1,'Pixel.error:......err.=.[.%3.
3c420 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 5c 6e 27 2c 65 72 72 5f 73 74 64 29 3b 20 0a 0a 3d 20 30 5f...%3.5f]\n\n',err_std);...=.0
3c440 3b 20 25 20 53 65 74 20 74 6f 20 31 20 66 6f 72 20 75 73 69 6e 67 20 61 20 71 75 69 63 6b 20 69 ;.%.Set.to.1.for.using.a.quick.i
3c460 6e 69 74 20 28 6e 65 63 65 73 73 61 72 79 20 77 68 65 6e 20 75 73 69 6e 67 20 33 44 20 72 69 67 nit.(necessary.when.using.3D.rig
3c480 73 29 0a 0a 0a 0a 25 20 43 68 65 63 6b 20 33 44 2d 6e 65 73 73 20 6f 66 20 74 68 65 20 63 61 6c s)....%.Check.3D-ness.of.the.cal
3c4a0 69 62 72 61 74 69 6f 6e 20 72 69 67 3a 0a 72 69 67 33 44 20 3d 20 30 3b 0a 66 6f 72 20 6b 6b 20 ibration.rig:.rig3D.=.0;.for.kk.
3c4c0 3d 20 69 6e 64 5f 61 63 74 69 76 65 2c 0a 20 20 20 65 76 61 6c 28 5b 27 58 5f 6b 6b 20 3d 20 58 =.ind_active,....eval(['X_kk.=.X
3c4e0 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 69 66 20 69 73 33 44 _'.num2str(kk).';']);....if.is3D
3c500 28 58 5f 6b 6b 29 2c 0a 20 20 20 20 20 20 72 69 67 33 44 20 3d 20 31 3b 0a 20 20 20 65 6e 64 3b (X_kk),.......rig3D.=.1;....end;
3c520 0a 65 6e 64 3b 0a 0a 0a 0a 25 20 49 66 20 74 68 65 20 72 69 67 20 69 73 20 33 44 2c 20 74 68 65 .end;....%.If.the.rig.is.3D,.the
3c540 6e 20 6e 6f 20 63 68 6f 69 63 65 3a 20 74 68 65 20 6f 6e 6c 79 20 76 61 6c 69 64 20 69 6e 69 74 n.no.choice:.the.only.valid.init
3c560 69 61 6c 69 7a 61 74 69 6f 6e 20 69 73 20 6d 61 6e 75 61 6c 21 0a 69 66 20 72 69 67 33 44 2c 0a ialization.is.manual!.if.rig3D,.
3c580 20 20 20 71 75 69 63 6b 5f 69 6e 69 74 20 3d 20 31 3b 0a 65 6e 64 3b 0a 0a 0a 0a 0a 61 6c 70 68 ...quick_init.=.1;.end;.....alph
3c5a0 61 20 3d 20 30 2e 34 3b 20 25 20 73 65 74 20 61 6c 70 68 61 20 3d 20 31 3b 20 66 6f 72 20 73 74 a.=.0.4;.%.set.alpha.=.1;.for.st
3c5c0 65 65 70 65 73 74 20 67 72 61 64 69 65 6e 74 20 64 65 73 63 65 6e 74 0a 0a 0a 25 20 43 6f 6e 64 eepest.gradient.descent...%.Cond
3c5e0 69 74 69 6f 6e 69 6e 67 20 74 68 72 65 73 68 6f 6c 64 20 66 6f 72 20 76 69 65 77 20 72 65 6a 65 itioning.threshold.for.view.reje
3c600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c6a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c6c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c6e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c7c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c7e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c8a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c8c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c8e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c9a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c9c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c9e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3ca00 61 6e 73 66 6f 72 6d 2a 6f 6e 65 73 28 31 2c 4e 70 29 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 ansform*ones(1,Np);............%
3ca20 20 43 6f 6d 70 75 74 65 20 74 68 65 20 70 6c 61 6e 61 72 20 68 6f 6d 6f 67 72 61 70 68 79 3a 0a .Compute.the.planar.homography:.
3ca40 20 20 20 0a 20 20 20 48 20 3d 20 63 6f 6d 70 75 74 65 5f 68 6f 6d 6f 67 72 61 70 68 79 20 28 78 .......H.=.compute_homography.(x
3ca60 6e 2c 58 5f 6e 65 77 28 31 3a 32 2c 3a 29 29 3b 0a 20 20 20 0a 20 20 20 25 20 44 65 2d 65 6d 62 n,X_new(1:2,:));........%.De-emb
3ca80 65 64 20 74 68 65 20 6d 6f 74 69 6f 6e 20 70 61 72 61 6d 65 74 65 72 73 20 66 72 6f 6d 20 74 68 ed.the.motion.parameters.from.th
3caa0 65 20 68 6f 6d 6f 67 72 61 70 68 79 3a 0a 20 20 20 0a 20 20 20 73 63 20 3d 20 6d 65 61 6e 28 5b e.homography:........sc.=.mean([
3cac0 6e 6f 72 6d 28 48 28 3a 2c 31 29 29 3b 6e 6f 72 6d 28 48 28 3a 2c 32 29 29 5d 29 3b 0a 20 20 20 norm(H(:,1));norm(H(:,2))]);....
3cae0 0a 20 20 20 48 20 3d 20 48 2f 73 63 3b 0a 20 20 20 0a 20 20 20 6f 6d 63 6b 6b 20 3d 20 72 6f 64 ....H.=.H/sc;........omckk.=.rod
3cb00 72 69 67 75 65 73 28 5b 48 28 3a 2c 31 3a 32 29 20 63 72 6f 73 73 28 48 28 3a 2c 31 29 2c 48 28 rigues([H(:,1:2).cross(H(:,1),H(
3cb20 3a 2c 32 29 29 5d 29 3b 0a 20 20 20 52 63 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 :,2))]);....Rckk.=.rodrigues(omc
3cb40 6b 6b 29 3b 0a 20 20 20 54 63 6b 6b 20 3d 20 48 28 3a 2c 33 29 3b 0a 20 20 20 0a 20 20 20 25 49 kk);....Tckk.=.H(:,3);........%I
3cb60 66 20 58 63 20 3d 20 52 63 6b 6b 20 2a 20 58 5f 6e 65 77 20 2b 20 54 63 6b 6b 2c 20 74 68 65 6e f.Xc.=.Rckk.*.X_new.+.Tckk,.then
3cb80 20 58 63 20 3d 20 52 63 6b 6b 20 2a 20 52 5f 74 72 61 6e 73 66 6f 72 6d 20 2a 20 58 5f 6b 6b 20 .Xc.=.Rckk.*.R_transform.*.X_kk.
3cba0 2b 20 54 63 6b 6b 20 2b 20 54 5f 74 72 61 6e 73 66 6f 72 6d 0a 20 20 20 0a 20 20 20 54 63 6b 6b +.Tckk.+.T_transform........Tckk
3cbc0 20 3d 20 54 63 6b 6b 20 2b 20 52 63 6b 6b 2a 20 54 5f 74 72 61 6e 73 66 6f 72 6d 3b 0a 20 20 20 .=.Tckk.+.Rckk*.T_transform;....
3cbe0 52 63 6b 6b 20 3d 20 52 63 6b 6b 20 2a 20 52 5f 74 72 61 6e 73 66 6f 72 6d 3b 0a 0a 20 20 20 6f Rckk.=.Rckk.*.R_transform;.....o
3cc00 6d 63 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 28 52 63 6b 6b 29 3b 0a 20 20 20 52 63 6b 6b 20 mckk.=.rodrigues(Rckk);....Rckk.
3cc20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 6b 6b 29 3b 0a 20 20 20 0a 20 20 20 0a 65 6c 73 65 =.rodrigues(omckk);.........else
3cc40 0a 20 20 20 0a 20 20 20 25 66 70 72 69 6e 74 66 28 31 2c 27 4e 6f 6e 20 70 6c 61 6e 61 72 20 73 ........%fprintf(1,'Non.planar.s
3cc60 74 72 75 63 74 75 72 65 20 64 65 74 65 63 74 65 64 3a 20 72 3d 25 66 5c 6e 27 2c 72 29 3b 0a 0a tructure.detected:.r=%f\n',r);..
3cc80 20 20 20 25 20 43 6f 6d 70 75 74 65 73 20 61 6e 20 69 6e 69 74 69 61 6c 20 67 75 65 73 73 20 66 ...%.Computes.an.initial.guess.f
3cca0 6f 72 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 28 77 6f 72 6b 73 20 66 or.extrinsic.parameters.(works.f
3ccc0 6f 72 20 67 65 6e 65 72 61 6c 20 33 64 20 73 74 72 75 63 74 75 72 65 2c 20 6e 6f 74 20 70 6c 61 or.general.3d.structure,.not.pla
3cce0 6e 61 72 21 21 21 29 3a 0a 20 20 20 25 20 54 68 65 20 44 4c 54 20 6d 65 74 68 6f 64 20 69 73 20 nar!!!):....%.The.DLT.method.is.
3cd00 61 70 70 6c 69 65 64 20 68 65 72 65 21 21 0a 20 20 20 0a 20 20 20 4a 20 3d 20 7a 65 72 6f 73 28 applied.here!!........J.=.zeros(
3cd20 32 2a 4e 70 2c 31 32 29 3b 0a 09 0a 09 78 58 20 3d 20 28 6f 6e 65 73 28 33 2c 31 29 2a 78 6e 28 2*Np,12);....xX.=.(ones(3,1)*xn(
3cd40 31 2c 3a 29 29 2e 2a 58 5f 6b 6b 3b 0a 09 79 58 20 3d 20 28 6f 6e 65 73 28 33 2c 31 29 2a 78 6e 1,:)).*X_kk;..yX.=.(ones(3,1)*xn
3cd60 28 32 2c 3a 29 29 2e 2a 58 5f 6b 6b 3b 0a 09 0a 09 4a 28 31 3a 32 3a 65 6e 64 2c 5b 31 20 34 20 (2,:)).*X_kk;....J(1:2:end,[1.4.
3cd80 37 5d 29 20 3d 20 2d 58 5f 6b 6b 27 3b 0a 09 4a 28 32 3a 32 3a 65 6e 64 2c 5b 32 20 35 20 38 5d 7]).=.-X_kk';..J(2:2:end,[2.5.8]
3cda0 29 20 3d 20 58 5f 6b 6b 27 3b 0a 09 4a 28 31 3a 32 3a 65 6e 64 2c 5b 33 20 36 20 39 5d 29 20 3d ).=.X_kk';..J(1:2:end,[3.6.9]).=
3cdc0 20 78 58 27 3b 0a 09 4a 28 32 3a 32 3a 65 6e 64 2c 5b 33 20 36 20 39 5d 29 20 3d 20 2d 79 58 27 .xX';..J(2:2:end,[3.6.9]).=.-yX'
3cde0 3b 0a 09 4a 28 31 3a 32 3a 65 6e 64 2c 31 32 29 20 3d 20 78 6e 28 31 2c 3a 29 27 3b 0a 09 4a 28 ;..J(1:2:end,12).=.xn(1,:)';..J(
3ce00 32 3a 32 3a 65 6e 64 2c 31 32 29 20 3d 20 2d 78 6e 28 32 2c 3a 29 27 3b 0a 09 4a 28 31 3a 32 3a 2:2:end,12).=.-xn(2,:)';..J(1:2:
3ce20 65 6e 64 2c 31 30 29 20 3d 20 2d 6f 6e 65 73 28 4e 70 2c 31 29 3b 0a 09 4a 28 32 3a 32 3a 65 6e end,10).=.-ones(Np,1);..J(2:2:en
3ce40 64 2c 31 31 29 20 3d 20 6f 6e 65 73 28 4e 70 2c 31 29 3b 0a 09 0a 09 4a 4a 20 3d 20 4a 27 2a 4a d,11).=.ones(Np,1);....JJ.=.J'*J
3ce60 3b 0a 09 5b 55 2c 53 2c 56 5d 20 3d 20 73 76 64 28 4a 4a 29 3b 0a 20 20 20 0a 20 20 20 52 52 20 ;..[U,S,V].=.svd(JJ);........RR.
3ce80 3d 20 72 65 73 68 61 70 65 28 56 28 31 3a 39 2c 31 32 29 2c 33 2c 33 29 3b 0a 20 20 20 0a 20 20 =.reshape(V(1:9,12),3,3);.......
3cea0 20 69 66 20 64 65 74 28 52 52 29 20 3c 20 30 2c 0a 20 20 20 20 20 20 56 28 3a 2c 31 32 29 20 3d .if.det(RR).<.0,.......V(:,12).=
3cec0 20 2d 56 28 3a 2c 31 32 29 3b 0a 20 20 20 20 20 20 52 52 20 3d 20 2d 52 52 3b 0a 20 20 20 65 6e .-V(:,12);.......RR.=.-RR;....en
3cee0 64 3b 0a 20 20 20 0a 20 20 20 5b 55 72 2c 53 72 2c 56 72 5d 20 3d 20 73 76 64 28 52 52 29 3b 0a d;........[Ur,Sr,Vr].=.svd(RR);.
3cf00 20 20 20 0a 20 20 20 52 63 6b 6b 20 3d 20 55 72 2a 56 72 27 3b 0a 20 20 20 0a 20 20 20 73 63 20 .......Rckk.=.Ur*Vr';........sc.
3cf20 3d 20 6e 6f 72 6d 28 56 28 31 3a 39 2c 31 32 29 29 20 2f 20 6e 6f 72 6d 28 52 63 6b 6b 28 3a 29 =.norm(V(1:9,12))./.norm(Rckk(:)
3cf40 29 3b 0a 20 20 20 54 63 6b 6b 20 3d 20 56 28 31 30 3a 31 32 2c 31 32 29 2f 73 63 3b 0a 20 20 20 );....Tckk.=.V(10:12,12)/sc;....
3cf60 0a 09 6f 6d 63 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 28 52 63 6b 6b 29 3b 0a 20 20 20 52 63 ..omckk.=.rodrigues(Rckk);....Rc
3cf80 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 6b 6b 29 3b 0a 20 20 20 0a 65 6e 64 3b 0a kk.=.rodrigues(omckk);.....end;.
3cfa0 69 74 20 3d 20 73 71 72 74 28 61 62 73 28 31 2e 2f 28 69 6e 76 28 41 27 2a 41 29 2a 41 27 2a 62 it.=.sqrt(abs(1./(inv(A'*A)*A'*b
3cfc0 29 29 29 3b 20 25 20 69 66 20 75 73 69 6e 67 20 61 20 74 77 6f 2d 66 6f 63 61 6c 20 6d 6f 64 65 )));.%.if.using.a.two-focal.mode
3cfe0 6c 20 66 6f 72 20 69 6e 69 74 69 61 6c 20 67 75 65 73 73 0a 0a 25 66 5f 69 6e 69 74 20 3d 20 73 l.for.initial.guess..%f_init.=.s
3d000 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f TOOLBOX_calib/compute_extrinsic_
3d020 72 65 66 69 6e 65 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 refine.m........................
3d040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3d060 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
3d080 20 20 20 34 36 32 33 20 20 37 30 32 34 30 33 37 33 31 31 20 20 31 33 36 37 32 00 20 00 00 00 00 ...4623..7024037311..13672......
3d0a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3d0c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3d0e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3d100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3d120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3d140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3d160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3d180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3d1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3d1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3d1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3d200 66 75 6e 63 74 69 6f 6e 20 5b 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 52 63 6b 6b 2c 4a 4a 5d 20 3d 20 function.[omckk,Tckk,Rckk,JJ].=.
3d220 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 72 65 66 69 6e 65 28 6f 6d 63 5f 69 6e 69 compute_extrinsic_refine(omc_ini
3d240 74 2c 54 63 5f 69 6e 69 74 2c 78 5f 6b 6b 2c 58 5f 6b 6b 2c 66 63 2c 63 63 2c 6b 63 2c 4d 61 78 t,Tc_init,x_kk,X_kk,fc,cc,kc,Max
3d260 49 74 65 72 2c 74 68 72 65 73 68 5f 63 6f 6e 64 29 2c 0a 0a 25 63 6f 6d 70 75 74 65 5f 65 78 74 Iter,thresh_cond),..%compute_ext
3d280 72 69 6e 73 69 63 0a 25 0a 25 5b 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 52 63 6b 6b 5d 20 3d 20 63 6f rinsic.%.%[omckk,Tckk,Rckk].=.co
3d2a0 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 72 65 66 69 6e 65 28 78 5f 6b 6b 2c 58 5f 6b 6b mpute_extrinsic_refine(x_kk,X_kk
3d2c0 2c 66 63 2c 63 63 2c 6b 63 2c 4d 61 78 49 74 65 72 29 0a 25 0a 25 43 6f 6d 70 75 74 65 73 20 74 ,fc,cc,kc,MaxIter).%.%Computes.t
3d2e0 68 65 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 61 74 74 61 63 68 65 64 he.extrinsic.parameters.attached
3d300 20 74 6f 20 61 20 33 44 20 73 74 72 75 63 74 75 72 65 20 58 5f 6b 6b 20 67 69 76 65 6e 20 69 74 .to.a.3D.structure.X_kk.given.it
3d320 73 20 70 72 6f 6a 65 63 74 69 6f 6e 0a 25 6f 6e 20 74 68 65 20 69 6d 61 67 65 20 70 6c 61 6e 65 s.projection.%on.the.image.plane
3d340 20 78 5f 6b 6b 20 61 6e 64 20 74 68 65 20 69 6e 74 72 69 6e 73 69 63 20 63 61 6d 65 72 61 20 70 .x_kk.and.the.intrinsic.camera.p
3d360 61 72 61 6d 65 74 65 72 73 20 66 63 2c 20 63 63 20 61 6e 64 20 6b 63 2e 0a 25 57 6f 72 6b 73 20 arameters.fc,.cc.and.kc..%Works.
3d380 77 69 74 68 20 70 6c 61 6e 61 72 20 61 6e 64 20 6e 6f 6e 2d 70 6c 61 6e 61 72 20 73 74 72 75 63 with.planar.and.non-planar.struc
3d3a0 74 75 72 65 73 2e 0a 25 0a 25 49 4e 50 55 54 3a 20 78 5f 6b 6b 3a 20 46 65 61 74 75 72 65 20 6c tures..%.%INPUT:.x_kk:.Feature.l
3d3c0 6f 63 61 74 69 6f 6e 73 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 73 0a 25 20 20 20 20 20 20 20 58 ocations.on.the.images.%.......X
3d3e0 5f 6b 6b 3a 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 67 72 69 64 20 63 6f 6f 72 64 69 6e 61 _kk:.Corresponding.grid.coordina
3d400 74 65 73 0a 25 20 20 20 20 20 20 20 66 63 3a 20 43 61 6d 65 72 61 20 66 6f 63 61 6c 20 6c 65 6e tes.%.......fc:.Camera.focal.len
3d420 67 74 68 0a 25 20 20 20 20 20 20 20 63 63 3a 20 50 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 gth.%.......cc:.Principal.point.
3d440 63 6f 6f 72 64 69 6e 61 74 65 73 0a 25 20 20 20 20 20 20 20 6b 63 3a 20 44 69 73 74 6f 72 74 69 coordinates.%.......kc:.Distorti
3d460 6f 6e 20 63 6f 65 66 66 69 63 69 65 6e 74 73 0a 25 20 20 20 20 20 20 20 4d 61 78 49 74 65 72 3a on.coefficients.%.......MaxIter:
3d480 20 4d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 69 74 65 72 61 74 69 6f 6e 73 0a 25 0a .Maximum.number.of.iterations.%.
3d4a0 25 4f 55 54 50 55 54 3a 20 6f 6d 63 6b 6b 3a 20 33 44 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 %OUTPUT:.omckk:.3D.rotation.vect
3d4c0 6f 72 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 67 72 69 64 20 70 6f 73 69 74 69 6f 6e or.attached.to.the.grid.position
3d4e0 73 20 69 6e 20 73 70 61 63 65 0a 25 20 20 20 20 20 20 20 20 54 63 6b 6b 3a 20 33 44 20 74 72 61 s.in.space.%........Tckk:.3D.tra
3d500 6e 73 6c 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 nslation.vector.attached.to.the.
3d520 67 72 69 64 20 70 6f 73 69 74 69 6f 6e 73 20 69 6e 20 73 70 61 63 65 0a 25 20 20 20 20 20 20 20 grid.positions.in.space.%.......
3d540 20 52 63 6b 6b 3a 20 33 44 20 72 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 63 65 73 20 63 6f 72 72 .Rckk:.3D.rotation.matrices.corr
3d560 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 6f 6d 63 20 76 65 63 74 6f 72 73 0a 0a 25 0a esponding.to.the.omc.vectors..%.
3d580 25 4d 65 74 68 6f 64 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 6e 6f 72 6d 61 6c 69 7a 65 64 %Method:.Computes.the.normalized
3d5a0 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 2c 20 74 68 65 6e 20 63 6f 6d 70 75 74 65 .point.coordinates,.then.compute
3d5c0 73 20 74 68 65 20 33 44 20 70 6f 73 65 0a 25 0a 25 49 6d 70 6f 72 74 61 6e 74 20 66 75 6e 63 74 s.the.3D.pose.%.%Important.funct
3d5e0 69 6f 6e 73 20 63 61 6c 6c 65 64 20 77 69 74 68 69 6e 20 74 68 61 74 20 70 72 6f 67 72 61 6d 3a ions.called.within.that.program:
3d600 0a 25 0a 25 6e 6f 72 6d 61 6c 69 7a 65 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 6e 6f 72 6d .%.%normalize:.Computes.the.norm
3d620 61 6c 69 7a 65 20 69 6d 61 67 65 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 2e 0a 25 alize.image.point.coordinates..%
3d640 0a 25 70 6f 73 65 33 44 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 33 44 20 70 6f 73 65 20 6f .%pose3D:.Computes.the.3D.pose.o
3d660 66 20 74 68 65 20 73 74 72 75 63 74 75 72 65 20 67 69 76 65 6e 20 74 68 65 20 6e 6f 72 6d 61 6c f.the.structure.given.the.normal
3d680 69 7a 65 64 20 69 6d 61 67 65 20 70 72 6f 6a 65 63 74 69 6f 6e 2e 0a 25 0a 25 70 72 6f 6a 65 63 ized.image.projection..%.%projec
3d6a0 74 5f 70 6f 69 6e 74 73 2e 6d 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 32 44 20 69 6d 61 67 t_points.m:.Computes.the.2D.imag
3d6c0 65 20 70 72 6f 6a 65 63 74 69 6f 6e 73 20 6f 66 20 61 20 73 65 74 20 6f 66 20 33 44 20 70 6f 69 e.projections.of.a.set.of.3D.poi
3d6e0 6e 74 73 0a 0a 0a 69 66 20 6e 61 72 67 69 6e 20 3c 20 39 2c 0a 20 20 20 74 68 72 65 73 68 5f 63 nts...if.nargin.<.9,....thresh_c
3d700 6f 6e 64 20 3d 20 69 6e 66 3b 0a 65 6e 64 3b 0a 0a 0a 69 66 20 6e 61 72 67 69 6e 20 3c 20 38 2c ond.=.inf;.end;...if.nargin.<.8,
3d720 0a 20 20 20 4d 61 78 49 74 65 72 20 3d 20 32 30 3b 0a 65 6e 64 3b 0a 0a 0a 69 66 20 6e 61 72 67 ....MaxIter.=.20;.end;...if.narg
3d740 69 6e 20 3c 20 37 2c 0a 20 20 20 6b 63 20 3d 20 7a 65 72 6f 73 28 34 2c 31 29 3b 0a 20 20 20 69 in.<.7,....kc.=.zeros(4,1);....i
3d760 66 20 6e 61 72 67 69 6e 20 3c 20 36 2c 0a 20 20 20 20 20 20 63 63 20 3d 20 7a 65 72 6f 73 28 32 f.nargin.<.6,.......cc.=.zeros(2
3d780 2c 31 29 3b 0a 20 20 20 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3c 20 35 2c 0a 20 20 20 20 20 20 ,1);.......if.nargin.<.5,.......
3d7a0 20 20 20 66 63 20 3d 20 6f 6e 65 73 28 32 2c 31 29 3b 0a 20 20 20 20 20 20 20 20 20 69 66 20 6e ...fc.=.ones(2,1);..........if.n
3d7c0 61 72 67 69 6e 20 3c 20 34 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 28 27 4e 65 argin.<.4,.............error('Ne
3d7e0 65 64 20 32 44 20 70 72 6f 6a 65 63 74 69 6f 6e 73 20 61 6e 64 20 33 44 20 70 6f 69 6e 74 73 20 ed.2D.projections.and.3D.points.
3d800 28 69 6e 20 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 72 65 66 69 6e 65 2e 6d 29 27 (in.compute_extrinsic_refine.m)'
3d820 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0a 20 20 20 20 20 20 20 20 20 );.............return;..........
3d840 65 6e 64 3b 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 0a 25 end;.......end;....end;.end;...%
3d860 20 49 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 3a 0a 0a 6f 6d 63 6b 6b 20 3d 20 6f 6d 63 5f 69 6e .Initialization:..omckk.=.omc_in
3d880 69 74 3b 0a 54 63 6b 6b 20 3d 20 54 63 5f 69 6e 69 74 3b 0a 0a 0a 25 20 46 69 6e 61 6c 20 6f 70 it;.Tckk.=.Tc_init;...%.Final.op
3d8a0 74 69 6d 69 7a 61 74 69 6f 6e 20 28 6d 69 6e 69 6d 69 7a 65 20 74 68 65 20 72 65 70 72 6f 6a 65 timization.(minimize.the.reproje
3d8c0 63 74 69 6f 6e 20 65 72 72 6f 72 20 69 6e 20 70 69 78 65 6c 29 3a 0a 25 20 74 68 72 6f 75 67 68 ction.error.in.pixel):.%.through
3d8e0 20 47 72 61 64 69 65 6e 74 20 44 65 73 63 65 6e 74 3a 0a 0a 70 61 72 61 6d 20 3d 20 5b 6f 6d 63 .Gradient.Descent:..param.=.[omc
3d900 6b 6b 3b 54 63 6b 6b 5d 3b 0a 0a 63 68 61 6e 67 65 20 3d 20 31 3b 0a 0a 69 74 65 72 20 3d 20 30 kk;Tckk];..change.=.1;..iter.=.0
3d920 3b 0a 0a 25 6b 65 79 62 6f 61 72 64 3b 0a 0a 25 66 70 72 69 6e 74 66 28 31 2c 27 47 72 61 64 69 ;..%keyboard;..%fprintf(1,'Gradi
3d940 65 6e 74 20 64 65 73 63 65 6e 74 20 69 74 65 72 61 74 69 6f 6e 73 3a 20 27 29 3b 0a 0a 77 68 69 ent.descent.iterations:.');..whi
3d960 6c 65 20 28 63 68 61 6e 67 65 20 3e 20 31 65 2d 31 30 29 26 28 69 74 65 72 20 3c 20 4d 61 78 49 le.(change.>.1e-10)&(iter.<.MaxI
3d980 74 65 72 29 2c 0a 20 20 20 0a 20 20 20 25 66 70 72 69 6e 74 66 28 31 2c 27 25 64 2e 2e 2e 27 2c ter),........%fprintf(1,'%d...',
3d9a0 69 74 65 72 2b 31 29 3b 0a 0a 20 20 20 5b 78 2c 64 78 64 6f 6d 2c 64 78 64 54 5d 20 3d 20 70 72 iter+1);.....[x,dxdom,dxdT].=.pr
3d9c0 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 28 58 5f 6b 6b 2c 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 66 63 2c oject_points(X_kk,omckk,Tckk,fc,
3d9e0 63 63 2c 6b 63 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 78 20 3d 20 78 5f 6b 6b 20 2d 20 78 3b cc,kc);...........ex.=.x_kk.-.x;
3da00 0a 20 20 20 0a 20 20 20 25 6b 65 79 62 6f 61 72 64 3b 0a 20 20 20 0a 20 20 20 4a 4a 20 3d 20 5b ........%keyboard;........JJ.=.[
3da20 64 78 64 6f 6d 20 64 78 64 54 5d 3b 0a 20 20 20 0a 20 20 20 69 66 20 63 6f 6e 64 28 4a 4a 29 20 dxdom.dxdT];........if.cond(JJ).
3da40 3e 20 74 68 72 65 73 68 5f 63 6f 6e 64 2c 0a 20 20 20 20 20 20 63 68 61 6e 67 65 20 3d 20 30 3b >.thresh_cond,.......change.=.0;
3da60 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 0a 20 20 20 09 4a 4a 32 20 3d 20 4a 4a 27 2a 4a 4a ....else............JJ2.=.JJ'*JJ
3da80 3b 0a 20 20 20 0a 09 09 70 61 72 61 6d 5f 69 6e 6e 6f 76 20 3d 20 69 6e 76 28 4a 4a 32 29 2a 28 ;.......param_innov.=.inv(JJ2)*(
3daa0 4a 4a 27 29 2a 65 78 28 3a 29 3b 0a 09 09 70 61 72 61 6d 5f 75 70 20 3d 20 70 61 72 61 6d 20 2b JJ')*ex(:);...param_up.=.param.+
3dac0 20 70 61 72 61 6d 5f 69 6e 6e 6f 76 3b 0a 09 09 63 68 61 6e 67 65 20 3d 20 6e 6f 72 6d 28 70 61 .param_innov;...change.=.norm(pa
3dae0 72 61 6d 5f 69 6e 6e 6f 76 29 2f 6e 6f 72 6d 28 70 61 72 61 6d 5f 75 70 29 3b 0a 09 09 70 61 72 ram_innov)/norm(param_up);...par
3db00 61 6d 20 3d 20 70 61 72 61 6d 5f 75 70 3b 0a 09 09 69 74 65 72 20 3d 20 69 74 65 72 20 2b 20 31 am.=.param_up;...iter.=.iter.+.1
3db20 3b 0a 20 20 20 0a 20 20 20 09 6f 6d 63 6b 6b 20 3d 20 70 61 72 61 6d 28 31 3a 33 29 3b 0a 20 20 ;.........omckk.=.param(1:3);...
3db40 20 09 54 63 6b 6b 20 3d 20 70 61 72 61 6d 28 34 3a 36 29 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 ..Tckk.=.param(4:6);....end;....
3db60 0a 65 6e 64 3b 0a 0a 25 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 27 29 3b 0a 0a 52 63 6b 6b 20 3d .end;..%fprintf(1,'\n');..Rckk.=
3db80 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 6b 6b 29 3b 0a 73 66 6f 72 6d 20 2a 20 58 5f 6b 6b 20 .rodrigues(omckk);.sform.*.X_kk.
3dba0 2b 20 54 63 6b 6b 20 2b 20 54 5f 74 72 61 6e 73 66 6f 72 6d 0a 20 20 20 0a 20 20 20 54 63 6b 6b +.Tckk.+.T_transform........Tckk
3dbc0 20 3d 20 54 63 6b 6b 20 2b 20 52 63 6b 6b 2a 20 54 5f 74 72 61 6e 73 66 6f 72 6d 3b 0a 20 20 20 .=.Tckk.+.Rckk*.T_transform;....
3dbe0 52 63 6b 6b 20 3d 20 52 63 6b 6b 20 2a 20 52 5f 74 72 61 6e 73 66 6f 72 6d 3b 0a 0a 20 20 20 6f Rckk.=.Rckk.*.R_transform;.....o
3dc00 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 74 65 TOOLBOX_calib/go_calib_optim_ite
3dc20 72 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 r.m.............................
3dc40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3dc60 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......644.....471.....454......
3dc80 20 20 32 33 30 37 35 20 20 37 30 32 34 30 33 37 33 33 30 20 20 31 32 36 31 33 00 20 00 00 00 00 ..23075..7024037330..12613......
3dca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3dcc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3dce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3dd00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3dd20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3dd40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3dd60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3dd80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3dda0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3ddc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3dde0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3de00 25 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 74 65 72 0a 25 0a 25 4d 61 69 6e 20 63 61 6c %go_calib_optim_iter.%.%Main.cal
3de20 69 62 72 61 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 2e 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 ibration.function..Computes.the.
3de40 69 6e 74 72 69 6e 73 69 63 20 61 6e 64 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 intrinsic.andextrinsic.parameter
3de60 73 2e 0a 25 52 75 6e 73 20 61 73 20 61 20 73 63 72 69 70 74 2e 0a 25 0a 25 49 4e 50 55 54 3a 20 s..%Runs.as.a.script..%.%INPUT:.
3de80 78 5f 31 2c 78 5f 32 2c 78 5f 33 2c 2e 2e 2e 3a 20 46 65 61 74 75 72 65 20 6c 6f 63 61 74 69 6f x_1,x_2,x_3,...:.Feature.locatio
3dea0 6e 73 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 73 0a 25 20 20 20 20 20 20 20 58 5f 31 2c 58 5f 32 ns.on.the.images.%.......X_1,X_2
3dec0 2c 58 5f 33 2c 2e 2e 2e 3a 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 67 72 69 64 20 63 6f 6f ,X_3,...:.Corresponding.grid.coo
3dee0 72 64 69 6e 61 74 65 73 0a 25 0a 25 4f 55 54 50 55 54 3a 20 66 63 3a 20 43 61 6d 65 72 61 20 66 rdinates.%.%OUTPUT:.fc:.Camera.f
3df00 6f 63 61 6c 20 6c 65 6e 67 74 68 0a 25 20 20 20 20 20 20 20 20 63 63 3a 20 50 72 69 6e 63 69 70 ocal.length.%........cc:.Princip
3df20 61 6c 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 0a 25 20 20 20 20 20 20 20 20 6b 63 al.point.coordinates.%........kc
3df40 3a 20 44 69 73 74 6f 72 74 69 6f 6e 20 63 6f 65 66 66 69 63 69 65 6e 74 73 0a 25 20 20 20 20 20 :.Distortion.coefficients.%.....
3df60 20 20 20 4b 4b 3a 20 54 68 65 20 63 61 6d 65 72 61 20 6d 61 74 72 69 78 20 28 63 6f 6e 74 61 69 ...KK:.The.camera.matrix.(contai
3df80 6e 69 6e 67 20 66 63 20 61 6e 64 20 63 63 29 0a 25 20 20 20 20 20 20 20 20 6f 6d 63 5f 31 2c 6f ning.fc.and.cc).%........omc_1,o
3dfa0 6d 63 5f 32 2c 6f 6d 63 5f 33 2c 2e 2e 2e 3a 20 33 44 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 mc_2,omc_3,...:.3D.rotation.vect
3dfc0 6f 72 73 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 67 72 69 64 20 70 6f 73 69 74 69 6f ors.attached.to.the.grid.positio
3dfe0 6e 73 20 69 6e 20 73 70 61 63 65 0a 25 20 20 20 20 20 20 20 20 54 63 5f 31 2c 54 63 5f 32 2c 54 ns.in.space.%........Tc_1,Tc_2,T