summaryrefslogtreecommitdiffstats
path: root/SD-VBS/common/toolbox/toolbox_basic/calib/TOOLBOX_calib.tar
blob: 92ab3a0c1b487baa9067d32c281694c16864aa89 (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 36 37 36 33 32 36 35 30 32 35 20 20 20 36 33 33 37 00 20 00 00 00 00 ......0..6763265025...6337......
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 63 61 6c 69 62 5f 67 75 69 2e 6d 00 00 00 00 00 00 00 TOOLBOX_calib/calib_gui.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 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
0280 20 20 31 34 37 33 33 20 20 36 37 36 33 30 37 30 32 31 33 20 20 31 30 35 34 32 00 20 00 00 00 00 ..14733..6763070213..10542......
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 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 2d 2d 2d 2d fprintf(1,'*--------------------
0420 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 --------------------------------
0440 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 --------------------------------
0460 2d 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 ----------------*\n');.fprintf(1
0480 2c 27 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 61 6e 65 72 61 20 63 61 6c ,'|...................Canera.cal
04a0 69 62 72 61 74 69 6f 6e 20 66 72 6f 6d 20 6d 75 6c 74 69 70 6c 65 20 69 6d 61 67 65 73 20 6f 66 ibration.from.multiple.images.of
04c0 20 61 20 70 6c 61 6e 61 72 20 67 72 69 64 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .a.planar.grid..................
04e0 20 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 .......|\n');.fprintf(1,'|......
0500 20 20 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 ....................(c).Jean-Yve
0520 73 20 42 6f 75 67 75 65 74 20 2d 20 41 75 67 75 73 74 20 33 31 73 74 2c 20 31 39 39 39 20 20 20 s.Bouguet.-.August.31st,.1999...
0540 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 7c 5c ..............................|\
0560 6e 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 n');.fprintf(1,'*---------------
0580 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 --------------------------------
05a0 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 --------------------------------
05c0 2d 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 ---------------------*\n\n\n');.
05e0 0a 0a 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 ..fprintf(1,'LIST.OF.CALIBRATION
0600 20 43 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 .COMMANDS.(to.be.executed.from.1
0620 20 74 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 .to.5):\n\n');..fprintf(1,'1-.Im
0640 61 67 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 age.names:..........Lets.the.use
0660 72 20 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 r.enter.the.file.names.of.the.ca
0680 6c 69 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 libration.images.(max.=.30.image
06a0 73 29 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 s).\n');.fprintf(1,'............
06c0 20 20 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 .............It.includes.basenam
06e0 65 2c 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 e,.image.type.(''tif'',.''bmp''.
0700 6f 72 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 or.''ras''),.numbering.scheme.\n
0720 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,'.................
0740 20 20 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 ........Automatically.launchs.th
0760 65 20 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 e.next.step.(Read.images).\n');.
0780 66 70 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 fprintf(1,'2-.Read.images:......
07a0 20 20 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 ....Reads.in.the.calibration.ima
07c0 67 65 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 ges.from.files.\n');.fprintf(1,'
07e0 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 41 75 74 6f 6d 61 74 .........................Automat
0800 69 63 61 6c 6c 79 20 6c 61 75 6e 63 68 73 20 74 68 65 20 6e 65 78 74 20 73 74 65 70 20 28 45 78 ically.launchs.the.next.step.(Ex
0820 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 66 70 72 69 6e 74 tract.grid.corners).\n');.fprint
0840 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 72 73 3a 20 45 78 f(1,'3-.Extract.grid.corners:.Ex
0860 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 6f 6d 20 74 68 65 tracts.the.grid.corners.from.the
0880 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 20 20 20 20 20 20 .image.\n');.fprintf(1,'........
08a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 61 73 65 64 20 66 6f 75 72 20 6d 61 75 61 .................Based.four.maua
08c0 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 72 69 6e 74 66 l.clicks.per.image.\n');.fprintf
08e0 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
0900 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 75 6e 64 65 72 .calibration.data.is.saved.under
0920 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 70 72 69 6e 74 .''calib_data.mat''.\n');.fprint
0940 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 41 75 f(1,'.........................Au
0960 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 74 20 73 74 65 tomatically.launchs.the.next.ste
0980 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 70 72 69 6e 74 p.(Run.calibration).\n');.fprint
09a0 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 20 20 20 4d 61 f(1,'4-.Run.calibration:......Ma
09c0 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 27 29 3b 0a 66 in.calibration.procedure.\n');.f
09e0 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,'......................
0a00 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 63 20 61 6e 64 ...Optimization.of.intrinsic.and
0a20 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 6e 69 6d 69 7a .extrinsic.parameters.to.minimiz
0a40 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 20 20 20 20 20 e\n');.fprintf(1,'..............
0a60 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 20 65 72 72 6f ...........the.reprojection.erro
0a80 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 73 65 2e 5c 6e r.(in.the.least.squares.sense.\n
0aa0 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,'.................
0ac0 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 73 3a 20 32 20 ........Estimated.parameters:.2.
0ae0 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 69 6e 74 2c 5c focal.lengths,.principal.point,\
0b00 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,'................
0b20 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 3e 20 34 20 64 .........radial.(2.coeff..->.4.d
0b40 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 20 28 32 20 63 egree.model).and.tangential.(2.c
0b60 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 69 6e 74 66 28 oeff.).distortion,\n');.fprintf(
0b80 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 61 6e 64 20 1,'.........................and.
0ba0 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 61 6d 65 74 65 extrinsic.parameters.(6.paramete
0bc0 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 28 31 2c 27 20 rs.per.image).\n');.fprintf(1,'.
0be0 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 20 66 69 6e 61 ........................The.fina
0c00 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 27 43 61 6c 69 l.solution.is.saved.under.''Cali
0c20 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 74 66 28 31 2c b_Results.mat''.\n');.fprintf(1,
0c40 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 6f 72 20 61 20 '.........................For.a.
0c60 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 63 20 63 61 6d description.of.the.intrinsic.cam
0c80 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 65 72 65 6e 63 era.model,.refer.to.the.referenc
0ca0 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 20 20 20 20 20 e:\n');.fprintf(1,'.............
0cc0 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 6d 65 72 61 20 ............"A.Four-step.Camera.
0ce0 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 69 6d 70 6c 69 Calibration.Procedure.with.impli
0d00 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 66 70 72 69 6e cit.Image.Correction"\n');.fprin
0d20 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 4a tf(1,'.........................J
0d40 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 65 6e 2c 20 49 anne.Heikkila.and.Olli.Silven,.I
0d60 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 20 6f 66 20 45 nfotech.Oulu.and.Department.of.E
0d80 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 20 20 20 20 20 E\n');.fprintf(1,'..............
0da0 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 6c 75 2c 20 41 ...........University.of.Oulu,.A
0dc0 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 20 52 69 63 6f ppeared.in.CVPR''97,.Puerto.Rico
0de0 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,'..............
0e00 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 2e 65 65 2e 6f ...........Visit.http://www.ee.o
0e20 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 69 6f 6e 2e 68 ulu.fi/~jth/calibr/Calibration.h
0e40 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 20 20 20 20 20 tml\n');.fprintf(1,'............
0e60 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 6c 61 75 6e 63 .............Automatically.launc
0e80 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 75 74 29 2e 5c hs.the.next.step.(Graphic.out).\
0ea0 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 6f 75 74 3a 20 n');.fprintf(1,'5-.Graphic.out:.
0ec0 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 68 69 63 61 6c .........Generates.the.graphical
0ee0 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 75 72 72 65 6e .output.associated.to.the.curren
0f00 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 3b 0a 66 70 72 t.calibration.solution.\n');.fpr
0f20 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,'........................
0f40 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 6f 66 20 74 68 .It.shows.the.3D.locations.of.th
0f60 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 20 33 44 20 70 e.grids,.and.reprojects.the.3D.p
0f80 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 28 31 2c 27 20 atterns.on.the\n');.fprintf(1,'.
0fa0 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 67 69 6e 61 6c ........................original
0fc0 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 70 72 69 6e 74 .calibration.images.\n');.fprint
0fe0 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 20 20 20 4c 65 f(1,'6-.sol..with.center:.....Le
1000 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 62 72 61 74 69 ts.the.user.select.the.calibrati
1020 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 72 69 6e 63 69 on.solution.with.computed.princi
1040 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 20 20 20 pal.point.\n');.fprintf(1,'.....
1060 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 20 74 68 65 20 ....................This.is.the.
1080 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 69 6e 65 64 20 default.case.(solution.retained.
10a0 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 3b 0a 66 70 72 after.Run.calibration).\n');.fpr
10c0 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,'........................
10e0 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 73 20 74 68 65 .Automatically.(re)generates.the
1100 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 20 74 6f 20 .graphical.output.associated.to.
1120 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 31 2c 27 37 that.solution.\n');.fprintf(1,'7
1140 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 73 20 74 68 65 -.sol..without.center:..Lets.the
1160 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 6f 6e 20 73 6f .users.select.the.calibration.so
1180 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 6e 63 69 70 61 lution.without.computed.principa
11a0 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 20 20 20 20 20 l.point.\n');.fprintf(1,'.......
11c0 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 61 73 65 2c 20 ..................In.that.case,.
11e0 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 6d 65 64 20 61 the.principal.point.is.assumed.a
1200 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 0a t.the.center.of.the.image.\n');.
1220 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,'.....................
1240 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 20 74 68 65 20 ....Automatically.generates.the.
1260 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 20 74 6f 20 74 graphical.output.associated.to.t
1280 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 31 2c 27 20 20 hat.solution.\n');.fprintf(1,'..
12a0 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 6f 70 74 69 .......................This.opti
12c0 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 20 74 68 65 20 on.is.sometimes.useful.when.the.
12e0 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 74 20 74 6f 5c principal.point.is.difficult.to\
1300 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,'................
1320 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 63 75 6c 61 72 .........estimate.(in.particular
1340 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 69 65 77 20 69 .when.the.camera.field.of.view.i
1360 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 2d 20 45 78 69 s.small).\n');.fprintf(1,'8-.Exi
1380 74 3a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 45 78 69 74 73 20 74 68 65 20 63 61 6c t:.................Exits.the.cal
13a0 69 62 72 61 74 69 6f 6e 20 74 6f 6f 6c 2e 5c 6e 5c 6e 5c 6e 27 29 3b 0a 0a 0a 66 70 72 69 6e 74 ibration.tool.\n\n\n');...fprint
13c0 66 28 31 2c 27 57 41 52 4e 49 4e 47 3a 20 44 6f 20 6e 6f 74 20 66 6f 72 67 65 74 20 74 6f 20 63 f(1,'WARNING:.Do.not.forget.to.c
13e0 68 61 6e 67 65 20 64 58 5f 64 65 66 61 75 6c 74 20 61 6e 64 20 64 58 5f 64 65 66 61 75 6c 74 20 hange.dX_default.and.dX_default.
1400 69 6e 20 63 6c 69 63 6b 5f 63 61 6c 69 62 2e 6d 20 28 45 78 74 72 61 63 74 20 67 72 69 64 20 63 in.click_calib.m.(Extract.grid.c
1420 6f 72 6e 65 72 73 29 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 orners).\n');.fprintf(1,'.......
1440 20 20 54 68 65 73 65 20 61 72 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 68 6f 72 2e 20 61 6e 64 ..These.are.the.default.hor..and
1460 20 76 65 72 74 2e 20 73 69 7a 65 73 20 6f 66 20 65 61 63 68 20 73 71 75 61 72 65 20 6f 66 20 74 .vert..sizes.of.each.square.of.t
1480 68 65 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 70 61 74 74 65 72 6e 2e 5c 6e 27 29 3b 0a 66 70 72 he.calibration.pattern.\n');.fpr
14a0 69 6e 74 66 28 31 2c 27 4e 4f 54 45 3a 20 20 20 20 77 69 6e 74 78 20 61 6e 64 20 77 69 6e 74 79 intf(1,'NOTE:....wintx.and.winty
14c0 20 61 72 65 20 74 77 6f 20 70 61 72 61 6d 65 74 65 72 73 20 64 65 66 69 6e 69 6e 67 20 74 68 65 .are.two.parameters.defining.the
14e0 20 73 69 7a 65 20 6f 66 20 74 68 65 20 69 6d 61 67 65 20 6e 65 69 67 68 62 6f 72 68 6f 6f 64 20 .size.of.the.image.neighborhood.
1500 66 6f 72 20 73 75 62 70 69 78 65 6c 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 for.subpixel.\n');.fprintf(1,'..
1520 20 20 20 20 20 20 20 63 6f 72 6e 65 72 20 64 65 74 65 63 74 69 6f 6e 2e 20 54 68 65 20 65 66 66 .......corner.detection..The.eff
1540 65 63 74 69 76 65 20 77 69 6e 64 6f 77 20 73 69 7a 65 20 69 73 20 28 32 2a 77 69 6e 74 78 2b 31 ective.window.size.is.(2*wintx+1
1560 29 78 28 32 2a 77 69 6e 74 79 2b 31 29 20 70 69 78 65 6c 73 2e 5c 6e 27 29 3b 0a 0a 0a 67 6c 6f )x(2*winty+1).pixels.\n');...glo
1580 62 61 6c 20 58 5f 31 20 78 5f 31 20 58 5f 32 20 78 5f 32 20 58 5f 33 20 78 5f 33 20 58 5f 34 20 bal.X_1.x_1.X_2.x_2.X_3.x_3.X_4.
15a0 78 5f 34 20 58 5f 35 20 78 5f 35 20 58 5f 36 20 78 5f 36 20 58 5f 37 20 78 5f 37 20 58 5f 38 20 x_4.X_5.x_5.X_6.x_6.X_7.x_7.X_8.
15c0 78 5f 38 20 58 5f 39 20 78 5f 39 20 58 5f 31 30 20 78 5f 31 30 20 58 5f 31 31 20 78 5f 31 31 20 x_8.X_9.x_9.X_10.x_10.X_11.x_11.
15e0 58 5f 31 32 20 78 5f 31 32 20 58 5f 31 33 20 78 5f 31 33 20 58 5f 31 34 20 78 5f 31 34 20 58 5f X_12.x_12.X_13.x_13.X_14.x_14.X_
1600 31 35 20 78 5f 31 35 20 58 5f 31 36 20 78 5f 31 36 20 58 5f 31 37 20 78 5f 31 37 20 58 5f 31 38 15.x_15.X_16.x_16.X_17.x_17.X_18
1620 20 78 5f 31 38 20 58 5f 31 39 20 78 5f 31 39 20 58 5f 32 30 20 78 5f 32 30 20 58 5f 32 31 20 78 .x_18.X_19.x_19.X_20.x_20.X_21.x
1640 5f 32 31 20 58 5f 32 32 20 78 5f 32 32 20 58 5f 32 33 20 78 5f 32 33 20 58 5f 32 34 20 78 5f 32 _21.X_22.x_22.X_23.x_23.X_24.x_2
1660 34 20 58 5f 32 35 20 78 5f 32 35 20 58 5f 32 36 20 78 5f 32 36 20 58 5f 32 37 20 78 5f 32 37 20 4.X_25.x_25.X_26.x_26.X_27.x_27.
1680 58 5f 32 38 20 78 5f 32 38 20 58 5f 32 39 20 78 5f 32 39 20 58 5f 33 30 20 78 5f 33 30 20 0a 0a X_28.x_28.X_29.x_29.X_30.x_30...
16a0 66 69 67 75 72 65 28 31 29 3b 20 63 6c 66 3b 0a 0a 70 6f 73 20 3d 20 67 65 74 28 31 2c 27 50 6f figure(1);.clf;..pos.=.get(1,'Po
16c0 73 69 74 69 6f 6e 27 29 3b 0a 0a 73 65 74 28 31 2c 27 55 6e 69 74 73 27 2c 27 70 6f 69 6e 74 73 sition');..set(1,'Units','points
16e0 27 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 ',......'BackingStore','off',...
1700 2e 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 ...'Color',[0.8.0.8.0.8],......'
1720 4d 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 MenuBar','none',......'Resize','
1740 6f 66 66 27 2c 20 2e 2e 2e 0a 09 27 4e 61 6d 65 27 2c 27 43 61 6d 65 72 61 20 63 61 6c 69 62 72 off',......'Name','Camera.calibr
1760 61 74 69 6f 6e 20 74 6f 6f 6c 27 2c 20 2e 2e 2e 0a 27 50 6f 73 69 74 69 6f 6e 27 2c 5b 70 6f 73 ation.tool',.....'Position',[pos
1780 28 31 29 20 70 6f 73 28 32 29 20 33 31 32 20 20 35 39 5d 2c 20 2e 2e 2e 0a 27 4e 75 6d 62 65 72 (1).pos(2).312..59],.....'Number
17a0 54 69 74 6c 65 27 2c 27 6f 66 66 27 29 3b 0a 0a 75 69 63 6f 6e 74 72 6f 6c 28 27 50 61 72 65 6e Title','off');..uicontrol('Paren
17c0 74 27 2c 31 2c 20 2e 2e 2e 0a 09 27 55 6e 69 74 73 27 2c 27 70 6f 69 6e 74 73 27 2c 20 2e 2e 2e t',1,......'Units','points',....
17e0 0a 09 27 43 61 6c 6c 62 61 63 6b 27 2c 27 64 61 74 61 5f 63 61 6c 69 62 3b 27 2c 20 2e 2e 2e 0a ..'Callback','data_calib;',.....
1800 09 27 4c 69 73 74 62 6f 78 54 6f 70 27 2c 30 2c 20 2e 2e 2e 0a 09 27 50 6f 73 69 74 69 6f 6e 27 .'ListboxTop',0,......'Position'
1820 2c 5b 32 2e 32 35 20 33 30 2e 35 20 20 37 35 20 20 20 32 37 5d 2c 20 2e 2e 2e 0a 09 27 53 74 72 ,[2.25.30.5..75...27],......'Str
1840 69 6e 67 27 2c 27 49 6d 61 67 65 20 6e 61 6d 65 73 27 2c 20 2e 2e 2e 0a 20 20 20 27 54 61 67 27 ing','Image.names',........'Tag'
1860 2c 27 50 75 73 68 62 75 74 74 6f 6e 31 27 29 3b 0a 0a 75 69 63 6f 6e 74 72 6f 6c 28 27 50 61 72 ,'Pushbutton1');..uicontrol('Par
1880 65 6e 74 27 2c 31 2c 20 2e 2e 2e 0a 09 27 55 6e 69 74 73 27 2c 27 70 6f 69 6e 74 73 27 2c 20 2e ent',1,......'Units','points',..
18a0 2e 2e 0a 09 27 43 61 6c 6c 62 61 63 6b 27 2c 27 69 6d 61 5f 72 65 61 64 5f 63 61 6c 69 62 3b 27 ....'Callback','ima_read_calib;'
18c0 2c 20 2e 2e 2e 0a 09 27 4c 69 73 74 62 6f 78 54 6f 70 27 2c 30 2c 20 2e 2e 2e 0a 09 27 50 6f 73 ,......'ListboxTop',0,......'Pos
18e0 69 74 69 6f 6e 27 2c 5b 37 39 2e 35 20 33 30 2e 35 20 37 35 20 32 37 5d 2c 20 2e 2e 2e 0a 09 27 ition',[79.5.30.5.75.27],......'
1900 53 74 72 69 6e 67 27 2c 27 52 65 61 64 20 69 6d 61 67 65 73 27 2c 20 2e 2e 2e 0a 20 20 20 27 54 String','Read.images',........'T
1920 61 67 27 2c 27 50 75 73 68 62 75 74 74 6f 6e 31 27 29 3b 0a 0a 75 69 63 6f 6e 74 72 6f 6c 28 27 ag','Pushbutton1');..uicontrol('
1940 50 61 72 65 6e 74 27 2c 31 2c 20 2e 2e 2e 0a 09 27 55 6e 69 74 73 27 2c 27 70 6f 69 6e 74 73 27 Parent',1,......'Units','points'
1960 2c 20 2e 2e 2e 0a 09 27 43 61 6c 6c 62 61 63 6b 27 2c 27 63 6c 69 63 6b 5f 63 61 6c 69 62 3b 27 ,......'Callback','click_calib;'
1980 2c 20 2e 2e 2e 0a 09 27 4c 69 73 74 62 6f 78 54 6f 70 27 2c 30 2c 20 2e 2e 2e 0a 09 27 50 6f 73 ,......'ListboxTop',0,......'Pos
19a0 69 74 69 6f 6e 27 2c 5b 31 35 36 2e 37 35 20 33 30 2e 35 20 37 35 20 32 37 5d 2c 20 2e 2e 2e 0a ition',[156.75.30.5.75.27],.....
19c0 09 27 53 74 72 69 6e 67 27 2c 27 45 78 74 72 61 63 74 20 67 72 69 64 20 63 6f 72 6e 65 72 73 27 .'String','Extract.grid.corners'
19e0 2c 20 2e 2e 2e 0a 20 20 20 27 54 61 67 27 2c 27 50 75 73 68 62 75 74 74 6f 6e 31 27 29 3b 0a 0a ,........'Tag','Pushbutton1');..
1a00 75 69 63 6f 6e 74 72 6f 6c 28 27 50 61 72 65 6e 74 27 2c 31 2c 20 2e 2e 2e 0a 09 27 55 6e 69 74 uicontrol('Parent',1,......'Unit
1a20 73 27 2c 27 70 6f 69 6e 74 73 27 2c 20 2e 2e 2e 0a 09 27 43 61 6c 6c 62 61 63 6b 27 2c 27 67 6f s','points',......'Callback','go
1a40 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 3b 27 2c 20 2e 2e 2e 0a 09 27 4c 69 73 74 62 6f 78 54 6f 70 _calib_optim;',......'ListboxTop
1a60 27 2c 30 2c 20 2e 2e 2e 0a 09 27 50 6f 73 69 74 69 6f 6e 27 2c 5b 32 33 34 20 33 30 2e 35 20 37 ',0,......'Position',[234.30.5.7
1a80 35 20 32 37 5d 2c 20 2e 2e 2e 0a 09 27 53 74 72 69 6e 67 27 2c 27 52 75 6e 20 63 61 6c 69 62 72 5.27],......'String','Run.calibr
1aa0 61 74 69 6f 6e 27 2c 20 2e 2e 2e 0a 20 20 20 27 54 61 67 27 2c 27 50 75 73 68 62 75 74 74 6f 6e ation',........'Tag','Pushbutton
1ac0 31 27 29 3b 0a 0a 75 69 63 6f 6e 74 72 6f 6c 28 27 50 61 72 65 6e 74 27 2c 31 2c 20 2e 2e 2e 0a 1');..uicontrol('Parent',1,.....
1ae0 09 27 55 6e 69 74 73 27 2c 27 70 6f 69 6e 74 73 27 2c 20 2e 2e 2e 0a 09 27 43 61 6c 6c 62 61 63 .'Units','points',......'Callbac
1b00 6b 27 2c 27 67 72 61 70 68 6f 75 74 5f 63 61 6c 69 62 3b 27 2c 20 2e 2e 2e 0a 09 27 4c 69 73 74 k','graphout_calib;',......'List
1b20 62 6f 78 54 6f 70 27 2c 30 2c 20 2e 2e 2e 0a 09 27 50 6f 73 69 74 69 6f 6e 27 2c 5b 32 2e 32 35 boxTop',0,......'Position',[2.25
1b40 20 31 2e 35 20 37 35 20 32 37 5d 2c 20 2e 2e 2e 0a 09 27 53 74 72 69 6e 67 27 2c 27 47 72 61 70 .1.5.75.27],......'String','Grap
1b60 68 69 63 20 6f 75 74 27 2c 20 2e 2e 2e 0a 20 20 20 27 54 61 67 27 2c 27 50 75 73 68 62 75 74 74 hic.out',........'Tag','Pushbutt
1b80 6f 6e 31 27 29 3b 0a 0a 75 69 63 6f 6e 74 72 6f 6c 28 27 50 61 72 65 6e 74 27 2c 31 2c 20 2e 2e on1');..uicontrol('Parent',1,...
1ba0 2e 0a 09 27 55 6e 69 74 73 27 2c 27 70 6f 69 6e 74 73 27 2c 20 2e 2e 2e 0a 09 27 43 61 6c 6c 62 ...'Units','points',......'Callb
1bc0 61 63 6b 27 2c 27 73 65 6c 65 63 74 5f 73 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 65 72 3b 27 2c 20 ack','select_sol_with_center;',.
1be0 2e 2e 2e 0a 09 27 4c 69 73 74 62 6f 78 54 6f 70 27 2c 30 2c 20 2e 2e 2e 0a 09 27 50 6f 73 69 74 .....'ListboxTop',0,......'Posit
1c00 69 6f 6e 27 2c 5b 37 39 2e 35 20 31 2e 35 20 37 35 20 32 37 5d 2c 20 2e 2e 2e 0a 09 27 53 74 72 ion',[79.5.1.5.75.27],......'Str
1c20 69 6e 67 27 2c 27 73 6f 6c 2e 20 77 69 74 68 20 63 65 6e 74 65 72 27 2c 20 2e 2e 2e 0a 20 20 20 ing','sol..with.center',........
1c40 27 54 61 67 27 2c 27 50 75 73 68 62 75 74 74 6f 6e 31 27 29 3b 0a 0a 75 69 63 6f 6e 74 72 6f 6c 'Tag','Pushbutton1');..uicontrol
1c60 28 27 50 61 72 65 6e 74 27 2c 31 2c 20 2e 2e 2e 0a 09 27 55 6e 69 74 73 27 2c 27 70 6f 69 6e 74 ('Parent',1,......'Units','point
1c80 73 27 2c 20 2e 2e 2e 0a 09 27 43 61 6c 6c 62 61 63 6b 27 2c 27 73 65 6c 65 63 74 5f 73 6f 6c 5f s',......'Callback','select_sol_
1ca0 6e 6f 5f 63 65 6e 74 65 72 3b 27 2c 20 2e 2e 2e 0a 09 27 4c 69 73 74 62 6f 78 54 6f 70 27 2c 30 no_center;',......'ListboxTop',0
1cc0 2c 20 2e 2e 2e 0a 09 27 50 6f 73 69 74 69 6f 6e 27 2c 5b 31 35 36 2e 37 35 20 31 2e 35 20 37 35 ,......'Position',[156.75.1.5.75
1ce0 20 32 37 5d 2c 20 2e 2e 2e 0a 09 27 53 74 72 69 6e 67 27 2c 27 73 6f 6c 2e 20 77 69 74 68 6f 75 .27],......'String','sol..withou
1d00 74 20 63 65 6e 74 65 72 27 2c 20 2e 2e 2e 0a 20 20 20 27 54 61 67 27 2c 27 50 75 73 68 62 75 74 t.center',........'Tag','Pushbut
1d20 74 6f 6e 31 27 29 3b 0a 0a 75 69 63 6f 6e 74 72 6f 6c 28 27 50 61 72 65 6e 74 27 2c 31 2c 20 2e ton1');..uicontrol('Parent',1,..
1d40 2e 2e 0a 09 27 55 6e 69 74 73 27 2c 27 70 6f 69 6e 74 73 27 2c 20 2e 2e 2e 0a 09 27 43 61 6c 6c ....'Units','points',......'Call
1d60 62 61 63 6b 27 2c 27 63 6c 6f 73 65 28 31 29 3b 27 2c 20 2e 2e 2e 0a 09 27 4c 69 73 74 62 6f 78 back','close(1);',......'Listbox
1d80 54 6f 70 27 2c 30 2c 20 2e 2e 2e 0a 09 27 50 6f 73 69 74 69 6f 6e 27 2c 5b 32 33 34 20 31 2e 35 Top',0,......'Position',[234.1.5
1da0 20 37 35 20 32 37 5d 2c 20 2e 2e 2e 0a 09 27 53 74 72 69 6e 67 27 2c 27 45 78 69 74 27 2c 20 2e .75.27],......'String','Exit',..
1dc0 2e 2e 0a 20 20 20 27 54 61 67 27 2c 27 50 75 73 68 62 75 74 74 6f 6e 31 27 29 3b 00 00 00 00 00 ......'Tag','Pushbutton1');.....
1de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e00 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.....
1e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e60 00 00 00 00 20 20 20 36 34 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
1e80 20 20 20 33 31 30 30 20 20 36 37 36 33 30 37 30 32 31 35 20 20 31 31 30 30 37 00 20 00 00 00 00 ...3100..6763070215..11007......
1ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2000 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
2020 61 6c 69 62 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 alib;.end;..%wintx.=.10;.%.neigb
2040 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
2060 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
2080 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.
20a0 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
20c0 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.
20e0 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
2100 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
2120 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
2140 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
2160 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
2180 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.
21a0 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
21c0 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*
21e0 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
2200 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
2220 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!!
2240 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
2260 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
2280 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
22a0 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;..%
22c0 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
22e0 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.
2300 39 38 36 35 3b 0a 0a 25 20 53 65 74 75 70 20 6f 66 20 47 65 72 6d 61 6e 0a 64 58 5f 64 65 66 61 9865;..%.Setup.of.German.dX_defa
2320 75 6c 74 20 3d 20 31 30 2e 31 36 3b 0a 64 59 5f 64 65 66 61 75 6c 74 20 3d 20 31 30 2e 31 36 3b ult.=.10.16;.dY_default.=.10.16;
2340 0a 0a 25 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 ..%.Setup.of.JY.(new.at.Intel).d
2360 58 5f 64 65 66 61 75 6c 74 20 3d 20 31 2e 39 37 35 30 2a 32 2e 35 34 3b 0a 64 59 5f 64 65 66 61 X_default.=.1.9750*2.54;.dY_defa
2380 75 6c 74 20 3d 20 31 2e 39 38 36 35 2a 32 2e 35 34 3b 0a 0a 25 20 53 65 74 75 70 20 6f 66 20 4c ult.=.1.9865*2.54;..%.Setup.of.L
23a0 75 69 73 20 61 6e 64 20 45 6e 72 69 63 6f 0a 64 58 5f 64 65 66 61 75 6c 74 20 3d 20 36 37 2e 37 uis.and.Enrico.dX_default.=.67.7
23c0 2f 31 36 3b 0a 64 59 5f 64 65 66 61 75 6c 74 20 3d 20 35 30 2e 36 35 2f 31 32 3b 0a 0a 0a 0a 0a /16;.dY_default.=.50.65/12;.....
23e0 0a 25 20 55 73 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 .%.Useful.option.to.add.images:.
2400 6b 6b 5f 66 69 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 kk_first.=.input('Start.image.nu
2420 6d 62 65 72 20 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 mber.([]=1=first):.');..if.isemp
2440 74 79 28 6b 6b 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 ty(kk_first),.kk_first.=.1;.end;
2460 0a 0a 66 6f 72 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 ..for.kk.=.kk_first:n_ima,....cl
2480 69 63 6b 5f 69 6d 61 5f 63 61 6c 69 62 3b 20 25 53 69 6d 70 6c 65 20 76 65 72 73 69 6f 6e 0a 20 ick_ima_calib;.%Simple.version..
24a0 20 20 25 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 ..%init_calib;.%advanced.vesion.
24c0 28 6d 6f 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 (more.messy).end;....string_save
24e0 20 3d 20 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 .=.'save.calib_data.wintx.winty.
2500 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 66 69 72 n_ima.type_numbering.N_slots.fir
2520 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 6d 61 67 st_num.image_numbers.format_imag
2540 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 6d 61 70 e.calib_name.Hcal.Wcal.nx.ny.map
2560 20 64 58 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 .dX_default.dY_default.dX.dY';..
2580 66 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 for.kk.=.1:n_ima,....string_save
25a0 20 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 .=.[string_save.'.X_'.num2str(kk
25c0 29 20 27 20 78 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 ).'.x_'.num2str(kk).'.H_'.num2st
25e0 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 6e r(kk).'.n_sq_x_'.num2str(kk).'.n
2600 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 6c _sq_y_'.num2str(kk)];.end;..eval
2620 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 6d 3b 0a (string_save);..go_calib_optim;.
2640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
26a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
26c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
26e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2800 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.
2820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2860 00 00 00 00 20 20 20 36 34 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
2880 20 20 31 34 35 33 34 20 20 36 37 36 33 30 37 30 32 31 36 20 20 31 31 36 37 33 00 20 00 00 00 00 ..14534..6763070216..11673......
28a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
29a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
29c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
29e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a00 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
2a20 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
2a40 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
2a60 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 74 69 74 6c );....colormap(map);........titl
2a80 65 28 5b 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 63 6f e(['Click.on.the.four.extreme.co
2aa0 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 70 61 74 74 65 72 6e rners.of.the.rectangular.pattern
2ac0 2e 2e 2e 20 49 6d 61 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 ....Image.'.num2str(kk)]);......
2ae0 20 20 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 ..disp('Click.on.the.four.extrem
2b00 65 20 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 e.corners.of.the.rectangular.com
2b20 70 6c 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 plete.pattern...');........[x,y]
2b40 20 3d 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 .=.ginput3(4);........[Xc,good,b
2b60 61 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 ad,type].=.cornerfinder([x';y'],
2b80 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 72 20 63 6f 72 6e 65 I,winty,wintx);.%.the.four.corne
2ba0 72 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 rs........x.=.Xc(1,:)';....y.=.X
2bc0 63 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 c(2,:)';........[y,indy].=.sort(
2be0 79 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 69 66 20 28 78 y);....x.=.x(indy);........if.(x
2c00 28 32 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 (2).>.x(1)),.......x4.=.x(1);y4.
2c20 3d 20 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 =.y(1);.x3.=.x(2);.y3.=.y(2);...
2c40 20 65 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 .else.......x4.=.x(2);y4.=.y(2);
2c60 20 78 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 .x3.=.x(1);.y3.=.y(1);....end;..
2c80 20 20 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 ..if.(x(3).>.x(4)),.......x2.=.x
2ca0 28 33 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 (3);y2.=.y(3);.x1.=.x(4);.y1.=.y
2cc0 28 34 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 (4);....else.......x2.=.x(4);y2.
2ce0 3d 20 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 =.y(4);.x1.=.x(3);.y1.=.y(3);...
2d00 20 65 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 .end;........x.=.[x1;x2;x3;x4];.
2d20 20 20 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 ...y.=.[y1;y2;y3;y4];...........
2d40 20 66 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 .figure(2);.hold.on;....plot([x;
2d60 78 28 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 x(1)],[y;y(1)],'g-');....plot(x,
2d80 79 2c 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 y,'og');....hx=text((x(4)+x(3))/
2da0 32 2c 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 2,(y(4)+y(3))/2.-.20,'X');....se
2dc0 74 28 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 t(hx,'color','g','Fontsize',14);
2de0 0a 20 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 ....hy=text((x(4)+x(1))/2-20,(y(
2e00 34 29 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 4)+y(1))/2,'Y');....set(hy,'colo
2e20 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 6f 6c 64 20 6f r','g','Fontsize',14);....hold.o
2e40 66 66 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 ff;............%.Try.to.automati
2e60 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
2e80 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
2ea0 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
2ec0 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,
2ee0 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.=
2f00 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
2f20 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(
2f40 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);...........
2f60 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
2f80 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..
2fa0 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
2fc0 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('
2fe0 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
3000 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
3020 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
3040 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.
3060 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_
3080 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_
30a0 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
30c0 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).=.');
30e0 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
3100 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........
3120 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;
3140 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;........
3160 20 20 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 ...end;............%.Enter.the.s
3180 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 64 58 20 3d 20 69 ize.of.each.square........dX.=.i
31a0 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 65 20 61 6c nput(['Size.dX.of.each.square.al
31c0 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 6d 32 73 74 ong.the.X.direction.([]='.num2st
31e0 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 09 64 59 20 r(dX_default).'cm).=.']);....dY.
3200 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 71 75 61 72 65 =.input(['Size.dY.of.each.square
3220 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 27 20 6e 75 6d .along.the.Y.direction.([]='.num
3240 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 3b 0a 09 69 66 2str(dY_default).'cm).=.']);..if
3260 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 75 6c 74 3b 20 65 .isempty(dX),.dX.=.dX_default;.e
3280 6e 64 3b 0a 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 nd;..if.isempty(dY),.dY.=.dY_def
32a0 61 75 6c 74 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 ault;.end;..............%.Comput
32c0 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
32e0 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
3300 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)
3320 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];.
3340 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(
3360 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
3380 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
33a0 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 0a 09 ormalization.matrice.as.well)...
33c0 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 6d 70 75 74 65 [Homo,Hnorm,inv_Hnorm].=.compute
33e0 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 31 31 2c 20 61 30 _collineation.(a00,.a10,.a11,.a0
3400 31 29 3b 0a 0a 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 74 68 1);....%.Build.the.grid.using.th
3420 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 20 28 e.planar.collineation:...x_l.=.(
3440 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 6e 5f (0:n_sq_x)'*ones(1,n_sq_y+1))/n_
3460 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 31 29 sq_x;....y_l.=.(ones(n_sq_x+1,1)
3480 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 5b 78 *(0:n_sq_y))/n_sq_y;....pts.=.[x
34a0 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 6e 5f _l(:).y_l(:).ones((n_sq_x+1)*(n_
34c0 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 2a 70 sq_y+1),1)]';........XX.=.Homo*p
34e0 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 2c 31 ts;..XX.=.XX(1:2,:)../.(ones(2,1
3500 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 20 73 )*XX(3,:));.........%.Complete.s
3520 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 3d 20 ize.of.the.rectangle........W.=.
3540 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 20 20 n_sq_x*dX;....L.=.n_sq_y*dY;....
3560 0a 20 20 20 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 ................%%%%%%%%%%%%%%%%
3580 25 25 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 %%%%%%%%.ADDITIONAL.STUFF.IN.THE
35a0 20 43 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 .CASE.OF.HIGHLY.DISTORTED.IMAGES
35c0 20 25 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 .%%%%%%%%%%%%%....figure(2);....
35e0 68 6f 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 hold.on;....plot(XX(1,:),XX(2,:)
3600 2c 27 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 ,'r+');....title('The.red.crosse
3620 73 20 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 s.should.be.close.to.the.image.c
3640 6f 72 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 orners');....hold.off;........di
3660 73 70 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 sp('If.the.guessed.grid.corners.
3680 28 72 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 (red.crosses.on.the.image).are.n
36a0 6f 74 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 ot.close.to.the.actual.corners,'
36c0 29 3b 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 );....disp('it.is.necessary.to.e
36e0 6e 74 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 nter.an.initial.guess.for.the.ra
3700 64 69 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 dial.distortion.factor.kc.(usefu
3720 6c 20 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 l.for.subpixel.detection)');....
3740 71 75 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 quest_distort.=.input('Need.of.a
3760 6e 20 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 n.initial.guess.for.distortion?.
3780 28 5b 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 ([]=no,.other=yes).');.......que
37a0 73 74 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 st_distort.=.~isempty(quest_dist
37c0 6f 72 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 ort);........if.quest_distort,..
37e0 20 20 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 .....%.Estimation.of.focal.lengt
3800 68 3a 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 h:.......c_g.=.[size(I,2);size(I
3820 2c 31 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 ,1)]/2.+..5;...f_g.=.Distor2Cali
3840 62 28 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 b(0,[[x(1).x(2).x(4).x(3)].-.c_g
3860 28 31 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 (1);[y(1).y(2).y(4).y(3)].-.c_g(
3880 32 29 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 2)],1,1,4,W,L,[-W/2.W/2.W/2.-W/2
38a0 3b 4c 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 ;L/2.L/2.-L/2.-L/2;.0.0.0.0],100
38c0 2c 31 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 ,1,1);.......f_g.=.mean(f_g);...
38e0 20 20 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 ....script_fit_distortion;....en
3900 64 3b 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 d;....%%%%%%%%%%%%%%%%%%%%%.END.
3920 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.
3940 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.%%%%%%%%
3960 25 25 25 25 25 0a 20 20 20 0a 20 20 20 0a 20 20 20 0a 20 20 20 0a 20 20 20 0a 20 20 20 4e 70 20 %%%%%........................Np.
3980 3d 20 28 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 =.(n_sq_x+1)*(n_sq_y+1);.....dis
39a0 70 28 27 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 p('Corner.extraction...');......
39c0 20 20 67 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 ..grid_pts.=.cornerfinder(XX,I,w
39e0 69 6e 74 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 inty,wintx);.%%%.Finds.the.exact
3a00 20 63 6f 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 .corners.at.every.points!.......
3a20 20 25 73 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 .%save.all_corners.x.y.grid_pts.
3a40 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 2d 20 31 3b 20 .......grid_pts.=.grid_pts.-.1;.
3a60 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 72 69 67 69 6e %.subtract.1.to.bring.the.origin
3a80 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 69 6e 20 6d 61 .to.(0,0).instead.of.(1,1).in.ma
3aa0 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 20 20 0a 20 20 tlab.(not.necessary.in.C).......
3ac0 20 0a 20 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 .....%.Global.Homography.from.pl
3ae0 61 6e 65 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 ane.to.pixel.coordinates:.......
3b00 20 48 5f 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 .H_total.=.[1.0.-1.;.0.1.-1.;.0.
3b20 30 20 31 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 0.1]*Homo*[1.0.0;0.-1.1;0.0.1]*[
3b40 31 2f 57 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 1/W.0.0.;.0.1/L.0;.0.0.1];....%.
3b60 57 41 52 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 WARNING!!!.the.first.matrix.(on.
3b80 74 68 65 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 the.left.side).takes.care.of.the
3ba0 20 74 72 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 .transformation.of.the.pixel.coo
3bc0 72 65 64 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 redinates.by.-1.(previous.line).
3be0 20 20 20 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 ...%.If.it.is.not.done,.then.thi
3c00 73 20 6d 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 s.matrix.should.not.appear.(in.C
3c20 29 0a 20 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 )....H_total.=.H_total./.H_total
3c40 28 33 2c 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 (3,3);...............ind_corners
3c60 20 3d 20 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 .=.[1.n_sq_x+1.(n_sq_x+1)*n_sq_y
3c80 2b 31 20 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 +1.(n_sq_x+1)*(n_sq_y+1)];.%.ind
3ca0 65 78 20 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 ex.of.the.4.corners....ind_orig.
3cc0 3d 20 28 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 =.(n_sq_x+1)*n_sq_y.+.1;....xori
3ce0 67 20 3d 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 g.=.grid_pts(1,ind_orig);....yor
3d00 69 67 20 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 ig.=.grid_pts(2,ind_orig);....dx
3d20 70 6f 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 pos.=.mean([grid_pts(:,ind_orig)
3d40 20 67 72 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 .grid_pts(:,ind_orig+1)]');....d
3d60 79 70 6f 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 ypos.=.mean([grid_pts(:,ind_orig
3d80 29 20 67 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 ).grid_pts(:,ind_orig-n_sq_x-1)]
3da0 27 29 3b 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 ');............x_box_kk.=.[grid_
3dc0 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 3a pts(1,:)-(wintx+.5);grid_pts(1,:
3de0 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 6e 74 )+(wintx+.5);grid_pts(1,:)+(wint
3e00 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 3b 67 x+.5);grid_pts(1,:)-(wintx+.5);g
3e20 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 5f 62 rid_pts(1,:)-(wintx+.5)];....y_b
3e40 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 2e 35 ox_kk.=.[grid_pts(2,:)-(winty+.5
3e60 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 64 5f );grid_pts(2,:)-(winty+.5);grid_
3e80 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 2c 3a pts(2,:)+(winty+.5);grid_pts(2,:
3ea0 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 6e 74 )+(winty+.5);grid_pts(2,:)-(wint
3ec0 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 69 6d y+.5)];.........figure(3);....im
3ee0 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 3b 0a age(I);.colormap(map);.hold.on;.
3f00 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 74 73 ...plot(grid_pts(1,:)+1,grid_pts
3f20 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 6b 2b (2,:)+1,'r+');....plot(x_box_kk+
3f40 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 69 64 1,y_box_kk+1,'-b');....plot(grid
3f60 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 28 32 _pts(1,ind_corners)+1,grid_pts(2
3f80 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 28 78 ,ind_corners)+1,'mo');....plot(x
3fa0 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 65 78 orig+1,yorig+1,'*m');....h.=.tex
3fc0 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 65 74 t(xorig-15,yorig-15,'O');....set
3fe0 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 0a 20 (h,'Color','m','FontSize',14);..
4000 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 32 29 ..h2.=.text(dxpos(1)-10,dxpos(2)
4020 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 67 27 -10,'dX');....set(h2,'Color','g'
4040 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 64 79 ,'FontSize',14);....h3.=.text(dy
4060 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 20 73 pos(1)-25,dypos(2)-3,'dY');....s
4080 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 34 29 et(h3,'Color','g','FontSize',14)
40a0 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 6d 65 ;....xlabel('Xc.(in.camera.frame
40c0 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 66 72 )');....ylabel('Yc.(in.camera.fr
40e0 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 72 6e ame)');....title('Extracted.corn
4100 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 0a 20 ers');....zoom.on;....drawnow;..
4120 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 73 68 ..hold.off;............Xi.=.resh
4140 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 73 71 ape(([0:n_sq_x]*dX)'*ones(1,n_sq
4160 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 6f 6e _y+1),Np,1)';....Yi.=.reshape(on
4180 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 59 2c es(n_sq_x+1,1)*[n_sq_y:-1:0]*dY,
41a0 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 20 20 Np,1)';....Zi.=.zeros(1,Np);....
41c0 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 20 0a ....Xgrid.=.[Xi;Yi;Zi];.........
41e0 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 6f 6e .%.All.the.point.coordinates.(on
4200 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 6c 6f .the.image,.and.in.3D).-.for.glo
4220 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 5f 70 bal.optimization:.....x.=.grid_p
4240 74 73 3b 0a 20 20 20 58 20 3d 20 58 67 72 69 64 3b 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 ts;....X.=.Xgrid;........eval(['
4260 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 20 20 20 65 76 x_'.num2str(kk).'.=.x;']);....ev
4280 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 27 5d 29 3b 0a al(['X_'.num2str(kk).'.=.X;']);.
42a0 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 73 74 72 28 6b .......eval(['n_sq_x_'.num2str(k
42c0 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 5b 27 6e 5f 73 k).'.=.n_sq_x;']);....eval(['n_s
42e0 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 79 3b 27 5d 29 q_y_'.num2str(kk).'.=.n_sq_y;'])
4300 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 20 70 6c 61 6e 61 ;........%.Save.the.global.plana
4320 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 5b 27 48 5f 27 20 r.homography:........eval(['H_'.
4340 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 48 5f 74 6f 74 61 6c 3b 27 5d 29 3b 28 5b 78 3b num2str(kk).'.=.H_total;']);([x;
4360 78 28 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 x(1)],[y;y(1)],'g-');....plot(x,
4380 79 2c 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 y,'og');....hx=text((x(4)+x(3))/
43a0 32 2c 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 2,(y(4)+y(3))/2.-.20,'X');....se
43c0 74 28 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 t(hx,'color','g','Fontsize',14);
43e0 0a 20 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 ....hy=text((x(4)+x(1))/2-20,(y(
4400 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
4420 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............................
4440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4460 00 00 00 00 20 20 20 36 34 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
4480 20 20 20 32 32 37 36 20 20 36 37 36 33 30 37 30 32 31 36 20 20 31 33 30 32 32 00 20 00 00 00 00 ...2276..6763070216..13022......
44a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
44c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
44e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
45a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
45c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
45e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4600 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
4620 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
4640 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
4660 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
4680 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
46a0 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);..
46c0 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
46e0 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
4700 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
4720 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
4740 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
4760 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
4780 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
47a0 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
47c0 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
47e0 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]
4800 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
4820 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
4840 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
4860 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
4880 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
48a0 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)
48c0 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(
48e0 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
4900 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
4920 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
4940 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
4960 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)
4980 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
49a0 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
49c0 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))/(
49e0 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));.
4a00 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
4a20 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
4a40 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
4a60 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
4a80 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
4aa0 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 00 00 graphy:..H.=.inv_Hnorm*Hrem;....
4ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4c00 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.
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 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
4c80 20 20 20 32 30 35 32 20 20 36 37 36 33 30 37 30 32 32 30 20 20 31 32 30 30 35 00 20 00 00 00 00 ...2052..6763070220..12005......
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 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
4e20 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
4e40 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);
4e60 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
4e80 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
4ea0 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..%.
4ec0 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
4ee0 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
4f00 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
4f20 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
4f40 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
4f60 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.%........%......
4f80 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.%.%
4fa0 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.
4fc0 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
4fe0 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
5000 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
5020 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
5040 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
5060 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)..
5080 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
50a0 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
50c0 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.
50e0 32 78 4e 27 29 3b 0a 65 6e 64 3b 0a 0a 72 61 64 69 75 73 5f 32 3d 20 78 5f 64 69 73 74 28 31 2c 2xN');.end;..radius_2=.x_dist(1,
5100 3a 29 2e 5e 32 20 2b 20 78 5f 64 69 73 74 28 32 2c 3a 29 2e 5e 32 3b 0a 72 61 64 69 61 6c 5f 64 :).^2.+.x_dist(2,:).^2;.radial_d
5120 69 73 74 6f 72 74 69 6f 6e 20 3d 20 31 20 2b 20 6f 6e 65 73 28 32 2c 31 29 2a 28 6b 32 20 2a 20 istortion.=.1.+.ones(2,1)*(k2.*.
5140 72 61 64 69 75 73 5f 32 29 3b 0a 72 61 64 69 75 73 5f 32 5f 63 6f 6d 70 20 3d 20 28 78 5f 64 69 radius_2);.radius_2_comp.=.(x_di
5160 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 5e 32 29 20 2e 2f 20 st(1,:).^2.+.x_dist(2,:).^2)../.
5180 72 61 64 69 61 6c 5f 64 69 73 74 6f 72 74 69 6f 6e 28 31 2c 3a 29 3b 0a 72 61 64 69 61 6c 5f 64 radial_distortion(1,:);.radial_d
51a0 69 73 74 6f 72 74 69 6f 6e 20 3d 20 31 20 2b 20 6f 6e 65 73 28 32 2c 31 29 2a 28 6b 32 20 2a 20 istortion.=.1.+.ones(2,1)*(k2.*.
51c0 72 61 64 69 75 73 5f 32 5f 63 6f 6d 70 29 3b 0a 78 5f 63 6f 6d 70 20 3d 20 78 5f 64 69 73 74 20 radius_2_comp);.x_comp.=.x_dist.
51e0 2e 2f 20 72 61 64 69 61 6c 5f 64 69 73 74 6f 72 74 69 6f 6e 3b 0a 0a 0a 25 25 20 46 75 6e 63 74 ./.radial_distortion;...%%.Funct
5200 69 6f 6e 20 63 6f 6d 70 6c 65 74 65 6c 79 20 63 68 65 63 6b 65 64 20 3a 20 49 74 20 77 6f 72 6b ion.completely.checked.:.It.work
5220 73 20 66 69 6e 65 20 21 21 21 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 s.fine.!!!......................
5240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
52a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
52c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
52e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
53a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
53c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
53e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5400 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
5420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5460 00 00 00 00 20 20 20 36 34 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
5480 20 20 20 32 37 31 34 20 20 36 37 36 33 30 37 30 32 32 31 20 20 31 32 30 37 35 00 20 00 00 00 00 ...2714..6763070221..12075......
54a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
54c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
54e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
55a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
55c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
55e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5600 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
5620 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
5640 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);
5660 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
5680 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
56a0 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..%.
56c0 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
56e0 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
5700 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
5720 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
5740 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.
5760 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
5780 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.%........
57a0 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
57c0 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
57e0 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.
5800 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
5820 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
5840 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.%............
5860 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.
5880 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
58a0 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..%..
58c0 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
58e0 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
5900 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
5920 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
5940 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
5960 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.~=
5980 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
59a0 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
59c0 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,:
59e0 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);.
5a00 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))
5a20 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.
5a40 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.
5a60 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.
5a80 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
5aa0 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.
5ac0 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
5ae0 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
5b00 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
5b20 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........
5b40 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);.....
5b60 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
5b80 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
5ba0 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_
5bc0 64 69 73 74 3b 0a 0a 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 dist;..end;.....................
5be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5c00 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
5c20 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............................
5c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5c60 00 00 00 00 20 20 20 36 34 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
5c80 20 20 20 31 31 32 30 20 20 36 37 36 33 30 37 30 32 32 31 20 20 31 33 30 34 35 00 20 00 00 00 00 ...1120..6763070221..13045......
5ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5e00 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
5e20 75 6c 75 28 78 64 2c 6b 29 3b 0a 0a 25 20 46 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 63 6f 6d 70 ulu(xd,k);..%.Function.that.comp
5e40 65 6e 73 61 74 65 73 20 66 6f 72 20 72 61 64 69 61 6c 20 61 6e 64 20 74 61 6e 67 65 6e 74 69 61 ensates.for.radial.and.tangentia
5e60 6c 20 64 69 73 74 6f 72 74 69 6f 6e 0a 25 20 4d 6f 64 65 6c 20 66 72 6f 6d 20 4f 75 6c 75 20 75 l.distortion.%.Model.from.Oulu.u
5e80 6e 69 76 65 72 73 69 74 79 0a 0a 0a 69 66 20 6c 65 6e 67 74 68 28 6b 29 20 3c 20 34 2c 0a 20 20 niversity...if.length(k).<.4,...
5ea0 20 0a 20 20 20 5b 78 5d 20 3d 20 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 28 78 64 2c 6b 29 .....[x].=.comp_distortion(xd,k)
5ec0 3b 0a 20 20 20 0a 65 6c 73 65 0a 20 20 20 0a 20 20 20 0a 20 20 20 6b 31 20 3d 20 6b 28 31 29 3b ;.....else............k1.=.k(1);
5ee0 0a 20 20 20 6b 32 20 3d 20 6b 28 32 29 3b 0a 20 20 20 0a 20 20 20 70 31 20 3d 20 6b 28 33 29 3b ....k2.=.k(2);........p1.=.k(3);
5f00 0a 20 20 20 70 32 20 3d 20 6b 28 34 29 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 78 20 3d 20 78 64 ....p2.=.k(4);............x.=.xd
5f20 3b 20 09 09 09 09 25 20 66 69 72 73 74 20 67 75 65 73 73 0a 20 20 20 0a 20 20 20 66 6f 72 20 6b ;.....%.first.guess........for.k
5f40 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 28 78 2e k=1:5;..............r_2.=.sum(x.
5f60 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 20 2a 20 ^2);.......k_radial.=..1.+.k1.*.
5f80 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 61 5f 78 r_2.+.k2.*.r_2.^2;.......delta_x
5fa0 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 28 72 5f .=.[2*p1*x(1,:).*x(2,:).+.p2*(r_
5fc0 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 28 72 5f 2.+.2*x(1,:).^2).;......p1.*.(r_
5fe0 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 2a 78 28 2.+.2*x(2,:).^2)+2*p2*x(1,:).*x(
6000 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 78 29 2e 2,:)];.......x.=.(xd.-.delta_x).
6020 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 0a 20 20 /(ones(2,1)*k_radial);..........
6040 20 65 6e 64 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 61 6c 20 61 6e 64 20 74 61 6e 67 65 6e 74 69 61 .end;.....end;..al.and.tangentia
6060 6c 20 64 69 73 74 6f 72 74 69 6f 6e 0a 25 20 4d 6f 64 65 6c 20 66 72 6f 6d 20 4f 75 6c 75 20 75 l.distortion.%.Model.from.Oulu.u
6080 6e 69 76 65 72 73 69 74 79 0a 0a 0a 69 66 20 6c 65 6e 67 74 68 28 6b 29 20 3c 20 34 2c 0a 20 20 niversity...if.length(k).<.4,...
60a0 20 0a 20 20 20 5b 78 5d 20 3d 20 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 28 78 64 2c 6b 29 .....[x].=.comp_distortion(xd,k)
60c0 3b 0a 20 20 20 0a 65 6c 73 65 0a 20 20 20 0a 20 20 20 0a 20 20 20 6b 31 20 3d 20 6b 28 31 29 3b ;.....else............k1.=.k(1);
60e0 0a 20 20 20 6b 32 20 3d 20 6b 28 32 29 3b 0a 20 20 20 0a 20 20 20 70 31 20 3d 20 6b 28 33 29 3b ....k2.=.k(2);........p1.=.k(3);
6100 0a 20 20 20 70 32 20 3d 20 6b 28 34 29 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 78 20 3d 20 78 64 ....p2.=.k(4);............x.=.xd
6120 3b 20 09 09 09 09 25 20 66 69 72 73 74 20 67 75 65 73 73 0a 20 20 20 0a 20 20 20 66 6f 72 20 6b ;.....%.first.guess........for.k
6140 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 28 78 2e k=1:5;..............r_2.=.sum(x.
6160 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 20 2a 20 ^2);.......k_radial.=..1.+.k1.*.
6180 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 61 5f 78 r_2.+.k2.*.r_2.^2;.......delta_x
61a0 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 28 72 5f .=.[2*p1*x(1,:).*x(2,:).+.p2*(r_
61c0 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 28 72 5f 2.+.2*x(1,:).^2).;......p1.*.(r_
61e0 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 2a 78 28 2.+.2*x(2,:).^2)+2*p2*x(1,:).*x(
6200 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....
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 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
6280 20 20 31 31 33 33 31 20 20 36 37 36 33 30 37 30 32 32 32 20 20 31 31 32 37 33 00 20 00 00 00 00 ..11331..6763070222..11273......
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 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
6420 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,
6440 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
6460 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
6480 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
64a0 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
64c0 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
64e0 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
6500 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
6520 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
6540 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
6560 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
6580 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
65a0 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.
65c0 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
65e0 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
6600 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
6620 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
6640 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
6660 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..%.%
6680 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.
66a0 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
66c0 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
66e0 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
6700 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
6720 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
6740 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
6760 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
6780 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.
67a0 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.
67c0 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
67e0 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
6800 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;..
6820 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,....
6840 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
6860 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);
6880 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
68a0 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
68c0 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).&.(
68e0 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)
6900 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(
6920 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-
6940 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,
6960 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.=.[
6980 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)
69a0 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
69c0 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;.
69e0 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
6a00 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
6a20 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.!!
6a40 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:
6a60 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.+
6a80 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
6aa0 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
6ac0 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(
6ae0 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<
6b00 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(
6b20 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);.
6b40 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.......
6b60 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
6b80 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
6ba0 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.
6bc0 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
6be0 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
6c00 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
6c20 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]';
6c40 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.=
6c60 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;..
6c80 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.
6ca0 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
6cc0 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;......
6ce0 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
6d00 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
6d20 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
6d40 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
6d60 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
6d80 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.=.
6da0 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+
6dc0 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
6de0 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
6e00 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
6e20 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
6e40 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
6e60 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;..
6e80 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
6ea0 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
6ec0 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
6ee0 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
6f00 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
6f20 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
6f40 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.....
6f60 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
6f80 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
6fa0 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
6fc0 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..
6fe0 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
7000 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.......
7020 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
7040 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.
7060 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.=.
7080 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
70a0 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;.................
70c0 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..
70e0 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.
7100 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
7120 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)
7140 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));.....
7160 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;........
7180 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
71a0 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;...............
71c0 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
71e0 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.
7200 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
7220 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
7240 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
7260 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
7280 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
72a0 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.+.
72c0 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(
72e0 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;.
7300 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;...............
7320 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
7340 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]..=.
7360 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
7380 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.
73a0 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])';.%....
73c0 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)
73e0 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
7400 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
7420 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
7440 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
7460 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
7480 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
74a0 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)
74c0 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;.%.
74e0 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
7500 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,:)
7520 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
7540 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;.....
7560 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;...........
7580 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
75a0 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).-
75c0 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
75e0 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(
7600 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
7620 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.
7640 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
7660 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
7680 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,:)
76a0 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
76c0 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 00 00 00 00 00 00 00 ad.=.bad';.good.=.good';........
76e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
77a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
77c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
77e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7800 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...
7820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7860 00 00 00 00 20 20 20 36 34 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
7880 20 20 20 32 32 37 31 20 20 36 37 36 33 30 37 30 32 32 32 20 20 31 31 34 37 31 00 20 00 00 00 00 ...2271..6763070222..11471......
78a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
78c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
78e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
79a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
79c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
79e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7a00 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
7a20 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
7a40 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.-.
7a60 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
7a80 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
7aa0 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.+.
7ac0 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
7ae0 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;.
7b00 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
7b20 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;....
7b40 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
7b60 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
7b80 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...
7ba0 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
7bc0 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;.
7be0 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
7c00 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;.
7c20 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
7c40 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
7c60 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
7c80 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);....
7ca0 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
7cc0 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(
7ce0 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));..
7d00 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.+.
7d20 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
7d40 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
7d60 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(
7d80 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
7da0 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,
7dc0 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
7de0 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,[
7e00 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.
7e20 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.=
7e40 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
7e60 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_
7e80 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)
7ea0 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 00 00 00 00 00 00 >0))))+1;........return;........
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 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......
8020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8060 00 00 00 00 20 20 20 36 34 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
8080 20 20 20 33 30 33 36 20 20 36 37 36 33 30 37 30 32 32 33 20 20 31 30 36 34 32 00 20 00 00 00 00 ...3036..6763070223..10642......
80a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
80c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
80e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
81a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
81c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
81e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8200 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
8220 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
8240 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
8260 72 3b 0a 0a 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 69 r;..disp('Camera.Calibration.usi
8280 6e 67 20 6d 75 6c 74 69 70 6c 65 20 69 6d 61 67 65 73 20 6f 66 20 70 6c 61 6e 61 72 20 70 61 74 ng.multiple.images.of.planar.pat
82a0 74 65 72 6e 27 29 3b 0a 64 69 73 70 28 27 4d 6f 64 65 6c 3a 20 32 20 66 6f 63 61 6c 73 2c 20 32 tern');.disp('Model:.2.focals,.2
82c0 20 72 61 64 69 61 6c 20 64 69 73 74 2e 20 63 6f 65 66 66 2e 2c 20 32 20 74 61 6e 67 65 6e 74 69 .radial.dist..coeff.,.2.tangenti
82e0 61 6c 20 64 69 73 74 2e 20 63 6f 65 66 66 2e 20 61 6e 64 20 70 72 69 6e 63 69 70 6c 65 20 70 6f al.dist..coeff..and.principle.po
8300 69 6e 74 20 28 6f 70 74 29 27 29 3b 0a 64 69 73 70 28 27 57 41 52 4e 49 4e 47 3a 20 54 68 65 20 int.(opt)');.disp('WARNING:.The.
8320 72 65 66 65 72 65 6e 63 65 20 70 6c 61 6e 65 20 69 73 20 61 73 73 75 6d 65 64 20 74 6f 20 62 65 reference.plane.is.assumed.to.be
8340 20 75 73 65 64 20 69 6e 20 74 68 65 20 66 69 72 73 74 20 69 6d 61 67 65 21 27 29 3b 0a 66 70 72 .used.in.the.first.image!');.fpr
8360 69 6e 74 66 28 31 2c 27 5c 6e 27 29 3b 0a 63 61 6c 69 62 5f 6e 61 6d 65 20 3d 20 69 6e 70 75 74 intf(1,'\n');.calib_name.=.input
8380 28 27 42 61 73 65 6e 61 6d 65 20 63 61 6d 65 72 61 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 69 6d ('Basename.camera.calibration.im
83a0 61 67 65 73 20 28 77 69 74 68 6f 75 74 20 6e 75 6d 62 65 72 20 6e 6f 72 20 73 75 66 66 69 78 29 ages.(without.number.nor.suffix)
83c0 3a 20 27 2c 27 73 27 29 3b 0a 0a 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 3d 20 20 69 6e 70 75 74 :.','s');..format_image.=..input
83e0 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 73 27 ('Image.format:.([]=''r''=''ras'
8400 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 27 29 ',.''b''=''bmp'',.''t''=''tif'')
8420 20 27 2c 27 73 27 29 3b 0a 0a 69 66 20 69 73 65 6d 70 74 79 28 66 6f 72 6d 61 74 5f 69 6d 61 67 .','s');..if.isempty(format_imag
8440 65 29 2c 0a 20 20 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 3d 20 27 72 61 73 27 3b 0a 65 6e 64 e),....format_image.=.'ras';.end
8460 3b 0a 0a 69 66 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 28 31 29 20 3d 3d 20 27 62 27 2c 0a 20 20 ;..if.format_image(1).==.'b',...
8480 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 3d 20 27 62 6d 70 27 3b 0a 65 6c 73 65 0a 20 20 20 69 .format_image.=.'bmp';.else....i
84a0 66 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 28 31 29 20 3d 3d 20 27 74 27 2c 0a 20 20 20 20 20 20 f.format_image(1).==.'t',.......
84c0 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 3d 20 27 74 69 66 27 3b 0a 20 20 20 65 6c 73 65 0a 20 20 format_image.=.'tif';....else...
84e0 20 20 20 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 3d 20 27 72 61 73 27 3b 0a 20 20 20 65 6e 64 ....format_image.=.'ras';....end
8500 3b 0a 65 6e 64 3b 0a 0a 0a 6e 5f 69 6d 61 20 3d 20 31 30 30 30 3b 0a 77 68 69 6c 65 20 6e 5f 69 ;.end;...n_ima.=.1000;.while.n_i
8520 6d 61 20 3e 20 33 30 2c 0a 20 20 20 6e 5f 69 6d 61 20 3d 20 69 6e 70 75 74 28 27 4e 75 6d 62 65 ma.>.30,....n_ima.=.input('Numbe
8540 72 20 6f 66 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 69 6d 61 67 65 73 20 28 6d 61 78 3d 33 30 29 r.of.calibration.images.(max=30)
8560 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
8580 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
85a0 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
85c0 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
85e0 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
8600 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('
8620 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
8640 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).')
8660 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
8680 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
86a0 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
86c0 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
86e0 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
8700 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
8720 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;.
8740 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:
8760 6e 5f 69 6d 61 2d 31 2b 66 69 72 73 74 5f 6e 75 6d 3b 0a 0a 0a 25 73 74 72 69 6e 67 5f 73 61 76 n_ima-1+first_num;...%string_sav
8780 65 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 e.=.'save.calib_data.n_ima.type_
87a0 6e 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 numbering.N_slots.image_numbers.
87c0 66 6f 72 6d 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 format_image.calib_name.first_nu
87e0 6d 27 3b 0a 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 m';..%eval(string_save);..%.Read
8800 69 6e 67 20 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 00 00 ing.images:..ima_read_calib;....
8820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8a00 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....
8a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8a60 00 00 00 00 20 20 20 36 34 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
8a80 20 20 32 30 34 32 32 20 20 36 37 36 33 30 37 30 32 32 34 20 20 31 31 30 37 37 00 20 00 00 00 00 ..20422..6763070224..11077......
8aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8c00 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
8c20 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
8c40 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_
8c60 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
8c80 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
8ca0 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
8cc0 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
8ce0 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
8d00 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
8d20 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
8d40 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.%
8d60 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
8d80 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
8da0 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.[]).%.
8dc0 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
8de0 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
8e00 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
8e20 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
8e40 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,.%
8e60 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
8e80 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
8ea0 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
8ec0 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
8ee0 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'),
8f00 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),......
8f20 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
8f40 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_
8f60 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),.
8f80 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
8fa0 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
8fc0 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
8fe0 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')
9000 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
9020 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');......
9040 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
9060 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
9080 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
90a0 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
90c0 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_
90e0 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
9100 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
9120 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
9140 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;.
9160 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
9180 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.
91a0 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
91c0 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
91e0 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.=
9200 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
9220 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
9240 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
9260 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(
9280 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,:);....
92a0 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,.....
92c0 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
92e0 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)]);....
9300 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;..
9320 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
9340 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
9360 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)]);......
9380 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;....
93a0 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
93c0 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
93e0 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
9400 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);.....
9420 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:.......
9440 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
9460 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
9480 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.=.
94a0 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
94c0 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
94e0 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.=
9500 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
9520 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;.
9540 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).
9560 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
9580 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;.....
95a0 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
95c0 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
95e0 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
9600 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
9620 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
9640 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);.
9660 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(
9680 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
96a0 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
96c0 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.=
96e0 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
9700 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.=
9720 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_
9740 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);.
9760 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),
9780 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
97a0 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
97c0 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
97e0 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
9800 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;....
9820 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
9840 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
9860 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_
9880 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
98a0 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
98c0 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
98e0 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
9900 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
9920 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;......
9940 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
9960 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
9980 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....
99a0 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.=
99c0 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
99e0 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);..
9a00 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_
9a20 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
9a40 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
9a60 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
9a80 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.......
9aa0 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
9ac0 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
9ae0 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
9b00 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
9b20 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
9b40 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
9b60 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
9b80 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
9ba0 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
9bc0 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 ................................
9be0 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
9c00 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
9c20 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(
9c40 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_
9c60 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
9c80 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+
9ca0 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);.
9cc0 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,
9ce0 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
9d00 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)
9d20 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);...
9d40 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
9d60 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
9d80 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
9da0 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(:
9dc0 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
9de0 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(
9e00 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
9e20 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
9e40 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(
9e60 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
9e80 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
9ea0 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
9ec0 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).*
9ee0 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
9f00 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
9f20 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
9f40 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_
9f60 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
9f80 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.=.
9fa0 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
9fc0 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);
9fe0 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
a000 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
a020 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
a040 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
a060 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)
a080 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
a0a0 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);
a0c0 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);.
a0e0 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,
a100 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
a120 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
a140 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.
a160 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);......
a180 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
a1a0 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:.
a1c0 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
a1e0 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/
a200 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.......
a220 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
a240 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);......
a260 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
a280 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
a2a0 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(
a2c0 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
a2e0 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(
a300 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);.........
a320 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,................
a340 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
a360 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];...
a380 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(
a3a0 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
a3c0 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*
a3e0 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
a400 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)));.........
a420 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;..
a440 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
a460 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
a480 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.
a4a0 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
a4c0 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....%
a4e0 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
a500 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.=.
a520 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
a540 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
a560 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
a580 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')
a5a0 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
a5c0 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
a5e0 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.=
a600 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)
a620 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)]
a640 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
a660 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.=
a680 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);.
a6a0 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
a6c0 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
a6e0 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,:);.
a700 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
a720 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
a740 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_
a760 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)
a780 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,
a7a0 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(
a7c0 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
a7e0 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
a800 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);.
a820 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
a840 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
a860 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);.
a880 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
a8a0 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.
a8c0 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
a8e0 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;...%.
a900 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).<
a920 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
a940 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.=.
a960 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.
a980 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.=.[
a9a0 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];..
a9c0 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
a9e0 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
aa00 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
aa20 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
aa40 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
aa60 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
aa80 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.=.[
aaa0 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
aac0 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(:,
aae0 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.=
ab00 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);
ab20 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,:)
ab40 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.=
ab60 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
ab80 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
aba0 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
abc0 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
abe0 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
ac00 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,
ac20 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.
ac40 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.
ac60 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.=.
ac80 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;....
aca0 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
acc0 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
ace0 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
ad00 69 78 2f 56 5f 64 69 61 67 32 5f 70 69 78 28 33 29 0a 20 20 20 0a 20 20 20 69 66 20 4e 5f 6d 69 ix/V_diag2_pix(3)........if.N_mi
ad20 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;......
ad40 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
ad60 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
ad80 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....
ada0 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.=
adc0 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
ade0 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);..
ae00 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
ae20 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..............................
ae40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ae60 00 00 00 00 20 20 20 36 34 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
ae80 20 20 20 31 32 34 30 20 20 36 37 36 33 30 37 30 32 32 34 20 20 31 32 34 37 30 00 20 00 00 00 00 ...1240..6763070224..12470......
aea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
af00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
af20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
af40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
af60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
af80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
afa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
afc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
afe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b000 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
b020 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:
b040 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
b060 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
b080 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
b0a0 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.
b0c0 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
b0e0 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
b100 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
b120 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
b140 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(
b160 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);.......
b180 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
b1a0 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
b1c0 28 6f 6d 63 6b 6b 29 3b 0a 20 20 20 0a 20 20 20 48 6b 6b 20 3d 20 4b 4b 20 2a 20 5b 52 63 6b 6b (omckk);........Hkk.=.KK.*.[Rckk
b1e0 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 6b (:,1).Rckk(:,2).Tckk];........Hk
b200 6b 20 3d 20 48 6b 6b 20 2f 20 48 6b 6b 28 33 2c 33 29 3b 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 k.=.Hkk./.Hkk(3,3);........eval(
b220 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 6b 3b 27 5d ['omc_'.num2str(kk).'.=.omckk;']
b240 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 29 20 27 20 );....eval(['Tc_'.num2str(kk).'.
b260 3d 20 54 63 6b 6b 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 48 5f 27 20 6e 75 =.Tckk;']);........eval(['H_'.nu
b280 6d 32 73 74 72 28 6b 6b 29 20 27 3d 48 6b 6b 3b 27 5d 29 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 0a m2str(kk).'=Hkk;']);.....end;...
b2a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b400 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.........
b420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b460 00 00 00 00 20 20 20 36 34 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
b480 20 20 31 34 33 30 34 20 20 36 37 36 33 30 37 30 32 32 35 20 20 31 30 32 31 32 00 20 00 00 00 00 ..14304..6763070225..10212......
b4a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b4c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b4e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b5a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b5c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b5e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b600 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
b620 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
b640 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
b660 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
b680 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-.
b6a0 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
b6c0 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
b6e0 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.(
b700 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
b720 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
b740 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
b760 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
b780 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
b7a0 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
b7c0 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..%.%...[
b7e0 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
b800 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.%.
b820 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..%..%...
b840 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
b860 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..%
b880 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
b8a0 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
b8c0 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
b8e0 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
b900 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
b920 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
b940 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.$..$
b960 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
b980 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
b9a0 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
b9c0 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..
b9e0 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
ba00 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).
ba20 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
ba40 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*
ba60 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
ba80 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
baa0 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.
bac0 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
bae0 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
bb00 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
bb20 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'
bb40 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
bb60 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,.
bb80 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,.........
bba0 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)
bbc0 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
bbe0 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;');........
bc00 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
bc20 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.=
bc40 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
bc60 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);');........
bc80 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
bca0 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.
bcc0 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........
bce0 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.];......
bd00 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,.
bd20 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,.........
bd40 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
bd60 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...
bd80 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]
bda0 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....
bdc0 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
bde0 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..
be00 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.
be20 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.
be40 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.=.[];.........
be60 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).............
be80 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
bea0 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.............
bec0 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
bee0 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.<.
bf00 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.
bf20 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.
bf40 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........
bf60 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
bf80 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).............
bfa0 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
bfc0 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...........
bfe0 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
c000 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,
c020 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
c040 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).-
c060 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(
c080 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
c0a0 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
c0c0 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
c0e0 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
c100 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
c120 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
c140 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',
c160 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
c180 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
c1a0 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
c1c0 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.
c1e0 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
c200 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
c220 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.=.
c240 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)...
c260 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
c280 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',
c2a0 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
c2c0 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
c2e0 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
c300 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.....
c320 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
c340 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.
c360 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..
c380 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,.'
c3a0 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');.............
c3c0 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
c3e0 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'));.................
c400 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
c420 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
c440 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
c460 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');......
c480 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
c4a0 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)];.....
c4c0 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
c4e0 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........
c500 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
c520 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.
c540 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')...........
c560 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));
c580 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
c5a0 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').................
c5c0 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;.................
c5e0 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')..
c600 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;..
c620 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
c640 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
c660 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.
c680 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
c6a0 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.')...........
c6c0 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.......
c6e0 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
c700 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
c720 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.
c740 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).......
c760 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
c780 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,.....
c7a0 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
c7c0 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
c7e0 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
c800 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
c820 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.....
c840 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.
c860 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...
c880 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
c8a0 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......
c8c0 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.
c8e0 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.
c900 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;.........
c920 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
c940 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
c960 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
c980 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
c9a0 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',
c9c0 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.
c9e0 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
ca00 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;..
ca20 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
ca40 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..%%%%%
ca60 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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ca80 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.
caa0 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
cac0 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
cae0 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
cb00 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
cb20 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',....
cb40 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'
cb60 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.=
cb80 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
cba0 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,{'','','',''})..%.
cbc0 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
cbe0 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
cc00 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.=.{
cc20 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
cc40 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),..
cc60 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
cc80 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
cca0 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({''},
ccc0 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
cce0 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
cd00 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.
cd20 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
cd40 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
cd60 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
cd80 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
cda0 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
cdc0 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
cde0 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))..
ce00 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,{
ce20 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
ce40 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
ce60 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
ce80 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.%%%%%%%%%%%%%%%%%%%%%%
cea0 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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
cec0 25 25 25 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 00 %%%.............................
cee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cf00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cf20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cf40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cf60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cf80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cfa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cfc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cfe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d000 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..
d020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d060 00 00 00 00 20 20 20 36 34 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
d080 20 20 31 31 36 34 36 20 20 36 37 36 33 30 37 30 32 32 36 20 20 31 31 35 37 37 00 20 00 00 00 00 ..11646..6763070226..11577......
d0a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d0c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d0e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d200 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
d220 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_
d240 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.
d260 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
d280 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.
d2a0 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]
d2c0 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
d2e0 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;
d300 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
d320 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
d340 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
d360 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
d380 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
d3a0 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
d3c0 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.=.[]
d3e0 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
d400 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_
d420 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];..
d440 48 5f 6c 69 73 74 20 3d 20 63 65 6c 6c 28 31 2c 6e 5f 69 6d 61 29 3b 0a 0a 66 6f 72 20 6b 6b 3d H_list.=.cell(1,n_ima);..for.kk=
d460 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 48 6b 6b 20 3d 20 48 5f 27 1:n_ima,........eval(['Hkk.=.H_'
d480 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 6b 6b 20 3d .num2str(kk).';']);........Hkk.=
d4a0 20 53 75 62 5f 63 63 20 2a 20 48 6b 6b 3b 0a 20 20 20 20 20 20 0a 20 20 20 48 5f 6c 69 73 74 7b .Sub_cc.*.Hkk;...........H_list{
d4c0 6b 6b 7d 20 3d 20 48 6b 6b 3b 0a 20 20 20 0a 20 20 20 25 20 45 78 74 72 61 63 74 20 76 61 6e 69 kk}.=.Hkk;........%.Extract.vani
d4e0 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 67 6f 6e 61 shing.points.(direct.and.diagona
d500 6c 73 29 3a 0a 20 20 20 0a 20 20 20 56 5f 68 6f 72 69 5f 70 69 78 20 3d 20 48 6b 6b 28 3a 2c 31 ls):........V_hori_pix.=.Hkk(:,1
d520 29 3b 0a 20 20 20 56 5f 76 65 72 74 5f 70 69 78 20 3d 20 48 6b 6b 28 3a 2c 32 29 3b 0a 20 20 20 );....V_vert_pix.=.Hkk(:,2);....
d540 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 6b 6b 28 3a 2c 32 29 V_diag1_pix.=.(Hkk(:,1)+Hkk(:,2)
d560 29 2f 32 3b 0a 20 20 20 56 5f 64 69 61 67 32 5f 70 69 78 20 3d 20 28 48 6b 6b 28 3a 2c 31 29 2d )/2;....V_diag2_pix.=.(Hkk(:,1)-
d580 48 6b 6b 28 3a 2c 32 29 29 2f 32 3b 0a 20 20 20 0a 20 20 20 56 5f 68 6f 72 69 5f 70 69 78 20 3d Hkk(:,2))/2;........V_hori_pix.=
d5a0 20 56 5f 68 6f 72 69 5f 70 69 78 2f 6e 6f 72 6d 28 56 5f 68 6f 72 69 5f 70 69 78 29 3b 0a 20 20 .V_hori_pix/norm(V_hori_pix);...
d5c0 20 56 5f 76 65 72 74 5f 70 69 78 20 3d 20 56 5f 76 65 72 74 5f 70 69 78 2f 6e 6f 72 6d 28 56 5f .V_vert_pix.=.V_vert_pix/norm(V_
d5e0 76 65 72 74 5f 70 69 78 29 3b 0a 20 20 20 56 5f 64 69 61 67 31 5f 70 69 78 20 3d 20 56 5f 64 69 vert_pix);....V_diag1_pix.=.V_di
d600 61 67 31 5f 70 69 78 2f 6e 6f 72 6d 28 56 5f 64 69 61 67 31 5f 70 69 78 29 3b 0a 20 20 20 56 5f ag1_pix/norm(V_diag1_pix);....V_
d620 64 69 61 67 32 5f 70 69 78 20 3d 20 56 5f 64 69 61 67 32 5f 70 69 78 2f 6e 6f 72 6d 28 56 5f 64 diag2_pix.=.V_diag2_pix/norm(V_d
d640 69 61 67 32 5f 70 69 78 29 3b 0a 20 20 20 0a 20 20 20 61 31 20 3d 20 56 5f 68 6f 72 69 5f 70 69 iag2_pix);........a1.=.V_hori_pi
d660 78 28 31 29 3b 0a 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 x(1);....b1.=.V_hori_pix(2);....
d680 63 31 20 3d 20 56 5f 68 6f 72 69 5f 70 69 78 28 33 29 3b 0a 20 20 20 0a 20 20 20 61 32 20 3d 20 c1.=.V_hori_pix(3);........a2.=.
d6a0 56 5f 76 65 72 74 5f 70 69 78 28 31 29 3b 0a 20 20 20 62 32 20 3d 20 56 5f 76 65 72 74 5f 70 69 V_vert_pix(1);....b2.=.V_vert_pi
d6c0 78 28 32 29 3b 0a 20 20 20 63 32 20 3d 20 56 5f 76 65 72 74 5f 70 69 78 28 33 29 3b 0a 20 20 20 x(2);....c2.=.V_vert_pix(3);....
d6e0 0a 20 20 20 61 33 20 3d 20 56 5f 64 69 61 67 31 5f 70 69 78 28 31 29 3b 0a 20 20 20 62 33 20 3d ....a3.=.V_diag1_pix(1);....b3.=
d700 20 56 5f 64 69 61 67 31 5f 70 69 78 28 32 29 3b 0a 20 20 20 63 33 20 3d 20 56 5f 64 69 61 67 31 .V_diag1_pix(2);....c3.=.V_diag1
d720 5f 70 69 78 28 33 29 3b 0a 20 20 20 0a 20 20 20 61 34 20 3d 20 56 5f 64 69 61 67 32 5f 70 69 78 _pix(3);........a4.=.V_diag2_pix
d740 28 31 29 3b 0a 20 20 20 62 34 20 3d 20 56 5f 64 69 61 67 32 5f 70 69 78 28 32 29 3b 0a 20 20 20 (1);....b4.=.V_diag2_pix(2);....
d760 63 34 20 3d 20 56 5f 64 69 61 67 32 5f 70 69 78 28 33 29 3b 0a 20 0a 20 0a 20 20 20 41 5f 6b 6b c4.=.V_diag2_pix(3);........A_kk
d780 20 3d 20 5b 61 31 2a 61 32 20 20 62 31 2a 62 32 3b 0a 09 20 20 20 20 20 20 20 20 61 33 2a 61 34 .=.[a1*a2..b1*b2;..........a3*a4
d7a0 20 20 62 33 2a 62 34 5d 3b 0a 20 20 20 0a 20 20 20 62 5f 6b 6b 20 3d 20 2d 5b 63 31 2a 63 32 3b ..b3*b4];........b_kk.=.-[c1*c2;
d7c0 63 33 2a 63 34 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 c3*c4];.........A.=.[A;A_kk];...
d7e0 20 62 20 3d 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 .b.=.[b;b_kk];.....end;..%.use.a
d800 6c 6c 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 ll.the.vanishing.points.to.estim
d820 61 74 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 ate.focal.length:..f_init.=.sqrt
d840 28 61 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 (abs(1./(inv(A'*A)*A'*b)));.%.if
d860 20 75 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 .using.a.two-focal.model.for.ini
d880 74 69 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 tial.guess..%f_init.=.sqrt(b'*(s
d8a0 75 6d 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 um(A')')./.(b'*b)).*.ones(2,1);.
d8c0 25 20 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 %.if.single.focal.length.model.i
d8e0 73 20 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 s.used...%.Global.calibration.ma
d900 74 72 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 trix.(initial.guess):......KK.=.
d920 5b 66 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 [f_init(1).0.c_init(1);0.f_init(
d940 32 29 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 2).c_init(2);.0.0.1];.inv_KK.=.i
d960 6e 76 28 4b 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 nv(KK);....%.Computing.of.the.ex
d980 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 68 65 20 63 6f 6c trinsic.parameters.(from.the.col
d9a0 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 69 6d 61 2c 0a 20 lineations)..for.kk.=.1:n_ima,..
d9c0 20 20 0a 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 6b ......eval(['Hkk.=.H_'.num2str(k
d9e0 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 48 32 20 3d 20 69 6e 76 5f 4b 4b 2a 48 6b 6b k).';']);........H2.=.inv_KK*Hkk
da00 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 32 28 3a ;...........sc.=.mean([norm(H2(:
da20 2c 31 29 29 3b 6e 6f 72 6d 28 48 32 28 3a 2c 32 29 29 5d 29 3b 0a 20 20 20 0a 20 09 48 32 20 3d ,1));norm(H2(:,2))]);.......H2.=
da40 20 48 32 2f 73 63 3b 0a 20 20 20 0a 20 20 09 6f 6d 63 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 .H2/sc;........omckk.=.rodrigues
da60 28 5b 48 32 28 3a 2c 31 3a 32 29 20 63 72 6f 73 73 28 48 32 28 3a 2c 31 29 2c 48 32 28 3a 2c 32 ([H2(:,1:2).cross(H2(:,1),H2(:,2
da80 29 29 5d 29 3b 0a 20 20 09 54 63 6b 6b 20 3d 20 48 32 28 3a 2c 33 29 3b 0a 20 20 20 0a 20 20 09 ))]);....Tckk.=.H2(:,3);........
daa0 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 27 20 3d 20 6f 6d 63 eval(['omc_'.num2str(kk).'.=.omc
dac0 6b 6b 3b 27 5d 29 3b 0a 20 20 09 65 76 61 6c 28 5b 27 54 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b kk;']);....eval(['Tc_'.num2str(k
dae0 6b 29 20 27 20 3d 20 54 63 6b 6b 3b 27 5d 29 3b 0a 20 20 20 09 0a 65 6e 64 3b 0a 0a 0a 20 20 20 k).'.=.Tckk;']);......end;......
db00 20 20 20 0a 25 20 49 6e 69 74 69 61 6c 69 73 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 70 61 72 61 ....%.Initialisation.of.the.para
db20 6d 65 74 65 72 73 20 66 6f 72 20 67 6c 6f 62 61 6c 20 6d 69 6e 69 6d 69 7a 61 74 69 6f 6e 3a 0a meters.for.global.minimization:.
db40 0a 69 6e 69 74 5f 70 61 72 61 6d 20 3d 20 5b 66 5f 69 6e 69 74 3b 6b 5f 69 6e 69 74 5d 3b 0a 0a .init_param.=.[f_init;k_init];..
db60 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 69 for.kk.=.1:n_ima,.......eval(['i
db80 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 5f 27 20 6e nit_param.=.[init_param;.omc_'.n
dba0 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 6b 29 20 27 um2str(kk).';.Tc_'.num2str(kk).'
dbc0 5d 3b 27 5d 29 3b 0a 65 6e 64 3b 0a 0a 69 66 20 65 78 69 73 74 28 27 6c 65 61 73 74 73 71 27 29 ];']);.end;..if.exist('leastsq')
dbe0 2c 0a 20 20 20 73 73 73 20 3d 20 5b 27 5b 70 61 72 61 6d 2c 6f 70 74 5d 20 3d 20 6c 65 61 73 74 ,....sss.=.['[param,opt].=.least
dc00 73 71 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 70 61 72 sq(''multi_error_oulu'',init_par
dc20 61 6d 2c 6f 70 74 69 6f 6e 73 2c 5b 5d 2c 6e 5f 69 6d 61 2c 63 5f 69 6e 69 74 29 3b 27 5d 3b 0a am,options,[],n_ima,c_init);'];.
dc40 65 6c 73 65 0a 20 20 20 73 73 73 20 3d 20 5b 27 5b 70 61 72 61 6d 2c 6f 70 74 5d 20 3d 20 6c 65 else....sss.=.['[param,opt].=.le
dc60 61 73 74 73 71 32 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 astsq2(''multi_error_oulu'',init
dc80 5f 70 61 72 61 6d 2c 6f 70 74 69 6f 6e 73 2c 5b 5d 2c 6e 5f 69 6d 61 2c 63 5f 69 6e 69 74 29 3b _param,options,[],n_ima,c_init);
dca0 27 5d 3b 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 69 7a 61 '];.end;...fprintf(1,'\nOptimiza
dcc0 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 70 61 6c tion.not.including.the.principal
dce0 20 70 6f 69 6e 74 2e 2e 2e 5c 6e 27 29 0a 0a 6f 70 74 69 6f 6e 73 20 3d 20 5b 31 20 31 65 2d 34 .point...\n')..options.=.[1.1e-4
dd00 20 31 65 2d 34 20 31 65 2d 36 20 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 34 30 .1e-4.1e-6..0.0.0.0.0.0.0.0.0.40
dd20 30 30 20 30 20 31 65 2d 38 20 30 2e 31 20 30 5d 3b 0a 0a 65 76 61 6c 28 73 73 73 29 3b 0a 0a 68 00.0.1e-8.0.1.0];..eval(sss);..h
dd40 69 73 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 istory..=.[[init_param;c_init].[
dd60 70 61 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 param;c_init]];..sol_no_center.=
dd80 20 5b 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 .[param;c_init];..init_param.=.s
dda0 6f 6c 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 ol_no_center;..fprintf(1,'\nOpti
ddc0 6d 69 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 mization.including.the.principal
dde0 20 70 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 .point...\n')..eval(sss);..histo
de00 72 79 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 ry.=.[history.param];...sol_with
de20 5f 63 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 _center.=.param;.....%%%.Extract
de40 69 6f 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 ion.of.the.final.intrinsic.and.e
de60 78 74 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 xtrinsic.paramaters.(in.the.no-c
de80 65 6e 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 enter.case):..solution.=.sol_no_
dea0 63 65 6e 74 65 72 3b 0a 65 78 74 72 61 63 74 5f 70 61 72 61 6d 65 74 65 72 73 3b 0a 0a 66 70 72 center;.extract_parameters;..fpr
dec0 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.
dee0 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
df00 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
df20 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'
df40 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
df60 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);
df80 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
dfa0 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.
dfc0 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
dfe0 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
e000 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
e020 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
e040 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
e060 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.
e080 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
e0a0 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
e0c0 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
e0e0 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_
e100 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
e120 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
e140 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
e160 65 72 73 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 69 6f ers;...fprintf(1,'\n\nCalibratio
e180 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 20 65 n.results.with.principal.point.e
e1a0 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 6f 63 stimation:\n\n');.fprintf(1,'Foc
e1c0 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 25 33 al.Length:.....fc.=.[.%3.5f...%3
e1e0 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 70 61 .5f]\n',fc);.fprintf(1,'Principa
e200 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 5d 5c l.point:..cc.=.[.%3.5f...%3.5f]\
e220 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 20 20 n',cc);.fprintf(1,'Distortion:..
e240 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 2e 35 .....kc.=.[.%3.5f...%3.5f...%3.5
e260 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 25 25 f...%3.5f]\n',kc);......%%%%%%%%
e280 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 25 25 %%%%%%%%%%%%.GRAPHICAL.OUTPUT.%%
e2a0 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 75 74 %%%%%%%%%%%%%%%%%%%%%%..graphout
e2c0 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 20 74 _calib;....fprintf(1,'Note:.If.t
e2e0 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 79 2c he.solution.is.not.satisfactory,
e300 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 72 20 .select.solution.without.center.
e320 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 25 25 estimation.\n\n');...%%%%%%%%%%%
e340 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 65 73 %%%.Save.all.the.Calibration.res
e360 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 72 65 ults:..disp('Save.calibration.re
e380 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 29 3b sults.under.Calib_Results.mat');
e3a0 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 73 75 ..string_save.=.'save.Calib_Resu
e3c0 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 6f 6c lts.fc.kc.cc.ex.x.y.solution.sol
e3e0 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 69 73 74 6f _with_center.sol_no_center.histo
e400 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 65 72 ry.wintx.winty.n_ima.type_number
e420 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 66 69 ing.N_slots.small_calib_image.fi
e440 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 6d 61 rst_num.image_numbers.format_ima
e460 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 6d 61 ge.calib_name.Hcal.Wcal.nx.ny.ma
e480 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 5f 4b p.dX_default.dY_default.KK.inv_K
e4a0 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 20 20 K.dX.dY';..for.kk.=.1:n_ima,....
e4c0 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 5f 27 string_save.=.[string_save.'.X_'
e4e0 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 20 27 .num2str(kk).'.x_'.num2str(kk).'
e500 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 72 28 .y_'.num2str(kk).'.ex_'.num2str(
e520 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 5f 27 20 6e kk).'.omc_'.num2str(kk).'.Tc_'.n
e540 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 6b 6b 29 20 27 20 6e um2str(kk).'.H_'.num2str(kk).'.n
e560 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 71 5f 79 5f 27 20 6e _sq_x_'.num2str(kk).'.n_sq_y_'.n
e580 75 6d 32 73 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 um2str(kk)];.end;..eval(string_s
e5a0 61 76 65 29 3b 0a 34 5d 3b 0a 20 20 20 0a 20 20 20 62 5f 6b 6b 20 3d 20 2d 5b 63 31 2a 63 32 3b ave);.4];........b_kk.=.-[c1*c2;
e5c0 63 33 2a 63 34 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 c3*c4];.........A.=.[A;A_kk];...
e5e0 20 62 20 3d 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 .b.=.[b;b_kk];.....end;..%.use.a
e600 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..
e620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e660 00 00 00 00 20 20 20 36 34 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
e680 20 20 20 35 37 31 31 20 20 36 37 36 33 30 37 30 32 32 37 20 20 31 31 35 37 30 00 20 00 00 00 00 ...5711..6763070227..11570......
e6a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e6c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e6e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e7c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e7e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e800 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
e820 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.%%%%%%%%%%%%%%%%%%%%%%%%
e840 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:.
e860 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
e880 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*
e8a0 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.
e8c0 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(
e8e0 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
e900 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(
e920 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
e940 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.],
e960 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
e980 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
e9a0 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
e9c0 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');
e9e0 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
ea00 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
ea20 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
ea40 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
ea60 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).';']);....
ea80 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).
eaa0 27 3b 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 20 3d 20 6e 5f ';']);........eval(['n_sq_x.=.n_
eac0 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 76 61 sq_x_'.num2str(kk).';']);....eva
eae0 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
eb00 29 20 27 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 52 5f 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 ).';']);........R_kk.=.rodrigues
eb20 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 52 5f 6b 6b 20 2a 20 (omc_kk);........YY_kk.=.R_kk.*.
eb40 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 6e 67 74 68 28 58 58 XX_kk.+.Tc_kk.*.ones(1,length(XX
eb60 5f 6b 6b 29 29 3b 0a 20 20 20 0a 20 20 20 75 75 20 3d 20 5b 2d 64 58 3b 2d 64 59 3b 30 5d 2f 32 _kk));........uu.=.[-dX;-dY;0]/2
eb80 3b 0a 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 20 0a 20 20 ;....uu.=.R_kk.*.uu.+.Tc_kk;....
eba0 20 0a 20 20 20 59 59 78 20 3d 20 7a 65 72 6f 73 28 6e 5f 73 71 5f 78 2b 31 2c 6e 5f 73 71 5f 79 .....YYx.=.zeros(n_sq_x+1,n_sq_y
ebc0 2b 31 29 3b 0a 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 +1);....YYy.=.zeros(n_sq_x+1,n_s
ebe0 71 5f 79 2b 31 29 3b 0a 20 20 20 59 59 7a 20 3d 20 7a 65 72 6f 73 28 6e 5f 73 71 5f 78 2b 31 2c q_y+1);....YYz.=.zeros(n_sq_x+1,
ec00 6e 5f 73 71 5f 79 2b 31 29 3b 0a 20 20 20 0a 20 20 20 59 59 78 28 3a 29 20 3d 20 59 59 5f 6b 6b n_sq_y+1);........YYx(:).=.YY_kk
ec20 28 31 2c 3a 29 3b 0a 20 20 20 59 59 79 28 3a 29 20 3d 20 59 59 5f 6b 6b 28 32 2c 3a 29 3b 0a 20 (1,:);....YYy(:).=.YY_kk(2,:);..
ec40 20 20 59 59 7a 28 3a 29 20 3d 20 59 59 5f 6b 6b 28 33 2c 3a 29 3b 0a 20 20 20 0a 20 20 20 0a 20 ..YYz(:).=.YY_kk(3,:);..........
ec60 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 3b 0a 20 ..%keyboard;........figure(4);..
ec80 20 20 68 68 68 3d 20 6d 65 73 68 28 59 59 78 2c 59 59 7a 2c 2d 59 59 79 29 3b 0a 20 20 20 73 65 ..hhh=.mesh(YYx,YYz,-YYy);....se
eca0 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 6b 6b 2d t(hhh,'edgecolor',colors(rem(kk-
ecc0 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 27 66 61 63 65 63 1,6)+1),'linewidth',1);.%,'facec
ece0 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 59 5f 6b 6b 28 31 olor','none');....%plot3(YY_kk(1
ed00 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 2c 5b 27 6f 27 20 ,:),YY_kk(3,:),-YY_kk(2,:),['o'.
ed20 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 20 20 74 65 78 74 colors(rem(kk-1,6)+1)]);....text
ed40 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 29 2c (uu(1),uu(3),-uu(2),num2str(kk),
ed60 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 65 6d 'fontsize',14,'color',colors(rem
ed80 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 28 34 (kk-1,6)+1));.....end;..figure(4
eda0 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 74 69 );rotate3d.on;.axis('equal');.ti
edc0 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 76 69 tle('Extrinsic.parameters');.%vi
ede0 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 3b 0a ew(60,30);.view(a,b);.hold.off;.
ee00 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 20 74 ...%.Reproject.the.patterns.on.t
ee20 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 65 6c he.images,.and.compute.the.pixel
ee40 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 69 66 .errors:..%.Reload.the.images.if
ee60 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 20 20 .necessary..if.~exist('I_1'),...
ee80 20 69 6d 61 5f 72 65 61 64 5f 63 61 6c 69 62 3b 0a 65 6e 64 3b 0a 0a 0a 65 78 20 3d 20 5b 5d 3b .ima_read_calib;.end;...ex.=.[];
eea0 20 25 20 47 6c 6f 62 61 6c 20 65 72 72 6f 72 20 76 65 63 74 6f 72 0a 78 20 3d 20 5b 5d 3b 20 25 .%.Global.error.vector.x.=.[];.%
eec0 20 44 65 74 65 63 74 65 64 20 63 6f 72 6e 65 72 73 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 20 70 .Detected.corners.on.the.image.p
eee0 6c 61 6e 65 0a 79 20 3d 20 5b 5d 3b 20 25 20 52 65 70 72 6f 6a 65 63 74 65 64 20 70 6f 69 6e 74 lane.y.=.[];.%.Reprojected.point
ef00 73 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 65 76 61 6c s..for.kk.=.1:n_ima,........eval
ef20 28 5b 27 6f 6d 63 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 (['omckk.=.omc_'.num2str(kk).';'
ef40 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 54 63 6b 6b 20 3d 20 54 63 5f 27 20 6e 75 6d 32 73 74 ]);....eval(['Tckk.=.Tc_'.num2st
ef60 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 52 6b 6b 20 3d 20 72 6f 64 72 69 67 r(kk).';']);........Rkk.=.rodrig
ef80 75 65 73 28 6f 6d 63 6b 6b 29 3b 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 79 5f 27 20 6e 75 ues(omckk);........eval(['y_'.nu
efa0 6d 32 73 74 72 28 6b 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 m2str(kk).'..=.project2_oulu(X_'
efc0 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 63 2c 63 63 2c 6b 63 .num2str(kk).',Rkk,Tckk,fc,cc,kc
efe0 29 3b 27 5d 29 3b 0a 0a 20 20 20 65 76 61 6c 28 5b 27 65 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b );']);.....eval(['ex_'.num2str(k
f000 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 6e 75 k).'.=.x_'.num2str(kk).'.-y_'.nu
f020 6d 32 73 74 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 78 m2str(kk).';']);........eval(['x
f040 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 20 _kk.=.x_'.num2str(kk).';']);....
f060 0a 20 20 20 66 69 67 75 72 65 28 34 2b 6b 6b 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 49 20 3d 20 ....figure(4+kk);....eval(['I.=.
f080 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 69 6d 61 67 65 28 I_'.num2str(kk).';']);....image(
f0a0 49 29 3b 20 68 6f 6c 64 20 6f 6e 3b 0a 20 20 20 63 6f 6c 6f 72 6d 61 70 28 67 72 61 79 28 32 35 I);.hold.on;....colormap(gray(25
f0c0 36 29 29 3b 0a 20 20 20 74 69 74 6c 65 28 5b 27 49 6d 61 67 65 20 27 20 6e 75 6d 32 73 74 72 28 6));....title(['Image.'.num2str(
f0e0 6b 6b 29 20 27 20 2d 20 49 6d 61 67 65 20 70 6f 69 6e 74 73 20 28 2b 29 20 61 6e 64 20 72 65 70 kk).'.-.Image.points.(+).and.rep
f100 72 6f 6a 65 63 74 65 64 20 67 72 69 64 20 70 6f 69 6e 74 73 20 28 6f 29 27 5d 29 3b 0a 20 20 20 rojected.grid.points.(o)']);....
f120 65 76 61 6c 28 5b 27 70 6c 6f 74 28 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 28 31 2c eval(['plot(x_'.num2str(kk).'(1,
f140 3a 29 2b 31 2c 78 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 :)+1,x_'.num2str(kk).'(2,:)+1,''
f160 72 2b 27 27 29 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 70 6c 6f 74 28 79 5f 27 20 6e 75 r+'');']);....eval(['plot(y_'.nu
f180 6d 32 73 74 72 28 6b 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 m2str(kk).'(1,:)+1,y_'.num2str(k
f1a0 6b 29 20 27 28 32 2c 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 k).'(2,:)+1,'''.colors(rem(kk-1,
f1c0 36 29 2b 31 29 20 27 6f 27 27 29 3b 27 5d 29 3b 0a 20 20 20 7a 6f 6f 6d 20 6f 6e 3b 0a 20 20 20 6)+1).'o'');']);....zoom.on;....
f1e0 68 6f 6c 64 20 6f 66 66 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 65 78 20 3d hold.off;............eval(['ex.=
f200 20 5b 65 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 .[ex.ex_'.num2str(kk).'];']);...
f220 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).'
f240 5d 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 79 20 3d 20 5b 79 20 79 5f 27 20 6e 75 6d 32 ];']);....eval(['y.=.[y.y_'.num2
f260 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 66 69 67 75 72 str(kk).'];']);.....end;...figur
f280 65 28 35 2b 6e 5f 69 6d 61 29 3b 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 e(5+n_ima);.for.kk.=.1:n_ima,...
f2a0 20 65 76 61 6c 28 5b 27 70 6c 6f 74 28 65 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 28 .eval(['plot(ex_'.num2str(kk).'(
f2c0 31 2c 3a 29 2c 65 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 28 32 2c 3a 29 2c 27 27 27 1,:),ex_'.num2str(kk).'(2,:),'''
f2e0 20 63 6f 6c 6f 72 73 28 72 65 6d 28 6b 6b 2d 31 2c 36 29 2b 31 29 20 27 2b 27 27 29 3b 27 5d 29 .colors(rem(kk-1,6)+1).'+'');'])
f300 3b 0a 20 20 20 68 6f 6c 64 20 6f 6e 3b 0a 65 6e 64 3b 0a 68 6f 6c 64 20 6f 66 66 3b 0a 61 78 69 ;....hold.on;.end;.hold.off;.axi
f320 73 28 27 65 71 75 61 6c 27 29 3b 0a 74 69 74 6c 65 28 27 52 65 70 72 6f 6a 65 63 74 69 6f 6e 20 s('equal');.title('Reprojection.
f340 65 72 72 6f 72 20 28 69 6e 20 70 69 78 65 6c 29 27 29 3b 0a 78 6c 61 62 65 6c 28 27 78 27 29 3b error.(in.pixel)');.xlabel('x');
f360 0a 79 6c 61 62 65 6c 28 27 79 27 29 3b 0a 0a 65 72 72 5f 73 74 64 20 3d 20 73 74 64 28 65 78 27 .ylabel('y');..err_std.=.std(ex'
f380 29 27 3b 0a 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:....
f3a0 20 20 65 72 72 20 3d 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 ..err.=.[.%3.5f...%3.5f]\n\n',er
f3c0 72 5f 73 74 64 29 3b 20 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 r_std);.........................
f3e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f400 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..
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 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
f480 20 20 20 31 37 35 34 20 20 36 37 36 33 30 37 30 32 32 37 20 20 31 31 35 30 33 00 20 00 00 00 00 ...1754..6763070227..11503......
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 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
f620 61 5f 63 61 6c 69 62 3b 0a 65 6e 64 3b 0a 0a 69 6d 61 67 65 5f 6e 75 6d 62 65 72 73 20 3d 20 66 a_calib;.end;..image_numbers.=.f
f640 69 72 73 74 5f 6e 75 6d 3a 6e 5f 69 6d 61 2d 31 2b 66 69 72 73 74 5f 6e 75 6d 3b 0a 0a 66 6f 72 irst_num:n_ima-1+first_num;..for
f660 20 69 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 0a 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 4c 6f 61 .i.=.1:n_ima,.....fprintf(1,'Loa
f680 64 69 6e 67 20 69 6d 61 67 65 20 25 64 2e 2e 2e 5c 6e 27 2c 69 29 3b 0a 20 20 20 0a 20 20 20 69 ding.image.%d...\n',i);........i
f6a0 66 20 7e 74 79 70 65 5f 6e 75 6d 62 65 72 69 6e 67 2c 20 20 20 0a 20 20 20 20 20 20 6e 75 6d 62 f.~type_numbering,..........numb
f6c0 65 72 5f 65 78 74 20 3d 20 20 6e 75 6d 32 73 74 72 28 69 6d 61 67 65 5f 6e 75 6d 62 65 72 73 28 er_ext.=..num2str(image_numbers(
f6e0 69 29 29 3b 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 6e 75 6d 62 65 72 5f 65 78 74 20 3d 20 i));....else.......number_ext.=.
f700 73 70 72 69 6e 74 66 28 5b 27 25 2e 27 20 6e 75 6d 32 73 74 72 28 4e 5f 73 6c 6f 74 73 29 20 27 sprintf(['%.'.num2str(N_slots).'
f720 64 27 5d 2c 69 6d 61 67 65 5f 6e 75 6d 62 65 72 73 28 69 29 29 3b 0a 20 20 20 65 6e 64 3b 0a 0a d'],image_numbers(i));....end;..
f740 20 20 20 69 66 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 28 31 29 20 3d 3d 20 27 72 27 2c 20 20 20 ...if.format_image(1).==.'r',...
f760 0a 20 20 20 20 20 20 49 69 20 3d 20 72 65 61 64 72 61 73 28 5b 63 61 6c 69 62 5f 6e 61 6d 65 20 .......Ii.=.readras([calib_name.
f780 20 6e 75 6d 62 65 72 5f 65 78 74 20 27 2e 72 61 73 27 5d 29 3b 0a 20 20 20 65 6c 73 65 0a 20 20 .number_ext.'.ras']);....else...
f7a0 20 20 20 20 49 69 20 3d 20 64 6f 75 62 6c 65 28 69 6d 72 65 61 64 28 5b 63 61 6c 69 62 5f 6e 61 ....Ii.=.double(imread([calib_na
f7c0 6d 65 20 20 6e 75 6d 62 65 72 5f 65 78 74 20 27 2e 27 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 5d me..number_ext.'.'.format_image]
f7e0 29 29 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 69 66 20 73 69 7a 65 28 49 ));....end;............if.size(I
f800 69 2c 33 29 3e 31 2c 0a 20 20 20 20 20 20 49 69 20 3d 20 49 69 28 3a 2c 3a 2c 32 29 3b 0a 20 20 i,3)>1,.......Ii.=.Ii(:,:,2);...
f820 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 49 5f 27 20 6e 75 6d 32 .end;............eval(['I_'.num2
f840 73 74 72 28 69 29 20 27 20 3d 20 49 69 3b 27 5d 29 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 0a 69 66 str(i).'.=.Ii;']);.....end;...if
f860 20 73 69 7a 65 28 49 5f 31 2c 31 29 7e 3d 34 38 30 2c 0a 20 20 20 73 6d 61 6c 6c 5f 63 61 6c 69 .size(I_1,1)~=480,....small_cali
f880 62 5f 69 6d 61 67 65 20 3d 20 31 3b 0a 65 6c 73 65 0a 20 20 20 73 6d 61 6c 6c 5f 63 61 6c 69 62 b_image.=.1;.else....small_calib
f8a0 5f 69 6d 61 67 65 20 3d 20 30 3b 0a 65 6e 64 3b 0a 20 20 20 0a 0a 5b 48 63 61 6c 2c 57 63 61 6c _image.=.0;.end;......[Hcal,Wcal
f8c0 5d 20 3d 20 73 69 7a 65 28 49 5f 31 29 3b 20 09 25 20 73 69 7a 65 20 6f 66 20 74 68 65 20 63 61 ].=.size(I_1);..%.size.of.the.ca
f8e0 6c 69 62 72 61 74 69 6f 6e 20 69 6d 61 67 65 0a 20 20 20 0a 63 6c 69 63 6b 6e 61 6d 65 20 3d 20 libration.image.....clickname.=.
f900 5b 5d 3b 0a 0a 6d 61 70 20 3d 20 67 72 61 79 28 32 35 36 29 3b 0a 0a 5b 6e 79 2c 6e 78 5d 20 3d [];..map.=.gray(256);..[ny,nx].=
f920 20 73 69 7a 65 28 49 5f 31 29 3b 0a 0a 0a 25 73 74 72 69 6e 67 5f 73 61 76 65 20 3d 20 27 73 61 .size(I_1);...%string_save.=.'sa
f940 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 65 72 69 ve.calib_data.n_ima.type_numberi
f960 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 61 74 5f ng.N_slots.image_numbers.format_
f980 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 79 image.calib_name.Hcal.Wcal.nx.ny
f9a0 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 25 65 76 61 6c 28 .map.small_calib_image';..%eval(
f9c0 73 74 72 69 6e 67 5f 73 61 76 65 29 3b 0a 0a 25 64 69 73 70 28 27 64 6f 6e 65 27 29 3b 0a 63 6c string_save);..%disp('done');.cl
f9e0 69 63 6b 5f 63 61 6c 69 62 3b 0a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ick_calib;......................
fa00 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
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 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
fa80 20 20 20 20 32 33 32 20 20 36 37 36 33 30 37 30 32 33 30 20 20 31 32 30 30 30 00 20 00 00 00 00 ....232..6763070230..12000......
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 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,..
fc20 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
fc40 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
fc60 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
fc80 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 00 00 00 00 00 .version..go_calib_optim;.......
fca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fcc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fd00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fd20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fd40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fd60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fd80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fda0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fdc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fde0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fe00 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
fe20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fe40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fe60 00 00 00 00 20 20 20 36 34 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
fe80 20 20 20 31 37 33 37 20 20 36 37 36 33 30 37 30 32 33 30 20 20 31 32 32 31 32 00 20 00 00 00 00 ...1737..6763070230..12212......
fea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ff00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ff20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ff40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ff60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ff80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ffa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ffc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ffe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10000 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
10020 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.
10040 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.
10060 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.
10080 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_
100a0 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
100c0 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
100e0 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
10100 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.
10120 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_
10140 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:
10160 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
10180 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_
101a0 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
101c0 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);
101e0 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
10200 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
10220 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.+.
10240 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..........
10260 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;.
10280 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
102a0 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.
102c0 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
102e0 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);....
10300 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
10320 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
10340 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
10360 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
10380 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
103a0 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;']);..
103c0 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 00 ...ex.=.[ex;exkk(:)];.....end;..
103e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10400 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...
10420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10460 00 00 00 00 20 20 20 36 34 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
10480 20 20 20 32 30 32 33 20 20 36 37 36 33 30 37 30 32 33 31 20 20 31 31 33 36 35 00 20 00 00 00 00 ...2023..6763070231..11365......
104a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
104c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
104e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
105a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
105c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
105e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10600 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
10620 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
10640 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
10660 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.%.....
10680 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
106a0 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.%.
106c0 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
106e0 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!
10700 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
10720 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
10740 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.
10760 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.=.
10780 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
107a0 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
107c0 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).
107e0 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.+
10800 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,..
10820 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(
10840 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
10860 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
10880 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
108a0 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..
108c0 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,:
108e0 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
10900 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_
10920 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,:).*
10940 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;.........
10960 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.=.
10980 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_
109a0 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);..
109c0 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
109e0 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
10a00 29 29 20 20 2b 20 74 2a 6f 6e 65 73 28 31 2c 6e 29 3b 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 ))..+.t*ones(1,n);..............
10a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10c00 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...
10c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10c60 00 00 00 00 20 20 20 36 34 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
10c80 20 20 20 20 37 31 34 20 20 36 37 36 33 30 37 30 32 33 31 20 20 31 31 33 34 33 00 20 00 00 00 00 ....714..6763070231..11343......
10ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10e00 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.
10e20 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
10e40 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.
10e60 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
10e80 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
10ea0 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:..[
10ec0 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,.
10ee0 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
10f00 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
10f20 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)
10f40 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:(
10f60 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
10f80 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
10fa0 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
10fc0 29 2a 58 58 28 33 2c 3a 29 29 3b 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 )*XX(3,:));.....................
10fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11000 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.........
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 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
11080 20 20 20 35 33 36 34 20 20 36 37 36 33 30 37 30 32 33 32 20 20 31 30 32 32 36 00 20 00 00 00 00 ...5364..6763070232..10226......
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 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
11220 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.
11240 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
11260 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.
11280 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
112a0 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
112c0 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
112e0 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
11300 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
11320 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
11340 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
11360 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
11380 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
113a0 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
113c0 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
113e0 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
11400 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.%......
11420 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..%..
11440 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/
11460 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.
11480 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
114a0 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
114c0 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.
114e0 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.-
11500 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
11520 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(
11540 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,
11560 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.
11580 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');..
115a0 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
115c0 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
115e0 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
11600 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
11620 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
11640 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
11660 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,
11680 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
116a0 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
116c0 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
116e0 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,.
11700 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
11720 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
11740 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(
11760 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,.'
11780 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
117a0 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
117c0 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
117e0 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
11800 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
11820 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(
11840 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
11860 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
11880 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(
118a0 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
118c0 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,
118e0 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
11900 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
11920 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
11940 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,.
11960 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
11980 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
119a0 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
119c0 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
119e0 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
11a00 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=
11a20 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...
11a40 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
11a60 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
11a80 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
11aa0 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
11ac0 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
11ae0 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;...
11b00 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
11b20 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;.
11b40 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
11b60 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,.%..
11b80 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-
11ba0 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
11bc0 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
11be0 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],.
11c00 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,.:)';
11c20 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,.
11c40 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
11c60 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
11c80 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
11ca0 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''.
11cc0 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
11ce0 28 79 73 3a 79 65 2c 20 78 73 3a 78 65 29 3b 0a 0a 65 6e 64 00 00 00 00 00 00 00 00 00 00 00 00 (ys:ye,.xs:xe);..end............
11d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11e00 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
11e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11e60 00 00 00 00 20 20 20 36 34 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
11e80 20 20 20 20 36 36 35 20 20 36 37 36 33 30 37 30 32 33 32 20 20 31 31 37 33 33 00 20 00 00 00 00 ....665..6763070232..11733......
11ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12000 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
12020 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
12040 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.
12060 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
12080 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.:.
120a0 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
120c0 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
120e0 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
12100 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
12120 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];...
12140 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
12160 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_
12180 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(
121a0 33 2c 31 29 2a 73 71 75 61 72 65 28 33 2c 3a 29 29 3b 0a 0a 0a 00 00 00 00 00 00 00 00 00 00 00 3,1)*square(3,:));..............
121c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
121e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12200 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.......
12220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12260 00 00 00 00 20 20 20 36 34 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
12280 20 20 31 30 35 32 35 20 20 36 37 36 33 30 37 30 32 33 33 20 20 31 30 36 32 34 00 20 00 00 00 00 ..10525..6763070233..10624......
122a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
122c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
122e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
123a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
123c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
123e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12400 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
12420 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
12440 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
12460 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
12480 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.
124a0 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.
124c0 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
124e0 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
12500 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
12520 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.
12540 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
12560 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
12580 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.%%..%
125a0 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
125c0 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
125e0 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
12600 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
12620 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
12640 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
12660 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
12680 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=
126a0 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)
126c0 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....
126e0 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.<.
12700 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);...........
12720 20 20 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 ...dRdin.=.[0.0.0;.........0.0.1
12740 3b 0a 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 ;.........0.-1.0;.........0.0.-1
12760 3b 0a 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 ;.........0.0.0;.........1.0.0;.
12780 09 20 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 09 ........0.1.0;.........-1.0.0;..
127a0 20 20 20 20 20 20 20 30 20 30 20 30 5d 3b 0a 09 20 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 .......0.0.0];.......else.......
127c0 69 66 20 6e 3d 3d 6c 65 6e 67 74 68 28 69 6e 29 20 20 69 6e 3d 69 6e 27 3b 20 65 6e 64 3b 20 09 if.n==length(in)..in=in';.end;..
127e0 25 25 20 6d 61 6b 65 20 69 74 20 61 20 63 6f 6c 75 6d 6e 20 76 65 63 2e 20 69 66 20 6e 65 63 65 %%.make.it.a.column.vec..if.nece
12800 73 73 2e 0a 09 20 0a 09 20 25 6d 33 20 3d 20 5b 69 6e 2c 74 68 65 74 61 5d 0a 0a 09 20 64 6d 33 ss.......%m3.=.[in,theta]....dm3
12820 64 69 6e 20 3d 20 5b 65 79 65 28 33 29 3b 69 6e 27 2f 74 68 65 74 61 5d 3b 0a 0a 09 20 6f 6d 65 din.=.[eye(3);in'/theta];....ome
12840 67 61 20 3d 20 69 6e 2f 74 68 65 74 61 3b 0a 09 20 0a 09 20 25 6d 32 20 3d 20 5b 6f 6d 65 67 61 ga.=.in/theta;......%m2.=.[omega
12860 3b 74 68 65 74 61 5d 0a 09 20 0a 09 20 64 6d 32 64 6d 33 20 3d 20 5b 65 79 65 28 33 29 2f 74 68 ;theta]......dm2dm3.=.[eye(3)/th
12880 65 74 61 20 2d 69 6e 2f 74 68 65 74 61 5e 32 3b 20 7a 65 72 6f 73 28 31 2c 33 29 20 31 5d 3b 0a eta.-in/theta^2;.zeros(1,3).1];.
128a0 09 20 0a 09 20 61 6c 70 68 61 20 3d 20 63 6f 73 28 74 68 65 74 61 29 3b 0a 09 20 62 65 74 61 20 .....alpha.=.cos(theta);...beta.
128c0 3d 20 73 69 6e 28 74 68 65 74 61 29 3b 0a 09 20 67 61 6d 6d 61 20 3d 20 31 2d 63 6f 73 28 74 68 =.sin(theta);...gamma.=.1-cos(th
128e0 65 74 61 29 3b 0a 09 20 6f 6d 65 67 61 76 3d 5b 5b 30 20 2d 6f 6d 65 67 61 28 33 29 20 6f 6d 65 eta);...omegav=[[0.-omega(3).ome
12900 67 61 28 32 29 5d 3b 5b 6f 6d 65 67 61 28 33 29 20 30 20 2d 6f 6d 65 67 61 28 31 29 5d 3b 5b 2d ga(2)];[omega(3).0.-omega(1)];[-
12920 6f 6d 65 67 61 28 32 29 20 6f 6d 65 67 61 28 31 29 20 30 20 5d 5d 3b 0a 09 20 41 20 3d 20 6f 6d omega(2).omega(1).0.]];...A.=.om
12940 65 67 61 2a 6f 6d 65 67 61 27 3b 0a 09 20 0a 09 20 25 6d 31 20 3d 20 5b 61 6c 70 68 61 3b 62 65 ega*omega';......%m1.=.[alpha;be
12960 74 61 3b 67 61 6d 6d 61 3b 6f 6d 65 67 61 76 3b 41 5d 3b 0a 09 20 0a 09 20 64 6d 31 64 6d 32 20 ta;gamma;omegav;A];......dm1dm2.
12980 3d 20 7a 65 72 6f 73 28 32 31 2c 34 29 3b 0a 09 20 64 6d 31 64 6d 32 28 31 2c 34 29 20 3d 20 2d =.zeros(21,4);...dm1dm2(1,4).=.-
129a0 73 69 6e 28 74 68 65 74 61 29 3b 0a 09 20 64 6d 31 64 6d 32 28 32 2c 34 29 20 3d 20 63 6f 73 28 sin(theta);...dm1dm2(2,4).=.cos(
129c0 74 68 65 74 61 29 3b 0a 09 20 64 6d 31 64 6d 32 28 33 2c 34 29 20 3d 20 73 69 6e 28 74 68 65 74 theta);...dm1dm2(3,4).=.sin(thet
129e0 61 29 3b 0a 09 20 64 6d 31 64 6d 32 28 34 3a 31 32 2c 31 3a 33 29 20 3d 20 5b 30 20 30 20 30 20 a);...dm1dm2(4:12,1:3).=.[0.0.0.
12a00 30 20 30 20 31 20 30 20 2d 31 20 30 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0.0.1.0.-1.0;...................
12a20 20 20 20 20 30 20 30 20 2d 31 20 30 20 30 20 30 20 31 20 30 20 30 3b 0a 09 09 09 20 20 20 20 20 ....0.0.-1.0.0.0.1.0.0;.........
12a40 30 20 31 20 30 20 2d 31 20 30 20 30 20 30 20 30 20 30 5d 27 3b 0a 09 09 20 20 20 20 20 20 20 0a 0.1.0.-1.0.0.0.0.0]';...........
12a60 20 20 20 20 20 20 20 20 20 77 31 20 3d 20 6f 6d 65 67 61 28 31 29 3b 0a 09 20 77 32 20 3d 20 6f .........w1.=.omega(1);...w2.=.o
12a80 6d 65 67 61 28 32 29 3b 0a 09 20 77 33 20 3d 20 6f 6d 65 67 61 28 33 29 3b 0a 09 20 0a 09 20 64 mega(2);...w3.=.omega(3);......d
12aa0 6d 31 64 6d 32 28 31 33 3a 32 31 2c 31 29 20 3d 20 5b 32 2a 77 31 3b 77 32 3b 77 33 3b 77 32 3b m1dm2(13:21,1).=.[2*w1;w2;w3;w2;
12ac0 30 3b 30 3b 77 33 3b 30 3b 30 5d 3b 0a 09 20 64 6d 31 64 6d 32 28 31 33 3a 20 32 31 2c 32 29 20 0;0;w3;0;0];...dm1dm2(13:.21,2).
12ae0 3d 20 5b 30 3b 77 31 3b 30 3b 77 31 3b 32 2a 77 32 3b 77 33 3b 30 3b 77 33 3b 30 5d 3b 0a 09 20 =.[0;w1;0;w1;2*w2;w3;0;w3;0];...
12b00 64 6d 31 64 6d 32 28 31 33 3a 32 31 2c 33 29 20 3d 20 5b 30 3b 30 3b 77 31 3b 30 3b 30 3b 77 32 dm1dm2(13:21,3).=.[0;0;w1;0;0;w2
12b20 3b 77 31 3b 77 32 3b 32 2a 77 33 5d 3b 0a 09 20 0a 09 20 52 20 3d 20 65 79 65 28 33 29 2a 61 6c ;w1;w2;2*w3];......R.=.eye(3)*al
12b40 70 68 61 20 2b 20 6f 6d 65 67 61 76 2a 62 65 74 61 20 2b 20 41 2a 67 61 6d 6d 61 3b 0a 09 20 0a pha.+.omegav*beta.+.A*gamma;....
12b60 09 20 64 52 64 6d 31 20 3d 20 7a 65 72 6f 73 28 39 2c 32 31 29 3b 0a 09 20 0a 09 20 64 52 64 6d ..dRdm1.=.zeros(9,21);......dRdm
12b80 31 28 5b 31 20 35 20 39 5d 2c 31 29 20 3d 20 6f 6e 65 73 28 33 2c 31 29 3b 0a 09 20 64 52 64 6d 1([1.5.9],1).=.ones(3,1);...dRdm
12ba0 31 28 3a 2c 32 29 20 3d 20 6f 6d 65 67 61 76 28 3a 29 3b 0a 09 20 64 52 64 6d 31 28 3a 2c 34 3a 1(:,2).=.omegav(:);...dRdm1(:,4:
12bc0 31 32 29 20 3d 20 62 65 74 61 2a 65 79 65 28 39 29 3b 0a 09 20 64 52 64 6d 31 28 3a 2c 33 29 20 12).=.beta*eye(9);...dRdm1(:,3).
12be0 3d 20 41 28 3a 29 3b 0a 09 20 64 52 64 6d 31 28 3a 2c 31 33 3a 32 31 29 20 3d 20 67 61 6d 6d 61 =.A(:);...dRdm1(:,13:21).=.gamma
12c00 2a 65 79 65 28 39 29 3b 0a 09 20 0a 09 20 64 52 64 69 6e 20 3d 20 64 52 64 6d 31 20 2a 20 64 6d *eye(9);......dRdin.=.dRdm1.*.dm
12c20 31 64 6d 32 20 2a 20 64 6d 32 64 6d 33 20 2a 20 64 6d 33 64 69 6e 3b 0a 09 20 0a 09 20 0a 20 20 1dm2.*.dm2dm3.*.dm3din;.........
12c40 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 6f 75 74 20 3d 20 52 3b 0a 20 20 20 20 20 20 64 6f ....end;.......out.=.R;.......do
12c60 75 74 20 3d 20 64 52 64 69 6e 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 25 25 20 69 74 20 69 ut.=.dRdin;..............%%.it.i
12c80 73 20 70 72 6f 62 2e 20 61 20 72 6f 74 20 6d 61 74 72 2e 0a 20 20 20 65 6c 73 65 69 66 20 28 28 s.prob..a.rot.matr.....elseif.((
12ca0 6d 3d 3d 6e 29 20 26 20 28 6d 3d 3d 33 29 20 26 20 28 6e 6f 72 6d 28 69 6e 27 20 2a 20 69 6e 20 m==n).&.(m==3).&.(norm(in'.*.in.
12cc0 2d 20 65 79 65 28 33 29 29 20 3c 20 62 69 67 65 70 73 29 2e 2e 2e 0a 09 20 20 20 20 26 20 28 61 -.eye(3)).<.bigeps).........&.(a
12ce0 62 73 28 64 65 74 28 69 6e 29 2d 31 29 20 3c 20 62 69 67 65 70 73 29 29 0a 20 20 20 20 20 20 52 bs(det(in)-1).<.bigeps)).......R
12d00 20 3d 20 69 6e 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 0a 20 20 20 20 .=.in;..........................
12d20 20 20 74 72 20 3d 20 28 74 72 61 63 65 28 52 29 2d 31 29 2f 32 3b 0a 20 20 20 20 20 20 64 74 72 ..tr.=.(trace(R)-1)/2;.......dtr
12d40 64 52 20 3d 20 5b 31 20 30 20 30 20 30 20 31 20 30 20 30 20 30 20 31 5d 2f 32 3b 0a 20 20 20 20 dR.=.[1.0.0.0.1.0.0.0.1]/2;.....
12d60 20 20 74 68 65 74 61 20 3d 20 72 65 61 6c 28 61 63 6f 73 28 74 72 29 29 3b 0a 20 20 20 20 20 20 ..theta.=.real(acos(tr));.......
12d80 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 69 66 20 73 69 6e 28 74 68 65 74 61 29 20 3e 3d 20 31 ..............if.sin(theta).>=.1
12da0 65 2d 35 2c 0a 09 20 0a 09 20 64 74 68 65 74 61 64 74 72 20 3d 20 2d 31 2f 73 71 72 74 28 31 2d e-5,......dthetadtr.=.-1/sqrt(1-
12dc0 74 72 5e 32 29 3b 0a 09 20 0a 09 20 64 74 68 65 74 61 64 52 20 3d 20 64 74 68 65 74 61 64 74 72 tr^2);......dthetadR.=.dthetadtr
12de0 20 2a 20 64 74 72 64 52 3b 0a 09 20 25 20 76 61 72 31 20 3d 20 5b 76 74 68 3b 74 68 65 74 61 5d .*.dtrdR;...%.var1.=.[vth;theta]
12e00 3b 0a 09 20 76 74 68 20 3d 20 31 2f 28 32 2a 73 69 6e 28 74 68 65 74 61 29 29 3b 0a 09 20 64 76 ;...vth.=.1/(2*sin(theta));...dv
12e20 74 68 64 74 68 65 74 61 20 3d 20 2d 76 74 68 2a 63 6f 73 28 74 68 65 74 61 29 2f 73 69 6e 28 74 thdtheta.=.-vth*cos(theta)/sin(t
12e40 68 65 74 61 29 3b 0a 09 20 64 76 61 72 31 64 74 68 65 74 61 20 3d 20 5b 64 76 74 68 64 74 68 65 heta);...dvar1dtheta.=.[dvthdthe
12e60 74 61 3b 31 5d 3b 0a 09 20 0a 09 20 64 76 61 72 31 64 52 20 3d 20 20 64 76 61 72 31 64 74 68 65 ta;1];......dvar1dR.=..dvar1dthe
12e80 74 61 20 2a 20 64 74 68 65 74 61 64 52 3b 0a 09 20 0a 09 20 0a 09 20 6f 6d 31 20 3d 20 5b 52 28 ta.*.dthetadR;.........om1.=.[R(
12ea0 33 2c 32 29 2d 52 28 32 2c 33 29 2c 20 52 28 31 2c 33 29 2d 52 28 33 2c 31 29 2c 20 52 28 32 2c 3,2)-R(2,3),.R(1,3)-R(3,1),.R(2,
12ec0 31 29 2d 52 28 31 2c 32 29 5d 27 3b 0a 09 20 0a 09 20 64 6f 6d 31 64 52 20 3d 20 5b 30 20 30 20 1)-R(1,2)]';......dom1dR.=.[0.0.
12ee0 30 20 30 20 30 20 31 20 30 20 2d 31 20 30 3b 0a 09 20 20 20 20 20 20 20 30 20 30 20 2d 31 20 30 0.0.0.1.0.-1.0;.........0.0.-1.0
12f00 20 30 20 30 20 31 20 30 20 30 3b 0a 09 20 20 20 20 20 20 20 30 20 31 20 30 20 2d 31 20 30 20 30 .0.0.1.0.0;.........0.1.0.-1.0.0
12f20 20 30 20 30 20 30 5d 3b 0a 09 20 0a 09 20 25 20 76 61 72 20 3d 20 5b 6f 6d 31 3b 76 74 68 3b 74 .0.0.0];......%.var.=.[om1;vth;t
12f40 68 65 74 61 5d 3b 0a 09 20 64 76 61 72 64 52 20 3d 20 5b 64 6f 6d 31 64 52 3b 64 76 61 72 31 64 heta];...dvardR.=.[dom1dR;dvar1d
12f60 52 5d 3b 0a 09 20 0a 09 20 25 20 76 61 72 32 20 3d 20 5b 6f 6d 3b 74 68 65 74 61 5d 3b 0a 09 20 R];......%.var2.=.[om;theta];...
12f80 6f 6d 20 3d 20 76 74 68 2a 6f 6d 31 3b 0a 09 20 64 6f 6d 64 76 61 72 20 3d 20 5b 76 74 68 2a 65 om.=.vth*om1;...domdvar.=.[vth*e
12fa0 79 65 28 33 29 20 6f 6d 31 20 7a 65 72 6f 73 28 33 2c 31 29 5d 3b 0a 09 20 64 74 68 65 74 61 64 ye(3).om1.zeros(3,1)];...dthetad
12fc0 76 61 72 20 3d 20 5b 30 20 30 20 30 20 30 20 31 5d 3b 0a 09 20 64 76 61 72 32 64 76 61 72 20 3d var.=.[0.0.0.0.1];...dvar2dvar.=
12fe0 20 5b 64 6f 6d 64 76 61 72 3b 64 74 68 65 74 61 64 76 61 72 5d 3b 0a 09 20 0a 09 20 0a 09 20 6f .[domdvar;dthetadvar];.........o
13000 75 74 20 3d 20 6f 6d 2a 74 68 65 74 61 3b 0a 09 20 64 6f 6d 65 67 61 64 76 61 72 32 20 3d 20 5b ut.=.om*theta;...domegadvar2.=.[
13020 74 68 65 74 61 2a 65 79 65 28 33 29 20 6f 6d 5d 3b 0a 09 20 0a 09 20 64 6f 75 74 20 3d 20 64 6f theta*eye(3).om];......dout.=.do
13040 6d 65 67 61 64 76 61 72 32 20 2a 20 64 76 61 72 32 64 76 61 72 20 2a 20 64 76 61 72 64 52 3b 0a megadvar2.*.dvar2dvar.*.dvardR;.
13060 09 20 0a 09 20 0a 20 20 20 20 20 20 65 6c 73 65 0a 09 20 69 66 20 74 72 20 3e 20 30 3b 20 09 09 ............else...if.tr.>.0;...
13080 09 25 20 63 61 73 65 20 6e 6f 72 6d 28 6f 6d 29 3d 30 3b 0a 09 20 20 20 20 0a 09 20 20 20 20 6f .%.case.norm(om)=0;............o
130a0 75 74 20 3d 20 5b 30 20 30 20 30 5d 27 3b 0a 09 20 20 20 20 0a 09 20 20 20 20 64 6f 75 74 20 3d ut.=.[0.0.0]';............dout.=
130c0 20 5b 30 20 30 20 30 20 30 20 30 20 31 2f 32 20 30 20 2d 31 2f 32 20 30 3b 0a 09 09 20 20 30 20 .[0.0.0.0.0.1/2.0.-1/2.0;.....0.
130e0 30 20 2d 31 2f 32 20 30 20 30 20 30 20 31 2f 32 20 30 20 30 3b 0a 09 09 20 20 30 20 31 2f 32 20 0.-1/2.0.0.0.1/2.0.0;.....0.1/2.
13100 30 20 2d 31 2f 32 20 30 20 30 20 30 20 30 20 30 5d 3b 0a 09 20 65 6c 73 65 20 09 09 09 09 25 20 0.-1/2.0.0.0.0.0];...else.....%.
13120 63 61 73 65 20 6e 6f 72 6d 28 6f 6d 29 3d 70 69 3b 20 25 25 20 66 69 78 65 64 20 41 70 72 69 6c case.norm(om)=pi;.%%.fixed.April
13140 20 36 74 68 0a 09 20 20 20 20 0a 09 20 20 20 20 0a 09 20 20 20 20 6f 75 74 20 3d 20 74 68 65 74 .6th..................out.=.thet
13160 61 20 2a 20 28 73 71 72 74 28 28 64 69 61 67 28 52 29 2b 31 29 2f 32 29 2e 2a 5b 31 3b 32 2a 28 a.*.(sqrt((diag(R)+1)/2).*[1;2*(
13180 52 28 31 2c 32 3a 33 29 3e 3d 30 29 27 2d 31 5d 29 3b 0a 09 20 20 20 20 25 6b 65 79 62 6f 61 72 R(1,2:3)>=0)'-1]);......%keyboar
131a0 64 3b 0a 09 20 20 20 20 0a 09 20 20 20 20 69 66 20 6e 61 72 67 6f 75 74 20 3e 20 31 2c 0a 09 20 d;............if.nargout.>.1,...
131c0 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 57 41 52 4e 49 4e 47 21 21 21 21 20 4a 61 63 ......fprintf(1,'WARNING!!!!.Jac
131e0 6f 62 69 61 6e 20 64 6f 6d 64 52 20 75 6e 64 65 66 69 6e 65 64 21 21 21 5c 6e 27 29 3b 0a 09 09 obian.domdR.undefined!!!\n');...
13200 20 64 6f 75 74 20 3d 20 5b 5d 3b 0a 09 20 20 20 20 65 6e 64 3b 0a 09 20 65 6e 64 3b 20 0a 20 20 .dout.=.[];......end;...end;....
13220 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 72 ....end;...........else.......er
13240 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 6e ror('Neither.a.rotation.matrix.n
13260 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 64 or.a.rotation.vector.were.provid
13280 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 20 ed');....end;..return;..%%.test.
132a0 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 20 of.the.Jacobians:..%%%%.TEST.OF.
132c0 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 61 dRdom:.om.=.randn(3,1);.dom.=.ra
132e0 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 6f ndn(3,1)/1000000;..[R1,dR1].=.ro
13300 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 64 drigues(om);.R2.=.rodrigues(om+d
13320 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 64 om);..R2a.=.R1.+.reshape(dR1.*.d
13340 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 6e om,3,3);..gain.=.norm(R2.-.R1)/n
13360 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 52 orm(R2.-.R2a)..%%%.TEST.OF.dOmdR
13380 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 73 :.om.=.randn(3,1);.R.=.rodrigues
133a0 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 52 (om);.dom.=.randn(3,1)/10000;.dR
133c0 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 2c .=.rodrigues(om+dom).-.R;..[omc,
133e0 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 72 domdR].=.rodrigues(R);.[om2].=.r
13400 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 20 odrigues(R+dR);..om_app.=.omc.+.
13420 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 20 domdR*dR(:);..gain.=.norm(om2.-.
13440 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 54 omc)/norm(om2.-.om_app)...%%%.OT
13460 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 72 HER.BUG:.(FIXED.NOW!!!)..omu.=.r
13480 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 75 andn(3,1);....omu.=.omu/norm(omu
134a0 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 72 ).om.=.pi*omu;.........[R,dR]=.r
134c0 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 28 odrigues(om);.[om2].=.rodrigues(
134e0 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 49 R);.[om.om2]..%%%.NORMAL.OPERATI
13500 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 52 ON..om.=.randn(3,1);..........[R
13520 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 64 ,dR]=.rodrigues(om);.[om2].=.rod
13540 72 69 67 75 65 73 28 52 29 3b 0a 5b 6f 6d 20 6f 6d 32 5d 0a 0a 00 00 00 00 00 00 00 00 00 00 00 rigues(R);.[om.om2].............
13560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
135a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
135c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
135e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13600 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
13620 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...........................
13640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13660 00 00 00 00 20 20 20 36 34 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
13680 20 20 20 31 37 32 35 20 20 36 37 36 33 30 37 30 32 33 33 20 20 31 33 32 32 37 00 20 00 00 00 00 ...1725..6763070233..13227......
136a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
136c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
136e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
137a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
137c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
137e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13800 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;.......
13820 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:.'
13840 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']);......
13860 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,...
13880 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
138a0 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
138c0 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;....
138e0 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
13900 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
13920 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
13940 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
13960 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
13980 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(
139a0 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);
139c0 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
139e0 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)*
13a00 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;
13a20 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);
13a40 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);
13a60 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
13a80 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.
13aa0 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),
13ac0 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
13ae0 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
13b00 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
13b20 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
13b40 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
13b60 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,
13b80 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
13ba0 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);...
13bc0 0a 09 20 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 00 00 00 00 00 00 00 00 00 00 00 ..........end;..................
13be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13c00 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
13c20 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............................
13c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13c60 00 00 00 00 20 20 20 36 34 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
13c80 20 20 20 31 30 33 32 20 20 36 37 36 33 30 37 30 32 33 34 20 20 31 32 37 36 33 00 20 00 00 00 00 ...1032..6763070234..12763......
13ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13e00 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
13e20 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
13e40 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;..%%%
13e60 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
13e80 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
13ea0 74 72 61 63 74 5f 70 61 72 61 6d 65 74 65 72 73 3b 0a 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c tract_parameters;...fprintf(1,'\
13ec0 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 20 70 n\nCalibration.results.without.p
13ee0 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 29 rincipal.point.estimation:\n\n')
13f00 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 66 ;.fprintf(1,'Focal.Length:.....f
13f20 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 72 c.=.[.%3.5f...%3.5f]\n',fc);.fpr
13f40 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 5b intf(1,'Principal.point:..cc.=.[
13f60 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 28 .%3.5f...%3.5f]\n',cc);.fprintf(
13f80 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 35 1,'Distortion:.......kc.=.[.%3.5
13fa0 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 63 f...%3.5f...%3.5f...%3.5f]\n',kc
13fc0 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 41 );......%%%%%%%%%%%%%%%%%%%%.GRA
13fe0 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 25 PHICAL.OUTPUT.%%%%%%%%%%%%%%%%%%
14000 25 25 25 25 25 25 0a 0a 67 72 61 70 68 6f 75 74 5f 63 61 6c 69 62 3b 0a 0a 0a 72 61 74 69 6f 6e %%%%%%..graphout_calib;...ration
14020 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
14040 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;..%%%
14060 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
14080 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
140a0 74 72 61 63 74 5f 70 61 72 61 6d 65 74 65 72 73 3b 0a 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c tract_parameters;...fprintf(1,'\
140c0 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 20 70 n\nCalibration.results.without.p
140e0 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 29 rincipal.point.estimation:\n\n')
14100 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 66 ;.fprintf(1,'Focal.Length:.....f
14120 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 72 c.=.[.%3.5f...%3.5f]\n',fc);.fpr
14140 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 5b intf(1,'Principal.point:..cc.=.[
14160 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 28 .%3.5f...%3.5f]\n',cc);.fprintf(
14180 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 35 1,'Distortion:.......kc.=.[.%3.5
141a0 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 63 f...%3.5f...%3.5f...%3.5f]\n',kc
141c0 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 41 );......%%%%%%%%%%%%%%%%%%%%.GRA
141e0 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 25 PHICAL.OUTPUT.%%%%%%%%%%%%%%%%%%
14200 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
14220 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..........................
14240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14260 00 00 00 00 20 20 20 36 34 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
14280 20 20 20 31 30 33 31 20 20 36 37 36 33 30 37 30 32 33 35 20 20 31 33 33 32 32 00 20 00 00 00 00 ...1031..6763070235..13322......
142a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
142c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
142e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
143a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
143c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
143e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14400 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
14420 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
14440 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;..%
14460 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
14480 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:..
144a0 65 78 74 72 61 63 74 5f 70 61 72 61 6d 65 74 65 72 73 3b 0a 0a 0a 66 70 72 69 6e 74 66 28 31 2c extract_parameters;...fprintf(1,
144c0 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 70 72 '\n\nCalibration.results.with.pr
144e0 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 29 3b incipal.point.estimation:\n\n');
14500 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 66 63 .fprintf(1,'Focal.Length:.....fc
14520 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 72 69 .=.[.%3.5f...%3.5f]\n',fc);.fpri
14540 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 5b 20 ntf(1,'Principal.point:..cc.=.[.
14560 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 28 31 %3.5f...%3.5f]\n',cc);.fprintf(1
14580 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 35 66 ,'Distortion:.......kc.=.[.%3.5f
145a0 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 63 29 ...%3.5f...%3.5f...%3.5f]\n',kc)
145c0 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 41 50 ;......%%%%%%%%%%%%%%%%%%%%.GRAP
145e0 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 25 25 HICAL.OUTPUT.%%%%%%%%%%%%%%%%%%%
14600 25 25 25 25 25 0a 0a 67 72 61 70 68 6f 75 74 5f 63 61 6c 69 62 3b 0a 0a 0a 00 00 00 00 00 00 00 %%%%%..graphout_calib;..........
14620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
146a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
146c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
146e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
147a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
147c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
147e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14800 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.....
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 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
14880 20 20 20 31 35 36 37 20 20 36 37 36 33 30 37 30 32 33 35 20 20 31 31 30 30 35 00 20 00 00 00 00 ...1567..6763070235..11005......
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 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
14a20 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
14a40 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
14a60 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
14a80 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
14aa0 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
14ac0 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
14ae0 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:.
14b00 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.%
14b20 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
14b40 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....
14b60 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(:,
14b80 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(
14ba0 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;.
14bc0 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
14be0 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.=
14c00 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)
14c20 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
14c40 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
14c60 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);..
14c80 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.=
14ca0 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,
14cc0 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
14ce0 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
14d00 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
14d20 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
14d40 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.-
14d60 20 58 31 3b 0a 75 5f 76 65 72 74 20 3d 20 58 34 20 2d 20 58 31 3b 0a 00 00 00 00 00 00 00 00 00 .X1;.u_vert.=.X4.-.X1;..........
14d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14e00 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........
14e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14e60 00 00 00 00 20 20 20 36 34 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
14e80 20 20 20 34 35 31 32 20 20 36 37 36 33 30 37 30 32 33 36 20 20 31 30 34 34 33 00 20 00 00 00 00 ...4512..6763070236..10443......
14ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15000 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
15020 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
15040 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..%..
15060 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
15080 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
150a0 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
150c0 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..%
150e0 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
15100 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
15120 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
15140 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
15160 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
15180 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,.
151a0 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
151c0 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
151e0 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
15200 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
15220 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
15240 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.
15260 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
15280 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,......%...
152a0 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,.
152c0 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],
152e0 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');........
15300 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';......
15320 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
15340 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,
15360 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
15380 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');.
153a0 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);.
153c0 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
153e0 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];.......
15400 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
15420 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
15440 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
15460 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.
15480 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
154a0 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.=
154c0 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
154e0 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');....
15500 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')
15520 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
15540 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
15560 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*
15580 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);.
155a0 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
155c0 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
155e0 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(
15600 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;
15620 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');....
15640 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(
15660 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
15680 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');
156a0 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
156c0 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,
156e0 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_
15700 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
15720 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
15740 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];.......
15760 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:
15780 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
157a0 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;..
157c0 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
157e0 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
15800 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
15820 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';.
15840 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.
15860 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
15880 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
158a0 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
158c0 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)'
158e0 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
15900 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.
15920 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'
15940 27 2e 27 29 3b 0a 65 6e 64 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '.');.end.......................
15960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
159a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
159c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
159e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15a00 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.........
15a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15a60 00 00 00 00 20 20 20 36 34 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
15a80 20 20 20 20 31 30 30 20 20 36 37 36 33 30 37 31 35 31 35 20 20 31 30 32 35 33 00 20 00 00 00 00 ....100..6763071515..10253......
15aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15c00 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
15c20 78 3a 0a 0a 63 61 6c 69 62 5f 67 75 69 3b 0a 0a 70 61 74 68 28 70 77 64 2c 70 61 74 68 29 3b 0a x:..calib_gui;..path(pwd,path);.
15c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15e00 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 52 45 41 44 4d 45 2e 74 78 74 00 00 00 00 00 00 00 00 TOOLBOX_calib/README.txt........
15e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15e60 00 00 00 00 20 20 20 36 34 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
15e80 20 20 20 36 34 36 31 20 20 36 37 36 33 32 36 35 32 32 35 20 20 31 30 31 33 34 00 20 00 00 00 00 ...6461..6763265225..10134......
15ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16000 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 2d 2d 2d 2d *-------------------------------
16020 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 --------------------------------
16040 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2a 0a 7c 20 20 20 20 43 ------------------------*.|....C
16060 61 6d 65 72 61 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 74 6f 6f 6c 62 6f 78 20 66 72 6f 6d 20 6d amera.calibration.toolbox.from.m
16080 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 70 61 74 74 65 ultiple.images.of.a.planar.patte
160a0 72 6e 20 28 69 6e 20 4d 61 74 6c 61 62 29 20 20 20 20 7c 0a 7c 20 20 20 20 20 20 20 20 20 20 20 rn.(in.Matlab)....|.|...........
160c0 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 42 6f 75 67 75 .............(c).Jean-Yves.Bougu
160e0 65 74 20 2d 20 41 75 67 75 73 74 20 31 39 39 39 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 et.-.August.1999................
16100 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ............|.|.................
16120 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 ................................
16140 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 ................................
16160 20 20 20 20 20 20 7c 0a 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ......|.|.......................
16180 68 74 74 70 3a 2f 2f 77 77 77 2e 76 69 73 69 6f 6e 2e 63 61 6c 74 65 63 68 2e 65 64 75 2f 62 6f http://www.vision.caltech.edu/bo
161a0 75 67 75 65 74 6a 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 uguetj..........................
161c0 7c 0a 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 2d 2d |.*-----------------------------
161e0 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 --------------------------------
16200 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 2a 0a 0a 0a 0a 47 --------------------------*....G
16220 45 4e 45 52 41 4c 20 4e 4f 54 49 43 45 3a 20 54 68 65 20 4d 61 74 6c 61 62 20 4f 70 74 69 6d 69 ENERAL.NOTICE:.The.Matlab.Optimi
16240 7a 61 74 69 6f 6e 20 74 6f 6f 6c 62 6f 78 20 69 73 20 72 65 71 75 69 72 65 64 20 74 6f 20 75 73 zation.toolbox.is.required.to.us
16260 65 20 74 68 61 74 20 74 6f 6f 6c 62 6f 78 2e 0a 0a 0a 0a 49 4e 53 54 52 55 43 54 49 4f 4e 53 3a e.that.toolbox.....INSTRUCTIONS:
16280 0a 0a 31 2d 20 52 75 6e 20 6d 61 74 6c 61 62 20 75 6e 64 65 72 20 54 4f 4f 4c 42 4f 58 5f 63 61 ..1-.Run.matlab.under.TOOLBOX_ca
162a0 6c 69 62 2e 0a 20 20 20 55 6e 64 65 72 20 57 69 6e 64 6f 77 73 20 65 6e 76 69 72 6f 6e 6d 65 6e lib.....Under.Windows.environmen
162c0 74 2c 20 61 64 64 20 74 68 65 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 64 69 72 65 63 74 6f 72 79 t,.add.the.calibration.directory
162e0 20 70 61 74 68 0a 20 20 20 74 6f 20 74 68 65 20 6d 61 69 6e 20 6d 61 74 6c 61 62 20 70 61 74 68 .path....to.the.main.matlab.path
16300 20 28 74 6f 20 68 61 76 65 20 61 63 63 65 73 73 20 74 6f 20 61 6c 6c 20 74 68 65 20 66 75 6e 63 .(to.have.access.to.all.the.func
16320 74 69 6f 6e 73 29 2e 0a 0a 32 2d 20 54 6f 20 6c 61 75 6e 63 68 20 74 68 65 20 6d 61 69 6e 20 63 tions)...2-.To.launch.the.main.c
16340 61 6d 65 72 61 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 74 6f 6f 6c 62 6f 78 20 72 75 6e 20 75 6e amera.calibration.toolbox.run.un
16360 64 65 72 20 4d 61 74 6c 61 62 3a 0a 0a 20 20 20 63 61 6c 69 62 5f 67 75 69 3b 0a 0a 20 20 20 41 der.Matlab:.....calib_gui;.....A
16380 20 6c 69 73 74 20 6f 66 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 69 73 20 61 6c 73 6f 20 67 69 .list.of.instructions.is.also.gi
163a0 76 65 6e 2e 0a 0a 33 2d 20 47 6f 20 74 6f 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 74 68 61 ven...3-.Go.to.the.directory.tha
163c0 74 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 69 6d 61 67 65 t.contains.the.calibration.image
163e0 73 2c 20 61 6e 64 0a 20 20 20 66 6f 6c 6c 6f 77 20 74 68 65 20 69 6e 73 74 72 75 63 74 69 6f 6e s,.and....follow.the.instruction
16400 73 2e 0a 0a 20 20 20 4e 4f 54 45 3a 20 54 68 65 20 69 6d 61 67 65 73 20 6d 75 73 74 20 62 65 20 s......NOTE:.The.images.must.be.
16420 69 6e 20 65 69 74 68 65 72 20 66 6f 72 6d 61 74 3a 20 72 61 73 2c 20 62 6d 70 20 6f 72 20 74 69 in.either.format:.ras,.bmp.or.ti
16440 66 2e 0a 20 20 20 20 20 20 20 20 20 54 68 65 20 69 6d 61 67 65 20 66 69 6c 65 20 6e 61 6d 65 73 f...........The.image.file.names
16460 20 6d 75 73 74 20 73 74 61 72 74 20 77 69 74 68 20 61 20 63 6f 6d 6d 6f 6e 20 62 61 73 65 6e 61 .must.start.with.a.common.basena
16480 6d 65 2c 0a 20 20 20 20 20 20 20 20 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 20 6e 75 6d 62 65 me,..........followed.by.a.numbe
164a0 72 2c 20 61 6e 64 20 74 68 65 20 66 69 6c 65 20 65 78 74 65 6e 73 69 6f 6e 20 28 27 72 61 73 27 r,.and.the.file.extension.('ras'
164c0 2c 20 27 62 6d 70 27 0a 20 20 20 20 20 20 20 20 20 6f 72 20 27 74 69 66 27 29 2e 0a 0a 20 20 20 ,.'bmp'..........or.'tif')......
164e0 45 78 61 6d 70 6c 65 3a 20 49 66 20 31 35 20 74 69 66 20 69 6d 61 67 65 73 20 61 72 65 20 75 73 Example:.If.15.tif.images.are.us
16500 65 64 20 66 6f 72 20 63 61 6c 69 62 72 61 74 69 6f 6e 2c 20 77 69 74 68 20 62 61 73 65 6e 61 6d ed.for.calibration,.with.basenam
16520 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 27 63 61 6d 65 72 61 5f 63 61 6c 69 62 27 2c 20 74 68 e.............'camera_calib',.th
16540 65 6e 20 74 68 65 20 66 69 6c 65 20 6e 61 6d 65 73 20 6d 61 79 20 62 65 3a 0a 0a 20 20 20 20 20 en.the.file.names.may.be:.......
16560 20 20 20 20 20 20 20 63 61 6d 65 72 61 5f 63 61 6c 69 62 31 2e 74 69 66 0a 20 20 20 20 20 20 20 .......camera_calib1.tif........
16580 20 20 20 20 20 63 61 6d 65 72 61 5f 63 61 6c 69 62 32 2e 74 69 66 0a 20 20 20 20 20 20 20 20 20 .....camera_calib2.tif..........
165a0 20 20 20 63 61 6d 65 72 61 5f 63 61 6c 69 62 33 2e 74 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 ...camera_calib3.tif............
165c0 20 63 61 6d 65 72 61 5f 63 61 6c 69 62 34 2e 74 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 .camera_calib4.tif.............c
165e0 61 6d 65 72 61 5f 63 61 6c 69 62 35 2e 74 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6d amera_calib5.tif.............cam
16600 65 72 61 5f 63 61 6c 69 62 36 2e 74 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6d 65 72 era_calib6.tif.............camer
16620 61 5f 63 61 6c 69 62 37 2e 74 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6d 65 72 61 5f a_calib7.tif.............camera_
16640 63 61 6c 69 62 38 2e 74 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6d 65 72 61 5f 63 61 calib8.tif.............camera_ca
16660 6c 69 62 39 2e 74 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6d 65 72 61 5f 63 61 6c 69 lib9.tif.............camera_cali
16680 62 31 30 2e 74 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6d 65 72 61 5f 63 61 6c 69 62 b10.tif.............camera_calib
166a0 31 31 2e 74 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6d 65 72 61 5f 63 61 6c 69 62 31 11.tif.............camera_calib1
166c0 32 2e 74 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6d 65 72 61 5f 63 61 6c 69 62 31 33 2.tif.............camera_calib13
166e0 2e 74 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6d 65 72 61 5f 63 61 6c 69 62 31 34 2e .tif.............camera_calib14.
16700 74 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6d 65 72 61 5f 63 61 6c 69 62 31 35 2e 74 tif.............camera_calib15.t
16720 69 66 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 68 65 20 66 69 72 73 74 20 69 6d 61 67 65 20 if..............The.first.image.
16740 6e 75 6d 62 65 72 20 6d 61 79 20 62 65 20 61 6e 79 74 68 69 6e 67 20 28 31 2c 20 30 20 6f 72 20 number.may.be.anything.(1,.0.or.
16760 61 6e 79 74 68 69 6e 67 20 65 6c 73 65 29 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 6e 6f 74 anything.else)..............Anot
16780 68 65 72 20 6e 75 6d 62 65 72 69 6e 67 20 6d 61 79 20 62 65 20 75 73 65 64 20 69 66 20 6f 6e 65 her.numbering.may.be.used.if.one
167a0 20 63 68 6f 6f 73 65 73 20 74 6f 20 72 65 73 65 72 76 65 20 61 20 66 69 78 65 64 0a 20 20 20 20 .chooses.to.reserve.a.fixed.....
167c0 20 20 20 20 20 20 20 20 6e 75 6d 62 65 72 20 6f 66 20 63 68 61 72 61 63 74 65 72 20 73 70 61 63 ........number.of.character.spac
167e0 65 73 20 66 6f 72 20 74 68 65 20 6e 75 6d 62 65 72 73 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c es.for.the.numbers..For.example,
16800 20 69 66 20 74 77 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69 78 65 64 20 73 6c 6f 74 73 20 .if.two.............fixed.slots.
16820 61 72 65 20 72 65 73 65 72 76 65 64 20 69 6e 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 63 61 73 are.reserved.in.the.previous.cas
16840 65 2c 20 74 68 65 20 66 69 6c 65 20 6e 61 6d 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 65 e,.the.file.names.............be
16860 63 6f 6d 65 3a 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6d 65 72 61 5f 63 61 6c 69 62 30 come:..............camera_calib0
16880 31 2e 74 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6d 65 72 61 5f 63 61 6c 69 62 30 32 1.tif.............camera_calib02
168a0 2e 74 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6d 65 72 61 5f 63 61 6c 69 62 30 33 2e .tif.............camera_calib03.
168c0 74 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6d 65 72 61 5f 63 61 6c 69 62 30 34 2e 74 tif.............camera_calib04.t
168e0 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6d 65 72 61 5f 63 61 6c 69 62 30 35 2e 74 69 if.............camera_calib05.ti
16900 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6d 65 72 61 5f 63 61 6c 69 62 30 36 2e 74 69 66 f.............camera_calib06.tif
16920 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6d 65 72 61 5f 63 61 6c 69 62 30 37 2e 74 69 66 0a .............camera_calib07.tif.
16940 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6d 65 72 61 5f 63 61 6c 69 62 30 38 2e 74 69 66 0a 20 ............camera_calib08.tif..
16960 20 20 20 20 20 20 20 20 20 20 20 63 61 6d 65 72 61 5f 63 61 6c 69 62 30 39 2e 74 69 66 0a 20 20 ...........camera_calib09.tif...
16980 20 20 20 20 20 20 20 20 20 20 63 61 6d 65 72 61 5f 63 61 6c 69 62 31 30 2e 74 69 66 0a 20 20 20 ..........camera_calib10.tif....
169a0 20 20 20 20 20 20 20 20 20 63 61 6d 65 72 61 5f 63 61 6c 69 62 31 31 2e 74 69 66 0a 20 20 20 20 .........camera_calib11.tif.....
169c0 20 20 20 20 20 20 20 20 63 61 6d 65 72 61 5f 63 61 6c 69 62 31 32 2e 74 69 66 0a 20 20 20 20 20 ........camera_calib12.tif......
169e0 20 20 20 20 20 20 20 63 61 6d 65 72 61 5f 63 61 6c 69 62 31 33 2e 74 69 66 0a 20 20 20 20 20 20 .......camera_calib13.tif.......
16a00 20 20 20 20 20 20 63 61 6d 65 72 61 5f 63 61 6c 69 62 31 34 2e 74 69 66 0a 20 20 20 20 20 20 20 ......camera_calib14.tif........
16a20 20 20 20 20 20 63 61 6d 65 72 61 5f 63 61 6c 69 62 31 35 2e 74 69 66 0a 0a 20 20 20 20 20 20 20 .....camera_calib15.tif.........
16a40 20 20 20 20 20 4d 6f 72 65 20 73 6c 6f 74 73 20 6d 61 79 20 62 65 20 75 73 65 64 20 61 73 20 77 .....More.slots.may.be.used.as.w
16a60 65 6c 6c 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 ell..For.example,.the.following.
16a80 66 69 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65 73 20 77 6f 75 6c 64 20 73 74 69 file.............names.would.sti
16aa0 6c 6c 20 77 6f 72 6b 3a 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6d 65 72 61 5f 63 61 6c ll.work:..............camera_cal
16ac0 69 62 30 30 30 31 2e 74 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6d 65 72 61 5f 63 61 ib0001.tif.............camera_ca
16ae0 6c 69 62 30 30 30 32 2e 74 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6d 65 72 61 5f 63 lib0002.tif.............camera_c
16b00 61 6c 69 62 30 30 30 33 2e 74 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6d 65 72 61 5f alib0003.tif.............camera_
16b20 63 61 6c 69 62 30 30 30 34 2e 74 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6d 65 72 61 calib0004.tif.............camera
16b40 5f 63 61 6c 69 62 30 30 30 35 2e 74 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6d 65 72 _calib0005.tif.............camer
16b60 61 5f 63 61 6c 69 62 30 30 30 36 2e 74 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6d 65 a_calib0006.tif.............came
16b80 72 61 5f 63 61 6c 69 62 30 30 30 37 2e 74 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6d ra_calib0007.tif.............cam
16ba0 65 72 61 5f 63 61 6c 69 62 30 30 30 38 2e 74 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 era_calib0008.tif.............ca
16bc0 6d 65 72 61 5f 63 61 6c 69 62 30 30 30 39 2e 74 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 mera_calib0009.tif.............c
16be0 61 6d 65 72 61 5f 63 61 6c 69 62 30 30 31 30 2e 74 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 amera_calib0010.tif.............
16c00 63 61 6d 65 72 61 5f 63 61 6c 69 62 30 30 31 31 2e 74 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 camera_calib0011.tif............
16c20 20 63 61 6d 65 72 61 5f 63 61 6c 69 62 30 30 31 32 2e 74 69 66 0a 20 20 20 20 20 20 20 20 20 20 .camera_calib0012.tif...........
16c40 20 20 63 61 6d 65 72 61 5f 63 61 6c 69 62 30 30 31 33 2e 74 69 66 0a 20 20 20 20 20 20 20 20 20 ..camera_calib0013.tif..........
16c60 20 20 20 63 61 6d 65 72 61 5f 63 61 6c 69 62 30 30 31 34 2e 74 69 66 0a 20 20 20 20 20 20 20 20 ...camera_calib0014.tif.........
16c80 20 20 20 20 63 61 6d 65 72 61 5f 63 61 6c 69 62 30 30 31 35 2e 74 69 66 0a 0a 0a 34 2d 20 54 68 ....camera_calib0015.tif...4-.Th
16ca0 65 20 66 69 6e 61 6c 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 72 65 73 75 6c 74 73 20 28 69 6e 74 e.final.calibration.results.(int
16cc0 72 69 6e 73 69 63 20 61 6e 64 20 65 78 74 72 69 6e 73 69 63 29 20 61 72 65 20 73 61 76 65 64 20 rinsic.and.extrinsic).are.saved.
16ce0 75 6e 64 65 72 0a 20 20 20 43 61 6c 69 62 5f 52 65 73 75 6c 74 73 2e 6d 61 74 0a 0a 0a 0a 53 65 under....Calib_Results.mat....Se
16d00 6e 64 20 79 6f 75 72 20 71 75 65 73 74 69 6f 6e 73 20 74 6f 20 62 6f 75 67 75 65 74 6a 40 76 69 nd.your.questions.to.bouguetj@vi
16d20 73 69 6f 6e 2e 63 61 6c 74 65 63 68 2e 65 64 75 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 sion.caltech.edu................
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 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16e60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16e80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
170a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
170c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
170e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
171a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
171c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
171e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17200 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
17220 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
17240 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.
17260 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
17280 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,......%...
172a0 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,.
172c0 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],
172e0 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');........
17300 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';......
17320 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
17340 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,
17360 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
17380 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');.
173a0 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);.
173c0 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
173e0 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];.......
17400 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
17420 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
17440 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
17460 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.
17480 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
174a0 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.=
174c0 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
174e0 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');....
17500 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')
17520 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
17540 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
17560 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*
17580 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);.
175a0 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
175c0 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
175e0 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(
17600 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;
17620 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');....
17640 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(
17660 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
17680 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');
176a0 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
176c0 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,
176e0 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_
17700 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
17720 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
17740 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];.......
17760 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:
17780 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
177a0 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;..
177c0 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
177e0 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
17800 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
17820 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';.
17840 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.
17860 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
17880 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
178a0 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
178c0 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)'
178e0 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
17900 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.
17920 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'
17940 27 2e 27 29 3b 0a 65 6e 64 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '.');.end.......................
17960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
179a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
179c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
179e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17a00 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.........
17a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17a60 00 00 00 00 20 20 20 36 34 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
17a80 20 20 20 20 31 30 30 20 20 36 37 36 33 30 37 31 35 31 35 20 20 31 30 32 35 33 00 20 00 00 00 00 ....100..6763071515..10253......
17aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17c00 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
17c20 78 3a 0a 0a 63 61 6c 69 62 5f 67 75 69 3b 0a 0a 70 61 74 68 28 70 77 64 2c 70 61 74 68 29 3b 0a x:..calib_gui;..path(pwd,path);.
17c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17e00 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 52 45 41 44 4d 45 2e 74 78 74 00 00 00 00 00 00 00 00 TOOLBOX_calib/README.txt........
17e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17e60 00 00 00 00 20 20 20 36 34 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 .......640.....471.....454......
17e80 20 20 20 36 34 36 31 20 20 36 37 36 33 32 36 35 32 32 35 20 20 31 30 31 33 34 00 20 00 00 00 00 ...6461..6763265225..10134......
17ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................