| ofs | hex dump | ascii |
|---|
| 0000 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | TOOLBOX_calib/.................. |
| 0020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0060 | 00 00 00 00 20 20 20 37 35 30 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......750.....471.....454...... |
| 0080 | 20 20 20 20 20 20 30 20 20 37 30 32 33 35 33 31 32 32 32 20 20 20 36 33 32 30 00 20 00 00 00 00 | ......0..7023531222...6320...... |
| 00a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 00c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 00e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0200 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 61 64 64 5f 73 75 70 70 72 65 73 73 2e 6d 00 00 00 00 | TOOLBOX_calib/add_suppress.m.... |
| 0220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0260 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 0280 | 20 20 20 33 37 32 33 20 20 37 30 32 34 30 33 37 33 30 31 20 20 31 31 32 37 31 00 20 00 00 00 00 | ...3723..7024037301..11271...... |
| 02a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 02c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 02e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 03a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 03c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 03e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0400 | 20 20 20 63 68 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 0a 0a 66 70 72 69 6e 74 | ...check_active_images;...fprint |
| 0420 | 66 28 31 2c 27 5c 6e 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 75 73 65 66 75 6c 20 74 | f(1,'\nThis.function.is.useful.t |
| 0440 | 6f 20 73 65 6c 65 63 74 20 61 20 73 75 62 73 65 74 20 6f 66 20 69 6d 61 67 65 73 20 74 6f 20 63 | o.select.a.subset.of.images.to.c |
| 0460 | 61 6c 69 62 72 61 74 65 5c 6e 27 29 3b 0a 0a 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 54 | alibrate\n');.....fprintf(1,'\nT |
| 0480 | 68 65 72 65 20 61 72 65 20 63 75 72 72 65 6e 74 6c 79 20 25 64 20 61 63 74 69 76 65 20 69 6d 61 | here.are.currently.%d.active.ima |
| 04a0 | 67 65 73 20 73 65 6c 65 63 74 65 64 20 66 6f 72 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 28 6f 75 | ges.selected.for.calibration.(ou |
| 04c0 | 74 20 6f 66 20 25 64 29 3a 5c 6e 27 2c 6c 65 6e 67 74 68 28 69 6e 64 5f 61 63 74 69 76 65 29 2c | t.of.%d):\n',length(ind_active), |
| 04e0 | 6e 5f 69 6d 61 29 3b 0a 20 20 20 0a 20 20 20 69 66 20 7e 69 73 65 6d 70 74 79 28 69 6e 64 5f 61 | n_ima);........if.~isempty(ind_a |
| 0500 | 63 74 69 76 65 29 2c 0a 20 20 20 0a 20 20 20 09 66 6f 72 20 69 69 20 3d 20 31 3a 6c 65 6e 67 74 | ctive),.........for.ii.=.1:lengt |
| 0520 | 68 28 69 6e 64 5f 61 63 74 69 76 65 29 2d 32 2c 0a 20 20 20 20 20 20 09 0a 20 20 20 20 20 20 20 | h(ind_active)-2,................ |
| 0540 | 20 20 66 70 72 69 6e 74 66 28 31 2c 27 25 64 2c 20 27 2c 69 6e 64 5f 61 63 74 69 76 65 28 69 69 | ..fprintf(1,'%d,.',ind_active(ii |
| 0560 | 29 29 3b 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 0a | ));.................end;........ |
| 0580 | 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 25 64 20 61 6e 64 20 25 64 2e 27 2c 69 6e 64 | ......fprintf(1,'%d.and.%d.',ind |
| 05a0 | 5f 61 63 74 69 76 65 28 65 6e 64 2d 31 29 2c 69 6e 64 5f 61 63 74 69 76 65 28 65 6e 64 29 29 3b | _active(end-1),ind_active(end)); |
| 05c0 | 0a 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 27 29 | .....end;........fprintf(1,'\n') |
| 05e0 | 3b 0a 20 20 20 0a 20 20 20 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 44 6f 20 79 6f 75 20 77 61 | ;.........fprintf(1,'\nDo.you.wa |
| 0600 | 6e 74 20 74 6f 20 73 75 70 70 72 65 73 73 20 6f 72 20 61 64 64 20 69 6d 61 67 65 73 20 66 72 6f | nt.to.suppress.or.add.images.fro |
| 0620 | 6d 20 74 68 61 74 20 6c 69 73 74 3f 5c 6e 27 29 3b 0a 0a 63 68 6f 69 63 65 20 3d 20 32 3b 0a 0a | m.that.list?\n');..choice.=.2;.. |
| 0640 | 77 68 69 6c 65 20 28 63 68 6f 69 63 65 7e 3d 30 29 26 28 63 68 6f 69 63 65 7e 3d 31 29 2c 0a 20 | while.(choice~=0)&(choice~=1),.. |
| 0660 | 20 20 63 68 6f 69 63 65 20 3d 20 69 6e 70 75 74 28 27 46 6f 72 20 73 75 70 70 72 65 73 73 69 6e | ..choice.=.input('For.suppressin |
| 0680 | 67 20 69 6d 61 67 65 73 20 65 6e 74 65 72 20 30 2c 20 66 6f 72 20 61 64 64 69 6e 67 20 69 6d 61 | g.images.enter.0,.for.adding.ima |
| 06a0 | 67 65 73 20 65 6e 74 65 72 20 31 20 28 5b 5d 3d 6e 6f 20 63 68 61 6e 67 65 29 3a 20 27 29 3b 0a | ges.enter.1.([]=no.change):.');. |
| 06c0 | 20 20 20 69 66 20 69 73 65 6d 70 74 79 28 63 68 6f 69 63 65 29 2c 0a 20 20 20 20 20 20 66 70 72 | ...if.isempty(choice),.......fpr |
| 06e0 | 69 6e 74 66 28 31 2c 27 4e 6f 20 63 68 61 6e 67 65 20 61 70 70 6c 69 65 64 20 74 6f 20 74 68 65 | intf(1,'No.change.applied.to.the |
| 0700 | 20 6c 69 73 74 20 6f 66 20 61 63 74 69 76 65 20 69 6d 61 67 65 73 2e 5c 6e 27 29 3b 0a 20 20 20 | .list.of.active.images.\n');.... |
| 0720 | 20 20 20 72 65 74 75 72 6e 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 69 66 20 28 63 68 6f 69 63 65 | ...return;....end;....if.(choice |
| 0740 | 7e 3d 30 29 26 28 63 68 6f 69 63 65 7e 3d 31 29 2c 0a 20 20 20 20 20 20 64 69 73 70 28 27 42 61 | ~=0)&(choice~=1),.......disp('Ba |
| 0760 | 64 20 65 6e 74 72 79 2e 20 54 72 79 20 61 67 61 69 6e 2e 27 29 3b 0a 20 20 20 65 6e 64 3b 0a 65 | d.entry..Try.again.');....end;.e |
| 0780 | 6e 64 3b 0a 0a 0a 69 66 20 63 68 6f 69 63 65 2c 0a 20 20 20 0a 09 69 6d 61 5f 6e 75 6d 62 65 72 | nd;...if.choice,......ima_number |
| 07a0 | 73 20 3d 20 69 6e 70 75 74 28 27 4e 75 6d 62 65 72 28 73 29 20 6f 66 20 69 6d 61 67 65 28 73 29 | s.=.input('Number(s).of.image(s) |
| 07c0 | 20 74 6f 20 61 64 64 20 28 5b 5d 20 3d 20 61 6c 6c 20 69 6d 61 67 65 73 29 20 3d 20 27 29 3b 0a | .to.add.([].=.all.images).=.');. |
| 07e0 | 0a 69 66 20 69 73 65 6d 70 74 79 28 69 6d 61 5f 6e 75 6d 62 65 72 73 29 2c 0a 09 20 20 20 66 70 | .if.isempty(ima_numbers),.....fp |
| 0800 | 72 69 6e 74 66 28 31 2c 27 41 6c 6c 20 25 64 20 69 6d 61 67 65 73 20 61 72 65 20 6e 6f 77 20 61 | rintf(1,'All.%d.images.are.now.a |
| 0820 | 63 74 69 76 65 5c 6e 27 2c 6e 5f 69 6d 61 29 3b 0a 20 20 20 09 69 6d 61 5f 70 72 6f 63 20 3d 20 | ctive\n',n_ima);.....ima_proc.=. |
| 0840 | 31 3a 6e 5f 69 6d 61 3b 0a 09 65 6c 73 65 0a 20 20 20 09 69 6d 61 5f 70 72 6f 63 20 3d 20 69 6d | 1:n_ima;..else.....ima_proc.=.im |
| 0860 | 61 5f 6e 75 6d 62 65 72 73 3b 0a 09 65 6e 64 3b 0a 20 20 20 0a 65 6c 73 65 0a 20 20 20 0a 20 20 | a_numbers;..end;.....else....... |
| 0880 | 20 0a 09 69 6d 61 5f 6e 75 6d 62 65 72 73 20 3d 20 69 6e 70 75 74 28 27 4e 75 6d 62 65 72 28 73 | ...ima_numbers.=.input('Number(s |
| 08a0 | 29 20 6f 66 20 69 6d 61 67 65 28 73 29 20 74 6f 20 73 75 70 70 72 65 73 73 20 28 5b 5d 20 3d 20 | ).of.image(s).to.suppress.([].=. |
| 08c0 | 6e 6f 20 69 6d 61 67 65 29 20 3d 20 27 29 3b 0a 0a 09 69 66 20 69 73 65 6d 70 74 79 28 69 6d 61 | no.image).=.');...if.isempty(ima |
| 08e0 | 5f 6e 75 6d 62 65 72 73 29 2c 0a 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 4e 6f 20 69 | _numbers),.......fprintf(1,'No.i |
| 0900 | 6d 61 67 65 20 68 61 73 20 62 65 65 6e 20 73 75 70 70 72 65 73 73 65 64 2e 20 4e 6f 20 6d 6f 64 | mage.has.been.suppressed..No.mod |
| 0920 | 69 63 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 6c 69 73 74 20 6f 66 20 61 63 74 69 76 65 20 69 6d | ication.of.the.list.of.active.im |
| 0940 | 61 67 65 73 2e 5c 6e 27 2c 6e 5f 69 6d 61 29 3b 0a 20 20 20 09 69 6d 61 5f 70 72 6f 63 20 3d 20 | ages.\n',n_ima);.....ima_proc.=. |
| 0960 | 5b 5d 3b 0a 09 65 6c 73 65 0a 20 20 20 09 69 6d 61 5f 70 72 6f 63 20 3d 20 69 6d 61 5f 6e 75 6d | [];..else.....ima_proc.=.ima_num |
| 0980 | 62 65 72 73 3b 0a 09 65 6e 64 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 69 66 20 7e 69 73 65 6d 70 74 | bers;..end;.....end;..if.~isempt |
| 09a0 | 79 28 69 6d 61 5f 70 72 6f 63 29 2c 0a 20 20 20 0a 20 20 20 61 63 74 69 76 65 5f 69 6d 61 67 65 | y(ima_proc),........active_image |
| 09c0 | 73 28 69 6d 61 5f 70 72 6f 63 29 20 3d 20 63 68 6f 69 63 65 20 2a 20 6f 6e 65 73 28 31 2c 6c 65 | s(ima_proc).=.choice.*.ones(1,le |
| 09e0 | 6e 67 74 68 28 69 6d 61 5f 70 72 6f 63 29 29 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 0a 20 20 20 63 | ngth(ima_proc));.....end;......c |
| 0a00 | 68 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 20 20 20 0a 0a 20 20 20 66 70 72 69 | heck_active_images;.........fpri |
| 0a20 | 6e 74 66 28 31 2c 27 5c 6e 54 68 65 72 65 20 69 73 20 6e 6f 77 20 61 20 74 6f 74 61 6c 20 6f 66 | ntf(1,'\nThere.is.now.a.total.of |
| 0a40 | 20 25 64 20 61 63 74 69 76 65 20 69 6d 61 67 65 73 20 66 6f 72 20 63 61 6c 69 62 72 61 74 69 6f | .%d.active.images.for.calibratio |
| 0a60 | 6e 3a 5c 6e 27 2c 6c 65 6e 67 74 68 28 69 6e 64 5f 61 63 74 69 76 65 29 29 3b 0a 20 20 20 0a 20 | n:\n',length(ind_active));...... |
| 0a80 | 20 20 69 66 20 7e 69 73 65 6d 70 74 79 28 69 6e 64 5f 61 63 74 69 76 65 29 2c 0a 20 20 20 0a 20 | ..if.~isempty(ind_active),...... |
| 0aa0 | 20 20 09 66 6f 72 20 69 69 20 3d 20 31 3a 6c 65 6e 67 74 68 28 69 6e 64 5f 61 63 74 69 76 65 29 | ...for.ii.=.1:length(ind_active) |
| 0ac0 | 2d 32 2c 0a 20 20 20 20 20 20 09 0a 20 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 | -2,..................fprintf(1,' |
| 0ae0 | 25 64 2c 20 27 2c 69 6e 64 5f 61 63 74 69 76 65 28 69 69 29 29 3b 0a 20 20 20 20 20 20 20 20 20 | %d,.',ind_active(ii));.......... |
| 0b00 | 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 66 70 72 69 6e 74 66 | .......end;..............fprintf |
| 0b20 | 28 31 2c 27 25 64 20 61 6e 64 20 25 64 2e 27 2c 69 6e 64 5f 61 63 74 69 76 65 28 65 6e 64 2d 31 | (1,'%d.and.%d.',ind_active(end-1 |
| 0b40 | 29 2c 69 6e 64 5f 61 63 74 69 76 65 28 65 6e 64 29 29 3b 0a 0a 20 20 20 65 6e 64 3b 0a 20 20 20 | ),ind_active(end));.....end;.... |
| 0b60 | 0a 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 5c 6e 59 6f 75 20 6d 61 79 20 6e 6f 77 20 72 | ....fprintf(1,'\n\nYou.may.now.r |
| 0b80 | 75 6e 20 27 27 43 61 6c 69 62 72 61 74 69 6f 6e 27 27 20 74 6f 20 72 65 63 61 6c 69 62 72 61 74 | un.''Calibration''.to.recalibrat |
| 0ba0 | 65 20 62 61 73 65 64 20 6f 6e 20 74 68 69 73 20 6e 65 77 20 73 65 74 20 6f 66 20 69 6d 61 67 65 | e.based.on.this.new.set.of.image |
| 0bc0 | 73 2e 5c 6e 27 29 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 | s.\n');......................... |
| 0be0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0c00 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 61 6e 61 6c 79 73 65 5f 65 72 72 6f 72 2e 6d 00 00 00 | TOOLBOX_calib/analyse_error.m... |
| 0c20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0c40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0c60 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 0c80 | 20 20 20 33 37 32 34 20 20 37 30 32 34 30 33 37 33 30 32 20 20 31 31 34 34 34 00 20 00 00 00 00 | ...3724..7024037302..11444...... |
| 0ca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0cc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0ce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0d00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0d20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0d40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0d60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0d80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0e00 | 25 20 43 6f 6c 6f 72 20 63 6f 64 65 20 66 6f 72 20 65 61 63 68 20 69 6d 61 67 65 3a 0a 0a 63 68 | %.Color.code.for.each.image:..ch |
| 0e20 | 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 0a 69 66 20 7e 65 78 69 73 74 28 5b 27 | eck_active_images;..if.~exist([' |
| 0e40 | 65 78 5f 27 20 6e 75 6d 32 73 74 72 28 69 6e 64 5f 61 63 74 69 76 65 28 31 29 29 20 5d 29 2c 0a | ex_'.num2str(ind_active(1)).]),. |
| 0e60 | 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 4e 65 65 64 20 74 6f 20 63 61 6c 69 62 72 61 74 65 20 | ...fprintf(1,'Need.to.calibrate. |
| 0e80 | 62 65 66 6f 72 65 20 61 6e 61 6c 79 73 69 6e 67 20 72 65 70 72 6f 6a 65 63 74 69 6f 6e 20 65 72 | before.analysing.reprojection.er |
| 0ea0 | 72 6f 72 2e 20 4d 61 79 62 65 20 6e 65 65 64 20 74 6f 20 6c 6f 61 64 20 43 61 6c 69 62 5f 52 65 | ror..Maybe.need.to.load.Calib_Re |
| 0ec0 | 73 75 6c 74 73 2e 6d 61 74 20 66 69 6c 65 2e 5c 6e 27 29 3b 0a 20 20 20 72 65 74 75 72 6e 3b 0a | sults.mat.file.\n');....return;. |
| 0ee0 | 65 6e 64 3b 0a 0a 0a 69 66 20 7e 65 78 69 73 74 28 27 6e 6f 5f 67 72 69 64 27 29 2c 0a 20 20 20 | end;...if.~exist('no_grid'),.... |
| 0f00 | 6e 6f 5f 67 72 69 64 20 3d 20 30 3b 0a 65 6e 64 3b 0a 0a 63 6f 6c 6f 72 73 20 3d 20 27 62 72 67 | no_grid.=.0;.end;..colors.=.'brg |
| 0f20 | 6b 63 6d 27 3b 0a 0a 20 20 20 0a 66 69 67 75 72 65 28 35 29 3b 0a 20 20 20 0a 66 6f 72 20 6b 6b | kcm';......figure(5);.....for.kk |
| 0f40 | 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 09 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b | .=.1:n_ima,..if.active_images(kk |
| 0f60 | 29 20 26 20 65 76 61 6c 28 5b 27 7e 69 73 6e 61 6e 28 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b | ).&.eval(['~isnan(y_'.num2str(kk |
| 0f80 | 29 20 27 28 31 2c 31 29 29 27 5d 29 2c 0a 09 20 20 20 65 76 61 6c 28 5b 27 70 6c 6f 74 28 65 78 | ).'(1,1))']),.....eval(['plot(ex |
| 0fa0 | 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 28 31 2c 3a 29 2c 65 78 5f 27 20 6e 75 6d 32 73 | _'.num2str(kk).'(1,:),ex_'.num2s |
| 0fc0 | 74 72 28 6b 6b 29 20 27 28 32 2c 3a 29 2c 27 27 27 20 63 6f 6c 6f 72 73 28 72 65 6d 28 6b 6b 2d | tr(kk).'(2,:),'''.colors(rem(kk- |
| 0fe0 | 31 2c 36 29 2b 31 29 20 27 2b 27 27 29 3b 27 5d 29 3b 0a 20 20 20 20 20 20 68 6f 6c 64 20 6f 6e | 1,6)+1).'+'');']);.......hold.on |
| 1000 | 3b 0a 20 20 20 65 6e 64 3b 0a 65 6e 64 3b 0a 68 6f 6c 64 20 6f 66 66 3b 0a 61 78 69 73 28 27 65 | ;....end;.end;.hold.off;.axis('e |
| 1020 | 71 75 61 6c 27 29 3b 0a 69 66 20 31 2c 20 25 7e 6e 6f 5f 67 72 69 64 2c 0a 20 20 20 74 69 74 6c | qual');.if.1,.%~no_grid,....titl |
| 1040 | 65 28 27 52 65 70 72 6f 6a 65 63 74 69 6f 6e 20 65 72 72 6f 72 20 28 69 6e 20 70 69 78 65 6c 29 | e('Reprojection.error.(in.pixel) |
| 1060 | 20 2d 20 54 6f 20 65 78 69 74 3a 20 72 69 67 68 74 20 62 75 74 74 6f 6e 27 29 3b 0a 65 6c 73 65 | .-.To.exit:.right.button');.else |
| 1080 | 0a 20 20 20 74 69 74 6c 65 28 27 52 65 70 72 6f 6a 65 63 74 69 6f 6e 20 65 72 72 6f 72 20 28 69 | ....title('Reprojection.error.(i |
| 10a0 | 6e 20 70 69 78 65 6c 29 27 29 3b 20 20 20 0a 65 6e 64 3b 0a 78 6c 61 62 65 6c 28 27 78 27 29 3b | n.pixel)');....end;.xlabel('x'); |
| 10c0 | 0a 79 6c 61 62 65 6c 28 27 79 27 29 3b 0a 0a 73 65 74 28 35 2c 27 4e 61 6d 65 27 2c 27 65 72 72 | .ylabel('y');..set(5,'Name','err |
| 10e0 | 6f 72 27 2c 27 4e 75 6d 62 65 72 54 69 74 6c 65 27 2c 27 6f 66 66 27 29 3b 0a 0a 0a 0a 25 65 72 | or','NumberTitle','off');....%er |
| 1100 | 72 5f 73 74 64 20 3d 20 73 74 64 28 65 78 27 29 27 3b 0a 0a 25 66 70 72 69 6e 74 66 28 31 2c 27 | r_std.=.std(ex')';..%fprintf(1,' |
| 1120 | 50 69 78 65 6c 20 65 72 72 6f 72 3a 20 20 20 20 20 20 65 72 72 20 3d 20 5b 20 25 33 2e 35 66 20 | Pixel.error:......err.=.[.%3.5f. |
| 1140 | 20 20 25 33 2e 35 66 5d 5c 6e 5c 6e 27 2c 65 72 72 5f 73 74 64 29 3b 20 0a 0a 62 20 3d 20 31 3b | ..%3.5f]\n\n',err_std);...b.=.1; |
| 1160 | 0a 0a 77 68 69 6c 65 20 62 3d 3d 31 2c 0a 20 20 20 0a 5b 78 70 2c 79 70 2c 62 5d 20 3d 20 67 69 | ..while.b==1,.....[xp,yp,b].=.gi |
| 1180 | 6e 70 75 74 33 28 31 29 3b 0a 0a 69 66 20 62 3d 3d 31 2c 0a 64 64 64 20 3d 20 28 65 78 28 31 2c | nput3(1);..if.b==1,.ddd.=.(ex(1, |
| 11a0 | 3a 29 2d 78 70 29 2e 5e 32 20 2b 20 28 65 78 28 32 2c 3a 29 2d 79 70 29 2e 5e 32 3b 0a 0a 5b 6d | :)-xp).^2.+.(ex(2,:)-yp).^2;..[m |
| 11c0 | 69 6e 64 2c 69 6e 64 6d 69 6e 5d 20 3d 20 6d 69 6e 28 64 64 64 29 3b 0a 0a 0a 64 6f 6e 65 20 3d | ind,indmin].=.min(ddd);...done.= |
| 11e0 | 20 30 3b 0a 6b 6b 5f 69 6d 61 20 3d 20 31 3b 0a 77 68 69 6c 65 20 28 7e 64 6f 6e 65 29 26 28 6b | .0;.kk_ima.=.1;.while.(~done)&(k |
| 1200 | 6b 5f 69 6d 61 3c 3d 6e 5f 69 6d 61 29 2c 0a 20 20 20 25 66 70 72 69 6e 74 66 28 31 2c 27 25 64 | k_ima<=n_ima),....%fprintf(1,'%d |
| 1220 | 2e 2e 2e 27 2c 6b 6b 5f 69 6d 61 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 65 78 5f 6b 6b 20 3d 20 | ...',kk_ima);....eval(['ex_kk.=. |
| 1240 | 65 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 5f 69 6d 61 29 20 27 3b 27 5d 29 3b 0a 20 20 20 73 | ex_'.num2str(kk_ima).';']);....s |
| 1260 | 6f 6c 5f 6b 6b 20 3d 20 66 69 6e 64 28 28 65 78 5f 6b 6b 28 31 2c 3a 29 20 3d 3d 20 65 78 28 31 | ol_kk.=.find((ex_kk(1,:).==.ex(1 |
| 1280 | 2c 69 6e 64 6d 69 6e 29 29 26 28 65 78 5f 6b 6b 28 32 2c 3a 29 20 3d 3d 20 65 78 28 32 2c 69 6e | ,indmin))&(ex_kk(2,:).==.ex(2,in |
| 12a0 | 64 6d 69 6e 29 29 29 3b 0a 20 20 20 69 66 20 69 73 65 6d 70 74 79 28 73 6f 6c 5f 6b 6b 29 2c 0a | dmin)));....if.isempty(sol_kk),. |
| 12c0 | 20 20 20 09 6b 6b 5f 69 6d 61 20 3d 20 6b 6b 5f 69 6d 61 20 2b 20 31 3b 0a 20 20 20 65 6c 73 65 | ....kk_ima.=.kk_ima.+.1;....else |
| 12e0 | 0a 20 20 20 20 20 20 64 6f 6e 65 20 3d 20 31 3b 0a 20 20 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 69 | .......done.=.1;....end;.end;..i |
| 1300 | 66 20 7e 6e 6f 5f 67 72 69 64 2c 0a 0a 65 76 61 6c 28 5b 27 6e 5f 73 71 5f 78 20 3d 20 6e 5f 73 | f.~no_grid,..eval(['n_sq_x.=.n_s |
| 1320 | 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 5f 69 6d 61 29 20 27 3b 27 5d 29 3b 0a 65 76 61 | q_x_'.num2str(kk_ima).';']);.eva |
| 1340 | 6c 28 5b 27 6e 5f 73 71 5f 79 20 3d 20 6e 5f 73 71 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b | l(['n_sq_y.=.n_sq_y_'.num2str(kk |
| 1360 | 5f 69 6d 61 29 20 27 3b 27 5d 29 3b 0a 0a 4e 78 20 3d 20 6e 5f 73 71 5f 78 2b 31 3b 0a 4e 79 20 | _ima).';']);..Nx.=.n_sq_x+1;.Ny. |
| 1380 | 3d 20 6e 5f 73 71 5f 79 2b 31 3b 0a 0a 79 31 20 3d 20 66 6c 6f 6f 72 28 28 73 6f 6c 5f 6b 6b 2d | =.n_sq_y+1;..y1.=.floor((sol_kk- |
| 13a0 | 31 29 2e 2f 4e 78 29 3b 0a 78 31 20 3d 20 73 6f 6c 5f 6b 6b 20 2d 20 31 20 2d 20 4e 78 2a 79 31 | 1)./Nx);.x1.=.sol_kk.-.1.-.Nx*y1 |
| 13c0 | 3b 20 25 72 65 6d 28 73 6f 6c 5f 6b 6b 2d 31 2c 4e 78 29 3b 0a 0a 79 31 20 3d 20 28 6e 5f 73 71 | ;.%rem(sol_kk-1,Nx);..y1.=.(n_sq |
| 13e0 | 5f 79 2b 31 29 20 2d 20 79 31 3b 0a 78 31 20 3d 20 78 31 20 2b 20 31 3b 0a 0a 66 70 72 69 6e 74 | _y+1).-.y1;.x1.=.x1.+.1;..fprint |
| 1400 | 66 28 31 2c 27 5c 6e 53 65 6c 65 63 74 65 64 20 69 6d 61 67 65 3a 20 25 64 5c 6e 53 65 6c 65 63 | f(1,'\nSelected.image:.%d\nSelec |
| 1420 | 74 65 64 20 70 6f 69 6e 74 3a 20 28 63 6f 6c 2c 72 6f 77 29 3d 28 25 64 2c 25 64 29 5c 6e 4e 63 | ted.point:.(col,row)=(%d,%d)\nNc |
| 1440 | 6f 6c 3d 25 64 2c 20 4e 72 6f 77 3d 25 64 5c 6e 27 2c 5b 6b 6b 5f 69 6d 61 20 78 31 20 79 31 20 | ol=%d,.Nrow=%d\n',[kk_ima.x1.y1. |
| 1460 | 4e 78 20 4e 79 5d 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 50 69 78 65 6c 20 65 72 72 6f 72 20 | Nx.Ny]);.fprintf(1,'Pixel.error. |
| 1480 | 3d 20 28 25 33 2e 35 66 2c 25 33 2e 35 66 29 5c 6e 27 2c 5b 65 78 28 31 2c 69 6e 64 6d 69 6e 29 | =.(%3.5f,%3.5f)\n',[ex(1,indmin) |
| 14a0 | 20 65 78 28 32 2c 69 6e 64 6d 69 6e 29 5d 29 3b 0a 0a 65 6c 73 65 0a 20 20 20 0a 20 20 20 65 76 | .ex(2,indmin)]);..else........ev |
| 14c0 | 61 6c 28 5b 27 78 5f 6b 6b 20 3d 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 5f 69 6d 61 29 20 | al(['x_kk.=.x_'.num2str(kk_ima). |
| 14e0 | 27 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 78 70 74 20 3d 20 78 5f 6b 6b 28 3a 2c 73 6f 6c 5f 6b | ';']);........xpt.=.x_kk(:,sol_k |
| 1500 | 6b 29 3b 0a 20 20 20 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 53 65 6c 65 63 74 65 64 20 69 6d | k);.....fprintf(1,'\nSelected.im |
| 1520 | 61 67 65 3a 20 25 64 5c 6e 49 6d 61 67 65 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 28 69 6e 20 70 | age:.%d\nImage.coordinates.(in.p |
| 1540 | 69 78 65 6c 29 3a 20 28 25 33 2e 32 66 2c 25 33 2e 32 66 29 5c 6e 27 2c 5b 6b 6b 5f 69 6d 61 20 | ixel):.(%3.2f,%3.2f)\n',[kk_ima. |
| 1560 | 78 70 74 27 5d 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 50 69 78 65 6c 20 65 72 72 6f 72 20 3d | xpt']);.fprintf(1,'Pixel.error.= |
| 1580 | 20 28 25 33 2e 35 66 2c 25 33 2e 35 66 29 5c 6e 27 2c 5b 65 78 28 31 2c 69 6e 64 6d 69 6e 29 20 | .(%3.5f,%3.5f)\n',[ex(1,indmin). |
| 15a0 | 65 78 28 32 2c 69 6e 64 6d 69 6e 29 5d 29 3b 0a 0a 0a 65 6e 64 3b 0a 0a 0a 65 6e 64 3b 0a 0a 65 | ex(2,indmin)]);...end;...end;..e |
| 15c0 | 6e 64 3b 0a 0a 64 69 73 70 28 27 64 6f 6e 65 27 29 3b 0a 0a 00 20 00 11 6d 65 61 6e 5f 73 74 64 | nd;..disp('done');......mean_std |
| 15e0 | 5f 72 6f 62 75 73 74 2e 6d 00 36 b1 00 00 07 38 00 02 36 b3 00 24 00 14 72 75 6e 5f 65 72 72 6f | _robust.m.6....8..6..$..run_erro |
| 1600 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 61 6c 69 62 2e 6d 00 00 00 00 00 00 00 00 00 00 00 | TOOLBOX_calib/calib.m........... |
| 1620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1660 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 1680 | 20 20 20 34 34 30 31 20 20 37 30 32 34 30 33 37 33 30 32 20 20 20 37 36 34 32 00 20 00 00 00 00 | ...4401..7024037302...7642...... |
| 16a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1800 | 69 66 20 7e 65 78 69 73 74 28 27 69 6e 73 74 72 75 63 74 69 6f 6e 73 27 29 2c 20 69 6e 73 74 72 | if.~exist('instructions'),.instr |
| 1820 | 75 63 74 69 6f 6e 73 20 3d 20 31 3b 20 65 6e 64 3b 0a 0a 69 66 20 69 6e 73 74 72 75 63 74 69 6f | uctions.=.1;.end;..if.instructio |
| 1840 | 6e 73 2c 0a 20 20 20 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 | ns,.....fprintf(1,'\n');.fprintf |
| 1860 | 28 31 2c 27 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | (1,'*--------------------------- |
| 1880 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------------------------- |
| 18a0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------------------------- |
| 18c0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2a 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 7c 20 20 20 20 | ---------*\n');.fprintf(1,'|.... |
| 18e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 69 6e 20 43 61 6c 69 62 72 | .....................Main.Calibr |
| 1900 | 61 74 69 6f 6e 20 74 6f 6f 6c 62 6f 78 20 28 32 44 20 61 6e 64 20 33 44 20 72 69 67 73 29 20 20 | ation.toolbox.(2D.and.3D.rigs).. |
| 1920 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ |
| 1940 | 7c 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 | |\n');.fprintf(1,'|............. |
| 1960 | 20 20 20 20 20 20 20 20 20 20 20 28 63 29 20 4a 65 61 6e 2d 59 76 65 73 20 42 6f 75 67 75 65 74 | ...........(c).Jean-Yves.Bouguet |
| 1980 | 20 2d 20 53 65 70 74 65 6d 62 65 72 20 39 74 68 2c 20 31 39 39 39 20 20 20 20 20 20 20 20 20 20 | .-.September.9th,.1999.......... |
| 19a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 5c 6e 27 29 3b 0a 66 70 | .......................|\n');.fp |
| 19c0 | 72 69 6e 74 66 28 31 2c 27 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | rintf(1,'*---------------------- |
| 19e0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------------------------- |
| 1a00 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------------------------- |
| 1a20 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2a 5c 6e 5c 6e 5c 6e 27 29 3b 0a 0a 66 70 72 69 6e 74 | --------------*\n\n\n');..fprint |
| 1a40 | 66 28 31 2c 27 43 4c 49 43 4b 20 4f 4e 3a 5c 6e 5c 6e 27 29 3b 0a 0a 66 70 72 69 6e 74 66 28 31 | f(1,'CLICK.ON:\n\n');..fprintf(1 |
| 1a60 | 2c 27 32 44 3a 20 20 20 54 6f 20 70 65 72 66 6f 72 6d 20 63 61 6d 65 72 61 20 63 61 6c 69 62 72 | ,'2D:...To.perform.camera.calibr |
| 1a80 | 61 74 69 6f 6e 20 66 72 6f 6d 20 6d 75 6c 74 69 70 6c 65 20 76 69 65 77 73 20 6f 66 20 61 20 32 | ation.from.multiple.views.of.a.2 |
| 1aa0 | 44 20 70 6c 61 6e 61 72 20 67 72 69 64 2e 20 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 | D.planar.grid..\n');.fprintf(1,' |
| 1ac0 | 20 20 20 20 20 20 53 65 74 20 64 65 66 61 75 6c 74 20 73 69 7a 65 20 6f 66 20 67 72 69 64 20 28 | ......Set.default.size.of.grid.( |
| 1ae0 | 69 6e 20 64 58 5f 64 65 66 61 75 6c 74 20 61 6e 64 20 64 59 5f 64 65 66 61 75 6c 74 29 20 69 6e | in.dX_default.and.dY_default).in |
| 1b00 | 20 63 6c 69 63 6b 5f 63 61 6c 69 62 2e 6d 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 | .click_calib.m.\n');.fprintf(1,' |
| 1b20 | 33 44 3a 20 20 20 54 6f 20 70 65 72 66 6f 72 6d 20 63 61 6d 65 72 61 20 63 61 6c 69 62 72 61 74 | 3D:...To.perform.camera.calibrat |
| 1b40 | 69 6f 6e 20 66 72 6f 6d 20 6d 75 6c 74 69 70 6c 65 20 76 69 65 77 73 20 6f 66 20 61 20 33 44 20 | ion.from.multiple.views.of.a.3D. |
| 1b60 | 67 72 69 64 20 63 6f 72 6e 65 72 2e 20 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 | grid.corner..\n');.fprintf(1,'.. |
| 1b80 | 20 20 20 20 53 65 74 20 64 65 66 61 75 6c 74 20 73 69 7a 65 20 6f 66 20 67 72 69 64 73 20 28 69 | ....Set.default.size.of.grids.(i |
| 1ba0 | 6e 20 64 58 5f 64 65 66 61 75 6c 74 20 61 6e 64 20 64 59 5f 64 65 66 61 75 6c 74 29 20 69 6e 20 | n.dX_default.and.dY_default).in. |
| 1bc0 | 63 6c 69 63 6b 5f 63 61 6c 69 62 33 44 2e 6d 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c | click_calib3D.m.\n');.fprintf(1, |
| 1be0 | 27 45 78 69 74 3a 20 54 6f 20 63 6c 6f 73 65 20 74 68 65 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 | 'Exit:.To.close.the.calibration. |
| 1c00 | 74 6f 6f 6c 2e 20 5c 6e 27 29 3b 0a 0a 65 6e 64 3b 0a 0a 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 | tool..\n');..end;..instructions. |
| 1c20 | 3d 20 30 3b 0a 0a 66 69 67 5f 6e 75 6d 62 65 72 20 3d 20 31 3b 0a 0a 6e 5f 72 6f 77 20 3d 20 31 | =.0;..fig_number.=.1;..n_row.=.1 |
| 1c40 | 3b 0a 6e 5f 63 6f 6c 20 3d 20 33 3b 0a 0a 73 74 72 69 6e 67 5f 6c 69 73 74 20 3d 20 63 65 6c 6c | ;.n_col.=.3;..string_list.=.cell |
| 1c60 | 28 6e 5f 72 6f 77 2c 6e 5f 63 6f 6c 29 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 20 3d 20 63 | (n_row,n_col);.callback_list.=.c |
| 1c80 | 65 6c 6c 28 6e 5f 72 6f 77 2c 6e 5f 63 6f 6c 29 3b 0a 0a 78 5f 73 69 7a 65 20 3d 20 34 30 3b 0a | ell(n_row,n_col);..x_size.=.40;. |
| 1ca0 | 79 5f 73 69 7a 65 20 3d 20 32 30 3b 0a 0a 74 69 74 6c 65 5f 66 69 67 75 72 65 20 3d 20 27 43 61 | y_size.=.20;..title_figure.=.'Ca |
| 1cc0 | 6c 69 62 72 61 74 69 6f 6e 20 74 6f 6f 6c 27 3b 0a 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 31 2c | libration.tool';..string_list{1, |
| 1ce0 | 31 7d 20 3d 20 27 32 44 20 72 69 67 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 31 2c 32 7d 20 | 1}.=.'2D.rig';.string_list{1,2}. |
| 1d00 | 3d 20 27 33 44 20 72 69 67 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 31 2c 33 7d 20 3d 20 27 | =.'3D.rig';.string_list{1,3}.=.' |
| 1d20 | 45 78 69 74 27 3b 0a 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 31 2c 31 7d 20 3d 20 27 63 61 | Exit';..callback_list{1,1}.=.'ca |
| 1d40 | 6c 69 62 5f 67 75 69 3b 27 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 31 2c 32 7d 20 3d 20 | lib_gui;';.callback_list{1,2}.=. |
| 1d60 | 27 63 61 6c 69 62 33 44 5f 67 75 69 3b 27 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 31 2c | 'calib3D_gui;';.callback_list{1, |
| 1d80 | 33 7d 20 3d 20 5b 27 64 69 73 70 28 27 27 42 79 65 2e 20 54 6f 20 72 75 6e 20 61 67 61 69 6e 2c | 3}.=.['disp(''Bye..To.run.again, |
| 1da0 | 20 74 79 70 65 20 63 61 6c 69 62 2e 27 27 29 3b 20 63 6c 6f 73 65 28 27 20 6e 75 6d 32 73 74 72 | .type.calib.'');.close('.num2str |
| 1dc0 | 28 66 69 67 5f 6e 75 6d 62 65 72 29 20 27 29 3b 27 5d 3b 0a 0a 0a 66 69 67 75 72 65 28 66 69 67 | (fig_number).');'];...figure(fig |
| 1de0 | 5f 6e 75 6d 62 65 72 29 3b 20 63 6c 66 3b 0a 70 6f 73 20 3d 20 67 65 74 28 66 69 67 5f 6e 75 6d | _number);.clf;.pos.=.get(fig_num |
| 1e00 | 62 65 72 2c 27 50 6f 73 69 74 69 6f 6e 27 29 3b 0a 0a 66 69 67 5f 73 69 7a 65 5f 78 20 3d 20 78 | ber,'Position');..fig_size_x.=.x |
| 1e20 | 5f 73 69 7a 65 2a 6e 5f 63 6f 6c 2b 28 6e 5f 63 6f 6c 2b 31 29 2a 32 3b 0a 66 69 67 5f 73 69 7a | _size*n_col+(n_col+1)*2;.fig_siz |
| 1e40 | 65 5f 79 20 3d 20 79 5f 73 69 7a 65 2a 6e 5f 72 6f 77 2b 28 6e 5f 72 6f 77 2b 31 29 2a 32 3b 0a | e_y.=.y_size*n_row+(n_row+1)*2;. |
| 1e60 | 0a 73 65 74 28 66 69 67 5f 6e 75 6d 62 65 72 2c 27 55 6e 69 74 73 27 2c 27 70 6f 69 6e 74 73 27 | .set(fig_number,'Units','points' |
| 1e80 | 2c 20 2e 2e 2e 0a 09 27 42 61 63 6b 69 6e 67 53 74 6f 72 65 27 2c 27 6f 66 66 27 2c 20 2e 2e 2e | ,......'BackingStore','off',.... |
| 1ea0 | 0a 09 27 43 6f 6c 6f 72 27 2c 5b 30 2e 38 20 30 2e 38 20 30 2e 38 5d 2c 20 2e 2e 2e 0a 09 27 4d | ..'Color',[0.8.0.8.0.8],......'M |
| 1ec0 | 65 6e 75 42 61 72 27 2c 27 6e 6f 6e 65 27 2c 20 2e 2e 2e 0a 09 27 52 65 73 69 7a 65 27 2c 27 6f | enuBar','none',......'Resize','o |
| 1ee0 | 66 66 27 2c 20 2e 2e 2e 0a 09 27 4e 61 6d 65 27 2c 74 69 74 6c 65 5f 66 69 67 75 72 65 2c 20 2e | ff',......'Name',title_figure,.. |
| 1f00 | 2e 2e 0a 27 50 6f 73 69 74 69 6f 6e 27 2c 5b 70 6f 73 28 31 29 20 70 6f 73 28 32 29 20 66 69 67 | ...'Position',[pos(1).pos(2).fig |
| 1f20 | 5f 73 69 7a 65 5f 78 20 66 69 67 5f 73 69 7a 65 5f 79 5d 2c 20 2e 2e 2e 0a 27 4e 75 6d 62 65 72 | _size_x.fig_size_y],.....'Number |
| 1f40 | 54 69 74 6c 65 27 2c 27 6f 66 66 27 29 3b 0a 0a 0a 66 6f 72 20 69 3d 6e 5f 72 6f 77 3a 2d 31 3a | Title','off');...for.i=n_row:-1: |
| 1f60 | 31 2c 0a 20 20 20 66 6f 72 20 6a 20 3d 20 6e 5f 63 6f 6c 3a 2d 31 3a 31 2c 0a 20 20 20 20 20 20 | 1,....for.j.=.n_col:-1:1,....... |
| 1f80 | 69 66 20 28 7e 69 73 65 6d 70 74 79 28 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 69 2c 6a 7d 29 | if.(~isempty(callback_list{i,j}) |
| 1fa0 | 29 26 28 7e 69 73 65 6d 70 74 79 28 73 74 72 69 6e 67 5f 6c 69 73 74 7b 69 2c 6a 7d 29 29 2c 0a | )&(~isempty(string_list{i,j})),. |
| 1fc0 | 20 20 20 20 20 20 09 75 69 63 6f 6e 74 72 6f 6c 28 27 50 61 72 65 6e 74 27 2c 66 69 67 5f 6e 75 | .......uicontrol('Parent',fig_nu |
| 1fe0 | 6d 62 65 72 2c 20 2e 2e 2e 0a 20 20 20 20 20 20 20 20 20 09 27 55 6e 69 74 73 27 2c 27 70 6f 69 | mber,...............'Units','poi |
| 2000 | 6e 74 73 27 2c 20 2e 2e 2e 0a 09 09 09 09 27 43 61 6c 6c 62 61 63 6b 27 2c 63 61 6c 6c 62 61 63 | nts',.........'Callback',callbac |
| 2020 | 6b 5f 6c 69 73 74 7b 69 2c 6a 7d 2c 20 2e 2e 2e 0a 09 09 09 09 27 4c 69 73 74 62 6f 78 54 6f 70 | k_list{i,j},.........'ListboxTop |
| 2040 | 27 2c 30 2c 20 2e 2e 2e 0a 09 09 09 09 27 50 6f 73 69 74 69 6f 6e 27 2c 5b 28 32 2b 28 6a 2d 31 | ',0,.........'Position',[(2+(j-1 |
| 2060 | 29 2a 28 78 5f 73 69 7a 65 2b 32 29 29 20 20 20 28 66 69 67 5f 73 69 7a 65 5f 79 20 2d 20 69 2a | )*(x_size+2))...(fig_size_y.-.i* |
| 2080 | 28 32 2b 79 5f 73 69 7a 65 29 29 20 20 78 5f 73 69 7a 65 20 20 20 79 5f 73 69 7a 65 5d 2c 20 2e | (2+y_size))..x_size...y_size],.. |
| 20a0 | 2e 2e 0a 09 09 09 09 27 53 74 72 69 6e 67 27 2c 73 74 72 69 6e 67 5f 6c 69 73 74 7b 69 2c 6a 7d | .......'String',string_list{i,j} |
| 20c0 | 2c 20 2e 2e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 27 54 61 67 27 2c 27 50 75 73 68 62 75 74 | ,.................'Tag','Pushbut |
| 20e0 | 74 6f 6e 31 27 29 3b 0a 20 20 20 20 20 20 65 6e 64 3b 20 20 0a 09 65 6e 64 3b 0a 65 6e 64 3b 0a | ton1');.......end;....end;.end;. |
| 2100 | 0a 74 69 6f 6e 20 74 6f 6f 6c 62 6f 78 20 28 32 44 20 61 6e 64 20 33 44 20 72 69 67 73 29 20 20 | .tion.toolbox.(2D.and.3D.rigs).. |
| 2120 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ |
| 2140 | 7c 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 | |\n');.fprintf(1,'|............. |
| 2160 | 20 20 20 20 20 20 20 20 20 20 20 28 63 29 20 4a 65 61 6e 2d 59 76 65 73 20 42 6f 75 67 75 65 74 | ...........(c).Jean-Yves.Bouguet |
| 2180 | 20 2d 20 53 65 70 74 65 6d 62 65 72 20 39 74 68 2c 20 31 39 39 39 20 20 20 20 20 20 20 20 20 20 | .-.September.9th,.1999.......... |
| 21a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 5c 6e 27 29 3b 0a 66 70 | .......................|\n');.fp |
| 21c0 | 72 69 6e 74 66 28 31 2c 27 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | rintf(1,'*---------------------- |
| 21e0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------------------------- |
| 2200 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 61 6c 69 62 33 44 5f 67 75 69 2e 6d 00 00 00 00 00 | TOOLBOX_calib/calib3D_gui.m..... |
| 2220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2260 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 2280 | 20 20 31 33 37 30 35 20 20 37 30 32 34 30 33 37 33 30 33 20 20 31 30 37 32 35 00 20 00 00 00 00 | ..13705..7024037303..10725...... |
| 22a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 23a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 23c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 23e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2400 | 69 66 20 7e 65 78 69 73 74 28 27 69 6e 73 74 72 75 63 74 69 6f 6e 73 33 44 27 29 2c 20 69 6e 73 | if.~exist('instructions3D'),.ins |
| 2420 | 74 72 75 63 74 69 6f 6e 73 33 44 20 3d 20 31 3b 20 65 6e 64 3b 0a 0a 69 66 20 69 6e 73 74 72 75 | tructions3D.=.1;.end;..if.instru |
| 2440 | 63 74 69 6f 6e 73 33 44 2c 0a 20 20 20 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 27 29 3b 0a 66 | ctions3D,.....fprintf(1,'\n');.f |
| 2460 | 70 72 69 6e 74 66 28 31 2c 27 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | printf(1,'*--------------------- |
| 2480 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------------------------- |
| 24a0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------------------------- |
| 24c0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2a 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c | ---------------*\n');.fprintf(1, |
| 24e0 | 27 7c 20 20 20 20 20 20 20 20 20 20 20 43 61 6e 65 72 61 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 | '|...........Canera.calibration. |
| 2500 | 66 72 6f 6d 20 6d 75 6c 74 69 70 6c 65 20 69 6d 61 67 65 73 20 6f 66 20 74 68 65 20 49 6e 74 65 | from.multiple.images.of.the.Inte |
| 2520 | 6c 20 33 44 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 72 69 67 20 20 20 20 20 20 20 20 20 20 20 20 | l.3D.calibration.rig............ |
| 2540 | 20 20 20 20 20 20 7c 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 7c 20 20 20 20 20 20 20 | ......|\n');.fprintf(1,'|....... |
| 2560 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 29 20 4a 65 61 6e 2d 59 76 65 73 20 | ..................(c).Jean-Yves. |
| 2580 | 42 6f 75 67 75 65 74 20 2d 20 53 65 70 74 65 6d 62 65 72 20 32 6e 64 2c 20 31 39 39 39 20 20 20 | Bouguet.-.September.2nd,.1999... |
| 25a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 5c 6e | .............................|\n |
| 25c0 | 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ');.fprintf(1,'*---------------- |
| 25e0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------------------------- |
| 2600 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------------------------- |
| 2620 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2a 5c 6e 5c 6e 5c 6e 27 29 3b 0a 0a | --------------------*\n\n\n');.. |
| 2640 | 66 70 72 69 6e 74 66 28 31 2c 27 4c 49 53 54 20 4f 46 20 43 41 4c 49 42 52 41 54 49 4f 4e 20 43 | fprintf(1,'LIST.OF.CALIBRATION.C |
| 2660 | 4f 4d 4d 41 4e 44 53 20 28 74 6f 20 62 65 20 65 78 65 63 75 74 65 64 20 66 72 6f 6d 20 31 20 74 | OMMANDS.(to.be.executed.from.1.t |
| 2680 | 6f 20 35 29 3a 5c 6e 5c 6e 27 29 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 31 2d 20 49 6d 61 67 | o.5):\n\n');..fprintf(1,'1-.Imag |
| 26a0 | 65 20 6e 61 6d 65 73 3a 20 20 20 20 20 20 20 20 20 20 4c 65 74 73 20 74 68 65 20 75 73 65 72 20 | e.names:..........Lets.the.user. |
| 26c0 | 65 6e 74 65 72 20 74 68 65 20 66 69 6c 65 20 6e 61 6d 65 73 20 6f 66 20 74 68 65 20 63 61 6c 69 | enter.the.file.names.of.the.cali |
| 26e0 | 62 72 61 74 69 6f 6e 20 69 6d 61 67 65 73 20 28 6d 61 78 20 3d 20 33 30 20 69 6d 61 67 65 73 29 | bration.images.(max.=.30.images) |
| 2700 | 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .\n');.fprintf(1,'.............. |
| 2720 | 20 20 20 20 20 20 20 20 20 20 20 49 74 20 69 6e 63 6c 75 64 65 73 20 62 61 73 65 6e 61 6d 65 2c | ...........It.includes.basename, |
| 2740 | 20 69 6d 61 67 65 20 74 79 70 65 20 28 27 27 74 69 66 27 27 2c 20 27 27 62 6d 70 27 27 20 6f 72 | .image.type.(''tif'',.''bmp''.or |
| 2760 | 20 27 27 72 61 73 27 27 29 2c 20 6e 75 6d 62 65 72 69 6e 67 20 73 63 68 65 6d 65 2e 5c 6e 27 29 | .''ras''),.numbering.scheme.\n') |
| 2780 | 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ;.fprintf(1,'................... |
| 27a0 | 20 20 20 20 20 20 41 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 6c 61 75 6e 63 68 73 20 74 68 65 20 | ......Automatically.launchs.the. |
| 27c0 | 6e 65 78 74 20 73 74 65 70 20 28 52 65 61 64 20 69 6d 61 67 65 73 29 2e 5c 6e 27 29 3b 0a 66 70 | next.step.(Read.images).\n');.fp |
| 27e0 | 72 69 6e 74 66 28 31 2c 27 32 2d 20 52 65 61 64 20 69 6d 61 67 65 73 3a 20 20 20 20 20 20 20 20 | rintf(1,'2-.Read.images:........ |
| 2800 | 20 20 52 65 61 64 73 20 69 6e 20 74 68 65 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 69 6d 61 67 65 | ..Reads.in.the.calibration.image |
| 2820 | 73 20 66 72 6f 6d 20 66 69 6c 65 73 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 | s.from.files.\n');.fprintf(1,'.. |
| 2840 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 6f 65 73 20 6e 6f 74 20 | .......................Does.not. |
| 2860 | 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 6c 61 75 6e 63 68 20 74 68 65 20 6e 65 78 74 20 73 74 | automatically.launch.the.next.st |
| 2880 | 65 70 20 28 45 78 74 72 61 63 74 20 67 72 69 64 20 63 6f 72 6e 65 72 73 29 2e 5c 6e 27 29 3b 0a | ep.(Extract.grid.corners).\n');. |
| 28a0 | 66 70 72 69 6e 74 66 28 31 2c 27 33 2d 20 45 78 74 72 61 63 74 20 67 72 69 64 20 63 6f 72 6e 65 | fprintf(1,'3-.Extract.grid.corne |
| 28c0 | 72 73 3a 20 45 78 74 72 61 63 74 73 20 74 68 65 20 67 72 69 64 20 63 6f 72 6e 65 72 73 20 66 72 | rs:.Extracts.the.grid.corners.fr |
| 28e0 | 6f 6d 20 74 68 65 20 69 6d 61 67 65 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 | om.the.image.\n');.fprintf(1,'.. |
| 2900 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 61 73 65 64 20 73 69 78 | .......................Based.six |
| 2920 | 20 6d 61 75 61 6c 20 63 6c 69 63 6b 73 20 70 65 72 20 69 6d 61 67 65 2e 5c 6e 27 29 3b 0a 66 70 | .maual.clicks.per.image.\n');.fp |
| 2940 | 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | rintf(1,'....................... |
| 2960 | 20 20 54 68 65 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 64 61 74 61 20 69 73 20 73 61 76 65 64 20 | ..The.calibration.data.is.saved. |
| 2980 | 75 6e 64 65 72 20 27 27 63 61 6c 69 62 5f 64 61 74 61 2e 6d 61 74 27 27 2e 5c 6e 27 29 3b 0a 66 | under.''calib_data.mat''.\n');.f |
| 29a0 | 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | printf(1,'...................... |
| 29c0 | 20 20 20 41 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 6c 61 75 6e 63 68 73 20 74 68 65 20 6e 65 78 | ...Automatically.launchs.the.nex |
| 29e0 | 74 20 73 74 65 70 20 28 52 75 6e 20 63 61 6c 69 62 72 61 74 69 6f 6e 29 2e 5c 6e 27 29 3b 0a 66 | t.step.(Run.calibration).\n');.f |
| 2a00 | 70 72 69 6e 74 66 28 31 2c 27 34 2d 20 52 75 6e 20 63 61 6c 69 62 72 61 74 69 6f 6e 3a 20 20 20 | printf(1,'4-.Run.calibration:... |
| 2a20 | 20 20 20 4d 61 69 6e 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 70 72 6f 63 65 64 75 72 65 2e 5c 6e | ...Main.calibration.procedure.\n |
| 2a40 | 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ');.fprintf(1,'................. |
| 2a60 | 20 20 20 20 20 20 20 20 4f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 6f 66 20 69 6e 74 72 69 6e 73 69 | ........Optimization.of.intrinsi |
| 2a80 | 63 20 61 6e 64 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20 6d 69 | c.and.extrinsic.parameters.to.mi |
| 2aa0 | 6e 69 6d 69 7a 65 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 | nimize\n');.fprintf(1,'......... |
| 2ac0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 20 72 65 70 72 6f 6a 65 63 74 69 6f 6e | ................the.reprojection |
| 2ae0 | 20 65 72 72 6f 72 20 28 69 6e 20 74 68 65 20 6c 65 61 73 74 20 73 71 75 61 72 65 73 20 73 65 6e | .error.(in.the.least.squares.sen |
| 2b00 | 73 65 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 | se.\n');.fprintf(1,'............ |
| 2b20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 45 73 74 69 6d 61 74 65 64 20 70 61 72 61 6d 65 74 65 72 | .............Estimated.parameter |
| 2b40 | 73 3a 20 32 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 73 2c 20 70 72 69 6e 63 69 70 61 6c 20 70 6f | s:.2.focal.lengths,.principal.po |
| 2b60 | 69 6e 74 2c 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 | int,\n');.fprintf(1,'........... |
| 2b80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 64 69 61 6c 20 28 32 20 63 6f 65 66 66 2e 20 2d | ..............radial.(2.coeff..- |
| 2ba0 | 3e 20 34 20 64 65 67 72 65 65 20 6d 6f 64 65 6c 29 20 61 6e 64 20 74 61 6e 67 65 6e 74 69 61 6c | >.4.degree.model).and.tangential |
| 2bc0 | 20 28 32 20 63 6f 65 66 66 2e 29 20 64 69 73 74 6f 72 74 69 6f 6e 2c 5c 6e 27 29 3b 0a 66 70 72 | .(2.coeff.).distortion,\n');.fpr |
| 2be0 | 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | intf(1,'........................ |
| 2c00 | 20 61 6e 64 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 28 36 20 70 61 72 | .and.extrinsic.parameters.(6.par |
| 2c20 | 61 6d 65 74 65 72 73 20 70 65 72 20 69 6d 61 67 65 29 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 | ameters.per.image).\n');.fprintf |
| 2c40 | 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 68 65 | (1,'.........................The |
| 2c60 | 20 66 69 6e 61 6c 20 73 6f 6c 75 74 69 6f 6e 20 69 73 20 73 61 76 65 64 20 75 6e 64 65 72 20 27 | .final.solution.is.saved.under.' |
| 2c80 | 27 43 61 6c 69 62 5f 52 65 73 75 6c 74 73 2e 6d 61 74 27 27 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e | 'Calib_Results.mat''.\n');.fprin |
| 2ca0 | 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 | tf(1,'.........................F |
| 2cc0 | 6f 72 20 61 20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e 74 72 69 6e 73 69 | or.a.description.of.the.intrinsi |
| 2ce0 | 63 20 63 61 6d 65 72 61 20 6d 6f 64 65 6c 2c 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 72 65 66 | c.camera.model,.refer.to.the.ref |
| 2d00 | 65 72 65 6e 63 65 3a 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 | erence:\n');.fprintf(1,'........ |
| 2d20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 41 20 46 6f 75 72 2d 73 74 65 70 20 43 61 | ................."A.Four-step.Ca |
| 2d40 | 6d 65 72 61 20 43 61 6c 69 62 72 61 74 69 6f 6e 20 50 72 6f 63 65 64 75 72 65 20 77 69 74 68 20 | mera.Calibration.Procedure.with. |
| 2d60 | 69 6d 70 6c 69 63 69 74 20 49 6d 61 67 65 20 43 6f 72 72 65 63 74 69 6f 6e 22 5c 6e 27 29 3b 0a | implicit.Image.Correction"\n');. |
| 2d80 | 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | fprintf(1,'..................... |
| 2da0 | 20 20 20 20 4a 61 6e 6e 65 20 48 65 69 6b 6b 69 6c 61 20 61 6e 64 20 4f 6c 6c 69 20 53 69 6c 76 | ....Janne.Heikkila.and.Olli.Silv |
| 2dc0 | 65 6e 2c 20 49 6e 66 6f 74 65 63 68 20 4f 75 6c 75 20 61 6e 64 20 44 65 70 61 72 74 6d 65 6e 74 | en,.Infotech.Oulu.and.Department |
| 2de0 | 20 6f 66 20 45 45 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 | .of.EE\n');.fprintf(1,'......... |
| 2e00 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 69 76 65 72 73 69 74 79 20 6f 66 20 4f 75 | ................University.of.Ou |
| 2e20 | 6c 75 2c 20 41 70 70 65 61 72 65 64 20 69 6e 20 43 56 50 52 27 27 39 37 2c 20 50 75 65 72 74 6f | lu,.Appeared.in.CVPR''97,.Puerto |
| 2e40 | 20 52 69 63 6f 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 | .Rico.\n');.fprintf(1,'......... |
| 2e60 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 56 69 73 69 74 20 68 74 74 70 3a 2f 2f 77 77 77 | ................Visit.http://www |
| 2e80 | 2e 65 65 2e 6f 75 6c 75 2e 66 69 2f 7e 6a 74 68 2f 63 61 6c 69 62 72 2f 43 61 6c 69 62 72 61 74 | .ee.oulu.fi/~jth/calibr/Calibrat |
| 2ea0 | 69 6f 6e 2e 68 74 6d 6c 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 | ion.html\n');.fprintf(1,'....... |
| 2ec0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 | ..................Automatically. |
| 2ee0 | 6c 61 75 6e 63 68 73 20 74 68 65 20 6e 65 78 74 20 73 74 65 70 20 28 47 72 61 70 68 69 63 20 6f | launchs.the.next.step.(Graphic.o |
| 2f00 | 75 74 29 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 35 2d 20 47 72 61 70 68 69 63 20 | ut).\n');.fprintf(1,'5-.Graphic. |
| 2f20 | 6f 75 74 3a 20 20 20 20 20 20 20 20 20 20 47 65 6e 65 72 61 74 65 73 20 74 68 65 20 67 72 61 70 | out:..........Generates.the.grap |
| 2f40 | 68 69 63 61 6c 20 6f 75 74 70 75 74 20 61 73 73 6f 63 69 61 74 65 64 20 74 6f 20 74 68 65 20 63 | hical.output.associated.to.the.c |
| 2f60 | 75 72 72 65 6e 74 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 73 6f 6c 75 74 69 6f 6e 2e 5c 6e 27 29 | urrent.calibration.solution.\n') |
| 2f80 | 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ;.fprintf(1,'................... |
| 2fa0 | 20 20 20 20 20 20 49 74 20 73 68 6f 77 73 20 74 68 65 20 33 44 20 6c 6f 63 61 74 69 6f 6e 73 20 | ......It.shows.the.3D.locations. |
| 2fc0 | 6f 66 20 74 68 65 20 67 72 69 64 73 2c 20 61 6e 64 20 72 65 70 72 6f 6a 65 63 74 73 20 74 68 65 | of.the.grids,.and.reprojects.the |
| 2fe0 | 20 33 44 20 70 61 74 74 65 72 6e 73 20 6f 6e 20 74 68 65 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 | .3D.patterns.on.the\n');.fprintf |
| 3000 | 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 72 69 | (1,'.........................ori |
| 3020 | 67 69 6e 61 6c 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 69 6d 61 67 65 73 2e 5c 6e 27 29 3b 0a 66 | ginal.calibration.images.\n');.f |
| 3040 | 70 72 69 6e 74 66 28 31 2c 27 36 2d 20 73 6f 6c 2e 20 77 69 74 68 20 63 65 6e 74 65 72 3a 20 20 | printf(1,'6-.sol..with.center:.. |
| 3060 | 20 20 20 4c 65 74 73 20 74 68 65 20 75 73 65 72 20 73 65 6c 65 63 74 20 74 68 65 20 63 61 6c 69 | ...Lets.the.user.select.the.cali |
| 3080 | 62 72 61 74 69 6f 6e 20 73 6f 6c 75 74 69 6f 6e 20 77 69 74 68 20 63 6f 6d 70 75 74 65 64 20 70 | bration.solution.with.computed.p |
| 30a0 | 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 | rincipal.point.\n');.fprintf(1,' |
| 30c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 68 69 73 20 69 73 | .........................This.is |
| 30e0 | 20 74 68 65 20 64 65 66 61 75 6c 74 20 63 61 73 65 20 28 73 6f 6c 75 74 69 6f 6e 20 72 65 74 61 | .the.default.case.(solution.reta |
| 3100 | 69 6e 65 64 20 61 66 74 65 72 20 52 75 6e 20 63 61 6c 69 62 72 61 74 69 6f 6e 29 2e 5c 6e 27 29 | ined.after.Run.calibration).\n') |
| 3120 | 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ;.fprintf(1,'................... |
| 3140 | 20 20 20 20 20 20 41 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 28 72 65 29 67 65 6e 65 72 61 74 65 | ......Automatically.(re)generate |
| 3160 | 73 20 74 68 65 20 67 72 61 70 68 69 63 61 6c 20 6f 75 74 70 75 74 20 61 73 73 6f 63 69 61 74 65 | s.the.graphical.output.associate |
| 3180 | 64 20 74 6f 20 74 68 61 74 20 73 6f 6c 75 74 69 6f 6e 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 | d.to.that.solution.\n');.fprintf |
| 31a0 | 28 31 2c 27 37 2d 20 73 6f 6c 2e 20 77 69 74 68 6f 75 74 20 63 65 6e 74 65 72 3a 20 20 4c 65 74 | (1,'7-.sol..without.center:..Let |
| 31c0 | 73 20 74 68 65 20 75 73 65 72 73 20 73 65 6c 65 63 74 20 74 68 65 20 63 61 6c 69 62 72 61 74 69 | s.the.users.select.the.calibrati |
| 31e0 | 6f 6e 20 73 6f 6c 75 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 63 6f 6d 70 75 74 65 64 20 70 72 69 | on.solution.without.computed.pri |
| 3200 | 6e 63 69 70 61 6c 20 70 6f 69 6e 74 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 | ncipal.point.\n');.fprintf(1,'.. |
| 3220 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 20 74 68 61 74 20 63 | .......................In.that.c |
| 3240 | 61 73 65 2c 20 74 68 65 20 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 69 73 20 61 73 73 75 | ase,.the.principal.point.is.assu |
| 3260 | 6d 65 64 20 61 74 20 74 68 65 20 63 65 6e 74 65 72 20 6f 66 20 74 68 65 20 69 6d 61 67 65 2e 5c | med.at.the.center.of.the.image.\ |
| 3280 | 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | n');.fprintf(1,'................ |
| 32a0 | 20 20 20 20 20 20 20 20 20 41 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 67 65 6e 65 72 61 74 65 73 | .........Automatically.generates |
| 32c0 | 20 74 68 65 20 67 72 61 70 68 69 63 61 6c 20 6f 75 74 70 75 74 20 61 73 73 6f 63 69 61 74 65 64 | .the.graphical.output.associated |
| 32e0 | 20 74 6f 20 74 68 61 74 20 73 6f 6c 75 74 69 6f 6e 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 | .to.that.solution.\n');.fprintf( |
| 3300 | 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 68 69 73 | 1,'.........................This |
| 3320 | 20 6f 70 74 69 6f 6e 20 69 73 20 73 6f 6d 65 74 69 6d 65 73 20 75 73 65 66 75 6c 20 77 68 65 6e | .option.is.sometimes.useful.when |
| 3340 | 20 74 68 65 20 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 69 73 20 64 69 66 66 69 63 75 6c | .the.principal.point.is.difficul |
| 3360 | 74 20 74 6f 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 | t.to\n');.fprintf(1,'........... |
| 3380 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 73 74 69 6d 61 74 65 20 28 69 6e 20 70 61 72 74 69 | ..............estimate.(in.parti |
| 33a0 | 63 75 6c 61 72 20 77 68 65 6e 20 74 68 65 20 63 61 6d 65 72 61 20 66 69 65 6c 64 20 6f 66 20 76 | cular.when.the.camera.field.of.v |
| 33c0 | 69 65 77 20 69 73 20 73 6d 61 6c 6c 29 2e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 38 | iew.is.small).\n');.fprintf(1,'8 |
| 33e0 | 2d 20 42 61 63 6b 20 74 6f 20 6d 61 69 6e 3a 20 20 20 20 20 20 20 20 20 47 6f 65 73 20 62 61 63 | -.Back.to.main:.........Goes.bac |
| 3400 | 6b 20 74 6f 20 74 68 65 20 6d 61 69 6e 20 63 61 6c 62 72 61 74 69 6f 6e 20 74 6f 6f 6c 62 6f 78 | k.to.the.main.calbration.toolbox |
| 3420 | 20 77 69 6e 64 6f 77 2e 5c 6e 5c 6e 5c 6e 27 29 3b 0a 0a 65 6e 64 3b 0a 0a 69 6e 73 74 72 75 63 | .window.\n\n\n');..end;..instruc |
| 3440 | 74 69 6f 6e 73 33 44 20 3d 20 30 3b 0a 0a 67 6c 6f 62 61 6c 20 58 5f 31 20 78 5f 31 20 58 5f 32 | tions3D.=.0;..global.X_1.x_1.X_2 |
| 3460 | 20 78 5f 32 20 58 5f 33 20 78 5f 33 20 58 5f 34 20 78 5f 34 20 58 5f 35 20 78 5f 35 20 58 5f 36 | .x_2.X_3.x_3.X_4.x_4.X_5.x_5.X_6 |
| 3480 | 20 78 5f 36 20 58 5f 37 20 78 5f 37 20 58 5f 38 20 78 5f 38 20 58 5f 39 20 78 5f 39 20 58 5f 31 | .x_6.X_7.x_7.X_8.x_8.X_9.x_9.X_1 |
| 34a0 | 30 20 78 5f 31 30 20 58 5f 31 31 20 78 5f 31 31 20 58 5f 31 32 20 78 5f 31 32 20 58 5f 31 33 20 | 0.x_10.X_11.x_11.X_12.x_12.X_13. |
| 34c0 | 78 5f 31 33 20 58 5f 31 34 20 78 5f 31 34 20 58 5f 31 35 20 78 5f 31 35 20 58 5f 31 36 20 78 5f | x_13.X_14.x_14.X_15.x_15.X_16.x_ |
| 34e0 | 31 36 20 58 5f 31 37 20 78 5f 31 37 20 58 5f 31 38 20 78 5f 31 38 20 58 5f 31 39 20 78 5f 31 39 | 16.X_17.x_17.X_18.x_18.X_19.x_19 |
| 3500 | 20 58 5f 32 30 20 78 5f 32 30 20 58 5f 32 31 20 78 5f 32 31 20 58 5f 32 32 20 78 5f 32 32 20 58 | .X_20.x_20.X_21.x_21.X_22.x_22.X |
| 3520 | 5f 32 33 20 78 5f 32 33 20 58 5f 32 34 20 78 5f 32 34 20 58 5f 32 35 20 78 5f 32 35 20 58 5f 32 | _23.x_23.X_24.x_24.X_25.x_25.X_2 |
| 3540 | 36 20 78 5f 32 36 20 58 5f 32 37 20 78 5f 32 37 20 58 5f 32 38 20 78 5f 32 38 20 58 5f 32 39 20 | 6.x_26.X_27.x_27.X_28.x_28.X_29. |
| 3560 | 78 5f 32 39 20 58 5f 33 30 20 78 5f 33 30 20 0a 0a 0a 66 69 67 5f 6e 75 6d 62 65 72 20 3d 20 31 | x_29.X_30.x_30....fig_number.=.1 |
| 3580 | 3b 0a 0a 6e 5f 72 6f 77 20 3d 20 32 3b 0a 6e 5f 63 6f 6c 20 3d 20 34 3b 0a 0a 73 74 72 69 6e 67 | ;..n_row.=.2;.n_col.=.4;..string |
| 35a0 | 5f 6c 69 73 74 20 3d 20 63 65 6c 6c 28 6e 5f 72 6f 77 2c 6e 5f 63 6f 6c 29 3b 0a 63 61 6c 6c 62 | _list.=.cell(n_row,n_col);.callb |
| 35c0 | 61 63 6b 5f 6c 69 73 74 20 3d 20 63 65 6c 6c 28 6e 5f 72 6f 77 2c 6e 5f 63 6f 6c 29 3b 0a 0a 78 | ack_list.=.cell(n_row,n_col);..x |
| 35e0 | 5f 73 69 7a 65 20 3d 20 38 35 3b 0a 79 5f 73 69 7a 65 20 3d 20 32 30 3b 0a 0a 74 69 74 6c 65 5f | _size.=.85;.y_size.=.20;..title_ |
| 3600 | 66 69 67 75 72 65 20 3d 20 27 43 61 6d 65 72 61 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 74 6f 6f | figure.=.'Camera.calibration.too |
| 3620 | 6c 20 28 33 44 20 72 69 67 29 27 3b 0a 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 31 2c 31 7d 20 3d | l.(3D.rig)';..string_list{1,1}.= |
| 3640 | 20 27 49 6d 61 67 65 20 6e 61 6d 65 73 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 31 2c 32 7d | .'Image.names';.string_list{1,2} |
| 3660 | 20 3d 20 27 52 65 61 64 20 69 6d 61 67 65 73 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 31 2c | .=.'Read.images';.string_list{1, |
| 3680 | 33 7d 20 3d 20 27 45 78 74 72 61 63 74 20 67 72 69 64 20 63 6f 72 6e 65 72 73 27 3b 0a 73 74 72 | 3}.=.'Extract.grid.corners';.str |
| 36a0 | 69 6e 67 5f 6c 69 73 74 7b 31 2c 34 7d 20 3d 20 27 52 75 6e 20 63 61 6c 69 62 72 61 74 69 6f 6e | ing_list{1,4}.=.'Run.calibration |
| 36c0 | 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 32 2c 31 7d 20 3d 20 27 47 72 61 70 68 69 63 20 6f | ';.string_list{2,1}.=.'Graphic.o |
| 36e0 | 75 74 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 32 2c 32 7d 20 3d 20 27 73 6f 6c 2e 20 77 69 | ut';.string_list{2,2}.=.'sol..wi |
| 3700 | 74 68 20 63 65 6e 74 65 72 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 32 2c 33 7d 20 3d 20 27 | th.center';.string_list{2,3}.=.' |
| 3720 | 73 6f 6c 2e 20 77 69 74 68 6f 75 74 20 63 65 6e 74 65 72 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 | sol..without.center';.string_lis |
| 3740 | 74 7b 32 2c 34 7d 20 3d 20 27 42 61 63 6b 20 74 6f 20 6d 61 69 6e 27 3b 0a 0a 63 61 6c 6c 62 61 | t{2,4}.=.'Back.to.main';..callba |
| 3760 | 63 6b 5f 6c 69 73 74 7b 31 2c 31 7d 20 3d 20 27 64 61 74 61 5f 63 61 6c 69 62 3b 27 3b 0a 63 61 | ck_list{1,1}.=.'data_calib;';.ca |
| 3780 | 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 31 2c 32 7d 20 3d 20 27 69 6d 61 5f 72 65 61 64 5f 63 61 6c | llback_list{1,2}.=.'ima_read_cal |
| 37a0 | 69 62 3b 27 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 31 2c 33 7d 20 3d 20 27 63 6c 69 63 | ib;';.callback_list{1,3}.=.'clic |
| 37c0 | 6b 5f 63 61 6c 69 62 33 44 3b 27 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 31 2c 34 7d 20 | k_calib3D;';.callback_list{1,4}. |
| 37e0 | 3d 20 27 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 33 44 3b 27 3b 0a 63 61 6c 6c 62 61 63 6b 5f | =.'go_calib_optim3D;';.callback_ |
| 3800 | 6c 69 73 74 7b 32 2c 31 7d 20 3d 20 27 67 72 61 70 68 6f 75 74 5f 63 61 6c 69 62 33 44 3b 27 3b | list{2,1}.=.'graphout_calib3D;'; |
| 3820 | 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 32 2c 32 7d 20 3d 20 27 73 65 6c 65 63 74 5f 73 6f | .callback_list{2,2}.=.'select_so |
| 3840 | 6c 5f 77 69 74 68 5f 63 65 6e 74 65 72 33 44 3b 27 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 | l_with_center3D;';.callback_list |
| 3860 | 7b 32 2c 33 7d 20 3d 20 27 73 65 6c 65 63 74 5f 73 6f 6c 5f 6e 6f 5f 63 65 6e 74 65 72 33 44 3b | {2,3}.=.'select_sol_no_center3D; |
| 3880 | 27 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 32 2c 34 7d 20 3d 20 27 63 61 6c 69 62 3b 27 | ';.callback_list{2,4}.=.'calib;' |
| 38a0 | 3b 0a 0a 0a 66 69 67 75 72 65 28 66 69 67 5f 6e 75 6d 62 65 72 29 3b 20 63 6c 66 3b 0a 70 6f 73 | ;...figure(fig_number);.clf;.pos |
| 38c0 | 20 3d 20 67 65 74 28 66 69 67 5f 6e 75 6d 62 65 72 2c 27 50 6f 73 69 74 69 6f 6e 27 29 3b 0a 0a | .=.get(fig_number,'Position');.. |
| 38e0 | 66 69 67 5f 73 69 7a 65 5f 78 20 3d 20 78 5f 73 69 7a 65 2a 6e 5f 63 6f 6c 2b 28 6e 5f 63 6f 6c | fig_size_x.=.x_size*n_col+(n_col |
| 3900 | 2b 31 29 2a 32 3b 0a 66 69 67 5f 73 69 7a 65 5f 79 20 3d 20 79 5f 73 69 7a 65 2a 6e 5f 72 6f 77 | +1)*2;.fig_size_y.=.y_size*n_row |
| 3920 | 2b 28 6e 5f 72 6f 77 2b 31 29 2a 32 3b 0a 0a 73 65 74 28 66 69 67 5f 6e 75 6d 62 65 72 2c 27 55 | +(n_row+1)*2;..set(fig_number,'U |
| 3940 | 6e 69 74 73 27 2c 27 70 6f 69 6e 74 73 27 2c 20 2e 2e 2e 0a 09 27 42 61 63 6b 69 6e 67 53 74 6f | nits','points',......'BackingSto |
| 3960 | 72 65 27 2c 27 6f 66 66 27 2c 20 2e 2e 2e 0a 09 27 43 6f 6c 6f 72 27 2c 5b 30 2e 38 20 30 2e 38 | re','off',......'Color',[0.8.0.8 |
| 3980 | 20 30 2e 38 5d 2c 20 2e 2e 2e 0a 09 27 4d 65 6e 75 42 61 72 27 2c 27 6e 6f 6e 65 27 2c 20 2e 2e | .0.8],......'MenuBar','none',... |
| 39a0 | 2e 0a 09 27 52 65 73 69 7a 65 27 2c 27 6f 66 66 27 2c 20 2e 2e 2e 0a 09 27 4e 61 6d 65 27 2c 74 | ...'Resize','off',......'Name',t |
| 39c0 | 69 74 6c 65 5f 66 69 67 75 72 65 2c 20 2e 2e 2e 0a 27 50 6f 73 69 74 69 6f 6e 27 2c 5b 70 6f 73 | itle_figure,.....'Position',[pos |
| 39e0 | 28 31 29 20 70 6f 73 28 32 29 20 66 69 67 5f 73 69 7a 65 5f 78 20 66 69 67 5f 73 69 7a 65 5f 79 | (1).pos(2).fig_size_x.fig_size_y |
| 3a00 | 5d 2c 20 2e 2e 2e 0a 27 4e 75 6d 62 65 72 54 69 74 6c 65 27 2c 27 6f 66 66 27 29 3b 0a 0a 0a 66 | ],.....'NumberTitle','off');...f |
| 3a20 | 6f 72 20 69 3d 6e 5f 72 6f 77 3a 2d 31 3a 31 2c 0a 20 20 20 66 6f 72 20 6a 20 3d 20 6e 5f 63 6f | or.i=n_row:-1:1,....for.j.=.n_co |
| 3a40 | 6c 3a 2d 31 3a 31 2c 0a 20 20 20 20 20 20 69 66 20 28 7e 69 73 65 6d 70 74 79 28 63 61 6c 6c 62 | l:-1:1,.......if.(~isempty(callb |
| 3a60 | 61 63 6b 5f 6c 69 73 74 7b 69 2c 6a 7d 29 29 26 28 7e 69 73 65 6d 70 74 79 28 73 74 72 69 6e 67 | ack_list{i,j}))&(~isempty(string |
| 3a80 | 5f 6c 69 73 74 7b 69 2c 6a 7d 29 29 2c 0a 20 20 20 20 20 20 09 75 69 63 6f 6e 74 72 6f 6c 28 27 | _list{i,j})),........uicontrol(' |
| 3aa0 | 50 61 72 65 6e 74 27 2c 66 69 67 5f 6e 75 6d 62 65 72 2c 20 2e 2e 2e 0a 20 20 20 20 20 20 20 20 | Parent',fig_number,............. |
| 3ac0 | 20 09 27 55 6e 69 74 73 27 2c 27 70 6f 69 6e 74 73 27 2c 20 2e 2e 2e 0a 09 09 09 27 43 61 6c 6c | ..'Units','points',........'Call |
| 3ae0 | 62 61 63 6b 27 2c 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 69 2c 6a 7d 2c 20 2e 2e 2e 0a 09 09 | back',callback_list{i,j},....... |
| 3b00 | 09 27 4c 69 73 74 62 6f 78 54 6f 70 27 2c 30 2c 20 2e 2e 2e 0a 09 09 09 27 50 6f 73 69 74 69 6f | .'ListboxTop',0,........'Positio |
| 3b20 | 6e 27 2c 5b 28 32 2b 28 6a 2d 31 29 2a 28 78 5f 73 69 7a 65 2b 32 29 29 20 20 20 28 66 69 67 5f | n',[(2+(j-1)*(x_size+2))...(fig_ |
| 3b40 | 73 69 7a 65 5f 79 20 2d 20 69 2a 28 32 2b 79 5f 73 69 7a 65 29 29 20 20 78 5f 73 69 7a 65 20 20 | size_y.-.i*(2+y_size))..x_size.. |
| 3b60 | 20 79 5f 73 69 7a 65 5d 2c 20 2e 2e 2e 0a 09 09 09 27 53 74 72 69 6e 67 27 2c 73 74 72 69 6e 67 | .y_size],........'String',string |
| 3b80 | 5f 6c 69 73 74 7b 69 2c 6a 7d 2c 20 2e 2e 2e 0a 20 20 20 20 20 20 20 20 20 27 54 61 67 27 2c 27 | _list{i,j},..............'Tag',' |
| 3ba0 | 50 75 73 68 62 75 74 74 6f 6e 31 27 29 3b 0a 20 20 20 20 20 20 65 6e 64 3b 0a 09 65 6e 64 3b 0a | Pushbutton1');.......end;..end;. |
| 3bc0 | 65 6e 64 3b 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | end;............................ |
| 3be0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c00 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 61 6c 69 62 5f 67 75 69 2e 6d 00 00 00 00 00 00 00 | TOOLBOX_calib/calib_gui.m....... |
| 3c20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c60 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 3c80 | 20 20 20 34 35 32 35 20 20 37 30 32 34 30 33 37 33 30 33 20 20 31 30 35 31 36 00 20 00 00 00 00 | ...4525..7024037303..10516...... |
| 3ca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3cc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3ce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3d00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3d20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3d40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3d60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3d80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3e00 | 66 69 67 5f 6e 75 6d 62 65 72 20 3d 20 31 3b 0a 0a 6e 5f 72 6f 77 20 3d 20 35 3b 0a 6e 5f 63 6f | fig_number.=.1;..n_row.=.5;.n_co |
| 3e20 | 6c 20 3d 20 34 3b 0a 0a 73 74 72 69 6e 67 5f 6c 69 73 74 20 3d 20 63 65 6c 6c 28 6e 5f 72 6f 77 | l.=.4;..string_list.=.cell(n_row |
| 3e40 | 2c 6e 5f 63 6f 6c 29 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 20 3d 20 63 65 6c 6c 28 6e 5f | ,n_col);.callback_list.=.cell(n_ |
| 3e60 | 72 6f 77 2c 6e 5f 63 6f 6c 29 3b 0a 0a 78 5f 73 69 7a 65 20 3d 20 38 35 3b 0a 79 5f 73 69 7a 65 | row,n_col);..x_size.=.85;.y_size |
| 3e80 | 20 3d 20 32 30 3b 0a 0a 74 69 74 6c 65 5f 66 69 67 75 72 65 20 3d 20 27 43 61 6d 65 72 61 20 63 | .=.20;..title_figure.=.'Camera.c |
| 3ea0 | 61 6c 69 62 72 61 74 69 6f 6e 20 74 6f 6f 6c 20 28 32 44 20 72 69 67 29 27 3b 0a 0a 73 74 72 69 | alibration.tool.(2D.rig)';..stri |
| 3ec0 | 6e 67 5f 6c 69 73 74 7b 31 2c 31 7d 20 3d 20 27 49 6d 61 67 65 20 6e 61 6d 65 73 27 3b 0a 73 74 | ng_list{1,1}.=.'Image.names';.st |
| 3ee0 | 72 69 6e 67 5f 6c 69 73 74 7b 31 2c 32 7d 20 3d 20 27 52 65 61 64 20 69 6d 61 67 65 73 27 3b 0a | ring_list{1,2}.=.'Read.images';. |
| 3f00 | 73 74 72 69 6e 67 5f 6c 69 73 74 7b 31 2c 33 7d 20 3d 20 27 45 78 74 72 61 63 74 20 67 72 69 64 | string_list{1,3}.=.'Extract.grid |
| 3f20 | 20 63 6f 72 6e 65 72 73 27 3b 0a 25 73 74 72 69 6e 67 5f 6c 69 73 74 7b 31 2c 34 7d 20 3d 20 27 | .corners';.%string_list{1,4}.=.' |
| 3f40 | 49 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 31 2c 34 | Initialization';.string_list{1,4 |
| 3f60 | 7d 20 3d 20 27 43 61 6c 69 62 72 61 74 69 6f 6e 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 32 | }.=.'Calibration';.string_list{2 |
| 3f80 | 2c 31 7d 20 3d 20 27 53 68 6f 77 20 45 78 74 72 69 6e 73 69 63 27 3b 0a 73 74 72 69 6e 67 5f 6c | ,1}.=.'Show.Extrinsic';.string_l |
| 3fa0 | 69 73 74 7b 32 2c 32 7d 20 3d 20 27 52 65 70 72 6f 6a 65 63 74 20 6f 6e 20 69 6d 61 67 65 73 27 | ist{2,2}.=.'Reproject.on.images' |
| 3fc0 | 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 32 2c 33 7d 20 3d 20 27 41 6e 61 6c 79 73 65 20 65 72 | ;.string_list{2,3}.=.'Analyse.er |
| 3fe0 | 72 6f 72 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 32 2c 34 7d 20 3d 20 27 52 65 63 6f 6d 70 | ror';.string_list{2,4}.=.'Recomp |
| 4000 | 2e 20 63 6f 72 6e 65 72 73 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 33 2c 31 7d 20 3d 20 27 | ..corners';.string_list{3,1}.=.' |
| 4020 | 41 64 64 2f 53 75 70 70 72 65 73 73 20 69 6d 61 67 65 73 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 | Add/Suppress.images';.string_lis |
| 4040 | 74 7b 33 2c 32 7d 20 3d 20 27 53 61 76 65 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 33 2c 33 | t{3,2}.=.'Save';.string_list{3,3 |
| 4060 | 7d 20 3d 20 27 4c 6f 61 64 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 33 2c 34 7d 20 3d 20 27 | }.=.'Load';.string_list{3,4}.=.' |
| 4080 | 45 78 69 74 27 3b 0a 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 35 2c 31 7d 20 3d 20 27 43 6f 6d 70 | Exit';..string_list{5,1}.=.'Comp |
| 40a0 | 2e 20 45 78 74 72 69 6e 73 69 63 27 3b 0a 73 74 72 69 6e 67 5f 6c 69 73 74 7b 35 2c 32 7d 20 3d | ..Extrinsic';.string_list{5,2}.= |
| 40c0 | 20 27 55 6e 64 69 73 74 6f 72 74 20 69 6d 61 67 65 27 3b 0a 0a 0a 63 61 6c 6c 62 61 63 6b 5f 6c | .'Undistort.image';...callback_l |
| 40e0 | 69 73 74 7b 31 2c 31 7d 20 3d 20 27 64 61 74 61 5f 63 61 6c 69 62 3b 27 3b 0a 63 61 6c 6c 62 61 | ist{1,1}.=.'data_calib;';.callba |
| 4100 | 63 6b 5f 6c 69 73 74 7b 31 2c 32 7d 20 3d 20 27 69 6d 61 5f 72 65 61 64 5f 63 61 6c 69 62 3b 27 | ck_list{1,2}.=.'ima_read_calib;' |
| 4120 | 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 31 2c 33 7d 20 3d 20 27 63 6c 69 63 6b 5f 63 61 | ;.callback_list{1,3}.=.'click_ca |
| 4140 | 6c 69 62 3b 27 3b 0a 25 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 31 2c 34 7d 20 3d 20 27 69 6e | lib;';.%callback_list{1,4}.=.'in |
| 4160 | 69 74 5f 63 61 6c 69 62 5f 70 61 72 61 6d 3b 27 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b | it_calib_param;';.callback_list{ |
| 4180 | 31 2c 34 7d 20 3d 20 27 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 3b 27 3b 0a 63 61 6c 6c 62 61 | 1,4}.=.'go_calib_optim;';.callba |
| 41a0 | 63 6b 5f 6c 69 73 74 7b 32 2c 31 7d 20 3d 20 27 65 78 74 5f 63 61 6c 69 62 3b 27 3b 0a 63 61 6c | ck_list{2,1}.=.'ext_calib;';.cal |
| 41c0 | 6c 62 61 63 6b 5f 6c 69 73 74 7b 32 2c 32 7d 20 3d 20 27 72 65 70 72 6f 6a 65 63 74 5f 63 61 6c | lback_list{2,2}.=.'reproject_cal |
| 41e0 | 69 62 3b 27 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 32 2c 33 7d 20 3d 20 27 61 6e 61 6c | ib;';.callback_list{2,3}.=.'anal |
| 4200 | 79 73 65 5f 65 72 72 6f 72 3b 27 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 32 2c 34 7d 20 | yse_error;';.callback_list{2,4}. |
| 4220 | 3d 20 27 72 65 63 6f 6d 70 5f 63 6f 72 6e 65 72 5f 63 61 6c 69 62 3b 27 3b 0a 63 61 6c 6c 62 61 | =.'recomp_corner_calib;';.callba |
| 4240 | 63 6b 5f 6c 69 73 74 7b 33 2c 31 7d 20 3d 20 27 61 64 64 5f 73 75 70 70 72 65 73 73 3b 27 3b 0a | ck_list{3,1}.=.'add_suppress;';. |
| 4260 | 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 33 2c 32 7d 20 3d 20 27 73 61 76 69 6e 67 5f 63 61 6c | callback_list{3,2}.=.'saving_cal |
| 4280 | 69 62 3b 27 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 33 2c 33 7d 20 3d 20 27 6c 6f 61 64 | ib;';.callback_list{3,3}.=.'load |
| 42a0 | 69 6e 67 5f 63 61 6c 69 62 3b 27 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 33 2c 34 7d 20 | ing_calib;';.callback_list{3,4}. |
| 42c0 | 3d 20 5b 27 64 69 73 70 28 27 27 42 79 65 2e 20 54 6f 20 72 75 6e 20 61 67 61 69 6e 2c 20 74 79 | =.['disp(''Bye..To.run.again,.ty |
| 42e0 | 70 65 20 63 61 6c 69 62 5f 67 75 69 2e 27 27 29 3b 20 63 6c 6f 73 65 28 27 20 6e 75 6d 32 73 74 | pe.calib_gui.'');.close('.num2st |
| 4300 | 72 28 66 69 67 5f 6e 75 6d 62 65 72 29 20 27 29 3b 27 5d 3b 0a 0a 63 61 6c 6c 62 61 63 6b 5f 6c | r(fig_number).');'];..callback_l |
| 4320 | 69 73 74 7b 35 2c 31 7d 20 3d 20 27 65 78 74 72 69 6e 73 69 63 5f 63 6f 6d 70 75 74 61 74 69 6f | ist{5,1}.=.'extrinsic_computatio |
| 4340 | 6e 3b 27 3b 0a 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 35 2c 32 7d 20 3d 20 27 75 6e 64 69 73 | n;';.callback_list{5,2}.=.'undis |
| 4360 | 74 6f 72 74 5f 69 6d 61 67 65 3b 27 3b 0a 0a 0a 66 69 67 75 72 65 28 66 69 67 5f 6e 75 6d 62 65 | tort_image;';...figure(fig_numbe |
| 4380 | 72 29 3b 20 63 6c 66 3b 0a 70 6f 73 20 3d 20 67 65 74 28 66 69 67 5f 6e 75 6d 62 65 72 2c 27 50 | r);.clf;.pos.=.get(fig_number,'P |
| 43a0 | 6f 73 69 74 69 6f 6e 27 29 3b 0a 0a 66 69 67 5f 73 69 7a 65 5f 78 20 3d 20 78 5f 73 69 7a 65 2a | osition');..fig_size_x.=.x_size* |
| 43c0 | 6e 5f 63 6f 6c 2b 28 6e 5f 63 6f 6c 2b 31 29 2a 32 3b 0a 66 69 67 5f 73 69 7a 65 5f 79 20 3d 20 | n_col+(n_col+1)*2;.fig_size_y.=. |
| 43e0 | 79 5f 73 69 7a 65 2a 6e 5f 72 6f 77 2b 28 6e 5f 72 6f 77 2b 31 29 2a 32 3b 0a 0a 73 65 74 28 66 | y_size*n_row+(n_row+1)*2;..set(f |
| 4400 | 69 67 5f 6e 75 6d 62 65 72 2c 27 55 6e 69 74 73 27 2c 27 70 6f 69 6e 74 73 27 2c 20 2e 2e 2e 0a | ig_number,'Units','points',..... |
| 4420 | 09 27 42 61 63 6b 69 6e 67 53 74 6f 72 65 27 2c 27 6f 66 66 27 2c 20 2e 2e 2e 0a 09 27 43 6f 6c | .'BackingStore','off',......'Col |
| 4440 | 6f 72 27 2c 5b 30 2e 38 20 30 2e 38 20 30 2e 38 5d 2c 20 2e 2e 2e 0a 09 27 4d 65 6e 75 42 61 72 | or',[0.8.0.8.0.8],......'MenuBar |
| 4460 | 27 2c 27 6e 6f 6e 65 27 2c 20 2e 2e 2e 0a 09 27 52 65 73 69 7a 65 27 2c 27 6f 66 66 27 2c 20 2e | ','none',......'Resize','off',.. |
| 4480 | 2e 2e 0a 09 27 4e 61 6d 65 27 2c 74 69 74 6c 65 5f 66 69 67 75 72 65 2c 20 2e 2e 2e 0a 27 50 6f | ....'Name',title_figure,.....'Po |
| 44a0 | 73 69 74 69 6f 6e 27 2c 5b 70 6f 73 28 31 29 20 70 6f 73 28 32 29 20 66 69 67 5f 73 69 7a 65 5f | sition',[pos(1).pos(2).fig_size_ |
| 44c0 | 78 20 66 69 67 5f 73 69 7a 65 5f 79 5d 2c 20 2e 2e 2e 0a 27 4e 75 6d 62 65 72 54 69 74 6c 65 27 | x.fig_size_y],.....'NumberTitle' |
| 44e0 | 2c 27 6f 66 66 27 29 3b 20 25 2c 27 57 69 6e 64 6f 77 42 75 74 74 6f 6e 4d 6f 74 69 6f 6e 46 63 | ,'off');.%,'WindowButtonMotionFc |
| 4500 | 6e 27 2c 5b 27 66 69 67 75 72 65 28 27 20 6e 75 6d 32 73 74 72 28 66 69 67 5f 6e 75 6d 62 65 72 | n',['figure('.num2str(fig_number |
| 4520 | 29 20 27 29 3b 27 5d 29 3b 0a 0a 0a 66 6f 72 20 69 3d 6e 5f 72 6f 77 3a 2d 31 3a 31 2c 0a 20 20 | ).');']);...for.i=n_row:-1:1,... |
| 4540 | 20 66 6f 72 20 6a 20 3d 20 6e 5f 63 6f 6c 3a 2d 31 3a 31 2c 0a 20 20 20 20 20 20 69 66 20 28 7e | .for.j.=.n_col:-1:1,.......if.(~ |
| 4560 | 69 73 65 6d 70 74 79 28 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 7b 69 2c 6a 7d 29 29 26 28 7e 69 | isempty(callback_list{i,j}))&(~i |
| 4580 | 73 65 6d 70 74 79 28 73 74 72 69 6e 67 5f 6c 69 73 74 7b 69 2c 6a 7d 29 29 2c 0a 20 20 20 20 20 | sempty(string_list{i,j})),...... |
| 45a0 | 20 09 75 69 63 6f 6e 74 72 6f 6c 28 27 50 61 72 65 6e 74 27 2c 66 69 67 5f 6e 75 6d 62 65 72 2c | ..uicontrol('Parent',fig_number, |
| 45c0 | 20 2e 2e 2e 0a 20 20 20 20 20 20 20 20 20 09 27 55 6e 69 74 73 27 2c 27 70 6f 69 6e 74 73 27 2c | ...............'Units','points', |
| 45e0 | 20 2e 2e 2e 0a 09 09 09 09 27 43 61 6c 6c 62 61 63 6b 27 2c 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 | .........'Callback',callback_lis |
| 4600 | 74 7b 69 2c 6a 7d 2c 20 2e 2e 2e 0a 09 09 09 09 27 4c 69 73 74 62 6f 78 54 6f 70 27 2c 30 2c 20 | t{i,j},.........'ListboxTop',0,. |
| 4620 | 2e 2e 2e 0a 09 09 09 09 27 50 6f 73 69 74 69 6f 6e 27 2c 5b 28 32 2b 28 6a 2d 31 29 2a 28 78 5f | ........'Position',[(2+(j-1)*(x_ |
| 4640 | 73 69 7a 65 2b 32 29 29 20 20 20 28 66 69 67 5f 73 69 7a 65 5f 79 20 2d 20 69 2a 28 32 2b 79 5f | size+2))...(fig_size_y.-.i*(2+y_ |
| 4660 | 73 69 7a 65 29 29 20 20 78 5f 73 69 7a 65 20 20 20 79 5f 73 69 7a 65 5d 2c 20 2e 2e 2e 0a 09 09 | size))..x_size...y_size],....... |
| 4680 | 09 09 27 53 74 72 69 6e 67 27 2c 73 74 72 69 6e 67 5f 6c 69 73 74 7b 69 2c 6a 7d 2c 20 2e 2e 2e | ..'String',string_list{i,j},.... |
| 46a0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 27 54 61 67 27 2c 27 50 75 73 68 62 75 74 74 6f 6e 31 27 | .............'Tag','Pushbutton1' |
| 46c0 | 29 3b 0a 20 20 20 09 65 6e 64 3b 0a 09 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 0a 63 6c 65 61 72 20 63 | );.....end;..end;.end;...clear.c |
| 46e0 | 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 20 73 74 72 69 6e 67 5f 6c 69 73 74 20 66 69 67 5f 6e 75 6d | allback_list.string_list.fig_num |
| 4700 | 62 65 72 20 66 69 67 5f 73 69 7a 65 5f 78 20 66 69 67 5f 73 69 7a 65 5f 79 20 69 20 6a 20 6e 5f | ber.fig_size_x.fig_size_y.i.j.n_ |
| 4720 | 63 6f 6c 20 6e 5f 72 6f 77 20 70 6f 73 20 73 74 72 69 6e 67 5f 6c 69 73 74 20 74 69 74 6c 65 5f | col.n_row.pos.string_list.title_ |
| 4740 | 66 69 67 75 72 65 20 78 5f 73 69 7a 65 20 79 5f 73 69 7a 65 0a 70 6d 2e 6d 00 6d 2e 00 00 06 fc | figure.x_size.y_size.pm.m.m..... |
| 4760 | 00 02 36 b1 00 24 00 16 69 6e 69 74 5f 69 6e 74 72 69 6e 73 69 63 5f 70 61 72 61 6d 2e 6d 00 b1 | ..6..$..init_intrinsic_param.m.. |
| 4780 | 00 00 07 18 00 02 36 b2 00 20 00 11 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 2e 6d 00 07 18 | ......6.....mean_std_robust.m... |
| 47a0 | 00 00 07 38 00 02 36 b3 00 24 00 14 72 75 6e 5f 65 72 72 6f 72 5f 61 6e 61 6c 79 73 69 73 2e 6d | ...8..6..$..run_error_analysis.m |
| 47c0 | 00 02 36 b3 00 00 07 54 00 02 36 b4 00 20 00 13 63 68 65 63 6b 5f 63 6f 6e 76 65 72 67 65 6e 63 | ..6....T..6.....check_convergenc |
| 47e0 | 65 2e 6d 00 00 00 07 70 00 02 36 b5 00 20 00 11 63 68 65 63 6b 5f 70 6c 61 6e 61 72 69 74 79 2e | e.m....p..6.....check_planarity. |
| 4800 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 68 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 65 | TOOLBOX_calib/check_active_image |
| 4820 | 73 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | s.m............................. |
| 4840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4860 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 4880 | 20 20 20 20 34 34 33 20 20 37 30 32 34 30 33 37 33 30 34 20 20 31 32 35 31 31 00 20 00 00 00 00 | ....443..7024037304..12511...... |
| 48a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 48c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 48e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4900 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4920 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 49a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 49c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 49e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4a00 | 0a 69 66 20 7e 65 78 69 73 74 28 27 61 63 74 69 76 65 5f 69 6d 61 67 65 73 27 29 2c 0a 09 61 63 | .if.~exist('active_images'),..ac |
| 4a20 | 74 69 76 65 5f 69 6d 61 67 65 73 20 3d 20 6f 6e 65 73 28 31 2c 6e 5f 69 6d 61 29 3b 0a 65 6e 64 | tive_images.=.ones(1,n_ima);.end |
| 4a40 | 3b 0a 6e 5f 61 63 74 20 3d 20 6c 65 6e 67 74 68 28 61 63 74 69 76 65 5f 69 6d 61 67 65 73 29 3b | ;.n_act.=.length(active_images); |
| 4a60 | 0a 69 66 20 6e 5f 61 63 74 20 3c 20 6e 5f 69 6d 61 2c 0a 20 20 20 61 63 74 69 76 65 5f 69 6d 61 | .if.n_act.<.n_ima,....active_ima |
| 4a80 | 67 65 73 20 3d 20 5b 61 63 74 69 76 65 5f 69 6d 61 67 65 73 20 6f 6e 65 73 28 31 2c 6e 5f 69 6d | ges.=.[active_images.ones(1,n_im |
| 4aa0 | 61 2d 6e 5f 61 63 74 29 5d 3b 0a 65 6c 73 65 0a 20 20 20 69 66 20 6e 5f 61 63 74 20 3e 20 6e 5f | a-n_act)];.else....if.n_act.>.n_ |
| 4ac0 | 69 6d 61 2c 0a 20 20 20 20 20 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 20 3d 20 61 63 74 69 76 | ima,.......active_images.=.activ |
| 4ae0 | 65 5f 69 6d 61 67 65 73 28 31 3a 6e 5f 69 6d 61 29 3b 0a 20 20 20 65 6e 64 3b 0a 65 6e 64 3b 0a | e_images(1:n_ima);....end;.end;. |
| 4b00 | 0a 69 6e 64 5f 61 63 74 69 76 65 20 3d 20 66 69 6e 64 28 61 63 74 69 76 65 5f 69 6d 61 67 65 73 | .ind_active.=.find(active_images |
| 4b20 | 29 3b 0a be 00 00 01 a0 00 02 35 bf 00 20 00 12 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 32 | );........5.....comp_distortion2 |
| 4b40 | 2e 6d 00 bf 00 00 01 c0 00 02 35 c0 00 24 00 16 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 5f | .m........5..$..comp_distortion_ |
| 4b60 | 6f 75 6c 75 2e 6d 00 16 00 00 01 dc 00 02 35 c1 00 20 00 12 63 6f 6d 70 5f 65 72 72 6f 72 5f 63 | oulu.m........5.....comp_error_c |
| 4b80 | 61 6c 69 62 2e 6d 00 c1 00 00 02 00 00 02 35 c2 00 1c 00 0e 63 6f 72 6e 65 72 66 69 6e 64 65 72 | alib.m........5.....cornerfinder |
| 4ba0 | 2e 6d 00 00 00 00 02 18 00 02 35 c3 00 1c 00 0f 63 6f 75 6e 74 5f 73 71 75 61 72 65 73 2e 6d 00 | .m........5.....count_squares.m. |
| 4bc0 | 00 00 02 30 00 02 35 c4 00 1c 00 0c 64 61 74 61 5f 63 61 6c 69 62 2e 6d 00 00 02 30 00 00 02 48 | ...0..5.....data_calib.m...0...H |
| 4be0 | 00 02 35 c5 00 1c 00 0e 44 69 73 74 6f 72 32 43 61 6c 69 62 2e 6d 00 48 00 00 02 60 00 02 35 c6 | ..5.....Distor2Calib.m.H...`..5. |
| 4c00 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6c 69 63 6b 5f 63 61 6c 69 62 2e 6d 00 00 00 00 00 | TOOLBOX_calib/click_calib.m..... |
| 4c20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4c40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4c60 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 4c80 | 20 20 20 34 34 31 34 20 20 37 30 32 34 30 33 37 33 30 36 20 20 31 31 30 31 37 00 20 00 00 00 00 | ...4414..7024037306..11017...... |
| 4ca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4cc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4ce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4d00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4d20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4d40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4d60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4d80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4e00 | 0a 69 66 20 7e 65 78 69 73 74 28 27 49 5f 31 27 29 2c 0a 20 20 20 69 6d 61 5f 72 65 61 64 5f 63 | .if.~exist('I_1'),....ima_read_c |
| 4e20 | 61 6c 69 62 3b 0a 20 20 20 69 66 20 6e 6f 5f 69 6d 61 67 65 5f 66 69 6c 65 2c 0a 20 20 20 20 20 | alib;....if.no_image_file,...... |
| 4e40 | 20 64 69 73 70 28 27 43 61 6e 6e 6f 74 20 65 78 74 72 61 63 74 20 63 6f 72 6e 65 72 73 20 77 69 | .disp('Cannot.extract.corners.wi |
| 4e60 | 74 68 6f 75 74 20 69 6d 61 67 65 73 27 29 3b 0a 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0a 20 20 | thout.images');.......return;... |
| 4e80 | 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 63 68 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 65 73 3b | .end;.end;..check_active_images; |
| 4ea0 | 0a 0a 25 77 69 6e 74 78 20 3d 20 31 30 3b 20 25 20 6e 65 69 67 62 6f 72 68 6f 6f 64 20 6f 66 20 | ..%wintx.=.10;.%.neigborhood.of. |
| 4ec0 | 69 6e 74 65 67 72 61 74 69 6f 6e 20 66 6f 72 0a 25 77 69 6e 74 79 20 3d 20 31 30 3b 20 25 20 74 | integration.for.%winty.=.10;.%.t |
| 4ee0 | 68 65 20 63 6f 72 6e 65 72 20 66 69 6e 64 65 72 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 45 | he.corner.finder..fprintf(1,'\nE |
| 4f00 | 78 74 72 61 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 67 72 69 64 20 63 6f 72 6e 65 72 73 20 6f 6e | xtraction.of.the.grid.corners.on |
| 4f20 | 20 74 68 65 20 69 6d 61 67 65 73 5c 6e 27 29 3b 0a 0a 64 69 73 70 28 27 57 69 6e 64 6f 77 20 73 | .the.images\n');..disp('Window.s |
| 4f40 | 69 7a 65 20 66 6f 72 20 63 6f 72 6e 65 72 20 66 69 6e 64 65 72 20 28 77 69 6e 74 78 20 61 6e 64 | ize.for.corner.finder.(wintx.and |
| 4f60 | 20 77 69 6e 74 79 29 3a 27 29 3b 0a 77 69 6e 74 78 20 3d 20 69 6e 70 75 74 28 27 77 69 6e 74 78 | .winty):');.wintx.=.input('wintx |
| 4f80 | 20 28 5b 5d 20 3d 20 35 29 20 3d 20 27 29 3b 0a 69 66 20 69 73 65 6d 70 74 79 28 77 69 6e 74 78 | .([].=.5).=.');.if.isempty(wintx |
| 4fa0 | 29 2c 20 77 69 6e 74 78 20 3d 20 35 3b 20 65 6e 64 3b 0a 77 69 6e 74 78 20 3d 20 72 6f 75 6e 64 | ),.wintx.=.5;.end;.wintx.=.round |
| 4fc0 | 28 77 69 6e 74 78 29 3b 0a 77 69 6e 74 79 20 3d 20 69 6e 70 75 74 28 27 77 69 6e 74 79 20 28 5b | (wintx);.winty.=.input('winty.([ |
| 4fe0 | 5d 20 3d 20 35 29 20 3d 20 27 29 3b 0a 69 66 20 69 73 65 6d 70 74 79 28 77 69 6e 74 79 29 2c 20 | ].=.5).=.');.if.isempty(winty),. |
| 5000 | 77 69 6e 74 79 20 3d 20 35 3b 20 65 6e 64 3b 0a 77 69 6e 74 79 20 3d 20 72 6f 75 6e 64 28 77 69 | winty.=.5;.end;.winty.=.round(wi |
| 5020 | 6e 74 79 29 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 57 69 6e 64 6f 77 20 73 69 7a 65 20 3d 20 | nty);..fprintf(1,'Window.size.=. |
| 5040 | 25 64 78 25 64 5c 6e 27 2c 32 2a 77 69 6e 74 78 2b 31 2c 32 2a 77 69 6e 74 79 2b 31 29 3b 0a 0a | %dx%d\n',2*wintx+1,2*winty+1);.. |
| 5060 | 69 66 20 7e 65 78 69 73 74 28 27 6d 61 70 27 29 2c 20 6d 61 70 20 3d 20 67 72 61 79 28 32 35 36 | if.~exist('map'),.map.=.gray(256 |
| 5080 | 29 3b 20 65 6e 64 3b 0a 0a 0a 64 69 73 70 28 27 57 41 52 4e 49 4e 47 21 21 21 20 44 6f 20 6e 6f | );.end;...disp('WARNING!!!.Do.no |
| 50a0 | 74 20 66 6f 72 67 65 74 20 74 6f 20 63 68 61 6e 67 65 20 64 58 5f 64 65 66 61 75 6c 74 20 61 6e | t.forget.to.change.dX_default.an |
| 50c0 | 64 20 64 59 5f 64 65 66 61 75 6c 74 20 69 6e 20 63 6c 69 63 6b 5f 63 61 6c 69 62 2e 6d 21 21 21 | d.dY_default.in.click_calib.m!!! |
| 50e0 | 27 29 0a 0a 0a 25 20 44 65 66 61 75 6c 74 20 73 69 7a 65 20 6f 66 20 74 68 65 20 70 61 74 74 65 | ')...%.Default.size.of.the.patte |
| 5100 | 72 6e 20 73 71 75 61 72 65 73 3b 0a 0a 25 20 53 65 74 75 70 20 6f 66 20 4a 59 20 28 6f 6c 64 20 | rn.squares;..%.Setup.of.JY.(old. |
| 5120 | 61 74 20 43 61 6c 74 65 63 68 29 0a 64 58 5f 64 65 66 61 75 6c 74 20 3d 20 32 31 2e 39 32 35 30 | at.Caltech).dX_default.=.21.9250 |
| 5140 | 2f 31 31 3b 0a 64 59 5f 64 65 66 61 75 6c 74 20 3d 20 31 38 2e 31 32 35 30 2f 39 3b 0a 0a 25 20 | /11;.dY_default.=.18.1250/9;..%. |
| 5160 | 53 65 74 75 70 20 6f 66 20 4a 59 20 28 6e 65 77 20 61 74 20 49 6e 74 65 6c 29 0a 64 58 5f 64 65 | Setup.of.JY.(new.at.Intel).dX_de |
| 5180 | 66 61 75 6c 74 20 3d 20 31 2e 39 37 35 30 3b 0a 64 59 5f 64 65 66 61 75 6c 74 20 3d 20 31 2e 39 | fault.=.1.9750;.dY_default.=.1.9 |
| 51a0 | 38 36 35 3b 0a 0a 0a 25 20 53 65 74 75 70 20 6f 66 20 4c 75 69 73 20 61 6e 64 20 45 6e 72 69 63 | 865;...%.Setup.of.Luis.and.Enric |
| 51c0 | 6f 0a 64 58 5f 64 65 66 61 75 6c 74 20 3d 20 36 37 2e 37 2f 31 36 3b 0a 64 59 5f 64 65 66 61 75 | o.dX_default.=.67.7/16;.dY_defau |
| 51e0 | 6c 74 20 3d 20 35 30 2e 36 35 2f 31 32 3b 0a 0a 0a 25 20 53 65 74 75 70 20 6f 66 20 47 65 72 6d | lt.=.50.65/12;...%.Setup.of.Germ |
| 5200 | 61 6e 0a 64 58 5f 64 65 66 61 75 6c 74 20 3d 20 31 30 2e 31 36 3b 0a 64 59 5f 64 65 66 61 75 6c | an.dX_default.=.10.16;.dY_defaul |
| 5220 | 74 20 3d 20 31 30 2e 31 36 3b 0a 0a 25 20 53 65 74 75 70 20 6f 66 20 4a 59 20 28 6e 65 77 20 61 | t.=.10.16;..%.Setup.of.JY.(new.a |
| 5240 | 74 20 49 6e 74 65 6c 29 0a 64 58 5f 64 65 66 61 75 6c 74 20 3d 20 31 2e 39 37 35 30 2a 32 2e 35 | t.Intel).dX_default.=.1.9750*2.5 |
| 5260 | 34 3b 0a 64 59 5f 64 65 66 61 75 6c 74 20 3d 20 31 2e 39 38 36 35 2a 32 2e 35 34 3b 0a 0a 25 20 | 4;.dY_default.=.1.9865*2.54;..%. |
| 5280 | 53 65 74 75 70 20 6f 66 20 4a 59 20 2d 20 33 44 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 72 69 67 | Setup.of.JY.-.3D.calibration.rig |
| 52a0 | 20 61 74 20 49 6e 74 65 6c 20 28 6e 65 77 20 61 74 20 49 6e 74 65 6c 29 0a 64 58 5f 64 65 66 61 | .at.Intel.(new.at.Intel).dX_defa |
| 52c0 | 75 6c 74 20 3d 20 33 3b 0a 64 59 5f 64 65 66 61 75 6c 74 20 3d 20 33 3b 0a 0a 25 20 55 73 65 66 | ult.=.3;.dY_default.=.3;..%.Usef |
| 52e0 | 75 6c 20 6f 70 74 69 6f 6e 20 74 6f 20 61 64 64 20 69 6d 61 67 65 73 3a 0a 6b 6b 5f 66 69 72 73 | ul.option.to.add.images:.kk_firs |
| 5300 | 74 20 3d 20 69 6e 70 75 74 28 27 53 74 61 72 74 20 69 6d 61 67 65 20 6e 75 6d 62 65 72 20 28 5b | t.=.input('Start.image.number.([ |
| 5320 | 5d 3d 31 3d 66 69 72 73 74 29 3a 20 27 29 3b 0a 0a 69 66 20 69 73 65 6d 70 74 79 28 6b 6b 5f 66 | ]=1=first):.');..if.isempty(kk_f |
| 5340 | 69 72 73 74 29 2c 20 6b 6b 5f 66 69 72 73 74 20 3d 20 31 3b 20 65 6e 64 3b 0a 0a 66 6f 72 20 6b | irst),.kk_first.=.1;.end;..for.k |
| 5360 | 6b 20 3d 20 6b 6b 5f 66 69 72 73 74 3a 6e 5f 69 6d 61 2c 0a 20 20 20 69 66 20 61 63 74 69 76 65 | k.=.kk_first:n_ima,....if.active |
| 5380 | 5f 69 6d 61 67 65 73 28 6b 6b 29 2c 0a 20 20 20 20 20 20 63 6c 69 63 6b 5f 69 6d 61 5f 63 61 6c | _images(kk),.......click_ima_cal |
| 53a0 | 69 62 3b 0a 20 20 20 65 6c 73 65 0a 09 20 20 20 65 76 61 6c 28 5b 27 64 58 5f 27 20 6e 75 6d 32 | ib;....else.....eval(['dX_'.num2 |
| 53c0 | 73 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 3b 27 5d 29 3b 0a 20 20 20 09 65 76 61 6c 28 5b 27 | str(kk).'.=.NaN;']);.....eval([' |
| 53e0 | 64 59 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 3b 27 5d 29 3b 20 20 0a | dY_'.num2str(kk).'.=.NaN;']);... |
| 5400 | 20 20 20 0a 20 20 20 09 65 76 61 6c 28 5b 27 77 69 6e 74 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b | ........eval(['wintx_'.num2str(k |
| 5420 | 6b 29 20 27 20 3d 20 4e 61 4e 3b 27 5d 29 3b 0a 20 20 20 09 65 76 61 6c 28 5b 27 77 69 6e 74 79 | k).'.=.NaN;']);.....eval(['winty |
| 5440 | 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 3b 27 5d 29 3b 0a 0a 20 20 20 | _'.num2str(kk).'.=.NaN;']);..... |
| 5460 | 09 65 76 61 6c 28 5b 27 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 2a | .eval(['x_'.num2str(kk).'.=.NaN* |
| 5480 | 6f 6e 65 73 28 32 2c 31 29 3b 27 5d 29 3b 0a 20 20 20 09 65 76 61 6c 28 5b 27 58 5f 27 20 6e 75 | ones(2,1);']);.....eval(['X_'.nu |
| 54a0 | 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 33 2c 31 29 3b 27 5d 29 3b | m2str(kk).'.=.NaN*ones(3,1);']); |
| 54c0 | 0a 20 20 20 0a 20 20 20 09 65 76 61 6c 28 5b 27 6e 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 | .........eval(['n_sq_x_'.num2str |
| 54e0 | 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 3b 27 5d 29 3b 0a 20 20 20 09 65 76 61 6c 28 5b 27 6e 5f 73 | (kk).'.=.NaN;']);.....eval(['n_s |
| 5500 | 71 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 3b 27 5d 29 3b 0a 20 | q_y_'.num2str(kk).'.=.NaN;']);.. |
| 5520 | 20 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 0a 0a 73 74 72 69 6e 67 5f 73 61 76 65 20 3d 20 27 73 61 | ..end;.end;....string_save.=.'sa |
| 5540 | 76 65 20 63 61 6c 69 62 5f 64 61 74 61 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 20 69 6e 64 5f | ve.calib_data.active_images.ind_ |
| 5560 | 61 63 74 69 76 65 20 77 69 6e 74 78 20 77 69 6e 74 79 20 6e 5f 69 6d 61 20 74 79 70 65 5f 6e 75 | active.wintx.winty.n_ima.type_nu |
| 5580 | 6d 62 65 72 69 6e 67 20 4e 5f 73 6c 6f 74 73 20 66 69 72 73 74 5f 6e 75 6d 20 69 6d 61 67 65 5f | mbering.N_slots.first_num.image_ |
| 55a0 | 6e 75 6d 62 65 72 73 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 63 61 6c 69 62 5f 6e 61 6d 65 20 | numbers.format_image.calib_name. |
| 55c0 | 48 63 61 6c 20 57 63 61 6c 20 6e 78 20 6e 79 20 6d 61 70 20 64 58 5f 64 65 66 61 75 6c 74 20 64 | Hcal.Wcal.nx.ny.map.dX_default.d |
| 55e0 | 59 5f 64 65 66 61 75 6c 74 20 64 58 20 64 59 27 3b 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f | Y_default.dX.dY';..for.kk.=.1:n_ |
| 5600 | 69 6d 61 2c 0a 20 20 20 73 74 72 69 6e 67 5f 73 61 76 65 20 3d 20 5b 73 74 72 69 6e 67 5f 73 61 | ima,....string_save.=.[string_sa |
| 5620 | 76 65 20 27 20 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 78 5f 27 20 6e 75 6d 32 73 | ve.'.X_'.num2str(kk).'.x_'.num2s |
| 5640 | 74 72 28 6b 6b 29 20 27 20 6e 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 | tr(kk).'.n_sq_x_'.num2str(kk).'. |
| 5660 | 6e 5f 73 71 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 77 69 6e 74 78 5f 27 20 6e | n_sq_y_'.num2str(kk).'.wintx_'.n |
| 5680 | 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 77 69 6e 74 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 | um2str(kk).'.winty_'.num2str(kk) |
| 56a0 | 20 27 20 64 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 64 59 5f 27 20 6e 75 6d 32 73 | .'.dX_'.num2str(kk).'.dY_'.num2s |
| 56c0 | 74 72 28 6b 6b 29 5d 3b 0a 65 6e 64 3b 0a 0a 65 76 61 6c 28 73 74 72 69 6e 67 5f 73 61 76 65 29 | tr(kk)];.end;..eval(string_save) |
| 56e0 | 3b 0a 0a 64 69 73 70 28 27 64 6f 6e 65 27 29 3b 0a 0a 72 65 74 75 72 6e 3b 0a 0a 67 6f 5f 63 61 | ;..disp('done');..return;..go_ca |
| 5700 | 6c 69 62 5f 6f 70 74 69 6d 3b 0a 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 | lib_optim;...fprintf(1,'........ |
| 5720 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 41 20 46 6f 75 72 2d 73 74 65 70 20 43 61 | ................."A.Four-step.Ca |
| 5740 | 6d 65 72 61 20 43 61 6c 69 62 72 61 74 69 6f 6e 20 50 72 6f 63 65 64 75 72 65 20 77 69 74 68 20 | mera.Calibration.Procedure.with. |
| 5760 | 69 6d 70 6c 69 63 69 74 20 49 6d 61 67 65 20 43 6f 72 72 65 63 74 69 6f 6e 22 5c 6e 27 29 3b 0a | implicit.Image.Correction"\n');. |
| 5780 | 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | fprintf(1,'..................... |
| 57a0 | 20 20 20 20 4a 61 6e 6e 65 20 48 65 69 6b 6b 69 6c 61 20 61 6e 64 20 4f 6c 6c 69 20 53 69 6c 76 | ....Janne.Heikkila.and.Olli.Silv |
| 57c0 | 65 6e 2c 20 49 6e 66 6f 74 65 63 68 20 4f 75 6c 75 20 61 6e 64 20 44 65 70 61 72 74 6d 65 6e 74 | en,.Infotech.Oulu.and.Department |
| 57e0 | 20 6f 66 20 45 45 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 | .of.EE\n');.fprintf(1,'......... |
| 5800 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6c 69 63 6b 5f 63 61 6c 69 62 33 44 2e 6d 00 00 00 | TOOLBOX_calib/click_calib3D.m... |
| 5820 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5860 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 5880 | 20 20 20 33 35 30 35 20 20 37 30 32 34 30 33 37 33 30 36 20 20 31 31 32 30 36 00 20 00 00 00 00 | ...3505..7024037306..11206...... |
| 58a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 58c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 58e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5900 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5920 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 59a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 59c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 59e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5a00 | 0a 69 66 20 7e 65 78 69 73 74 28 27 49 5f 31 27 29 2c 0a 20 20 20 69 6d 61 5f 72 65 61 64 5f 63 | .if.~exist('I_1'),....ima_read_c |
| 5a20 | 61 6c 69 62 3b 0a 20 20 20 69 66 20 6e 6f 5f 69 6d 61 67 65 5f 66 69 6c 65 2c 0a 20 20 20 20 20 | alib;....if.no_image_file,...... |
| 5a40 | 20 64 69 73 70 28 27 43 61 6e 6e 6f 74 20 65 78 74 72 61 63 74 20 63 6f 72 6e 65 72 73 20 77 69 | .disp('Cannot.extract.corners.wi |
| 5a60 | 74 68 6f 75 74 20 69 6d 61 67 65 73 27 29 3b 0a 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0a 20 20 | thout.images');.......return;... |
| 5a80 | 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 25 77 69 6e 74 78 20 3d 20 31 30 3b 20 25 20 6e 65 69 67 62 | .end;.end;..%wintx.=.10;.%.neigb |
| 5aa0 | 6f 72 68 6f 6f 64 20 6f 66 20 69 6e 74 65 67 72 61 74 69 6f 6e 20 66 6f 72 0a 25 77 69 6e 74 79 | orhood.of.integration.for.%winty |
| 5ac0 | 20 3d 20 31 30 3b 20 25 20 74 68 65 20 63 6f 72 6e 65 72 20 66 69 6e 64 65 72 0a 0a 66 70 72 69 | .=.10;.%.the.corner.finder..fpri |
| 5ae0 | 6e 74 66 28 31 2c 27 5c 6e 45 78 74 72 61 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 67 72 69 64 20 | ntf(1,'\nExtraction.of.the.grid. |
| 5b00 | 63 6f 72 6e 65 72 73 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 73 5c 6e 27 29 3b 0a 0a 64 69 73 70 | corners.on.the.images\n');..disp |
| 5b20 | 28 27 57 69 6e 64 6f 77 20 73 69 7a 65 20 66 6f 72 20 63 6f 72 6e 65 72 20 66 69 6e 64 65 72 20 | ('Window.size.for.corner.finder. |
| 5b40 | 28 77 69 6e 74 78 20 61 6e 64 20 77 69 6e 74 79 29 3a 27 29 3b 0a 77 69 6e 74 78 20 3d 20 69 6e | (wintx.and.winty):');.wintx.=.in |
| 5b60 | 70 75 74 28 27 77 69 6e 74 78 20 28 5b 5d 20 3d 20 35 29 20 3d 20 27 29 3b 0a 69 66 20 69 73 65 | put('wintx.([].=.5).=.');.if.ise |
| 5b80 | 6d 70 74 79 28 77 69 6e 74 78 29 2c 20 77 69 6e 74 78 20 3d 20 35 3b 20 65 6e 64 3b 0a 77 69 6e | mpty(wintx),.wintx.=.5;.end;.win |
| 5ba0 | 74 78 20 3d 20 72 6f 75 6e 64 28 77 69 6e 74 78 29 3b 0a 77 69 6e 74 79 20 3d 20 69 6e 70 75 74 | tx.=.round(wintx);.winty.=.input |
| 5bc0 | 28 27 77 69 6e 74 79 20 28 5b 5d 20 3d 20 35 29 20 3d 20 27 29 3b 0a 69 66 20 69 73 65 6d 70 74 | ('winty.([].=.5).=.');.if.isempt |
| 5be0 | 79 28 77 69 6e 74 79 29 2c 20 77 69 6e 74 79 20 3d 20 35 3b 20 65 6e 64 3b 0a 77 69 6e 74 79 20 | y(winty),.winty.=.5;.end;.winty. |
| 5c00 | 3d 20 72 6f 75 6e 64 28 77 69 6e 74 79 29 3b 0a 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 57 69 6e | =.round(winty);...fprintf(1,'Win |
| 5c20 | 64 6f 77 20 73 69 7a 65 20 3d 20 25 64 78 25 64 5c 6e 27 2c 32 2a 77 69 6e 74 78 2b 31 2c 32 2a | dow.size.=.%dx%d\n',2*wintx+1,2* |
| 5c40 | 77 69 6e 74 79 2b 31 29 3b 0a 0a 0a 64 69 73 70 28 27 57 41 52 4e 4e 47 21 21 21 20 44 6f 20 6e | winty+1);...disp('WARNNG!!!.Do.n |
| 5c60 | 6f 74 20 66 6f 72 67 65 74 20 74 6f 20 63 68 61 6e 67 65 20 64 58 5f 64 65 66 61 75 6c 74 20 61 | ot.forget.to.change.dX_default.a |
| 5c80 | 6e 64 20 64 59 5f 64 65 66 61 75 6c 74 20 69 6e 20 63 6c 69 63 6b 5f 63 61 6c 69 62 2e 6d 21 21 | nd.dY_default.in.click_calib.m!! |
| 5ca0 | 21 27 29 0a 0a 0a 25 20 44 65 66 61 75 6c 74 20 73 69 7a 65 20 6f 66 20 74 68 65 20 70 61 74 74 | !')...%.Default.size.of.the.patt |
| 5cc0 | 65 72 6e 20 73 71 75 61 72 65 73 3b 0a 0a 25 20 53 65 74 75 70 20 6f 66 20 4a 59 20 28 6f 6c 64 | ern.squares;..%.Setup.of.JY.(old |
| 5ce0 | 20 61 74 20 43 61 6c 74 65 63 68 29 0a 64 58 5f 64 65 66 61 75 6c 74 20 3d 20 32 31 2e 39 32 35 | .at.Caltech).dX_default.=.21.925 |
| 5d00 | 30 2f 31 31 3b 0a 64 59 5f 64 65 66 61 75 6c 74 20 3d 20 31 38 2e 31 32 35 30 2f 39 3b 0a 0a 25 | 0/11;.dY_default.=.18.1250/9;..% |
| 5d20 | 20 53 65 74 75 70 20 6f 66 20 4a 59 20 28 6e 65 77 20 61 74 20 49 6e 74 65 6c 29 0a 64 58 5f 64 | .Setup.of.JY.(new.at.Intel).dX_d |
| 5d40 | 65 66 61 75 6c 74 20 3d 20 31 2e 39 37 35 30 3b 0a 64 59 5f 64 65 66 61 75 6c 74 20 3d 20 31 2e | efault.=.1.9750;.dY_default.=.1. |
| 5d60 | 39 38 36 35 3b 0a 0a 0a 25 20 53 65 74 75 70 20 6f 66 20 4c 75 69 73 20 61 6e 64 20 45 6e 72 69 | 9865;...%.Setup.of.Luis.and.Enri |
| 5d80 | 63 6f 0a 64 58 5f 64 65 66 61 75 6c 74 20 3d 20 36 37 2e 37 2f 31 36 3b 0a 64 59 5f 64 65 66 61 | co.dX_default.=.67.7/16;.dY_defa |
| 5da0 | 75 6c 74 20 3d 20 35 30 2e 36 35 2f 31 32 3b 0a 0a 0a 25 20 53 65 74 75 70 20 6f 66 20 47 65 72 | ult.=.50.65/12;...%.Setup.of.Ger |
| 5dc0 | 6d 61 6e 0a 64 58 5f 64 65 66 61 75 6c 74 20 3d 20 31 30 2e 31 36 3b 0a 64 59 5f 64 65 66 61 75 | man.dX_default.=.10.16;.dY_defau |
| 5de0 | 6c 74 20 3d 20 31 30 2e 31 36 3b 0a 0a 25 20 53 65 74 75 70 20 6f 66 20 4a 59 20 28 6e 65 77 20 | lt.=.10.16;..%.Setup.of.JY.(new. |
| 5e00 | 61 74 20 49 6e 74 65 6c 29 0a 64 58 5f 64 65 66 61 75 6c 74 20 3d 20 31 2e 39 37 35 30 2a 32 2e | at.Intel).dX_default.=.1.9750*2. |
| 5e20 | 35 34 3b 0a 64 59 5f 64 65 66 61 75 6c 74 20 3d 20 31 2e 39 38 36 35 2a 32 2e 35 34 3b 0a 0a 0a | 54;.dY_default.=.1.9865*2.54;... |
| 5e40 | 25 20 53 65 74 75 70 20 6f 66 20 4a 59 20 2d 20 33 44 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 72 | %.Setup.of.JY.-.3D.calibration.r |
| 5e60 | 69 67 20 61 74 20 49 6e 74 65 6c 20 28 6e 65 77 20 61 74 20 49 6e 74 65 6c 29 0a 64 58 5f 64 65 | ig.at.Intel.(new.at.Intel).dX_de |
| 5e80 | 66 61 75 6c 74 20 3d 20 33 3b 0a 64 59 5f 64 65 66 61 75 6c 74 20 3d 20 33 3b 0a 0a 25 20 55 73 | fault.=.3;.dY_default.=.3;..%.Us |
| 5ea0 | 65 66 75 6c 20 6f 70 74 69 6f 6e 20 74 6f 20 61 64 64 20 69 6d 61 67 65 73 3a 0a 6b 6b 5f 66 69 | eful.option.to.add.images:.kk_fi |
| 5ec0 | 72 73 74 20 3d 20 69 6e 70 75 74 28 27 53 74 61 72 74 20 69 6d 61 67 65 20 6e 75 6d 62 65 72 20 | rst.=.input('Start.image.number. |
| 5ee0 | 28 5b 5d 3d 31 3d 66 69 72 73 74 29 3a 20 27 29 3b 0a 0a 69 66 20 69 73 65 6d 70 74 79 28 6b 6b | ([]=1=first):.');..if.isempty(kk |
| 5f00 | 5f 66 69 72 73 74 29 2c 20 6b 6b 5f 66 69 72 73 74 20 3d 20 31 3b 20 65 6e 64 3b 0a 0a 66 6f 72 | _first),.kk_first.=.1;.end;..for |
| 5f20 | 20 6b 6b 20 3d 20 6b 6b 5f 66 69 72 73 74 3a 6e 5f 69 6d 61 2c 0a 20 20 20 63 6c 69 63 6b 5f 69 | .kk.=.kk_first:n_ima,....click_i |
| 5f40 | 6d 61 5f 63 61 6c 69 62 33 44 3b 20 25 53 69 6d 70 6c 65 20 76 65 72 73 69 6f 6e 0a 20 20 20 25 | ma_calib3D;.%Simple.version....% |
| 5f60 | 69 6e 69 74 5f 63 61 6c 69 62 3b 20 25 61 64 76 61 6e 63 65 64 20 76 65 73 69 6f 6e 20 28 6d 6f | init_calib;.%advanced.vesion.(mo |
| 5f80 | 72 65 20 6d 65 73 73 79 29 0a 65 6e 64 3b 0a 0a 0a 0a 73 74 72 69 6e 67 5f 73 61 76 65 20 3d 20 | re.messy).end;....string_save.=. |
| 5fa0 | 27 73 61 76 65 20 63 61 6c 69 62 5f 64 61 74 61 20 77 69 6e 74 78 20 77 69 6e 74 79 20 6e 5f 69 | 'save.calib_data.wintx.winty.n_i |
| 5fc0 | 6d 61 20 74 79 70 65 5f 6e 75 6d 62 65 72 69 6e 67 20 4e 5f 73 6c 6f 74 73 20 66 69 72 73 74 5f | ma.type_numbering.N_slots.first_ |
| 5fe0 | 6e 75 6d 20 69 6d 61 67 65 5f 6e 75 6d 62 65 72 73 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 63 | num.image_numbers.format_image.c |
| 6000 | 61 6c 69 62 5f 6e 61 6d 65 20 48 63 61 6c 20 57 63 61 6c 20 6e 78 20 6e 79 20 6d 61 70 20 64 58 | alib_name.Hcal.Wcal.nx.ny.map.dX |
| 6020 | 5f 64 65 66 61 75 6c 74 20 64 59 5f 64 65 66 61 75 6c 74 20 64 58 20 64 59 27 3b 0a 0a 66 6f 72 | _default.dY_default.dX.dY';..for |
| 6040 | 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 73 74 72 69 6e 67 5f 73 61 76 65 20 3d 20 | .kk.=.1:n_ima,....string_save.=. |
| 6060 | 5b 73 74 72 69 6e 67 5f 73 61 76 65 20 27 20 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 | [string_save.'.X_'.num2str(kk).' |
| 6080 | 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 48 6c 5f 27 20 6e 75 6d 32 73 74 72 28 | .x_'.num2str(kk).'.Hl_'.num2str( |
| 60a0 | 6b 6b 29 20 27 20 6e 6c 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 6e 6c | kk).'.nl_sq_x_'.num2str(kk).'.nl |
| 60c0 | 5f 73 71 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 48 72 5f 27 20 6e 75 6d 32 73 | _sq_y_'.num2str(kk).'.Hr_'.num2s |
| 60e0 | 74 72 28 6b 6b 29 20 27 20 6e 72 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 | tr(kk).'.nr_sq_x_'.num2str(kk).' |
| 6100 | 20 6e 72 5f 73 71 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 5d 3b 0a 65 6e 64 3b 0a 0a 65 | .nr_sq_y_'.num2str(kk)];.end;..e |
| 6120 | 76 61 6c 28 73 74 72 69 6e 67 5f 73 61 76 65 29 3b 0a 0a 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 | val(string_save);..go_calib_opti |
| 6140 | 6d 33 44 3b 0a 78 20 61 6e 64 20 77 69 6e 74 79 29 3a 27 29 3b 0a 77 69 6e 74 78 20 3d 20 69 6e | m3D;.x.and.winty):');.wintx.=.in |
| 6160 | 70 75 74 28 27 77 69 6e 74 78 20 28 5b 5d 20 3d 20 35 29 20 3d 20 27 29 3b 0a 69 66 20 69 73 65 | put('wintx.([].=.5).=.');.if.ise |
| 6180 | 6d 70 74 79 28 77 69 6e 74 78 29 2c 20 77 69 6e 74 78 20 3d 20 35 3b 20 65 6e 64 3b 0a 77 69 6e | mpty(wintx),.wintx.=.5;.end;.win |
| 61a0 | 74 78 20 3d 20 72 6f 75 6e 64 28 77 69 6e 74 78 29 3b 0a 77 69 6e 74 79 20 3d 20 69 6e 70 75 74 | tx.=.round(wintx);.winty.=.input |
| 61c0 | 28 27 77 69 6e 74 79 20 28 5b 5d 20 3d 20 35 29 20 3d 20 27 29 3b 0a 69 66 20 69 73 65 6d 70 74 | ('winty.([].=.5).=.');.if.isempt |
| 61e0 | 79 28 77 69 6e 74 79 29 2c 20 77 69 6e 74 79 20 3d 20 35 3b 20 65 6e 64 3b 0a 77 69 6e 74 79 20 | y(winty),.winty.=.5;.end;.winty. |
| 6200 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6c 69 63 6b 5f 69 6d 61 5f 63 61 6c 69 62 2e 6d 00 | TOOLBOX_calib/click_ima_calib.m. |
| 6220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6260 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 6280 | 20 20 31 34 34 31 32 20 20 37 30 32 34 30 33 37 33 30 37 20 20 31 31 36 36 35 00 20 00 00 00 00 | ..14412..7024037307..11665...... |
| 62a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 62c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 62e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 63a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 63c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 63e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6400 | 09 25 20 43 6c 65 61 6e 65 64 2d 75 70 20 76 65 72 73 69 6f 6e 20 6f 66 20 69 6e 69 74 5f 63 61 | .%.Cleaned-up.version.of.init_ca |
| 6420 | 6c 69 62 2e 6d 0a 20 20 20 0a 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 50 72 6f 63 65 73 | lib.m........fprintf(1,'\nProces |
| 6440 | 73 69 6e 67 20 69 6d 61 67 65 20 25 64 2e 2e 2e 5c 6e 27 2c 6b 6b 29 3b 0a 20 20 20 0a 09 65 76 | sing.image.%d...\n',kk);......ev |
| 6460 | 61 6c 28 5b 27 49 20 3d 20 49 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a | al(['I.=.I_'.num2str(kk).';']);. |
| 6480 | 09 0a 09 66 69 67 75 72 65 28 32 29 3b 0a 09 69 6d 61 67 65 28 49 29 3b 0a 20 20 20 63 6f 6c 6f | ...figure(2);..image(I);....colo |
| 64a0 | 72 6d 61 70 28 6d 61 70 29 3b 0a 20 20 20 0a 20 20 20 74 69 74 6c 65 28 5b 27 43 6c 69 63 6b 20 | rmap(map);........title(['Click. |
| 64c0 | 6f 6e 20 74 68 65 20 66 6f 75 72 20 65 78 74 72 65 6d 65 20 63 6f 72 6e 65 72 73 20 6f 66 20 74 | on.the.four.extreme.corners.of.t |
| 64e0 | 68 65 20 72 65 63 74 61 6e 67 75 6c 61 72 20 70 61 74 74 65 72 6e 2e 2e 2e 20 49 6d 61 67 65 20 | he.rectangular.pattern....Image. |
| 6500 | 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 5d 29 3b 0a 20 20 20 0a 20 20 20 64 69 73 70 28 27 43 6c | '.num2str(kk)]);........disp('Cl |
| 6520 | 69 63 6b 20 6f 6e 20 74 68 65 20 66 6f 75 72 20 65 78 74 72 65 6d 65 20 63 6f 72 6e 65 72 73 20 | ick.on.the.four.extreme.corners. |
| 6540 | 6f 66 20 74 68 65 20 72 65 63 74 61 6e 67 75 6c 61 72 20 63 6f 6d 70 6c 65 74 65 20 70 61 74 74 | of.the.rectangular.complete.patt |
| 6560 | 65 72 6e 2e 2e 2e 27 29 3b 0a 20 20 20 0a 20 20 20 5b 78 2c 79 5d 20 3d 20 67 69 6e 70 75 74 33 | ern...');........[x,y].=.ginput3 |
| 6580 | 28 34 29 3b 0a 20 20 20 0a 20 20 20 5b 58 63 2c 67 6f 6f 64 2c 62 61 64 2c 74 79 70 65 5d 20 3d | (4);........[Xc,good,bad,type].= |
| 65a0 | 20 63 6f 72 6e 65 72 66 69 6e 64 65 72 28 5b 78 27 3b 79 27 5d 2c 49 2c 77 69 6e 74 79 2c 77 69 | .cornerfinder([x';y'],I,winty,wi |
| 65c0 | 6e 74 78 29 3b 20 25 20 74 68 65 20 66 6f 75 72 20 63 6f 72 6e 65 72 73 0a 20 20 20 0a 20 20 20 | ntx);.%.the.four.corners........ |
| 65e0 | 78 20 3d 20 58 63 28 31 2c 3a 29 27 3b 0a 20 20 20 79 20 3d 20 58 63 28 32 2c 3a 29 27 3b 0a 20 | x.=.Xc(1,:)';....y.=.Xc(2,:)';.. |
| 6600 | 20 20 0a 20 20 20 5b 79 2c 69 6e 64 79 5d 20 3d 20 73 6f 72 74 28 79 29 3b 0a 20 20 20 78 20 3d | ......[y,indy].=.sort(y);....x.= |
| 6620 | 20 78 28 69 6e 64 79 29 3b 0a 20 20 20 0a 20 20 20 69 66 20 28 78 28 32 29 20 3e 20 78 28 31 29 | .x(indy);........if.(x(2).>.x(1) |
| 6640 | 29 2c 0a 20 20 20 20 20 20 78 34 20 3d 20 78 28 31 29 3b 79 34 20 3d 20 79 28 31 29 3b 20 78 33 | ),.......x4.=.x(1);y4.=.y(1);.x3 |
| 6660 | 20 3d 20 78 28 32 29 3b 20 79 33 20 3d 20 79 28 32 29 3b 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 | .=.x(2);.y3.=.y(2);....else..... |
| 6680 | 20 20 78 34 20 3d 20 78 28 32 29 3b 79 34 20 3d 20 79 28 32 29 3b 20 78 33 20 3d 20 78 28 31 29 | ..x4.=.x(2);y4.=.y(2);.x3.=.x(1) |
| 66a0 | 3b 20 79 33 20 3d 20 79 28 31 29 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 69 66 20 28 78 28 33 29 | ;.y3.=.y(1);....end;....if.(x(3) |
| 66c0 | 20 3e 20 78 28 34 29 29 2c 0a 20 20 20 20 20 20 78 32 20 3d 20 78 28 33 29 3b 79 32 20 3d 20 79 | .>.x(4)),.......x2.=.x(3);y2.=.y |
| 66e0 | 28 33 29 3b 20 78 31 20 3d 20 78 28 34 29 3b 20 79 31 20 3d 20 79 28 34 29 3b 0a 20 20 20 65 6c | (3);.x1.=.x(4);.y1.=.y(4);....el |
| 6700 | 73 65 0a 20 20 20 20 20 20 78 32 20 3d 20 78 28 34 29 3b 79 32 20 3d 20 79 28 34 29 3b 20 78 31 | se.......x2.=.x(4);y2.=.y(4);.x1 |
| 6720 | 20 3d 20 78 28 33 29 3b 20 79 31 20 3d 20 79 28 33 29 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a | .=.x(3);.y1.=.y(3);....end;..... |
| 6740 | 20 20 20 78 20 3d 20 5b 78 31 3b 78 32 3b 78 33 3b 78 34 5d 3b 0a 20 20 20 79 20 3d 20 5b 79 31 | ...x.=.[x1;x2;x3;x4];....y.=.[y1 |
| 6760 | 3b 79 32 3b 79 33 3b 79 34 5d 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 66 69 67 75 72 65 28 32 29 | ;y2;y3;y4];............figure(2) |
| 6780 | 3b 20 68 6f 6c 64 20 6f 6e 3b 0a 20 20 20 70 6c 6f 74 28 5b 78 3b 78 28 31 29 5d 2c 5b 79 3b 79 | ;.hold.on;....plot([x;x(1)],[y;y |
| 67a0 | 28 31 29 5d 2c 27 67 2d 27 29 3b 0a 20 20 20 70 6c 6f 74 28 78 2c 79 2c 27 6f 67 27 29 3b 0a 20 | (1)],'g-');....plot(x,y,'og');.. |
| 67c0 | 20 20 68 78 3d 74 65 78 74 28 28 78 28 34 29 2b 78 28 33 29 29 2f 32 2c 28 79 28 34 29 2b 79 28 | ..hx=text((x(4)+x(3))/2,(y(4)+y( |
| 67e0 | 33 29 29 2f 32 20 2d 20 32 30 2c 27 58 27 29 3b 0a 20 20 20 73 65 74 28 68 78 2c 27 63 6f 6c 6f | 3))/2.-.20,'X');....set(hx,'colo |
| 6800 | 72 27 2c 27 67 27 2c 27 46 6f 6e 74 73 69 7a 65 27 2c 31 34 29 3b 0a 20 20 20 68 79 3d 74 65 78 | r','g','Fontsize',14);....hy=tex |
| 6820 | 74 28 28 78 28 34 29 2b 78 28 31 29 29 2f 32 2d 32 30 2c 28 79 28 34 29 2b 79 28 31 29 29 2f 32 | t((x(4)+x(1))/2-20,(y(4)+y(1))/2 |
| 6840 | 2c 27 59 27 29 3b 0a 20 20 20 73 65 74 28 68 79 2c 27 63 6f 6c 6f 72 27 2c 27 67 27 2c 27 46 6f | ,'Y');....set(hy,'color','g','Fo |
| 6860 | 6e 74 73 69 7a 65 27 2c 31 34 29 3b 0a 20 20 20 68 6f 6c 64 20 6f 66 66 3b 0a 20 20 20 0a 20 20 | ntsize',14);....hold.off;....... |
| 6880 | 20 0a 20 20 20 25 20 54 72 79 20 74 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 63 6f 75 6e | .....%.Try.to.automatically.coun |
| 68a0 | 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 71 75 61 72 65 73 20 69 6e 20 74 68 65 20 67 | t.the.number.of.squares.in.the.g |
| 68c0 | 72 69 64 0a 20 20 20 0a 20 20 20 6e 5f 73 71 5f 78 31 20 3d 20 63 6f 75 6e 74 5f 73 71 75 61 72 | rid........n_sq_x1.=.count_squar |
| 68e0 | 65 73 28 49 2c 78 31 2c 79 31 2c 78 32 2c 79 32 2c 77 69 6e 74 78 29 3b 0a 20 20 20 6e 5f 73 71 | es(I,x1,y1,x2,y2,wintx);....n_sq |
| 6900 | 5f 78 32 20 3d 20 63 6f 75 6e 74 5f 73 71 75 61 72 65 73 28 49 2c 78 33 2c 79 33 2c 78 34 2c 79 | _x2.=.count_squares(I,x3,y3,x4,y |
| 6920 | 34 2c 77 69 6e 74 78 29 3b 0a 20 20 20 6e 5f 73 71 5f 79 31 20 3d 20 63 6f 75 6e 74 5f 73 71 75 | 4,wintx);....n_sq_y1.=.count_squ |
| 6940 | 61 72 65 73 28 49 2c 78 32 2c 79 32 2c 78 33 2c 79 33 2c 77 69 6e 74 78 29 3b 0a 20 20 20 6e 5f | ares(I,x2,y2,x3,y3,wintx);....n_ |
| 6960 | 73 71 5f 79 32 20 3d 20 63 6f 75 6e 74 5f 73 71 75 61 72 65 73 28 49 2c 78 34 2c 79 34 2c 78 31 | sq_y2.=.count_squares(I,x4,y4,x1 |
| 6980 | 2c 79 31 2c 77 69 6e 74 78 29 3b 0a 20 20 20 0a 20 20 0a 20 20 20 0a 20 20 20 25 20 49 66 20 63 | ,y1,wintx);...............%.If.c |
| 69a0 | 6f 75 6c 64 20 6e 6f 74 20 63 6f 75 6e 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 71 75 | ould.not.count.the.number.of.squ |
| 69c0 | 61 72 65 73 2c 20 65 6e 74 65 72 20 6d 61 6e 75 61 6c 6c 79 0a 20 20 20 0a 20 20 20 69 66 20 28 | ares,.enter.manually........if.( |
| 69e0 | 6e 5f 73 71 5f 78 31 7e 3d 6e 5f 73 71 5f 78 32 29 7c 28 6e 5f 73 71 5f 79 31 7e 3d 6e 5f 73 71 | n_sq_x1~=n_sq_x2)|(n_sq_y1~=n_sq |
| 6a00 | 5f 79 32 29 2c 0a 20 20 20 20 20 20 0a 0a 09 20 64 69 73 70 28 27 43 6f 75 6c 64 20 6e 6f 74 20 | _y2),...........disp('Could.not. |
| 6a20 | 63 6f 75 6e 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 71 75 61 72 65 73 20 69 6e 20 74 | count.the.number.of.squares.in.t |
| 6a40 | 68 65 20 67 72 69 64 2e 20 45 6e 74 65 72 20 6d 61 6e 75 61 6c 6c 79 2e 27 29 3b 0a 09 20 6e 5f | he.grid..Enter.manually.');...n_ |
| 6a60 | 73 71 5f 78 20 3d 20 69 6e 70 75 74 28 27 4e 75 6d 62 65 72 20 6f 66 20 73 71 75 61 72 65 73 20 | sq_x.=.input('Number.of.squares. |
| 6a80 | 61 6c 6f 6e 67 20 74 68 65 20 58 20 64 69 72 65 63 74 69 6f 6e 20 28 5b 5d 3d 31 30 29 20 3d 20 | along.the.X.direction.([]=10).=. |
| 6aa0 | 27 29 3b 20 25 36 0a 09 20 69 66 20 69 73 65 6d 70 74 79 28 6e 5f 73 71 5f 78 29 2c 20 6e 5f 73 | ');.%6...if.isempty(n_sq_x),.n_s |
| 6ac0 | 71 5f 78 20 3d 20 31 30 3b 20 65 6e 64 3b 0a 09 20 6e 5f 73 71 5f 79 20 3d 20 69 6e 70 75 74 28 | q_x.=.10;.end;...n_sq_y.=.input( |
| 6ae0 | 27 4e 75 6d 62 65 72 20 6f 66 20 73 71 75 61 72 65 73 20 61 6c 6f 6e 67 20 74 68 65 20 59 20 64 | 'Number.of.squares.along.the.Y.d |
| 6b00 | 69 72 65 63 74 69 6f 6e 20 28 5b 5d 3d 31 30 29 20 3d 20 27 29 3b 20 25 36 0a 09 20 69 66 20 69 | irection.([]=10).=.');.%6...if.i |
| 6b20 | 73 65 6d 70 74 79 28 6e 5f 73 71 5f 79 29 2c 20 6e 5f 73 71 5f 79 20 3d 20 31 30 3b 20 65 6e 64 | sempty(n_sq_y),.n_sq_y.=.10;.end |
| 6b40 | 3b 20 0a 20 20 20 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 | ;.........else.................. |
| 6b60 | 20 20 20 20 20 6e 5f 73 71 5f 78 20 3d 20 6e 5f 73 71 5f 78 31 3b 0a 20 20 20 20 20 20 6e 5f 73 | .....n_sq_x.=.n_sq_x1;.......n_s |
| 6b80 | 71 5f 79 20 3d 20 6e 5f 73 71 5f 79 31 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a 20 20 | q_y.=.n_sq_y1;...........end;... |
| 6ba0 | 20 0a 20 20 20 0a 20 20 20 25 20 45 6e 74 65 72 20 74 68 65 20 73 69 7a 65 20 6f 66 20 65 61 63 | .........%.Enter.the.size.of.eac |
| 6bc0 | 68 20 73 71 75 61 72 65 0a 20 20 20 0a 20 20 20 64 58 20 3d 20 69 6e 70 75 74 28 5b 27 53 69 7a | h.square........dX.=.input(['Siz |
| 6be0 | 65 20 64 58 20 6f 66 20 65 61 63 68 20 73 71 75 61 72 65 20 61 6c 6f 6e 67 20 74 68 65 20 58 20 | e.dX.of.each.square.along.the.X. |
| 6c00 | 64 69 72 65 63 74 69 6f 6e 20 28 5b 5d 3d 27 20 6e 75 6d 32 73 74 72 28 64 58 5f 64 65 66 61 75 | direction.([]='.num2str(dX_defau |
| 6c20 | 6c 74 29 20 27 63 6d 29 20 3d 20 27 5d 29 3b 0a 20 20 09 64 59 20 3d 20 69 6e 70 75 74 28 5b 27 | lt).'cm).=.']);....dY.=.input([' |
| 6c40 | 53 69 7a 65 20 64 59 20 6f 66 20 65 61 63 68 20 73 71 75 61 72 65 20 61 6c 6f 6e 67 20 74 68 65 | Size.dY.of.each.square.along.the |
| 6c60 | 20 59 20 64 69 72 65 63 74 69 6f 6e 20 28 5b 5d 3d 27 20 6e 75 6d 32 73 74 72 28 64 59 5f 64 65 | .Y.direction.([]='.num2str(dY_de |
| 6c80 | 66 61 75 6c 74 29 20 27 63 6d 29 20 3d 20 27 5d 29 3b 0a 09 69 66 20 69 73 65 6d 70 74 79 28 64 | fault).'cm).=.']);..if.isempty(d |
| 6ca0 | 58 29 2c 20 64 58 20 3d 20 64 58 5f 64 65 66 61 75 6c 74 3b 20 65 6c 73 65 20 64 58 5f 64 65 66 | X),.dX.=.dX_default;.else.dX_def |
| 6cc0 | 61 75 6c 74 20 3d 20 64 58 3b 20 65 6e 64 3b 0a 09 69 66 20 69 73 65 6d 70 74 79 28 64 59 29 2c | ault.=.dX;.end;..if.isempty(dY), |
| 6ce0 | 20 64 59 20 3d 20 64 59 5f 64 65 66 61 75 6c 74 3b 20 65 6c 73 65 20 64 59 5f 64 65 66 61 75 6c | .dY.=.dY_default;.else.dY_defaul |
| 6d00 | 74 20 3d 20 64 59 3b 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 25 20 43 6f 6d 70 75 74 65 20 74 68 | t.=.dY;.end;........%.Compute.th |
| 6d20 | 65 20 69 6e 73 69 64 65 20 70 6f 69 6e 74 73 20 74 68 72 6f 75 67 68 20 63 6f 6d 70 75 74 61 74 | e.inside.points.through.computat |
| 6d40 | 69 6f 6e 20 6f 66 20 74 68 65 20 70 6c 61 6e 61 72 20 68 6f 6d 6f 67 72 61 70 68 79 20 28 63 6f | ion.of.the.planar.homography.(co |
| 6d60 | 6c 6c 69 6e 65 61 74 69 6f 6e 29 0a 20 20 20 0a 09 61 30 30 20 3d 20 5b 78 28 31 29 3b 79 28 31 | llineation)......a00.=.[x(1);y(1 |
| 6d80 | 29 3b 31 5d 3b 0a 09 61 31 30 20 3d 20 5b 78 28 32 29 3b 79 28 32 29 3b 31 5d 3b 0a 09 61 31 31 | );1];..a10.=.[x(2);y(2);1];..a11 |
| 6da0 | 20 3d 20 5b 78 28 33 29 3b 79 28 33 29 3b 31 5d 3b 0a 09 61 30 31 20 3d 20 5b 78 28 34 29 3b 79 | .=.[x(3);y(3);1];..a01.=.[x(4);y |
| 6dc0 | 28 34 29 3b 31 5d 3b 0a 0a 0a 09 25 20 43 6f 6d 70 75 74 65 20 74 68 65 20 70 6c 61 6e 61 72 20 | (4);1];....%.Compute.the.planar. |
| 6de0 | 63 6f 6c 6c 69 6e 65 61 74 69 6f 6e 3a 20 28 72 65 74 75 72 6e 20 74 68 65 20 6e 6f 72 6d 61 6c | collineation:.(return.the.normal |
| 6e00 | 69 7a 61 74 69 6f 6e 20 6d 61 74 72 69 78 20 61 73 20 77 65 6c 6c 29 0a 20 20 20 0a 20 20 20 5b | ization.matrix.as.well)........[ |
| 6e20 | 48 6f 6d 6f 2c 48 6e 6f 72 6d 2c 69 6e 76 5f 48 6e 6f 72 6d 5d 20 3d 20 63 6f 6d 70 75 74 65 5f | Homo,Hnorm,inv_Hnorm].=.compute_ |
| 6e40 | 68 6f 6d 6f 67 72 61 70 68 79 20 28 5b 61 30 30 20 61 31 30 20 61 31 31 20 61 30 31 5d 2c 5b 30 | homography.([a00.a10.a11.a01],[0 |
| 6e60 | 20 31 20 31 20 30 3b 30 20 30 20 31 20 31 3b 31 20 31 20 31 20 31 5d 29 3b 0a 0a 0a 09 25 20 42 | .1.1.0;0.0.1.1;1.1.1.1]);....%.B |
| 6e80 | 75 69 6c 64 20 74 68 65 20 67 72 69 64 20 75 73 69 6e 67 20 74 68 65 20 70 6c 61 6e 61 72 20 63 | uild.the.grid.using.the.planar.c |
| 6ea0 | 6f 6c 6c 69 6e 65 61 74 69 6f 6e 3a 0a 0a 09 78 5f 6c 20 3d 20 28 28 30 3a 6e 5f 73 71 5f 78 29 | ollineation:...x_l.=.((0:n_sq_x) |
| 6ec0 | 27 2a 6f 6e 65 73 28 31 2c 6e 5f 73 71 5f 79 2b 31 29 29 2f 6e 5f 73 71 5f 78 3b 0a 20 20 20 79 | '*ones(1,n_sq_y+1))/n_sq_x;....y |
| 6ee0 | 5f 6c 20 3d 20 28 6f 6e 65 73 28 6e 5f 73 71 5f 78 2b 31 2c 31 29 2a 28 30 3a 6e 5f 73 71 5f 79 | _l.=.(ones(n_sq_x+1,1)*(0:n_sq_y |
| 6f00 | 29 29 2f 6e 5f 73 71 5f 79 3b 0a 20 20 20 70 74 73 20 3d 20 5b 78 5f 6c 28 3a 29 20 79 5f 6c 28 | ))/n_sq_y;....pts.=.[x_l(:).y_l( |
| 6f20 | 3a 29 20 6f 6e 65 73 28 28 6e 5f 73 71 5f 78 2b 31 29 2a 28 6e 5f 73 71 5f 79 2b 31 29 2c 31 29 | :).ones((n_sq_x+1)*(n_sq_y+1),1) |
| 6f40 | 5d 27 3b 0a 20 20 20 0a 20 20 20 58 58 20 3d 20 48 6f 6d 6f 2a 70 74 73 3b 0a 09 58 58 20 3d 20 | ]';........XX.=.Homo*pts;..XX.=. |
| 6f60 | 58 58 28 31 3a 32 2c 3a 29 20 2e 2f 20 28 6f 6e 65 73 28 32 2c 31 29 2a 58 58 28 33 2c 3a 29 29 | XX(1:2,:)../.(ones(2,1)*XX(3,:)) |
| 6f80 | 3b 0a 0a 20 20 20 0a 20 20 20 25 20 43 6f 6d 70 6c 65 74 65 20 73 69 7a 65 20 6f 66 20 74 68 65 | ;.........%.Complete.size.of.the |
| 6fa0 | 20 72 65 63 74 61 6e 67 6c 65 0a 20 20 20 0a 20 20 20 57 20 3d 20 6e 5f 73 71 5f 78 2a 64 58 3b | .rectangle........W.=.n_sq_x*dX; |
| 6fc0 | 0a 20 20 20 4c 20 3d 20 6e 5f 73 71 5f 79 2a 64 59 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 0a 20 | ....L.=.n_sq_y*dY;.............. |
| 6fe0 | 20 20 0a 20 20 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 41 | ......%%%%%%%%%%%%%%%%%%%%%%%%.A |
| 7000 | 44 44 49 54 49 4f 4e 41 4c 20 53 54 55 46 46 20 49 4e 20 54 48 45 20 43 41 53 45 20 4f 46 20 48 | DDITIONAL.STUFF.IN.THE.CASE.OF.H |
| 7020 | 49 47 48 4c 59 20 44 49 53 54 4f 52 54 45 44 20 49 4d 41 47 45 53 20 25 25 25 25 25 25 25 25 25 | IGHLY.DISTORTED.IMAGES.%%%%%%%%% |
| 7040 | 25 25 25 25 0a 20 20 20 66 69 67 75 72 65 28 32 29 3b 0a 20 20 20 68 6f 6c 64 20 6f 6e 3b 0a 20 | %%%%....figure(2);....hold.on;.. |
| 7060 | 20 20 70 6c 6f 74 28 58 58 28 31 2c 3a 29 2c 58 58 28 32 2c 3a 29 2c 27 72 2b 27 29 3b 0a 20 20 | ..plot(XX(1,:),XX(2,:),'r+');... |
| 7080 | 20 74 69 74 6c 65 28 27 54 68 65 20 72 65 64 20 63 72 6f 73 73 65 73 20 73 68 6f 75 6c 64 20 62 | .title('The.red.crosses.should.b |
| 70a0 | 65 20 63 6c 6f 73 65 20 74 6f 20 74 68 65 20 69 6d 61 67 65 20 63 6f 72 6e 65 72 73 27 29 3b 0a | e.close.to.the.image.corners');. |
| 70c0 | 20 20 20 68 6f 6c 64 20 6f 66 66 3b 0a 20 20 20 0a 20 20 20 64 69 73 70 28 27 49 66 20 74 68 65 | ...hold.off;........disp('If.the |
| 70e0 | 20 67 75 65 73 73 65 64 20 67 72 69 64 20 63 6f 72 6e 65 72 73 20 28 72 65 64 20 63 72 6f 73 73 | .guessed.grid.corners.(red.cross |
| 7100 | 65 73 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 29 20 61 72 65 20 6e 6f 74 20 63 6c 6f 73 65 20 74 | es.on.the.image).are.not.close.t |
| 7120 | 6f 20 74 68 65 20 61 63 74 75 61 6c 20 63 6f 72 6e 65 72 73 2c 27 29 3b 0a 20 20 20 64 69 73 70 | o.the.actual.corners,');....disp |
| 7140 | 28 27 69 74 20 69 73 20 6e 65 63 65 73 73 61 72 79 20 74 6f 20 65 6e 74 65 72 20 61 6e 20 69 6e | ('it.is.necessary.to.enter.an.in |
| 7160 | 69 74 69 61 6c 20 67 75 65 73 73 20 66 6f 72 20 74 68 65 20 72 61 64 69 61 6c 20 64 69 73 74 6f | itial.guess.for.the.radial.disto |
| 7180 | 72 74 69 6f 6e 20 66 61 63 74 6f 72 20 6b 63 20 28 75 73 65 66 75 6c 20 66 6f 72 20 73 75 62 70 | rtion.factor.kc.(useful.for.subp |
| 71a0 | 69 78 65 6c 20 64 65 74 65 63 74 69 6f 6e 29 27 29 3b 0a 20 20 20 71 75 65 73 74 5f 64 69 73 74 | ixel.detection)');....quest_dist |
| 71c0 | 6f 72 74 20 3d 20 69 6e 70 75 74 28 27 4e 65 65 64 20 6f 66 20 61 6e 20 69 6e 69 74 69 61 6c 20 | ort.=.input('Need.of.an.initial. |
| 71e0 | 67 75 65 73 73 20 66 6f 72 20 64 69 73 74 6f 72 74 69 6f 6e 3f 20 28 5b 5d 3d 6e 6f 2c 20 6f 74 | guess.for.distortion?.([]=no,.ot |
| 7200 | 68 65 72 3d 79 65 73 29 20 27 29 3b 0a 20 20 0a 20 20 20 71 75 65 73 74 5f 64 69 73 74 6f 72 74 | her=yes).');.......quest_distort |
| 7220 | 20 3d 20 7e 69 73 65 6d 70 74 79 28 71 75 65 73 74 5f 64 69 73 74 6f 72 74 29 3b 0a 20 20 20 0a | .=.~isempty(quest_distort);..... |
| 7240 | 20 20 20 69 66 20 71 75 65 73 74 5f 64 69 73 74 6f 72 74 2c 0a 20 20 20 20 20 20 25 20 45 73 74 | ...if.quest_distort,.......%.Est |
| 7260 | 69 6d 61 74 69 6f 6e 20 6f 66 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 3a 0a 20 20 20 20 20 20 63 | imation.of.focal.length:.......c |
| 7280 | 5f 67 20 3d 20 5b 73 69 7a 65 28 49 2c 32 29 3b 73 69 7a 65 28 49 2c 31 29 5d 2f 32 20 2b 20 2e | _g.=.[size(I,2);size(I,1)]/2.+.. |
| 72a0 | 35 3b 0a 09 09 66 5f 67 20 3d 20 44 69 73 74 6f 72 32 43 61 6c 69 62 28 30 2c 5b 5b 78 28 31 29 | 5;...f_g.=.Distor2Calib(0,[[x(1) |
| 72c0 | 20 78 28 32 29 20 78 28 34 29 20 78 28 33 29 5d 20 2d 20 63 5f 67 28 31 29 3b 5b 79 28 31 29 20 | .x(2).x(4).x(3)].-.c_g(1);[y(1). |
| 72e0 | 79 28 32 29 20 79 28 34 29 20 79 28 33 29 5d 20 2d 20 63 5f 67 28 32 29 5d 2c 31 2c 31 2c 34 2c | y(2).y(4).y(3)].-.c_g(2)],1,1,4, |
| 7300 | 57 2c 4c 2c 5b 2d 57 2f 32 20 57 2f 32 20 57 2f 32 20 2d 57 2f 32 3b 4c 2f 32 20 4c 2f 32 20 2d | W,L,[-W/2.W/2.W/2.-W/2;L/2.L/2.- |
| 7320 | 4c 2f 32 20 2d 4c 2f 32 3b 20 30 20 30 20 30 20 30 5d 2c 31 30 30 2c 31 2c 31 29 3b 0a 20 20 20 | L/2.-L/2;.0.0.0.0],100,1,1);.... |
| 7340 | 20 20 20 66 5f 67 20 3d 20 6d 65 61 6e 28 66 5f 67 29 3b 0a 20 20 20 20 20 20 73 63 72 69 70 74 | ...f_g.=.mean(f_g);.......script |
| 7360 | 5f 66 69 74 5f 64 69 73 74 6f 72 74 69 6f 6e 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 25 25 25 25 | _fit_distortion;....end;....%%%% |
| 7380 | 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 45 4e 44 20 41 44 44 49 54 49 4f 4e 41 4c | %%%%%%%%%%%%%%%%%.END.ADDITIONAL |
| 73a0 | 20 53 54 55 46 46 20 49 4e 20 54 48 45 20 43 41 53 45 20 4f 46 20 48 49 47 48 4c 59 20 44 49 53 | .STUFF.IN.THE.CASE.OF.HIGHLY.DIS |
| 73c0 | 54 4f 52 54 45 44 20 49 4d 41 47 45 53 20 25 25 25 25 25 25 25 25 25 25 25 25 25 0a 20 20 20 0a | TORTED.IMAGES.%%%%%%%%%%%%%..... |
| 73e0 | 20 20 20 0a 20 20 20 0a 20 20 20 0a 20 20 20 0a 20 20 20 4e 70 20 3d 20 28 6e 5f 73 71 5f 78 2b | ...................Np.=.(n_sq_x+ |
| 7400 | 31 29 2a 28 6e 5f 73 71 5f 79 2b 31 29 3b 0a 0a 20 20 20 64 69 73 70 28 27 43 6f 72 6e 65 72 20 | 1)*(n_sq_y+1);.....disp('Corner. |
| 7420 | 65 78 74 72 61 63 74 69 6f 6e 2e 2e 2e 27 29 3b 0a 20 20 20 0a 20 20 20 67 72 69 64 5f 70 74 73 | extraction...');........grid_pts |
| 7440 | 20 3d 20 63 6f 72 6e 65 72 66 69 6e 64 65 72 28 58 58 2c 49 2c 77 69 6e 74 79 2c 77 69 6e 74 78 | .=.cornerfinder(XX,I,winty,wintx |
| 7460 | 29 3b 20 25 25 25 20 46 69 6e 64 73 20 74 68 65 20 65 78 61 63 74 20 63 6f 72 6e 65 72 73 20 61 | );.%%%.Finds.the.exact.corners.a |
| 7480 | 74 20 65 76 65 72 79 20 70 6f 69 6e 74 73 21 0a 20 20 20 0a 0a 20 20 20 0a 20 20 20 25 73 61 76 | t.every.points!.............%sav |
| 74a0 | 65 20 61 6c 6c 5f 63 6f 72 6e 65 72 73 20 78 20 79 20 67 72 69 64 5f 70 74 73 0a 20 20 20 0a 20 | e.all_corners.x.y.grid_pts...... |
| 74c0 | 20 20 67 72 69 64 5f 70 74 73 20 3d 20 67 72 69 64 5f 70 74 73 20 2d 20 31 3b 20 25 20 73 75 62 | ..grid_pts.=.grid_pts.-.1;.%.sub |
| 74e0 | 74 72 61 63 74 20 31 20 74 6f 20 62 72 69 6e 67 20 74 68 65 20 6f 72 69 67 69 6e 20 74 6f 20 28 | tract.1.to.bring.the.origin.to.( |
| 7500 | 30 2c 30 29 20 69 6e 73 74 65 61 64 20 6f 66 20 28 31 2c 31 29 20 69 6e 20 6d 61 74 6c 61 62 20 | 0,0).instead.of.(1,1).in.matlab. |
| 7520 | 28 6e 6f 74 20 6e 65 63 65 73 73 61 72 79 20 69 6e 20 43 29 0a 20 20 20 0a 20 20 20 0a 20 20 20 | (not.necessary.in.C)............ |
| 7540 | 25 20 47 6c 6f 62 61 6c 20 48 6f 6d 6f 67 72 61 70 68 79 20 66 72 6f 6d 20 70 6c 61 6e 65 20 74 | %.Global.Homography.from.plane.t |
| 7560 | 6f 20 70 69 78 65 6c 20 63 6f 6f 72 64 69 6e 61 74 65 73 3a 0a 20 20 20 0a 20 0a 20 20 20 0a 20 | o.pixel.coordinates:............ |
| 7580 | 20 20 0a 20 20 20 69 6e 64 5f 63 6f 72 6e 65 72 73 20 3d 20 5b 31 20 6e 5f 73 71 5f 78 2b 31 20 | ......ind_corners.=.[1.n_sq_x+1. |
| 75a0 | 28 6e 5f 73 71 5f 78 2b 31 29 2a 6e 5f 73 71 5f 79 2b 31 20 28 6e 5f 73 71 5f 78 2b 31 29 2a 28 | (n_sq_x+1)*n_sq_y+1.(n_sq_x+1)*( |
| 75c0 | 6e 5f 73 71 5f 79 2b 31 29 5d 3b 20 25 20 69 6e 64 65 78 20 6f 66 20 74 68 65 20 34 20 63 6f 72 | n_sq_y+1)];.%.index.of.the.4.cor |
| 75e0 | 6e 65 72 73 0a 20 20 20 69 6e 64 5f 6f 72 69 67 20 3d 20 28 6e 5f 73 71 5f 78 2b 31 29 2a 6e 5f | ners....ind_orig.=.(n_sq_x+1)*n_ |
| 7600 | 73 71 5f 79 20 2b 20 31 3b 0a 20 20 20 78 6f 72 69 67 20 3d 20 67 72 69 64 5f 70 74 73 28 31 2c | sq_y.+.1;....xorig.=.grid_pts(1, |
| 7620 | 69 6e 64 5f 6f 72 69 67 29 3b 0a 20 20 20 79 6f 72 69 67 20 3d 20 67 72 69 64 5f 70 74 73 28 32 | ind_orig);....yorig.=.grid_pts(2 |
| 7640 | 2c 69 6e 64 5f 6f 72 69 67 29 3b 0a 20 20 20 64 78 70 6f 73 20 3d 20 6d 65 61 6e 28 5b 67 72 69 | ,ind_orig);....dxpos.=.mean([gri |
| 7660 | 64 5f 70 74 73 28 3a 2c 69 6e 64 5f 6f 72 69 67 29 20 67 72 69 64 5f 70 74 73 28 3a 2c 69 6e 64 | d_pts(:,ind_orig).grid_pts(:,ind |
| 7680 | 5f 6f 72 69 67 2b 31 29 5d 27 29 3b 0a 20 20 20 64 79 70 6f 73 20 3d 20 6d 65 61 6e 28 5b 67 72 | _orig+1)]');....dypos.=.mean([gr |
| 76a0 | 69 64 5f 70 74 73 28 3a 2c 69 6e 64 5f 6f 72 69 67 29 20 67 72 69 64 5f 70 74 73 28 3a 2c 69 6e | id_pts(:,ind_orig).grid_pts(:,in |
| 76c0 | 64 5f 6f 72 69 67 2d 6e 5f 73 71 5f 78 2d 31 29 5d 27 29 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 | d_orig-n_sq_x-1)]');............ |
| 76e0 | 78 5f 62 6f 78 5f 6b 6b 20 3d 20 5b 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2d 28 77 69 6e 74 78 | x_box_kk.=.[grid_pts(1,:)-(wintx |
| 7700 | 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2b 28 77 69 6e 74 78 2b 2e 35 29 3b 67 72 | +.5);grid_pts(1,:)+(wintx+.5);gr |
| 7720 | 69 64 5f 70 74 73 28 31 2c 3a 29 2b 28 77 69 6e 74 78 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 | id_pts(1,:)+(wintx+.5);grid_pts( |
| 7740 | 31 2c 3a 29 2d 28 77 69 6e 74 78 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2d 28 77 | 1,:)-(wintx+.5);grid_pts(1,:)-(w |
| 7760 | 69 6e 74 78 2b 2e 35 29 5d 3b 0a 20 20 20 79 5f 62 6f 78 5f 6b 6b 20 3d 20 5b 67 72 69 64 5f 70 | intx+.5)];....y_box_kk.=.[grid_p |
| 7780 | 74 73 28 32 2c 3a 29 2d 28 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 | ts(2,:)-(winty+.5);grid_pts(2,:) |
| 77a0 | 2d 28 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2b 28 77 69 6e 74 79 | -(winty+.5);grid_pts(2,:)+(winty |
| 77c0 | 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2b 28 77 69 6e 74 79 2b 2e 35 29 3b 67 72 | +.5);grid_pts(2,:)+(winty+.5);gr |
| 77e0 | 69 64 5f 70 74 73 28 32 2c 3a 29 2d 28 77 69 6e 74 79 2b 2e 35 29 5d 3b 0a 0a 20 20 20 0a 20 20 | id_pts(2,:)-(winty+.5)];........ |
| 7800 | 20 66 69 67 75 72 65 28 33 29 3b 0a 20 20 20 69 6d 61 67 65 28 49 29 3b 20 63 6f 6c 6f 72 6d 61 | .figure(3);....image(I);.colorma |
| 7820 | 70 28 6d 61 70 29 3b 20 68 6f 6c 64 20 6f 6e 3b 0a 20 20 20 70 6c 6f 74 28 67 72 69 64 5f 70 74 | p(map);.hold.on;....plot(grid_pt |
| 7840 | 73 28 31 2c 3a 29 2b 31 2c 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2b 31 2c 27 72 2b 27 29 3b 0a | s(1,:)+1,grid_pts(2,:)+1,'r+');. |
| 7860 | 20 20 20 70 6c 6f 74 28 78 5f 62 6f 78 5f 6b 6b 2b 31 2c 79 5f 62 6f 78 5f 6b 6b 2b 31 2c 27 2d | ...plot(x_box_kk+1,y_box_kk+1,'- |
| 7880 | 62 27 29 3b 0a 20 20 20 70 6c 6f 74 28 67 72 69 64 5f 70 74 73 28 31 2c 69 6e 64 5f 63 6f 72 6e | b');....plot(grid_pts(1,ind_corn |
| 78a0 | 65 72 73 29 2b 31 2c 67 72 69 64 5f 70 74 73 28 32 2c 69 6e 64 5f 63 6f 72 6e 65 72 73 29 2b 31 | ers)+1,grid_pts(2,ind_corners)+1 |
| 78c0 | 2c 27 6d 6f 27 29 3b 0a 20 20 20 70 6c 6f 74 28 78 6f 72 69 67 2b 31 2c 79 6f 72 69 67 2b 31 2c | ,'mo');....plot(xorig+1,yorig+1, |
| 78e0 | 27 2a 6d 27 29 3b 0a 20 20 20 68 20 3d 20 74 65 78 74 28 78 6f 72 69 67 2d 31 35 2c 79 6f 72 69 | '*m');....h.=.text(xorig-15,yori |
| 7900 | 67 2d 31 35 2c 27 4f 27 29 3b 0a 20 20 20 73 65 74 28 68 2c 27 43 6f 6c 6f 72 27 2c 27 6d 27 2c | g-15,'O');....set(h,'Color','m', |
| 7920 | 27 46 6f 6e 74 53 69 7a 65 27 2c 31 34 29 3b 0a 20 20 20 68 32 20 3d 20 74 65 78 74 28 64 78 70 | 'FontSize',14);....h2.=.text(dxp |
| 7940 | 6f 73 28 31 29 2d 31 30 2c 64 78 70 6f 73 28 32 29 2d 31 30 2c 27 64 58 27 29 3b 0a 20 20 20 73 | os(1)-10,dxpos(2)-10,'dX');....s |
| 7960 | 65 74 28 68 32 2c 27 43 6f 6c 6f 72 27 2c 27 67 27 2c 27 46 6f 6e 74 53 69 7a 65 27 2c 31 34 29 | et(h2,'Color','g','FontSize',14) |
| 7980 | 3b 0a 20 20 20 68 33 20 3d 20 74 65 78 74 28 64 79 70 6f 73 28 31 29 2d 32 35 2c 64 79 70 6f 73 | ;....h3.=.text(dypos(1)-25,dypos |
| 79a0 | 28 32 29 2d 33 2c 27 64 59 27 29 3b 0a 20 20 20 73 65 74 28 68 33 2c 27 43 6f 6c 6f 72 27 2c 27 | (2)-3,'dY');....set(h3,'Color',' |
| 79c0 | 67 27 2c 27 46 6f 6e 74 53 69 7a 65 27 2c 31 34 29 3b 0a 20 20 20 78 6c 61 62 65 6c 28 27 58 63 | g','FontSize',14);....xlabel('Xc |
| 79e0 | 20 28 69 6e 20 63 61 6d 65 72 61 20 66 72 61 6d 65 29 27 29 3b 0a 20 20 20 79 6c 61 62 65 6c 28 | .(in.camera.frame)');....ylabel( |
| 7a00 | 27 59 63 20 28 69 6e 20 63 61 6d 65 72 61 20 66 72 61 6d 65 29 27 29 3b 0a 20 20 20 74 69 74 6c | 'Yc.(in.camera.frame)');....titl |
| 7a20 | 65 28 27 45 78 74 72 61 63 74 65 64 20 63 6f 72 6e 65 72 73 27 29 3b 0a 20 20 20 7a 6f 6f 6d 20 | e('Extracted.corners');....zoom. |
| 7a40 | 6f 6e 3b 0a 20 20 20 64 72 61 77 6e 6f 77 3b 0a 20 20 20 68 6f 6c 64 20 6f 66 66 3b 0a 20 20 20 | on;....drawnow;....hold.off;.... |
| 7a60 | 0a 20 20 20 0a 20 20 20 58 69 20 3d 20 72 65 73 68 61 70 65 28 28 5b 30 3a 6e 5f 73 71 5f 78 5d | ........Xi.=.reshape(([0:n_sq_x] |
| 7a80 | 2a 64 58 29 27 2a 6f 6e 65 73 28 31 2c 6e 5f 73 71 5f 79 2b 31 29 2c 4e 70 2c 31 29 27 3b 0a 20 | *dX)'*ones(1,n_sq_y+1),Np,1)';.. |
| 7aa0 | 20 20 59 69 20 3d 20 72 65 73 68 61 70 65 28 6f 6e 65 73 28 6e 5f 73 71 5f 78 2b 31 2c 31 29 2a | ..Yi.=.reshape(ones(n_sq_x+1,1)* |
| 7ac0 | 5b 6e 5f 73 71 5f 79 3a 2d 31 3a 30 5d 2a 64 59 2c 4e 70 2c 31 29 27 3b 0a 20 20 20 5a 69 20 3d | [n_sq_y:-1:0]*dY,Np,1)';....Zi.= |
| 7ae0 | 20 7a 65 72 6f 73 28 31 2c 4e 70 29 3b 0a 20 20 20 0a 20 20 20 58 67 72 69 64 20 3d 20 5b 58 69 | .zeros(1,Np);........Xgrid.=.[Xi |
| 7b00 | 3b 59 69 3b 5a 69 5d 3b 0a 20 20 20 0a 20 20 20 0a 09 25 20 41 6c 6c 20 74 68 65 20 70 6f 69 6e | ;Yi;Zi];..........%.All.the.poin |
| 7b20 | 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 28 6f 6e 20 74 68 65 20 69 6d 61 67 65 2c 20 61 6e 64 | t.coordinates.(on.the.image,.and |
| 7b40 | 20 69 6e 20 33 44 29 20 2d 20 66 6f 72 20 67 6c 6f 62 61 6c 20 6f 70 74 69 6d 69 7a 61 74 69 6f | .in.3D).-.for.global.optimizatio |
| 7b60 | 6e 3a 0a 0a 20 20 20 78 20 3d 20 67 72 69 64 5f 70 74 73 3b 0a 20 20 20 58 20 3d 20 58 67 72 69 | n:.....x.=.grid_pts;....X.=.Xgri |
| 7b80 | 64 3b 0a 0a 0a 09 25 20 53 61 76 65 73 20 61 6c 6c 20 74 68 65 20 64 61 74 61 20 69 6e 74 6f 20 | d;....%.Saves.all.the.data.into. |
| 7ba0 | 76 61 72 69 61 62 6c 65 73 3a 0a 0a 20 20 20 65 76 61 6c 28 5b 27 64 58 5f 27 20 6e 75 6d 32 73 | variables:.....eval(['dX_'.num2s |
| 7bc0 | 74 72 28 6b 6b 29 20 27 20 3d 20 64 58 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 64 59 5f | tr(kk).'.=.dX;']);....eval(['dY_ |
| 7be0 | 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 64 59 3b 27 5d 29 3b 20 20 0a 20 20 20 0a | '.num2str(kk).'.=.dY;']);....... |
| 7c00 | 20 20 20 65 76 61 6c 28 5b 27 77 69 6e 74 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 | ...eval(['wintx_'.num2str(kk).'. |
| 7c20 | 3d 20 77 69 6e 74 78 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 77 69 6e 74 79 5f 27 20 6e | =.wintx;']);....eval(['winty_'.n |
| 7c40 | 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 77 69 6e 74 79 3b 27 5d 29 3b 0a 0a 20 20 20 65 76 | um2str(kk).'.=.winty;']);.....ev |
| 7c60 | 61 6c 28 5b 27 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 78 3b 27 5d 29 3b 0a | al(['x_'.num2str(kk).'.=.x;']);. |
| 7c80 | 20 20 20 65 76 61 6c 28 5b 27 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 58 3b | ...eval(['X_'.num2str(kk).'.=.X; |
| 7ca0 | 27 5d 29 3b 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 6e 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 | ']);........eval(['n_sq_x_'.num2 |
| 7cc0 | 73 74 72 28 6b 6b 29 20 27 20 3d 20 6e 5f 73 71 5f 78 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 | str(kk).'.=.n_sq_x;']);....eval( |
| 7ce0 | 5b 27 6e 5f 73 71 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 6e 5f 73 71 5f | ['n_sq_y_'.num2str(kk).'.=.n_sq_ |
| 7d00 | 79 3b 27 5d 29 3b 0a 20 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | y;']);.......................... |
| 7d20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7d40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7d60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7d80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7e00 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6c 69 63 6b 5f 69 6d 61 5f 63 61 6c 69 62 33 44 2e | TOOLBOX_calib/click_ima_calib3D. |
| 7e20 | 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | m............................... |
| 7e40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7e60 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 7e80 | 20 20 33 32 35 30 35 20 20 37 30 32 34 30 33 37 33 30 37 20 20 31 32 30 35 37 00 20 00 00 00 00 | ..32505..7024037307..12057...... |
| 7ea0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7ec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7ee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7f00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7f20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7f40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7f60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7f80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7fa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7fc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7fe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8000 | 09 25 20 43 6c 65 61 6e 65 64 2d 75 70 20 76 65 72 73 69 6f 6e 20 6f 66 20 69 6e 69 74 5f 63 61 | .%.Cleaned-up.version.of.init_ca |
| 8020 | 6c 69 62 2e 6d 0a 0a 09 65 76 61 6c 28 5b 27 49 20 3d 20 49 5f 27 20 6e 75 6d 32 73 74 72 28 6b | lib.m...eval(['I.=.I_'.num2str(k |
| 8040 | 6b 29 20 27 3b 27 5d 29 3b 0a 09 0a 09 66 69 67 75 72 65 28 32 29 3b 0a 09 69 6d 61 67 65 28 49 | k).';']);....figure(2);..image(I |
| 8060 | 29 3b 0a 20 20 20 63 6f 6c 6f 72 6d 61 70 28 6d 61 70 29 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 | );....colormap(map);............ |
| 8080 | 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 | ............%%%%%%%%%%%%%%%%%%%% |
| 80a0 | 25 25 25 25 25 20 4c 45 46 54 20 50 41 54 54 45 52 4e 20 41 43 51 55 49 53 49 54 49 4f 4e 20 25 | %%%%%.LEFT.PATTERN.ACQUISITION.% |
| 80c0 | 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 0a 20 20 20 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%.... |
| 80e0 | 0a 20 20 0a 20 20 20 0a 20 20 20 74 69 74 6c 65 28 5b 27 43 6c 69 63 6b 20 6f 6e 20 74 68 65 20 | ...........title(['Click.on.the. |
| 8100 | 66 6f 75 72 20 65 78 74 72 65 6d 65 20 63 6f 72 6e 65 72 73 20 6f 66 20 74 68 65 20 6c 65 66 74 | four.extreme.corners.of.the.left |
| 8120 | 20 72 65 63 74 61 6e 67 75 6c 61 72 20 70 61 74 74 65 72 6e 2e 2e 2e 20 49 6d 61 67 65 20 27 20 | .rectangular.pattern....Image.'. |
| 8140 | 6e 75 6d 32 73 74 72 28 6b 6b 29 5d 29 3b 0a 20 20 20 0a 20 20 20 64 69 73 70 28 27 43 6c 69 63 | num2str(kk)]);........disp('Clic |
| 8160 | 6b 20 6f 6e 20 74 68 65 20 66 6f 75 72 20 65 78 74 72 65 6d 65 20 63 6f 72 6e 65 72 73 20 6f 66 | k.on.the.four.extreme.corners.of |
| 8180 | 20 74 68 65 20 6c 65 66 74 20 72 65 63 74 61 6e 67 75 6c 61 72 20 70 61 74 74 65 72 6e 2e 2e 2e | .the.left.rectangular.pattern... |
| 81a0 | 27 29 3b 0a 20 20 20 0a 20 20 20 5b 78 2c 79 5d 20 3d 20 67 69 6e 70 75 74 33 28 34 29 3b 0a 20 | ');........[x,y].=.ginput3(4);.. |
| 81c0 | 20 20 0a 20 20 20 5b 58 63 2c 67 6f 6f 64 2c 62 61 64 2c 74 79 70 65 5d 20 3d 20 63 6f 72 6e 65 | ......[Xc,good,bad,type].=.corne |
| 81e0 | 72 66 69 6e 64 65 72 28 5b 78 27 3b 79 27 5d 2c 49 2c 77 69 6e 74 79 2c 77 69 6e 74 78 29 3b 20 | rfinder([x';y'],I,winty,wintx);. |
| 8200 | 25 20 74 68 65 20 66 6f 75 72 20 63 6f 72 6e 65 72 73 0a 20 20 20 0a 20 20 20 78 20 3d 20 58 63 | %.the.four.corners........x.=.Xc |
| 8220 | 28 31 2c 3a 29 27 3b 0a 20 20 20 79 20 3d 20 58 63 28 32 2c 3a 29 27 3b 0a 20 20 20 0a 20 20 20 | (1,:)';....y.=.Xc(2,:)';........ |
| 8240 | 5b 79 2c 69 6e 64 79 5d 20 3d 20 73 6f 72 74 28 79 29 3b 0a 20 20 20 78 20 3d 20 78 28 69 6e 64 | [y,indy].=.sort(y);....x.=.x(ind |
| 8260 | 79 29 3b 0a 20 20 20 0a 20 20 20 69 66 20 28 78 28 32 29 20 3e 20 78 28 31 29 29 2c 0a 20 20 20 | y);........if.(x(2).>.x(1)),.... |
| 8280 | 20 20 20 78 34 20 3d 20 78 28 31 29 3b 79 34 20 3d 20 79 28 31 29 3b 20 78 33 20 3d 20 78 28 32 | ...x4.=.x(1);y4.=.y(1);.x3.=.x(2 |
| 82a0 | 29 3b 20 79 33 20 3d 20 79 28 32 29 3b 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 78 34 20 3d | );.y3.=.y(2);....else.......x4.= |
| 82c0 | 20 78 28 32 29 3b 79 34 20 3d 20 79 28 32 29 3b 20 78 33 20 3d 20 78 28 31 29 3b 20 79 33 20 3d | .x(2);y4.=.y(2);.x3.=.x(1);.y3.= |
| 82e0 | 20 79 28 31 29 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 69 66 20 28 78 28 33 29 20 3e 20 78 28 34 | .y(1);....end;....if.(x(3).>.x(4 |
| 8300 | 29 29 2c 0a 20 20 20 20 20 20 78 32 20 3d 20 78 28 33 29 3b 79 32 20 3d 20 79 28 33 29 3b 20 78 | )),.......x2.=.x(3);y2.=.y(3);.x |
| 8320 | 31 20 3d 20 78 28 34 29 3b 20 79 31 20 3d 20 79 28 34 29 3b 0a 20 20 20 65 6c 73 65 0a 20 20 20 | 1.=.x(4);.y1.=.y(4);....else.... |
| 8340 | 20 20 20 78 32 20 3d 20 78 28 34 29 3b 79 32 20 3d 20 79 28 34 29 3b 20 78 31 20 3d 20 78 28 33 | ...x2.=.x(4);y2.=.y(4);.x1.=.x(3 |
| 8360 | 29 3b 20 79 31 20 3d 20 79 28 33 29 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 78 20 3d | );.y1.=.y(3);....end;........x.= |
| 8380 | 20 5b 78 31 3b 78 32 3b 78 33 3b 78 34 5d 3b 0a 20 20 20 79 20 3d 20 5b 79 31 3b 79 32 3b 79 33 | .[x1;x2;x3;x4];....y.=.[y1;y2;y3 |
| 83a0 | 3b 79 34 5d 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 66 69 67 75 72 65 28 32 29 3b 20 68 6f 6c 64 | ;y4];............figure(2);.hold |
| 83c0 | 20 6f 6e 3b 0a 20 20 20 70 6c 6f 74 28 5b 78 3b 78 28 31 29 5d 2c 5b 79 3b 79 28 31 29 5d 2c 27 | .on;....plot([x;x(1)],[y;y(1)],' |
| 83e0 | 67 2d 27 29 3b 0a 20 20 20 70 6c 6f 74 28 78 2c 79 2c 27 6f 67 27 29 3b 0a 20 20 20 68 78 3d 74 | g-');....plot(x,y,'og');....hx=t |
| 8400 | 65 78 74 28 28 78 28 34 29 2b 78 28 33 29 29 2f 32 2c 28 79 28 34 29 2b 79 28 33 29 29 2f 32 20 | ext((x(4)+x(3))/2,(y(4)+y(3))/2. |
| 8420 | 2d 20 32 30 2c 27 58 27 29 3b 0a 20 20 20 73 65 74 28 68 78 2c 27 63 6f 6c 6f 72 27 2c 27 67 27 | -.20,'X');....set(hx,'color','g' |
| 8440 | 2c 27 46 6f 6e 74 73 69 7a 65 27 2c 31 34 29 3b 0a 20 20 20 68 79 3d 74 65 78 74 28 28 78 28 34 | ,'Fontsize',14);....hy=text((x(4 |
| 8460 | 29 2b 78 28 31 29 29 2f 32 2d 32 30 2c 28 79 28 34 29 2b 79 28 31 29 29 2f 32 2c 27 59 27 29 3b | )+x(1))/2-20,(y(4)+y(1))/2,'Y'); |
| 8480 | 0a 20 20 20 73 65 74 28 68 79 2c 27 63 6f 6c 6f 72 27 2c 27 67 27 2c 27 46 6f 6e 74 73 69 7a 65 | ....set(hy,'color','g','Fontsize |
| 84a0 | 27 2c 31 34 29 3b 0a 20 20 20 68 6f 6c 64 20 6f 66 66 3b 0a 20 20 20 0a 20 20 20 64 72 61 77 6e | ',14);....hold.off;........drawn |
| 84c0 | 6f 77 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 20 54 72 79 20 74 6f 20 61 75 74 6f 6d 61 74 69 | ow;............%.Try.to.automati |
| 84e0 | 63 61 6c 6c 79 20 63 6f 75 6e 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 71 75 61 72 65 | cally.count.the.number.of.square |
| 8500 | 73 20 69 6e 20 74 68 65 20 67 72 69 64 0a 20 20 20 0a 20 20 20 6e 5f 73 71 5f 78 31 20 3d 20 63 | s.in.the.grid........n_sq_x1.=.c |
| 8520 | 6f 75 6e 74 5f 73 71 75 61 72 65 73 28 49 2c 78 31 2c 79 31 2c 78 32 2c 79 32 2c 77 69 6e 74 78 | ount_squares(I,x1,y1,x2,y2,wintx |
| 8540 | 29 3b 0a 20 20 20 6e 5f 73 71 5f 78 32 20 3d 20 63 6f 75 6e 74 5f 73 71 75 61 72 65 73 28 49 2c | );....n_sq_x2.=.count_squares(I, |
| 8560 | 78 33 2c 79 33 2c 78 34 2c 79 34 2c 77 69 6e 74 78 29 3b 0a 20 20 20 6e 5f 73 71 5f 79 31 20 3d | x3,y3,x4,y4,wintx);....n_sq_y1.= |
| 8580 | 20 63 6f 75 6e 74 5f 73 71 75 61 72 65 73 28 49 2c 78 32 2c 79 32 2c 78 33 2c 79 33 2c 77 69 6e | .count_squares(I,x2,y2,x3,y3,win |
| 85a0 | 74 78 29 3b 0a 20 20 20 6e 5f 73 71 5f 79 32 20 3d 20 63 6f 75 6e 74 5f 73 71 75 61 72 65 73 28 | tx);....n_sq_y2.=.count_squares( |
| 85c0 | 49 2c 78 34 2c 79 34 2c 78 31 2c 79 31 2c 77 69 6e 74 78 29 3b 0a 20 20 20 0a 20 20 0a 20 20 20 | I,x4,y4,x1,y1,wintx);........... |
| 85e0 | 0a 20 20 20 25 20 49 66 20 63 6f 75 6c 64 20 6e 6f 74 20 63 6f 75 6e 74 20 74 68 65 20 6e 75 6d | ....%.If.could.not.count.the.num |
| 8600 | 62 65 72 20 6f 66 20 73 71 75 61 72 65 73 2c 20 65 6e 74 65 72 20 6d 61 6e 75 61 6c 6c 79 0a 20 | ber.of.squares,.enter.manually.. |
| 8620 | 20 20 0a 20 20 20 69 66 20 28 6e 5f 73 71 5f 78 31 7e 3d 6e 5f 73 71 5f 78 32 29 7c 28 6e 5f 73 | ......if.(n_sq_x1~=n_sq_x2)|(n_s |
| 8640 | 71 5f 79 31 7e 3d 6e 5f 73 71 5f 79 32 29 2c 0a 20 20 20 20 20 20 0a 0a 09 20 64 69 73 70 28 27 | q_y1~=n_sq_y2),...........disp(' |
| 8660 | 43 6f 75 6c 64 20 6e 6f 74 20 63 6f 75 6e 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 71 | Could.not.count.the.number.of.sq |
| 8680 | 75 61 72 65 73 20 69 6e 20 74 68 65 20 67 72 69 64 2e 20 45 6e 74 65 72 20 6d 61 6e 75 61 6c 6c | uares.in.the.grid..Enter.manuall |
| 86a0 | 79 2e 27 29 3b 0a 09 20 6e 5f 73 71 5f 78 20 3d 20 69 6e 70 75 74 28 27 4e 75 6d 62 65 72 20 6f | y.');...n_sq_x.=.input('Number.o |
| 86c0 | 66 20 73 71 75 61 72 65 73 20 61 6c 6f 6e 67 20 74 68 65 20 58 20 64 69 72 65 63 74 69 6f 6e 20 | f.squares.along.the.X.direction. |
| 86e0 | 28 5b 5d 3d 31 30 29 20 3d 20 27 29 3b 20 25 36 0a 09 20 69 66 20 69 73 65 6d 70 74 79 28 6e 5f | ([]=10).=.');.%6...if.isempty(n_ |
| 8700 | 73 71 5f 78 29 2c 20 6e 5f 73 71 5f 78 20 3d 20 31 30 3b 20 65 6e 64 3b 0a 09 20 6e 5f 73 71 5f | sq_x),.n_sq_x.=.10;.end;...n_sq_ |
| 8720 | 79 20 3d 20 69 6e 70 75 74 28 27 4e 75 6d 62 65 72 20 6f 66 20 73 71 75 61 72 65 73 20 61 6c 6f | y.=.input('Number.of.squares.alo |
| 8740 | 6e 67 20 74 68 65 20 59 20 64 69 72 65 63 74 69 6f 6e 20 28 5b 5d 3d 31 30 29 20 3d 20 27 29 3b | ng.the.Y.direction.([]=10).=.'); |
| 8760 | 20 25 36 0a 09 20 69 66 20 69 73 65 6d 70 74 79 28 6e 5f 73 71 5f 79 29 2c 20 6e 5f 73 71 5f 79 | .%6...if.isempty(n_sq_y),.n_sq_y |
| 8780 | 20 3d 20 31 30 3b 20 65 6e 64 3b 20 0a 20 20 20 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 | .=.10;.end;.........else........ |
| 87a0 | 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 6e 5f 73 71 5f 78 20 3d 20 6e 5f 73 71 5f 78 31 3b | ...............n_sq_x.=.n_sq_x1; |
| 87c0 | 0a 20 20 20 20 20 20 6e 5f 73 71 5f 79 20 3d 20 6e 5f 73 71 5f 79 31 3b 0a 20 20 20 20 20 20 0a | .......n_sq_y.=.n_sq_y1;........ |
| 87e0 | 20 20 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 69 66 20 31 2c 0a 20 20 20 09 25 20 45 | ...end;............if.1,.....%.E |
| 8800 | 6e 74 65 72 20 74 68 65 20 73 69 7a 65 20 6f 66 20 65 61 63 68 20 73 71 75 61 72 65 0a 20 20 20 | nter.the.size.of.each.square.... |
| 8820 | 0a 20 20 20 09 64 58 20 3d 20 69 6e 70 75 74 28 5b 27 53 69 7a 65 20 64 58 20 6f 66 20 65 61 63 | .....dX.=.input(['Size.dX.of.eac |
| 8840 | 68 20 73 71 75 61 72 65 20 61 6c 6f 6e 67 20 74 68 65 20 58 20 64 69 72 65 63 74 69 6f 6e 20 28 | h.square.along.the.X.direction.( |
| 8860 | 5b 5d 3d 27 20 6e 75 6d 32 73 74 72 28 64 58 5f 64 65 66 61 75 6c 74 29 20 27 63 6d 29 20 3d 20 | []='.num2str(dX_default).'cm).=. |
| 8880 | 27 5d 29 3b 0a 20 20 09 09 64 59 20 3d 20 69 6e 70 75 74 28 5b 27 53 69 7a 65 20 64 59 20 6f 66 | ']);.....dY.=.input(['Size.dY.of |
| 88a0 | 20 65 61 63 68 20 73 71 75 61 72 65 20 61 6c 6f 6e 67 20 74 68 65 20 59 20 64 69 72 65 63 74 69 | .each.square.along.the.Y.directi |
| 88c0 | 6f 6e 20 28 5b 5d 3d 27 20 6e 75 6d 32 73 74 72 28 64 59 5f 64 65 66 61 75 6c 74 29 20 27 63 6d | on.([]='.num2str(dY_default).'cm |
| 88e0 | 29 20 3d 20 27 5d 29 3b 0a 09 09 69 66 20 69 73 65 6d 70 74 79 28 64 58 29 2c 20 64 58 20 3d 20 | ).=.']);...if.isempty(dX),.dX.=. |
| 8900 | 64 58 5f 64 65 66 61 75 6c 74 3b 20 65 6c 73 65 20 64 58 5f 64 65 66 61 75 6c 74 20 3d 20 64 58 | dX_default;.else.dX_default.=.dX |
| 8920 | 3b 20 65 6e 64 3b 0a 09 09 69 66 20 69 73 65 6d 70 74 79 28 64 59 29 2c 20 64 59 20 3d 20 64 59 | ;.end;...if.isempty(dY),.dY.=.dY |
| 8940 | 5f 64 65 66 61 75 6c 74 3b 20 65 6c 73 65 20 64 59 5f 64 65 66 61 75 6c 74 20 3d 20 64 59 3b 20 | _default;.else.dY_default.=.dY;. |
| 8960 | 65 6e 64 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 0a 20 20 20 20 20 | end;...........else............. |
| 8980 | 20 64 58 20 3d 20 33 3b 0a 20 20 20 20 20 20 64 59 20 3d 20 33 3b 0a 20 20 20 20 20 20 0a 20 20 | .dX.=.3;.......dY.=.3;.......... |
| 89a0 | 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 20 43 6f 6d 70 75 74 65 20 74 68 65 20 69 | .end;............%.Compute.the.i |
| 89c0 | 6e 73 69 64 65 20 70 6f 69 6e 74 73 20 74 68 72 6f 75 67 68 20 63 6f 6d 70 75 74 61 74 69 6f 6e | nside.points.through.computation |
| 89e0 | 20 6f 66 20 74 68 65 20 70 6c 61 6e 61 72 20 68 6f 6d 6f 67 72 61 70 68 79 20 28 63 6f 6c 6c 69 | .of.the.planar.homography.(colli |
| 8a00 | 6e 65 61 74 69 6f 6e 29 0a 20 20 20 0a 09 61 30 30 20 3d 20 5b 78 28 31 29 3b 79 28 31 29 3b 31 | neation)......a00.=.[x(1);y(1);1 |
| 8a20 | 5d 3b 0a 09 61 31 30 20 3d 20 5b 78 28 32 29 3b 79 28 32 29 3b 31 5d 3b 0a 09 61 31 31 20 3d 20 | ];..a10.=.[x(2);y(2);1];..a11.=. |
| 8a40 | 5b 78 28 33 29 3b 79 28 33 29 3b 31 5d 3b 0a 09 61 30 31 20 3d 20 5b 78 28 34 29 3b 79 28 34 29 | [x(3);y(3);1];..a01.=.[x(4);y(4) |
| 8a60 | 3b 31 5d 3b 0a 0a 0a 09 25 20 43 6f 6d 70 75 74 65 20 74 68 65 20 70 6c 61 6e 61 72 74 20 63 6f | ;1];....%.Compute.the.planart.co |
| 8a80 | 6c 6c 69 6e 65 61 74 69 6f 6e 3a 20 28 72 65 74 75 72 6e 20 74 68 65 20 6e 6f 72 6d 61 6c 69 7a | llineation:.(return.the.normaliz |
| 8aa0 | 61 74 69 6f 6e 20 6d 61 74 72 69 63 65 20 61 73 20 77 65 6c 6c 29 0a 0a 09 5b 48 6f 6d 6f 2c 48 | ation.matrice.as.well)...[Homo,H |
| 8ac0 | 6e 6f 72 6d 2c 69 6e 76 5f 48 6e 6f 72 6d 5d 20 3d 20 63 6f 6d 70 75 74 65 5f 63 6f 6c 6c 69 6e | norm,inv_Hnorm].=.compute_collin |
| 8ae0 | 65 61 74 69 6f 6e 20 28 61 30 30 2c 20 61 31 30 2c 20 61 31 31 2c 20 61 30 31 29 3b 0a 0a 0a 09 | eation.(a00,.a10,.a11,.a01);.... |
| 8b00 | 25 20 42 75 69 6c 64 20 74 68 65 20 67 72 69 64 20 75 73 69 6e 67 20 74 68 65 20 70 6c 61 6e 61 | %.Build.the.grid.using.the.plana |
| 8b20 | 72 20 63 6f 6c 6c 69 6e 65 61 74 69 6f 6e 3a 0a 0a 09 78 5f 6c 20 3d 20 28 28 30 3a 6e 5f 73 71 | r.collineation:...x_l.=.((0:n_sq |
| 8b40 | 5f 78 29 27 2a 6f 6e 65 73 28 31 2c 6e 5f 73 71 5f 79 2b 31 29 29 2f 6e 5f 73 71 5f 78 3b 0a 20 | _x)'*ones(1,n_sq_y+1))/n_sq_x;.. |
| 8b60 | 20 20 79 5f 6c 20 3d 20 28 6f 6e 65 73 28 6e 5f 73 71 5f 78 2b 31 2c 31 29 2a 28 30 3a 6e 5f 73 | ..y_l.=.(ones(n_sq_x+1,1)*(0:n_s |
| 8b80 | 71 5f 79 29 29 2f 6e 5f 73 71 5f 79 3b 0a 20 20 20 70 74 73 20 3d 20 5b 78 5f 6c 28 3a 29 20 79 | q_y))/n_sq_y;....pts.=.[x_l(:).y |
| 8ba0 | 5f 6c 28 3a 29 20 6f 6e 65 73 28 28 6e 5f 73 71 5f 78 2b 31 29 2a 28 6e 5f 73 71 5f 79 2b 31 29 | _l(:).ones((n_sq_x+1)*(n_sq_y+1) |
| 8bc0 | 2c 31 29 5d 27 3b 0a 20 20 20 0a 20 20 20 58 58 20 3d 20 48 6f 6d 6f 2a 70 74 73 3b 0a 09 58 58 | ,1)]';........XX.=.Homo*pts;..XX |
| 8be0 | 20 3d 20 58 58 28 31 3a 32 2c 3a 29 20 2e 2f 20 28 6f 6e 65 73 28 32 2c 31 29 2a 58 58 28 33 2c | .=.XX(1:2,:)../.(ones(2,1)*XX(3, |
| 8c00 | 3a 29 29 3b 0a 0a 20 20 20 0a 20 20 20 25 20 43 6f 6d 70 6c 65 74 65 20 73 69 7a 65 20 6f 66 20 | :));.........%.Complete.size.of. |
| 8c20 | 74 68 65 20 72 65 63 74 61 6e 67 6c 65 0a 20 20 20 0a 20 20 20 57 20 3d 20 6e 5f 73 71 5f 78 2a | the.rectangle........W.=.n_sq_x* |
| 8c40 | 64 58 3b 0a 20 20 20 4c 20 3d 20 6e 5f 73 71 5f 79 2a 64 59 3b 0a 20 20 20 0a 20 20 20 0a 20 20 | dX;....L.=.n_sq_y*dY;........... |
| 8c60 | 20 0a 20 20 20 69 66 20 31 2c 0a 20 20 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 | .....if.1,....%%%%%%%%%%%%%%%%%% |
| 8c80 | 25 25 25 25 25 25 20 41 44 44 49 54 49 4f 4e 41 4c 20 53 54 55 46 46 20 49 4e 20 54 48 45 20 43 | %%%%%%.ADDITIONAL.STUFF.IN.THE.C |
| 8ca0 | 41 53 45 20 4f 46 20 48 49 47 48 4c 59 20 44 49 53 54 4f 52 54 45 44 20 49 4d 41 47 45 53 20 25 | ASE.OF.HIGHLY.DISTORTED.IMAGES.% |
| 8cc0 | 25 25 25 25 25 25 25 25 25 25 25 25 0a 20 20 20 66 69 67 75 72 65 28 32 29 3b 0a 20 20 20 68 6f | %%%%%%%%%%%%....figure(2);....ho |
| 8ce0 | 6c 64 20 6f 6e 3b 0a 20 20 20 70 6c 6f 74 28 58 58 28 31 2c 3a 29 2c 58 58 28 32 2c 3a 29 2c 27 | ld.on;....plot(XX(1,:),XX(2,:),' |
| 8d00 | 72 2b 27 29 3b 0a 20 20 20 74 69 74 6c 65 28 27 54 68 65 20 72 65 64 20 63 72 6f 73 73 65 73 20 | r+');....title('The.red.crosses. |
| 8d20 | 73 68 6f 75 6c 64 20 62 65 20 63 6c 6f 73 65 20 74 6f 20 74 68 65 20 69 6d 61 67 65 20 63 6f 72 | should.be.close.to.the.image.cor |
| 8d40 | 6e 65 72 73 27 29 3b 0a 20 20 20 68 6f 6c 64 20 6f 66 66 3b 0a 20 20 20 0a 20 20 20 64 69 73 70 | ners');....hold.off;........disp |
| 8d60 | 28 27 49 66 20 74 68 65 20 67 75 65 73 73 65 64 20 67 72 69 64 20 63 6f 72 6e 65 72 73 20 28 72 | ('If.the.guessed.grid.corners.(r |
| 8d80 | 65 64 20 63 72 6f 73 73 65 73 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 29 20 61 72 65 20 6e 6f 74 | ed.crosses.on.the.image).are.not |
| 8da0 | 20 63 6c 6f 73 65 20 74 6f 20 74 68 65 20 61 63 74 75 61 6c 20 63 6f 72 6e 65 72 73 2c 27 29 3b | .close.to.the.actual.corners,'); |
| 8dc0 | 0a 20 20 20 64 69 73 70 28 27 69 74 20 69 73 20 6e 65 63 65 73 73 61 72 79 20 74 6f 20 65 6e 74 | ....disp('it.is.necessary.to.ent |
| 8de0 | 65 72 20 61 6e 20 69 6e 69 74 69 61 6c 20 67 75 65 73 73 20 66 6f 72 20 74 68 65 20 72 61 64 69 | er.an.initial.guess.for.the.radi |
| 8e00 | 61 6c 20 64 69 73 74 6f 72 74 69 6f 6e 20 66 61 63 74 6f 72 20 6b 63 20 28 75 73 65 66 75 6c 20 | al.distortion.factor.kc.(useful. |
| 8e20 | 66 6f 72 20 73 75 62 70 69 78 65 6c 20 64 65 74 65 63 74 69 6f 6e 29 27 29 3b 0a 20 20 20 71 75 | for.subpixel.detection)');....qu |
| 8e40 | 65 73 74 5f 64 69 73 74 6f 72 74 20 3d 20 69 6e 70 75 74 28 27 4e 65 65 64 20 6f 66 20 61 6e 20 | est_distort.=.input('Need.of.an. |
| 8e60 | 69 6e 69 74 69 61 6c 20 67 75 65 73 73 20 66 6f 72 20 64 69 73 74 6f 72 74 69 6f 6e 3f 20 28 5b | initial.guess.for.distortion?.([ |
| 8e80 | 5d 3d 6e 6f 2c 20 6f 74 68 65 72 3d 79 65 73 29 20 27 29 3b 0a 20 20 0a 20 20 20 71 75 65 73 74 | ]=no,.other=yes).');.......quest |
| 8ea0 | 5f 64 69 73 74 6f 72 74 20 3d 20 7e 69 73 65 6d 70 74 79 28 71 75 65 73 74 5f 64 69 73 74 6f 72 | _distort.=.~isempty(quest_distor |
| 8ec0 | 74 29 3b 0a 20 20 20 0a 20 20 20 69 66 20 71 75 65 73 74 5f 64 69 73 74 6f 72 74 2c 0a 20 20 20 | t);........if.quest_distort,.... |
| 8ee0 | 20 20 20 25 20 45 73 74 69 6d 61 74 69 6f 6e 20 6f 66 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 3a | ...%.Estimation.of.focal.length: |
| 8f00 | 0a 20 20 20 20 20 20 63 5f 67 20 3d 20 5b 73 69 7a 65 28 49 2c 32 29 3b 73 69 7a 65 28 49 2c 31 | .......c_g.=.[size(I,2);size(I,1 |
| 8f20 | 29 5d 2f 32 20 2b 20 2e 35 3b 0a 09 09 66 5f 67 20 3d 20 44 69 73 74 6f 72 32 43 61 6c 69 62 28 | )]/2.+..5;...f_g.=.Distor2Calib( |
| 8f40 | 30 2c 5b 5b 78 28 31 29 20 78 28 32 29 20 78 28 34 29 20 78 28 33 29 5d 20 2d 20 63 5f 67 28 31 | 0,[[x(1).x(2).x(4).x(3)].-.c_g(1 |
| 8f60 | 29 3b 5b 79 28 31 29 20 79 28 32 29 20 79 28 34 29 20 79 28 33 29 5d 20 2d 20 63 5f 67 28 32 29 | );[y(1).y(2).y(4).y(3)].-.c_g(2) |
| 8f80 | 5d 2c 31 2c 31 2c 34 2c 57 2c 4c 2c 5b 2d 57 2f 32 20 57 2f 32 20 57 2f 32 20 2d 57 2f 32 3b 4c | ],1,1,4,W,L,[-W/2.W/2.W/2.-W/2;L |
| 8fa0 | 2f 32 20 4c 2f 32 20 2d 4c 2f 32 20 2d 4c 2f 32 3b 20 30 20 30 20 30 20 30 5d 2c 31 30 30 2c 31 | /2.L/2.-L/2.-L/2;.0.0.0.0],100,1 |
| 8fc0 | 2c 31 29 3b 0a 20 20 20 20 20 20 66 5f 67 20 3d 20 6d 65 61 6e 28 66 5f 67 29 3b 0a 20 20 20 20 | ,1);.......f_g.=.mean(f_g);..... |
| 8fe0 | 20 20 73 63 72 69 70 74 5f 66 69 74 5f 64 69 73 74 6f 72 74 69 6f 6e 3b 0a 20 20 20 65 6e 64 3b | ..script_fit_distortion;....end; |
| 9000 | 0a 20 20 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 45 4e 44 20 41 44 | ....%%%%%%%%%%%%%%%%%%%%%.END.AD |
| 9020 | 44 49 54 49 4f 4e 41 4c 20 53 54 55 46 46 20 49 4e 20 54 48 45 20 43 41 53 45 20 4f 46 20 48 49 | DITIONAL.STUFF.IN.THE.CASE.OF.HI |
| 9040 | 47 48 4c 59 20 44 49 53 54 4f 52 54 45 44 20 49 4d 41 47 45 53 20 25 25 25 25 25 25 25 25 25 25 | GHLY.DISTORTED.IMAGES.%%%%%%%%%% |
| 9060 | 25 25 25 0a 20 20 20 65 6e 64 3b 20 20 20 0a 20 20 20 0a 20 20 20 0a 20 20 20 4e 70 20 3d 20 28 | %%%....end;...............Np.=.( |
| 9080 | 6e 5f 73 71 5f 78 2b 31 29 2a 28 6e 5f 73 71 5f 79 2b 31 29 3b 0a 0a 20 20 20 64 69 73 70 28 27 | n_sq_x+1)*(n_sq_y+1);.....disp(' |
| 90a0 | 43 6f 72 6e 65 72 20 65 78 74 72 61 63 74 69 6f 6e 2e 2e 2e 27 29 3b 0a 20 20 20 0a 20 20 20 67 | Corner.extraction...');........g |
| 90c0 | 72 69 64 5f 70 74 73 20 3d 20 63 6f 72 6e 65 72 66 69 6e 64 65 72 28 58 58 2c 49 2c 77 69 6e 74 | rid_pts.=.cornerfinder(XX,I,wint |
| 90e0 | 79 2c 77 69 6e 74 78 29 3b 20 25 25 25 20 46 69 6e 64 73 20 74 68 65 20 65 78 61 63 74 20 63 6f | y,wintx);.%%%.Finds.the.exact.co |
| 9100 | 72 6e 65 72 73 20 61 74 20 65 76 65 72 79 20 70 6f 69 6e 74 73 21 0a 20 20 20 0a 20 20 20 25 73 | rners.at.every.points!........%s |
| 9120 | 61 76 65 20 61 6c 6c 5f 63 6f 72 6e 65 72 73 20 78 20 79 20 67 72 69 64 5f 70 74 73 0a 20 20 20 | ave.all_corners.x.y.grid_pts.... |
| 9140 | 0a 20 20 20 67 72 69 64 5f 70 74 73 20 3d 20 67 72 69 64 5f 70 74 73 20 2d 20 31 3b 20 25 20 73 | ....grid_pts.=.grid_pts.-.1;.%.s |
| 9160 | 75 62 74 72 61 63 74 20 31 20 74 6f 20 62 72 69 6e 67 20 74 68 65 20 6f 72 69 67 69 6e 20 74 6f | ubtract.1.to.bring.the.origin.to |
| 9180 | 20 28 30 2c 30 29 20 69 6e 73 74 65 61 64 20 6f 66 20 28 31 2c 31 29 20 69 6e 20 6d 61 74 6c 61 | .(0,0).instead.of.(1,1).in.matla |
| 91a0 | 62 20 28 6e 6f 74 20 6e 65 63 65 73 73 61 72 79 20 69 6e 20 43 29 0a 20 20 20 0a 20 20 20 0a 20 | b.(not.necessary.in.C).......... |
| 91c0 | 20 20 25 20 47 6c 6f 62 61 6c 20 48 6f 6d 6f 67 72 61 70 68 79 20 66 72 6f 6d 20 70 6c 61 6e 65 | ..%.Global.Homography.from.plane |
| 91e0 | 20 74 6f 20 70 69 78 65 6c 20 63 6f 6f 72 64 69 6e 61 74 65 73 3a 0a 20 20 20 0a 20 20 20 48 5f | .to.pixel.coordinates:........H_ |
| 9200 | 74 6f 74 61 6c 20 3d 20 5b 31 20 30 20 2d 31 20 3b 20 30 20 31 20 2d 31 20 3b 20 30 20 30 20 31 | total.=.[1.0.-1.;.0.1.-1.;.0.0.1 |
| 9220 | 5d 2a 48 6f 6d 6f 2a 5b 31 20 30 20 30 3b 30 20 2d 31 20 31 3b 30 20 30 20 31 5d 2a 5b 31 2f 57 | ]*Homo*[1.0.0;0.-1.1;0.0.1]*[1/W |
| 9240 | 20 30 20 30 20 3b 20 30 20 31 2f 4c 20 30 3b 20 30 20 30 20 31 5d 3b 0a 20 20 20 25 20 57 41 52 | .0.0.;.0.1/L.0;.0.0.1];....%.WAR |
| 9260 | 4e 49 4e 47 21 21 21 20 74 68 65 20 66 69 72 73 74 20 6d 61 74 72 69 78 20 28 6f 6e 20 74 68 65 | NING!!!.the.first.matrix.(on.the |
| 9280 | 20 6c 65 66 74 20 73 69 64 65 29 20 74 61 6b 65 73 20 63 61 72 65 20 6f 66 20 74 68 65 20 74 72 | .left.side).takes.care.of.the.tr |
| 92a0 | 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 70 69 78 65 6c 20 63 6f 6f 72 65 64 | ansformation.of.the.pixel.coored |
| 92c0 | 69 6e 61 74 65 73 20 62 79 20 2d 31 20 28 70 72 65 76 69 6f 75 73 20 6c 69 6e 65 29 0a 20 20 20 | inates.by.-1.(previous.line).... |
| 92e0 | 25 20 49 66 20 69 74 20 69 73 20 6e 6f 74 20 64 6f 6e 65 2c 20 74 68 65 6e 20 74 68 69 73 20 6d | %.If.it.is.not.done,.then.this.m |
| 9300 | 61 74 72 69 78 20 73 68 6f 75 6c 64 20 6e 6f 74 20 61 70 70 65 61 72 20 28 69 6e 20 43 29 0a 20 | atrix.should.not.appear.(in.C).. |
| 9320 | 20 20 48 5f 74 6f 74 61 6c 20 3d 20 48 5f 74 6f 74 61 6c 20 2f 20 48 5f 74 6f 74 61 6c 28 33 2c | ..H_total.=.H_total./.H_total(3, |
| 9340 | 33 29 3b 20 20 20 0a 20 20 20 0a 20 20 20 0a 20 20 20 69 6e 64 5f 63 6f 72 6e 65 72 73 20 3d 20 | 3);...............ind_corners.=. |
| 9360 | 5b 31 20 6e 5f 73 71 5f 78 2b 31 20 28 6e 5f 73 71 5f 78 2b 31 29 2a 6e 5f 73 71 5f 79 2b 31 20 | [1.n_sq_x+1.(n_sq_x+1)*n_sq_y+1. |
| 9380 | 28 6e 5f 73 71 5f 78 2b 31 29 2a 28 6e 5f 73 71 5f 79 2b 31 29 5d 3b 20 25 20 69 6e 64 65 78 20 | (n_sq_x+1)*(n_sq_y+1)];.%.index. |
| 93a0 | 6f 66 20 74 68 65 20 34 20 63 6f 72 6e 65 72 73 0a 20 20 20 69 6e 64 5f 6f 72 69 67 20 3d 20 28 | of.the.4.corners....ind_orig.=.( |
| 93c0 | 6e 5f 73 71 5f 78 2b 31 29 2a 6e 5f 73 71 5f 79 20 2b 20 31 3b 0a 20 20 20 78 6f 72 69 67 20 3d | n_sq_x+1)*n_sq_y.+.1;....xorig.= |
| 93e0 | 20 67 72 69 64 5f 70 74 73 28 31 2c 69 6e 64 5f 6f 72 69 67 29 3b 0a 20 20 20 79 6f 72 69 67 20 | .grid_pts(1,ind_orig);....yorig. |
| 9400 | 3d 20 67 72 69 64 5f 70 74 73 28 32 2c 69 6e 64 5f 6f 72 69 67 29 3b 0a 20 20 20 64 78 70 6f 73 | =.grid_pts(2,ind_orig);....dxpos |
| 9420 | 20 3d 20 6d 65 61 6e 28 5b 67 72 69 64 5f 70 74 73 28 3a 2c 69 6e 64 5f 6f 72 69 67 29 20 67 72 | .=.mean([grid_pts(:,ind_orig).gr |
| 9440 | 69 64 5f 70 74 73 28 3a 2c 69 6e 64 5f 6f 72 69 67 2b 31 29 5d 27 29 3b 0a 20 20 20 64 79 70 6f | id_pts(:,ind_orig+1)]');....dypo |
| 9460 | 73 20 3d 20 6d 65 61 6e 28 5b 67 72 69 64 5f 70 74 73 28 3a 2c 69 6e 64 5f 6f 72 69 67 29 20 67 | s.=.mean([grid_pts(:,ind_orig).g |
| 9480 | 72 69 64 5f 70 74 73 28 3a 2c 69 6e 64 5f 6f 72 69 67 2d 6e 5f 73 71 5f 78 2d 31 29 5d 27 29 3b | rid_pts(:,ind_orig-n_sq_x-1)]'); |
| 94a0 | 0a 20 20 20 0a 20 20 20 0a 20 20 20 78 5f 62 6f 78 5f 6b 6b 20 3d 20 5b 67 72 69 64 5f 70 74 73 | ............x_box_kk.=.[grid_pts |
| 94c0 | 28 31 2c 3a 29 2d 28 77 69 6e 74 78 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2b 28 | (1,:)-(wintx+.5);grid_pts(1,:)+( |
| 94e0 | 77 69 6e 74 78 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2b 28 77 69 6e 74 78 2b 2e | wintx+.5);grid_pts(1,:)+(wintx+. |
| 9500 | 35 29 3b 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2d 28 77 69 6e 74 78 2b 2e 35 29 3b 67 72 69 64 | 5);grid_pts(1,:)-(wintx+.5);grid |
| 9520 | 5f 70 74 73 28 31 2c 3a 29 2d 28 77 69 6e 74 78 2b 2e 35 29 5d 3b 0a 20 20 20 79 5f 62 6f 78 5f | _pts(1,:)-(wintx+.5)];....y_box_ |
| 9540 | 6b 6b 20 3d 20 5b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2d 28 77 69 6e 74 79 2b 2e 35 29 3b 67 | kk.=.[grid_pts(2,:)-(winty+.5);g |
| 9560 | 72 69 64 5f 70 74 73 28 32 2c 3a 29 2d 28 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 | rid_pts(2,:)-(winty+.5);grid_pts |
| 9580 | 28 32 2c 3a 29 2b 28 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2b 28 | (2,:)+(winty+.5);grid_pts(2,:)+( |
| 95a0 | 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2d 28 77 69 6e 74 79 2b 2e | winty+.5);grid_pts(2,:)-(winty+. |
| 95c0 | 35 29 5d 3b 0a 0a 20 20 20 0a 20 20 20 66 69 67 75 72 65 28 33 29 3b 0a 20 20 20 69 6d 61 67 65 | 5)];.........figure(3);....image |
| 95e0 | 28 49 29 3b 20 63 6f 6c 6f 72 6d 61 70 28 6d 61 70 29 3b 20 68 6f 6c 64 20 6f 6e 3b 0a 20 20 20 | (I);.colormap(map);.hold.on;.... |
| 9600 | 70 6c 6f 74 28 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2b 31 2c 67 72 69 64 5f 70 74 73 28 32 2c | plot(grid_pts(1,:)+1,grid_pts(2, |
| 9620 | 3a 29 2b 31 2c 27 72 2b 27 29 3b 0a 20 20 20 70 6c 6f 74 28 78 5f 62 6f 78 5f 6b 6b 2b 31 2c 79 | :)+1,'r+');....plot(x_box_kk+1,y |
| 9640 | 5f 62 6f 78 5f 6b 6b 2b 31 2c 27 2d 62 27 29 3b 0a 20 20 20 70 6c 6f 74 28 67 72 69 64 5f 70 74 | _box_kk+1,'-b');....plot(grid_pt |
| 9660 | 73 28 31 2c 69 6e 64 5f 63 6f 72 6e 65 72 73 29 2b 31 2c 67 72 69 64 5f 70 74 73 28 32 2c 69 6e | s(1,ind_corners)+1,grid_pts(2,in |
| 9680 | 64 5f 63 6f 72 6e 65 72 73 29 2b 31 2c 27 6d 6f 27 29 3b 0a 20 20 20 70 6c 6f 74 28 78 6f 72 69 | d_corners)+1,'mo');....plot(xori |
| 96a0 | 67 2b 31 2c 79 6f 72 69 67 2b 31 2c 27 2a 6d 27 29 3b 0a 20 20 20 68 20 3d 20 74 65 78 74 28 78 | g+1,yorig+1,'*m');....h.=.text(x |
| 96c0 | 6f 72 69 67 2d 31 35 2c 79 6f 72 69 67 2d 31 35 2c 27 4f 27 29 3b 0a 20 20 20 73 65 74 28 68 2c | orig-15,yorig-15,'O');....set(h, |
| 96e0 | 27 43 6f 6c 6f 72 27 2c 27 6d 27 2c 27 46 6f 6e 74 53 69 7a 65 27 2c 31 34 29 3b 0a 20 20 20 68 | 'Color','m','FontSize',14);....h |
| 9700 | 32 20 3d 20 74 65 78 74 28 64 78 70 6f 73 28 31 29 2d 31 30 2c 64 78 70 6f 73 28 32 29 2d 31 30 | 2.=.text(dxpos(1)-10,dxpos(2)-10 |
| 9720 | 2c 27 64 58 27 29 3b 0a 20 20 20 73 65 74 28 68 32 2c 27 43 6f 6c 6f 72 27 2c 27 67 27 2c 27 46 | ,'dX');....set(h2,'Color','g','F |
| 9740 | 6f 6e 74 53 69 7a 65 27 2c 31 34 29 3b 0a 20 20 20 68 33 20 3d 20 74 65 78 74 28 64 79 70 6f 73 | ontSize',14);....h3.=.text(dypos |
| 9760 | 28 31 29 2d 32 35 2c 64 79 70 6f 73 28 32 29 2d 33 2c 27 64 59 27 29 3b 0a 20 20 20 73 65 74 28 | (1)-25,dypos(2)-3,'dY');....set( |
| 9780 | 68 33 2c 27 43 6f 6c 6f 72 27 2c 27 67 27 2c 27 46 6f 6e 74 53 69 7a 65 27 2c 31 34 29 3b 0a 20 | h3,'Color','g','FontSize',14);.. |
| 97a0 | 20 20 78 6c 61 62 65 6c 28 27 58 63 20 28 69 6e 20 63 61 6d 65 72 61 20 66 72 61 6d 65 29 27 29 | ..xlabel('Xc.(in.camera.frame)') |
| 97c0 | 3b 0a 20 20 20 79 6c 61 62 65 6c 28 27 59 63 20 28 69 6e 20 63 61 6d 65 72 61 20 66 72 61 6d 65 | ;....ylabel('Yc.(in.camera.frame |
| 97e0 | 29 27 29 3b 0a 20 20 20 74 69 74 6c 65 28 27 45 78 74 72 61 63 74 65 64 20 63 6f 72 6e 65 72 73 | )');....title('Extracted.corners |
| 9800 | 27 29 3b 0a 20 20 20 7a 6f 6f 6d 20 6f 6e 3b 0a 20 20 20 64 72 61 77 6e 6f 77 3b 0a 20 20 20 68 | ');....zoom.on;....drawnow;....h |
| 9820 | 6f 6c 64 20 6f 66 66 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 58 69 20 3d 20 72 65 73 68 61 70 65 | old.off;............Xi.=.reshape |
| 9840 | 28 28 5b 30 3a 6e 5f 73 71 5f 78 5d 2a 64 58 29 27 2a 6f 6e 65 73 28 31 2c 6e 5f 73 71 5f 79 2b | (([0:n_sq_x]*dX)'*ones(1,n_sq_y+ |
| 9860 | 31 29 2c 4e 70 2c 31 29 27 3b 0a 20 20 20 59 69 20 3d 20 72 65 73 68 61 70 65 28 6f 6e 65 73 28 | 1),Np,1)';....Yi.=.reshape(ones( |
| 9880 | 6e 5f 73 71 5f 78 2b 31 2c 31 29 2a 5b 6e 5f 73 71 5f 79 3a 2d 31 3a 30 5d 2a 64 59 2c 4e 70 2c | n_sq_x+1,1)*[n_sq_y:-1:0]*dY,Np, |
| 98a0 | 31 29 27 3b 0a 20 20 20 5a 69 20 3d 20 7a 65 72 6f 73 28 31 2c 4e 70 29 3b 0a 20 20 20 0a 20 20 | 1)';....Zi.=.zeros(1,Np);....... |
| 98c0 | 20 58 67 72 69 64 20 3d 20 5b 58 69 3b 59 69 3b 5a 69 5d 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 | .Xgrid.=.[Xi;Yi;Zi];............ |
| 98e0 | 25 20 41 6c 6c 20 74 68 65 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 28 6f 6e 20 | %.All.the.point.coordinates.(on. |
| 9900 | 74 68 65 20 69 6d 61 67 65 2c 20 61 6e 64 20 69 6e 20 33 44 29 20 2d 20 66 6f 72 20 67 6c 6f 62 | the.image,.and.in.3D).-.for.glob |
| 9920 | 61 6c 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 3a 0a 0a 20 20 20 78 20 3d 20 67 72 69 64 5f 70 74 | al.optimization:.....x.=.grid_pt |
| 9940 | 73 3b 0a 20 20 20 58 20 3d 20 58 67 72 69 64 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 20 54 68 | s;....X.=.Xgrid;............%.Th |
| 9960 | 65 20 6c 65 66 74 20 70 61 6e 6e 65 6c 20 69 6e 66 6f 3a 0a 20 20 20 0a 20 20 20 78 6c 20 3d 20 | e.left.pannel.info:........xl.=. |
| 9980 | 78 3b 0a 20 20 20 58 6c 20 3d 20 58 3b 0a 20 20 20 6e 6c 5f 73 71 5f 78 20 3d 20 6e 5f 73 71 5f | x;....Xl.=.X;....nl_sq_x.=.n_sq_ |
| 99a0 | 78 3b 0a 20 20 20 6e 6c 5f 73 71 5f 79 20 3d 20 6e 5f 73 71 5f 79 3b 0a 20 20 20 48 6c 20 3d 20 | x;....nl_sq_y.=.n_sq_y;....Hl.=. |
| 99c0 | 48 5f 74 6f 74 61 6c 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 0a 20 20 20 0a 20 20 20 0a 20 20 20 | H_total;........................ |
| 99e0 | 0a 20 20 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 52 49 | ....%%%%%%%%%%%%%%%%%%%%%%%%%.RI |
| 9a00 | 47 48 54 20 50 41 54 54 45 52 4e 20 41 43 51 55 49 53 49 54 49 4f 4e 20 25 25 25 25 25 25 25 25 | GHT.PATTERN.ACQUISITION.%%%%%%%% |
| 9a20 | 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 0a 20 20 20 0a 20 20 0a 20 20 20 | %%%%%%%%%%%%%%%%%%%%%........... |
| 9a40 | 78 31 20 3d 20 61 31 30 28 31 29 2f 61 31 30 28 33 29 3b 0a 20 20 20 78 34 20 3d 20 61 31 31 28 | x1.=.a10(1)/a10(3);....x4.=.a11( |
| 9a60 | 31 29 2f 61 31 31 28 33 29 3b 0a 20 20 20 0a 20 20 20 79 31 20 3d 20 61 31 30 28 32 29 2f 61 31 | 1)/a11(3);........y1.=.a10(2)/a1 |
| 9a80 | 30 28 33 29 3b 0a 20 20 20 79 34 20 3d 20 61 31 31 28 32 29 2f 61 31 31 28 33 29 3b 0a 20 20 20 | 0(3);....y4.=.a11(2)/a11(3);.... |
| 9aa0 | 0a 0a 20 20 66 69 67 75 72 65 28 32 29 3b 0a 20 20 68 6f 6c 64 20 6f 6e 3b 0a 20 20 70 6c 6f 74 | ....figure(2);...hold.on;...plot |
| 9ac0 | 28 5b 78 31 20 78 34 5d 2c 5b 79 31 20 79 34 5d 2c 27 63 2d 27 29 3b 0a 20 20 70 6c 6f 74 28 5b | ([x1.x4],[y1.y4],'c-');...plot([ |
| 9ae0 | 78 31 20 78 34 5d 2c 5b 79 31 20 79 34 5d 2c 27 63 6f 27 29 3b 0a 20 20 68 6f 6c 64 20 6f 66 66 | x1.x4],[y1.y4],'co');...hold.off |
| 9b00 | 3b 0a 0a 20 20 20 74 69 74 6c 65 28 5b 27 43 6c 69 63 6b 20 6f 6e 20 74 68 65 20 74 77 6f 20 72 | ;.....title(['Click.on.the.two.r |
| 9b20 | 65 6d 61 69 6e 69 6e 67 20 65 78 74 72 65 6d 65 20 63 6f 72 6e 65 72 73 20 6f 66 20 74 68 65 20 | emaining.extreme.corners.of.the. |
| 9b40 | 72 69 67 68 74 20 72 65 63 74 61 6e 67 75 6c 61 72 20 70 61 74 74 65 72 6e 2e 2e 2e 20 49 6d 61 | right.rectangular.pattern....Ima |
| 9b60 | 67 65 20 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 5d 29 3b 0a 20 20 20 0a 20 20 20 64 69 73 70 28 | ge.'.num2str(kk)]);........disp( |
| 9b80 | 27 43 6c 69 63 6b 20 6f 6e 20 74 68 65 20 74 77 6f 20 72 65 6d 61 69 6e 69 6e 67 20 65 78 74 72 | 'Click.on.the.two.remaining.extr |
| 9ba0 | 65 6d 65 20 63 6f 72 6e 65 72 73 20 6f 66 20 74 68 65 20 72 69 67 68 74 20 72 65 63 74 61 6e 67 | eme.corners.of.the.right.rectang |
| 9bc0 | 75 6c 61 72 20 70 61 74 74 65 72 6e 2e 2e 2e 27 29 3b 0a 20 20 20 0a 20 20 20 5b 78 2c 79 5d 20 | ular.pattern...');........[x,y]. |
| 9be0 | 3d 20 67 69 6e 70 75 74 33 28 32 29 3b 0a 20 20 20 0a 20 20 20 5b 58 63 2c 67 6f 6f 64 2c 62 61 | =.ginput3(2);........[Xc,good,ba |
| 9c00 | 64 2c 74 79 70 65 5d 20 3d 20 63 6f 72 6e 65 72 66 69 6e 64 65 72 28 5b 78 27 3b 79 27 5d 2c 49 | d,type].=.cornerfinder([x';y'],I |
| 9c20 | 2c 77 69 6e 74 79 2c 77 69 6e 74 78 29 3b 20 25 20 74 68 65 20 66 6f 75 72 20 63 6f 72 6e 65 72 | ,winty,wintx);.%.the.four.corner |
| 9c40 | 73 0a 20 20 20 0a 20 20 20 78 20 3d 20 58 63 28 31 2c 3a 29 27 3b 0a 20 20 20 79 20 3d 20 58 63 | s........x.=.Xc(1,:)';....y.=.Xc |
| 9c60 | 28 32 2c 3a 29 27 3b 0a 20 20 20 0a 20 20 20 5b 79 2c 69 6e 64 79 5d 20 3d 20 73 6f 72 74 28 79 | (2,:)';........[y,indy].=.sort(y |
| 9c80 | 29 3b 0a 20 20 20 78 20 3d 20 78 28 69 6e 64 79 29 3b 0a 20 20 20 0a 20 20 20 78 32 20 3d 20 78 | );....x.=.x(indy);........x2.=.x |
| 9ca0 | 28 32 29 3b 0a 20 20 20 78 33 20 3d 20 78 28 31 29 3b 0a 20 20 20 0a 20 20 20 79 32 20 3d 20 79 | (2);....x3.=.x(1);........y2.=.y |
| 9cc0 | 28 32 29 3b 0a 20 20 20 79 33 20 3d 20 79 28 31 29 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 78 20 | (2);....y3.=.y(1);............x. |
| 9ce0 | 3d 20 5b 78 31 3b 78 32 3b 78 33 3b 78 34 5d 3b 0a 20 20 20 79 20 3d 20 5b 79 31 3b 79 32 3b 79 | =.[x1;x2;x3;x4];....y.=.[y1;y2;y |
| 9d00 | 33 3b 79 34 5d 3b 0a 20 20 20 0a 20 20 20 66 69 67 75 72 65 28 32 29 3b 20 68 6f 6c 64 20 6f 6e | 3;y4];........figure(2);.hold.on |
| 9d20 | 3b 0a 20 20 20 70 6c 6f 74 28 5b 78 3b 78 28 31 29 5d 2c 5b 79 3b 79 28 31 29 5d 2c 27 63 2d 27 | ;....plot([x;x(1)],[y;y(1)],'c-' |
| 9d40 | 29 3b 0a 20 20 20 70 6c 6f 74 28 78 2c 79 2c 27 6f 63 27 29 3b 0a 20 20 20 68 78 3d 74 65 78 74 | );....plot(x,y,'oc');....hx=text |
| 9d60 | 28 28 78 28 34 29 2b 78 28 33 29 29 2f 32 2c 28 79 28 34 29 2b 79 28 33 29 29 2f 32 20 2d 20 32 | ((x(4)+x(3))/2,(y(4)+y(3))/2.-.2 |
| 9d80 | 30 2c 27 58 27 29 3b 0a 20 20 20 73 65 74 28 68 78 2c 27 63 6f 6c 6f 72 27 2c 27 63 27 2c 27 46 | 0,'X');....set(hx,'color','c','F |
| 9da0 | 6f 6e 74 73 69 7a 65 27 2c 31 34 29 3b 0a 20 20 20 68 79 3d 74 65 78 74 28 28 78 28 34 29 2b 78 | ontsize',14);....hy=text((x(4)+x |
| 9dc0 | 28 31 29 29 2f 32 2d 32 30 2c 28 79 28 34 29 2b 79 28 31 29 29 2f 32 2c 27 59 27 29 3b 0a 20 20 | (1))/2-20,(y(4)+y(1))/2,'Y');... |
| 9de0 | 20 73 65 74 28 68 79 2c 27 63 6f 6c 6f 72 27 2c 27 63 27 2c 27 46 6f 6e 74 73 69 7a 65 27 2c 31 | .set(hy,'color','c','Fontsize',1 |
| 9e00 | 34 29 3b 0a 20 20 20 68 6f 6c 64 20 6f 66 66 3b 0a 20 20 20 64 72 61 77 6e 6f 77 3b 0a 20 20 20 | 4);....hold.off;....drawnow;.... |
| 9e20 | 0a 20 20 20 0a 20 20 20 25 20 54 72 79 20 74 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 63 | ........%.Try.to.automatically.c |
| 9e40 | 6f 75 6e 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 71 75 61 72 65 73 20 69 6e 20 74 68 | ount.the.number.of.squares.in.th |
| 9e60 | 65 20 67 72 69 64 0a 20 20 20 0a 20 20 20 6e 5f 73 71 5f 78 31 20 3d 20 63 6f 75 6e 74 5f 73 71 | e.grid........n_sq_x1.=.count_sq |
| 9e80 | 75 61 72 65 73 28 49 2c 78 31 2c 79 31 2c 78 32 2c 79 32 2c 77 69 6e 74 78 29 3b 0a 20 20 20 6e | uares(I,x1,y1,x2,y2,wintx);....n |
| 9ea0 | 5f 73 71 5f 78 32 20 3d 20 63 6f 75 6e 74 5f 73 71 75 61 72 65 73 28 49 2c 78 33 2c 79 33 2c 78 | _sq_x2.=.count_squares(I,x3,y3,x |
| 9ec0 | 34 2c 79 34 2c 77 69 6e 74 78 29 3b 0a 20 20 20 6e 5f 73 71 5f 79 31 20 3d 20 63 6f 75 6e 74 5f | 4,y4,wintx);....n_sq_y1.=.count_ |
| 9ee0 | 73 71 75 61 72 65 73 28 49 2c 78 32 2c 79 32 2c 78 33 2c 79 33 2c 77 69 6e 74 78 29 3b 0a 20 20 | squares(I,x2,y2,x3,y3,wintx);... |
| 9f00 | 20 6e 5f 73 71 5f 79 32 20 3d 20 63 6f 75 6e 74 5f 73 71 75 61 72 65 73 28 49 2c 78 34 2c 79 34 | .n_sq_y2.=.count_squares(I,x4,y4 |
| 9f20 | 2c 78 31 2c 79 31 2c 77 69 6e 74 78 29 3b 0a 20 20 20 0a 20 20 0a 20 20 20 0a 20 20 20 25 20 49 | ,x1,y1,wintx);...............%.I |
| 9f40 | 66 20 63 6f 75 6c 64 20 6e 6f 74 20 63 6f 75 6e 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 | f.could.not.count.the.number.of. |
| 9f60 | 73 71 75 61 72 65 73 2c 20 65 6e 74 65 72 20 6d 61 6e 75 61 6c 6c 79 0a 20 20 20 0a 20 20 20 69 | squares,.enter.manually........i |
| 9f80 | 66 20 28 6e 5f 73 71 5f 78 31 7e 3d 6e 5f 73 71 5f 78 32 29 7c 28 6e 5f 73 71 5f 79 31 7e 3d 6e | f.(n_sq_x1~=n_sq_x2)|(n_sq_y1~=n |
| 9fa0 | 5f 73 71 5f 79 32 29 2c 0a 20 20 20 20 20 20 0a 0a 09 20 64 69 73 70 28 27 43 6f 75 6c 64 20 6e | _sq_y2),...........disp('Could.n |
| 9fc0 | 6f 74 20 63 6f 75 6e 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 71 75 61 72 65 73 20 69 | ot.count.the.number.of.squares.i |
| 9fe0 | 6e 20 74 68 65 20 67 72 69 64 2e 20 45 6e 74 65 72 20 6d 61 6e 75 61 6c 6c 79 2e 27 29 3b 0a 09 | n.the.grid..Enter.manually.');.. |
| a000 | 20 6e 5f 73 71 5f 78 20 3d 20 69 6e 70 75 74 28 27 4e 75 6d 62 65 72 20 6f 66 20 73 71 75 61 72 | .n_sq_x.=.input('Number.of.squar |
| a020 | 65 73 20 61 6c 6f 6e 67 20 74 68 65 20 58 20 64 69 72 65 63 74 69 6f 6e 20 28 5b 5d 3d 31 30 29 | es.along.the.X.direction.([]=10) |
| a040 | 20 3d 20 27 29 3b 20 25 36 0a 09 20 69 66 20 69 73 65 6d 70 74 79 28 6e 5f 73 71 5f 78 29 2c 20 | .=.');.%6...if.isempty(n_sq_x),. |
| a060 | 6e 5f 73 71 5f 78 20 3d 20 31 30 3b 20 65 6e 64 3b 0a 09 20 6e 5f 73 71 5f 79 20 3d 20 69 6e 70 | n_sq_x.=.10;.end;...n_sq_y.=.inp |
| a080 | 75 74 28 27 4e 75 6d 62 65 72 20 6f 66 20 73 71 75 61 72 65 73 20 61 6c 6f 6e 67 20 74 68 65 20 | ut('Number.of.squares.along.the. |
| a0a0 | 59 20 64 69 72 65 63 74 69 6f 6e 20 28 5b 5d 3d 31 30 29 20 3d 20 27 29 3b 20 25 36 0a 09 20 69 | Y.direction.([]=10).=.');.%6...i |
| a0c0 | 66 20 69 73 65 6d 70 74 79 28 6e 5f 73 71 5f 79 29 2c 20 6e 5f 73 71 5f 79 20 3d 20 31 30 3b 20 | f.isempty(n_sq_y),.n_sq_y.=.10;. |
| a0e0 | 65 6e 64 3b 20 0a 20 20 20 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | end;.........else............... |
| a100 | 20 0a 20 20 20 20 20 20 6e 5f 73 71 5f 78 20 3d 20 6e 5f 73 71 5f 78 31 3b 0a 20 20 20 20 20 20 | ........n_sq_x.=.n_sq_x1;....... |
| a120 | 6e 5f 73 71 5f 79 20 3d 20 6e 5f 73 71 5f 79 31 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b | n_sq_y.=.n_sq_y1;...........end; |
| a140 | 0a 20 20 20 0a 20 20 20 0a 20 20 20 69 66 20 31 2c 0a 20 20 20 09 25 20 45 6e 74 65 72 20 74 68 | ............if.1,.....%.Enter.th |
| a160 | 65 20 73 69 7a 65 20 6f 66 20 65 61 63 68 20 73 71 75 61 72 65 0a 20 20 20 0a 20 20 20 09 64 58 | e.size.of.each.square.........dX |
| a180 | 20 3d 20 69 6e 70 75 74 28 5b 27 53 69 7a 65 20 64 58 20 6f 66 20 65 61 63 68 20 73 71 75 61 72 | .=.input(['Size.dX.of.each.squar |
| a1a0 | 65 20 61 6c 6f 6e 67 20 74 68 65 20 58 20 64 69 72 65 63 74 69 6f 6e 20 28 5b 5d 3d 27 20 6e 75 | e.along.the.X.direction.([]='.nu |
| a1c0 | 6d 32 73 74 72 28 64 58 5f 64 65 66 61 75 6c 74 29 20 27 63 6d 29 20 3d 20 27 5d 29 3b 0a 20 20 | m2str(dX_default).'cm).=.']);... |
| a1e0 | 09 09 64 59 20 3d 20 69 6e 70 75 74 28 5b 27 53 69 7a 65 20 64 59 20 6f 66 20 65 61 63 68 20 73 | ..dY.=.input(['Size.dY.of.each.s |
| a200 | 71 75 61 72 65 20 61 6c 6f 6e 67 20 74 68 65 20 59 20 64 69 72 65 63 74 69 6f 6e 20 28 5b 5d 3d | quare.along.the.Y.direction.([]= |
| a220 | 27 20 6e 75 6d 32 73 74 72 28 64 59 5f 64 65 66 61 75 6c 74 29 20 27 63 6d 29 20 3d 20 27 5d 29 | '.num2str(dY_default).'cm).=.']) |
| a240 | 3b 0a 09 09 69 66 20 69 73 65 6d 70 74 79 28 64 58 29 2c 20 64 58 20 3d 20 64 58 5f 64 65 66 61 | ;...if.isempty(dX),.dX.=.dX_defa |
| a260 | 75 6c 74 3b 20 65 6c 73 65 20 64 58 5f 64 65 66 61 75 6c 74 20 3d 20 64 58 3b 20 65 6e 64 3b 0a | ult;.else.dX_default.=.dX;.end;. |
| a280 | 09 09 69 66 20 69 73 65 6d 70 74 79 28 64 59 29 2c 20 64 59 20 3d 20 64 59 5f 64 65 66 61 75 6c | ..if.isempty(dY),.dY.=.dY_defaul |
| a2a0 | 74 3b 20 65 6c 73 65 20 64 59 5f 64 65 66 61 75 6c 74 20 3d 20 64 59 3b 20 65 6e 64 3b 0a 20 20 | t;.else.dY_default.=.dY;.end;... |
| a2c0 | 20 20 20 20 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 64 58 20 3d 20 33 | ........else..............dX.=.3 |
| a2e0 | 3b 0a 20 20 20 20 20 20 64 59 20 3d 20 33 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a 20 | ;.......dY.=.3;...........end;.. |
| a300 | 20 20 0a 20 20 20 0a 20 20 20 25 20 43 6f 6d 70 75 74 65 20 74 68 65 20 69 6e 73 69 64 65 20 70 | ..........%.Compute.the.inside.p |
| a320 | 6f 69 6e 74 73 20 74 68 72 6f 75 67 68 20 63 6f 6d 70 75 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 | oints.through.computation.of.the |
| a340 | 20 70 6c 61 6e 61 72 20 68 6f 6d 6f 67 72 61 70 68 79 20 28 63 6f 6c 6c 69 6e 65 61 74 69 6f 6e | .planar.homography.(collineation |
| a360 | 29 0a 20 20 20 0a 09 61 30 30 20 3d 20 5b 78 28 31 29 3b 79 28 31 29 3b 31 5d 3b 0a 09 61 31 30 | )......a00.=.[x(1);y(1);1];..a10 |
| a380 | 20 3d 20 5b 78 28 32 29 3b 79 28 32 29 3b 31 5d 3b 0a 09 61 31 31 20 3d 20 5b 78 28 33 29 3b 79 | .=.[x(2);y(2);1];..a11.=.[x(3);y |
| a3a0 | 28 33 29 3b 31 5d 3b 0a 09 61 30 31 20 3d 20 5b 78 28 34 29 3b 79 28 34 29 3b 31 5d 3b 0a 0a 0a | (3);1];..a01.=.[x(4);y(4);1];... |
| a3c0 | 09 25 20 43 6f 6d 70 75 74 65 20 74 68 65 20 70 6c 61 6e 61 72 74 20 63 6f 6c 6c 69 6e 65 61 74 | .%.Compute.the.planart.collineat |
| a3e0 | 69 6f 6e 3a 20 28 72 65 74 75 72 6e 20 74 68 65 20 6e 6f 72 6d 61 6c 69 7a 61 74 69 6f 6e 20 6d | ion:.(return.the.normalization.m |
| a400 | 61 74 72 69 63 65 20 61 73 20 77 65 6c 6c 29 0a 0a 09 5b 48 6f 6d 6f 2c 48 6e 6f 72 6d 2c 69 6e | atrice.as.well)...[Homo,Hnorm,in |
| a420 | 76 5f 48 6e 6f 72 6d 5d 20 3d 20 63 6f 6d 70 75 74 65 5f 63 6f 6c 6c 69 6e 65 61 74 69 6f 6e 20 | v_Hnorm].=.compute_collineation. |
| a440 | 28 61 30 30 2c 20 61 31 30 2c 20 61 31 31 2c 20 61 30 31 29 3b 0a 0a 0a 09 25 20 42 75 69 6c 64 | (a00,.a10,.a11,.a01);....%.Build |
| a460 | 20 74 68 65 20 67 72 69 64 20 75 73 69 6e 67 20 74 68 65 20 70 6c 61 6e 61 72 20 63 6f 6c 6c 69 | .the.grid.using.the.planar.colli |
| a480 | 6e 65 61 74 69 6f 6e 3a 0a 0a 09 78 5f 6c 20 3d 20 28 28 30 3a 6e 5f 73 71 5f 78 29 27 2a 6f 6e | neation:...x_l.=.((0:n_sq_x)'*on |
| a4a0 | 65 73 28 31 2c 6e 5f 73 71 5f 79 2b 31 29 29 2f 6e 5f 73 71 5f 78 3b 0a 20 20 20 79 5f 6c 20 3d | es(1,n_sq_y+1))/n_sq_x;....y_l.= |
| a4c0 | 20 28 6f 6e 65 73 28 6e 5f 73 71 5f 78 2b 31 2c 31 29 2a 28 30 3a 6e 5f 73 71 5f 79 29 29 2f 6e | .(ones(n_sq_x+1,1)*(0:n_sq_y))/n |
| a4e0 | 5f 73 71 5f 79 3b 0a 20 20 20 70 74 73 20 3d 20 5b 78 5f 6c 28 3a 29 20 79 5f 6c 28 3a 29 20 6f | _sq_y;....pts.=.[x_l(:).y_l(:).o |
| a500 | 6e 65 73 28 28 6e 5f 73 71 5f 78 2b 31 29 2a 28 6e 5f 73 71 5f 79 2b 31 29 2c 31 29 5d 27 3b 0a | nes((n_sq_x+1)*(n_sq_y+1),1)]';. |
| a520 | 20 20 20 0a 20 20 20 58 58 20 3d 20 48 6f 6d 6f 2a 70 74 73 3b 0a 09 58 58 20 3d 20 58 58 28 31 | .......XX.=.Homo*pts;..XX.=.XX(1 |
| a540 | 3a 32 2c 3a 29 20 2e 2f 20 28 6f 6e 65 73 28 32 2c 31 29 2a 58 58 28 33 2c 3a 29 29 3b 0a 0a 20 | :2,:)../.(ones(2,1)*XX(3,:));... |
| a560 | 20 20 0a 20 20 20 25 20 43 6f 6d 70 6c 65 74 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 72 65 63 | ......%.Complete.size.of.the.rec |
| a580 | 74 61 6e 67 6c 65 0a 20 20 20 0a 20 20 20 57 20 3d 20 6e 5f 73 71 5f 78 2a 64 58 3b 0a 20 20 20 | tangle........W.=.n_sq_x*dX;.... |
| a5a0 | 4c 20 3d 20 6e 5f 73 71 5f 79 2a 64 59 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 0a 20 20 20 69 66 | L.=.n_sq_y*dY;................if |
| a5c0 | 20 31 2c 0a 20 20 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 | .1,....%%%%%%%%%%%%%%%%%%%%%%%%. |
| a5e0 | 41 44 44 49 54 49 4f 4e 41 4c 20 53 54 55 46 46 20 49 4e 20 54 48 45 20 43 41 53 45 20 4f 46 20 | ADDITIONAL.STUFF.IN.THE.CASE.OF. |
| a600 | 48 49 47 48 4c 59 20 44 49 53 54 4f 52 54 45 44 20 49 4d 41 47 45 53 20 25 25 25 25 25 25 25 25 | HIGHLY.DISTORTED.IMAGES.%%%%%%%% |
| a620 | 25 25 25 25 25 0a 20 20 20 66 69 67 75 72 65 28 32 29 3b 0a 20 20 20 68 6f 6c 64 20 6f 6e 3b 0a | %%%%%....figure(2);....hold.on;. |
| a640 | 20 20 20 70 6c 6f 74 28 58 58 28 31 2c 3a 29 2c 58 58 28 32 2c 3a 29 2c 27 72 2b 27 29 3b 0a 20 | ...plot(XX(1,:),XX(2,:),'r+');.. |
| a660 | 20 20 74 69 74 6c 65 28 27 54 68 65 20 72 65 64 20 63 72 6f 73 73 65 73 20 73 68 6f 75 6c 64 20 | ..title('The.red.crosses.should. |
| a680 | 62 65 20 63 6c 6f 73 65 20 74 6f 20 74 68 65 20 69 6d 61 67 65 20 63 6f 72 6e 65 72 73 27 29 3b | be.close.to.the.image.corners'); |
| a6a0 | 0a 20 20 20 68 6f 6c 64 20 6f 66 66 3b 0a 20 20 20 0a 20 20 20 64 69 73 70 28 27 49 66 20 74 68 | ....hold.off;........disp('If.th |
| a6c0 | 65 20 67 75 65 73 73 65 64 20 67 72 69 64 20 63 6f 72 6e 65 72 73 20 28 72 65 64 20 63 72 6f 73 | e.guessed.grid.corners.(red.cros |
| a6e0 | 73 65 73 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 29 20 61 72 65 20 6e 6f 74 20 63 6c 6f 73 65 20 | ses.on.the.image).are.not.close. |
| a700 | 74 6f 20 74 68 65 20 61 63 74 75 61 6c 20 63 6f 72 6e 65 72 73 2c 27 29 3b 0a 20 20 20 64 69 73 | to.the.actual.corners,');....dis |
| a720 | 70 28 27 69 74 20 69 73 20 6e 65 63 65 73 73 61 72 79 20 74 6f 20 65 6e 74 65 72 20 61 6e 20 69 | p('it.is.necessary.to.enter.an.i |
| a740 | 6e 69 74 69 61 6c 20 67 75 65 73 73 20 66 6f 72 20 74 68 65 20 72 61 64 69 61 6c 20 64 69 73 74 | nitial.guess.for.the.radial.dist |
| a760 | 6f 72 74 69 6f 6e 20 66 61 63 74 6f 72 20 6b 63 20 28 75 73 65 66 75 6c 20 66 6f 72 20 73 75 62 | ortion.factor.kc.(useful.for.sub |
| a780 | 70 69 78 65 6c 20 64 65 74 65 63 74 69 6f 6e 29 27 29 3b 0a 20 20 20 71 75 65 73 74 5f 64 69 73 | pixel.detection)');....quest_dis |
| a7a0 | 74 6f 72 74 20 3d 20 69 6e 70 75 74 28 27 4e 65 65 64 20 6f 66 20 61 6e 20 69 6e 69 74 69 61 6c | tort.=.input('Need.of.an.initial |
| a7c0 | 20 67 75 65 73 73 20 66 6f 72 20 64 69 73 74 6f 72 74 69 6f 6e 3f 20 28 5b 5d 3d 6e 6f 2c 20 6f | .guess.for.distortion?.([]=no,.o |
| a7e0 | 74 68 65 72 3d 79 65 73 29 20 27 29 3b 0a 20 20 0a 20 20 20 71 75 65 73 74 5f 64 69 73 74 6f 72 | ther=yes).');.......quest_distor |
| a800 | 74 20 3d 20 7e 69 73 65 6d 70 74 79 28 71 75 65 73 74 5f 64 69 73 74 6f 72 74 29 3b 0a 20 20 20 | t.=.~isempty(quest_distort);.... |
| a820 | 0a 20 20 20 69 66 20 71 75 65 73 74 5f 64 69 73 74 6f 72 74 2c 0a 20 20 20 20 20 20 25 20 45 73 | ....if.quest_distort,.......%.Es |
| a840 | 74 69 6d 61 74 69 6f 6e 20 6f 66 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 3a 0a 20 20 20 20 20 20 | timation.of.focal.length:....... |
| a860 | 63 5f 67 20 3d 20 5b 73 69 7a 65 28 49 2c 32 29 3b 73 69 7a 65 28 49 2c 31 29 5d 2f 32 20 2b 20 | c_g.=.[size(I,2);size(I,1)]/2.+. |
| a880 | 2e 35 3b 0a 09 09 66 5f 67 20 3d 20 44 69 73 74 6f 72 32 43 61 6c 69 62 28 30 2c 5b 5b 78 28 31 | .5;...f_g.=.Distor2Calib(0,[[x(1 |
| a8a0 | 29 20 78 28 32 29 20 78 28 34 29 20 78 28 33 29 5d 20 2d 20 63 5f 67 28 31 29 3b 5b 79 28 31 29 | ).x(2).x(4).x(3)].-.c_g(1);[y(1) |
| a8c0 | 20 79 28 32 29 20 79 28 34 29 20 79 28 33 29 5d 20 2d 20 63 5f 67 28 32 29 5d 2c 31 2c 31 2c 34 | .y(2).y(4).y(3)].-.c_g(2)],1,1,4 |
| a8e0 | 2c 57 2c 4c 2c 5b 2d 57 2f 32 20 57 2f 32 20 57 2f 32 20 2d 57 2f 32 3b 4c 2f 32 20 4c 2f 32 20 | ,W,L,[-W/2.W/2.W/2.-W/2;L/2.L/2. |
| a900 | 2d 4c 2f 32 20 2d 4c 2f 32 3b 20 30 20 30 20 30 20 30 5d 2c 31 30 30 2c 31 2c 31 29 3b 0a 20 20 | -L/2.-L/2;.0.0.0.0],100,1,1);... |
| a920 | 20 20 20 20 66 5f 67 20 3d 20 6d 65 61 6e 28 66 5f 67 29 3b 0a 20 20 20 20 20 20 73 63 72 69 70 | ....f_g.=.mean(f_g);.......scrip |
| a940 | 74 5f 66 69 74 5f 64 69 73 74 6f 72 74 69 6f 6e 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 25 25 25 | t_fit_distortion;....end;....%%% |
| a960 | 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 45 4e 44 20 41 44 44 49 54 49 4f 4e 41 | %%%%%%%%%%%%%%%%%%.END.ADDITIONA |
| a980 | 4c 20 53 54 55 46 46 20 49 4e 20 54 48 45 20 43 41 53 45 20 4f 46 20 48 49 47 48 4c 59 20 44 49 | L.STUFF.IN.THE.CASE.OF.HIGHLY.DI |
| a9a0 | 53 54 4f 52 54 45 44 20 49 4d 41 47 45 53 20 25 25 25 25 25 25 25 25 25 25 25 25 25 0a 20 20 20 | STORTED.IMAGES.%%%%%%%%%%%%%.... |
| a9c0 | 65 6e 64 3b 20 20 20 0a 20 20 20 0a 20 20 20 0a 20 20 20 4e 70 20 3d 20 28 6e 5f 73 71 5f 78 2b | end;...............Np.=.(n_sq_x+ |
| a9e0 | 31 29 2a 28 6e 5f 73 71 5f 79 2b 31 29 3b 0a 0a 20 20 20 64 69 73 70 28 27 43 6f 72 6e 65 72 20 | 1)*(n_sq_y+1);.....disp('Corner. |
| aa00 | 65 78 74 72 61 63 74 69 6f 6e 2e 2e 2e 27 29 3b 0a 20 20 20 0a 20 20 20 67 72 69 64 5f 70 74 73 | extraction...');........grid_pts |
| aa20 | 20 3d 20 63 6f 72 6e 65 72 66 69 6e 64 65 72 28 58 58 2c 49 2c 77 69 6e 74 79 2c 77 69 6e 74 78 | .=.cornerfinder(XX,I,winty,wintx |
| aa40 | 29 3b 20 25 25 25 20 46 69 6e 64 73 20 74 68 65 20 65 78 61 63 74 20 63 6f 72 6e 65 72 73 20 61 | );.%%%.Finds.the.exact.corners.a |
| aa60 | 74 20 65 76 65 72 79 20 70 6f 69 6e 74 73 21 0a 20 20 20 0a 20 20 20 25 73 61 76 65 20 61 6c 6c | t.every.points!........%save.all |
| aa80 | 5f 63 6f 72 6e 65 72 73 20 78 20 79 20 67 72 69 64 5f 70 74 73 0a 20 20 20 0a 20 20 20 67 72 69 | _corners.x.y.grid_pts........gri |
| aaa0 | 64 5f 70 74 73 20 3d 20 67 72 69 64 5f 70 74 73 20 2d 20 31 3b 20 25 20 73 75 62 74 72 61 63 74 | d_pts.=.grid_pts.-.1;.%.subtract |
| aac0 | 20 31 20 74 6f 20 62 72 69 6e 67 20 74 68 65 20 6f 72 69 67 69 6e 20 74 6f 20 28 30 2c 30 29 20 | .1.to.bring.the.origin.to.(0,0). |
| aae0 | 69 6e 73 74 65 61 64 20 6f 66 20 28 31 2c 31 29 20 69 6e 20 6d 61 74 6c 61 62 20 28 6e 6f 74 20 | instead.of.(1,1).in.matlab.(not. |
| ab00 | 6e 65 63 65 73 73 61 72 79 20 69 6e 20 43 29 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 20 47 6c 6f | necessary.in.C)............%.Glo |
| ab20 | 62 61 6c 20 48 6f 6d 6f 67 72 61 70 68 79 20 66 72 6f 6d 20 70 6c 61 6e 65 20 74 6f 20 70 69 78 | bal.Homography.from.plane.to.pix |
| ab40 | 65 6c 20 63 6f 6f 72 64 69 6e 61 74 65 73 3a 0a 20 20 20 0a 20 20 20 48 5f 74 6f 74 61 6c 20 3d | el.coordinates:........H_total.= |
| ab60 | 20 5b 31 20 30 20 2d 31 20 3b 20 30 20 31 20 2d 31 20 3b 20 30 20 30 20 31 5d 2a 48 6f 6d 6f 2a | .[1.0.-1.;.0.1.-1.;.0.0.1]*Homo* |
| ab80 | 5b 31 20 30 20 30 3b 30 20 2d 31 20 31 3b 30 20 30 20 31 5d 2a 5b 31 2f 57 20 30 20 30 20 3b 20 | [1.0.0;0.-1.1;0.0.1]*[1/W.0.0.;. |
| aba0 | 30 20 31 2f 4c 20 30 3b 20 30 20 30 20 31 5d 3b 0a 20 20 20 25 20 57 41 52 4e 49 4e 47 21 21 21 | 0.1/L.0;.0.0.1];....%.WARNING!!! |
| abc0 | 20 74 68 65 20 66 69 72 73 74 20 6d 61 74 72 69 78 20 28 6f 6e 20 74 68 65 20 6c 65 66 74 20 73 | .the.first.matrix.(on.the.left.s |
| abe0 | 69 64 65 29 20 74 61 6b 65 73 20 63 61 72 65 20 6f 66 20 74 68 65 20 74 72 61 6e 73 66 6f 72 6d | ide).takes.care.of.the.transform |
| ac00 | 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 70 69 78 65 6c 20 63 6f 6f 72 65 64 69 6e 61 74 65 73 20 | ation.of.the.pixel.cooredinates. |
| ac20 | 62 79 20 2d 31 20 28 70 72 65 76 69 6f 75 73 20 6c 69 6e 65 29 0a 20 20 20 25 20 49 66 20 69 74 | by.-1.(previous.line)....%.If.it |
| ac40 | 20 69 73 20 6e 6f 74 20 64 6f 6e 65 2c 20 74 68 65 6e 20 74 68 69 73 20 6d 61 74 72 69 78 20 73 | .is.not.done,.then.this.matrix.s |
| ac60 | 68 6f 75 6c 64 20 6e 6f 74 20 61 70 70 65 61 72 20 28 69 6e 20 43 29 0a 20 20 20 48 5f 74 6f 74 | hould.not.appear.(in.C)....H_tot |
| ac80 | 61 6c 20 3d 20 48 5f 74 6f 74 61 6c 20 2f 20 48 5f 74 6f 74 61 6c 28 33 2c 33 29 3b 20 20 20 0a | al.=.H_total./.H_total(3,3);.... |
| aca0 | 20 20 20 0a 20 20 20 0a 20 20 20 69 6e 64 5f 63 6f 72 6e 65 72 73 20 3d 20 5b 31 20 6e 5f 73 71 | ...........ind_corners.=.[1.n_sq |
| acc0 | 5f 78 2b 31 20 28 6e 5f 73 71 5f 78 2b 31 29 2a 6e 5f 73 71 5f 79 2b 31 20 28 6e 5f 73 71 5f 78 | _x+1.(n_sq_x+1)*n_sq_y+1.(n_sq_x |
| ace0 | 2b 31 29 2a 28 6e 5f 73 71 5f 79 2b 31 29 5d 3b 20 25 20 69 6e 64 65 78 20 6f 66 20 74 68 65 20 | +1)*(n_sq_y+1)];.%.index.of.the. |
| ad00 | 34 20 63 6f 72 6e 65 72 73 0a 20 20 20 69 6e 64 5f 6f 72 69 67 20 3d 20 28 6e 5f 73 71 5f 78 2b | 4.corners....ind_orig.=.(n_sq_x+ |
| ad20 | 31 29 2a 6e 5f 73 71 5f 79 20 2b 20 31 3b 0a 20 20 20 78 6f 72 69 67 20 3d 20 67 72 69 64 5f 70 | 1)*n_sq_y.+.1;....xorig.=.grid_p |
| ad40 | 74 73 28 31 2c 69 6e 64 5f 6f 72 69 67 29 3b 0a 20 20 20 79 6f 72 69 67 20 3d 20 67 72 69 64 5f | ts(1,ind_orig);....yorig.=.grid_ |
| ad60 | 70 74 73 28 32 2c 69 6e 64 5f 6f 72 69 67 29 3b 0a 20 20 20 64 78 70 6f 73 20 3d 20 6d 65 61 6e | pts(2,ind_orig);....dxpos.=.mean |
| ad80 | 28 5b 67 72 69 64 5f 70 74 73 28 3a 2c 69 6e 64 5f 6f 72 69 67 29 20 67 72 69 64 5f 70 74 73 28 | ([grid_pts(:,ind_orig).grid_pts( |
| ada0 | 3a 2c 69 6e 64 5f 6f 72 69 67 2b 31 29 5d 27 29 3b 0a 20 20 20 64 79 70 6f 73 20 3d 20 6d 65 61 | :,ind_orig+1)]');....dypos.=.mea |
| adc0 | 6e 28 5b 67 72 69 64 5f 70 74 73 28 3a 2c 69 6e 64 5f 6f 72 69 67 29 20 67 72 69 64 5f 70 74 73 | n([grid_pts(:,ind_orig).grid_pts |
| ade0 | 28 3a 2c 69 6e 64 5f 6f 72 69 67 2d 6e 5f 73 71 5f 78 2d 31 29 5d 27 29 3b 0a 20 20 20 0a 20 20 | (:,ind_orig-n_sq_x-1)]');....... |
| ae00 | 20 0a 20 20 20 78 5f 62 6f 78 5f 6b 6b 20 3d 20 5b 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2d 28 | .....x_box_kk.=.[grid_pts(1,:)-( |
| ae20 | 77 69 6e 74 78 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2b 28 77 69 6e 74 78 2b 2e | wintx+.5);grid_pts(1,:)+(wintx+. |
| ae40 | 35 29 3b 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2b 28 77 69 6e 74 78 2b 2e 35 29 3b 67 72 69 64 | 5);grid_pts(1,:)+(wintx+.5);grid |
| ae60 | 5f 70 74 73 28 31 2c 3a 29 2d 28 77 69 6e 74 78 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 31 2c | _pts(1,:)-(wintx+.5);grid_pts(1, |
| ae80 | 3a 29 2d 28 77 69 6e 74 78 2b 2e 35 29 5d 3b 0a 20 20 20 79 5f 62 6f 78 5f 6b 6b 20 3d 20 5b 67 | :)-(wintx+.5)];....y_box_kk.=.[g |
| aea0 | 72 69 64 5f 70 74 73 28 32 2c 3a 29 2d 28 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 | rid_pts(2,:)-(winty+.5);grid_pts |
| aec0 | 28 32 2c 3a 29 2d 28 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2b 28 | (2,:)-(winty+.5);grid_pts(2,:)+( |
| aee0 | 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2b 28 77 69 6e 74 79 2b 2e | winty+.5);grid_pts(2,:)+(winty+. |
| af00 | 35 29 3b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2d 28 77 69 6e 74 79 2b 2e 35 29 5d 3b 0a 0a 20 | 5);grid_pts(2,:)-(winty+.5)];... |
| af20 | 20 20 0a 20 20 20 66 69 67 75 72 65 28 33 29 3b 0a 20 20 20 68 6f 6c 64 20 6f 6e 3b 0a 20 20 20 | ......figure(3);....hold.on;.... |
| af40 | 70 6c 6f 74 28 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2b 31 2c 67 72 69 64 5f 70 74 73 28 32 2c | plot(grid_pts(1,:)+1,grid_pts(2, |
| af60 | 3a 29 2b 31 2c 27 72 2b 27 29 3b 0a 20 20 20 70 6c 6f 74 28 78 5f 62 6f 78 5f 6b 6b 2b 31 2c 79 | :)+1,'r+');....plot(x_box_kk+1,y |
| af80 | 5f 62 6f 78 5f 6b 6b 2b 31 2c 27 2d 62 27 29 3b 0a 20 20 20 70 6c 6f 74 28 67 72 69 64 5f 70 74 | _box_kk+1,'-b');....plot(grid_pt |
| afa0 | 73 28 31 2c 69 6e 64 5f 63 6f 72 6e 65 72 73 29 2b 31 2c 67 72 69 64 5f 70 74 73 28 32 2c 69 6e | s(1,ind_corners)+1,grid_pts(2,in |
| afc0 | 64 5f 63 6f 72 6e 65 72 73 29 2b 31 2c 27 6d 6f 27 29 3b 0a 20 20 20 70 6c 6f 74 28 78 6f 72 69 | d_corners)+1,'mo');....plot(xori |
| afe0 | 67 2b 31 2c 79 6f 72 69 67 2b 31 2c 27 2a 6d 27 29 3b 0a 20 20 20 68 20 3d 20 74 65 78 74 28 78 | g+1,yorig+1,'*m');....h.=.text(x |
| b000 | 6f 72 69 67 2d 31 35 2c 79 6f 72 69 67 2d 31 35 2c 27 4f 27 29 3b 0a 20 20 20 73 65 74 28 68 2c | orig-15,yorig-15,'O');....set(h, |
| b020 | 27 43 6f 6c 6f 72 27 2c 27 6d 27 2c 27 46 6f 6e 74 53 69 7a 65 27 2c 31 34 29 3b 0a 20 20 20 68 | 'Color','m','FontSize',14);....h |
| b040 | 32 20 3d 20 74 65 78 74 28 64 78 70 6f 73 28 31 29 2d 31 30 2c 64 78 70 6f 73 28 32 29 2d 31 30 | 2.=.text(dxpos(1)-10,dxpos(2)-10 |
| b060 | 2c 27 64 58 27 29 3b 0a 20 20 20 73 65 74 28 68 32 2c 27 43 6f 6c 6f 72 27 2c 27 67 27 2c 27 46 | ,'dX');....set(h2,'Color','g','F |
| b080 | 6f 6e 74 53 69 7a 65 27 2c 31 34 29 3b 0a 20 20 20 68 33 20 3d 20 74 65 78 74 28 64 79 70 6f 73 | ontSize',14);....h3.=.text(dypos |
| b0a0 | 28 31 29 2d 32 35 2c 64 79 70 6f 73 28 32 29 2d 33 2c 27 64 59 27 29 3b 0a 20 20 20 73 65 74 28 | (1)-25,dypos(2)-3,'dY');....set( |
| b0c0 | 68 33 2c 27 43 6f 6c 6f 72 27 2c 27 67 27 2c 27 46 6f 6e 74 53 69 7a 65 27 2c 31 34 29 3b 0a 20 | h3,'Color','g','FontSize',14);.. |
| b0e0 | 20 20 78 6c 61 62 65 6c 28 27 58 63 20 28 69 6e 20 63 61 6d 65 72 61 20 66 72 61 6d 65 29 27 29 | ..xlabel('Xc.(in.camera.frame)') |
| b100 | 3b 0a 20 20 20 79 6c 61 62 65 6c 28 27 59 63 20 28 69 6e 20 63 61 6d 65 72 61 20 66 72 61 6d 65 | ;....ylabel('Yc.(in.camera.frame |
| b120 | 29 27 29 3b 0a 20 20 20 74 69 74 6c 65 28 27 45 78 74 72 61 63 74 65 64 20 63 6f 72 6e 65 72 73 | )');....title('Extracted.corners |
| b140 | 27 29 3b 0a 20 20 20 7a 6f 6f 6d 20 6f 6e 3b 0a 20 20 20 64 72 61 77 6e 6f 77 3b 0a 20 20 20 68 | ');....zoom.on;....drawnow;....h |
| b160 | 6f 6c 64 20 6f 66 66 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 58 69 20 3d 20 72 65 73 68 61 70 65 | old.off;............Xi.=.reshape |
| b180 | 28 28 5b 30 3a 6e 5f 73 71 5f 78 5d 2a 64 58 29 27 2a 6f 6e 65 73 28 31 2c 6e 5f 73 71 5f 79 2b | (([0:n_sq_x]*dX)'*ones(1,n_sq_y+ |
| b1a0 | 31 29 2c 4e 70 2c 31 29 27 3b 0a 20 20 20 59 69 20 3d 20 72 65 73 68 61 70 65 28 6f 6e 65 73 28 | 1),Np,1)';....Yi.=.reshape(ones( |
| b1c0 | 6e 5f 73 71 5f 78 2b 31 2c 31 29 2a 5b 6e 5f 73 71 5f 79 3a 2d 31 3a 30 5d 2a 64 59 2c 4e 70 2c | n_sq_x+1,1)*[n_sq_y:-1:0]*dY,Np, |
| b1e0 | 31 29 27 3b 0a 20 20 20 5a 69 20 3d 20 7a 65 72 6f 73 28 31 2c 4e 70 29 3b 0a 20 20 20 0a 20 20 | 1)';....Zi.=.zeros(1,Np);....... |
| b200 | 20 58 67 72 69 64 20 3d 20 5b 58 69 3b 59 69 3b 5a 69 5d 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 | .Xgrid.=.[Xi;Yi;Zi];............ |
| b220 | 25 20 41 6c 6c 20 74 68 65 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 28 6f 6e 20 | %.All.the.point.coordinates.(on. |
| b240 | 74 68 65 20 69 6d 61 67 65 2c 20 61 6e 64 20 69 6e 20 33 44 29 20 2d 20 66 6f 72 20 67 6c 6f 62 | the.image,.and.in.3D).-.for.glob |
| b260 | 61 6c 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 3a 0a 0a 20 20 20 78 20 3d 20 67 72 69 64 5f 70 74 | al.optimization:.....x.=.grid_pt |
| b280 | 73 3b 0a 20 20 20 58 20 3d 20 58 67 72 69 64 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 20 54 68 | s;....X.=.Xgrid;............%.Th |
| b2a0 | 65 20 72 69 67 68 74 20 70 61 6e 6e 65 6c 20 69 6e 66 6f 3a 0a 20 20 20 0a 20 20 20 78 72 20 3d | e.right.pannel.info:........xr.= |
| b2c0 | 20 78 3b 0a 20 20 20 58 72 20 3d 20 58 3b 0a 20 20 20 6e 72 5f 73 71 5f 78 20 3d 20 6e 5f 73 71 | .x;....Xr.=.X;....nr_sq_x.=.n_sq |
| b2e0 | 5f 78 3b 0a 20 20 20 6e 72 5f 73 71 5f 79 20 3d 20 6e 5f 73 71 5f 79 3b 0a 20 20 20 48 72 20 3d | _x;....nr_sq_y.=.n_sq_y;....Hr.= |
| b300 | 20 48 5f 74 6f 74 61 6c 3b 0a 0a 0a 0a 25 25 25 25 25 25 25 25 20 52 45 47 52 4f 55 50 20 54 48 | .H_total;....%%%%%%%%.REGROUP.TH |
| b320 | 45 20 4c 45 46 54 20 41 4e 44 20 52 49 48 54 20 50 41 54 54 45 52 4e 53 20 25 25 25 25 25 25 25 | E.LEFT.AND.RIHT.PATTERNS.%%%%%%% |
| b340 | 25 25 25 25 25 25 0a 0a 0a 58 72 32 20 3d 20 5b 30 20 30 20 31 3b 30 20 31 20 30 3b 2d 31 20 30 | %%%%%%...Xr2.=.[0.0.1;0.1.0;-1.0 |
| b360 | 20 30 5d 2a 58 72 20 2b 20 5b 64 58 2a 6e 6c 5f 73 71 5f 78 3b 30 3b 30 5d 2a 6f 6e 65 73 28 31 | .0]*Xr.+.[dX*nl_sq_x;0;0]*ones(1 |
| b380 | 2c 6c 65 6e 67 74 68 28 58 72 29 29 3b 0a 0a 0a 78 20 3d 20 5b 78 6c 20 78 72 5d 3b 0a 0a 58 20 | ,length(Xr));...x.=.[xl.xr];..X. |
| b3a0 | 3d 20 5b 58 6c 20 58 72 32 5d 3b 0a 0a 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 78 5f 27 20 | =.[Xl.Xr2];..........eval(['x_'. |
| b3c0 | 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 78 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b | num2str(kk).'.=.x;']);....eval([ |
| b3e0 | 27 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 58 3b 27 5d 29 3b 0a 20 20 20 0a | 'X_'.num2str(kk).'.=.X;']);..... |
| b400 | 20 20 20 65 76 61 6c 28 5b 27 6e 6c 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 | ...eval(['nl_sq_x_'.num2str(kk). |
| b420 | 27 20 3d 20 6e 6c 5f 73 71 5f 78 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 6e 6c 5f 73 71 | '.=.nl_sq_x;']);....eval(['nl_sq |
| b440 | 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 6e 6c 5f 73 71 5f 79 3b 27 5d 29 | _y_'.num2str(kk).'.=.nl_sq_y;']) |
| b460 | 3b 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 6e 72 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 | ;........eval(['nr_sq_x_'.num2st |
| b480 | 72 28 6b 6b 29 20 27 20 3d 20 6e 72 5f 73 71 5f 78 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b | r(kk).'.=.nr_sq_x;']);....eval([ |
| b4a0 | 27 6e 72 5f 73 71 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 6e 72 5f 73 71 | 'nr_sq_y_'.num2str(kk).'.=.nr_sq |
| b4c0 | 5f 79 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 25 20 53 61 76 65 20 74 68 65 20 67 6c 6f 62 61 6c | _y;']);........%.Save.the.global |
| b4e0 | 20 70 6c 61 6e 61 72 20 68 6f 6d 6f 67 72 61 70 68 79 3a 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 | .planar.homography:........eval( |
| b500 | 5b 27 48 6c 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 48 6c 3b 27 5d 29 3b 0a 20 | ['Hl_'.num2str(kk).'.=.Hl;']);.. |
| b520 | 20 20 65 76 61 6c 28 5b 27 48 72 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 48 72 | ..eval(['Hr_'.num2str(kk).'.=.Hr |
| b540 | 3b 27 5d 29 3b 5b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2d 28 77 69 6e 74 79 2b 2e 35 29 3b 67 | ;']);[grid_pts(2,:)-(winty+.5);g |
| b560 | 72 69 64 5f 70 74 73 28 32 2c 3a 29 2d 28 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 | rid_pts(2,:)-(winty+.5);grid_pts |
| b580 | 28 32 2c 3a 29 2b 28 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2b 28 | (2,:)+(winty+.5);grid_pts(2,:)+( |
| b5a0 | 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2d 28 77 69 6e 74 79 2b 2e | winty+.5);grid_pts(2,:)-(winty+. |
| b5c0 | 35 29 5d 3b 0a 0a 20 20 20 0a 20 20 20 66 69 67 75 72 65 28 33 29 3b 0a 20 20 20 69 6d 61 67 65 | 5)];.........figure(3);....image |
| b5e0 | 28 49 29 3b 20 63 6f 6c 6f 72 6d 61 70 28 6d 61 70 29 3b 20 68 6f 6c 64 20 6f 6e 3b 0a 20 20 20 | (I);.colormap(map);.hold.on;.... |
| b600 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6f 6d 70 75 74 65 5f 63 6f 6c 6c 69 6e 65 61 74 69 | TOOLBOX_calib/compute_collineati |
| b620 | 6f 6e 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | on.m............................ |
| b640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b660 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| b680 | 20 20 20 32 32 37 36 20 20 37 30 32 34 30 33 37 33 31 30 20 20 31 33 30 31 33 00 20 00 00 00 00 | ...2276..7024037310..13013...... |
| b6a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b6c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b6e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b7a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b7c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b7e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b800 | 66 75 6e 63 74 69 6f 6e 20 5b 48 2c 48 6e 6f 72 6d 2c 69 6e 76 5f 48 6e 6f 72 6d 5d 20 3d 20 63 | function.[H,Hnorm,inv_Hnorm].=.c |
| b820 | 6f 6d 70 75 74 65 5f 63 6f 6c 6c 69 6e 65 61 74 69 6f 6e 20 28 61 30 30 2c 20 61 31 30 2c 20 61 | ompute_collineation.(a00,.a10,.a |
| b840 | 31 31 2c 20 61 30 31 29 3b 0a 0a 25 20 6e 65 77 20 66 6f 72 6d 61 6c 69 73 6d 20 75 73 69 6e 67 | 11,.a01);..%.new.formalism.using |
| b860 | 20 68 6f 6d 6f 67 72 61 70 68 69 65 73 0a 0a 61 30 30 20 3d 20 61 30 30 20 2f 20 61 30 30 28 33 | .homographies..a00.=.a00./.a00(3 |
| b880 | 29 3b 0a 61 31 30 20 3d 20 61 31 30 20 2f 20 61 31 30 28 33 29 3b 0a 61 31 31 20 3d 20 61 31 31 | );.a10.=.a10./.a10(3);.a11.=.a11 |
| b8a0 | 20 2f 20 61 31 31 28 33 29 3b 0a 61 30 31 20 3d 20 61 30 31 20 2f 20 61 30 31 28 33 29 3b 0a 0a | ./.a11(3);.a01.=.a01./.a01(3);.. |
| b8c0 | 0a 25 20 50 72 65 6e 6f 72 6d 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 70 6f 69 6e 74 20 63 6f 6f | .%.Prenormalization.of.point.coo |
| b8e0 | 72 64 69 6e 61 74 65 73 20 28 76 65 72 79 20 69 6d 70 6f 72 74 61 6e 74 29 3a 0a 25 20 28 41 66 | rdinates.(very.important):.%.(Af |
| b900 | 66 69 6e 65 20 6e 6f 72 6d 61 6c 69 7a 61 74 69 6f 6e 29 0a 0a 61 78 20 3d 20 5b 61 30 30 28 31 | fine.normalization)..ax.=.[a00(1 |
| b920 | 29 3b 61 31 30 28 31 29 3b 61 31 31 28 31 29 3b 61 30 31 28 31 29 5d 3b 0a 61 79 20 3d 20 5b 61 | );a10(1);a11(1);a01(1)];.ay.=.[a |
| b940 | 30 30 28 32 29 3b 61 31 30 28 32 29 3b 61 31 31 28 32 29 3b 61 30 31 28 32 29 5d 3b 0a 0a 6d 78 | 00(2);a10(2);a11(2);a01(2)];..mx |
| b960 | 78 20 3d 20 6d 65 61 6e 28 61 78 29 3b 0a 6d 79 79 20 3d 20 6d 65 61 6e 28 61 79 29 3b 0a 61 78 | x.=.mean(ax);.myy.=.mean(ay);.ax |
| b980 | 20 3d 20 61 78 20 2d 20 6d 78 78 3b 0a 61 79 20 3d 20 61 79 20 2d 20 6d 79 79 3b 0a 0a 73 63 78 | .=.ax.-.mxx;.ay.=.ay.-.myy;..scx |
| b9a0 | 78 20 3d 20 6d 65 61 6e 28 61 62 73 28 61 78 29 29 3b 0a 73 63 79 79 20 3d 20 6d 65 61 6e 28 61 | x.=.mean(abs(ax));.scyy.=.mean(a |
| b9c0 | 62 73 28 61 79 29 29 3b 0a 0a 0a 48 6e 6f 72 6d 20 3d 20 5b 31 2f 73 63 78 78 20 30 20 2d 6d 78 | bs(ay));...Hnorm.=.[1/scxx.0.-mx |
| b9e0 | 78 2f 73 63 78 78 3b 30 20 31 2f 73 63 79 79 20 2d 6d 79 79 2f 73 63 79 79 3b 30 20 30 20 31 5d | x/scxx;0.1/scyy.-myy/scyy;0.0.1] |
| ba00 | 3b 0a 69 6e 76 5f 48 6e 6f 72 6d 20 3d 20 5b 73 63 78 78 20 30 20 6d 78 78 20 3b 20 30 20 73 63 | ;.inv_Hnorm.=.[scxx.0.mxx.;.0.sc |
| ba20 | 79 79 20 6d 79 79 3b 20 30 20 30 20 31 5d 3b 0a 0a 0a 61 30 30 6e 20 3d 20 48 6e 6f 72 6d 2a 61 | yy.myy;.0.0.1];...a00n.=.Hnorm*a |
| ba40 | 30 30 3b 0a 61 31 30 6e 20 3d 20 48 6e 6f 72 6d 2a 61 31 30 3b 0a 61 31 31 6e 20 3d 20 48 6e 6f | 00;.a10n.=.Hnorm*a10;.a11n.=.Hno |
| ba60 | 72 6d 2a 61 31 31 3b 0a 61 30 31 6e 20 3d 20 48 6e 6f 72 6d 2a 61 30 31 3b 0a 0a 0a 25 20 43 6f | rm*a11;.a01n.=.Hnorm*a01;...%.Co |
| ba80 | 6d 70 75 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 | mputation.of.the.vanishing.point |
| baa0 | 73 3a 0a 0a 56 31 6e 20 3d 20 63 72 6f 73 73 28 63 72 6f 73 73 28 61 30 30 6e 2c 61 31 30 6e 29 | s:..V1n.=.cross(cross(a00n,a10n) |
| bac0 | 2c 63 72 6f 73 73 28 61 30 31 6e 2c 61 31 31 6e 29 29 3b 0a 56 32 6e 20 3d 20 63 72 6f 73 73 28 | ,cross(a01n,a11n));.V2n.=.cross( |
| bae0 | 63 72 6f 73 73 28 61 30 30 6e 2c 61 30 31 6e 29 2c 63 72 6f 73 73 28 61 31 30 6e 2c 61 31 31 6e | cross(a00n,a01n),cross(a10n,a11n |
| bb00 | 29 29 3b 0a 0a 56 31 20 3d 20 69 6e 76 5f 48 6e 6f 72 6d 2a 56 31 6e 3b 0a 56 32 20 3d 20 69 6e | ));..V1.=.inv_Hnorm*V1n;.V2.=.in |
| bb20 | 76 5f 48 6e 6f 72 6d 2a 56 32 6e 3b 0a 0a 0a 25 20 4e 6f 72 6d 61 6c 69 7a 61 69 6f 6e 20 6f 66 | v_Hnorm*V2n;...%.Normalizaion.of |
| bb40 | 20 74 68 65 20 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 73 3a 0a 0a 56 31 6e 20 3d 20 56 31 | .the.vanishing.points:..V1n.=.V1 |
| bb60 | 6e 2f 6e 6f 72 6d 28 56 31 6e 29 3b 0a 56 32 6e 20 3d 20 56 32 6e 2f 6e 6f 72 6d 28 56 32 6e 29 | n/norm(V1n);.V2n.=.V2n/norm(V2n) |
| bb80 | 3b 0a 0a 0a 25 20 43 6c 6f 73 65 64 2d 66 6f 72 6d 20 73 6f 6c 75 74 69 6f 6e 20 6f 66 20 74 68 | ;...%.Closed-form.solution.of.th |
| bba0 | 65 20 63 6f 65 66 66 69 63 69 65 6e 74 73 3a 0a 0a 61 6c 70 68 61 5f 78 20 3d 20 28 61 31 30 6e | e.coefficients:..alpha_x.=.(a10n |
| bbc0 | 28 32 29 2a 61 30 30 6e 28 31 29 20 2d 20 61 31 30 6e 28 31 29 2a 61 30 30 6e 28 32 29 29 2f 28 | (2)*a00n(1).-.a10n(1)*a00n(2))/( |
| bbe0 | 56 31 6e 28 32 29 2a 61 31 30 6e 28 31 29 2d 56 31 6e 28 31 29 2a 61 31 30 6e 28 32 29 29 3b 0a | V1n(2)*a10n(1)-V1n(1)*a10n(2));. |
| bc00 | 0a 61 6c 70 68 61 5f 79 20 3d 20 28 61 30 31 6e 28 32 29 2a 61 30 30 6e 28 31 29 20 2d 20 61 30 | .alpha_y.=.(a01n(2)*a00n(1).-.a0 |
| bc20 | 31 6e 28 31 29 2a 61 30 30 6e 28 32 29 29 2f 28 56 32 6e 28 32 29 2a 61 30 31 6e 28 31 29 2d 56 | 1n(1)*a00n(2))/(V2n(2)*a01n(1)-V |
| bc40 | 32 6e 28 31 29 2a 61 30 31 6e 28 32 29 29 3b 0a 0a 0a 25 20 52 65 6d 61 69 6e 69 6e 67 20 48 6f | 2n(1)*a01n(2));...%.Remaining.Ho |
| bc60 | 6d 6f 67 72 61 70 68 79 0a 0a 48 72 65 6d 20 3d 20 5b 61 6c 70 68 61 5f 78 2a 56 31 6e 20 20 61 | mography..Hrem.=.[alpha_x*V1n..a |
| bc80 | 6c 70 68 61 5f 79 2a 56 32 6e 20 61 30 30 6e 5d 3b 0a 0a 0a 25 20 46 69 6e 61 6c 20 68 6f 6d 6f | lpha_y*V2n.a00n];...%.Final.homo |
| bca0 | 67 72 61 70 68 79 3a 0a 0a 48 20 3d 20 69 6e 76 5f 48 6e 6f 72 6d 2a 48 72 65 6d 3b 0a 0a 69 6f | graphy:..H.=.inv_Hnorm*Hrem;..io |
| bcc0 | 6e 2e 6d 00 00 00 05 5c 00 02 36 a1 00 24 00 16 73 65 6c 65 63 74 5f 73 6f 6c 5f 6e 6f 5f 63 65 | n.m....\..6..$..select_sol_no_ce |
| bce0 | 6e 74 65 72 2e 6d 00 5c 00 00 05 80 00 02 36 a2 00 28 00 18 73 65 6c 65 63 74 5f 73 6f 6c 5f 6e | nter.m.\......6..(..select_sol_n |
| bd00 | 6f 5f 63 65 6e 74 65 72 33 44 2e 6d 00 02 36 a2 00 00 05 a4 00 02 36 a3 00 28 00 18 73 65 6c 65 | o_center3D.m..6.......6..(..sele |
| bd20 | 63 74 5f 73 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 65 72 2e 6d 00 02 36 a3 00 00 05 c8 00 02 36 a4 | ct_sol_with_center.m..6.......6. |
| bd40 | 00 28 00 1a 73 65 6c 65 63 74 5f 73 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 65 72 33 44 2e 6d 00 a4 | .(..select_sol_with_center3D.m.. |
| bd60 | 00 00 05 dc 00 02 36 a5 00 18 00 09 73 74 61 72 74 75 70 2e 6d 00 6e 74 00 00 05 f0 00 02 36 a6 | ......6.....startup.m.nt......6. |
| bd80 | 00 18 00 09 74 65 73 74 5f 33 64 2e 6d 00 61 72 00 00 06 00 00 02 33 c0 00 14 00 06 69 73 33 44 | ....test_3d.m.ar......3.....is3D |
| bda0 | 2e 6d 00 09 00 00 06 1c 00 02 36 a7 00 20 00 11 75 6e 64 69 73 74 6f 72 74 5f 69 6d 61 67 65 2e | .m........6.....undistort_image. |
| bdc0 | 6d 00 00 09 00 00 06 34 00 02 36 a8 00 1c 00 0d 55 6e 57 61 72 70 50 6c 61 6e 65 2e 6d 00 65 2e | m......4..6.....UnWarpPlane.m.e. |
| bde0 | 00 00 06 48 00 02 36 a9 00 18 00 0a 77 72 69 74 65 72 61 73 2e 6d 00 6c 00 00 06 64 00 02 36 aa | ...H..6.....writeras.m.l...d..6. |
| be00 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 2e | TOOLBOX_calib/compute_extrinsic. |
| be20 | 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | m............................... |
| be40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| be60 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| be80 | 20 20 20 35 34 34 36 20 20 37 30 32 34 30 33 37 33 31 31 20 20 31 32 33 34 36 00 20 00 00 00 00 | ...5446..7024037311..12346...... |
| bea0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| bec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| bee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| bf00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| bf20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| bf40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| bf60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| bf80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| bfa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| bfc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| bfe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c000 | 66 75 6e 63 74 69 6f 6e 20 5b 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 52 63 6b 6b 2c 48 2c 78 2c 65 78 | function.[omckk,Tckk,Rckk,H,x,ex |
| c020 | 2c 4a 4a 5d 20 3d 20 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 28 78 5f 6b 6b 2c 58 5f | ,JJ].=.compute_extrinsic(x_kk,X_ |
| c040 | 6b 6b 2c 66 63 2c 63 63 2c 6b 63 2c 4d 61 78 49 74 65 72 2c 74 68 72 65 73 68 5f 63 6f 6e 64 29 | kk,fc,cc,kc,MaxIter,thresh_cond) |
| c060 | 2c 0a 0a 25 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 0a 25 0a 25 5b 6f 6d 63 6b 6b 2c | ,..%compute_extrinsic.%.%[omckk, |
| c080 | 54 63 6b 6b 2c 52 63 6b 6b 2c 48 2c 78 2c 65 78 5d 20 3d 20 63 6f 6d 70 75 74 65 5f 65 78 74 72 | Tckk,Rckk,H,x,ex].=.compute_extr |
| c0a0 | 69 6e 73 69 63 28 78 5f 6b 6b 2c 58 5f 6b 6b 2c 66 63 2c 63 63 2c 6b 63 2c 72 65 66 69 6e 65 29 | insic(x_kk,X_kk,fc,cc,kc,refine) |
| c0c0 | 0a 25 0a 25 43 6f 6d 70 75 74 65 73 20 74 68 65 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d | .%.%Computes.the.extrinsic.param |
| c0e0 | 65 74 65 72 73 20 61 74 74 61 63 68 65 64 20 74 6f 20 61 20 33 44 20 73 74 72 75 63 74 75 72 65 | eters.attached.to.a.3D.structure |
| c100 | 20 58 5f 6b 6b 20 67 69 76 65 6e 20 69 74 73 20 70 72 6f 6a 65 63 74 69 6f 6e 0a 25 6f 6e 20 74 | .X_kk.given.its.projection.%on.t |
| c120 | 68 65 20 69 6d 61 67 65 20 70 6c 61 6e 65 20 78 5f 6b 6b 20 61 6e 64 20 74 68 65 20 69 6e 74 72 | he.image.plane.x_kk.and.the.intr |
| c140 | 69 6e 73 69 63 20 63 61 6d 65 72 61 20 70 61 72 61 6d 65 74 65 72 73 20 66 63 2c 20 63 63 20 61 | insic.camera.parameters.fc,.cc.a |
| c160 | 6e 64 20 6b 63 2e 0a 25 57 6f 72 6b 73 20 77 69 74 68 20 70 6c 61 6e 61 72 20 61 6e 64 20 6e 6f | nd.kc..%Works.with.planar.and.no |
| c180 | 6e 2d 70 6c 61 6e 61 72 20 73 74 72 75 63 74 75 72 65 73 2e 0a 25 0a 25 49 4e 50 55 54 3a 20 78 | n-planar.structures..%.%INPUT:.x |
| c1a0 | 5f 6b 6b 3a 20 46 65 61 74 75 72 65 20 6c 6f 63 61 74 69 6f 6e 73 20 6f 6e 20 74 68 65 20 69 6d | _kk:.Feature.locations.on.the.im |
| c1c0 | 61 67 65 73 0a 25 20 20 20 20 20 20 20 58 5f 6b 6b 3a 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 | ages.%.......X_kk:.Corresponding |
| c1e0 | 20 67 72 69 64 20 63 6f 6f 72 64 69 6e 61 74 65 73 0a 25 20 20 20 20 20 20 20 66 63 3a 20 43 61 | .grid.coordinates.%.......fc:.Ca |
| c200 | 6d 65 72 61 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 0a 25 20 20 20 20 20 20 20 63 63 3a 20 50 72 | mera.focal.length.%.......cc:.Pr |
| c220 | 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 0a 25 20 20 20 20 20 | incipal.point.coordinates.%..... |
| c240 | 20 20 6b 63 3a 20 44 69 73 74 6f 72 74 69 6f 6e 20 63 6f 65 66 66 69 63 69 65 6e 74 73 0a 25 20 | ..kc:.Distortion.coefficients.%. |
| c260 | 20 20 20 20 20 20 72 65 66 69 6e 65 3a 20 73 65 74 20 74 6f 20 31 20 66 6f 72 20 72 65 66 69 6e | ......refine:.set.to.1.for.refin |
| c280 | 69 6e 67 20 74 68 65 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 69 74 65 | ing.the.extrinsic.parameters.ite |
| c2a0 | 72 61 74 69 76 65 6c 79 0a 25 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 4f 50 54 49 4f 4e | ratively.%...............[OPTION |
| c2c0 | 41 4c 3a 20 44 65 66 61 75 6c 74 20 76 61 6c 75 65 3a 20 31 5d 0a 25 0a 25 4f 55 54 50 55 54 3a | AL:.Default.value:.1].%.%OUTPUT: |
| c2e0 | 20 6f 6d 63 6b 6b 3a 20 33 44 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 61 74 74 61 63 | .omckk:.3D.rotation.vector.attac |
| c300 | 68 65 64 20 74 6f 20 74 68 65 20 67 72 69 64 20 70 6f 73 69 74 69 6f 6e 73 20 69 6e 20 73 70 61 | hed.to.the.grid.positions.in.spa |
| c320 | 63 65 0a 25 20 20 20 20 20 20 20 20 54 63 6b 6b 3a 20 33 44 20 74 72 61 6e 73 6c 61 74 69 6f 6e | ce.%........Tckk:.3D.translation |
| c340 | 20 76 65 63 74 6f 72 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 67 72 69 64 20 70 6f 73 | .vector.attached.to.the.grid.pos |
| c360 | 69 74 69 6f 6e 73 20 69 6e 20 73 70 61 63 65 0a 25 20 20 20 20 20 20 20 20 52 63 6b 6b 3a 20 33 | itions.in.space.%........Rckk:.3 |
| c380 | 44 20 72 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 63 65 73 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e | D.rotation.matrices.correspondin |
| c3a0 | 67 20 74 6f 20 74 68 65 20 6f 6d 63 20 76 65 63 74 6f 72 73 0a 25 20 20 20 20 20 20 20 20 48 3a | g.to.the.omc.vectors.%........H: |
| c3c0 | 20 48 6f 6d 6f 67 72 61 70 68 79 20 62 65 74 77 65 65 6e 20 70 6f 69 6e 74 73 20 6f 6e 20 74 68 | .Homography.between.points.on.th |
| c3e0 | 65 20 67 72 69 64 20 61 6e 64 20 70 6f 69 6e 74 73 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 20 70 | e.grid.and.points.on.the.image.p |
| c400 | 6c 61 6e 65 20 28 69 6e 20 70 69 78 65 6c 29 0a 25 20 20 20 20 20 20 20 20 20 20 20 54 68 69 73 | lane.(in.pixel).%...........This |
| c420 | 20 6d 61 6b 65 73 20 73 65 6e 73 65 20 6f 6e 6c 79 20 69 66 20 74 68 65 20 70 6c 61 6e 61 72 20 | .makes.sense.only.if.the.planar. |
| c440 | 74 68 61 74 20 69 73 20 75 73 65 64 20 69 6e 20 70 6c 61 6e 61 72 2e 0a 25 20 20 20 20 20 20 20 | that.is.used.in.planar..%....... |
| c460 | 20 78 3a 20 52 65 70 72 6f 6a 65 63 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 70 6f 69 6e 74 73 20 | .x:.Reprojections.of.the.points. |
| c480 | 6f 6e 20 74 68 65 20 69 6d 61 67 65 20 70 6c 61 6e 65 0a 25 20 20 20 20 20 20 20 20 65 78 3a 20 | on.the.image.plane.%........ex:. |
| c4a0 | 52 65 70 72 6f 6a 65 63 74 69 6f 6e 20 65 72 72 6f 72 3a 20 65 78 20 3d 20 78 5f 6b 6b 20 2d 20 | Reprojection.error:.ex.=.x_kk.-. |
| c4c0 | 78 3b 0a 25 0a 25 4d 65 74 68 6f 64 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 6e 6f 72 6d 61 | x;.%.%Method:.Computes.the.norma |
| c4e0 | 6c 69 7a 65 64 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 2c 20 74 68 65 6e 20 63 6f | lized.point.coordinates,.then.co |
| c500 | 6d 70 75 74 65 73 20 74 68 65 20 33 44 20 70 6f 73 65 0a 25 0a 25 49 6d 70 6f 72 74 61 6e 74 20 | mputes.the.3D.pose.%.%Important. |
| c520 | 66 75 6e 63 74 69 6f 6e 73 20 63 61 6c 6c 65 64 20 77 69 74 68 69 6e 20 74 68 61 74 20 70 72 6f | functions.called.within.that.pro |
| c540 | 67 72 61 6d 3a 0a 25 0a 25 6e 6f 72 6d 61 6c 69 7a 65 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 | gram:.%.%normalize:.Computes.the |
| c560 | 20 6e 6f 72 6d 61 6c 69 7a 65 20 69 6d 61 67 65 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 | .normalize.image.point.coordinat |
| c580 | 65 73 2e 0a 25 0a 25 70 6f 73 65 33 44 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 33 44 20 70 | es..%.%pose3D:.Computes.the.3D.p |
| c5a0 | 6f 73 65 20 6f 66 20 74 68 65 20 73 74 72 75 63 74 75 72 65 20 67 69 76 65 6e 20 74 68 65 20 6e | ose.of.the.structure.given.the.n |
| c5c0 | 6f 72 6d 61 6c 69 7a 65 64 20 69 6d 61 67 65 20 70 72 6f 6a 65 63 74 69 6f 6e 2e 0a 25 0a 25 70 | ormalized.image.projection..%.%p |
| c5e0 | 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 2e 6d 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 32 44 | roject_points.m:.Computes.the.2D |
| c600 | 20 69 6d 61 67 65 20 70 72 6f 6a 65 63 74 69 6f 6e 73 20 6f 66 20 61 20 73 65 74 20 6f 66 20 33 | .image.projections.of.a.set.of.3 |
| c620 | 44 20 70 6f 69 6e 74 73 0a 0a 0a 0a 69 66 20 6e 61 72 67 69 6e 20 3c 20 37 2c 0a 20 20 20 74 68 | D.points....if.nargin.<.7,....th |
| c640 | 72 65 73 68 5f 63 6f 6e 64 20 3d 20 69 6e 66 3b 0a 65 6e 64 3b 0a 0a 0a 69 66 20 6e 61 72 67 69 | resh_cond.=.inf;.end;...if.nargi |
| c660 | 6e 20 3c 20 36 2c 0a 20 20 20 4d 61 78 49 74 65 72 20 3d 20 32 30 3b 0a 65 6e 64 3b 0a 0a 0a 0a | n.<.6,....MaxIter.=.20;.end;.... |
| c680 | 69 66 20 6e 61 72 67 69 6e 20 3c 20 35 2c 0a 20 20 20 6b 63 20 3d 20 7a 65 72 6f 73 28 34 2c 31 | if.nargin.<.5,....kc.=.zeros(4,1 |
| c6a0 | 29 3b 0a 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3c 20 34 2c 0a 20 20 20 20 20 20 63 63 20 3d 20 | );....if.nargin.<.4,.......cc.=. |
| c6c0 | 7a 65 72 6f 73 28 32 2c 31 29 3b 0a 20 20 20 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3c 20 33 2c | zeros(2,1);.......if.nargin.<.3, |
| c6e0 | 0a 20 20 20 20 20 20 20 20 20 66 63 20 3d 20 6f 6e 65 73 28 32 2c 31 29 3b 0a 20 20 20 20 20 20 | ..........fc.=.ones(2,1);....... |
| c700 | 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3c 20 32 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 72 | ...if.nargin.<.2,.............er |
| c720 | 72 6f 72 28 27 4e 65 65 64 20 32 44 20 70 72 6f 6a 65 63 74 69 6f 6e 73 20 61 6e 64 20 33 44 20 | ror('Need.2D.projections.and.3D. |
| c740 | 70 6f 69 6e 74 73 20 28 69 6e 20 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 2e 6d 29 27 | points.(in.compute_extrinsic.m)' |
| c760 | 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0a 20 20 20 20 20 20 20 20 20 | );.............return;.......... |
| c780 | 65 6e 64 3b 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 0a 25 | end;.......end;....end;.end;...% |
| c7a0 | 20 49 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 3a 0a 0a 5b 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 52 63 | .Initialization:..[omckk,Tckk,Rc |
| c7c0 | 6b 6b 5d 20 3d 20 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 69 6e 69 74 28 78 5f 6b | kk].=.compute_extrinsic_init(x_k |
| c7e0 | 6b 2c 58 5f 6b 6b 2c 66 63 2c 63 63 2c 6b 63 29 3b 0a 0a 25 20 52 65 66 69 6e 65 6d 65 6e 74 3a | k,X_kk,fc,cc,kc);..%.Refinement: |
| c800 | 0a 0a 5b 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 52 63 6b 6b 2c 4a 4a 5d 20 3d 20 63 6f 6d 70 75 74 65 | ..[omckk,Tckk,Rckk,JJ].=.compute |
| c820 | 5f 65 78 74 72 69 6e 73 69 63 5f 72 65 66 69 6e 65 28 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 78 5f 6b | _extrinsic_refine(omckk,Tckk,x_k |
| c840 | 6b 2c 58 5f 6b 6b 2c 66 63 2c 63 63 2c 6b 63 2c 4d 61 78 49 74 65 72 2c 74 68 72 65 73 68 5f 63 | k,X_kk,fc,cc,kc,MaxIter,thresh_c |
| c860 | 6f 6e 64 29 3b 0a 0a 0a 25 20 63 6f 6d 70 75 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 68 6f 6d | ond);...%.computation.of.the.hom |
| c880 | 6f 67 72 61 70 68 79 20 28 6e 6f 74 20 75 73 65 66 75 6c 20 69 6e 20 74 68 65 20 65 6e 64 29 0a | ography.(not.useful.in.the.end). |
| c8a0 | 0a 48 20 3d 20 5b 52 63 6b 6b 28 3a 2c 31 3a 32 29 20 54 63 6b 6b 5d 3b 0a 0a 25 20 43 6f 6d 70 | .H.=.[Rckk(:,1:2).Tckk];..%.Comp |
| c8c0 | 75 74 65 73 20 74 68 65 20 72 65 70 72 6f 6a 65 63 74 69 6f 6e 20 65 72 72 6f 72 20 69 6e 20 70 | utes.the.reprojection.error.in.p |
| c8e0 | 69 78 65 6c 73 3a 0a 0a 78 20 3d 20 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 28 58 5f 6b 6b 2c | ixels:..x.=.project_points(X_kk, |
| c900 | 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 66 63 2c 63 63 2c 6b 63 29 3b 0a 0a 65 78 20 3d 20 78 5f 6b 6b | omckk,Tckk,fc,cc,kc);..ex.=.x_kk |
| c920 | 20 2d 20 78 3b 0a 0a 0a 25 20 43 6f 6e 76 65 72 74 73 20 74 68 65 20 68 6f 6d 6f 67 72 61 70 68 | .-.x;...%.Converts.the.homograph |
| c940 | 79 20 69 6e 20 70 69 78 65 6c 20 75 6e 69 74 73 3a 0a 0a 4b 4b 20 3d 20 5b 66 63 28 31 29 20 30 | y.in.pixel.units:..KK.=.[fc(1).0 |
| c960 | 20 63 63 28 31 29 3b 30 20 66 63 28 32 29 20 63 63 28 32 29 3b 20 30 20 30 20 31 5d 3b 0a 0a 48 | .cc(1);0.fc(2).cc(2);.0.0.1];..H |
| c980 | 20 3d 20 4b 4b 2a 48 3b 0a 0a 0a 0a 0a 72 65 74 75 72 6e 3b 0a 0a 0a 25 20 54 65 73 74 20 6f 66 | .=.KK*H;.....return;...%.Test.of |
| c9a0 | 20 63 6f 6d 70 74 65 20 65 78 74 72 69 6e 73 69 63 3a 0a 0a 4e 70 20 3d 20 34 3b 0a 73 78 20 3d | .compte.extrinsic:..Np.=.4;.sx.= |
| c9c0 | 20 31 30 3b 0a 73 79 20 3d 20 31 30 3b 0a 73 7a 20 3d 20 35 3b 0a 0a 6f 6d 20 3d 20 72 61 6e 64 | .10;.sy.=.10;.sz.=.5;..om.=.rand |
| c9e0 | 6e 28 33 2c 31 29 3b 0a 54 20 3d 20 5b 30 3b 30 3b 31 30 30 5d 3b 0a 0a 6e 6f 69 73 65 20 3d 20 | n(3,1);.T.=.[0;0;100];..noise.=. |
| ca00 | 32 2f 31 30 30 30 3b 0a 0a 58 58 20 3d 20 5b 73 78 2a 72 61 6e 64 6e 28 31 2c 4e 70 29 3b 73 79 | 2/1000;..XX.=.[sx*randn(1,Np);sy |
| ca20 | 2a 72 61 6e 64 6e 28 31 2c 4e 70 29 3b 73 7a 2a 72 61 6e 64 6e 28 31 2c 4e 70 29 5d 3b 0a 78 78 | *randn(1,Np);sz*randn(1,Np)];.xx |
| ca40 | 20 3d 20 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 28 58 58 2c 6f 6d 2c 54 29 3b 0a 0a 78 78 6e | .=.project_points(XX,om,T);..xxn |
| ca60 | 20 3d 20 78 78 20 2b 20 6e 6f 69 73 65 20 2a 20 72 61 6e 64 6e 28 32 2c 4e 70 29 3b 0a 0a 5b 6f | .=.xx.+.noise.*.randn(2,Np);..[o |
| ca80 | 6d 63 6b 6b 2c 54 63 6b 6b 5d 20 3d 20 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 28 78 | mckk,Tckk].=.compute_extrinsic(x |
| caa0 | 78 6e 2c 58 58 29 3b 0a 0a 5b 6f 6d 20 6f 6d 63 6b 6b 20 6f 6d 2d 6f 6d 63 6b 6b 5d 0a 5b 54 20 | xn,XX);..[om.omckk.om-omckk].[T. |
| cac0 | 54 63 6b 6b 20 54 2d 54 63 6b 6b 5d 0a 0a 66 69 67 75 72 65 28 33 29 3b 0a 70 6c 6f 74 28 78 78 | Tckk.T-Tckk]..figure(3);.plot(xx |
| cae0 | 28 31 2c 3a 29 2c 78 78 28 32 2c 3a 29 2c 27 72 2b 27 29 3b 0a 68 6f 6c 64 20 6f 6e 3b 0a 70 6c | (1,:),xx(2,:),'r+');.hold.on;.pl |
| cb00 | 6f 74 28 78 78 6e 28 31 2c 3a 29 2c 78 78 6e 28 32 2c 3a 29 2c 27 67 2b 27 29 3b 0a 68 6f 6c 64 | ot(xxn(1,:),xxn(2,:),'g+');.hold |
| cb20 | 20 6f 66 66 3b 0a 6d 6f 67 72 61 70 68 79 20 66 72 6f 6d 20 70 6c 61 6e 65 20 74 6f 20 70 69 78 | .off;.mography.from.plane.to.pix |
| cb40 | 65 6c 20 63 6f 6f 72 64 69 6e 61 74 65 73 3a 0a 20 20 20 0a 20 20 20 48 5f 74 6f 74 61 6c 20 3d | el.coordinates:........H_total.= |
| cb60 | 20 5b 31 20 30 20 2d 31 20 3b 20 30 20 31 20 2d 31 20 3b 20 30 20 30 20 31 5d 2a 48 6f 6d 6f 2a | .[1.0.-1.;.0.1.-1.;.0.0.1]*Homo* |
| cb80 | 5b 31 20 30 20 30 3b 30 20 2d 31 20 31 3b 30 20 30 20 31 5d 2a 5b 31 2f 57 20 30 20 30 20 3b 20 | [1.0.0;0.-1.1;0.0.1]*[1/W.0.0.;. |
| cba0 | 30 20 31 2f 4c 20 30 3b 20 30 20 30 20 31 5d 3b 0a 20 20 20 25 20 57 41 52 4e 49 4e 47 21 21 21 | 0.1/L.0;.0.0.1];....%.WARNING!!! |
| cbc0 | 20 74 68 65 20 66 69 72 73 74 20 6d 61 74 72 69 78 20 28 6f 6e 20 74 68 65 20 6c 65 66 74 20 73 | .the.first.matrix.(on.the.left.s |
| cbe0 | 69 64 65 29 20 74 61 6b 65 73 20 63 61 72 65 20 6f 66 20 74 68 65 20 74 72 61 6e 73 66 6f 72 6d | ide).takes.care.of.the.transform |
| cc00 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6f 6d 70 75 74 65 5f 68 6f 6d 6f 67 72 61 70 68 79 | TOOLBOX_calib/compute_homography |
| cc20 | 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .m.............................. |
| cc40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| cc60 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| cc80 | 20 20 20 36 33 37 36 20 20 37 30 32 34 30 33 37 33 31 32 20 20 31 32 35 31 37 00 20 00 00 00 00 | ...6376..7024037312..12517...... |
| cca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| ccc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| cce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| cd00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| cd20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| cd40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| cd60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| cd80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| cda0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| cdc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| cde0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| ce00 | 66 75 6e 63 74 69 6f 6e 20 5b 48 2c 48 6e 6f 72 6d 2c 69 6e 76 5f 48 6e 6f 72 6d 5d 20 3d 20 63 | function.[H,Hnorm,inv_Hnorm].=.c |
| ce20 | 6f 6d 70 75 74 65 5f 68 6f 6d 6f 67 72 61 70 68 79 20 28 6d 2c 4d 29 3b 0a 0a 25 63 6f 6d 70 75 | ompute_homography.(m,M);..%compu |
| ce40 | 74 65 5f 68 6f 6d 6f 67 72 61 70 68 79 0a 25 0a 25 5b 48 2c 48 6e 6f 72 6d 2c 69 6e 76 5f 48 6e | te_homography.%.%[H,Hnorm,inv_Hn |
| ce60 | 6f 72 6d 5d 20 3d 20 63 6f 6d 70 75 74 65 5f 68 6f 6d 6f 67 72 61 70 68 79 20 28 6d 2c 4d 29 0a | orm].=.compute_homography.(m,M). |
| ce80 | 25 0a 25 43 6f 6d 70 75 74 65 73 20 74 68 65 20 70 6c 61 6e 61 72 20 68 6f 6d 6f 67 72 61 70 68 | %.%Computes.the.planar.homograph |
| cea0 | 79 20 62 65 74 77 65 65 6e 20 74 68 65 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 | y.between.the.point.coordinates. |
| cec0 | 6f 6e 20 74 68 65 20 70 6c 61 6e 65 20 28 4d 29 20 61 6e 64 20 74 68 65 20 69 6d 61 67 65 0a 25 | on.the.plane.(M).and.the.image.% |
| cee0 | 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 28 6d 29 2e 0a 25 0a 25 49 4e 50 55 54 3a | point.coordinates.(m)..%.%INPUT: |
| cf00 | 20 6d 3a 20 68 6f 6d 6f 67 65 6e 65 6f 75 73 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 69 6e 20 74 | .m:.homogeneous.coordinates.in.t |
| cf20 | 68 65 20 69 6d 61 67 65 20 70 6c 61 6e 65 20 28 33 78 4e 20 6d 61 74 72 69 78 29 0a 25 20 20 20 | he.image.plane.(3xN.matrix).%... |
| cf40 | 20 20 20 20 4d 3a 20 68 6f 6d 6f 67 65 6e 65 6f 75 73 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 69 | ....M:.homogeneous.coordinates.i |
| cf60 | 6e 20 74 68 65 20 70 6c 61 6e 65 20 69 6e 20 33 44 20 28 33 78 4e 20 6d 61 74 72 69 78 29 0a 25 | n.the.plane.in.3D.(3xN.matrix).% |
| cf80 | 0a 25 4f 55 54 50 55 54 3a 20 48 3a 20 48 6f 6d 6f 67 72 61 70 68 79 20 6d 61 74 72 69 78 20 28 | .%OUTPUT:.H:.Homography.matrix.( |
| cfa0 | 33 78 33 20 68 6f 6d 6f 67 65 6e 65 6f 75 73 20 6d 61 74 72 69 78 29 0a 25 20 20 20 20 20 20 20 | 3x3.homogeneous.matrix).%....... |
| cfc0 | 20 48 6e 6f 72 6d 3a 20 4e 6f 72 6d 6c 69 7a 61 74 69 6f 6e 20 6d 61 74 72 69 78 20 75 73 65 64 | .Hnorm:.Normlization.matrix.used |
| cfe0 | 20 6f 6e 20 74 68 65 20 70 6f 69 6e 74 73 20 62 65 66 6f 72 65 20 68 6f 6d 6f 67 72 61 70 68 79 | .on.the.points.before.homography |
| d000 | 20 63 6f 6d 70 75 74 61 74 69 6f 6e 0a 25 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 73 | .computation.%...............(us |
| d020 | 65 66 75 6c 20 66 6f 72 20 6e 75 6d 65 72 69 63 61 6c 20 73 74 61 62 69 6c 69 74 79 20 69 73 20 | eful.for.numerical.stability.is. |
| d040 | 70 6f 69 6e 74 73 20 69 6e 20 70 69 78 65 6c 20 63 6f 6f 72 64 69 6e 61 74 65 73 29 0a 25 20 20 | points.in.pixel.coordinates).%.. |
| d060 | 20 20 20 20 20 20 69 6e 76 5f 48 6e 6f 72 6d 3a 20 54 68 65 20 69 6e 76 65 72 73 65 20 6f 66 20 | ......inv_Hnorm:.The.inverse.of. |
| d080 | 48 6e 6f 72 6d 0a 25 0a 25 44 65 66 69 6e 69 74 69 6f 6e 3a 20 6d 20 7e 20 48 2a 4d 20 77 68 65 | Hnorm.%.%Definition:.m.~.H*M.whe |
| d0a0 | 72 65 20 22 7e 22 20 6d 65 61 6e 73 20 65 71 75 61 6c 20 75 70 20 74 6f 20 61 20 6e 6f 6e 20 7a | re."~".means.equal.up.to.a.non.z |
| d0c0 | 65 72 6f 20 73 63 61 6c 61 72 20 66 61 63 74 6f 72 2e 0a 25 0a 25 4d 65 74 68 6f 64 3a 20 46 69 | ero.scalar.factor..%.%Method:.Fi |
| d0e0 | 72 73 74 20 63 6f 6d 70 75 74 65 73 20 61 6e 20 69 6e 69 74 69 61 6c 20 67 75 65 73 73 20 66 6f | rst.computes.an.initial.guess.fo |
| d100 | 72 20 74 68 65 20 68 6f 6d 6f 67 72 61 70 68 79 20 74 68 72 6f 75 67 68 20 71 75 61 73 69 2d 6c | r.the.homography.through.quasi-l |
| d120 | 69 6e 65 61 72 20 6d 65 74 68 6f 64 2e 0a 25 20 20 20 20 20 20 20 20 54 68 65 6e 2c 20 69 66 20 | inear.method..%........Then,.if. |
| d140 | 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 70 6f 69 6e 74 73 20 69 73 20 6c 61 | the.total.number.of.points.is.la |
| d160 | 72 67 65 72 20 74 68 61 6e 20 34 2c 20 6f 70 74 69 6d 69 7a 65 20 74 68 65 20 73 6f 6c 75 74 69 | rger.than.4,.optimize.the.soluti |
| d180 | 6f 6e 20 62 79 20 6d 69 6e 69 6d 69 7a 69 6e 67 0a 25 20 20 20 20 20 20 20 20 74 68 65 20 72 65 | on.by.minimizing.%........the.re |
| d1a0 | 70 72 6f 6a 65 63 74 69 6f 6e 20 65 72 72 6f 72 20 28 69 6e 20 74 68 65 20 6c 65 61 73 74 20 73 | projection.error.(in.the.least.s |
| d1c0 | 71 75 61 72 65 73 20 73 65 6e 73 65 29 2e 0a 25 0a 25 0a 25 49 6d 70 6f 72 74 61 6e 74 20 66 75 | quares.sense)..%.%.%Important.fu |
| d1e0 | 6e 63 74 69 6f 6e 73 20 63 61 6c 6c 65 64 20 77 69 74 68 69 6e 20 74 68 61 74 20 70 72 6f 67 72 | nctions.called.within.that.progr |
| d200 | 61 6d 3a 0a 25 0a 25 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 5f 6f 75 6c 75 3a 20 55 6e 64 | am:.%.%comp_distortion_oulu:.Und |
| d220 | 69 73 74 6f 72 74 73 20 70 69 78 65 6c 20 63 6f 6f 72 64 69 6e 61 74 65 73 2e 0a 25 0a 25 63 6f | istorts.pixel.coordinates..%.%co |
| d240 | 6d 70 75 74 65 5f 68 6f 6d 6f 67 72 61 70 68 79 2e 6d 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 | mpute_homography.m:.Computes.the |
| d260 | 20 70 6c 61 6e 61 72 20 68 6f 6d 6f 67 72 61 70 68 79 20 62 65 74 77 65 65 6e 20 70 6f 69 6e 74 | .planar.homography.between.point |
| d280 | 73 20 6f 6e 20 74 68 65 20 67 72 69 64 20 69 6e 20 33 44 2c 20 61 6e 64 20 74 68 65 20 69 6d 61 | s.on.the.grid.in.3D,.and.the.ima |
| d2a0 | 67 65 20 70 6c 61 6e 65 2e 0a 25 0a 25 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 2e 6d 3a 20 43 | ge.plane..%.%project_points.m:.C |
| d2c0 | 6f 6d 70 75 74 65 73 20 74 68 65 20 32 44 20 69 6d 61 67 65 20 70 72 6f 6a 65 63 74 69 6f 6e 73 | omputes.the.2D.image.projections |
| d2e0 | 20 6f 66 20 61 20 73 65 74 20 6f 66 20 33 44 20 70 6f 69 6e 74 73 2c 20 61 6e 64 20 61 6c 73 6f | .of.a.set.of.3D.points,.and.also |
| d300 | 20 72 65 74 75 72 6e 73 20 74 65 20 4a 61 63 6f 62 69 61 6e 0a 25 20 20 20 20 20 20 20 20 20 20 | .returns.te.Jacobian.%.......... |
| d320 | 20 20 20 20 20 20 20 20 6d 61 74 72 69 78 20 28 64 65 72 69 76 61 74 69 76 65 20 77 69 74 68 20 | ........matrix.(derivative.with. |
| d340 | 72 65 73 70 65 63 74 20 74 6f 20 74 68 65 20 69 6e 74 72 69 6e 73 69 63 20 61 6e 64 20 65 78 74 | respect.to.the.intrinsic.and.ext |
| d360 | 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 29 2e 0a 25 20 20 20 20 20 20 20 20 20 20 20 | rinsic.parameters)..%........... |
| d380 | 20 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 63 61 6c 6c 65 64 20 77 | .......This.function.is.called.w |
| d3a0 | 69 74 68 69 6e 20 74 68 65 20 6d 69 6e 69 6d 69 7a 61 74 69 6f 6e 20 6c 6f 6f 70 2e 0a 0a 0a 0a | ithin.the.minimization.loop..... |
| d3c0 | 0a 4e 70 20 3d 20 73 69 7a 65 28 6d 2c 32 29 3b 0a 0a 69 66 20 73 69 7a 65 28 6d 2c 31 29 3c 33 | .Np.=.size(m,2);..if.size(m,1)<3 |
| d3e0 | 2c 0a 20 20 20 6d 20 3d 20 5b 6d 3b 6f 6e 65 73 28 31 2c 4e 70 29 5d 3b 0a 65 6e 64 3b 0a 0a 69 | ,....m.=.[m;ones(1,Np)];.end;..i |
| d400 | 66 20 73 69 7a 65 28 4d 2c 31 29 3c 33 2c 0a 20 20 20 4d 20 3d 20 5b 4d 3b 6f 6e 65 73 28 31 2c | f.size(M,1)<3,....M.=.[M;ones(1, |
| d420 | 4e 70 29 5d 3b 0a 65 6e 64 3b 0a 0a 0a 6d 20 3d 20 6d 20 2e 2f 20 28 6f 6e 65 73 28 33 2c 31 29 | Np)];.end;...m.=.m../.(ones(3,1) |
| d440 | 2a 6d 28 33 2c 3a 29 29 3b 0a 4d 20 3d 20 4d 20 2e 2f 20 28 6f 6e 65 73 28 33 2c 31 29 2a 4d 28 | *m(3,:));.M.=.M../.(ones(3,1)*M( |
| d460 | 33 2c 3a 29 29 3b 0a 0a 25 20 50 72 65 6e 6f 72 6d 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 70 6f | 3,:));..%.Prenormalization.of.po |
| d480 | 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 28 76 65 72 79 20 69 6d 70 6f 72 74 61 6e 74 29 | int.coordinates.(very.important) |
| d4a0 | 3a 0a 25 20 28 41 66 66 69 6e 65 20 6e 6f 72 6d 61 6c 69 7a 61 74 69 6f 6e 29 0a 0a 61 78 20 3d | :.%.(Affine.normalization)..ax.= |
| d4c0 | 20 6d 28 31 2c 3a 29 3b 0a 61 79 20 3d 20 6d 28 32 2c 3a 29 3b 0a 0a 6d 78 78 20 3d 20 6d 65 61 | .m(1,:);.ay.=.m(2,:);..mxx.=.mea |
| d4e0 | 6e 28 61 78 29 3b 0a 6d 79 79 20 3d 20 6d 65 61 6e 28 61 79 29 3b 0a 61 78 20 3d 20 61 78 20 2d | n(ax);.myy.=.mean(ay);.ax.=.ax.- |
| d500 | 20 6d 78 78 3b 0a 61 79 20 3d 20 61 79 20 2d 20 6d 79 79 3b 0a 0a 73 63 78 78 20 3d 20 6d 65 61 | .mxx;.ay.=.ay.-.myy;..scxx.=.mea |
| d520 | 6e 28 61 62 73 28 61 78 29 29 3b 0a 73 63 79 79 20 3d 20 6d 65 61 6e 28 61 62 73 28 61 79 29 29 | n(abs(ax));.scyy.=.mean(abs(ay)) |
| d540 | 3b 0a 0a 0a 48 6e 6f 72 6d 20 3d 20 5b 31 2f 73 63 78 78 20 30 20 2d 6d 78 78 2f 73 63 78 78 3b | ;...Hnorm.=.[1/scxx.0.-mxx/scxx; |
| d560 | 30 20 31 2f 73 63 79 79 20 2d 6d 79 79 2f 73 63 79 79 3b 30 20 30 20 31 5d 3b 0a 69 6e 76 5f 48 | 0.1/scyy.-myy/scyy;0.0.1];.inv_H |
| d580 | 6e 6f 72 6d 20 3d 20 5b 73 63 78 78 20 30 20 6d 78 78 20 3b 20 30 20 73 63 79 79 20 6d 79 79 3b | norm.=.[scxx.0.mxx.;.0.scyy.myy; |
| d5a0 | 20 30 20 30 20 31 5d 3b 0a 0a 6d 6e 20 3d 20 48 6e 6f 72 6d 2a 6d 3b 0a 0a 25 20 43 6f 6d 70 75 | .0.0.1];..mn.=.Hnorm*m;..%.Compu |
| d5c0 | 74 65 20 74 68 65 20 68 6f 6d 6f 67 72 61 70 68 79 20 62 65 74 77 65 65 6e 20 6d 20 61 6e 64 20 | te.the.homography.between.m.and. |
| d5e0 | 6d 6e 3a 0a 0a 25 20 42 75 69 6c 64 20 74 68 65 20 6d 61 74 72 69 78 3a 0a 0a 4c 20 3d 20 7a 65 | mn:..%.Build.the.matrix:..L.=.ze |
| d600 | 72 6f 73 28 32 2a 4e 70 2c 39 29 3b 0a 0a 4c 28 31 3a 32 3a 32 2a 4e 70 2c 31 3a 33 29 20 3d 20 | ros(2*Np,9);..L(1:2:2*Np,1:3).=. |
| d620 | 4d 27 3b 0a 4c 28 32 3a 32 3a 32 2a 4e 70 2c 34 3a 36 29 20 3d 20 4d 27 3b 0a 4c 28 31 3a 32 3a | M';.L(2:2:2*Np,4:6).=.M';.L(1:2: |
| d640 | 32 2a 4e 70 2c 37 3a 39 29 20 3d 20 2d 28 28 6f 6e 65 73 28 33 2c 31 29 2a 6d 6e 28 31 2c 3a 29 | 2*Np,7:9).=.-((ones(3,1)*mn(1,:) |
| d660 | 29 2e 2a 20 4d 29 27 3b 0a 4c 28 32 3a 32 3a 32 2a 4e 70 2c 37 3a 39 29 20 3d 20 2d 28 28 6f 6e | ).*.M)';.L(2:2:2*Np,7:9).=.-((on |
| d680 | 65 73 28 33 2c 31 29 2a 6d 6e 28 32 2c 3a 29 29 2e 2a 20 4d 29 27 3b 0a 0a 69 66 20 4e 70 20 3e | es(3,1)*mn(2,:)).*.M)';..if.Np.> |
| d6a0 | 20 34 2c 0a 09 4c 20 3d 20 4c 27 2a 4c 3b 0a 65 6e 64 3b 0a 0a 5b 55 2c 53 2c 56 5d 20 3d 20 73 | .4,..L.=.L'*L;.end;..[U,S,V].=.s |
| d6c0 | 76 64 28 4c 29 3b 0a 0a 68 68 20 3d 20 56 28 3a 2c 39 29 3b 0a 68 68 20 3d 20 68 68 2f 68 68 28 | vd(L);..hh.=.V(:,9);.hh.=.hh/hh( |
| d6e0 | 39 29 3b 0a 0a 48 72 65 6d 20 3d 20 72 65 73 68 61 70 65 28 68 68 2c 33 2c 33 29 27 3b 0a 25 48 | 9);..Hrem.=.reshape(hh,3,3)';.%H |
| d700 | 72 65 6d 20 3d 20 48 72 65 6d 20 2f 20 48 72 65 6d 28 33 2c 33 29 3b 0a 0a 25 20 46 69 6e 61 6c | rem.=.Hrem./.Hrem(3,3);..%.Final |
| d720 | 20 68 6f 6d 6f 67 72 61 70 68 79 3a 0a 0a 48 20 3d 20 69 6e 76 5f 48 6e 6f 72 6d 2a 48 72 65 6d | .homography:..H.=.inv_Hnorm*Hrem |
| d740 | 3b 0a 0a 0a 25 25 25 20 48 6f 6d 6f 67 72 61 70 68 79 20 72 65 66 69 6e 65 6d 65 6e 74 20 69 66 | ;...%%%.Homography.refinement.if |
| d760 | 20 74 68 65 72 65 20 61 72 65 20 6d 6f 72 65 20 74 68 61 6e 20 34 20 70 6f 69 6e 74 73 3a 0a 0a | .there.are.more.than.4.points:.. |
| d780 | 69 66 20 4e 70 20 3e 20 34 2c 0a 20 20 20 0a 20 20 20 25 20 46 69 6e 61 6c 20 72 65 66 69 6e 65 | if.Np.>.4,........%.Final.refine |
| d7a0 | 6d 65 6e 74 3a 0a 20 20 20 0a 20 20 20 68 68 76 20 3d 20 72 65 73 68 61 70 65 28 48 27 2c 39 2c | ment:........hhv.=.reshape(H',9, |
| d7c0 | 31 29 3b 0a 20 20 20 68 68 76 20 3d 20 68 68 76 28 31 3a 38 29 3b 0a 20 20 20 0a 20 20 20 66 6f | 1);....hhv.=.hhv(1:8);........fo |
| d7e0 | 72 20 69 74 65 72 3d 31 3a 31 30 2c 0a 20 20 20 0a 09 09 6d 72 65 70 20 3d 20 48 20 2a 20 4d 3b | r.iter=1:10,.......mrep.=.H.*.M; |
| d800 | 0a 0a 09 09 4a 20 3d 20 7a 65 72 6f 73 28 32 2a 4e 70 2c 38 29 3b 0a 0a 09 09 4d 4d 4d 20 3d 20 | ....J.=.zeros(2*Np,8);....MMM.=. |
| d820 | 28 4d 20 2e 2f 20 28 6f 6e 65 73 28 33 2c 31 29 2a 6d 72 65 70 28 33 2c 3a 29 29 29 3b 0a 0a 09 | (M../.(ones(3,1)*mrep(3,:)));... |
| d840 | 09 4a 28 31 3a 32 3a 32 2a 4e 70 2c 31 3a 33 29 20 3d 20 2d 4d 4d 4d 27 3b 0a 09 09 4a 28 32 3a | .J(1:2:2*Np,1:3).=.-MMM';...J(2: |
| d860 | 32 3a 32 2a 4e 70 2c 34 3a 36 29 20 3d 20 2d 4d 4d 4d 27 3b 0a 09 09 0a 09 09 6d 72 65 70 20 3d | 2:2*Np,4:6).=.-MMM';......mrep.= |
| d880 | 20 6d 72 65 70 20 2e 2f 20 28 6f 6e 65 73 28 33 2c 31 29 2a 6d 72 65 70 28 33 2c 3a 29 29 3b 0a | .mrep../.(ones(3,1)*mrep(3,:));. |
| d8a0 | 0a 09 09 6d 5f 65 72 72 20 3d 20 6d 28 31 3a 32 2c 3a 29 20 2d 20 6d 72 65 70 28 31 3a 32 2c 3a | ...m_err.=.m(1:2,:).-.mrep(1:2,: |
| d8c0 | 29 3b 0a 09 09 6d 5f 65 72 72 20 3d 20 6d 5f 65 72 72 28 3a 29 3b 0a 0a 09 09 4d 4d 4d 32 20 3d | );...m_err.=.m_err(:);....MMM2.= |
| d8e0 | 20 28 6f 6e 65 73 28 33 2c 31 29 2a 6d 72 65 70 28 31 2c 3a 29 29 20 2e 2a 20 4d 4d 4d 3b 0a 09 | .(ones(3,1)*mrep(1,:))..*.MMM;.. |
| d900 | 09 4d 4d 4d 33 20 3d 20 28 6f 6e 65 73 28 33 2c 31 29 2a 6d 72 65 70 28 32 2c 3a 29 29 20 2e 2a | .MMM3.=.(ones(3,1)*mrep(2,:))..* |
| d920 | 20 4d 4d 4d 3b 0a 0a 09 09 4a 28 31 3a 32 3a 32 2a 4e 70 2c 37 3a 38 29 20 3d 20 4d 4d 4d 32 28 | .MMM;....J(1:2:2*Np,7:8).=.MMM2( |
| d940 | 31 3a 32 2c 3a 29 27 3b 0a 09 09 4a 28 32 3a 32 3a 32 2a 4e 70 2c 37 3a 38 29 20 3d 20 4d 4d 4d | 1:2,:)';...J(2:2:2*Np,7:8).=.MMM |
| d960 | 33 28 31 3a 32 2c 3a 29 27 3b 0a 0a 09 09 4d 4d 4d 20 3d 20 28 4d 20 2e 2f 20 28 6f 6e 65 73 28 | 3(1:2,:)';....MMM.=.(M../.(ones( |
| d980 | 33 2c 31 29 2a 6d 72 65 70 28 33 2c 3a 29 29 29 27 3b 0a 0a 09 09 68 68 5f 69 6e 6e 6f 76 20 20 | 3,1)*mrep(3,:)))';....hh_innov.. |
| d9a0 | 3d 20 69 6e 76 28 4a 27 2a 4a 29 2a 4a 27 2a 6d 5f 65 72 72 3b 0a 0a 09 09 68 68 76 5f 75 70 20 | =.inv(J'*J)*J'*m_err;....hhv_up. |
| d9c0 | 3d 20 68 68 76 20 2d 20 68 68 5f 69 6e 6e 6f 76 3b 0a 0a 09 09 48 5f 75 70 20 3d 20 72 65 73 68 | =.hhv.-.hh_innov;....H_up.=.resh |
| d9e0 | 61 70 65 28 5b 68 68 76 5f 75 70 3b 31 5d 2c 33 2c 33 29 27 3b 0a 0a 09 09 25 6e 6f 72 6d 28 6d | ape([hhv_up;1],3,3)';....%norm(m |
| da00 | 5f 65 72 72 29 0a 09 09 25 6e 6f 72 6d 28 68 68 5f 69 6e 6e 6f 76 29 0a 0a 09 09 68 68 76 20 3d | _err)...%norm(hh_innov)....hhv.= |
| da20 | 20 68 68 76 5f 75 70 3b 0a 20 20 20 20 20 20 48 20 3d 20 48 5f 75 70 3b 0a 20 20 20 20 20 20 0a | .hhv_up;.......H.=.H_up;........ |
| da40 | 20 20 20 65 6e 64 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 0a 0a 0a 0a 72 65 74 75 72 6e 3b 0a 0a 25 | ...end;.....end;......return;..% |
| da60 | 74 65 73 74 20 6f 66 20 4a 61 63 6f 62 69 61 6e 0a 0a 6d 72 65 70 20 3d 20 48 2a 4d 3b 0a 6d 72 | test.of.Jacobian..mrep.=.H*M;.mr |
| da80 | 65 70 20 3d 20 6d 72 65 70 20 2e 2f 20 28 6f 6e 65 73 28 33 2c 31 29 2a 6d 72 65 70 28 33 2c 3a | ep.=.mrep../.(ones(3,1)*mrep(3,: |
| daa0 | 29 29 3b 0a 0a 6d 5f 65 72 72 20 3d 20 6d 72 65 70 28 31 3a 32 2c 3a 29 20 2d 20 6d 28 31 3a 32 | ));..m_err.=.mrep(1:2,:).-.m(1:2 |
| dac0 | 2c 3a 29 3b 0a 66 69 67 75 72 65 28 38 29 3b 0a 70 6c 6f 74 28 6d 5f 65 72 72 28 31 2c 3a 29 2c | ,:);.figure(8);.plot(m_err(1,:), |
| dae0 | 6d 5f 65 72 72 28 32 2c 3a 29 2c 27 72 2b 27 29 3b 0a 73 74 64 28 6d 5f 65 72 72 27 29 0a 65 20 | m_err(2,:),'r+');.std(m_err').e. |
| db00 | 34 20 63 6f 72 6e 65 72 73 0a 20 20 20 69 6e 64 5f 6f 72 69 67 20 3d 20 28 6e 5f 73 71 5f 78 2b | 4.corners....ind_orig.=.(n_sq_x+ |
| db20 | 31 29 2a 6e 5f 73 71 5f 79 20 2b 20 31 3b 0a 20 20 20 78 6f 72 69 67 20 3d 20 67 72 69 64 5f 70 | 1)*n_sq_y.+.1;....xorig.=.grid_p |
| db40 | 74 73 28 31 2c 69 6e 64 5f 6f 72 69 67 29 3b 0a 20 20 20 79 6f 72 69 67 20 3d 20 67 72 69 64 5f | ts(1,ind_orig);....yorig.=.grid_ |
| db60 | 70 74 73 28 32 2c 69 6e 64 5f 6f 72 69 67 29 3b 0a 20 20 20 64 78 70 6f 73 20 3d 20 6d 65 61 6e | pts(2,ind_orig);....dxpos.=.mean |
| db80 | 28 5b 67 72 69 64 5f 70 74 73 28 3a 2c 69 6e 64 5f 6f 72 69 67 29 20 67 72 69 64 5f 70 74 73 28 | ([grid_pts(:,ind_orig).grid_pts( |
| dba0 | 3a 2c 69 6e 64 5f 6f 72 69 67 2b 31 29 5d 27 29 3b 0a 20 20 20 64 79 70 6f 73 20 3d 20 6d 65 61 | :,ind_orig+1)]');....dypos.=.mea |
| dbc0 | 6e 28 5b 67 72 69 64 5f 70 74 73 28 3a 2c 69 6e 64 5f 6f 72 69 67 29 20 67 72 69 64 5f 70 74 73 | n([grid_pts(:,ind_orig).grid_pts |
| dbe0 | 28 3a 2c 69 6e 64 5f 6f 72 69 67 2d 6e 5f 73 71 5f 78 2d 31 29 5d 27 29 3b 0a 20 20 20 0a 20 20 | (:,ind_orig-n_sq_x-1)]');....... |
| dc00 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 2e 6d 00 | TOOLBOX_calib/comp_distortion.m. |
| dc20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| dc40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| dc60 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| dc80 | 20 20 20 32 31 37 33 20 20 37 30 32 34 30 33 37 33 31 32 20 20 31 32 30 31 31 00 20 00 00 00 00 | ...2173..7024037312..12011...... |
| dca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| dcc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| dce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| dd00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| dd20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| dd40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| dd60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| dd80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| dda0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| ddc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| dde0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| de00 | 66 75 6e 63 74 69 6f 6e 20 5b 78 5f 63 6f 6d 70 5d 20 20 3d 20 63 6f 6d 70 5f 64 69 73 74 6f 72 | function.[x_comp]..=.comp_distor |
| de20 | 74 69 6f 6e 28 78 5f 64 69 73 74 2c 6b 32 29 3b 0a 0a 25 20 20 20 20 20 20 20 5b 78 5f 63 6f 6d | tion(x_dist,k2);..%.......[x_com |
| de40 | 70 5d 20 3d 20 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 28 78 5f 64 69 73 74 2c 6b 32 29 3b | p].=.comp_distortion(x_dist,k2); |
| de60 | 0a 25 20 20 20 20 20 20 20 0a 25 20 20 20 20 20 20 20 63 6f 6d 70 65 6e 73 61 74 65 73 20 74 68 | .%........%.......compensates.th |
| de80 | 65 20 72 61 64 69 61 6c 20 64 69 73 74 6f 72 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 61 6d 65 72 | e.radial.distortion.of.the.camer |
| dea0 | 61 0a 25 20 20 20 20 20 20 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 20 70 6c 61 6e 65 2e 0a 25 20 | a.%.......on.the.image.plane..%. |
| dec0 | 20 20 20 20 20 20 0a 25 20 20 20 20 20 20 20 78 5f 64 69 73 74 20 3a 20 74 68 65 20 69 6d 61 67 | .......%.......x_dist.:.the.imag |
| dee0 | 65 20 70 6f 69 6e 74 73 20 67 6f 74 20 77 69 74 68 6f 75 74 20 63 6f 6e 73 69 64 65 72 69 6e 67 | e.points.got.without.considering |
| df00 | 20 74 68 65 0a 25 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 64 69 61 6c 20 64 69 73 | .the.%................radial.dis |
| df20 | 74 6f 72 74 69 6f 6e 2e 0a 25 20 20 20 20 20 20 20 78 20 3a 20 54 68 65 20 69 6d 61 67 65 20 70 | tortion..%.......x.:.The.image.p |
| df40 | 6c 61 6e 65 20 70 6f 69 6e 74 73 20 61 66 74 65 72 20 63 6f 72 72 65 63 74 69 6f 6e 20 66 6f 72 | lane.points.after.correction.for |
| df60 | 20 74 68 65 20 64 69 73 74 6f 72 74 69 6f 6e 0a 25 20 20 20 20 20 20 20 0a 25 20 20 20 20 20 20 | .the.distortion.%........%...... |
| df80 | 20 78 20 61 6e 64 20 78 5f 64 69 73 74 20 61 72 65 20 32 78 4e 20 61 72 72 61 79 73 0a 25 0a 25 | .x.and.x_dist.are.2xN.arrays.%.% |
| dfa0 | 20 20 20 20 20 20 20 4e 4f 54 45 20 3a 20 54 68 69 73 20 63 6f 6d 70 65 6e 73 61 74 69 6f 6e 20 | .......NOTE.:.This.compensation. |
| dfc0 | 68 61 73 20 74 6f 20 62 65 20 64 6f 6e 65 20 61 66 74 65 72 20 74 68 65 20 73 75 62 73 74 72 61 | has.to.be.done.after.the.substra |
| dfe0 | 63 74 69 6f 6e 0a 25 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 20 74 68 65 20 63 65 6e 74 | ction.%..............of.the.cent |
| e000 | 65 72 20 6f 66 20 70 72 6f 6a 65 63 74 69 6f 6e 2c 20 61 6e 64 20 64 69 76 69 73 69 6f 6e 20 62 | er.of.projection,.and.division.b |
| e020 | 79 20 74 68 65 20 66 6f 63 61 6c 0a 25 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 6e 67 74 | y.the.focal.%..............lengt |
| e040 | 68 2e 0a 25 20 20 20 20 20 20 20 0a 25 20 20 20 20 20 20 20 28 64 6f 20 69 74 20 75 70 20 74 6f | h..%........%.......(do.it.up.to |
| e060 | 20 61 20 73 65 63 6f 6e 64 20 6f 72 64 65 72 20 61 70 70 72 6f 78 69 6d 61 74 69 6f 6e 29 0a 0a | .a.second.order.approximation).. |
| e080 | 5b 74 77 6f 2c 4e 5d 20 3d 20 73 69 7a 65 28 78 5f 64 69 73 74 29 3b 0a 0a 69 66 20 28 74 77 6f | [two,N].=.size(x_dist);..if.(two |
| e0a0 | 20 7e 3d 20 32 20 29 2c 20 0a 20 65 72 72 6f 72 28 27 45 52 52 4f 52 20 3a 20 54 68 65 20 64 69 | .~=.2.),...error('ERROR.:.The.di |
| e0c0 | 6d 65 6e 73 69 6f 6e 20 6f 66 20 74 68 65 20 70 6f 69 6e 74 73 20 73 68 6f 75 6c 64 20 62 65 20 | mension.of.the.points.should.be. |
| e0e0 | 32 78 4e 27 29 3b 0a 65 6e 64 3b 0a 0a 69 66 20 6c 65 6e 67 74 68 28 6b 32 29 20 3e 20 32 2c 0a | 2xN');.end;..if.length(k2).>.2,. |
| e100 | 20 20 20 5b 78 5f 63 6f 6d 70 5d 20 20 3d 20 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 5f 6f | ...[x_comp]..=.comp_distortion_o |
| e120 | 75 6c 75 28 78 5f 64 69 73 74 2c 6b 32 29 3b 0a 65 6c 73 65 0a 20 20 20 0a 72 61 64 69 75 73 5f | ulu(x_dist,k2);.else.....radius_ |
| e140 | 32 3d 20 78 5f 64 69 73 74 28 31 2c 3a 29 2e 5e 32 20 2b 20 78 5f 64 69 73 74 28 32 2c 3a 29 2e | 2=.x_dist(1,:).^2.+.x_dist(2,:). |
| e160 | 5e 32 3b 0a 72 61 64 69 61 6c 5f 64 69 73 74 6f 72 74 69 6f 6e 20 3d 20 31 20 2b 20 6f 6e 65 73 | ^2;.radial_distortion.=.1.+.ones |
| e180 | 28 32 2c 31 29 2a 28 6b 32 20 2a 20 72 61 64 69 75 73 5f 32 29 3b 0a 72 61 64 69 75 73 5f 32 5f | (2,1)*(k2.*.radius_2);.radius_2_ |
| e1a0 | 63 6f 6d 70 20 3d 20 28 78 5f 64 69 73 74 28 31 2c 3a 29 2e 5e 32 20 2b 20 78 5f 64 69 73 74 28 | comp.=.(x_dist(1,:).^2.+.x_dist( |
| e1c0 | 32 2c 3a 29 2e 5e 32 29 20 2e 2f 20 72 61 64 69 61 6c 5f 64 69 73 74 6f 72 74 69 6f 6e 28 31 2c | 2,:).^2)../.radial_distortion(1, |
| e1e0 | 3a 29 3b 0a 72 61 64 69 61 6c 5f 64 69 73 74 6f 72 74 69 6f 6e 20 3d 20 31 20 2b 20 6f 6e 65 73 | :);.radial_distortion.=.1.+.ones |
| e200 | 28 32 2c 31 29 2a 28 6b 32 20 2a 20 72 61 64 69 75 73 5f 32 5f 63 6f 6d 70 29 3b 0a 78 5f 63 6f | (2,1)*(k2.*.radius_2_comp);.x_co |
| e220 | 6d 70 20 3d 20 78 5f 64 69 73 74 20 2e 2f 20 72 61 64 69 61 6c 5f 64 69 73 74 6f 72 74 69 6f 6e | mp.=.x_dist../.radial_distortion |
| e240 | 3b 0a 0a 65 6e 64 3b 0a 0a 25 25 20 46 75 6e 63 74 69 6f 6e 20 63 6f 6d 70 6c 65 74 65 6c 79 20 | ;..end;..%%.Function.completely. |
| e260 | 63 68 65 63 6b 65 64 20 3a 20 49 74 20 77 6f 72 6b 73 20 66 69 6e 65 20 21 21 21 12 69 6e 69 74 | checked.:.It.works.fine.!!!.init |
| e280 | 5f 63 61 6c 69 62 5f 70 61 72 61 6d 2e 6d 00 6d 00 00 03 c8 00 02 35 d3 00 1c 00 0f 6c 6f 61 64 | _calib_param.m.m......5.....load |
| e2a0 | 69 6e 67 5f 63 61 6c 69 62 2e 6d 00 00 00 03 e4 00 02 35 d4 00 20 00 12 4d 75 6c 74 69 5f 43 61 | ing_calib.m.......5.....Multi_Ca |
| e2c0 | 6c 69 62 5f 6f 75 6c 75 2e 6d 00 69 00 00 04 00 00 02 35 d5 00 20 00 12 6d 75 6c 74 69 5f 65 72 | lib_oulu.m.i......5.....multi_er |
| e2e0 | 72 6f 72 5f 6f 75 6c 75 2e 6d 00 75 00 00 04 14 00 02 35 d6 00 18 00 09 70 67 6d 72 65 61 64 2e | ror_oulu.m.u......5.....pgmread. |
| e300 | 6d 00 65 72 00 00 04 2c 00 02 35 d7 00 1c 00 0f 70 72 6f 6a 65 63 74 32 5f 6f 75 6c 75 2e 6d 00 | m.er...,..5.....project2_oulu.m. |
| e320 | 00 00 04 44 00 02 35 d8 00 1c 00 0f 70 72 6f 6a 65 63 74 65 64 47 72 69 64 2e 6d 00 00 00 04 60 | ...D..5.....projectedGrid.m....` |
| e340 | 00 02 35 d9 00 20 00 10 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 2e 6d 00 47 72 69 00 00 04 74 | ..5.....project_points.m.Gri...t |
| e360 | 00 02 35 da 00 18 00 09 72 65 61 64 72 61 73 2e 6d 00 74 5f 00 00 04 94 00 02 35 db 00 24 00 15 | ..5.....readras.m.t_......5..$.. |
| e380 | 72 65 63 6f 6d 70 5f 63 6f 72 6e 65 72 5f 63 61 6c 69 62 2e 6d 00 69 6e 00 00 04 a4 00 02 35 dc | recomp_corner_calib.m.in......5. |
| e3a0 | 00 14 00 06 72 65 63 74 2e 6d 00 63 00 00 04 c0 00 02 35 dd 00 20 00 12 52 65 63 74 61 6e 67 6c | ....rect.m.c......5.....Rectangl |
| e3c0 | 65 32 53 71 75 61 72 65 2e 6d 00 74 00 00 04 dc 00 02 35 de 00 20 00 11 72 65 70 72 6f 6a 65 63 | e2Square.m.t......5.....reprojec |
| e3e0 | 74 5f 63 61 6c 69 62 2e 6d 00 72 65 00 00 04 f0 00 02 35 df 00 18 00 0b 72 6f 64 72 69 67 75 65 | t_calib.m.re......5.....rodrigue |
| e400 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 32 2e 6d | TOOLBOX_calib/comp_distortion2.m |
| e420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| e440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| e460 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| e480 | 20 20 20 32 37 31 34 20 20 37 30 32 34 30 33 37 33 31 33 20 20 31 32 30 37 35 00 20 00 00 00 00 | ...2714..7024037313..12075...... |
| e4a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| e4c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| e4e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| e500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| e520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| e540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| e560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| e580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| e5a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| e5c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| e5e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| e600 | 66 75 6e 63 74 69 6f 6e 20 5b 78 5f 63 6f 6d 70 5d 20 20 3d 20 63 6f 6d 70 5f 64 69 73 74 6f 72 | function.[x_comp]..=.comp_distor |
| e620 | 74 69 6f 6e 28 78 5f 64 69 73 74 2c 6b 32 29 3b 0a 0a 25 20 20 20 20 20 20 20 5b 78 5f 63 6f 6d | tion(x_dist,k2);..%.......[x_com |
| e640 | 70 5d 20 3d 20 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 28 78 5f 64 69 73 74 2c 6b 32 29 3b | p].=.comp_distortion(x_dist,k2); |
| e660 | 0a 25 20 20 20 20 20 20 20 0a 25 20 20 20 20 20 20 20 63 6f 6d 70 65 6e 73 61 74 65 73 20 74 68 | .%........%.......compensates.th |
| e680 | 65 20 72 61 64 69 61 6c 20 64 69 73 74 6f 72 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 61 6d 65 72 | e.radial.distortion.of.the.camer |
| e6a0 | 61 0a 25 20 20 20 20 20 20 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 20 70 6c 61 6e 65 2e 0a 25 20 | a.%.......on.the.image.plane..%. |
| e6c0 | 20 20 20 20 20 20 0a 25 20 20 20 20 20 20 20 78 5f 64 69 73 74 20 3a 20 74 68 65 20 69 6d 61 67 | .......%.......x_dist.:.the.imag |
| e6e0 | 65 20 70 6f 69 6e 74 73 20 67 6f 74 20 77 69 74 68 6f 75 74 20 63 6f 6e 73 69 64 65 72 69 6e 67 | e.points.got.without.considering |
| e700 | 20 74 68 65 0a 25 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 64 69 61 6c 20 64 69 73 | .the.%................radial.dis |
| e720 | 74 6f 72 74 69 6f 6e 2e 0a 25 20 20 20 20 20 20 20 6b 32 3a 20 52 61 64 69 61 6c 20 64 69 73 74 | tortion..%.......k2:.Radial.dist |
| e740 | 6f 72 74 69 6f 6e 20 66 61 63 74 6f 72 0a 25 0a 25 20 20 20 20 20 20 20 78 20 3a 20 54 68 65 20 | ortion.factor.%.%.......x.:.The. |
| e760 | 69 6d 61 67 65 20 70 6c 61 6e 65 20 70 6f 69 6e 74 73 20 61 66 74 65 72 20 63 6f 72 72 65 63 74 | image.plane.points.after.correct |
| e780 | 69 6f 6e 20 66 6f 72 20 74 68 65 20 64 69 73 74 6f 72 74 69 6f 6e 0a 25 20 20 20 20 20 20 20 0a | ion.for.the.distortion.%........ |
| e7a0 | 25 20 20 20 20 20 20 20 78 20 61 6e 64 20 78 5f 64 69 73 74 20 61 72 65 20 32 78 4e 20 61 72 72 | %.......x.and.x_dist.are.2xN.arr |
| e7c0 | 61 79 73 0a 25 0a 25 20 20 20 20 20 20 20 4e 4f 54 45 20 3a 20 54 68 69 73 20 63 6f 6d 70 65 6e | ays.%.%.......NOTE.:.This.compen |
| e7e0 | 73 61 74 69 6f 6e 20 68 61 73 20 74 6f 20 62 65 20 64 6f 6e 65 20 61 66 74 65 72 20 74 68 65 20 | sation.has.to.be.done.after.the. |
| e800 | 73 75 62 73 74 72 61 63 74 69 6f 6e 0a 25 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 20 74 | substraction.%..............of.t |
| e820 | 68 65 20 63 65 6e 74 65 72 20 6f 66 20 70 72 6f 6a 65 63 74 69 6f 6e 2c 20 61 6e 64 20 64 69 76 | he.center.of.projection,.and.div |
| e840 | 69 73 69 6f 6e 20 62 79 20 74 68 65 20 66 6f 63 61 6c 0a 25 20 20 20 20 20 20 20 20 20 20 20 20 | ision.by.the.focal.%............ |
| e860 | 20 20 6c 65 6e 67 74 68 2e 0a 25 20 20 20 20 20 20 20 0a 25 20 20 53 6f 6c 76 65 20 66 6f 72 20 | ..length..%........%..Solve.for. |
| e880 | 63 75 62 69 63 20 72 6f 6f 74 73 20 75 73 69 6e 67 20 6d 65 74 68 6f 64 20 66 72 6f 6d 20 4e 75 | cubic.roots.using.method.from.Nu |
| e8a0 | 6d 65 72 69 63 61 6c 20 52 65 63 69 70 65 73 20 69 6e 20 43 20 32 6e 64 20 45 64 2e 0a 25 20 20 | merical.Recipes.in.C.2nd.Ed..%.. |
| e8c0 | 70 61 67 65 73 20 31 38 34 2d 31 38 35 2e 0a 0a 0a 25 20 43 61 6c 69 66 6f 72 6e 69 61 20 49 6e | pages.184-185....%.California.In |
| e8e0 | 73 74 69 74 75 74 65 20 6f 66 20 54 65 63 68 6e 6f 6c 6f 67 79 0a 25 20 28 63 29 20 4a 65 61 6e | stitute.of.Technology.%.(c).Jean |
| e900 | 2d 59 76 65 73 20 42 6f 75 67 75 65 74 20 2d 20 41 70 72 69 6c 20 32 37 74 68 2c 20 31 39 39 38 | -Yves.Bouguet.-.April.27th,.1998 |
| e920 | 0a 0a 25 20 66 75 6c 6c 79 20 63 68 65 63 6b 65 64 21 20 4a 59 42 2c 20 61 70 72 69 6c 20 32 37 | ..%.fully.checked!.JYB,.april.27 |
| e940 | 74 68 2c 20 31 39 39 38 20 2d 20 32 61 6d 0a 0a 69 66 20 6b 32 20 7e 3d 20 30 2c 0a 0a 5b 74 77 | th,.1998.-.2am..if.k2.~=.0,..[tw |
| e960 | 6f 2c 4e 5d 20 3d 20 73 69 7a 65 28 78 5f 64 69 73 74 29 3b 0a 0a 69 66 20 28 74 77 6f 20 7e 3d | o,N].=.size(x_dist);..if.(two.~= |
| e980 | 20 32 20 29 2c 20 0a 20 65 72 72 6f 72 28 27 45 52 52 4f 52 20 3a 20 54 68 65 20 64 69 6d 65 6e | .2.),...error('ERROR.:.The.dimen |
| e9a0 | 73 69 6f 6e 20 6f 66 20 74 68 65 20 70 6f 69 6e 74 73 20 73 68 6f 75 6c 64 20 62 65 20 32 78 4e | sion.of.the.points.should.be.2xN |
| e9c0 | 27 29 3b 0a 65 6e 64 3b 0a 0a 0a 70 68 20 3d 20 61 74 61 6e 32 28 78 5f 64 69 73 74 28 32 2c 3a | ');.end;...ph.=.atan2(x_dist(2,: |
| e9e0 | 29 2c 78 5f 64 69 73 74 28 31 2c 3a 29 29 3b 0a 0a 51 20 3d 20 2d 31 2f 28 33 2a 6b 32 29 3b 0a | ),x_dist(1,:));..Q.=.-1/(3*k2);. |
| ea00 | 52 20 3d 20 2d 78 5f 64 69 73 74 28 31 2c 3a 29 2e 2f 28 32 2a 6b 32 2a 63 6f 73 28 70 68 29 29 | R.=.-x_dist(1,:)./(2*k2*cos(ph)) |
| ea20 | 3b 0a 0a 52 32 20 3d 20 52 2e 5e 32 3b 0a 51 33 20 3d 20 51 5e 33 3b 0a 0a 0a 69 66 20 6b 32 20 | ;..R2.=.R.^2;.Q3.=.Q^3;...if.k2. |
| ea40 | 3c 20 30 2c 0a 20 20 20 0a 20 20 20 25 20 74 68 69 73 20 77 6f 72 6b 73 20 69 6e 20 61 6c 6c 20 | <.0,........%.this.works.in.all. |
| ea60 | 70 72 61 63 74 69 63 61 6c 20 73 69 74 75 61 74 69 6f 6e 73 20 28 69 74 20 73 74 61 72 74 73 20 | practical.situations.(it.starts. |
| ea80 | 66 61 69 6c 69 6e 67 20 66 6f 72 20 76 65 72 79 20 6c 61 72 67 65 0a 20 20 20 25 20 76 61 6c 75 | failing.for.very.large....%.valu |
| eaa0 | 65 73 20 6f 66 20 6b 32 29 0a 20 20 20 20 20 20 0a 20 20 20 74 68 20 3d 20 61 63 6f 73 28 52 2e | es.of.k2)...........th.=.acos(R. |
| eac0 | 2f 73 71 72 74 28 51 33 29 29 3b 0a 20 20 20 72 20 3d 20 2d 32 2a 73 71 72 74 28 51 29 2a 63 6f | /sqrt(Q3));....r.=.-2*sqrt(Q)*co |
| eae0 | 73 28 28 74 68 2d 32 2a 70 69 29 2f 33 29 3b 0a 0a 65 6c 73 65 0a 20 20 20 0a 20 20 20 25 20 6e | s((th-2*pi)/3);..else........%.n |
| eb00 | 6f 74 65 3a 20 74 68 69 73 20 61 6c 77 61 79 73 20 77 6f 72 6b 73 2c 20 65 76 65 6e 20 66 6f 72 | ote:.this.always.works,.even.for |
| eb20 | 20 72 69 64 69 63 75 6c 6f 75 73 20 76 61 6c 75 65 73 20 6f 66 20 6b 32 0a 20 20 20 0a 20 20 20 | .ridiculous.values.of.k2........ |
| eb40 | 41 20 3d 20 28 73 71 72 74 28 52 32 2d 51 33 29 2d 52 29 2e 5e 28 31 2f 33 29 3b 20 0a 20 20 20 | A.=.(sqrt(R2-Q3)-R).^(1/3);..... |
| eb60 | 42 20 3d 20 51 2a 28 31 2e 2f 41 29 3b 0a 20 20 20 72 20 3d 20 28 41 2b 42 29 3b 0a 20 20 0a 65 | B.=.Q*(1./A);....r.=.(A+B);....e |
| eb80 | 6e 64 3b 0a 0a 78 5f 63 6f 6d 70 20 3d 20 5b 72 2e 2a 63 6f 73 28 70 68 29 3b 20 72 2e 2a 73 69 | nd;..x_comp.=.[r.*cos(ph);.r.*si |
| eba0 | 6e 28 70 68 29 5d 3b 0a 0a 65 6c 73 65 0a 20 20 20 0a 20 20 20 78 5f 63 6f 6d 70 20 3d 20 78 5f | n(ph)];..else........x_comp.=.x_ |
| ebc0 | 64 69 73 74 3b 0a 0a 65 6e 64 3b 0a 6c 6f 61 64 70 70 6d 2e 6d 00 61 64 00 00 06 b4 00 02 36 ae | dist;..end;.loadppm.m.ad......6. |
| ebe0 | 00 18 00 09 73 61 76 65 69 6e 72 2e 6d 00 61 64 00 00 06 c8 00 02 36 af 00 18 00 09 73 61 76 65 | ....saveinr.m.ad......6.....save |
| ec00 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 5f 6f 75 | TOOLBOX_calib/comp_distortion_ou |
| ec20 | 6c 75 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | lu.m............................ |
| ec40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| ec60 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| ec80 | 20 20 20 32 32 32 33 20 20 37 30 32 34 30 33 37 33 31 34 20 20 31 33 30 35 33 00 20 00 00 00 00 | ...2223..7024037314..13053...... |
| eca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| ecc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| ece0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| ed00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| ed20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| ed40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| ed60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| ed80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| eda0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| edc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| ede0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| ee00 | 66 75 6e 63 74 69 6f 6e 20 5b 78 5d 20 3d 20 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 5f 6f | function.[x].=.comp_distortion_o |
| ee20 | 75 6c 75 28 78 64 2c 6b 29 3b 0a 0a 25 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 5f 6f 75 6c | ulu(xd,k);..%comp_distortion_oul |
| ee40 | 75 2e 6d 0a 25 0a 25 5b 78 5d 20 3d 20 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 5f 6f 75 6c | u.m.%.%[x].=.comp_distortion_oul |
| ee60 | 75 28 78 64 2c 6b 29 0a 25 0a 25 43 6f 6d 70 65 6e 73 61 74 65 73 20 66 6f 72 20 72 61 64 69 61 | u(xd,k).%.%Compensates.for.radia |
| ee80 | 6c 20 61 6e 64 20 74 61 6e 67 65 6e 74 69 61 6c 20 64 69 73 74 6f 72 74 69 6f 6e 2e 20 4d 6f 64 | l.and.tangential.distortion..Mod |
| eea0 | 65 6c 20 46 72 6f 6d 20 4f 75 6c 75 20 75 6e 69 76 65 72 73 69 74 79 2e 0a 25 46 6f 72 20 6d 6f | el.From.Oulu.university..%For.mo |
| eec0 | 72 65 20 69 6e 66 6f 72 6d 61 74 69 6e 6f 20 61 62 6f 75 74 20 74 68 65 20 64 69 73 74 6f 72 74 | re.informatino.about.the.distort |
| eee0 | 69 6f 6e 20 6d 6f 64 65 6c 2c 20 63 68 65 63 6b 20 74 68 65 20 66 6f 72 77 61 72 64 20 70 72 6f | ion.model,.check.the.forward.pro |
| ef00 | 6a 65 63 74 69 6f 6e 20 6d 61 70 70 69 6e 67 20 66 75 6e 63 74 69 6f 6e 3a 0a 25 70 72 6f 6a 65 | jection.mapping.function:.%proje |
| ef20 | 63 74 5f 70 6f 69 6e 74 73 2e 6d 0a 25 0a 25 49 4e 50 55 54 3a 20 78 64 3a 20 64 69 73 74 6f 72 | ct_points.m.%.%INPUT:.xd:.distor |
| ef40 | 74 65 64 20 28 6e 6f 72 6d 61 6c 69 7a 65 64 29 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 | ted.(normalized).point.coordinat |
| ef60 | 65 73 20 69 6e 20 74 68 65 20 69 6d 61 67 65 20 70 6c 61 6e 65 20 28 32 78 4e 20 6d 61 74 72 69 | es.in.the.image.plane.(2xN.matri |
| ef80 | 78 29 0a 25 20 20 20 20 20 20 20 6b 3a 20 44 69 73 74 6f 72 74 69 6f 6e 20 63 6f 65 66 66 69 63 | x).%.......k:.Distortion.coeffic |
| efa0 | 69 65 6e 74 73 20 28 72 61 64 69 61 6c 20 61 6e 64 20 74 61 6e 67 65 6e 74 69 61 6c 29 20 28 34 | ients.(radial.and.tangential).(4 |
| efc0 | 78 31 20 76 65 63 74 6f 72 29 0a 25 0a 25 4f 55 54 50 55 54 3a 20 78 3a 20 75 6e 64 69 73 74 6f | x1.vector).%.%OUTPUT:.x:.undisto |
| efe0 | 72 74 65 64 20 28 6e 6f 72 6d 61 6c 69 7a 65 64 29 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 | rted.(normalized).point.coordina |
| f000 | 74 65 73 20 69 6e 20 74 68 65 20 69 6d 61 67 65 20 70 6c 61 6e 65 20 28 32 78 4e 20 6d 61 74 72 | tes.in.the.image.plane.(2xN.matr |
| f020 | 69 78 29 0a 25 0a 25 4d 65 74 68 6f 64 3a 20 49 74 65 72 61 74 69 76 65 20 6d 65 74 68 6f 64 20 | ix).%.%Method:.Iterative.method. |
| f040 | 66 6f 72 20 63 6f 6d 70 65 6e 73 61 74 69 6f 6e 2e 0a 25 0a 25 4e 4f 54 45 3a 20 54 68 69 73 20 | for.compensation..%.%NOTE:.This. |
| f060 | 63 6f 6d 70 65 6e 73 61 74 69 6f 6e 20 68 61 73 20 74 6f 20 62 65 20 64 6f 6e 65 20 61 66 74 65 | compensation.has.to.be.done.afte |
| f080 | 72 20 74 68 65 20 73 75 62 74 72 61 63 74 69 6f 6e 0a 25 20 20 20 20 20 20 6f 66 20 74 68 65 20 | r.the.subtraction.%......of.the. |
| f0a0 | 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 2c 20 61 6e 64 20 64 69 76 69 73 69 6f 6e 20 62 79 | principal.point,.and.division.by |
| f0c0 | 20 74 68 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 2e 0a 0a 0a 69 66 20 6c 65 6e 67 74 68 28 6b | .the.focal.length....if.length(k |
| f0e0 | 29 20 3c 20 34 2c 0a 20 20 20 0a 20 20 20 5b 78 5d 20 3d 20 63 6f 6d 70 5f 64 69 73 74 6f 72 74 | ).<.4,........[x].=.comp_distort |
| f100 | 69 6f 6e 28 78 64 2c 6b 29 3b 0a 20 20 20 0a 65 6c 73 65 0a 20 20 20 0a 20 20 20 0a 20 20 20 6b | ion(xd,k);.....else............k |
| f120 | 31 20 3d 20 6b 28 31 29 3b 0a 20 20 20 6b 32 20 3d 20 6b 28 32 29 3b 0a 20 20 20 70 31 20 3d 20 | 1.=.k(1);....k2.=.k(2);....p1.=. |
| f140 | 6b 28 33 29 3b 0a 20 20 20 70 32 20 3d 20 6b 28 34 29 3b 0a 20 20 20 0a 20 20 20 78 20 3d 20 78 | k(3);....p2.=.k(4);........x.=.x |
| f160 | 64 3b 20 09 09 09 09 25 20 69 6e 69 74 69 61 6c 20 67 75 65 73 73 0a 20 20 20 0a 20 20 20 66 6f | d;.....%.initial.guess........fo |
| f180 | 72 20 6b 6b 3d 31 3a 35 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 72 5f 32 20 3d 20 73 75 6d | r.kk=1:5;..............r_2.=.sum |
| f1a0 | 28 78 2e 5e 32 29 3b 0a 20 20 20 20 20 20 6b 5f 72 61 64 69 61 6c 20 3d 20 20 31 20 2b 20 6b 31 | (x.^2);.......k_radial.=..1.+.k1 |
| f1c0 | 20 2a 20 72 5f 32 20 2b 20 6b 32 20 2a 20 72 5f 32 2e 5e 32 3b 0a 20 20 20 20 20 20 64 65 6c 74 | .*.r_2.+.k2.*.r_2.^2;.......delt |
| f1e0 | 61 5f 78 20 3d 20 5b 32 2a 70 31 2a 78 28 31 2c 3a 29 2e 2a 78 28 32 2c 3a 29 20 2b 20 70 32 2a | a_x.=.[2*p1*x(1,:).*x(2,:).+.p2* |
| f200 | 28 72 5f 32 20 2b 20 32 2a 78 28 31 2c 3a 29 2e 5e 32 29 20 3b 0a 09 20 20 20 20 70 31 20 2a 20 | (r_2.+.2*x(1,:).^2).;......p1.*. |
| f220 | 28 72 5f 32 20 2b 20 32 2a 78 28 32 2c 3a 29 2e 5e 32 29 2b 32 2a 70 32 2a 78 28 31 2c 3a 29 2e | (r_2.+.2*x(2,:).^2)+2*p2*x(1,:). |
| f240 | 2a 78 28 32 2c 3a 29 5d 3b 0a 20 20 20 20 20 20 78 20 3d 20 28 78 64 20 2d 20 64 65 6c 74 61 5f | *x(2,:)];.......x.=.(xd.-.delta_ |
| f260 | 78 29 2e 2f 28 6f 6e 65 73 28 32 2c 31 29 2a 6b 5f 72 61 64 69 61 6c 29 3b 0a 20 20 20 20 20 20 | x)./(ones(2,1)*k_radial);....... |
| f280 | 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a c8 00 02 36 a4 00 28 00 1a 73 65 6c 65 | ....end;.....end;.....6..(..sele |
| f2a0 | 63 74 5f 73 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 65 72 33 44 2e 6d 00 a4 00 00 05 dc 00 02 36 a5 | ct_sol_with_center3D.m........6. |
| f2c0 | 00 18 00 09 73 74 61 72 74 75 70 2e 6d 00 6e 74 00 00 05 f0 00 02 36 a6 00 18 00 09 74 65 73 74 | ....startup.m.nt......6.....test |
| f2e0 | 5f 33 64 2e 6d 00 61 72 00 00 06 00 00 02 33 c0 00 14 00 06 69 73 33 44 2e 6d 00 09 00 00 06 1c | _3d.m.ar......3.....is3D.m...... |
| f300 | 00 02 36 a7 00 20 00 11 75 6e 64 69 73 74 6f 72 74 5f 69 6d 61 67 65 2e 6d 00 00 09 00 00 06 34 | ..6.....undistort_image.m......4 |
| f320 | 00 02 36 a8 00 1c 00 0d 55 6e 57 61 72 70 50 6c 61 6e 65 2e 6d 00 65 2e 00 00 06 48 00 02 36 a9 | ..6.....UnWarpPlane.m.e....H..6. |
| f340 | 00 18 00 0a 77 72 69 74 65 72 61 73 2e 6d 00 6c 00 00 06 64 00 02 36 aa 00 20 00 10 65 72 72 6f | ....writeras.m.l...d..6.....erro |
| f360 | 72 5f 61 6e 61 6c 79 73 69 73 2e 6d 00 6d 00 6c 00 00 06 78 00 02 36 ab 00 18 00 09 6c 6f 61 64 | r_analysis.m.m.l...x..6.....load |
| f380 | 69 6e 72 2e 6d 00 79 73 00 00 06 8c 00 02 36 ac 00 18 00 09 6c 6f 61 64 70 67 6d 2e 6d 00 61 64 | inr.m.ys......6.....loadpgm.m.ad |
| f3a0 | 00 00 06 a0 00 02 36 ad 00 18 00 09 6c 6f 61 64 70 70 6d 2e 6d 00 61 64 00 00 06 b4 00 02 36 ae | ......6.....loadppm.m.ad......6. |
| f3c0 | 00 18 00 09 73 61 76 65 69 6e 72 2e 6d 00 61 64 00 00 06 c8 00 02 36 af 00 18 00 09 73 61 76 65 | ....saveinr.m.ad......6.....save |
| f3e0 | 70 67 6d 2e 6d 00 76 65 00 00 06 dc 00 02 36 b0 00 18 00 09 73 61 76 65 70 70 6d 2e 6d 00 76 65 | pgm.m.ve......6.....saveppm.m.ve |
| f400 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6f 6d 70 5f 65 72 72 6f 72 5f 63 61 6c 69 62 2e 6d | TOOLBOX_calib/comp_error_calib.m |
| f420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| f440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| f460 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| f480 | 20 20 20 31 37 37 36 20 20 37 30 32 34 30 33 37 33 31 34 20 20 31 32 31 31 30 00 20 00 00 00 00 | ...1776..7024037314..12110...... |
| f4a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| f4c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| f4e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| f500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| f520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| f540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| f560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| f580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| f5a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| f5c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| f5e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| f600 | 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 52 45 43 4f 4d 50 55 54 45 53 20 | %%%%%%%%%%%%%%%%%%%%.RECOMPUTES. |
| f620 | 54 48 45 20 52 45 50 52 4f 4a 45 43 54 49 4f 4e 20 45 52 52 4f 52 20 25 25 25 25 25 25 25 25 25 | THE.REPROJECTION.ERROR.%%%%%%%%% |
| f640 | 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 0a 0a 63 68 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d | %%%%%%%%%%%%%%%..check_active_im |
| f660 | 61 67 65 73 3b 0a 0a 25 20 52 65 70 72 6f 6a 65 63 74 20 74 68 65 20 70 61 74 74 65 72 6e 73 20 | ages;..%.Reproject.the.patterns. |
| f680 | 6f 6e 20 74 68 65 20 69 6d 61 67 65 73 2c 20 61 6e 64 20 63 6f 6d 70 75 74 65 20 74 68 65 20 70 | on.the.images,.and.compute.the.p |
| f6a0 | 69 78 65 6c 20 65 72 72 6f 72 73 3a 0a 0a 65 78 20 3d 20 5b 5d 3b 20 25 20 47 6c 6f 62 61 6c 20 | ixel.errors:..ex.=.[];.%.Global. |
| f6c0 | 65 72 72 6f 72 20 76 65 63 74 6f 72 0a 78 20 3d 20 5b 5d 3b 20 25 20 44 65 74 65 63 74 65 64 20 | error.vector.x.=.[];.%.Detected. |
| f6e0 | 63 6f 72 6e 65 72 73 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 20 70 6c 61 6e 65 0a 79 20 3d 20 5b | corners.on.the.image.plane.y.=.[ |
| f700 | 5d 3b 20 25 20 52 65 70 72 6f 6a 65 63 74 65 64 20 70 6f 69 6e 74 73 0a 0a 66 6f 72 20 6b 6b 20 | ];.%.Reprojected.points..for.kk. |
| f720 | 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 6f 6d 63 6b 6b 20 3d | =.1:n_ima,........eval(['omckk.= |
| f740 | 20 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 65 76 61 | .omc_'.num2str(kk).';']);....eva |
| f760 | 6c 28 5b 27 54 63 6b 6b 20 3d 20 54 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d | l(['Tckk.=.Tc_'.num2str(kk).';'] |
| f780 | 29 3b 20 20 20 0a 20 20 20 0a 20 20 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b | );...........if.active_images(kk |
| f7a0 | 29 20 26 20 28 7e 69 73 6e 61 6e 28 6f 6d 63 6b 6b 28 31 2c 31 29 29 29 2c 0a 20 20 20 20 20 20 | ).&.(~isnan(omckk(1,1))),....... |
| f7c0 | 0a 20 20 20 20 20 20 52 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 6b 6b 29 3b 0a 20 | .......Rkk.=.rodrigues(omckk);.. |
| f7e0 | 20 20 20 20 20 0a 20 20 20 20 20 20 65 76 61 6c 28 5b 27 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b | ............eval(['y_'.num2str(k |
| f800 | 6b 29 20 27 20 20 3d 20 70 72 6f 6a 65 63 74 32 5f 6f 75 6c 75 28 58 5f 27 20 6e 75 6d 32 73 74 | k).'..=.project2_oulu(X_'.num2st |
| f820 | 72 28 6b 6b 29 20 27 2c 52 6b 6b 2c 54 63 6b 6b 2c 66 63 2c 63 63 2c 6b 63 29 3b 27 5d 29 3b 0a | r(kk).',Rkk,Tckk,fc,cc,kc);']);. |
| f840 | 20 20 20 20 20 20 0a 20 20 20 20 20 20 65 76 61 6c 28 5b 27 65 78 5f 27 20 6e 75 6d 32 73 74 72 | .............eval(['ex_'.num2str |
| f860 | 28 6b 6b 29 20 27 20 3d 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 2d 79 5f 27 20 | (kk).'.=.x_'.num2str(kk).'.-y_'. |
| f880 | 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 | num2str(kk).';']);.............. |
| f8a0 | 65 76 61 6c 28 5b 27 78 5f 6b 6b 20 3d 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b | eval(['x_kk.=.x_'.num2str(kk).'; |
| f8c0 | 27 5d 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 65 76 61 6c 28 5b 27 65 78 20 3d 20 5b 65 | ']);..............eval(['ex.=.[e |
| f8e0 | 78 20 65 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 5d 3b 27 5d 29 3b 0a 20 20 20 20 20 | x.ex_'.num2str(kk).'];']);...... |
| f900 | 20 65 76 61 6c 28 5b 27 78 20 3d 20 5b 78 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 | .eval(['x.=.[x.x_'.num2str(kk).' |
| f920 | 5d 3b 27 5d 29 3b 0a 20 20 20 20 20 20 65 76 61 6c 28 5b 27 79 20 3d 20 5b 79 20 79 5f 27 20 6e | ];']);.......eval(['y.=.[y.y_'.n |
| f940 | 75 6d 32 73 74 72 28 6b 6b 29 20 27 5d 3b 27 5d 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6c 73 | um2str(kk).'];']);...........els |
| f960 | 65 0a 20 20 20 20 20 20 0a 20 20 20 09 65 76 61 6c 28 5b 27 79 5f 27 20 6e 75 6d 32 73 74 72 28 | e............eval(['y_'.num2str( |
| f980 | 6b 6b 29 20 27 20 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 32 2c 31 29 3b 27 5d 29 3b 0a 0a 09 20 20 | kk).'..=.NaN*ones(2,1);']);..... |
| f9a0 | 20 65 76 61 6c 28 5b 27 65 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e | .eval(['ex_'.num2str(kk).'.=.NaN |
| f9c0 | 2a 6f 6e 65 73 28 32 2c 31 29 3b 27 5d 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a 20 | *ones(2,1);']);...........end;.. |
| f9e0 | 20 20 0a 65 6e 64 3b 0a 0a 65 72 72 5f 73 74 64 20 3d 20 73 74 64 28 65 78 27 29 27 3b 0a 36 a1 | ...end;..err_std.=.std(ex')';.6. |
| fa00 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6f 72 6e 65 72 66 69 6e 64 65 72 2e 6d 00 00 00 00 | TOOLBOX_calib/cornerfinder.m.... |
| fa20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| fa40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| fa60 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| fa80 | 20 20 31 31 33 33 31 20 20 37 30 32 34 30 33 37 33 31 36 20 20 31 31 32 37 35 00 20 00 00 00 00 | ..11331..7024037316..11275...... |
| faa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| fac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| fae0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| fb00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| fb20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| fb40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| fb60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| fb80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| fba0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| fbc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| fbe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| fc00 | 66 75 6e 63 74 69 6f 6e 20 5b 78 63 2c 67 6f 6f 64 2c 62 61 64 2c 74 79 70 65 5d 20 3d 20 63 6f | function.[xc,good,bad,type].=.co |
| fc20 | 72 6e 65 72 66 69 6e 64 65 72 28 78 74 2c 49 2c 77 69 6e 74 78 2c 77 69 6e 74 79 2c 77 78 32 2c | rnerfinder(xt,I,wintx,winty,wx2, |
| fc40 | 77 79 32 29 3b 0a 0a 25 5b 78 63 5d 20 3d 20 63 6f 72 6e 65 72 66 69 6e 64 65 72 28 78 74 2c 49 | wy2);..%[xc].=.cornerfinder(xt,I |
| fc60 | 29 3b 0a 25 0a 25 46 69 6e 64 73 20 74 68 65 20 73 75 62 2d 70 69 78 65 6c 20 63 6f 72 6e 65 72 | );.%.%Finds.the.sub-pixel.corner |
| fc80 | 73 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 20 49 20 77 69 74 68 20 69 6e 69 74 69 61 6c 20 67 75 | s.on.the.image.I.with.initial.gu |
| fca0 | 65 73 73 20 78 74 0a 25 78 74 20 61 6e 64 20 78 63 20 61 72 65 20 32 78 4e 20 6d 61 74 72 69 63 | ess.xt.%xt.and.xc.are.2xN.matric |
| fcc0 | 65 73 2e 20 54 68 65 20 66 69 72 73 74 20 63 6f 6d 70 6f 6e 65 6e 74 20 69 73 20 74 68 65 20 78 | es..The.first.component.is.the.x |
| fce0 | 20 63 6f 6f 72 64 69 6e 61 74 65 0a 25 28 68 6f 72 69 7a 6f 6e 74 61 6c 29 20 61 6e 64 20 74 68 | .coordinate.%(horizontal).and.th |
| fd00 | 65 20 73 65 63 6f 6e 64 20 63 6f 6d 70 6f 6e 65 6e 74 20 69 73 20 74 68 65 20 79 20 63 6f 6f 72 | e.second.component.is.the.y.coor |
| fd20 | 64 69 6e 61 74 65 20 28 76 65 72 74 69 63 61 6c 29 0a 25 20 0a 25 42 61 73 65 64 20 6f 6e 20 48 | dinate.(vertical).%..%Based.on.H |
| fd40 | 61 72 72 69 73 20 63 6f 72 6e 65 72 20 66 69 6e 64 65 72 20 6d 65 74 68 6f 64 0a 25 0a 25 46 69 | arris.corner.finder.method.%.%Fi |
| fd60 | 6e 64 73 20 63 6f 72 6e 65 72 73 20 74 6f 20 61 20 70 72 65 63 69 73 69 6f 6e 20 62 65 6c 6f 77 | nds.corners.to.a.precision.below |
| fd80 | 20 2e 31 20 70 69 78 65 6c 21 0a 25 4f 63 74 2e 20 31 34 74 68 2c 20 31 39 39 37 20 2d 20 55 50 | ..1.pixel!.%Oct..14th,.1997.-.UP |
| fda0 | 44 41 54 45 44 20 74 6f 20 77 6f 72 6b 20 77 69 74 68 20 76 65 72 74 69 63 61 6c 20 61 6e 64 20 | DATED.to.work.with.vertical.and. |
| fdc0 | 68 6f 72 69 7a 6f 6e 74 61 6c 20 65 64 67 65 73 20 61 73 20 77 65 6c 6c 21 21 21 0a 25 53 65 70 | horizontal.edges.as.well!!!.%Sep |
| fde0 | 74 20 31 39 39 38 20 2d 20 55 50 44 41 54 45 44 20 74 6f 20 68 61 6e 64 6c 65 20 64 69 76 65 72 | t.1998.-.UPDATED.to.handle.diver |
| fe00 | 67 65 64 20 70 6f 69 6e 74 73 3a 20 77 65 20 6b 65 65 70 20 74 68 65 20 6f 72 69 67 69 6e 61 6c | ged.points:.we.keep.the.original |
| fe20 | 20 70 6f 69 6e 74 73 0a 25 67 6f 6f 64 20 69 73 20 61 20 62 69 6e 61 72 79 20 76 65 63 74 6f 72 | .points.%good.is.a.binary.vector |
| fe40 | 20 69 6e 64 69 63 61 74 69 6e 67 20 77 65 74 68 65 72 20 61 20 66 65 61 74 75 72 65 20 70 6f 69 | .indicating.wether.a.feature.poi |
| fe60 | 6e 74 20 68 61 73 20 62 65 65 6e 20 70 72 6f 70 65 72 6c 79 0a 25 66 6f 75 6e 64 2e 0a 25 0a 25 | nt.has.been.properly.%found..%.% |
| fe80 | 41 64 64 20 61 20 7a 65 72 6f 20 7a 6f 6e 65 20 6f 66 20 73 69 7a 65 20 77 78 32 2c 77 79 32 0a | Add.a.zero.zone.of.size.wx2,wy2. |
| fea0 | 25 4a 75 6c 79 20 31 35 74 68 2c 20 31 39 39 39 20 2d 20 42 75 67 20 6f 6e 20 74 68 65 20 6d 61 | %July.15th,.1999.-.Bug.on.the.ma |
| fec0 | 73 6b 20 62 75 69 6c 64 69 6e 67 2e 2e 2e 20 66 69 78 65 64 20 2b 20 63 68 61 6e 67 65 20 74 6f | sk.building....fixed.+.change.to |
| fee0 | 20 47 61 75 73 73 69 61 6e 20 6d 61 73 6b 20 77 69 74 68 20 68 69 67 68 65 72 0a 25 72 65 73 6f | .Gaussian.mask.with.higher.%reso |
| ff00 | 6c 75 74 69 6f 6e 20 61 6e 64 20 6c 61 72 67 65 72 20 6e 75 6d 62 65 72 20 6f 66 20 69 74 65 72 | lution.and.larger.number.of.iter |
| ff20 | 61 74 69 6f 6e 73 2e 0a 0a 0a 25 20 43 61 6c 69 66 6f 72 6e 69 61 20 49 6e 73 74 69 74 75 74 65 | ations....%.California.Institute |
| ff40 | 20 6f 66 20 54 65 63 68 6e 6f 6c 6f 67 79 0a 25 20 28 63 29 20 4a 65 61 6e 2d 59 76 65 73 20 42 | .of.Technology.%.(c).Jean-Yves.B |
| ff60 | 6f 75 67 75 65 74 20 2d 2d 20 4f 63 74 2e 20 31 34 74 68 2c 20 31 39 39 37 0a 0a 0a 0a 6c 69 6e | ouguet.--.Oct..14th,.1997....lin |
| ff80 | 65 5f 66 65 61 74 20 3d 20 31 3b 20 25 20 73 65 74 20 74 6f 20 31 20 74 6f 20 61 6c 6c 6f 77 20 | e_feat.=.1;.%.set.to.1.to.allow. |
| ffa0 | 66 6f 72 20 65 78 74 72 61 63 74 69 6f 6e 20 6f 66 20 6c 69 6e 65 20 66 65 61 74 75 72 65 73 2e | for.extraction.of.line.features. |
| ffc0 | 0a 0a 78 74 20 3d 20 78 74 27 3b 0a 78 74 20 3d 20 66 6c 69 70 6c 72 28 78 74 29 3b 0a 0a 0a 69 | ..xt.=.xt';.xt.=.fliplr(xt);...i |
| ffe0 | 66 20 6e 61 72 67 69 6e 20 3c 20 34 2c 0a 20 20 20 77 69 6e 74 79 20 3d 20 35 3b 0a 20 20 20 69 | f.nargin.<.4,....winty.=.5;....i |
| 10000 | 66 20 6e 61 72 67 69 6e 20 3c 20 33 2c 0a 20 20 20 20 20 20 77 69 6e 74 78 20 3d 20 35 3b 0a 20 | f.nargin.<.3,.......wintx.=.5;.. |
| 10020 | 20 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 0a 69 66 20 6e 61 72 67 69 6e 20 3c 20 36 2c 0a 20 20 20 | ..end;.end;...if.nargin.<.6,.... |
| 10040 | 77 78 32 20 3d 20 2d 31 3b 0a 20 20 20 77 79 32 20 3d 20 2d 31 3b 0a 65 6e 64 3b 0a 0a 0a 25 6d | wx2.=.-1;....wy2.=.-1;.end;...%m |
| 10060 | 61 73 6b 20 3d 20 6f 6e 65 73 28 32 2a 77 69 6e 74 78 2b 31 2c 32 2a 77 69 6e 74 79 2b 31 29 3b | ask.=.ones(2*wintx+1,2*winty+1); |
| 10080 | 0a 6d 61 73 6b 20 3d 20 65 78 70 28 2d 28 28 2d 77 69 6e 74 78 3a 77 69 6e 74 78 29 27 2f 28 77 | .mask.=.exp(-((-wintx:wintx)'/(w |
| 100a0 | 69 6e 74 78 29 29 2e 5e 32 29 20 2a 20 65 78 70 28 2d 28 28 2d 77 69 6e 74 79 3a 77 69 6e 74 79 | intx)).^2).*.exp(-((-winty:winty |
| 100c0 | 29 2f 28 77 69 6e 74 79 29 29 2e 5e 32 29 3b 0a 0a 0a 69 66 20 28 77 78 32 3e 30 29 20 26 20 28 | )/(winty)).^2);...if.(wx2>0).&.( |
| 100e0 | 77 79 32 3e 30 29 2c 0a 20 20 20 69 66 20 28 28 77 69 6e 74 78 20 2d 20 77 78 32 29 3e 3d 32 29 | wy2>0),....if.((wintx.-.wx2)>=2) |
| 10100 | 26 28 28 77 69 6e 74 79 20 2d 20 77 79 32 29 3e 3d 32 29 2c 0a 20 20 20 20 20 20 6d 61 73 6b 28 | &((winty.-.wy2)>=2),.......mask( |
| 10120 | 77 69 6e 74 78 2b 31 2d 77 78 32 3a 77 69 6e 74 78 2b 31 2b 77 78 32 2c 77 69 6e 74 79 2b 31 2d | wintx+1-wx2:wintx+1+wx2,winty+1- |
| 10140 | 77 79 32 3a 77 69 6e 74 79 2b 31 2b 77 79 32 29 3d 20 7a 65 72 6f 73 28 32 2a 77 78 32 2b 31 2c | wy2:winty+1+wy2)=.zeros(2*wx2+1, |
| 10160 | 32 2a 77 79 32 2b 31 29 3b 0a 20 20 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 6f 66 66 78 20 3d 20 5b | 2*wy2+1);....end;.end;..offx.=.[ |
| 10180 | 2d 77 69 6e 74 78 3a 77 69 6e 74 78 5d 27 2a 6f 6e 65 73 28 31 2c 32 2a 77 69 6e 74 79 2b 31 29 | -wintx:wintx]'*ones(1,2*winty+1) |
| 101a0 | 3b 0a 6f 66 66 79 20 3d 20 6f 6e 65 73 28 32 2a 77 69 6e 74 78 2b 31 2c 31 29 2a 5b 2d 77 69 6e | ;.offy.=.ones(2*wintx+1,1)*[-win |
| 101c0 | 74 79 3a 77 69 6e 74 79 5d 3b 0a 0a 72 65 73 6f 6c 75 74 69 6f 6e 20 3d 20 30 2e 30 30 35 3b 0a | ty:winty];..resolution.=.0.005;. |
| 101e0 | 0a 4d 61 78 49 74 65 72 20 3d 20 31 30 3b 0a 0a 5b 6e 78 2c 6e 79 5d 20 3d 20 73 69 7a 65 28 49 | .MaxIter.=.10;..[nx,ny].=.size(I |
| 10200 | 29 3b 0a 4e 20 3d 20 73 69 7a 65 28 78 74 2c 31 29 3b 0a 0a 78 63 20 3d 20 78 74 3b 20 25 20 66 | );.N.=.size(xt,1);..xc.=.xt;.%.f |
| 10220 | 69 72 73 74 20 67 75 65 73 73 2e 2e 2e 20 74 68 65 79 20 64 6f 6e 27 74 20 6d 6f 76 65 20 21 21 | irst.guess....they.don't.move.!! |
| 10240 | 21 0a 0a 74 79 70 65 20 3d 20 7a 65 72 6f 73 28 31 2c 4e 29 3b 0a 0a 0a 66 6f 72 20 69 3d 31 3a | !..type.=.zeros(1,N);...for.i=1: |
| 10260 | 4e 2c 0a 20 20 20 0a 20 20 20 76 5f 65 78 74 72 61 20 3d 20 72 65 73 6f 6c 75 74 69 6f 6e 20 2b | N,........v_extra.=.resolution.+ |
| 10280 | 20 31 3b 20 09 09 25 20 6a 75 73 74 20 6c 61 72 67 65 72 20 74 68 61 6e 20 72 65 73 6f 6c 75 74 | .1;...%.just.larger.than.resolut |
| 102a0 | 69 6f 6e 0a 20 20 20 0a 20 20 20 63 6f 6d 70 74 20 3d 20 30 3b 20 09 09 09 09 25 20 6e 6f 20 69 | ion........compt.=.0;.....%.no.i |
| 102c0 | 74 65 72 61 74 69 6f 6e 20 79 65 74 0a 20 20 20 0a 20 20 20 77 68 69 6c 65 20 28 6e 6f 72 6d 28 | teration.yet........while.(norm( |
| 102e0 | 76 5f 65 78 74 72 61 29 20 3e 20 72 65 73 6f 6c 75 74 69 6f 6e 29 20 26 20 28 63 6f 6d 70 74 3c | v_extra).>.resolution).&.(compt< |
| 10300 | 4d 61 78 49 74 65 72 29 2c 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 63 49 78 20 3d 20 78 63 28 | MaxIter),..............cIx.=.xc( |
| 10320 | 69 2c 31 29 3b 20 09 09 09 25 0a 20 20 20 20 20 20 63 49 79 20 3d 20 78 63 28 69 2c 32 29 3b 20 | i,1);....%.......cIy.=.xc(i,2);. |
| 10340 | 09 09 09 25 20 43 6f 6f 72 64 73 2e 20 6f 66 20 74 68 65 20 70 6f 69 6e 74 0a 20 20 20 20 20 20 | ...%.Coords..of.the.point....... |
| 10360 | 63 72 49 78 20 3d 20 72 6f 75 6e 64 28 63 49 78 29 3b 20 09 09 25 20 6f 6e 20 74 68 65 20 69 6e | crIx.=.round(cIx);...%.on.the.in |
| 10380 | 69 74 69 61 6c 20 69 6d 61 67 65 0a 20 20 20 20 20 20 63 72 49 79 20 3d 20 72 6f 75 6e 64 28 63 | itial.image.......crIy.=.round(c |
| 103a0 | 49 79 29 3b 20 09 09 25 20 20 20 20 20 20 0a 20 20 20 20 20 20 69 74 49 78 20 3d 20 63 49 78 20 | Iy);...%.............itIx.=.cIx. |
| 103c0 | 2d 20 63 72 49 78 3b 20 09 09 25 20 43 6f 65 66 66 69 63 69 65 6e 74 73 0a 20 20 20 20 20 20 69 | -.crIx;...%.Coefficients.......i |
| 103e0 | 74 49 79 20 3d 20 63 49 79 20 2d 20 63 72 49 79 3b 20 09 09 25 20 74 6f 20 63 6f 6d 70 75 74 65 | tIy.=.cIy.-.crIy;...%.to.compute |
| 10400 | 0a 20 20 20 20 20 20 69 66 20 69 74 49 78 20 3e 20 30 2c 20 09 09 09 25 20 74 68 65 20 73 75 62 | .......if.itIx.>.0,....%.the.sub |
| 10420 | 20 70 69 78 65 6c 0a 09 20 76 49 78 20 3d 20 5b 69 74 49 78 20 31 2d 69 74 49 78 20 30 5d 27 3b | .pixel...vIx.=.[itIx.1-itIx.0]'; |
| 10440 | 20 09 25 20 61 63 63 75 72 61 63 79 2e 0a 20 20 20 20 20 20 65 6c 73 65 0a 09 20 76 49 78 20 3d | ..%.accuracy........else...vIx.= |
| 10460 | 20 5b 30 20 31 2b 69 74 49 78 20 2d 69 74 49 78 5d 27 3b 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 | .[0.1+itIx.-itIx]';.......end;.. |
| 10480 | 20 20 20 20 20 69 66 20 69 74 49 79 20 3e 20 30 2c 0a 09 20 76 49 79 20 3d 20 5b 69 74 49 79 20 | .....if.itIy.>.0,...vIy.=.[itIy. |
| 104a0 | 31 2d 69 74 49 79 20 30 5d 3b 0a 20 20 20 20 20 20 65 6c 73 65 0a 09 20 76 49 79 20 3d 20 5b 30 | 1-itIy.0];.......else...vIy.=.[0 |
| 104c0 | 20 31 2b 69 74 49 79 20 2d 69 74 49 79 5d 3b 0a 20 20 20 20 20 20 65 6e 64 3b 0a 0a 20 20 20 20 | .1+itIy.-itIy];.......end;...... |
| 104e0 | 20 20 0a 20 20 20 20 20 20 25 20 57 68 61 74 20 69 66 20 74 68 65 20 73 75 62 20 69 6d 61 67 65 | .........%.What.if.the.sub.image |
| 10500 | 20 69 73 20 6e 6f 74 20 69 6e 3f 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 69 66 20 28 63 72 49 | .is.not.in?..............if.(crI |
| 10520 | 78 2d 77 69 6e 74 78 2d 32 20 3c 20 31 29 2c 20 78 6d 69 6e 3d 31 3b 20 78 6d 61 78 20 3d 20 32 | x-wintx-2.<.1),.xmin=1;.xmax.=.2 |
| 10540 | 2a 77 69 6e 74 78 2b 35 3b 0a 20 20 20 20 20 20 65 6c 73 65 69 66 20 28 63 72 49 78 2b 77 69 6e | *wintx+5;.......elseif.(crIx+win |
| 10560 | 74 78 2b 32 20 3e 20 6e 78 29 2c 20 78 6d 61 78 20 3d 20 6e 78 3b 20 78 6d 69 6e 20 3d 20 6e 78 | tx+2.>.nx),.xmax.=.nx;.xmin.=.nx |
| 10580 | 2d 32 2a 77 69 6e 74 78 2d 34 3b 0a 20 20 20 20 20 20 65 6c 73 65 0a 09 20 78 6d 69 6e 20 3d 20 | -2*wintx-4;.......else...xmin.=. |
| 105a0 | 63 72 49 78 2d 77 69 6e 74 78 2d 32 3b 20 78 6d 61 78 20 3d 20 63 72 49 78 2b 77 69 6e 74 78 2b | crIx-wintx-2;.xmax.=.crIx+wintx+ |
| 105c0 | 32 3b 0a 20 20 20 20 20 20 65 6e 64 3b 0a 0a 20 20 20 20 20 20 69 66 20 28 63 72 49 79 2d 77 69 | 2;.......end;........if.(crIy-wi |
| 105e0 | 6e 74 79 2d 32 20 3c 20 31 29 2c 20 79 6d 69 6e 3d 31 3b 20 79 6d 61 78 20 3d 20 32 2a 77 69 6e | nty-2.<.1),.ymin=1;.ymax.=.2*win |
| 10600 | 74 79 2b 35 3b 0a 20 20 20 20 20 20 65 6c 73 65 69 66 20 28 63 72 49 79 2b 77 69 6e 74 79 2b 32 | ty+5;.......elseif.(crIy+winty+2 |
| 10620 | 20 3e 20 6e 79 29 2c 20 79 6d 61 78 20 3d 20 6e 79 3b 20 79 6d 69 6e 20 3d 20 6e 79 2d 32 2a 77 | .>.ny),.ymax.=.ny;.ymin.=.ny-2*w |
| 10640 | 69 6e 74 79 2d 34 3b 0a 20 20 20 20 20 20 65 6c 73 65 0a 09 20 79 6d 69 6e 20 3d 20 63 72 49 79 | inty-4;.......else...ymin.=.crIy |
| 10660 | 2d 77 69 6e 74 79 2d 32 3b 20 79 6d 61 78 20 3d 20 63 72 49 79 2b 77 69 6e 74 79 2b 32 3b 0a 20 | -winty-2;.ymax.=.crIy+winty+2;.. |
| 10680 | 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 53 49 | .....end;.....................SI |
| 106a0 | 20 3d 20 49 28 78 6d 69 6e 3a 78 6d 61 78 2c 79 6d 69 6e 3a 79 6d 61 78 29 3b 20 25 20 54 68 65 | .=.I(xmin:xmax,ymin:ymax);.%.The |
| 106c0 | 20 6e 65 63 65 73 73 61 72 79 20 6e 65 69 67 68 62 6f 72 68 6f 6f 64 0a 20 20 20 20 20 20 53 49 | .necessary.neighborhood.......SI |
| 106e0 | 20 3d 20 63 6f 6e 76 32 28 63 6f 6e 76 32 28 53 49 2c 76 49 78 2c 27 73 61 6d 65 27 29 2c 76 49 | .=.conv2(conv2(SI,vIx,'same'),vI |
| 10700 | 79 2c 27 73 61 6d 65 27 29 3b 0a 20 20 20 20 20 20 53 49 20 3d 20 53 49 28 32 3a 32 2a 77 69 6e | y,'same');.......SI.=.SI(2:2*win |
| 10720 | 74 78 2b 34 2c 32 3a 32 2a 77 69 6e 74 79 2b 34 29 3b 20 25 20 54 68 65 20 73 75 62 70 69 78 65 | tx+4,2:2*winty+4);.%.The.subpixe |
| 10740 | 6c 20 69 6e 74 65 72 70 6f 6c 61 74 65 64 20 6e 65 69 67 68 62 6f 72 68 6f 6f 64 0a 20 20 20 20 | l.interpolated.neighborhood..... |
| 10760 | 20 20 5b 67 79 2c 67 78 5d 20 3d 20 67 72 61 64 69 65 6e 74 28 53 49 29 3b 20 09 09 25 20 54 68 | ..[gy,gx].=.gradient(SI);...%.Th |
| 10780 | 65 20 67 72 61 64 69 65 6e 74 20 69 6d 61 67 65 0a 20 20 20 20 20 20 67 78 20 3d 20 67 78 28 32 | e.gradient.image.......gx.=.gx(2 |
| 107a0 | 3a 32 2a 77 69 6e 74 78 2b 32 2c 32 3a 32 2a 77 69 6e 74 79 2b 32 29 3b 20 25 20 65 78 74 72 61 | :2*wintx+2,2:2*winty+2);.%.extra |
| 107c0 | 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 75 73 65 66 75 6c 20 70 61 72 74 73 20 6f 6e 6c 79 0a 20 | ction.of.the.useful.parts.only.. |
| 107e0 | 20 20 20 20 20 67 79 20 3d 20 67 79 28 32 3a 32 2a 77 69 6e 74 78 2b 32 2c 32 3a 32 2a 77 69 6e | .....gy.=.gy(2:2*wintx+2,2:2*win |
| 10800 | 74 79 2b 32 29 3b 20 25 20 6f 66 20 74 68 65 20 67 72 61 64 69 65 6e 74 73 0a 20 20 20 20 20 20 | ty+2);.%.of.the.gradients....... |
| 10820 | 0a 20 20 20 20 20 20 70 78 20 3d 20 63 49 78 20 2b 20 6f 66 66 78 3b 0a 20 20 20 20 20 20 70 79 | .......px.=.cIx.+.offx;.......py |
| 10840 | 20 3d 20 63 49 79 20 2b 20 6f 66 66 79 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 67 78 78 20 | .=.cIy.+.offy;..............gxx. |
| 10860 | 3d 20 67 78 20 2e 2a 20 67 78 20 2e 2a 20 6d 61 73 6b 3b 0a 20 20 20 20 20 20 67 79 79 20 3d 20 | =.gx..*.gx..*.mask;.......gyy.=. |
| 10880 | 67 79 20 2e 2a 20 67 79 20 2e 2a 20 6d 61 73 6b 3b 0a 20 20 20 20 20 20 67 78 79 20 3d 20 67 78 | gy..*.gy..*.mask;.......gxy.=.gx |
| 108a0 | 20 2e 2a 20 67 79 20 2e 2a 20 6d 61 73 6b 3b 0a 20 20 20 0a 20 20 20 20 20 20 0a 20 20 20 20 20 | ..*.gy..*.mask;................. |
| 108c0 | 20 62 62 20 3d 20 5b 73 75 6d 28 73 75 6d 28 67 78 78 20 2e 2a 20 70 78 20 2b 20 67 78 79 20 2e | .bb.=.[sum(sum(gxx..*.px.+.gxy.. |
| 108e0 | 2a 20 70 79 29 29 3b 20 73 75 6d 28 73 75 6d 28 67 78 79 20 2e 2a 20 70 78 20 2b 20 67 79 79 20 | *.py));.sum(sum(gxy..*.px.+.gyy. |
| 10900 | 2e 2a 20 70 79 29 29 5d 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 61 20 3d 20 73 75 6d 28 73 | .*.py))];..............a.=.sum(s |
| 10920 | 75 6d 28 67 78 78 29 29 3b 0a 20 20 20 20 20 20 62 20 3d 20 73 75 6d 28 73 75 6d 28 67 78 79 29 | um(gxx));.......b.=.sum(sum(gxy) |
| 10940 | 29 3b 0a 20 20 20 20 20 20 63 20 3d 20 73 75 6d 28 73 75 6d 28 67 79 79 29 29 3b 0a 20 20 20 20 | );.......c.=.sum(sum(gyy));..... |
| 10960 | 20 20 0a 20 20 20 20 20 20 64 74 20 3d 20 61 2a 63 20 2d 20 62 5e 32 3b 0a 20 20 20 20 20 20 0a | .........dt.=.a*c.-.b^2;........ |
| 10980 | 20 20 20 20 20 20 78 63 32 20 3d 20 5b 63 2a 62 62 28 31 29 2d 62 2a 62 62 28 32 29 20 61 2a 62 | ......xc2.=.[c*bb(1)-b*bb(2).a*b |
| 109a0 | 62 28 32 29 2d 62 2a 62 62 28 31 29 5d 2f 64 74 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 0a | b(2)-b*bb(1)]/dt;............... |
| 109c0 | 20 20 20 20 20 20 25 6b 65 79 62 6f 61 72 64 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 69 66 | ......%keyboard;..............if |
| 109e0 | 20 6c 69 6e 65 5f 66 65 61 74 2c 0a 20 20 20 20 20 20 0a 09 20 47 20 3d 20 5b 61 20 62 3b 62 20 | .line_feat,..........G.=.[a.b;b. |
| 10a00 | 63 5d 3b 0a 09 20 5b 55 2c 53 2c 56 5d 20 20 3d 20 73 76 64 28 47 29 3b 0a 09 20 0a 09 20 25 6b | c];...[U,S,V]..=.svd(G);......%k |
| 10a20 | 65 79 62 6f 61 72 64 3b 0a 09 20 0a 09 20 25 20 49 66 20 6e 6f 6e 2d 69 6e 76 65 72 74 69 62 6c | eyboard;......%.If.non-invertibl |
| 10a40 | 65 2c 20 74 68 65 6e 20 70 72 6f 6a 65 63 74 20 74 68 65 20 70 6f 69 6e 74 20 6f 6e 74 6f 20 74 | e,.then.project.the.point.onto.t |
| 10a60 | 68 65 20 65 64 67 65 20 6f 72 74 68 6f 67 6f 6e 61 6c 3a 0a 09 20 0a 09 20 69 66 20 28 53 28 31 | he.edge.orthogonal:......if.(S(1 |
| 10a80 | 2c 31 29 2f 53 28 32 2c 32 29 20 3e 20 35 30 29 2c 0a 09 20 20 20 20 25 20 70 72 6f 6a 65 63 74 | ,1)/S(2,2).>.50),......%.project |
| 10aa0 | 69 6f 6e 20 6f 70 65 72 61 74 69 6f 6e 3a 0a 09 20 20 20 20 78 63 32 20 3d 20 78 63 32 20 2b 20 | ion.operation:......xc2.=.xc2.+. |
| 10ac0 | 73 75 6d 28 28 78 63 28 69 2c 3a 29 2d 78 63 32 29 2e 2a 28 56 28 3a 2c 32 29 27 29 29 2a 56 28 | sum((xc(i,:)-xc2).*(V(:,2)'))*V( |
| 10ae0 | 3a 2c 32 29 27 3b 0a 09 20 20 20 20 74 79 70 65 28 69 29 20 3d 20 31 3b 0a 09 20 65 6e 64 3b 0a | :,2)';......type(i).=.1;...end;. |
| 10b00 | 20 20 20 20 20 20 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 0a | .............end;............... |
| 10b20 | 20 20 20 20 20 20 25 6b 65 79 62 6f 61 72 64 3b 0a 20 20 20 20 20 20 0a 25 20 20 20 20 20 20 47 | ......%keyboard;........%......G |
| 10b40 | 20 3d 20 5b 61 20 62 3b 62 20 63 5d 3b 0a 25 20 20 20 20 20 20 5b 55 2c 53 2c 56 5d 20 20 3d 20 | .=.[a.b;b.c];.%......[U,S,V]..=. |
| 10b60 | 73 76 64 28 47 29 3b 0a 0a 0a 25 20 20 20 20 20 20 69 66 20 53 28 31 2c 31 29 2f 53 28 32 2c 32 | svd(G);...%......if.S(1,1)/S(2,2 |
| 10b80 | 29 20 3e 20 31 35 30 2c 0a 25 09 20 62 62 32 20 3d 20 55 27 2a 62 62 3b 0a 25 09 20 78 63 32 20 | ).>.150,.%..bb2.=.U'*bb;.%..xc2. |
| 10ba0 | 3d 20 28 56 2a 5b 62 62 32 28 31 29 2f 53 28 31 2c 31 29 20 3b 30 5d 29 27 3b 0a 25 20 20 20 20 | =.(V*[bb2(1)/S(1,1).;0])';.%.... |
| 10bc0 | 20 20 65 6c 73 65 0a 25 09 20 78 63 32 20 3d 20 5b 63 2a 62 62 28 31 29 2d 62 2a 62 62 28 32 29 | ..else.%..xc2.=.[c*bb(1)-b*bb(2) |
| 10be0 | 20 61 2a 62 62 28 32 29 2d 62 2a 62 62 28 31 29 5d 2f 64 74 3b 0a 25 20 20 20 20 20 20 65 6e 64 | .a*bb(2)-b*bb(1)]/dt;.%......end |
| 10c00 | 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 25 69 66 20 28 61 62 73 28 61 | ;.....................%if.(abs(a |
| 10c20 | 29 3e 20 35 30 2a 61 62 73 28 63 29 29 2c 0a 25 09 20 78 63 32 20 3d 20 5b 28 63 2a 62 62 28 31 | )>.50*abs(c)),.%..xc2.=.[(c*bb(1 |
| 10c40 | 29 2d 62 2a 62 62 28 32 29 29 2f 64 74 20 78 63 28 69 2c 32 29 5d 3b 0a 25 20 20 20 20 20 20 65 | )-b*bb(2))/dt.xc(i,2)];.%......e |
| 10c60 | 6c 73 65 69 66 20 28 61 62 73 28 63 29 3e 20 35 30 2a 61 62 73 28 61 29 29 0a 25 09 20 78 63 32 | lseif.(abs(c)>.50*abs(a)).%..xc2 |
| 10c80 | 20 3d 20 5b 78 63 28 69 2c 31 29 20 28 61 2a 62 62 28 32 29 2d 62 2a 62 62 28 31 29 29 2f 64 74 | .=.[xc(i,1).(a*bb(2)-b*bb(1))/dt |
| 10ca0 | 5d 3b 0a 25 20 20 20 20 20 20 65 6c 73 65 0a 25 09 20 78 63 32 20 3d 20 5b 63 2a 62 62 28 31 29 | ];.%......else.%..xc2.=.[c*bb(1) |
| 10cc0 | 2d 62 2a 62 62 28 32 29 20 61 2a 62 62 28 32 29 2d 62 2a 62 62 28 31 29 5d 2f 64 74 3b 0a 25 20 | -b*bb(2).a*bb(2)-b*bb(1)]/dt;.%. |
| 10ce0 | 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 25 6b 65 79 62 6f 61 72 64 | .....end;..............%keyboard |
| 10d00 | 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 76 5f 65 78 74 72 61 20 3d 20 78 63 28 69 2c 3a 29 | ;..............v_extra.=.xc(i,:) |
| 10d20 | 20 2d 20 78 63 32 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 78 63 28 69 2c 3a 29 20 3d 20 78 | .-.xc2;..............xc(i,:).=.x |
| 10d40 | 63 32 3b 0a 20 20 20 20 20 20 0a 25 20 20 20 20 20 20 6b 65 79 62 6f 61 72 64 3b 0a 0a 20 20 20 | c2;........%......keyboard;..... |
| 10d60 | 20 20 20 63 6f 6d 70 74 20 3d 20 63 6f 6d 70 74 20 2b 20 31 3b 0a 20 20 20 20 20 20 0a 20 20 20 | ...compt.=.compt.+.1;........... |
| 10d80 | 65 6e 64 0a 65 6e 64 3b 0a 0a 0a 25 20 63 68 65 63 6b 20 66 6f 72 20 70 6f 69 6e 74 73 20 74 68 | end.end;...%.check.for.points.th |
| 10da0 | 61 74 20 64 69 76 65 72 67 65 3a 0a 0a 64 65 6c 74 61 5f 78 20 3d 20 78 63 28 3a 2c 31 29 20 2d | at.diverge:..delta_x.=.xc(:,1).- |
| 10dc0 | 20 78 74 28 3a 2c 31 29 3b 0a 64 65 6c 74 61 5f 79 20 3d 20 78 63 28 3a 2c 32 29 20 2d 20 78 74 | .xt(:,1);.delta_y.=.xc(:,2).-.xt |
| 10de0 | 28 3a 2c 32 29 3b 0a 0a 25 6b 65 79 62 6f 61 72 64 3b 0a 0a 0a 62 61 64 20 3d 20 28 61 62 73 28 | (:,2);..%keyboard;...bad.=.(abs( |
| 10e00 | 64 65 6c 74 61 5f 78 29 20 3e 20 77 69 6e 74 78 29 20 7c 20 28 61 62 73 28 64 65 6c 74 61 5f 79 | delta_x).>.wintx).|.(abs(delta_y |
| 10e20 | 29 20 3e 20 77 69 6e 74 79 29 3b 0a 67 6f 6f 64 20 3d 20 7e 62 61 64 3b 0a 69 6e 5f 62 61 64 20 | ).>.winty);.good.=.~bad;.in_bad. |
| 10e40 | 3d 20 66 69 6e 64 28 62 61 64 29 3b 0a 0a 25 20 46 6f 72 20 74 68 65 20 64 69 76 65 72 67 65 64 | =.find(bad);..%.For.the.diverged |
| 10e60 | 20 70 6f 69 6e 74 73 2c 20 6b 65 65 70 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 67 75 65 73 73 | .points,.keep.the.original.guess |
| 10e80 | 65 73 3a 0a 0a 78 63 28 69 6e 5f 62 61 64 2c 3a 29 20 3d 20 78 74 28 69 6e 5f 62 61 64 2c 3a 29 | es:..xc(in_bad,:).=.xt(in_bad,:) |
| 10ea0 | 3b 0a 0a 78 63 20 3d 20 66 6c 69 70 6c 72 28 78 63 29 3b 0a 78 63 20 3d 20 78 63 27 3b 0a 0a 62 | ;..xc.=.fliplr(xc);.xc.=.xc';..b |
| 10ec0 | 61 64 20 3d 20 62 61 64 27 3b 0a 67 6f 6f 64 20 3d 20 67 6f 6f 64 27 3b 0a 28 32 2c 3a 29 2b 28 | ad.=.bad';.good.=.good';.(2,:)+( |
| 10ee0 | 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2b 28 77 69 6e 74 79 2b 2e | winty+.5);grid_pts(2,:)+(winty+. |
| 10f00 | 35 29 3b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2d 28 77 69 6e 74 79 2b 2e 35 29 5d 3b 0a 0a 20 | 5);grid_pts(2,:)-(winty+.5)];... |
| 10f20 | 20 20 0a 20 20 20 66 69 67 75 72 65 28 33 29 3b 0a 20 20 20 68 6f 6c 64 20 6f 6e 3b 0a 20 20 20 | ......figure(3);....hold.on;.... |
| 10f40 | 70 6c 6f 74 28 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2b 31 2c 67 72 69 64 5f 70 74 73 28 32 2c | plot(grid_pts(1,:)+1,grid_pts(2, |
| 10f60 | 3a 29 2b 31 2c 27 72 2b 27 29 3b 0a 20 20 20 70 6c 6f 74 28 78 5f 62 6f 78 5f 6b 6b 2b 31 2c 79 | :)+1,'r+');....plot(x_box_kk+1,y |
| 10f80 | 5f 62 6f 78 5f 6b 6b 2b 31 2c 27 2d 62 27 29 3b 0a 20 20 20 70 6c 6f 74 28 67 72 69 64 5f 70 74 | _box_kk+1,'-b');....plot(grid_pt |
| 10fa0 | 73 28 31 2c 69 6e 64 5f 63 6f 72 6e 65 72 73 29 2b 31 2c 67 72 69 64 5f 70 74 73 28 32 2c 69 6e | s(1,ind_corners)+1,grid_pts(2,in |
| 10fc0 | 64 5f 63 6f 72 6e 65 72 73 29 2b 31 2c 27 6d 6f 27 29 3b 0a 20 20 20 70 6c 6f 74 28 78 6f 72 69 | d_corners)+1,'mo');....plot(xori |
| 10fe0 | 67 2b 31 2c 79 6f 72 69 67 2b 31 2c 27 2a 6d 27 29 3b 0a 20 20 20 68 20 3d 20 74 65 78 74 28 78 | g+1,yorig+1,'*m');....h.=.text(x |
| 11000 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6f 75 6e 74 5f 73 71 75 61 72 65 73 2e 6d 00 00 00 | TOOLBOX_calib/count_squares.m... |
| 11020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 11040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 11060 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 11080 | 20 20 20 32 32 37 31 20 20 37 30 32 34 30 33 37 33 31 36 20 20 31 31 34 37 33 00 20 00 00 00 00 | ...2271..7024037316..11473...... |
| 110a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 110c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 110e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 11100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 11120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 11140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 11160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 11180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 111a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 111c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 111e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 11200 | 66 75 6e 63 74 69 6f 6e 20 6e 73 20 3d 20 63 6f 75 6e 74 5f 73 71 75 61 72 65 73 28 49 2c 78 31 | function.ns.=.count_squares(I,x1 |
| 11220 | 2c 79 31 2c 78 32 2c 79 32 2c 77 69 6e 29 3b 0a 0a 25 6b 65 79 62 6f 61 72 64 3b 0a 0a 5b 6e 79 | ,y1,x2,y2,win);..%keyboard;..[ny |
| 11240 | 2c 6e 78 5d 20 3d 20 73 69 7a 65 28 49 29 3b 0a 0a 6c 61 6d 62 64 61 20 3d 20 5b 79 31 20 2d 20 | ,nx].=.size(I);..lambda.=.[y1.-. |
| 11260 | 79 32 3b 78 32 20 2d 20 78 31 3b 78 31 2a 79 32 20 2d 20 78 32 2a 79 31 5d 3b 0a 0a 6c 61 6d 62 | y2;x2.-.x1;x1*y2.-.x2*y1];..lamb |
| 11280 | 64 61 20 3d 20 31 2f 73 71 72 74 28 6c 61 6d 62 64 61 28 31 29 5e 32 20 2b 20 6c 61 6d 62 64 61 | da.=.1/sqrt(lambda(1)^2.+.lambda |
| 112a0 | 28 32 29 5e 32 29 20 2a 20 6c 61 6d 62 64 61 3b 0a 0a 6c 31 20 3d 20 6c 61 6d 62 64 61 20 2b 20 | (2)^2).*.lambda;..l1.=.lambda.+. |
| 112c0 | 5b 30 3b 30 3b 77 69 6e 5d 3b 0a 6c 32 20 3d 20 6c 61 6d 62 64 61 20 2d 20 5b 30 3b 30 3b 77 69 | [0;0;win];.l2.=.lambda.-.[0;0;wi |
| 112e0 | 6e 5d 3b 0a 0a 0a 64 78 20 3d 20 78 32 2d 78 31 3b 0a 64 79 20 3d 20 79 32 20 2d 20 79 31 3b 0a | n];...dx.=.x2-x1;.dy.=.y2.-.y1;. |
| 11300 | 0a 0a 69 66 20 61 62 73 28 64 78 29 20 3e 20 61 62 73 28 64 79 29 2c 0a 20 20 20 0a 20 20 20 69 | ..if.abs(dx).>.abs(dy),........i |
| 11320 | 66 20 78 32 20 3e 20 78 31 2c 0a 20 20 20 20 20 20 78 73 20 3d 20 78 31 3a 78 32 3b 0a 20 20 20 | f.x2.>.x1,.......xs.=.x1:x2;.... |
| 11340 | 65 6c 73 65 0a 20 20 20 20 20 20 78 73 20 3d 20 78 31 3a 2d 31 3a 78 32 3b 0a 20 20 20 65 6e 64 | else.......xs.=.x1:-1:x2;....end |
| 11360 | 3b 0a 20 20 20 0a 20 20 20 79 73 20 3d 20 2d 28 6c 61 6d 62 64 61 28 33 29 20 2b 20 6c 61 6d 62 | ;........ys.=.-(lambda(3).+.lamb |
| 11380 | 64 61 28 31 29 2a 78 73 29 2f 6c 61 6d 62 64 61 28 32 29 3b 0a 20 20 20 0a 65 6c 73 65 0a 20 20 | da(1)*xs)/lambda(2);.....else... |
| 113a0 | 20 0a 20 20 20 69 66 20 79 32 20 3e 20 79 31 2c 0a 20 20 20 20 20 20 79 73 20 3d 20 79 31 3a 79 | .....if.y2.>.y1,.......ys.=.y1:y |
| 113c0 | 32 3b 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 79 73 20 3d 20 79 31 3a 2d 31 3a 79 32 3b 0a | 2;....else.......ys.=.y1:-1:y2;. |
| 113e0 | 20 20 20 65 6e 64 3b 0a 20 20 20 78 73 20 3d 20 2d 28 6c 61 6d 62 64 61 28 33 29 20 2b 20 6c 61 | ...end;....xs.=.-(lambda(3).+.la |
| 11400 | 6d 62 64 61 28 32 29 2a 79 73 29 2f 6c 61 6d 62 64 61 28 31 29 3b 0a 20 20 20 0a 65 6e 64 3b 0a | mbda(2)*ys)/lambda(1);.....end;. |
| 11420 | 0a 0a 20 20 20 0a 09 4e 70 20 3d 20 6c 65 6e 67 74 68 28 78 73 29 3b 0a 0a 09 78 73 5f 6d 61 74 | .......Np.=.length(xs);...xs_mat |
| 11440 | 20 3d 20 6f 6e 65 73 28 32 2a 77 69 6e 20 2b 20 31 2c 31 29 2a 78 73 3b 0a 09 79 73 5f 6d 61 74 | .=.ones(2*win.+.1,1)*xs;..ys_mat |
| 11460 | 20 3d 20 6f 6e 65 73 28 32 2a 77 69 6e 20 2b 20 31 2c 31 29 2a 79 73 3b 0a 0a 09 77 69 6e 5f 6d | .=.ones(2*win.+.1,1)*ys;...win_m |
| 11480 | 61 74 20 3d 20 28 2d 77 69 6e 3a 77 69 6e 29 27 2a 6f 6e 65 73 28 31 2c 4e 70 29 3b 0a 0a 0a 09 | at.=.(-win:win)'*ones(1,Np);.... |
| 114a0 | 78 73 5f 6d 61 74 32 20 3d 20 72 6f 75 6e 64 28 78 73 5f 6d 61 74 20 2d 20 77 69 6e 5f 6d 61 74 | xs_mat2.=.round(xs_mat.-.win_mat |
| 114c0 | 20 2a 20 6c 61 6d 62 64 61 28 31 29 29 3b 0a 09 79 73 5f 6d 61 74 32 20 3d 20 72 6f 75 6e 64 28 | .*.lambda(1));..ys_mat2.=.round( |
| 114e0 | 79 73 5f 6d 61 74 20 2d 20 77 69 6e 5f 6d 61 74 20 2a 20 6c 61 6d 62 64 61 28 32 29 29 3b 0a 0a | ys_mat.-.win_mat.*.lambda(2));.. |
| 11500 | 09 69 6e 64 5f 6d 61 74 20 3d 20 28 78 73 5f 6d 61 74 32 20 2d 20 31 29 20 2a 20 6e 79 20 2b 20 | .ind_mat.=.(xs_mat2.-.1).*.ny.+. |
| 11520 | 79 73 5f 6d 61 74 32 3b 0a 0a 09 69 6d 61 5f 70 61 74 63 68 20 3d 20 7a 65 72 6f 73 28 32 2a 77 | ys_mat2;...ima_patch.=.zeros(2*w |
| 11540 | 69 6e 20 2b 20 31 2c 4e 70 29 3b 0a 0a 09 69 6d 61 5f 70 61 74 63 68 28 3a 29 20 3d 20 49 28 69 | in.+.1,Np);...ima_patch(:).=.I(i |
| 11560 | 6e 64 5f 6d 61 74 28 3a 29 29 3b 0a 0a 09 25 69 6d 61 32 20 3d 20 69 6d 61 5f 70 61 74 63 68 28 | nd_mat(:));...%ima2.=.ima_patch( |
| 11580 | 3a 2c 77 69 6e 2b 31 3a 65 6e 64 2d 77 69 6e 29 3b 0a 0a 09 66 69 6c 74 6b 20 3d 20 5b 6f 6e 65 | :,win+1:end-win);...filtk.=.[one |
| 115a0 | 73 28 77 69 6e 2c 4e 70 29 3b 7a 65 72 6f 73 28 31 2c 4e 70 29 3b 2d 6f 6e 65 73 28 77 69 6e 2c | s(win,Np);zeros(1,Np);-ones(win, |
| 115c0 | 4e 70 29 5d 3b 0a 0a 09 6f 75 74 5f 66 20 3d 20 73 75 6d 28 66 69 6c 74 6b 2e 2a 69 6d 61 5f 70 | Np)];...out_f.=.sum(filtk.*ima_p |
| 115e0 | 61 74 63 68 29 3b 0a 0a 09 6f 75 74 5f 66 5f 66 20 3d 20 63 6f 6e 76 32 28 6f 75 74 5f 66 2c 5b | atch);...out_f_f.=.conv2(out_f,[ |
| 11600 | 31 2f 34 20 31 2f 32 20 31 2f 34 5d 2c 27 73 61 6d 65 27 29 3b 0a 0a 09 6f 75 74 5f 66 5f 66 20 | 1/4.1/2.1/4],'same');...out_f_f. |
| 11620 | 3d 20 6f 75 74 5f 66 5f 66 28 77 69 6e 2b 31 3a 65 6e 64 2d 77 69 6e 29 3b 0a 0a 09 6e 73 20 3d | =.out_f_f(win+1:end-win);...ns.= |
| 11640 | 20 6c 65 6e 67 74 68 28 66 69 6e 64 28 28 28 6f 75 74 5f 66 5f 66 28 32 3a 65 6e 64 29 3e 3d 30 | .length(find(((out_f_f(2:end)>=0 |
| 11660 | 29 26 28 6f 75 74 5f 66 5f 66 28 31 3a 65 6e 64 2d 31 29 3c 30 29 29 20 7c 20 28 28 6f 75 74 5f | )&(out_f_f(1:end-1)<0)).|.((out_ |
| 11680 | 66 5f 66 28 32 3a 65 6e 64 29 3c 3d 30 29 26 28 6f 75 74 5f 66 5f 66 28 31 3a 65 6e 64 2d 31 29 | f_f(2:end)<=0)&(out_f_f(1:end-1) |
| 116a0 | 3e 30 29 29 29 29 2b 31 3b 0a 0a 20 20 20 0a 0a 0a 72 65 74 75 72 6e 3b 0a 00 06 1c 00 00 06 34 | >0))))+1;........return;.......4 |
| 116c0 | 00 02 36 a8 00 1c 00 0d 55 6e 57 61 72 70 50 6c 61 6e 65 2e 6d 00 00 a6 00 00 06 48 00 02 36 a9 | ..6.....UnWarpPlane.m......H..6. |
| 116e0 | 00 18 00 0a 77 72 69 74 65 72 61 73 2e 6d 00 2e 00 00 06 64 00 02 36 aa 00 20 00 10 65 72 72 6f | ....writeras.m.....d..6.....erro |
| 11700 | 72 5f 61 6e 61 6c 79 73 69 73 2e 6d 00 00 06 64 00 00 06 78 00 02 36 ab 00 18 00 09 6c 6f 61 64 | r_analysis.m...d...x..6.....load |
| 11720 | 69 6e 72 2e 6d 00 2e 6d 00 00 06 8c 00 02 36 ac 00 18 00 09 6c 6f 61 64 70 67 6d 2e 6d 00 72 2e | inr.m..m......6.....loadpgm.m.r. |
| 11740 | 00 00 06 a0 00 02 36 ad 00 18 00 09 6c 6f 61 64 70 70 6d 2e 6d 00 6d 2e 00 00 06 b4 00 02 36 ae | ......6.....loadppm.m.m.......6. |
| 11760 | 00 18 00 09 73 61 76 65 69 6e 72 2e 6d 00 6d 2e 00 00 06 c8 00 02 36 af 00 18 00 09 73 61 76 65 | ....saveinr.m.m.......6.....save |
| 11780 | 70 67 6d 2e 6d 00 72 2e 00 00 06 dc 00 02 36 b0 00 18 00 09 73 61 76 65 70 70 6d 2e 6d 00 6d 2e | pgm.m.r.......6.....saveppm.m.m. |
| 117a0 | 00 00 06 fc 00 02 36 b1 00 24 00 16 69 6e 69 74 5f 69 6e 74 72 69 6e 73 69 63 5f 70 61 72 61 6d | ......6..$..init_intrinsic_param |
| 117c0 | 2e 6d 00 b1 00 00 07 18 00 02 36 b2 00 20 00 11 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 2e | .m........6.....mean_std_robust. |
| 117e0 | 6d 00 07 18 00 00 07 38 00 02 36 b3 00 24 00 14 72 75 6e 5f 65 72 72 6f 72 5f 61 6e 61 6c 79 73 | m......8..6..$..run_error_analys |
| 11800 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 64 61 74 61 5f 63 61 6c 69 62 2e 6d 00 00 00 00 00 00 | TOOLBOX_calib/data_calib.m...... |
| 11820 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 11840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 11860 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 11880 | 20 20 20 34 32 33 32 20 20 37 30 32 34 30 33 37 33 31 36 20 20 31 30 36 34 32 00 20 00 00 00 00 | ...4232..7024037316..10642...... |
| 118a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 118c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 118e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 11900 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 11920 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 11940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 11960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 11980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 119a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 119c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 119e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 11a00 | 25 25 25 20 54 68 69 73 20 73 63 72 69 70 74 20 61 6c 65 74 73 20 74 68 65 20 75 73 65 72 20 65 | %%%.This.script.alets.the.user.e |
| 11a20 | 6e 74 65 72 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 69 6d 61 67 65 73 20 28 62 61 73 | nter.the.name.of.the.images.(bas |
| 11a40 | 65 20 6e 61 6d 65 2c 20 6e 75 6d 62 65 72 69 6e 67 20 73 63 68 65 6d 65 2c 2e 2e 2e 0a 0a 64 69 | e.name,.numbering.scheme,.....di |
| 11a60 | 72 3b 0a 0a 25 64 69 73 70 28 27 43 61 6d 65 72 61 20 43 61 6c 69 62 72 61 74 69 6f 6e 20 75 73 | r;..%disp('Camera.Calibration.us |
| 11a80 | 69 6e 67 20 6d 75 6c 74 69 70 6c 65 20 69 6d 61 67 65 73 20 6f 66 20 61 20 70 6c 61 6e 61 72 20 | ing.multiple.images.of.a.planar. |
| 11aa0 | 63 68 65 63 6b 65 72 62 6f 61 72 64 20 70 61 74 74 65 72 6e 27 29 3b 0a 25 64 69 73 70 28 27 4d | checkerboard.pattern');.%disp('M |
| 11ac0 | 6f 64 65 6c 3a 20 32 20 66 6f 63 61 6c 73 2c 20 32 20 72 61 64 69 61 6c 20 64 69 73 74 2e 20 63 | odel:.2.focals,.2.radial.dist..c |
| 11ae0 | 6f 65 66 66 2e 2c 20 32 20 74 61 6e 67 65 6e 74 69 61 6c 20 64 69 73 74 2e 20 63 6f 65 66 66 2e | oeff.,.2.tangential.dist..coeff. |
| 11b00 | 20 61 6e 64 20 70 72 69 6e 63 69 70 6c 65 20 70 6f 69 6e 74 27 29 3b 0a 25 64 69 73 70 28 27 20 | .and.principle.point');.%disp('. |
| 11b20 | 20 20 20 20 20 20 3d 3e 20 38 44 4f 46 20 69 6e 74 72 69 6e 73 69 63 20 6d 6f 64 65 6c 20 28 5b | ......=>.8DOF.intrinsic.model.([ |
| 11b40 | 48 65 69 6b 6b 69 6c 61 20 61 6e 64 20 53 69 6c 76 65 6e 2c 20 55 6e 69 76 65 72 73 69 74 79 20 | Heikkila.and.Silven,.University. |
| 11b60 | 6f 66 20 4f 75 6c 75 5d 29 27 29 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 27 29 3b 0a 63 | of.Oulu])');..fprintf(1,'\n');.c |
| 11b80 | 61 6c 69 62 5f 6e 61 6d 65 20 3d 20 69 6e 70 75 74 28 27 42 61 73 65 6e 61 6d 65 20 63 61 6d 65 | alib_name.=.input('Basename.came |
| 11ba0 | 72 61 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 69 6d 61 67 65 73 20 28 77 69 74 68 6f 75 74 20 6e | ra.calibration.images.(without.n |
| 11bc0 | 75 6d 62 65 72 20 6e 6f 72 20 73 75 66 66 69 78 29 3a 20 27 2c 27 73 27 29 3b 0a 0a 66 6f 72 6d | umber.nor.suffix):.','s');..form |
| 11be0 | 61 74 5f 69 6d 61 67 65 20 3d 20 27 30 27 3b 0a 0a 77 68 69 6c 65 20 66 6f 72 6d 61 74 5f 69 6d | at_image.=.'0';..while.format_im |
| 11c00 | 61 67 65 20 3d 3d 20 27 30 27 2c 0a 20 20 20 0a 20 20 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 | age.==.'0',........format_image. |
| 11c20 | 3d 20 20 69 6e 70 75 74 28 27 49 6d 61 67 65 20 66 6f 72 6d 61 74 3a 20 28 5b 5d 3d 27 27 72 27 | =..input('Image.format:.([]=''r' |
| 11c40 | 27 3d 27 27 72 61 73 27 27 2c 20 27 27 62 27 27 3d 27 27 62 6d 70 27 27 2c 20 27 27 74 27 27 3d | '=''ras'',.''b''=''bmp'',.''t''= |
| 11c60 | 27 27 74 69 66 27 27 2c 20 27 27 70 27 27 3d 27 27 70 67 6d 27 27 2c 20 27 27 6a 27 27 3d 27 27 | ''tif'',.''p''=''pgm'',.''j''='' |
| 11c80 | 6a 70 67 27 27 29 20 27 2c 27 73 27 29 3b 0a 0a 09 69 66 20 69 73 65 6d 70 74 79 28 66 6f 72 6d | jpg'').','s');...if.isempty(form |
| 11ca0 | 61 74 5f 69 6d 61 67 65 29 2c 0a 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 3d 20 27 72 | at_image),.....format_image.=.'r |
| 11cc0 | 61 73 27 3b 0a 09 65 6e 64 3b 0a 0a 09 69 66 20 6c 6f 77 65 72 28 66 6f 72 6d 61 74 5f 69 6d 61 | as';..end;...if.lower(format_ima |
| 11ce0 | 67 65 28 31 29 29 20 3d 3d 20 27 62 27 2c 0a 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 | ge(1)).==.'b',.....format_image. |
| 11d00 | 3d 20 27 62 6d 70 27 3b 0a 09 65 6c 73 65 0a 20 20 20 09 69 66 20 6c 6f 77 65 72 28 66 6f 72 6d | =.'bmp';..else.....if.lower(form |
| 11d20 | 61 74 5f 69 6d 61 67 65 28 31 29 29 20 3d 3d 20 27 74 27 2c 0a 20 20 20 20 20 20 09 66 6f 72 6d | at_image(1)).==.'t',........form |
| 11d40 | 61 74 5f 69 6d 61 67 65 20 3d 20 27 74 69 66 27 3b 0a 20 20 20 09 65 6c 73 65 0a 20 20 20 20 20 | at_image.=.'tif';.....else...... |
| 11d60 | 20 09 69 66 20 6c 6f 77 65 72 28 66 6f 72 6d 61 74 5f 69 6d 61 67 65 28 31 29 29 20 3d 3d 20 27 | ..if.lower(format_image(1)).==.' |
| 11d80 | 70 27 2c 0a 20 20 20 20 20 20 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 3d 20 27 70 67 | p',...........format_image.=.'pg |
| 11da0 | 6d 27 3b 0a 09 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 09 20 20 20 20 20 20 69 66 20 6c 6f 77 | m';........else...........if.low |
| 11dc0 | 65 72 28 66 6f 72 6d 61 74 5f 69 6d 61 67 65 28 31 29 29 20 3d 3d 20 27 6a 27 2c 0a 20 20 20 20 | er(format_image(1)).==.'j',..... |
| 11de0 | 20 20 09 20 20 20 20 20 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 3d 20 27 6a 70 67 27 3b 0a 20 | .........format_image.=.'jpg';.. |
| 11e00 | 20 20 20 20 20 20 20 20 09 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 09 69 66 20 6c 6f | .........else..............if.lo |
| 11e20 | 77 65 72 28 66 6f 72 6d 61 74 5f 69 6d 61 67 65 28 31 29 29 20 3d 3d 20 27 72 27 2c 0a 09 20 20 | wer(format_image(1)).==.'r',.... |
| 11e40 | 20 20 20 20 20 20 20 20 20 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 3d 20 27 72 61 73 | .............format_image.=.'ras |
| 11e60 | 27 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 | ';................else.......... |
| 11e80 | 20 20 20 20 09 09 64 69 73 70 28 27 49 6e 76 61 6c 69 64 20 69 6d 61 67 65 20 66 6f 72 6d 61 74 | ......disp('Invalid.image.format |
| 11ea0 | 27 29 3b 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 09 20 20 20 20 20 20 20 20 20 66 6f 72 6d 61 | ');........................forma |
| 11ec0 | 74 5f 69 6d 61 67 65 20 3d 20 27 30 27 3b 20 25 20 41 73 6b 20 66 6f 72 20 66 6f 72 6d 61 74 20 | t_image.=.'0';.%.Ask.for.format. |
| 11ee0 | 6f 6e 63 65 20 61 67 61 69 6e 0a 20 20 20 20 20 20 20 20 20 09 20 20 20 65 6e 64 3b 0a 20 20 20 | once.again..............end;.... |
| 11f00 | 20 20 20 09 20 20 20 65 6e 64 3b 0a 09 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 09 65 6e 64 3b | .......end;........end;.....end; |
| 11f20 | 0a 09 65 6e 64 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 0a 6e 5f 69 6d 61 20 3d 20 31 30 30 30 3b 0a | ..end;.....end;...n_ima.=.1000;. |
| 11f40 | 77 68 69 6c 65 20 6e 5f 69 6d 61 20 3e 20 33 30 2c 0a 20 20 20 6e 5f 69 6d 61 20 3d 20 69 6e 70 | while.n_ima.>.30,....n_ima.=.inp |
| 11f60 | 75 74 28 27 4e 75 6d 62 65 72 20 6f 66 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 69 6d 61 67 65 73 | ut('Number.of.calibration.images |
| 11f80 | 3a 20 27 29 3b 0a 20 20 20 6e 5f 69 6d 61 20 3d 20 72 6f 75 6e 64 28 6e 5f 69 6d 61 29 3b 0a 65 | :.');....n_ima.=.round(n_ima);.e |
| 11fa0 | 6e 64 3b 0a 0a 74 79 70 65 5f 6e 75 6d 62 65 72 69 6e 67 20 3d 20 69 6e 70 75 74 28 27 54 79 70 | nd;..type_numbering.=.input('Typ |
| 11fc0 | 65 20 6f 66 20 6e 75 6d 62 65 72 69 6e 67 20 28 65 78 3a 20 5b 5d 3d 34 2c 6f 74 68 65 72 3d 30 | e.of.numbering.(ex:.[]=4,other=0 |
| 11fe0 | 34 29 3a 20 27 29 3b 0a 0a 74 79 70 65 5f 6e 75 6d 62 65 72 69 6e 67 20 3d 20 7e 69 73 65 6d 70 | 4):.');..type_numbering.=.~isemp |
| 12000 | 74 79 28 74 79 70 65 5f 6e 75 6d 62 65 72 69 6e 67 29 3b 0a 0a 69 66 20 74 79 70 65 5f 6e 75 6d | ty(type_numbering);..if.type_num |
| 12020 | 62 65 72 69 6e 67 2c 0a 20 20 20 0a 20 20 20 4e 5f 73 6c 6f 74 73 20 3d 20 69 6e 70 75 74 28 27 | bering,........N_slots.=.input(' |
| 12040 | 4e 75 6d 62 65 72 20 6f 66 20 73 70 61 63 65 73 20 66 6f 72 20 6e 75 6d 62 65 72 73 3f 20 28 65 | Number.of.spaces.for.numbers?.(e |
| 12060 | 78 3a 20 32 20 2d 3e 20 30 34 2c 20 33 20 2d 3e 20 30 30 34 29 2c 20 28 5b 5d 3d 33 29 20 27 29 | x:.2.->.04,.3.->.004),.([]=3).') |
| 12080 | 3b 0a 0a 20 20 20 69 66 20 69 73 65 6d 70 74 79 28 4e 5f 73 6c 6f 74 73 29 2c 20 4e 5f 73 6c 6f | ;.....if.isempty(N_slots),.N_slo |
| 120a0 | 74 73 20 3d 20 33 3b 20 65 6e 64 3b 0a 0a 65 6c 73 65 0a 20 20 20 0a 20 20 20 4e 5f 73 6c 6f 74 | ts.=.3;.end;..else........N_slot |
| 120c0 | 73 20 3d 20 31 3b 20 25 20 6e 6f 74 20 75 73 65 64 20 61 6e 79 77 61 79 2c 20 62 75 74 20 75 73 | s.=.1;.%.not.used.anyway,.but.us |
| 120e0 | 65 66 75 6c 20 66 6f 72 20 73 61 76 69 6e 67 0a 20 20 20 0a 65 6e 64 3b 0a 0a 0a 66 69 72 73 74 | eful.for.saving.....end;...first |
| 12100 | 5f 6e 75 6d 20 3d 20 69 6e 70 75 74 28 27 46 69 72 73 74 20 69 6d 61 67 65 20 6e 75 6d 62 65 72 | _num.=.input('First.image.number |
| 12120 | 3f 20 28 30 2c 31 2c 32 2e 2e 2e 29 20 28 5b 5d 3d 30 29 20 27 29 3b 0a 20 0a 69 66 20 69 73 65 | ?.(0,1,2...).([]=0).');...if.ise |
| 12140 | 6d 70 74 79 28 66 69 72 73 74 5f 6e 75 6d 29 2c 20 66 69 72 73 74 5f 6e 75 6d 20 3d 20 30 3b 20 | mpty(first_num),.first_num.=.0;. |
| 12160 | 65 6e 64 3b 0a 0a 69 6d 61 67 65 5f 6e 75 6d 62 65 72 73 20 3d 20 66 69 72 73 74 5f 6e 75 6d 3a | end;..image_numbers.=.first_num: |
| 12180 | 6e 5f 69 6d 61 2d 31 2b 66 69 72 73 74 5f 6e 75 6d 3b 0a 0a 0a 25 25 25 20 42 79 20 64 65 66 61 | n_ima-1+first_num;...%%%.By.defa |
| 121a0 | 75 6c 74 2c 20 61 6c 6c 20 74 68 65 20 69 6d 61 67 65 73 20 61 72 65 20 61 63 74 69 76 65 20 66 | ult,.all.the.images.are.active.f |
| 121c0 | 6f 72 20 63 61 6c 69 62 72 61 74 69 6f 6e 3a 0a 0a 61 63 74 69 76 65 5f 69 6d 61 67 65 73 20 3d | or.calibration:..active_images.= |
| 121e0 | 20 6f 6e 65 73 28 31 2c 6e 5f 69 6d 61 29 3b 0a 0a 25 73 74 72 69 6e 67 5f 73 61 76 65 20 3d 20 | .ones(1,n_ima);..%string_save.=. |
| 12200 | 27 73 61 76 65 20 63 61 6c 69 62 5f 64 61 74 61 20 6e 5f 69 6d 61 20 74 79 70 65 5f 6e 75 6d 62 | 'save.calib_data.n_ima.type_numb |
| 12220 | 65 72 69 6e 67 20 4e 5f 73 6c 6f 74 73 20 69 6d 61 67 65 5f 6e 75 6d 62 65 72 73 20 66 6f 72 6d | ering.N_slots.image_numbers.form |
| 12240 | 61 74 5f 69 6d 61 67 65 20 63 61 6c 69 62 5f 6e 61 6d 65 20 66 69 72 73 74 5f 6e 75 6d 27 3b 0a | at_image.calib_name.first_num';. |
| 12260 | 0a 25 65 76 61 6c 28 73 74 72 69 6e 67 5f 73 61 76 65 29 3b 0a 0a 25 20 52 65 61 64 69 6e 67 20 | .%eval(string_save);..%.Reading. |
| 12280 | 69 6d 61 67 65 73 3a 0a 0a 69 6d 61 5f 72 65 61 64 5f 63 61 6c 69 62 3b 0a 0a 79 28 66 6f 72 6d | images:..ima_read_calib;..y(form |
| 122a0 | 61 74 5f 69 6d 61 67 65 29 2c 0a 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 3d 20 27 72 | at_image),.....format_image.=.'r |
| 122c0 | 61 73 27 3b 0a 09 65 6e 64 3b 0a 0a 09 69 66 20 6c 6f 77 65 72 28 66 6f 72 6d 61 74 5f 69 6d 61 | as';..end;...if.lower(format_ima |
| 122e0 | 67 65 28 31 29 29 20 3d 3d 20 27 62 27 2c 0a 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 | ge(1)).==.'b',.....format_image. |
| 12300 | 3d 20 27 62 6d 70 27 3b 0a 09 65 6c 73 65 0a 20 20 20 09 69 66 20 6c 6f 77 65 72 28 66 6f 72 6d | =.'bmp';..else.....if.lower(form |
| 12320 | 61 74 5f 69 6d 61 67 65 28 31 29 29 20 3d 3d 20 27 74 27 2c 0a 20 20 20 20 20 20 09 66 6f 72 6d | at_image(1)).==.'t',........form |
| 12340 | 61 74 5f 69 6d 61 67 65 20 3d 20 27 74 69 66 27 3b 0a 20 20 20 09 65 6c 73 65 0a 20 20 20 20 20 | at_image.=.'tif';.....else...... |
| 12360 | 20 09 69 66 20 6c 6f 77 65 72 28 66 6f 72 6d 61 74 5f 69 6d 61 67 65 28 31 29 29 20 3d 3d 20 27 | ..if.lower(format_image(1)).==.' |
| 12380 | 70 27 2c 0a 20 20 20 20 20 20 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 3d 20 27 70 67 | p',...........format_image.=.'pg |
| 123a0 | 6d 27 3b 0a 09 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 09 20 20 20 20 20 20 69 66 20 6c 6f 77 | m';........else...........if.low |
| 123c0 | 65 72 28 66 6f 72 6d 61 74 5f 69 6d 61 67 65 28 31 29 29 20 3d 3d 20 27 6a 27 2c 0a 20 20 20 20 | er(format_image(1)).==.'j',..... |
| 123e0 | 20 20 09 20 20 20 20 20 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 3d 20 27 6a 70 67 27 3b 0a 20 | .........format_image.=.'jpg';.. |
| 12400 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 44 69 73 74 6f 72 32 43 61 6c 69 62 2e 6d 00 00 00 00 | TOOLBOX_calib/Distor2Calib.m.... |
| 12420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 12440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 12460 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 12480 | 20 20 32 30 34 32 32 20 20 37 30 32 34 30 33 37 33 31 37 20 20 31 31 31 30 30 00 20 00 00 00 00 | ..20422..7024037317..11100...... |
| 124a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 124c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 124e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 12500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 12520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 12540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 12560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 12580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 125a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 125c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 125e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 12600 | 66 75 6e 63 74 69 6f 6e 20 5b 66 63 5f 32 2c 52 63 5f 32 2c 54 63 5f 32 2c 48 5f 32 2c 64 69 73 | function.[fc_2,Rc_2,Tc_2,H_2,dis |
| 12620 | 74 61 6e 63 65 2c 56 5f 76 65 72 74 2c 56 5f 68 6f 72 69 2c 78 5f 61 6c 6c 5f 63 2c 56 5f 68 6f | tance,V_vert,V_hori,x_all_c,V_ho |
| 12640 | 72 69 5f 70 69 78 2c 56 5f 76 65 72 74 5f 70 69 78 2c 56 5f 64 69 61 67 31 5f 70 69 78 2c 56 5f | ri_pix,V_vert_pix,V_diag1_pix,V_ |
| 12660 | 64 69 61 67 32 5f 70 69 78 5d 3d 44 69 73 74 6f 72 32 43 61 6c 69 62 28 6b 5f 64 69 73 74 2c 67 | diag2_pix]=Distor2Calib(k_dist,g |
| 12680 | 72 69 64 5f 70 74 73 5f 63 65 6e 74 65 72 65 64 2c 6e 5f 73 71 5f 78 2c 6e 5f 73 71 5f 79 2c 4e | rid_pts_centered,n_sq_x,n_sq_y,N |
| 126a0 | 70 2c 57 2c 4c 2c 58 67 72 69 64 5f 32 2c 66 5f 69 6e 69 2c 4e 5f 69 74 65 72 2c 74 77 6f 5f 66 | p,W,L,Xgrid_2,f_ini,N_iter,two_f |
| 126c0 | 6f 63 61 6c 29 3b 0a 0a 25 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 63 61 6c 69 62 72 61 74 69 | ocal);..%.Computes.the.calibrati |
| 126e0 | 6f 6e 20 70 61 72 61 6d 65 74 65 72 73 20 6b 6e 6f 77 69 6e 67 20 74 68 65 0a 25 20 64 69 73 74 | on.parameters.knowing.the.%.dist |
| 12700 | 6f 72 74 69 6f 6e 20 66 61 63 74 6f 72 20 6b 5f 64 69 73 74 0a 0a 25 20 67 72 69 64 5f 70 74 73 | ortion.factor.k_dist..%.grid_pts |
| 12720 | 5f 63 65 6e 74 65 72 65 64 20 61 72 65 20 74 68 65 20 67 72 69 64 20 70 6f 69 6e 74 20 63 6f 6f | _centered.are.the.grid.point.coo |
| 12740 | 72 64 69 6e 61 74 65 73 20 61 66 74 65 72 20 73 75 62 73 74 72 61 63 74 69 6f 6e 20 6f 66 0a 25 | rdinates.after.substraction.of.% |
| 12760 | 20 74 68 65 20 6f 70 74 69 63 61 6c 20 63 65 6e 74 65 72 2e 0a 0a 25 20 63 61 6e 20 67 69 76 65 | .the.optical.center...%.can.give |
| 12780 | 20 61 6e 20 6f 70 74 69 6f 6e 61 6c 20 67 75 65 73 73 20 66 6f 72 20 74 68 65 20 66 6f 63 61 6c | .an.optional.guess.for.the.focal |
| 127a0 | 20 6c 65 6e 67 74 68 20 66 5f 69 6e 69 20 28 63 61 6e 20 73 65 74 20 74 6f 20 5b 5d 29 0a 25 20 | .length.f_ini.(can.set.to.[]).%. |
| 127c0 | 63 61 6e 20 70 72 6f 76 69 64 65 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 69 74 65 72 61 74 | can.provide.the.number.of.iterat |
| 127e0 | 69 6f 6e 73 20 66 6f 72 20 74 68 65 20 49 74 65 72 61 74 69 76 65 20 56 61 6e 69 73 68 69 6e 67 | ions.for.the.Iterative.Vanishing |
| 12800 | 20 50 6f 69 6e 74 20 41 6c 67 6f 72 69 74 68 6d 0a 0a 25 20 69 66 20 74 68 65 20 66 6f 63 61 6c | .Point.Algorithm..%.if.the.focal |
| 12820 | 20 6c 65 6e 67 74 68 20 69 73 20 6b 6e 6f 77 6e 20 70 65 72 66 65 63 74 6c 79 2c 20 74 68 65 6e | .length.is.known.perfectly,.then |
| 12840 | 2c 20 74 68 65 72 65 20 69 73 20 6e 6f 20 6e 65 65 64 20 74 6f 20 69 74 65 72 61 74 65 2c 0a 25 | ,.there.is.no.need.to.iterate,.% |
| 12860 | 20 61 6e 64 20 74 68 65 72 65 66 6f 72 65 2c 20 6f 6e 65 20 63 61 6e 20 66 69 78 3a 20 4e 5f 69 | .and.therefore,.one.can.fix:.N_i |
| 12880 | 74 65 72 20 3d 20 30 3b 0a 0a 25 20 43 61 6c 69 66 6f 72 6e 69 61 20 49 6e 73 74 69 74 75 74 65 | ter.=.0;..%.California.Institute |
| 128a0 | 20 6f 66 20 54 65 63 68 6e 6f 6c 6f 67 79 0a 25 20 28 63 29 20 4a 65 61 6e 2d 59 76 65 73 20 42 | .of.Technology.%.(c).Jean-Yves.B |
| 128c0 | 6f 75 67 75 65 74 20 2d 20 4f 63 74 6f 62 65 72 20 37 74 68 2c 20 31 39 39 37 0a 0a 0a 0a 25 6b | ouguet.-.October.7th,.1997....%k |
| 128e0 | 65 79 62 6f 61 72 64 3b 0a 0a 69 66 20 65 78 69 73 74 28 27 74 77 6f 5f 66 6f 63 61 6c 27 29 2c | eyboard;..if.exist('two_focal'), |
| 12900 | 0a 20 20 20 69 66 20 69 73 65 6d 70 74 79 28 74 77 6f 5f 66 6f 63 61 6c 29 2c 0a 20 20 20 20 20 | ....if.isempty(two_focal),...... |
| 12920 | 20 74 77 6f 5f 66 6f 63 61 6c 3d 30 3b 0a 20 20 20 65 6e 64 3b 0a 65 6c 73 65 0a 20 20 20 74 77 | .two_focal=0;....end;.else....tw |
| 12940 | 6f 5f 66 6f 63 61 6c 20 3d 20 30 3b 0a 65 6e 64 3b 0a 0a 0a 69 66 20 65 78 69 73 74 28 27 4e 5f | o_focal.=.0;.end;...if.exist('N_ |
| 12960 | 69 74 65 72 27 29 2c 0a 20 20 20 69 66 20 7e 69 73 65 6d 70 74 79 28 4e 5f 69 74 65 72 29 2c 0a | iter'),....if.~isempty(N_iter),. |
| 12980 | 20 20 20 20 20 20 64 69 73 70 28 27 55 73 65 20 6e 75 6d 62 65 72 20 6f 66 20 69 74 65 72 61 74 | ......disp('Use.number.of.iterat |
| 129a0 | 69 6f 6e 73 20 70 72 6f 76 69 64 65 64 27 29 3b 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 4e | ions.provided');....else.......N |
| 129c0 | 5f 69 74 65 72 20 3d 20 31 30 3b 0a 20 20 20 65 6e 64 3b 0a 65 6c 73 65 0a 20 20 20 4e 5f 69 74 | _iter.=.10;....end;.else....N_it |
| 129e0 | 65 72 20 3d 20 31 30 3b 0a 65 6e 64 3b 0a 0a 69 66 20 65 78 69 73 74 28 27 66 5f 69 6e 69 27 29 | er.=.10;.end;..if.exist('f_ini') |
| 12a00 | 2c 0a 20 20 20 69 66 20 7e 69 73 65 6d 70 74 79 28 66 5f 69 6e 69 29 2c 0a 20 20 20 20 20 20 64 | ,....if.~isempty(f_ini),.......d |
| 12a20 | 69 73 70 28 27 55 73 65 20 66 6f 63 61 6c 20 70 72 6f 76 69 64 65 64 27 29 3b 0a 20 20 20 20 20 | isp('Use.focal.provided');...... |
| 12a40 | 20 69 66 20 6c 65 6e 67 74 68 28 66 5f 69 6e 69 29 3c 32 2c 20 66 5f 69 6e 69 3d 5b 66 5f 69 6e | .if.length(f_ini)<2,.f_ini=[f_in |
| 12a60 | 69 3b 66 5f 69 6e 69 5d 3b 20 65 6e 64 3b 0a 20 20 20 20 20 20 66 63 5f 32 20 3d 20 66 5f 69 6e | i;f_ini];.end;.......fc_2.=.f_in |
| 12a80 | 69 3b 0a 20 20 20 20 20 20 78 5f 61 6c 6c 5f 63 20 3d 20 5b 67 72 69 64 5f 70 74 73 5f 63 65 6e | i;.......x_all_c.=.[grid_pts_cen |
| 12aa0 | 74 65 72 65 64 28 31 2c 3a 29 2f 66 63 5f 32 28 31 29 3b 67 72 69 64 5f 70 74 73 5f 63 65 6e 74 | tered(1,:)/fc_2(1);grid_pts_cent |
| 12ac0 | 65 72 65 64 28 32 2c 3a 29 2f 66 63 5f 32 28 32 29 5d 3b 0a 20 20 20 20 20 20 78 5f 61 6c 6c 5f | ered(2,:)/fc_2(2)];.......x_all_ |
| 12ae0 | 63 20 3d 20 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 28 78 5f 61 6c 6c 5f 63 2c 6b 5f 64 69 | c.=.comp_distortion(x_all_c,k_di |
| 12b00 | 73 74 29 3b 20 25 20 77 65 20 63 61 6e 20 74 68 69 73 20 74 69 6d 65 21 21 21 0a 20 20 20 65 6c | st);.%.we.can.this.time!!!....el |
| 12b20 | 73 65 0a 20 20 20 20 20 66 63 5f 32 20 3d 20 5b 31 3b 31 5d 3b 0a 20 20 20 20 20 78 5f 61 6c 6c | se......fc_2.=.[1;1];......x_all |
| 12b40 | 5f 63 20 3d 20 67 72 69 64 5f 70 74 73 5f 63 65 6e 74 65 72 65 64 3b 0a 20 20 20 65 6e 64 3b 0a | _c.=.grid_pts_centered;....end;. |
| 12b60 | 65 6c 73 65 0a 20 20 20 66 63 5f 32 20 3d 20 5b 31 3b 31 5d 3b 0a 20 20 20 78 5f 61 6c 6c 5f 63 | else....fc_2.=.[1;1];....x_all_c |
| 12b80 | 20 3d 20 67 72 69 64 5f 70 74 73 5f 63 65 6e 74 65 72 65 64 3b 0a 65 6e 64 3b 0a 0a 0a 64 58 20 | .=.grid_pts_centered;.end;...dX. |
| 12ba0 | 3d 20 57 2f 6e 5f 73 71 5f 78 3b 0a 64 59 20 3d 20 4c 2f 6e 5f 73 71 5f 79 3b 0a 0a 0a 4e 5f 78 | =.W/n_sq_x;.dY.=.L/n_sq_y;...N_x |
| 12bc0 | 20 3d 20 6e 5f 73 71 5f 78 2b 31 3b 0a 4e 5f 79 20 3d 20 6e 5f 73 71 5f 79 2b 31 3b 0a 0a 0a 78 | .=.n_sq_x+1;.N_y.=.n_sq_y+1;...x |
| 12be0 | 5f 67 72 69 64 20 3d 20 7a 65 72 6f 73 28 4e 5f 78 2c 4e 5f 79 29 3b 0a 79 5f 67 72 69 64 20 3d | _grid.=.zeros(N_x,N_y);.y_grid.= |
| 12c00 | 20 7a 65 72 6f 73 28 4e 5f 78 2c 4e 5f 79 29 3b 0a 0a 0a 0a 0a 0a 25 25 25 20 43 6f 6d 70 75 74 | .zeros(N_x,N_y);......%%%.Comput |
| 12c20 | 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 66 6f 75 72 20 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e | ation.of.the.four.vanishing.poin |
| 12c40 | 74 73 20 69 6e 20 70 69 78 65 6c 73 0a 0a 0a 20 20 20 78 5f 67 72 69 64 28 3a 29 20 3d 20 67 72 | ts.in.pixels......x_grid(:).=.gr |
| 12c60 | 69 64 5f 70 74 73 5f 63 65 6e 74 65 72 65 64 28 31 2c 3a 29 3b 0a 20 20 20 79 5f 67 72 69 64 28 | id_pts_centered(1,:);....y_grid( |
| 12c80 | 3a 29 20 3d 20 67 72 69 64 5f 70 74 73 5f 63 65 6e 74 65 72 65 64 28 32 2c 3a 29 3b 0a 20 20 20 | :).=.grid_pts_centered(2,:);.... |
| 12ca0 | 20 20 20 20 20 20 0a 20 20 20 66 6f 72 20 6b 3d 31 3a 6e 5f 73 71 5f 78 2b 31 2c 0a 20 20 20 20 | ..........for.k=1:n_sq_x+1,..... |
| 12cc0 | 20 20 5b 55 2c 53 2c 56 5d 20 3d 20 73 76 64 28 5b 78 5f 67 72 69 64 28 6b 2c 3a 29 3b 79 5f 67 | ..[U,S,V].=.svd([x_grid(k,:);y_g |
| 12ce0 | 72 69 64 28 6b 2c 3a 29 3b 6f 6e 65 73 28 31 2c 6e 5f 73 71 5f 79 2b 31 29 5d 29 3b 0a 20 20 20 | rid(k,:);ones(1,n_sq_y+1)]);.... |
| 12d00 | 20 20 20 76 65 72 74 28 3a 2c 6b 29 20 3d 20 55 28 3a 2c 33 29 3b 0a 20 20 20 65 6e 64 3b 0a 20 | ...vert(:,k).=.U(:,3);....end;.. |
| 12d20 | 20 20 0a 20 20 20 66 6f 72 20 6b 3d 31 3a 6e 5f 73 71 5f 79 2b 31 2c 0a 20 20 20 20 20 20 5b 55 | ......for.k=1:n_sq_y+1,.......[U |
| 12d40 | 2c 53 2c 56 5d 20 3d 20 73 76 64 28 5b 78 5f 67 72 69 64 28 3a 2c 6b 29 27 3b 79 5f 67 72 69 64 | ,S,V].=.svd([x_grid(:,k)';y_grid |
| 12d60 | 28 3a 2c 6b 29 27 3b 6f 6e 65 73 28 31 2c 6e 5f 73 71 5f 78 2b 31 29 5d 29 3b 0a 20 20 20 20 20 | (:,k)';ones(1,n_sq_x+1)]);...... |
| 12d80 | 20 68 6f 72 69 28 3a 2c 6b 29 20 3d 20 55 28 3a 2c 33 29 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 | .hori(:,k).=.U(:,3);....end;.... |
| 12da0 | 0a 20 20 20 25 20 32 20 70 72 69 6e 63 69 70 6c 65 20 56 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e | ....%.2.principle.Vanishing.poin |
| 12dc0 | 74 73 3a 0a 20 20 20 5b 55 2c 53 2c 56 5d 20 3d 20 73 76 64 28 76 65 72 74 29 3b 0a 20 20 20 56 | ts:....[U,S,V].=.svd(vert);....V |
| 12de0 | 5f 76 65 72 74 20 3d 20 55 28 3a 2c 33 29 3b 0a 20 20 20 5b 55 2c 53 2c 56 5d 20 3d 20 73 76 64 | _vert.=.U(:,3);....[U,S,V].=.svd |
| 12e00 | 28 68 6f 72 69 29 3b 0a 20 20 20 56 5f 68 6f 72 69 20 3d 20 55 28 3a 2c 33 29 3b 0a 20 20 20 0a | (hori);....V_hori.=.U(:,3);..... |
| 12e20 | 20 20 20 0a 0a 20 20 20 25 20 53 71 75 61 72 65 20 77 61 72 70 69 6e 67 3a 0a 20 20 20 0a 20 20 | ........%.Square.warping:....... |
| 12e40 | 20 0a 20 20 20 76 65 72 74 5f 66 69 72 73 74 20 3d 20 76 65 72 74 28 3a 2c 31 29 20 2d 20 64 6f | .....vert_first.=.vert(:,1).-.do |
| 12e60 | 74 28 56 5f 76 65 72 74 2c 76 65 72 74 28 3a 2c 31 29 29 2f 64 6f 74 28 56 5f 76 65 72 74 2c 56 | t(V_vert,vert(:,1))/dot(V_vert,V |
| 12e80 | 5f 76 65 72 74 29 20 2a 20 56 5f 76 65 72 74 3b 0a 20 20 20 76 65 72 74 5f 6c 61 73 74 20 3d 20 | _vert).*.V_vert;....vert_last.=. |
| 12ea0 | 76 65 72 74 28 3a 2c 6e 5f 73 71 5f 78 2b 31 29 20 2d 20 64 6f 74 28 56 5f 76 65 72 74 2c 76 65 | vert(:,n_sq_x+1).-.dot(V_vert,ve |
| 12ec0 | 72 74 28 3a 2c 6e 5f 73 71 5f 78 2b 31 29 29 2f 64 6f 74 28 56 5f 76 65 72 74 2c 56 5f 76 65 72 | rt(:,n_sq_x+1))/dot(V_vert,V_ver |
| 12ee0 | 74 29 20 2a 20 56 5f 76 65 72 74 3b 0a 20 20 20 0a 20 20 20 68 6f 72 69 5f 66 69 72 73 74 20 3d | t).*.V_vert;........hori_first.= |
| 12f00 | 20 68 6f 72 69 28 3a 2c 31 29 20 2d 20 64 6f 74 28 56 5f 68 6f 72 69 2c 68 6f 72 69 28 3a 2c 31 | .hori(:,1).-.dot(V_hori,hori(:,1 |
| 12f20 | 29 29 2f 64 6f 74 28 56 5f 68 6f 72 69 2c 56 5f 68 6f 72 69 29 20 2a 20 56 5f 68 6f 72 69 3b 0a | ))/dot(V_hori,V_hori).*.V_hori;. |
| 12f40 | 20 20 20 68 6f 72 69 5f 6c 61 73 74 20 3d 20 68 6f 72 69 28 3a 2c 6e 5f 73 71 5f 79 2b 31 29 20 | ...hori_last.=.hori(:,n_sq_y+1). |
| 12f60 | 2d 20 64 6f 74 28 56 5f 68 6f 72 69 2c 68 6f 72 69 28 3a 2c 6e 5f 73 71 5f 79 2b 31 29 29 2f 64 | -.dot(V_hori,hori(:,n_sq_y+1))/d |
| 12f80 | 6f 74 28 56 5f 68 6f 72 69 2c 56 5f 68 6f 72 69 29 20 2a 20 56 5f 68 6f 72 69 3b 0a 20 20 20 0a | ot(V_hori,V_hori).*.V_hori;..... |
| 12fa0 | 20 20 20 0a 20 20 20 78 31 20 3d 20 63 72 6f 73 73 28 68 6f 72 69 5f 66 69 72 73 74 2c 76 65 72 | .......x1.=.cross(hori_first,ver |
| 12fc0 | 74 5f 66 69 72 73 74 29 3b 0a 20 20 20 78 32 20 3d 20 63 72 6f 73 73 28 68 6f 72 69 5f 66 69 72 | t_first);....x2.=.cross(hori_fir |
| 12fe0 | 73 74 2c 76 65 72 74 5f 6c 61 73 74 29 3b 0a 20 20 20 78 33 20 3d 20 63 72 6f 73 73 28 68 6f 72 | st,vert_last);....x3.=.cross(hor |
| 13000 | 69 5f 6c 61 73 74 2c 76 65 72 74 5f 6c 61 73 74 29 3b 0a 20 20 20 78 34 20 3d 20 63 72 6f 73 73 | i_last,vert_last);....x4.=.cross |
| 13020 | 28 68 6f 72 69 5f 6c 61 73 74 2c 76 65 72 74 5f 66 69 72 73 74 29 3b 0a 20 20 20 0a 20 20 20 78 | (hori_last,vert_first);........x |
| 13040 | 31 20 3d 20 78 31 2f 78 31 28 33 29 3b 0a 20 20 20 78 32 20 3d 20 78 32 2f 78 32 28 33 29 3b 0a | 1.=.x1/x1(3);....x2.=.x2/x2(3);. |
| 13060 | 20 20 20 78 33 20 3d 20 78 33 2f 78 33 28 33 29 3b 0a 20 20 20 78 34 20 3d 20 78 34 2f 78 34 28 | ...x3.=.x3/x3(3);....x4.=.x4/x4( |
| 13080 | 33 29 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 0a 20 20 20 5b 73 71 75 61 72 65 5d 20 3d 20 52 65 | 3);................[square].=.Re |
| 130a0 | 63 74 61 6e 67 6c 65 32 53 71 75 61 72 65 28 5b 78 31 20 78 32 20 78 33 20 78 34 5d 2c 57 2c 4c | ctangle2Square([x1.x2.x3.x4],W,L |
| 130c0 | 29 3b 0a 0a 20 20 20 79 31 20 3d 20 73 71 75 61 72 65 28 3a 2c 31 29 3b 0a 20 20 20 79 32 20 3d | );.....y1.=.square(:,1);....y2.= |
| 130e0 | 20 73 71 75 61 72 65 28 3a 2c 32 29 3b 0a 20 20 20 79 33 20 3d 20 73 71 75 61 72 65 28 3a 2c 33 | .square(:,2);....y3.=.square(:,3 |
| 13100 | 29 3b 0a 20 20 20 79 34 20 3d 20 73 71 75 61 72 65 28 3a 2c 34 29 3b 0a 0a 20 20 20 48 32 20 3d | );....y4.=.square(:,4);.....H2.= |
| 13120 | 20 63 72 6f 73 73 28 56 5f 76 65 72 74 2c 56 5f 68 6f 72 69 29 3b 0a 20 20 20 0a 20 20 20 56 5f | .cross(V_vert,V_hori);........V_ |
| 13140 | 64 69 61 67 31 20 3d 20 63 72 6f 73 73 28 63 72 6f 73 73 28 79 31 2c 79 33 29 2c 48 32 29 3b 0a | diag1.=.cross(cross(y1,y3),H2);. |
| 13160 | 20 20 20 56 5f 64 69 61 67 32 20 3d 20 63 72 6f 73 73 28 63 72 6f 73 73 28 79 32 2c 79 34 29 2c | ...V_diag2.=.cross(cross(y2,y4), |
| 13180 | 48 32 29 3b 0a 0a 20 20 20 56 5f 64 69 61 67 31 20 3d 20 56 5f 64 69 61 67 31 20 2f 20 6e 6f 72 | H2);.....V_diag1.=.V_diag1./.nor |
| 131a0 | 6d 28 56 5f 64 69 61 67 31 29 3b 0a 20 20 20 56 5f 64 69 61 67 32 20 3d 20 56 5f 64 69 61 67 32 | m(V_diag1);....V_diag2.=.V_diag2 |
| 131c0 | 20 2f 20 6e 6f 72 6d 28 56 5f 64 69 61 67 32 29 3b 0a 0a 20 20 20 56 5f 68 6f 72 69 5f 70 69 78 | ./.norm(V_diag2);.....V_hori_pix |
| 131e0 | 20 3d 20 56 5f 68 6f 72 69 3b 0a 20 20 20 56 5f 76 65 72 74 5f 70 69 78 20 3d 20 56 5f 76 65 72 | .=.V_hori;....V_vert_pix.=.V_ver |
| 13200 | 74 3b 0a 20 20 20 56 5f 64 69 61 67 31 5f 70 69 78 20 3d 20 56 5f 64 69 61 67 31 3b 0a 20 20 20 | t;....V_diag1_pix.=.V_diag1;.... |
| 13220 | 56 5f 64 69 61 67 32 5f 70 69 78 20 3d 20 56 5f 64 69 61 67 32 3b 0a 0a 0a 25 20 65 6e 64 20 6f | V_diag2_pix.=.V_diag2;...%.end.o |
| 13240 | 66 20 63 6f 6d 70 75 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 76 61 6e 69 73 68 69 6e 67 20 70 | f.computation.of.the.vanishing.p |
| 13260 | 6f 69 6e 74 73 20 69 6e 20 70 69 78 65 6c 73 2e 0a 0a 0a 0a 0a 0a 0a 0a 0a 69 66 20 74 77 6f 5f | oints.in.pixels..........if.two_ |
| 13280 | 66 6f 63 61 6c 2c 20 25 20 6f 6e 6c 79 20 69 66 20 77 65 20 61 74 74 65 6d 70 74 20 74 6f 20 65 | focal,.%.only.if.we.attempt.to.e |
| 132a0 | 73 74 69 6d 61 74 65 20 74 77 6f 20 66 6f 63 61 6c 73 2e 2e 2e 0a 20 20 20 25 20 55 73 65 20 64 | stimate.two.focals.......%.Use.d |
| 132c0 | 69 61 67 6f 6e 61 6c 20 6c 69 6e 65 73 20 61 6c 73 6f 20 74 6f 20 61 64 64 20 74 77 6f 20 65 78 | iagonal.lines.also.to.add.two.ex |
| 132e0 | 74 72 61 20 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 73 20 28 3f 29 0a 20 20 20 4e 5f 6d 69 | tra.vanishing.points.(?)....N_mi |
| 13300 | 6e 20 3d 20 6d 69 6e 28 4e 5f 78 2c 4e 5f 79 29 3b 0a 20 20 20 0a 20 20 20 69 66 20 4e 5f 6d 69 | n.=.min(N_x,N_y);........if.N_mi |
| 13320 | 6e 20 3c 20 32 2c 0a 20 20 20 20 20 20 75 73 65 5f 64 69 61 67 20 3d 20 30 3b 0a 20 20 20 20 20 | n.<.2,.......use_diag.=.0;...... |
| 13340 | 20 74 77 6f 5f 66 6f 63 61 6c 20 3d 20 30 3b 0a 20 20 20 20 20 20 64 69 73 70 28 27 43 61 6e 6e | .two_focal.=.0;.......disp('Cann |
| 13360 | 6f 74 20 65 73 74 69 6d 61 74 65 20 74 77 6f 20 66 6f 63 61 6c 73 20 28 6e 6f 20 65 78 69 73 74 | ot.estimate.two.focals.(no.exist |
| 13380 | 69 6e 67 20 64 69 61 67 6f 6e 61 6c 73 29 27 29 3b 20 20 20 0a 20 20 20 65 6c 73 65 0a 20 20 20 | ing.diagonals)');.......else.... |
| 133a0 | 20 20 20 75 73 65 5f 64 69 61 67 20 3d 20 31 3b 0a 20 20 20 20 20 20 44 65 6c 74 61 5f 4e 20 3d | ...use_diag.=.1;.......Delta_N.= |
| 133c0 | 20 61 62 73 28 4e 5f 78 2d 4e 5f 79 29 3b 0a 20 20 20 20 20 20 4e 5f 65 78 74 72 61 20 3d 20 72 | .abs(N_x-N_y);.......N_extra.=.r |
| 133e0 | 6f 75 6e 64 28 28 4e 5f 6d 69 6e 20 2d 20 44 65 6c 74 61 5f 4e 20 2d 20 31 29 2f 32 29 3b 0a 20 | ound((N_min.-.Delta_N.-.1)/2);.. |
| 13400 | 20 20 20 20 20 64 69 61 67 5f 6c 69 73 74 20 3d 20 2d 4e 5f 65 78 74 72 61 3a 44 65 6c 74 61 5f | .....diag_list.=.-N_extra:Delta_ |
| 13420 | 4e 2b 4e 5f 65 78 74 72 61 3b 0a 20 20 20 20 20 20 4e 5f 64 69 61 67 20 3d 20 6c 65 6e 67 74 68 | N+N_extra;.......N_diag.=.length |
| 13440 | 28 64 69 61 67 5f 6c 69 73 74 29 3b 0a 20 20 20 20 20 20 64 69 61 67 5f 31 20 3d 20 7a 65 72 6f | (diag_list);.......diag_1.=.zero |
| 13460 | 73 28 33 2c 4e 5f 64 69 61 67 29 3b 0a 20 20 20 20 20 20 64 69 61 67 5f 32 20 3d 20 7a 65 72 6f | s(3,N_diag);.......diag_2.=.zero |
| 13480 | 73 28 33 2c 4e 5f 64 69 61 67 29 3b 0a 20 20 20 65 6e 64 3b 0a 65 6c 73 65 20 20 20 0a 20 20 20 | s(3,N_diag);....end;.else....... |
| 134a0 | 25 20 47 69 76 65 20 75 70 20 74 68 65 20 75 73 65 20 6f 66 20 74 68 65 20 64 69 61 67 6f 6e 61 | %.Give.up.the.use.of.the.diagona |
| 134c0 | 6c 73 20 28 73 6f 20 66 61 72 29 0a 20 20 20 25 20 69 74 20 73 65 65 6d 73 20 74 68 61 74 20 74 | ls.(so.far)....%.it.seems.that.t |
| 134e0 | 68 65 20 65 72 72 6f 72 20 69 73 20 69 6e 63 72 65 61 73 65 64 0a 20 20 20 75 73 65 5f 64 69 61 | he.error.is.increased....use_dia |
| 13500 | 67 20 3d 20 30 3b 0a 65 6e 64 3b 0a 0a 0a 0a 25 20 54 68 65 20 76 65 72 74 69 63 61 6c 20 6c 69 | g.=.0;.end;....%.The.vertical.li |
| 13520 | 6e 65 73 3a 20 76 65 72 74 2c 20 48 6f 72 69 7a 6f 6e 74 61 6c 20 6c 69 6e 65 73 3a 20 68 6f 72 | nes:.vert,.Horizontal.lines:.hor |
| 13540 | 69 0a 76 65 72 74 20 3d 20 7a 65 72 6f 73 28 33 2c 6e 5f 73 71 5f 78 2b 31 29 3b 0a 68 6f 72 69 | i.vert.=.zeros(3,n_sq_x+1);.hori |
| 13560 | 20 3d 20 7a 65 72 6f 73 28 33 2c 6e 5f 73 71 5f 79 2b 31 29 3b 0a 20 0a 66 6f 72 20 63 6f 75 6e | .=.zeros(3,n_sq_y+1);...for.coun |
| 13580 | 74 65 72 5f 6b 20 3d 20 31 3a 4e 5f 69 74 65 72 2c 20 09 25 20 74 68 65 20 49 74 65 72 61 74 69 | ter_k.=.1:N_iter,..%.the.Iterati |
| 135a0 | 76 65 20 56 61 6e 69 73 68 69 6e 67 20 50 6f 69 6e 74 73 20 41 6c 67 6f 72 69 74 68 6d 20 74 6f | ve.Vanishing.Points.Algorithm.to |
| 135c0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ |
| 135e0 | 20 25 20 65 73 74 69 6d 61 74 65 20 74 68 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 20 61 63 63 | .%.estimate.the.focal.length.acc |
| 13600 | 75 72 61 74 65 6c 79 0a 20 20 20 0a 20 20 20 78 5f 67 72 69 64 28 3a 29 20 3d 20 78 5f 61 6c 6c | urately........x_grid(:).=.x_all |
| 13620 | 5f 63 28 31 2c 3a 29 3b 0a 20 20 20 79 5f 67 72 69 64 28 3a 29 20 3d 20 78 5f 61 6c 6c 5f 63 28 | _c(1,:);....y_grid(:).=.x_all_c( |
| 13640 | 32 2c 3a 29 3b 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 66 6f 72 20 6b 3d 31 3a 6e 5f 73 71 5f | 2,:);..............for.k=1:n_sq_ |
| 13660 | 78 2b 31 2c 0a 20 20 20 20 20 20 5b 55 2c 53 2c 56 5d 20 3d 20 73 76 64 28 5b 78 5f 67 72 69 64 | x+1,.......[U,S,V].=.svd([x_grid |
| 13680 | 28 6b 2c 3a 29 3b 79 5f 67 72 69 64 28 6b 2c 3a 29 3b 6f 6e 65 73 28 31 2c 6e 5f 73 71 5f 79 2b | (k,:);y_grid(k,:);ones(1,n_sq_y+ |
| 136a0 | 31 29 5d 29 3b 0a 20 20 20 20 20 20 76 65 72 74 28 3a 2c 6b 29 20 3d 20 55 28 3a 2c 33 29 3b 0a | 1)]);.......vert(:,k).=.U(:,3);. |
| 136c0 | 20 20 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 66 6f 72 20 6b 3d 31 3a 6e 5f 73 71 5f 79 2b 31 2c | ...end;........for.k=1:n_sq_y+1, |
| 136e0 | 0a 20 20 20 20 20 20 5b 55 2c 53 2c 56 5d 20 3d 20 73 76 64 28 5b 78 5f 67 72 69 64 28 3a 2c 6b | .......[U,S,V].=.svd([x_grid(:,k |
| 13700 | 29 27 3b 79 5f 67 72 69 64 28 3a 2c 6b 29 27 3b 6f 6e 65 73 28 31 2c 6e 5f 73 71 5f 78 2b 31 29 | )';y_grid(:,k)';ones(1,n_sq_x+1) |
| 13720 | 5d 29 3b 0a 20 20 20 20 20 20 68 6f 72 69 28 3a 2c 6b 29 20 3d 20 55 28 3a 2c 33 29 3b 0a 20 20 | ]);.......hori(:,k).=.U(:,3);... |
| 13740 | 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 25 20 32 20 70 72 69 6e 63 69 70 6c 65 20 56 61 6e 69 73 | .end;........%.2.principle.Vanis |
| 13760 | 68 69 6e 67 20 70 6f 69 6e 74 73 3a 0a 20 20 20 5b 55 2c 53 2c 56 5d 20 3d 20 73 76 64 28 76 65 | hing.points:....[U,S,V].=.svd(ve |
| 13780 | 72 74 29 3b 0a 20 20 20 56 5f 76 65 72 74 20 3d 20 55 28 3a 2c 33 29 3b 0a 20 20 20 5b 55 2c 53 | rt);....V_vert.=.U(:,3);....[U,S |
| 137a0 | 2c 56 5d 20 3d 20 73 76 64 28 68 6f 72 69 29 3b 0a 20 20 20 56 5f 68 6f 72 69 20 3d 20 55 28 3a | ,V].=.svd(hori);....V_hori.=.U(: |
| 137c0 | 2c 33 29 3b 0a 20 20 20 0a 20 20 20 0a 0a 20 20 20 25 20 53 71 75 61 72 65 20 77 61 72 70 69 6e | ,3);.............%.Square.warpin |
| 137e0 | 67 3a 0a 20 20 20 0a 20 20 20 0a 20 20 20 76 65 72 74 5f 66 69 72 73 74 20 3d 20 76 65 72 74 28 | g:............vert_first.=.vert( |
| 13800 | 3a 2c 31 29 20 2d 20 64 6f 74 28 56 5f 76 65 72 74 2c 76 65 72 74 28 3a 2c 31 29 29 2f 64 6f 74 | :,1).-.dot(V_vert,vert(:,1))/dot |
| 13820 | 28 56 5f 76 65 72 74 2c 56 5f 76 65 72 74 29 20 2a 20 56 5f 76 65 72 74 3b 0a 20 20 20 76 65 72 | (V_vert,V_vert).*.V_vert;....ver |
| 13840 | 74 5f 6c 61 73 74 20 3d 20 76 65 72 74 28 3a 2c 6e 5f 73 71 5f 78 2b 31 29 20 2d 20 64 6f 74 28 | t_last.=.vert(:,n_sq_x+1).-.dot( |
| 13860 | 56 5f 76 65 72 74 2c 76 65 72 74 28 3a 2c 6e 5f 73 71 5f 78 2b 31 29 29 2f 64 6f 74 28 56 5f 76 | V_vert,vert(:,n_sq_x+1))/dot(V_v |
| 13880 | 65 72 74 2c 56 5f 76 65 72 74 29 20 2a 20 56 5f 76 65 72 74 3b 0a 20 20 20 0a 20 20 20 68 6f 72 | ert,V_vert).*.V_vert;........hor |
| 138a0 | 69 5f 66 69 72 73 74 20 3d 20 68 6f 72 69 28 3a 2c 31 29 20 2d 20 64 6f 74 28 56 5f 68 6f 72 69 | i_first.=.hori(:,1).-.dot(V_hori |
| 138c0 | 2c 68 6f 72 69 28 3a 2c 31 29 29 2f 64 6f 74 28 56 5f 68 6f 72 69 2c 56 5f 68 6f 72 69 29 20 2a | ,hori(:,1))/dot(V_hori,V_hori).* |
| 138e0 | 20 56 5f 68 6f 72 69 3b 0a 20 20 20 68 6f 72 69 5f 6c 61 73 74 20 3d 20 68 6f 72 69 28 3a 2c 6e | .V_hori;....hori_last.=.hori(:,n |
| 13900 | 5f 73 71 5f 79 2b 31 29 20 2d 20 64 6f 74 28 56 5f 68 6f 72 69 2c 68 6f 72 69 28 3a 2c 6e 5f 73 | _sq_y+1).-.dot(V_hori,hori(:,n_s |
| 13920 | 71 5f 79 2b 31 29 29 2f 64 6f 74 28 56 5f 68 6f 72 69 2c 56 5f 68 6f 72 69 29 20 2a 20 56 5f 68 | q_y+1))/dot(V_hori,V_hori).*.V_h |
| 13940 | 6f 72 69 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 78 31 20 3d 20 63 72 6f 73 73 28 68 6f 72 69 5f | ori;............x1.=.cross(hori_ |
| 13960 | 66 69 72 73 74 2c 76 65 72 74 5f 66 69 72 73 74 29 3b 0a 20 20 20 78 32 20 3d 20 63 72 6f 73 73 | first,vert_first);....x2.=.cross |
| 13980 | 28 68 6f 72 69 5f 66 69 72 73 74 2c 76 65 72 74 5f 6c 61 73 74 29 3b 0a 20 20 20 78 33 20 3d 20 | (hori_first,vert_last);....x3.=. |
| 139a0 | 63 72 6f 73 73 28 68 6f 72 69 5f 6c 61 73 74 2c 76 65 72 74 5f 6c 61 73 74 29 3b 0a 20 20 20 78 | cross(hori_last,vert_last);....x |
| 139c0 | 34 20 3d 20 63 72 6f 73 73 28 68 6f 72 69 5f 6c 61 73 74 2c 76 65 72 74 5f 66 69 72 73 74 29 3b | 4.=.cross(hori_last,vert_first); |
| 139e0 | 0a 20 20 20 0a 20 20 20 78 31 20 3d 20 78 31 2f 78 31 28 33 29 3b 0a 20 20 20 78 32 20 3d 20 78 | ........x1.=.x1/x1(3);....x2.=.x |
| 13a00 | 32 2f 78 32 28 33 29 3b 0a 20 20 20 78 33 20 3d 20 78 33 2f 78 33 28 33 29 3b 0a 20 20 20 78 34 | 2/x2(3);....x3.=.x3/x3(3);....x4 |
| 13a20 | 20 3d 20 78 34 2f 78 34 28 33 29 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 0a 20 20 20 5b 73 71 75 | .=.x4/x4(3);................[squ |
| 13a40 | 61 72 65 5d 20 3d 20 52 65 63 74 61 6e 67 6c 65 32 53 71 75 61 72 65 28 5b 78 31 20 78 32 20 78 | are].=.Rectangle2Square([x1.x2.x |
| 13a60 | 33 20 78 34 5d 2c 57 2c 4c 29 3b 0a 0a 20 20 20 79 31 20 3d 20 73 71 75 61 72 65 28 3a 2c 31 29 | 3.x4],W,L);.....y1.=.square(:,1) |
| 13a80 | 3b 0a 20 20 20 79 32 20 3d 20 73 71 75 61 72 65 28 3a 2c 32 29 3b 0a 20 20 20 79 33 20 3d 20 73 | ;....y2.=.square(:,2);....y3.=.s |
| 13aa0 | 71 75 61 72 65 28 3a 2c 33 29 3b 0a 20 20 20 79 34 20 3d 20 73 71 75 61 72 65 28 3a 2c 34 29 3b | quare(:,3);....y4.=.square(:,4); |
| 13ac0 | 0a 0a 20 20 20 48 32 20 3d 20 63 72 6f 73 73 28 56 5f 76 65 72 74 2c 56 5f 68 6f 72 69 29 3b 0a | .....H2.=.cross(V_vert,V_hori);. |
| 13ae0 | 20 20 20 0a 20 20 20 56 5f 64 69 61 67 31 20 3d 20 63 72 6f 73 73 28 63 72 6f 73 73 28 79 31 2c | .......V_diag1.=.cross(cross(y1, |
| 13b00 | 79 33 29 2c 48 32 29 3b 0a 20 20 20 56 5f 64 69 61 67 32 20 3d 20 63 72 6f 73 73 28 63 72 6f 73 | y3),H2);....V_diag2.=.cross(cros |
| 13b20 | 73 28 79 32 2c 79 34 29 2c 48 32 29 3b 0a 0a 20 20 20 56 5f 64 69 61 67 31 20 3d 20 56 5f 64 69 | s(y2,y4),H2);.....V_diag1.=.V_di |
| 13b40 | 61 67 31 20 2f 20 6e 6f 72 6d 28 56 5f 64 69 61 67 31 29 3b 0a 20 20 20 56 5f 64 69 61 67 32 20 | ag1./.norm(V_diag1);....V_diag2. |
| 13b60 | 3d 20 56 5f 64 69 61 67 32 20 2f 20 6e 6f 72 6d 28 56 5f 64 69 61 67 32 29 3b 0a 0a 20 20 20 0a | =.V_diag2./.norm(V_diag2);...... |
| 13b80 | 20 20 20 0a 20 20 20 0a 20 20 20 25 20 45 73 74 69 6d 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 66 | ...........%.Estimation.of.the.f |
| 13ba0 | 6f 63 61 6c 20 6c 65 6e 67 74 68 2c 20 61 6e 64 20 6e 6f 72 6d 61 6c 69 7a 61 74 69 6f 6e 3a 0a | ocal.length,.and.normalization:. |
| 13bc0 | 20 20 20 0a 20 20 20 25 20 43 6f 6d 70 75 74 65 20 74 68 65 20 65 6c 6c 69 70 73 69 73 20 6f 66 | .......%.Compute.the.ellipsis.of |
| 13be0 | 20 28 31 2f 66 5e 32 29 20 70 6f 73 69 74 69 6f 6e 73 3a 0a 20 20 20 25 20 61 20 2a 20 28 31 2f | .(1/f^2).positions:....%.a.*.(1/ |
| 13c00 | 66 78 29 5e 32 20 2b 20 62 20 2a 20 28 31 2f 66 78 29 5e 32 20 3d 20 2d 63 0a 20 20 20 0a 20 20 | fx)^2.+.b.*.(1/fx)^2.=.-c....... |
| 13c20 | 20 0a 20 20 20 61 31 20 3d 20 56 5f 68 6f 72 69 28 31 29 3b 0a 20 20 20 62 31 20 3d 20 56 5f 68 | .....a1.=.V_hori(1);....b1.=.V_h |
| 13c40 | 6f 72 69 28 32 29 3b 0a 20 20 20 63 31 20 3d 20 56 5f 68 6f 72 69 28 33 29 3b 0a 20 20 20 0a 20 | ori(2);....c1.=.V_hori(3);...... |
| 13c60 | 20 20 61 32 20 3d 20 56 5f 76 65 72 74 28 31 29 3b 0a 20 20 20 62 32 20 3d 20 56 5f 76 65 72 74 | ..a2.=.V_vert(1);....b2.=.V_vert |
| 13c80 | 28 32 29 3b 0a 20 20 20 63 32 20 3d 20 56 5f 76 65 72 74 28 33 29 3b 0a 20 20 20 0a 20 20 20 61 | (2);....c2.=.V_vert(3);........a |
| 13ca0 | 33 20 3d 20 56 5f 64 69 61 67 31 28 31 29 3b 0a 20 20 20 62 33 20 3d 20 56 5f 64 69 61 67 31 28 | 3.=.V_diag1(1);....b3.=.V_diag1( |
| 13cc0 | 32 29 3b 0a 20 20 20 63 33 20 3d 20 56 5f 64 69 61 67 31 28 33 29 3b 0a 20 20 20 0a 20 20 20 61 | 2);....c3.=.V_diag1(3);........a |
| 13ce0 | 34 20 3d 20 56 5f 64 69 61 67 32 28 31 29 3b 0a 20 20 20 62 34 20 3d 20 56 5f 64 69 61 67 32 28 | 4.=.V_diag2(1);....b4.=.V_diag2( |
| 13d00 | 32 29 3b 0a 20 20 20 63 34 20 3d 20 56 5f 64 69 61 67 32 28 33 29 3b 0a 20 20 20 0a 20 20 20 0a | 2);....c4.=.V_diag2(3);......... |
| 13d20 | 20 20 20 69 66 20 74 77 6f 5f 66 6f 63 61 6c 2c 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 0a 20 | ...if.two_focal,................ |
| 13d40 | 20 20 20 20 20 41 20 3d 20 5b 61 31 2a 61 32 20 62 31 2a 62 32 3b 61 33 2a 61 34 20 62 33 2a 62 | .....A.=.[a1*a2.b1*b2;a3*a4.b3*b |
| 13d60 | 34 5d 3b 0a 20 20 20 20 20 20 62 20 3d 20 2d 5b 63 31 2a 63 32 3b 63 33 2a 63 34 5d 3b 0a 20 20 | 4];.......b.=.-[c1*c2;c3*c4];... |
| 13d80 | 20 20 20 20 0a 20 20 20 20 20 20 66 20 3d 20 73 71 72 74 28 61 62 73 28 31 2e 2f 28 69 6e 76 28 | ...........f.=.sqrt(abs(1./(inv( |
| 13da0 | 41 29 2a 62 29 29 29 3b 0a 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 66 | A)*b)));.....else..............f |
| 13dc0 | 20 3d 20 73 71 72 74 28 61 62 73 28 2d 28 63 31 2a 63 32 2a 28 61 31 2a 61 32 20 2b 20 62 31 2a | .=.sqrt(abs(-(c1*c2*(a1*a2.+.b1* |
| 13de0 | 62 32 29 20 2b 20 63 33 2a 63 34 2a 28 61 33 2a 61 34 20 2b 20 62 33 2a 62 34 29 29 2f 28 63 31 | b2).+.c3*c4*(a3*a4.+.b3*b4))/(c1 |
| 13e00 | 5e 32 2a 63 32 5e 32 20 2b 20 63 33 5e 32 2a 63 34 5e 32 29 29 29 3b 0a 20 20 20 20 20 20 0a 20 | ^2*c2^2.+.c3^2*c4^2)));......... |
| 13e20 | 20 20 20 20 20 66 20 3d 20 5b 66 3b 66 5d 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a 20 | .....f.=.[f;f];...........end;.. |
| 13e40 | 20 20 0a 0a 20 20 20 0a 20 20 20 25 20 52 45 4d 41 52 4b 3a 0a 20 20 20 25 20 69 66 20 62 6f 74 | ...........%.REMARK:....%.if.bot |
| 13e60 | 68 20 61 20 61 6e 64 20 62 20 61 72 65 20 73 6d 61 6c 6c 2c 20 74 68 65 20 63 61 6c 69 62 72 61 | h.a.and.b.are.small,.the.calibra |
| 13e80 | 74 69 6f 6e 20 69 73 20 69 6d 70 6f 73 73 69 62 6c 65 2e 0a 20 20 20 25 20 69 66 20 6f 6e 65 20 | tion.is.impossible.....%.if.one. |
| 13ea0 | 6f 66 20 74 68 65 6d 20 69 73 20 73 6d 61 6c 6c 2c 20 6f 6e 6c 79 20 74 68 65 20 6f 74 68 65 72 | of.them.is.small,.only.the.other |
| 13ec0 | 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 20 69 73 20 6f 62 73 65 72 76 61 62 6c 65 0a 20 20 20 25 | .focal.length.is.observable....% |
| 13ee0 | 20 69 66 20 6e 6f 6e 65 20 69 73 20 73 6d 61 6c 6c 2c 20 62 6f 74 68 20 66 6f 63 61 6c 73 20 61 | .if.none.is.small,.both.focals.a |
| 13f00 | 72 65 20 6f 62 73 65 72 76 61 62 6c 65 0a 20 20 20 0a 20 20 20 0a 20 20 20 66 63 5f 32 20 3d 20 | re.observable............fc_2.=. |
| 13f20 | 66 63 5f 32 20 2e 2a 20 66 3b 0a 20 20 20 0a 20 20 20 20 20 20 0a 20 20 20 25 20 44 45 42 55 47 | fc_2..*.f;...............%.DEBUG |
| 13f40 | 20 50 41 52 54 3a 20 66 69 78 20 66 6f 63 61 6c 20 74 6f 20 35 30 30 2e 2e 2e 0a 20 20 20 25 66 | .PART:.fix.focal.to.500.......%f |
| 13f60 | 63 5f 32 3d 20 5b 35 30 30 3b 35 30 30 5d 3b 20 64 69 73 70 28 27 4c 69 6e 65 20 32 39 33 20 74 | c_2=.[500;500];.disp('Line.293.t |
| 13f80 | 6f 20 62 65 20 65 61 72 61 73 65 64 20 69 6e 20 44 69 73 74 6f 72 32 43 61 6c 69 62 2e 6d 27 29 | o.be.earased.in.Distor2Calib.m') |
| 13fa0 | 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 20 65 6e 64 20 6f 66 20 66 6f 63 61 6c 20 63 6f 6d 70 | ;............%.end.of.focal.comp |
| 13fc0 | 65 6e 73 61 74 69 6f 6e 0a 20 20 20 0a 20 20 20 25 20 6e 6f 72 6d 61 6c 69 7a 65 20 62 79 20 74 | ensation........%.normalize.by.t |
| 13fe0 | 68 65 20 63 75 72 72 65 6e 74 20 66 6f 63 61 6c 3a 0a 20 20 20 0a 20 20 20 78 5f 61 6c 6c 20 3d | he.current.focal:........x_all.= |
| 14000 | 20 5b 67 72 69 64 5f 70 74 73 5f 63 65 6e 74 65 72 65 64 28 31 2c 3a 29 2f 66 63 5f 32 28 31 29 | .[grid_pts_centered(1,:)/fc_2(1) |
| 14020 | 3b 67 72 69 64 5f 70 74 73 5f 63 65 6e 74 65 72 65 64 28 32 2c 3a 29 2f 66 63 5f 32 28 32 29 5d | ;grid_pts_centered(2,:)/fc_2(2)] |
| 14040 | 3b 0a 20 20 20 0a 20 20 20 25 20 43 6f 6d 70 65 6e 73 61 74 65 20 62 79 20 74 68 65 20 64 69 73 | ;........%.Compensate.by.the.dis |
| 14060 | 74 6f 72 74 69 6f 6e 20 66 61 63 74 6f 72 3a 0a 20 20 20 0a 20 20 20 78 5f 61 6c 6c 5f 63 20 3d | tortion.factor:........x_all_c.= |
| 14080 | 20 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 28 78 5f 61 6c 6c 2c 6b 5f 64 69 73 74 29 3b 0a | .comp_distortion(x_all,k_dist);. |
| 140a0 | 20 20 20 0a 65 6e 64 3b 0a 20 20 20 0a 25 20 41 74 20 74 68 61 74 20 70 6f 69 6e 74 2c 20 77 65 | ....end;.....%.At.that.point,.we |
| 140c0 | 20 68 6f 70 65 20 74 68 61 74 20 74 68 65 20 64 69 73 74 6f 72 74 69 6f 6e 20 69 73 20 67 6f 6e | .hope.that.the.distortion.is.gon |
| 140e0 | 65 2e 2e 2e 0a 0a 78 5f 67 72 69 64 28 3a 29 20 3d 20 78 5f 61 6c 6c 5f 63 28 31 2c 3a 29 3b 0a | e.....x_grid(:).=.x_all_c(1,:);. |
| 14100 | 79 5f 67 72 69 64 28 3a 29 20 3d 20 78 5f 61 6c 6c 5f 63 28 32 2c 3a 29 3b 0a 0a 66 6f 72 20 6b | y_grid(:).=.x_all_c(2,:);..for.k |
| 14120 | 3d 31 3a 6e 5f 73 71 5f 78 2b 31 2c 0a 20 20 20 5b 55 2c 53 2c 56 5d 20 3d 20 73 76 64 28 5b 78 | =1:n_sq_x+1,....[U,S,V].=.svd([x |
| 14140 | 5f 67 72 69 64 28 6b 2c 3a 29 3b 79 5f 67 72 69 64 28 6b 2c 3a 29 3b 6f 6e 65 73 28 31 2c 6e 5f | _grid(k,:);y_grid(k,:);ones(1,n_ |
| 14160 | 73 71 5f 79 2b 31 29 5d 29 3b 0a 20 20 20 76 65 72 74 28 3a 2c 6b 29 20 3d 20 55 28 3a 2c 33 29 | sq_y+1)]);....vert(:,k).=.U(:,3) |
| 14180 | 3b 0a 65 6e 64 3b 0a 0a 66 6f 72 20 6b 3d 31 3a 6e 5f 73 71 5f 79 2b 31 2c 0a 20 20 20 5b 55 2c | ;.end;..for.k=1:n_sq_y+1,....[U, |
| 141a0 | 53 2c 56 5d 20 3d 20 73 76 64 28 5b 78 5f 67 72 69 64 28 3a 2c 6b 29 27 3b 79 5f 67 72 69 64 28 | S,V].=.svd([x_grid(:,k)';y_grid( |
| 141c0 | 3a 2c 6b 29 27 3b 6f 6e 65 73 28 31 2c 6e 5f 73 71 5f 78 2b 31 29 5d 29 3b 0a 20 20 20 68 6f 72 | :,k)';ones(1,n_sq_x+1)]);....hor |
| 141e0 | 69 28 3a 2c 6b 29 20 3d 20 55 28 3a 2c 33 29 3b 0a 65 6e 64 3b 0a 0a 25 20 56 61 6e 69 73 68 69 | i(:,k).=.U(:,3);.end;..%.Vanishi |
| 14200 | 6e 67 20 70 6f 69 6e 74 73 3a 0a 5b 55 2c 53 2c 56 5d 20 3d 20 73 76 64 28 76 65 72 74 29 3b 0a | ng.points:.[U,S,V].=.svd(vert);. |
| 14220 | 56 5f 76 65 72 74 20 3d 20 55 28 3a 2c 33 29 3b 0a 5b 55 2c 53 2c 56 5d 20 3d 20 73 76 64 28 68 | V_vert.=.U(:,3);.[U,S,V].=.svd(h |
| 14240 | 6f 72 69 29 3b 0a 56 5f 68 6f 72 69 20 3d 20 55 28 3a 2c 33 29 3b 0a 0a 25 20 48 6f 72 69 7a 6f | ori);.V_hori.=.U(:,3);..%.Horizo |
| 14260 | 6e 3a 0a 0a 48 5f 32 20 3d 20 63 72 6f 73 73 28 56 5f 76 65 72 74 2c 56 5f 68 6f 72 69 29 3b 0a | n:..H_2.=.cross(V_vert,V_hori);. |
| 14280 | 20 20 20 0a 25 20 20 20 48 5f 32 20 3d 20 63 72 6f 73 73 28 56 5f 76 65 72 74 2c 56 5f 68 6f 72 | ....%...H_2.=.cross(V_vert,V_hor |
| 142a0 | 69 29 3b 0a 0a 25 20 70 69 63 6b 20 61 20 70 6c 61 6e 65 20 69 6e 20 66 72 6f 6e 74 20 6f 66 20 | i);..%.pick.a.plane.in.front.of. |
| 142c0 | 74 68 65 20 63 61 6d 65 72 61 20 28 70 6f 73 69 74 69 76 65 20 64 65 70 74 68 29 0a 69 66 20 48 | the.camera.(positive.depth).if.H |
| 142e0 | 5f 32 28 33 29 20 3c 20 30 2c 20 48 5f 32 20 3d 20 2d 48 5f 32 3b 20 65 6e 64 3b 0a 0a 0a 25 20 | _2(3).<.0,.H_2.=.-H_2;.end;...%. |
| 14300 | 52 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 78 3a 0a 0a 69 66 20 56 5f 68 6f 72 69 28 31 29 20 3c | Rotation.matrix:..if.V_hori(1).< |
| 14320 | 20 30 2c 20 56 5f 68 6f 72 69 20 3d 20 2d 56 5f 68 6f 72 69 3b 20 65 6e 64 3b 0a 0a 56 5f 68 6f | .0,.V_hori.=.-V_hori;.end;..V_ho |
| 14340 | 72 69 20 3d 20 56 5f 68 6f 72 69 2f 6e 6f 72 6d 28 56 5f 68 6f 72 69 29 3b 0a 48 5f 32 20 3d 20 | ri.=.V_hori/norm(V_hori);.H_2.=. |
| 14360 | 48 5f 32 2f 6e 6f 72 6d 28 48 5f 32 29 3b 0a 0a 56 5f 68 6f 72 69 20 3d 20 56 5f 68 6f 72 69 20 | H_2/norm(H_2);..V_hori.=.V_hori. |
| 14380 | 2d 20 64 6f 74 28 56 5f 68 6f 72 69 2c 48 5f 32 29 2a 48 5f 32 3b 0a 0a 52 63 5f 32 20 3d 20 5b | -.dot(V_hori,H_2)*H_2;..Rc_2.=.[ |
| 143a0 | 56 5f 68 6f 72 69 20 63 72 6f 73 73 28 48 5f 32 2c 56 5f 68 6f 72 69 29 20 48 5f 32 5d 3b 0a 0a | V_hori.cross(H_2,V_hori).H_2];.. |
| 143c0 | 52 63 5f 32 20 3d 20 52 63 5f 32 20 2f 20 64 65 74 28 52 63 5f 32 29 3b 0a 0a 25 6f 6d 63 5f 32 | Rc_2.=.Rc_2./.det(Rc_2);..%omc_2 |
| 143e0 | 20 3d 20 72 6f 64 72 69 67 75 65 73 28 52 63 5f 32 29 3b 0a 0a 25 52 63 5f 32 20 3d 20 72 6f 64 | .=.rodrigues(Rc_2);..%Rc_2.=.rod |
| 14400 | 72 69 67 75 65 73 28 6f 6d 63 5f 32 29 3b 0a 0a 25 20 46 69 6e 64 20 74 68 65 20 64 69 73 74 61 | rigues(omc_2);..%.Find.the.dista |
| 14420 | 6e 63 65 20 6f 66 20 74 68 65 20 70 6c 61 6e 65 20 66 6f 72 20 74 72 61 6e 73 6c 61 74 69 6f 6e | nce.of.the.plane.for.translation |
| 14440 | 20 76 65 63 74 6f 72 3a 0a 0a 78 63 5f 32 20 3d 20 5b 78 5f 61 6c 6c 5f 63 3b 6f 6e 65 73 28 31 | .vector:..xc_2.=.[x_all_c;ones(1 |
| 14460 | 2c 4e 70 29 5d 3b 0a 0a 5a 63 5f 32 20 3d 20 31 2e 2f 73 75 6d 28 78 63 5f 32 20 2e 2a 20 28 52 | ,Np)];..Zc_2.=.1./sum(xc_2..*.(R |
| 14480 | 63 5f 32 28 3a 2c 33 29 2a 6f 6e 65 73 28 31 2c 4e 70 29 29 29 3b 0a 0a 58 6f 5f 32 20 3d 20 5b | c_2(:,3)*ones(1,Np)));..Xo_2.=.[ |
| 144a0 | 73 75 6d 28 78 63 5f 32 20 2e 2a 20 28 52 63 5f 32 28 3a 2c 31 29 2a 6f 6e 65 73 28 31 2c 4e 70 | sum(xc_2..*.(Rc_2(:,1)*ones(1,Np |
| 144c0 | 29 29 29 2e 2a 5a 63 5f 32 20 3b 20 73 75 6d 28 78 63 5f 32 20 2e 2a 20 28 52 63 5f 32 28 3a 2c | ))).*Zc_2.;.sum(xc_2..*.(Rc_2(:, |
| 144e0 | 32 29 2a 6f 6e 65 73 28 31 2c 4e 70 29 29 29 2e 2a 5a 63 5f 32 5d 3b 0a 0a 58 58 6f 5f 32 20 3d | 2)*ones(1,Np))).*Zc_2];..XXo_2.= |
| 14500 | 20 58 6f 5f 32 20 2d 20 6d 65 61 6e 28 58 6f 5f 32 27 29 27 2a 6f 6e 65 73 28 31 2c 4e 70 29 3b | .Xo_2.-.mean(Xo_2')'*ones(1,Np); |
| 14520 | 0a 0a 64 69 73 74 61 6e 63 65 5f 78 20 3d 20 6e 6f 72 6d 28 58 67 72 69 64 5f 32 28 31 2c 3a 29 | ..distance_x.=.norm(Xgrid_2(1,:) |
| 14540 | 29 2f 6e 6f 72 6d 28 58 58 6f 5f 32 28 31 2c 3a 29 29 3b 0a 64 69 73 74 61 6e 63 65 5f 79 20 3d | )/norm(XXo_2(1,:));.distance_y.= |
| 14560 | 20 6e 6f 72 6d 28 58 67 72 69 64 5f 32 28 32 2c 3a 29 29 2f 6e 6f 72 6d 28 58 58 6f 5f 32 28 32 | .norm(Xgrid_2(2,:))/norm(XXo_2(2 |
| 14580 | 2c 3a 29 29 3b 0a 0a 0a 64 69 73 74 61 6e 63 65 20 3d 20 73 75 6d 28 73 75 6d 28 58 58 6f 5f 32 | ,:));...distance.=.sum(sum(XXo_2 |
| 145a0 | 28 31 3a 32 2c 3a 29 2e 2a 58 67 72 69 64 5f 32 28 31 3a 32 2c 3a 29 29 29 2f 73 75 6d 28 73 75 | (1:2,:).*Xgrid_2(1:2,:)))/sum(su |
| 145c0 | 6d 28 58 58 6f 5f 32 28 31 3a 32 2c 3a 29 2e 5e 32 29 29 3b 0a 0a 61 6c 70 68 61 20 3d 20 61 62 | m(XXo_2(1:2,:).^2));..alpha.=.ab |
| 145e0 | 73 28 64 69 73 74 61 6e 63 65 5f 78 20 2d 20 64 69 73 74 61 6e 63 65 5f 79 29 2f 64 69 73 74 61 | s(distance_x.-.distance_y)/dista |
| 14600 | 6e 63 65 3b 0a 0a 69 66 20 28 61 6c 70 68 61 3e 30 2e 31 29 26 7e 74 77 6f 5f 66 6f 63 61 6c 2c | nce;..if.(alpha>0.1)&~two_focal, |
| 14620 | 0a 20 20 20 64 69 73 70 28 27 53 68 6f 75 6c 64 20 75 73 65 20 74 77 6f 20 66 6f 63 61 6c 73 20 | ....disp('Should.use.two.focals. |
| 14640 | 69 6e 20 78 20 61 6e 64 20 79 2e 2e 2e 27 29 3b 0a 65 6e 64 3b 0a 0a 25 20 44 65 64 75 63 65 20 | in.x.and.y...');.end;..%.Deduce. |
| 14660 | 74 68 65 20 74 72 61 6e 73 6c 61 74 69 6f 6e 20 76 65 63 74 6f 72 3a 0a 0a 54 63 5f 32 20 3d 20 | the.translation.vector:..Tc_2.=. |
| 14680 | 64 69 73 74 61 6e 63 65 20 2a 20 48 5f 32 3b 0a 0a 0a 0a 0a 0a 72 65 74 75 72 6e 3b 0a 0a 20 20 | distance.*.H_2;......return;.... |
| 146a0 | 20 56 5f 68 6f 72 69 5f 70 69 78 2f 56 5f 68 6f 72 69 5f 70 69 78 28 33 29 0a 20 20 20 56 5f 76 | .V_hori_pix/V_hori_pix(3)....V_v |
| 146c0 | 65 72 74 5f 70 69 78 2f 56 5f 76 65 72 74 5f 70 69 78 28 33 29 0a 20 20 20 56 5f 64 69 61 67 31 | ert_pix/V_vert_pix(3)....V_diag1 |
| 146e0 | 5f 70 69 78 2f 56 5f 64 69 61 67 31 5f 70 69 78 28 33 29 0a 20 20 20 56 5f 64 69 61 67 32 5f 70 | _pix/V_diag1_pix(3)....V_diag2_p |
| 14700 | 69 78 2f 56 5f 64 69 61 67 32 5f 70 69 78 28 33 29 0a 2c 33 29 3b 0a 20 20 20 65 6e 64 3b 0a 20 | ix/V_diag2_pix(3).,3);....end;.. |
| 14720 | 20 20 0a 20 20 20 66 6f 72 20 6b 3d 31 3a 6e 5f 73 71 5f 79 2b 31 2c 0a 20 20 20 20 20 20 5b 55 | ......for.k=1:n_sq_y+1,.......[U |
| 14740 | 2c 53 2c 56 5d 20 3d 20 73 76 64 28 5b 78 5f 67 72 69 64 28 3a 2c 6b 29 27 3b 79 5f 67 72 69 64 | ,S,V].=.svd([x_grid(:,k)';y_grid |
| 14760 | 28 3a 2c 6b 29 27 3b 6f 6e 65 73 28 31 2c 6e 5f 73 71 5f 78 2b 31 29 5d 29 3b 0a 20 20 20 20 20 | (:,k)';ones(1,n_sq_x+1)]);...... |
| 14780 | 20 68 6f 72 69 28 3a 2c 6b 29 20 3d 20 55 28 3a 2c 33 29 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 | .hori(:,k).=.U(:,3);....end;.... |
| 147a0 | 0a 20 20 20 25 20 32 20 70 72 69 6e 63 69 70 6c 65 20 56 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e | ....%.2.principle.Vanishing.poin |
| 147c0 | 74 73 3a 0a 20 20 20 5b 55 2c 53 2c 56 5d 20 3d 20 73 76 64 28 76 65 72 74 29 3b 0a 20 20 20 56 | ts:....[U,S,V].=.svd(vert);....V |
| 147e0 | 5f 76 65 72 74 20 3d 20 55 28 3a 2c 33 29 3b 0a 20 20 20 5b 55 2c 53 2c 56 5d 20 3d 20 73 76 64 | _vert.=.U(:,3);....[U,S,V].=.svd |
| 14800 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 65 78 74 72 61 63 74 5f 67 72 69 64 2e 6d 00 00 00 00 | TOOLBOX_calib/extract_grid.m.... |
| 14820 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 14840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 14860 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 14880 | 20 20 31 35 30 33 30 20 20 37 30 32 34 30 33 37 33 32 31 20 20 31 31 32 37 30 00 20 00 00 00 00 | ..15030..7024037321..11270...... |
| 148a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 148c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 148e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 14900 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 14920 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 14940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 14960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 14980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 149a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 149c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 149e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 14a00 | 66 75 6e 63 74 69 6f 6e 20 5b 78 2c 58 2c 6e 5f 73 71 5f 78 2c 6e 5f 73 71 5f 79 2c 69 6e 64 5f | function.[x,X,n_sq_x,n_sq_y,ind_ |
| 14a20 | 6f 72 69 67 2c 69 6e 64 5f 78 2c 69 6e 64 5f 79 5d 20 3d 20 65 78 74 72 61 63 74 5f 67 72 69 64 | orig,ind_x,ind_y].=.extract_grid |
| 14a40 | 28 49 2c 77 69 6e 74 78 2c 77 69 6e 74 79 2c 66 63 2c 63 63 2c 6b 63 29 3b 0a 0a 6d 61 70 20 3d | (I,wintx,winty,fc,cc,kc);..map.= |
| 14a60 | 20 67 72 61 79 28 32 35 36 29 3b 0a 0a 09 66 69 67 75 72 65 28 32 29 3b 0a 09 69 6d 61 67 65 28 | .gray(256);...figure(2);..image( |
| 14a80 | 49 29 3b 0a 20 20 20 63 6f 6c 6f 72 6d 61 70 28 6d 61 70 29 3b 0a 20 20 20 0a 20 20 20 0a 20 20 | I);....colormap(map);........... |
| 14aa0 | 20 69 66 20 6e 61 72 67 69 6e 20 3c 20 32 2c 0a 20 20 20 20 20 20 0a 09 09 64 69 73 70 28 27 57 | .if.nargin.<.2,..........disp('W |
| 14ac0 | 69 6e 64 6f 77 20 73 69 7a 65 20 66 6f 72 20 63 6f 72 6e 65 72 20 66 69 6e 64 65 72 20 28 77 69 | indow.size.for.corner.finder.(wi |
| 14ae0 | 6e 74 78 20 61 6e 64 20 77 69 6e 74 79 29 3a 27 29 3b 0a 09 09 77 69 6e 74 78 20 3d 20 69 6e 70 | ntx.and.winty):');...wintx.=.inp |
| 14b00 | 75 74 28 27 77 69 6e 74 78 20 28 5b 5d 20 3d 20 35 29 20 3d 20 27 29 3b 0a 09 09 69 66 20 69 73 | ut('wintx.([].=.5).=.');...if.is |
| 14b20 | 65 6d 70 74 79 28 77 69 6e 74 78 29 2c 20 77 69 6e 74 78 20 3d 20 35 3b 20 65 6e 64 3b 0a 09 09 | empty(wintx),.wintx.=.5;.end;... |
| 14b40 | 77 69 6e 74 78 20 3d 20 72 6f 75 6e 64 28 77 69 6e 74 78 29 3b 0a 09 09 77 69 6e 74 79 20 3d 20 | wintx.=.round(wintx);...winty.=. |
| 14b60 | 69 6e 70 75 74 28 27 77 69 6e 74 79 20 28 5b 5d 20 3d 20 35 29 20 3d 20 27 29 3b 0a 09 09 69 66 | input('winty.([].=.5).=.');...if |
| 14b80 | 20 69 73 65 6d 70 74 79 28 77 69 6e 74 79 29 2c 20 77 69 6e 74 79 20 3d 20 35 3b 20 65 6e 64 3b | .isempty(winty),.winty.=.5;.end; |
| 14ba0 | 0a 09 09 77 69 6e 74 79 20 3d 20 72 6f 75 6e 64 28 77 69 6e 74 79 29 3b 0a 0a 09 09 66 70 72 69 | ...winty.=.round(winty);....fpri |
| 14bc0 | 6e 74 66 28 31 2c 27 57 69 6e 64 6f 77 20 73 69 7a 65 20 3d 20 25 64 78 25 64 5c 6e 27 2c 32 2a | ntf(1,'Window.size.=.%dx%d\n',2* |
| 14be0 | 77 69 6e 74 78 2b 31 2c 32 2a 77 69 6e 74 79 2b 31 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e | wintx+1,2*winty+1);...........en |
| 14c00 | 64 3b 0a 20 20 20 0a 0a 20 20 20 0a 20 20 20 74 69 74 6c 65 28 27 43 6c 69 63 6b 20 6f 6e 20 74 | d;.............title('Click.on.t |
| 14c20 | 68 65 20 66 6f 75 72 20 65 78 74 72 65 6d 65 20 63 6f 72 6e 65 72 73 20 6f 66 20 74 68 65 20 72 | he.four.extreme.corners.of.the.r |
| 14c40 | 65 63 74 61 6e 67 75 6c 61 72 20 70 61 74 74 65 72 6e 2e 2e 2e 27 29 3b 0a 20 20 20 0a 20 20 20 | ectangular.pattern...');........ |
| 14c60 | 64 69 73 70 28 27 43 6c 69 63 6b 20 6f 6e 20 74 68 65 20 66 6f 75 72 20 65 78 74 72 65 6d 65 20 | disp('Click.on.the.four.extreme. |
| 14c80 | 63 6f 72 6e 65 72 73 20 6f 66 20 74 68 65 20 72 65 63 74 61 6e 67 75 6c 61 72 20 63 6f 6d 70 6c | corners.of.the.rectangular.compl |
| 14ca0 | 65 74 65 20 70 61 74 74 65 72 6e 2e 2e 2e 27 29 3b 0a 20 20 20 0a 20 20 20 5b 78 2c 79 5d 20 3d | ete.pattern...');........[x,y].= |
| 14cc0 | 20 67 69 6e 70 75 74 33 28 34 29 3b 0a 20 20 20 0a 20 20 20 5b 58 63 2c 67 6f 6f 64 2c 62 61 64 | .ginput3(4);........[Xc,good,bad |
| 14ce0 | 2c 74 79 70 65 5d 20 3d 20 63 6f 72 6e 65 72 66 69 6e 64 65 72 28 5b 78 27 3b 79 27 5d 2c 49 2c | ,type].=.cornerfinder([x';y'],I, |
| 14d00 | 77 69 6e 74 79 2c 77 69 6e 74 78 29 3b 20 25 20 74 68 65 20 66 6f 75 72 20 63 6f 72 6e 65 72 73 | winty,wintx);.%.the.four.corners |
| 14d20 | 0a 20 20 20 0a 20 20 20 78 20 3d 20 58 63 28 31 2c 3a 29 27 3b 0a 20 20 20 79 20 3d 20 58 63 28 | ........x.=.Xc(1,:)';....y.=.Xc( |
| 14d40 | 32 2c 3a 29 27 3b 0a 20 20 20 0a 20 20 20 5b 79 2c 69 6e 64 79 5d 20 3d 20 73 6f 72 74 28 79 29 | 2,:)';........[y,indy].=.sort(y) |
| 14d60 | 3b 0a 20 20 20 78 20 3d 20 78 28 69 6e 64 79 29 3b 0a 20 20 20 0a 20 20 20 69 66 20 28 78 28 32 | ;....x.=.x(indy);........if.(x(2 |
| 14d80 | 29 20 3e 20 78 28 31 29 29 2c 0a 20 20 20 20 20 20 78 34 20 3d 20 78 28 31 29 3b 79 34 20 3d 20 | ).>.x(1)),.......x4.=.x(1);y4.=. |
| 14da0 | 79 28 31 29 3b 20 78 33 20 3d 20 78 28 32 29 3b 20 79 33 20 3d 20 79 28 32 29 3b 0a 20 20 20 65 | y(1);.x3.=.x(2);.y3.=.y(2);....e |
| 14dc0 | 6c 73 65 0a 20 20 20 20 20 20 78 34 20 3d 20 78 28 32 29 3b 79 34 20 3d 20 79 28 32 29 3b 20 78 | lse.......x4.=.x(2);y4.=.y(2);.x |
| 14de0 | 33 20 3d 20 78 28 31 29 3b 20 79 33 20 3d 20 79 28 31 29 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 | 3.=.x(1);.y3.=.y(1);....end;.... |
| 14e00 | 69 66 20 28 78 28 33 29 20 3e 20 78 28 34 29 29 2c 0a 20 20 20 20 20 20 78 32 20 3d 20 78 28 33 | if.(x(3).>.x(4)),.......x2.=.x(3 |
| 14e20 | 29 3b 79 32 20 3d 20 79 28 33 29 3b 20 78 31 20 3d 20 78 28 34 29 3b 20 79 31 20 3d 20 79 28 34 | );y2.=.y(3);.x1.=.x(4);.y1.=.y(4 |
| 14e40 | 29 3b 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 78 32 20 3d 20 78 28 34 29 3b 79 32 20 3d 20 | );....else.......x2.=.x(4);y2.=. |
| 14e60 | 79 28 34 29 3b 20 78 31 20 3d 20 78 28 33 29 3b 20 79 31 20 3d 20 79 28 33 29 3b 0a 20 20 20 65 | y(4);.x1.=.x(3);.y1.=.y(3);....e |
| 14e80 | 6e 64 3b 0a 20 20 20 0a 20 20 20 78 20 3d 20 5b 78 31 3b 78 32 3b 78 33 3b 78 34 5d 3b 0a 20 20 | nd;........x.=.[x1;x2;x3;x4];... |
| 14ea0 | 20 79 20 3d 20 5b 79 31 3b 79 32 3b 79 33 3b 79 34 5d 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 66 | .y.=.[y1;y2;y3;y4];............f |
| 14ec0 | 69 67 75 72 65 28 32 29 3b 20 68 6f 6c 64 20 6f 6e 3b 0a 20 20 20 70 6c 6f 74 28 5b 78 3b 78 28 | igure(2);.hold.on;....plot([x;x( |
| 14ee0 | 31 29 5d 2c 5b 79 3b 79 28 31 29 5d 2c 27 67 2d 27 29 3b 0a 20 20 20 70 6c 6f 74 28 78 2c 79 2c | 1)],[y;y(1)],'g-');....plot(x,y, |
| 14f00 | 27 6f 67 27 29 3b 0a 20 20 20 68 78 3d 74 65 78 74 28 28 78 28 34 29 2b 78 28 33 29 29 2f 32 2c | 'og');....hx=text((x(4)+x(3))/2, |
| 14f20 | 28 79 28 34 29 2b 79 28 33 29 29 2f 32 20 2d 20 32 30 2c 27 58 27 29 3b 0a 20 20 20 73 65 74 28 | (y(4)+y(3))/2.-.20,'X');....set( |
| 14f40 | 68 78 2c 27 63 6f 6c 6f 72 27 2c 27 67 27 2c 27 46 6f 6e 74 73 69 7a 65 27 2c 31 34 29 3b 0a 20 | hx,'color','g','Fontsize',14);.. |
| 14f60 | 20 20 68 79 3d 74 65 78 74 28 28 78 28 34 29 2b 78 28 31 29 29 2f 32 2d 32 30 2c 28 79 28 34 29 | ..hy=text((x(4)+x(1))/2-20,(y(4) |
| 14f80 | 2b 79 28 31 29 29 2f 32 2c 27 59 27 29 3b 0a 20 20 20 73 65 74 28 68 79 2c 27 63 6f 6c 6f 72 27 | +y(1))/2,'Y');....set(hy,'color' |
| 14fa0 | 2c 27 67 27 2c 27 46 6f 6e 74 73 69 7a 65 27 2c 31 34 29 3b 0a 20 20 20 68 6f 6c 64 20 6f 66 66 | ,'g','Fontsize',14);....hold.off |
| 14fc0 | 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 20 54 72 79 20 74 6f 20 61 75 74 6f 6d 61 74 69 63 61 | ;............%.Try.to.automatica |
| 14fe0 | 6c 6c 79 20 63 6f 75 6e 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 71 75 61 72 65 73 20 | lly.count.the.number.of.squares. |
| 15000 | 69 6e 20 74 68 65 20 67 72 69 64 0a 20 20 20 0a 20 20 20 6e 5f 73 71 5f 78 31 20 3d 20 63 6f 75 | in.the.grid........n_sq_x1.=.cou |
| 15020 | 6e 74 5f 73 71 75 61 72 65 73 28 49 2c 78 31 2c 79 31 2c 78 32 2c 79 32 2c 77 69 6e 74 78 29 3b | nt_squares(I,x1,y1,x2,y2,wintx); |
| 15040 | 0a 20 20 20 6e 5f 73 71 5f 78 32 20 3d 20 63 6f 75 6e 74 5f 73 71 75 61 72 65 73 28 49 2c 78 33 | ....n_sq_x2.=.count_squares(I,x3 |
| 15060 | 2c 79 33 2c 78 34 2c 79 34 2c 77 69 6e 74 78 29 3b 0a 20 20 20 6e 5f 73 71 5f 79 31 20 3d 20 63 | ,y3,x4,y4,wintx);....n_sq_y1.=.c |
| 15080 | 6f 75 6e 74 5f 73 71 75 61 72 65 73 28 49 2c 78 32 2c 79 32 2c 78 33 2c 79 33 2c 77 69 6e 74 78 | ount_squares(I,x2,y2,x3,y3,wintx |
| 150a0 | 29 3b 0a 20 20 20 6e 5f 73 71 5f 79 32 20 3d 20 63 6f 75 6e 74 5f 73 71 75 61 72 65 73 28 49 2c | );....n_sq_y2.=.count_squares(I, |
| 150c0 | 78 34 2c 79 34 2c 78 31 2c 79 31 2c 77 69 6e 74 78 29 3b 0a 20 20 20 0a 20 20 0a 20 20 20 0a 20 | x4,y4,x1,y1,wintx);............. |
| 150e0 | 20 20 25 20 49 66 20 63 6f 75 6c 64 20 6e 6f 74 20 63 6f 75 6e 74 20 74 68 65 20 6e 75 6d 62 65 | ..%.If.could.not.count.the.numbe |
| 15100 | 72 20 6f 66 20 73 71 75 61 72 65 73 2c 20 65 6e 74 65 72 20 6d 61 6e 75 61 6c 6c 79 0a 20 20 20 | r.of.squares,.enter.manually.... |
| 15120 | 0a 20 20 20 69 66 20 28 6e 5f 73 71 5f 78 31 7e 3d 6e 5f 73 71 5f 78 32 29 7c 28 6e 5f 73 71 5f | ....if.(n_sq_x1~=n_sq_x2)|(n_sq_ |
| 15140 | 79 31 7e 3d 6e 5f 73 71 5f 79 32 29 2c 0a 20 20 20 20 20 20 0a 0a 09 20 64 69 73 70 28 27 43 6f | y1~=n_sq_y2),...........disp('Co |
| 15160 | 75 6c 64 20 6e 6f 74 20 63 6f 75 6e 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 71 75 61 | uld.not.count.the.number.of.squa |
| 15180 | 72 65 73 20 69 6e 20 74 68 65 20 67 72 69 64 2e 20 45 6e 74 65 72 20 6d 61 6e 75 61 6c 6c 79 2e | res.in.the.grid..Enter.manually. |
| 151a0 | 27 29 3b 0a 09 20 6e 5f 73 71 5f 78 20 3d 20 69 6e 70 75 74 28 27 4e 75 6d 62 65 72 20 6f 66 20 | ');...n_sq_x.=.input('Number.of. |
| 151c0 | 73 71 75 61 72 65 73 20 61 6c 6f 6e 67 20 74 68 65 20 58 20 64 69 72 65 63 74 69 6f 6e 20 28 5b | squares.along.the.X.direction.([ |
| 151e0 | 5d 3d 31 30 29 20 3d 20 27 29 3b 20 25 36 0a 09 20 69 66 20 69 73 65 6d 70 74 79 28 6e 5f 73 71 | ]=10).=.');.%6...if.isempty(n_sq |
| 15200 | 5f 78 29 2c 20 6e 5f 73 71 5f 78 20 3d 20 31 30 3b 20 65 6e 64 3b 0a 09 20 6e 5f 73 71 5f 79 20 | _x),.n_sq_x.=.10;.end;...n_sq_y. |
| 15220 | 3d 20 69 6e 70 75 74 28 27 4e 75 6d 62 65 72 20 6f 66 20 73 71 75 61 72 65 73 20 61 6c 6f 6e 67 | =.input('Number.of.squares.along |
| 15240 | 20 74 68 65 20 59 20 64 69 72 65 63 74 69 6f 6e 20 28 5b 5d 3d 31 30 29 20 3d 20 27 29 3b 20 25 | .the.Y.direction.([]=10).=.');.% |
| 15260 | 36 0a 09 20 69 66 20 69 73 65 6d 70 74 79 28 6e 5f 73 71 5f 79 29 2c 20 6e 5f 73 71 5f 79 20 3d | 6...if.isempty(n_sq_y),.n_sq_y.= |
| 15280 | 20 31 30 3b 20 65 6e 64 3b 20 0a 20 20 20 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 | .10;.end;.........else.......... |
| 152a0 | 20 20 20 20 20 20 0a 20 20 20 20 20 20 6e 5f 73 71 5f 78 20 3d 20 6e 5f 73 71 5f 78 31 3b 0a 20 | .............n_sq_x.=.n_sq_x1;.. |
| 152c0 | 20 20 20 20 20 6e 5f 73 71 5f 79 20 3d 20 6e 5f 73 71 5f 79 31 3b 0a 20 20 20 20 20 20 0a 20 20 | .....n_sq_y.=.n_sq_y1;.......... |
| 152e0 | 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 20 45 6e 74 65 72 20 74 68 65 20 73 69 7a | .end;............%.Enter.the.siz |
| 15300 | 65 20 6f 66 20 65 61 63 68 20 73 71 75 61 72 65 0a 20 20 20 0a 20 20 20 64 58 20 3d 20 69 6e 70 | e.of.each.square........dX.=.inp |
| 15320 | 75 74 28 5b 27 53 69 7a 65 20 64 58 20 6f 66 20 65 61 63 68 20 73 71 75 61 72 65 20 61 6c 6f 6e | ut(['Size.dX.of.each.square.alon |
| 15340 | 67 20 74 68 65 20 58 20 64 69 72 65 63 74 69 6f 6e 20 28 5b 5d 3d 33 63 6d 29 20 3d 20 27 5d 29 | g.the.X.direction.([]=3cm).=.']) |
| 15360 | 3b 0a 20 20 09 64 59 20 3d 20 69 6e 70 75 74 28 5b 27 53 69 7a 65 20 64 59 20 6f 66 20 65 61 63 | ;....dY.=.input(['Size.dY.of.eac |
| 15380 | 68 20 73 71 75 61 72 65 20 61 6c 6f 6e 67 20 74 68 65 20 59 20 64 69 72 65 63 74 69 6f 6e 20 28 | h.square.along.the.Y.direction.( |
| 153a0 | 5b 5d 3d 33 63 6d 29 20 3d 20 27 5d 29 3b 0a 09 69 66 20 69 73 65 6d 70 74 79 28 64 58 29 2c 20 | []=3cm).=.']);..if.isempty(dX),. |
| 153c0 | 64 58 20 3d 20 33 3b 20 65 6e 64 3b 0a 09 69 66 20 69 73 65 6d 70 74 79 28 64 59 29 2c 20 64 59 | dX.=.3;.end;..if.isempty(dY),.dY |
| 153e0 | 20 3d 20 33 3b 20 65 6e 64 3b 0a 09 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 20 43 6f 6d 70 75 74 | .=.3;.end;..............%.Comput |
| 15400 | 65 20 74 68 65 20 69 6e 73 69 64 65 20 70 6f 69 6e 74 73 20 74 68 72 6f 75 67 68 20 63 6f 6d 70 | e.the.inside.points.through.comp |
| 15420 | 75 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 70 6c 61 6e 61 72 20 68 6f 6d 6f 67 72 61 70 68 79 | utation.of.the.planar.homography |
| 15440 | 20 28 63 6f 6c 6c 69 6e 65 61 74 69 6f 6e 29 0a 20 20 20 0a 09 61 30 30 20 3d 20 5b 78 28 31 29 | .(collineation)......a00.=.[x(1) |
| 15460 | 3b 79 28 31 29 3b 31 5d 3b 0a 09 61 31 30 20 3d 20 5b 78 28 32 29 3b 79 28 32 29 3b 31 5d 3b 0a | ;y(1);1];..a10.=.[x(2);y(2);1];. |
| 15480 | 09 61 31 31 20 3d 20 5b 78 28 33 29 3b 79 28 33 29 3b 31 5d 3b 0a 09 61 30 31 20 3d 20 5b 78 28 | .a11.=.[x(3);y(3);1];..a01.=.[x( |
| 154a0 | 34 29 3b 79 28 34 29 3b 31 5d 3b 0a 0a 0a 09 25 20 43 6f 6d 70 75 74 65 20 74 68 65 20 70 6c 61 | 4);y(4);1];....%.Compute.the.pla |
| 154c0 | 6e 61 72 74 20 63 6f 6c 6c 69 6e 65 61 74 69 6f 6e 3a 20 28 72 65 74 75 72 6e 20 74 68 65 20 6e | nart.collineation:.(return.the.n |
| 154e0 | 6f 72 6d 61 6c 69 7a 61 74 69 6f 6e 20 6d 61 74 72 69 63 65 20 61 73 20 77 65 6c 6c 29 0a 20 20 | ormalization.matrice.as.well)... |
| 15500 | 20 0a 20 20 20 5b 48 6f 6d 6f 2c 48 6e 6f 72 6d 2c 69 6e 76 5f 48 6e 6f 72 6d 5d 20 3d 20 63 6f | .....[Homo,Hnorm,inv_Hnorm].=.co |
| 15520 | 6d 70 75 74 65 5f 68 6f 6d 6f 67 72 61 70 68 79 20 28 5b 61 30 30 20 61 31 30 20 61 31 31 20 61 | mpute_homography.([a00.a10.a11.a |
| 15540 | 30 31 5d 2c 5b 30 20 31 20 31 20 30 3b 30 20 30 20 31 20 31 3b 31 20 31 20 31 20 31 5d 29 3b 0a | 01],[0.1.1.0;0.0.1.1;1.1.1.1]);. |
| 15560 | 20 20 20 0a 20 20 20 0a 09 25 20 42 75 69 6c 64 20 74 68 65 20 67 72 69 64 20 75 73 69 6e 67 20 | .........%.Build.the.grid.using. |
| 15580 | 74 68 65 20 70 6c 61 6e 61 72 20 63 6f 6c 6c 69 6e 65 61 74 69 6f 6e 3a 0a 0a 09 78 5f 6c 20 3d | the.planar.collineation:...x_l.= |
| 155a0 | 20 28 28 30 3a 6e 5f 73 71 5f 78 29 27 2a 6f 6e 65 73 28 31 2c 6e 5f 73 71 5f 79 2b 31 29 29 2f | .((0:n_sq_x)'*ones(1,n_sq_y+1))/ |
| 155c0 | 6e 5f 73 71 5f 78 3b 0a 20 20 20 79 5f 6c 20 3d 20 28 6f 6e 65 73 28 6e 5f 73 71 5f 78 2b 31 2c | n_sq_x;....y_l.=.(ones(n_sq_x+1, |
| 155e0 | 31 29 2a 28 30 3a 6e 5f 73 71 5f 79 29 29 2f 6e 5f 73 71 5f 79 3b 0a 20 20 20 70 74 73 20 3d 20 | 1)*(0:n_sq_y))/n_sq_y;....pts.=. |
| 15600 | 5b 78 5f 6c 28 3a 29 20 79 5f 6c 28 3a 29 20 6f 6e 65 73 28 28 6e 5f 73 71 5f 78 2b 31 29 2a 28 | [x_l(:).y_l(:).ones((n_sq_x+1)*( |
| 15620 | 6e 5f 73 71 5f 79 2b 31 29 2c 31 29 5d 27 3b 0a 20 20 20 0a 20 20 20 58 58 20 3d 20 48 6f 6d 6f | n_sq_y+1),1)]';........XX.=.Homo |
| 15640 | 2a 70 74 73 3b 0a 09 58 58 20 3d 20 58 58 28 31 3a 32 2c 3a 29 20 2e 2f 20 28 6f 6e 65 73 28 32 | *pts;..XX.=.XX(1:2,:)../.(ones(2 |
| 15660 | 2c 31 29 2a 58 58 28 33 2c 3a 29 29 3b 0a 0a 20 20 20 0a 20 20 20 25 20 43 6f 6d 70 6c 65 74 65 | ,1)*XX(3,:));.........%.Complete |
| 15680 | 20 73 69 7a 65 20 6f 66 20 74 68 65 20 72 65 63 74 61 6e 67 6c 65 0a 20 20 20 0a 20 20 20 57 20 | .size.of.the.rectangle........W. |
| 156a0 | 3d 20 6e 5f 73 71 5f 78 2a 64 58 3b 0a 20 20 20 4c 20 3d 20 6e 5f 73 71 5f 79 2a 64 59 3b 0a 20 | =.n_sq_x*dX;....L.=.n_sq_y*dY;.. |
| 156c0 | 20 20 0a 20 20 20 0a 20 20 20 0a 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3c 20 36 2c 0a 20 20 20 | ..............if.nargin.<.6,.... |
| 156e0 | 0a 20 20 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 41 44 44 | ....%%%%%%%%%%%%%%%%%%%%%%%%.ADD |
| 15700 | 49 54 49 4f 4e 41 4c 20 53 54 55 46 46 20 49 4e 20 54 48 45 20 43 41 53 45 20 4f 46 20 48 49 47 | ITIONAL.STUFF.IN.THE.CASE.OF.HIG |
| 15720 | 48 4c 59 20 44 49 53 54 4f 52 54 45 44 20 49 4d 41 47 45 53 20 25 25 25 25 25 25 25 25 25 25 25 | HLY.DISTORTED.IMAGES.%%%%%%%%%%% |
| 15740 | 25 25 0a 20 20 20 66 69 67 75 72 65 28 32 29 3b 0a 20 20 20 68 6f 6c 64 20 6f 6e 3b 0a 20 20 20 | %%....figure(2);....hold.on;.... |
| 15760 | 70 6c 6f 74 28 58 58 28 31 2c 3a 29 2c 58 58 28 32 2c 3a 29 2c 27 72 2b 27 29 3b 0a 20 20 20 74 | plot(XX(1,:),XX(2,:),'r+');....t |
| 15780 | 69 74 6c 65 28 27 54 68 65 20 72 65 64 20 63 72 6f 73 73 65 73 20 73 68 6f 75 6c 64 20 62 65 20 | itle('The.red.crosses.should.be. |
| 157a0 | 63 6c 6f 73 65 20 74 6f 20 74 68 65 20 69 6d 61 67 65 20 63 6f 72 6e 65 72 73 27 29 3b 0a 20 20 | close.to.the.image.corners');... |
| 157c0 | 20 68 6f 6c 64 20 6f 66 66 3b 0a 20 20 20 0a 20 20 20 64 69 73 70 28 27 49 66 20 74 68 65 20 67 | .hold.off;........disp('If.the.g |
| 157e0 | 75 65 73 73 65 64 20 67 72 69 64 20 63 6f 72 6e 65 72 73 20 28 72 65 64 20 63 72 6f 73 73 65 73 | uessed.grid.corners.(red.crosses |
| 15800 | 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 29 20 61 72 65 20 6e 6f 74 20 63 6c 6f 73 65 20 74 6f 20 | .on.the.image).are.not.close.to. |
| 15820 | 74 68 65 20 61 63 74 75 61 6c 20 63 6f 72 6e 65 72 73 2c 27 29 3b 0a 20 20 20 64 69 73 70 28 27 | the.actual.corners,');....disp(' |
| 15840 | 69 74 20 69 73 20 6e 65 63 65 73 73 61 72 79 20 74 6f 20 65 6e 74 65 72 20 61 6e 20 69 6e 69 74 | it.is.necessary.to.enter.an.init |
| 15860 | 69 61 6c 20 67 75 65 73 73 20 66 6f 72 20 74 68 65 20 72 61 64 69 61 6c 20 64 69 73 74 6f 72 74 | ial.guess.for.the.radial.distort |
| 15880 | 69 6f 6e 20 66 61 63 74 6f 72 20 6b 63 20 28 75 73 65 66 75 6c 20 66 6f 72 20 73 75 62 70 69 78 | ion.factor.kc.(useful.for.subpix |
| 158a0 | 65 6c 20 64 65 74 65 63 74 69 6f 6e 29 27 29 3b 0a 20 20 20 71 75 65 73 74 5f 64 69 73 74 6f 72 | el.detection)');....quest_distor |
| 158c0 | 74 20 3d 20 69 6e 70 75 74 28 27 4e 65 65 64 20 6f 66 20 61 6e 20 69 6e 69 74 69 61 6c 20 67 75 | t.=.input('Need.of.an.initial.gu |
| 158e0 | 65 73 73 20 66 6f 72 20 64 69 73 74 6f 72 74 69 6f 6e 3f 20 28 5b 5d 3d 6e 6f 2c 20 6f 74 68 65 | ess.for.distortion?.([]=no,.othe |
| 15900 | 72 3d 79 65 73 29 20 27 29 3b 0a 20 20 0a 20 20 20 71 75 65 73 74 5f 64 69 73 74 6f 72 74 20 3d | r=yes).');.......quest_distort.= |
| 15920 | 20 7e 69 73 65 6d 70 74 79 28 71 75 65 73 74 5f 64 69 73 74 6f 72 74 29 3b 0a 20 20 20 0a 20 20 | .~isempty(quest_distort);....... |
| 15940 | 20 69 66 20 71 75 65 73 74 5f 64 69 73 74 6f 72 74 2c 0a 20 20 20 20 20 20 25 20 45 73 74 69 6d | .if.quest_distort,.......%.Estim |
| 15960 | 61 74 69 6f 6e 20 6f 66 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 3a 0a 20 20 20 20 20 20 63 5f 67 | ation.of.focal.length:.......c_g |
| 15980 | 20 3d 20 5b 73 69 7a 65 28 49 2c 32 29 3b 73 69 7a 65 28 49 2c 31 29 5d 2f 32 20 2b 20 2e 35 3b | .=.[size(I,2);size(I,1)]/2.+..5; |
| 159a0 | 0a 09 09 66 5f 67 20 3d 20 44 69 73 74 6f 72 32 43 61 6c 69 62 28 30 2c 5b 5b 78 28 31 29 20 78 | ...f_g.=.Distor2Calib(0,[[x(1).x |
| 159c0 | 28 32 29 20 78 28 34 29 20 78 28 33 29 5d 20 2d 20 63 5f 67 28 31 29 3b 5b 79 28 31 29 20 79 28 | (2).x(4).x(3)].-.c_g(1);[y(1).y( |
| 159e0 | 32 29 20 79 28 34 29 20 79 28 33 29 5d 20 2d 20 63 5f 67 28 32 29 5d 2c 31 2c 31 2c 34 2c 57 2c | 2).y(4).y(3)].-.c_g(2)],1,1,4,W, |
| 15a00 | 4c 2c 5b 2d 57 2f 32 20 57 2f 32 20 57 2f 32 20 2d 57 2f 32 3b 4c 2f 32 20 4c 2f 32 20 2d 4c 2f | L,[-W/2.W/2.W/2.-W/2;L/2.L/2.-L/ |
| 15a20 | 32 20 2d 4c 2f 32 3b 20 30 20 30 20 30 20 30 5d 2c 31 30 30 2c 31 2c 31 29 3b 0a 20 20 20 20 20 | 2.-L/2;.0.0.0.0],100,1,1);...... |
| 15a40 | 20 66 5f 67 20 3d 20 6d 65 61 6e 28 66 5f 67 29 3b 0a 20 20 20 20 20 20 73 63 72 69 70 74 5f 66 | .f_g.=.mean(f_g);.......script_f |
| 15a60 | 69 74 5f 64 69 73 74 6f 72 74 69 6f 6e 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 25 25 25 25 25 25 | it_distortion;....end;....%%%%%% |
| 15a80 | 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 45 4e 44 20 41 44 44 49 54 49 4f 4e 41 4c 20 53 | %%%%%%%%%%%%%%%.END.ADDITIONAL.S |
| 15aa0 | 54 55 46 46 20 49 4e 20 54 48 45 20 43 41 53 45 20 4f 46 20 48 49 47 48 4c 59 20 44 49 53 54 4f | TUFF.IN.THE.CASE.OF.HIGHLY.DISTO |
| 15ac0 | 52 54 45 44 20 49 4d 41 47 45 53 20 25 25 25 25 25 25 25 25 25 25 25 25 25 0a 20 20 20 0a 09 65 | RTED.IMAGES.%%%%%%%%%%%%%......e |
| 15ae0 | 6c 73 65 0a 20 20 20 09 0a 20 20 20 09 78 79 5f 63 6f 72 6e 65 72 73 5f 75 6e 64 69 73 74 20 3d | lse..........xy_corners_undist.= |
| 15b00 | 20 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 5f 6f 75 6c 75 28 5b 28 78 27 20 2d 20 63 63 28 | .comp_distortion_oulu([(x'.-.cc( |
| 15b20 | 31 29 29 2f 66 63 28 31 29 3b 28 79 27 2d 63 63 28 32 29 29 2f 66 63 28 31 29 5d 2c 6b 63 29 3b | 1))/fc(1);(y'-cc(2))/fc(1)],kc); |
| 15b40 | 0a 09 20 0a 09 20 09 78 75 20 3d 20 78 79 5f 63 6f 72 6e 65 72 73 5f 75 6e 64 69 73 74 28 31 2c | .......xu.=.xy_corners_undist(1, |
| 15b60 | 3a 29 27 3b 0a 09 20 09 79 75 20 3d 20 78 79 5f 63 6f 72 6e 65 72 73 5f 75 6e 64 69 73 74 28 32 | :)';....yu.=.xy_corners_undist(2 |
| 15b80 | 2c 3a 29 27 3b 0a 09 20 0a 09 20 09 5b 58 58 75 5d 20 3d 20 70 72 6f 6a 65 63 74 65 64 47 72 69 | ,:)';.......[XXu].=.projectedGri |
| 15ba0 | 64 20 28 20 5b 78 75 28 31 29 3b 79 75 28 31 29 5d 2c 20 5b 78 75 28 32 29 3b 79 75 28 32 29 5d | d.(.[xu(1);yu(1)],.[xu(2);yu(2)] |
| 15bc0 | 2c 5b 78 75 28 33 29 3b 79 75 28 33 29 5d 2c 20 5b 78 75 28 34 29 3b 79 75 28 34 29 5d 2c 6e 5f | ,[xu(3);yu(3)],.[xu(4);yu(4)],n_ |
| 15be0 | 73 71 5f 78 2b 31 2c 6e 5f 73 71 5f 79 2b 31 29 3b 20 25 20 54 68 65 20 66 75 6c 6c 20 67 72 69 | sq_x+1,n_sq_y+1);.%.The.full.gri |
| 15c00 | 64 0a 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 72 32 20 3d 20 73 75 6d 28 58 58 75 2e 5e 32 29 | d...............r2.=.sum(XXu.^2) |
| 15c20 | 3b 20 20 20 20 20 20 20 0a 09 20 09 58 58 20 3d 20 28 6f 6e 65 73 28 32 2c 31 29 2a 28 31 20 2b | ;...........XX.=.(ones(2,1)*(1.+ |
| 15c40 | 20 6b 63 28 31 29 20 2a 20 72 32 20 2b 20 6b 63 28 32 29 20 2a 20 28 72 32 2e 5e 32 29 29 29 20 | .kc(1).*.r2.+.kc(2).*.(r2.^2))). |
| 15c60 | 2e 2a 20 58 58 75 3b 0a 09 20 09 58 58 28 31 2c 3a 29 20 3d 20 66 63 28 31 29 2a 58 58 28 31 2c | .*.XXu;....XX(1,:).=.fc(1)*XX(1, |
| 15c80 | 3a 29 2b 63 63 28 31 29 3b 0a 09 20 09 58 58 28 32 2c 3a 29 20 3d 20 66 63 28 32 29 2a 58 58 28 | :)+cc(1);....XX(2,:).=.fc(2)*XX( |
| 15ca0 | 32 2c 3a 29 2b 63 63 28 32 29 3b 0a 20 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a 20 20 20 20 | 2,:)+cc(2);............end;..... |
| 15cc0 | 0a 20 20 20 0a 20 20 20 4e 70 20 3d 20 28 6e 5f 73 71 5f 78 2b 31 29 2a 28 6e 5f 73 71 5f 79 2b | ........Np.=.(n_sq_x+1)*(n_sq_y+ |
| 15ce0 | 31 29 3b 0a 0a 20 20 20 64 69 73 70 28 27 43 6f 72 6e 65 72 20 65 78 74 72 61 63 74 69 6f 6e 2e | 1);.....disp('Corner.extraction. |
| 15d00 | 2e 2e 27 29 3b 0a 20 20 20 0a 20 20 20 67 72 69 64 5f 70 74 73 20 3d 20 63 6f 72 6e 65 72 66 69 | ..');........grid_pts.=.cornerfi |
| 15d20 | 6e 64 65 72 28 58 58 2c 49 2c 77 69 6e 74 79 2c 77 69 6e 74 78 29 3b 20 25 25 25 20 46 69 6e 64 | nder(XX,I,winty,wintx);.%%%.Find |
| 15d40 | 73 20 74 68 65 20 65 78 61 63 74 20 63 6f 72 6e 65 72 73 20 61 74 20 65 76 65 72 79 20 70 6f 69 | s.the.exact.corners.at.every.poi |
| 15d60 | 6e 74 73 21 0a 20 20 20 0a 20 20 20 67 72 69 64 5f 70 74 73 20 3d 20 67 72 69 64 5f 70 74 73 20 | nts!........grid_pts.=.grid_pts. |
| 15d80 | 2d 20 31 3b 20 25 20 73 75 62 74 72 61 63 74 20 31 20 74 6f 20 62 72 69 6e 67 20 74 68 65 20 6f | -.1;.%.subtract.1.to.bring.the.o |
| 15da0 | 72 69 67 69 6e 20 74 6f 20 28 30 2c 30 29 20 69 6e 73 74 65 61 64 20 6f 66 20 28 31 2c 31 29 20 | rigin.to.(0,0).instead.of.(1,1). |
| 15dc0 | 69 6e 20 6d 61 74 6c 61 62 20 28 6e 6f 74 20 6e 65 63 65 73 73 61 72 79 20 69 6e 20 43 29 0a 20 | in.matlab.(not.necessary.in.C).. |
| 15de0 | 20 20 0a 20 20 20 69 6e 64 5f 63 6f 72 6e 65 72 73 20 3d 20 5b 31 20 6e 5f 73 71 5f 78 2b 31 20 | ......ind_corners.=.[1.n_sq_x+1. |
| 15e00 | 28 6e 5f 73 71 5f 78 2b 31 29 2a 6e 5f 73 71 5f 79 2b 31 20 28 6e 5f 73 71 5f 78 2b 31 29 2a 28 | (n_sq_x+1)*n_sq_y+1.(n_sq_x+1)*( |
| 15e20 | 6e 5f 73 71 5f 79 2b 31 29 5d 3b 20 25 20 69 6e 64 65 78 20 6f 66 20 74 68 65 20 34 20 63 6f 72 | n_sq_y+1)];.%.index.of.the.4.cor |
| 15e40 | 6e 65 72 73 0a 20 20 20 69 6e 64 5f 6f 72 69 67 20 3d 20 28 6e 5f 73 71 5f 78 2b 31 29 2a 6e 5f | ners....ind_orig.=.(n_sq_x+1)*n_ |
| 15e60 | 73 71 5f 79 20 2b 20 31 3b 0a 20 20 20 78 6f 72 69 67 20 3d 20 67 72 69 64 5f 70 74 73 28 31 2c | sq_y.+.1;....xorig.=.grid_pts(1, |
| 15e80 | 69 6e 64 5f 6f 72 69 67 29 3b 0a 20 20 20 79 6f 72 69 67 20 3d 20 67 72 69 64 5f 70 74 73 28 32 | ind_orig);....yorig.=.grid_pts(2 |
| 15ea0 | 2c 69 6e 64 5f 6f 72 69 67 29 3b 0a 20 20 20 64 78 70 6f 73 20 3d 20 6d 65 61 6e 28 5b 67 72 69 | ,ind_orig);....dxpos.=.mean([gri |
| 15ec0 | 64 5f 70 74 73 28 3a 2c 69 6e 64 5f 6f 72 69 67 29 20 67 72 69 64 5f 70 74 73 28 3a 2c 69 6e 64 | d_pts(:,ind_orig).grid_pts(:,ind |
| 15ee0 | 5f 6f 72 69 67 2b 31 29 5d 27 29 3b 0a 20 20 20 64 79 70 6f 73 20 3d 20 6d 65 61 6e 28 5b 67 72 | _orig+1)]');....dypos.=.mean([gr |
| 15f00 | 69 64 5f 70 74 73 28 3a 2c 69 6e 64 5f 6f 72 69 67 29 20 67 72 69 64 5f 70 74 73 28 3a 2c 69 6e | id_pts(:,ind_orig).grid_pts(:,in |
| 15f20 | 64 5f 6f 72 69 67 2d 6e 5f 73 71 5f 78 2d 31 29 5d 27 29 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 | d_orig-n_sq_x-1)]');............ |
| 15f40 | 69 6e 64 5f 78 20 3d 20 28 6e 5f 73 71 5f 78 2b 31 29 2a 28 6e 5f 73 71 5f 79 20 2b 20 31 29 3b | ind_x.=.(n_sq_x+1)*(n_sq_y.+.1); |
| 15f60 | 0a 09 69 6e 64 5f 79 20 3d 20 31 3b 0a 0a 20 20 20 78 5f 62 6f 78 5f 6b 6b 20 3d 20 5b 67 72 69 | ..ind_y.=.1;.....x_box_kk.=.[gri |
| 15f80 | 64 5f 70 74 73 28 31 2c 3a 29 2d 28 77 69 6e 74 78 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 31 | d_pts(1,:)-(wintx+.5);grid_pts(1 |
| 15fa0 | 2c 3a 29 2b 28 77 69 6e 74 78 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2b 28 77 69 | ,:)+(wintx+.5);grid_pts(1,:)+(wi |
| 15fc0 | 6e 74 78 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2d 28 77 69 6e 74 78 2b 2e 35 29 | ntx+.5);grid_pts(1,:)-(wintx+.5) |
| 15fe0 | 3b 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2d 28 77 69 6e 74 78 2b 2e 35 29 5d 3b 0a 20 20 20 79 | ;grid_pts(1,:)-(wintx+.5)];....y |
| 16000 | 5f 62 6f 78 5f 6b 6b 20 3d 20 5b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2d 28 77 69 6e 74 79 2b | _box_kk.=.[grid_pts(2,:)-(winty+ |
| 16020 | 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2d 28 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 | .5);grid_pts(2,:)-(winty+.5);gri |
| 16040 | 64 5f 70 74 73 28 32 2c 3a 29 2b 28 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 32 | d_pts(2,:)+(winty+.5);grid_pts(2 |
| 16060 | 2c 3a 29 2b 28 77 69 6e 74 79 2b 2e 35 29 3b 67 72 69 64 5f 70 74 73 28 32 2c 3a 29 2d 28 77 69 | ,:)+(winty+.5);grid_pts(2,:)-(wi |
| 16080 | 6e 74 79 2b 2e 35 29 5d 3b 0a 0a 20 20 20 0a 20 20 20 66 69 67 75 72 65 28 33 29 3b 0a 20 20 20 | nty+.5)];.........figure(3);.... |
| 160a0 | 69 6d 61 67 65 28 49 29 3b 20 63 6f 6c 6f 72 6d 61 70 28 6d 61 70 29 3b 20 68 6f 6c 64 20 6f 6e | image(I);.colormap(map);.hold.on |
| 160c0 | 3b 0a 20 20 20 70 6c 6f 74 28 67 72 69 64 5f 70 74 73 28 31 2c 3a 29 2b 31 2c 67 72 69 64 5f 70 | ;....plot(grid_pts(1,:)+1,grid_p |
| 160e0 | 74 73 28 32 2c 3a 29 2b 31 2c 27 72 2b 27 29 3b 0a 20 20 20 70 6c 6f 74 28 78 5f 62 6f 78 5f 6b | ts(2,:)+1,'r+');....plot(x_box_k |
| 16100 | 6b 2b 31 2c 79 5f 62 6f 78 5f 6b 6b 2b 31 2c 27 2d 62 27 29 3b 0a 20 20 20 70 6c 6f 74 28 67 72 | k+1,y_box_kk+1,'-b');....plot(gr |
| 16120 | 69 64 5f 70 74 73 28 31 2c 69 6e 64 5f 63 6f 72 6e 65 72 73 29 2b 31 2c 67 72 69 64 5f 70 74 73 | id_pts(1,ind_corners)+1,grid_pts |
| 16140 | 28 32 2c 69 6e 64 5f 63 6f 72 6e 65 72 73 29 2b 31 2c 27 6d 6f 27 29 3b 0a 20 20 20 70 6c 6f 74 | (2,ind_corners)+1,'mo');....plot |
| 16160 | 28 78 6f 72 69 67 2b 31 2c 79 6f 72 69 67 2b 31 2c 27 2a 6d 27 29 3b 0a 20 20 20 68 20 3d 20 74 | (xorig+1,yorig+1,'*m');....h.=.t |
| 16180 | 65 78 74 28 78 6f 72 69 67 2d 31 35 2c 79 6f 72 69 67 2d 31 35 2c 27 4f 27 29 3b 0a 20 20 20 73 | ext(xorig-15,yorig-15,'O');....s |
| 161a0 | 65 74 28 68 2c 27 43 6f 6c 6f 72 27 2c 27 6d 27 2c 27 46 6f 6e 74 53 69 7a 65 27 2c 31 34 29 3b | et(h,'Color','m','FontSize',14); |
| 161c0 | 0a 20 20 20 68 32 20 3d 20 74 65 78 74 28 64 78 70 6f 73 28 31 29 2d 31 30 2c 64 78 70 6f 73 28 | ....h2.=.text(dxpos(1)-10,dxpos( |
| 161e0 | 32 29 2d 31 30 2c 27 64 58 27 29 3b 0a 20 20 20 73 65 74 28 68 32 2c 27 43 6f 6c 6f 72 27 2c 27 | 2)-10,'dX');....set(h2,'Color',' |
| 16200 | 67 27 2c 27 46 6f 6e 74 53 69 7a 65 27 2c 31 34 29 3b 0a 20 20 20 68 33 20 3d 20 74 65 78 74 28 | g','FontSize',14);....h3.=.text( |
| 16220 | 64 79 70 6f 73 28 31 29 2d 32 35 2c 64 79 70 6f 73 28 32 29 2d 33 2c 27 64 59 27 29 3b 0a 20 20 | dypos(1)-25,dypos(2)-3,'dY');... |
| 16240 | 20 73 65 74 28 68 33 2c 27 43 6f 6c 6f 72 27 2c 27 67 27 2c 27 46 6f 6e 74 53 69 7a 65 27 2c 31 | .set(h3,'Color','g','FontSize',1 |
| 16260 | 34 29 3b 0a 20 20 20 78 6c 61 62 65 6c 28 27 58 63 20 28 69 6e 20 63 61 6d 65 72 61 20 66 72 61 | 4);....xlabel('Xc.(in.camera.fra |
| 16280 | 6d 65 29 27 29 3b 0a 20 20 20 79 6c 61 62 65 6c 28 27 59 63 20 28 69 6e 20 63 61 6d 65 72 61 20 | me)');....ylabel('Yc.(in.camera. |
| 162a0 | 66 72 61 6d 65 29 27 29 3b 0a 20 20 20 74 69 74 6c 65 28 27 45 78 74 72 61 63 74 65 64 20 63 6f | frame)');....title('Extracted.co |
| 162c0 | 72 6e 65 72 73 27 29 3b 0a 20 20 20 7a 6f 6f 6d 20 6f 6e 3b 0a 20 20 20 64 72 61 77 6e 6f 77 3b | rners');....zoom.on;....drawnow; |
| 162e0 | 0a 20 20 20 68 6f 6c 64 20 6f 66 66 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 58 69 20 3d 20 72 65 | ....hold.off;............Xi.=.re |
| 16300 | 73 68 61 70 65 28 28 5b 30 3a 6e 5f 73 71 5f 78 5d 2a 64 58 29 27 2a 6f 6e 65 73 28 31 2c 6e 5f | shape(([0:n_sq_x]*dX)'*ones(1,n_ |
| 16320 | 73 71 5f 79 2b 31 29 2c 4e 70 2c 31 29 27 3b 0a 20 20 20 59 69 20 3d 20 72 65 73 68 61 70 65 28 | sq_y+1),Np,1)';....Yi.=.reshape( |
| 16340 | 6f 6e 65 73 28 6e 5f 73 71 5f 78 2b 31 2c 31 29 2a 5b 6e 5f 73 71 5f 79 3a 2d 31 3a 30 5d 2a 64 | ones(n_sq_x+1,1)*[n_sq_y:-1:0]*d |
| 16360 | 59 2c 4e 70 2c 31 29 27 3b 0a 20 20 20 5a 69 20 3d 20 7a 65 72 6f 73 28 31 2c 4e 70 29 3b 0a 20 | Y,Np,1)';....Zi.=.zeros(1,Np);.. |
| 16380 | 20 20 0a 20 20 20 58 67 72 69 64 20 3d 20 5b 58 69 3b 59 69 3b 5a 69 5d 3b 0a 20 20 20 0a 20 20 | ......Xgrid.=.[Xi;Yi;Zi];....... |
| 163a0 | 20 0a 09 25 20 41 6c 6c 20 74 68 65 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 28 | ...%.All.the.point.coordinates.( |
| 163c0 | 6f 6e 20 74 68 65 20 69 6d 61 67 65 2c 20 61 6e 64 20 69 6e 20 33 44 29 20 2d 20 66 6f 72 20 67 | on.the.image,.and.in.3D).-.for.g |
| 163e0 | 6c 6f 62 61 6c 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 3a 0a 0a 20 20 20 78 20 3d 20 67 72 69 64 | lobal.optimization:.....x.=.grid |
| 16400 | 5f 70 74 73 3b 0a 20 20 20 58 20 3d 20 58 67 72 69 64 3b 0a 20 20 20 0a 78 32 20 3d 20 78 28 33 | _pts;....X.=.Xgrid;.....x2.=.x(3 |
| 16420 | 29 3b 79 32 20 3d 20 79 28 33 29 3b 20 78 31 20 3d 20 78 28 34 29 3b 20 79 31 20 3d 20 79 28 34 | );y2.=.y(3);.x1.=.x(4);.y1.=.y(4 |
| 16440 | 29 3b 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 78 32 20 3d 20 78 28 34 29 3b 79 32 20 3d 20 | );....else.......x2.=.x(4);y2.=. |
| 16460 | 79 28 34 29 3b 20 78 31 20 3d 20 78 28 33 29 3b 20 79 31 20 3d 20 79 28 33 29 3b 0a 20 20 20 65 | y(4);.x1.=.x(3);.y1.=.y(3);....e |
| 16480 | 6e 64 3b 0a 20 20 20 0a 20 20 20 78 20 3d 20 5b 78 31 3b 78 32 3b 78 33 3b 78 34 5d 3b 0a 20 20 | nd;........x.=.[x1;x2;x3;x4];... |
| 164a0 | 20 79 20 3d 20 5b 79 31 3b 79 32 3b 79 33 3b 79 34 5d 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 66 | .y.=.[y1;y2;y3;y4];............f |
| 164c0 | 69 67 75 72 65 28 32 29 3b 20 68 6f 6c 64 20 6f 6e 3b 0a 20 20 20 70 6c 6f 74 28 5b 78 3b 78 28 | igure(2);.hold.on;....plot([x;x( |
| 164e0 | 31 29 5d 2c 5b 79 3b 79 28 31 29 5d 2c 27 67 2d 27 29 3b 0a 20 20 20 70 6c 6f 74 28 78 2c 79 2c | 1)],[y;y(1)],'g-');....plot(x,y, |
| 16500 | 27 6f 67 27 29 3b 0a 20 20 20 68 78 3d 74 65 78 74 28 28 78 28 34 29 2b 78 28 33 29 29 2f 32 2c | 'og');....hx=text((x(4)+x(3))/2, |
| 16520 | 28 79 28 34 29 2b 79 28 33 29 29 2f 32 20 2d 20 32 30 2c 27 58 27 29 3b 0a 20 20 20 73 65 74 28 | (y(4)+y(3))/2.-.20,'X');....set( |
| 16540 | 68 78 2c 27 63 6f 6c 6f 72 27 2c 27 67 27 2c 27 46 6f 6e 74 73 69 7a 65 27 2c 31 34 29 3b 0a 20 | hx,'color','g','Fontsize',14);.. |
| 16560 | 20 20 68 79 3d 74 65 78 74 28 28 78 28 34 29 2b 78 28 31 29 29 2f 32 2d 32 30 2c 28 79 28 34 29 | ..hy=text((x(4)+x(1))/2-20,(y(4) |
| 16580 | 2b 79 28 31 29 29 2f 32 2c 27 59 27 29 3b 0a 20 20 20 73 65 74 28 68 79 2c 27 63 6f 6c 6f 72 27 | +y(1))/2,'Y');....set(hy,'color' |
| 165a0 | 2c 27 67 27 2c 27 46 6f 6e 74 73 69 7a 65 27 2c 31 34 29 3b 0a 20 20 20 68 6f 6c 64 20 6f 66 66 | ,'g','Fontsize',14);....hold.off |
| 165c0 | 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 20 54 72 79 20 74 6f 20 61 75 74 6f 6d 61 74 69 63 61 | ;............%.Try.to.automatica |
| 165e0 | 6c 6c 79 20 63 6f 75 6e 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 71 75 61 72 65 73 20 | lly.count.the.number.of.squares. |
| 16600 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 65 78 74 72 61 63 74 5f 70 61 72 61 6d 65 74 65 72 73 | TOOLBOX_calib/extract_parameters |
| 16620 | 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .m.............................. |
| 16640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16660 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 16680 | 20 20 20 31 36 34 31 20 20 37 30 32 34 30 33 37 33 32 31 20 20 31 32 34 37 31 00 20 00 00 00 00 | ...1641..7024037321..12471...... |
| 166a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 166c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 166e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 167a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 167c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 167e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16800 | 0a 25 25 25 20 45 78 74 72 61 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 66 69 6e 61 6c 20 69 6e 74 | .%%%.Extraction.of.the.final.int |
| 16820 | 72 69 6e 73 69 63 20 61 6e 64 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 61 74 65 72 73 3a | rinsic.and.extrinsic.paramaters: |
| 16840 | 0a 0a 63 68 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 0a 66 63 20 3d 20 73 6f 6c | ..check_active_images;..fc.=.sol |
| 16860 | 75 74 69 6f 6e 28 31 3a 32 29 3b 0a 6b 63 20 3d 20 73 6f 6c 75 74 69 6f 6e 28 33 3a 36 29 3b 0a | ution(1:2);.kc.=.solution(3:6);. |
| 16880 | 63 63 20 3d 20 73 6f 6c 75 74 69 6f 6e 28 36 2a 6e 5f 69 6d 61 20 2b 20 34 20 2b 33 3a 36 2a 6e | cc.=.solution(6*n_ima.+.4.+3:6*n |
| 168a0 | 5f 69 6d 61 20 2b 20 35 20 2b 33 29 3b 0a 0a 25 20 43 61 6c 69 62 72 61 74 69 6f 6e 20 6d 61 74 | _ima.+.5.+3);..%.Calibration.mat |
| 168c0 | 72 69 78 3a 0a 09 0a 4b 4b 20 3d 20 5b 66 63 28 31 29 20 30 20 63 63 28 31 29 3b 30 20 66 63 28 | rix:...KK.=.[fc(1).0.cc(1);0.fc( |
| 168e0 | 32 29 20 63 63 28 32 29 3b 20 30 20 30 20 31 5d 3b 0a 69 6e 76 5f 4b 4b 20 3d 20 69 6e 76 28 4b | 2).cc(2);.0.0.1];.inv_KK.=.inv(K |
| 16900 | 4b 29 3b 09 0a 0a 25 20 45 78 74 72 61 63 74 20 74 68 65 20 65 78 74 72 69 6e 73 69 63 20 70 61 | K);...%.Extract.the.extrinsic.pa |
| 16920 | 72 61 6d 74 65 72 73 2c 20 61 6e 64 20 72 65 63 6f 6d 70 75 74 65 72 20 74 68 65 20 63 6f 6c 6c | ramters,.and.recomputer.the.coll |
| 16940 | 69 6e 65 61 74 69 6f 6e 73 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 | ineations..for.kk.=.1:n_ima,.... |
| 16960 | 0a 20 20 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 2c 20 20 20 0a 20 20 20 | ....if.active_images(kk),....... |
| 16980 | 20 20 20 0a 20 20 20 20 20 20 6f 6d 63 6b 6b 20 3d 20 73 6f 6c 75 74 69 6f 6e 28 34 2b 36 2a 28 | ..........omckk.=.solution(4+6*( |
| 169a0 | 6b 6b 2d 31 29 20 2b 20 33 3a 36 2a 6b 6b 20 2b 20 33 29 3b 20 20 20 0a 20 20 20 20 20 20 54 63 | kk-1).+.3:6*kk.+.3);..........Tc |
| 169c0 | 6b 6b 20 3d 20 73 6f 6c 75 74 69 6f 6e 28 36 2a 6b 6b 2b 31 20 2b 20 33 3a 36 2a 6b 6b 2b 33 20 | kk.=.solution(6*kk+1.+.3:6*kk+3. |
| 169e0 | 2b 20 33 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 09 52 63 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 | +.3);............Rckk.=.rodrigue |
| 16a00 | 73 28 6f 6d 63 6b 6b 29 3b 0a 20 20 20 0a 20 20 20 09 48 6b 6b 20 3d 20 4b 4b 20 2a 20 5b 52 63 | s(omckk);.........Hkk.=.KK.*.[Rc |
| 16a20 | 6b 6b 28 3a 2c 31 29 20 52 63 6b 6b 28 3a 2c 32 29 20 54 63 6b 6b 5d 3b 0a 20 20 20 0a 20 20 20 | kk(:,1).Rckk(:,2).Tckk];........ |
| 16a40 | 09 48 6b 6b 20 3d 20 48 6b 6b 20 2f 20 48 6b 6b 28 33 2c 33 29 3b 0a 20 20 20 20 20 20 0a 20 20 | .Hkk.=.Hkk./.Hkk(3,3);.......... |
| 16a60 | 20 65 6c 73 65 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 6f 6d 63 6b 6b 20 3d 20 4e 61 4e 2a 6f | .else..............omckk.=.NaN*o |
| 16a80 | 6e 65 73 28 33 2c 31 29 3b 20 20 20 0a 20 20 20 20 20 20 54 63 6b 6b 20 3d 20 4e 61 4e 2a 6f 6e | nes(3,1);..........Tckk.=.NaN*on |
| 16aa0 | 65 73 28 33 2c 31 29 3b 0a 20 20 20 20 20 20 52 63 6b 6b 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 33 | es(3,1);.......Rckk.=.NaN*ones(3 |
| 16ac0 | 2c 33 29 3b 0a 20 20 20 20 20 20 48 6b 6b 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 33 2c 33 29 3b 0a | ,3);.......Hkk.=.NaN*ones(3,3);. |
| 16ae0 | 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 6f 6d 63 | ..........end;........eval(['omc |
| 16b00 | 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 6f 6d 63 6b 6b 3b 27 5d 29 3b 0a 20 20 | _'.num2str(kk).'.=.omckk;']);... |
| 16b20 | 20 65 76 61 6c 28 5b 27 52 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 52 63 6b | .eval(['Rc_'.num2str(kk).'.=.Rck |
| 16b40 | 6b 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 54 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b | k;']);....eval(['Tc_'.num2str(kk |
| 16b60 | 29 20 27 20 3d 20 54 63 6b 6b 3b 27 5d 29 3b 0a 20 20 09 65 76 61 6c 28 5b 27 48 5f 27 20 6e 75 | ).'.=.Tckk;']);....eval(['H_'.nu |
| 16b80 | 6d 32 73 74 72 28 6b 6b 29 20 27 3d 20 48 6b 6b 3b 27 5d 29 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a | m2str(kk).'=.Hkk;']);.....end;.. |
| 16ba0 | 0a 28 00 18 73 65 6c 65 63 74 5f 73 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 65 72 2e 6d 00 28 00 18 | .(..select_sol_with_center.m.(.. |
| 16bc0 | 00 00 05 c8 00 02 36 a4 00 28 00 1a 73 65 6c 65 63 74 5f 73 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 | ......6..(..select_sol_with_cent |
| 16be0 | 65 72 33 44 2e 6d 00 1a 00 00 05 dc 00 02 36 a5 00 18 00 09 73 74 61 72 74 75 70 2e 6d 00 33 44 | er3D.m........6.....startup.m.3D |
| 16c00 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 65 78 74 72 61 63 74 5f 70 61 72 61 6d 65 74 65 72 73 | TOOLBOX_calib/extract_parameters |
| 16c20 | 33 44 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 3D.m............................ |
| 16c40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16c60 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 16c80 | 20 20 20 31 33 31 35 20 20 37 30 32 34 30 33 37 33 32 32 20 20 31 32 36 35 37 00 20 00 00 00 00 | ...1315..7024037322..12657...... |
| 16ca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16cc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16ce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16d00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16d20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16d40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16d60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16d80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16e00 | 0a 25 25 25 20 45 78 74 72 61 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 66 69 6e 61 6c 20 69 6e 74 | .%%%.Extraction.of.the.final.int |
| 16e20 | 72 69 6e 73 69 63 20 61 6e 64 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 61 74 65 72 73 3a | rinsic.and.extrinsic.paramaters: |
| 16e40 | 0a 0a 0a 66 63 20 3d 20 73 6f 6c 75 74 69 6f 6e 28 31 3a 32 29 3b 0a 6b 63 20 3d 20 73 6f 6c 75 | ...fc.=.solution(1:2);.kc.=.solu |
| 16e60 | 74 69 6f 6e 28 33 3a 36 29 3b 0a 63 63 20 3d 20 73 6f 6c 75 74 69 6f 6e 28 36 2a 6e 5f 69 6d 61 | tion(3:6);.cc.=.solution(6*n_ima |
| 16e80 | 20 2b 20 34 20 2b 33 3a 36 2a 6e 5f 69 6d 61 20 2b 20 35 20 2b 33 29 3b 0a 0a 25 20 43 61 6c 69 | .+.4.+3:6*n_ima.+.5.+3);..%.Cali |
| 16ea0 | 62 72 61 74 69 6f 6e 20 6d 61 74 72 69 78 3a 0a 09 0a 4b 4b 20 3d 20 5b 66 63 28 31 29 20 30 20 | bration.matrix:...KK.=.[fc(1).0. |
| 16ec0 | 63 63 28 31 29 3b 30 20 66 63 28 32 29 20 63 63 28 32 29 3b 20 30 20 30 20 31 5d 3b 0a 69 6e 76 | cc(1);0.fc(2).cc(2);.0.0.1];.inv |
| 16ee0 | 5f 4b 4b 20 3d 20 69 6e 76 28 4b 4b 29 3b 09 0a 0a 25 20 45 78 74 72 61 63 74 20 74 68 65 20 65 | _KK.=.inv(KK);...%.Extract.the.e |
| 16f00 | 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 74 65 72 73 2c 20 61 6e 64 20 72 65 63 6f 6d 70 75 74 | xtrinsic.paramters,.and.recomput |
| 16f20 | 65 72 20 74 68 65 20 63 6f 6c 6c 69 6e 65 61 74 69 6f 6e 73 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 | er.the.collineations..for.kk.=.1 |
| 16f40 | 3a 6e 5f 69 6d 61 2c 0a 20 20 20 0a 20 20 20 6f 6d 63 6b 6b 20 3d 20 73 6f 6c 75 74 69 6f 6e 28 | :n_ima,........omckk.=.solution( |
| 16f60 | 34 2b 36 2a 28 6b 6b 2d 31 29 20 2b 20 33 3a 36 2a 6b 6b 20 2b 20 33 29 3b 0a 20 20 20 0a 20 20 | 4+6*(kk-1).+.3:6*kk.+.3);....... |
| 16f80 | 20 54 63 6b 6b 20 3d 20 73 6f 6c 75 74 69 6f 6e 28 36 2a 6b 6b 2b 31 20 2b 20 33 3a 36 2a 6b 6b | .Tckk.=.solution(6*kk+1.+.3:6*kk |
| 16fa0 | 2b 33 20 2b 20 33 29 3b 0a 20 20 20 0a 20 20 20 52 63 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 | +3.+.3);........Rckk.=.rodrigues |
| 16fc0 | 28 6f 6d 63 6b 6b 29 3b 0a 20 20 20 0a 20 20 20 48 6c 6b 6b 20 3d 20 4b 4b 20 2a 20 5b 52 63 6b | (omckk);........Hlkk.=.KK.*.[Rck |
| 16fe0 | 6b 28 3a 2c 31 29 20 52 63 6b 6b 28 3a 2c 32 29 20 54 63 6b 6b 5d 3b 0a 20 20 20 0a 20 20 20 48 | k(:,1).Rckk(:,2).Tckk];........H |
| 17000 | 6c 6b 6b 20 3d 20 48 6c 6b 6b 20 2f 20 48 6c 6b 6b 28 33 2c 33 29 3b 0a 20 20 20 0a 20 20 20 65 | lkk.=.Hlkk./.Hlkk(3,3);........e |
| 17020 | 76 61 6c 28 5b 27 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 6f 6d 63 6b | val(['omc_'.num2str(kk).'.=.omck |
| 17040 | 6b 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 52 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b | k;']);....eval(['Rc_'.num2str(kk |
| 17060 | 29 20 27 20 3d 20 52 63 6b 6b 3b 27 5d 29 3b 0a 09 65 76 61 6c 28 5b 27 54 63 5f 27 20 6e 75 6d | ).'.=.Rckk;']);..eval(['Tc_'.num |
| 17080 | 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 54 63 6b 6b 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 65 76 | 2str(kk).'.=.Tckk;']);........ev |
| 170a0 | 61 6c 28 5b 27 48 6c 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3d 48 6c 6b 6b 3b 27 5d 29 | al(['Hl_'.num2str(kk).'=Hlkk;']) |
| 170c0 | 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 0a 2e 6d 00 00 00 05 04 00 02 35 e0 00 18 00 0a 72 6f 74 61 | ;.....end;....m.......5.....rota |
| 170e0 | 74 69 6f 6e 2e 6d 00 0b 00 00 05 1c 00 02 36 9f 00 1c 00 0e 73 61 76 69 6e 67 5f 63 61 6c 69 62 | tion.m........6.....saving_calib |
| 17100 | 2e 6d 00 61 00 00 05 3c 00 02 36 a0 00 24 00 17 73 63 72 69 70 74 5f 66 69 74 5f 64 69 73 74 6f | .m.a...<..6..$..script_fit_disto |
| 17120 | 72 74 69 6f 6e 2e 6d 00 00 00 05 5c 00 02 36 a1 00 24 00 16 73 65 6c 65 63 74 5f 73 6f 6c 5f 6e | rtion.m....\..6..$..select_sol_n |
| 17140 | 6f 5f 63 65 6e 74 65 72 2e 6d 00 00 00 00 05 80 00 02 36 a2 00 28 00 18 73 65 6c 65 63 74 5f 73 | o_center.m........6..(..select_s |
| 17160 | 6f 6c 5f 6e 6f 5f 63 65 6e 74 65 72 33 44 2e 6d 00 00 05 80 00 00 05 a4 00 02 36 a3 00 28 00 18 | ol_no_center3D.m..........6..(.. |
| 17180 | 73 65 6c 65 63 74 5f 73 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 65 72 2e 6d 00 00 05 a4 00 00 05 c8 | select_sol_with_center.m........ |
| 171a0 | 00 02 36 a4 00 28 00 1a 73 65 6c 65 63 74 5f 73 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 65 72 33 44 | ..6..(..select_sol_with_center3D |
| 171c0 | 2e 6d 00 c8 00 00 05 dc 00 02 36 a5 00 18 00 09 73 74 61 72 74 75 70 2e 6d 00 68 5f 00 00 05 f0 | .m........6.....startup.m.h_.... |
| 171e0 | 00 02 36 a6 00 18 00 09 74 65 73 74 5f 33 64 2e 6d 00 00 09 00 00 06 00 00 02 33 c0 00 14 00 06 | ..6.....test_3d.m.........3..... |
| 17200 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 65 78 74 72 69 6e 73 69 63 5f 63 6f 6d 70 75 74 61 74 | TOOLBOX_calib/extrinsic_computat |
| 17220 | 69 6f 6e 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ion.m........................... |
| 17240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17260 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 17280 | 20 20 31 30 32 32 32 20 20 37 30 32 34 30 33 37 33 32 33 20 20 31 33 32 34 33 00 20 00 00 00 00 | ..10222..7024037323..13243...... |
| 172a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 172c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 172e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 173a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 173c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 173e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17400 | 25 25 25 20 49 4e 50 55 54 20 54 48 45 20 49 4d 41 47 45 20 46 49 4c 45 20 4e 41 4d 45 3a 0a 0a | %%%.INPUT.THE.IMAGE.FILE.NAME:.. |
| 17420 | 64 69 72 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 27 29 3b 0a 64 69 73 70 28 27 43 6f 6d | dir;..fprintf(1,'\n');.disp('Com |
| 17440 | 70 75 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 | putation.of.the.extrinsic.parame |
| 17460 | 74 65 72 73 20 66 72 6f 6d 20 61 6e 20 69 6d 61 67 65 20 6f 66 20 61 20 70 61 74 74 65 72 6e 27 | ters.from.an.image.of.a.pattern' |
| 17480 | 29 3b 0a 64 69 73 70 28 27 54 68 65 20 69 6e 74 72 69 6e 73 69 63 20 63 61 6d 65 72 61 20 70 61 | );.disp('The.intrinsic.camera.pa |
| 174a0 | 72 61 6d 65 74 65 72 73 20 61 72 65 20 61 73 73 75 6d 65 64 20 74 6f 20 62 65 20 6b 6e 6f 77 6e | rameters.are.assumed.to.be.known |
| 174c0 | 20 28 70 72 65 76 69 6f 75 73 6c 79 20 63 6f 6d 70 75 74 65 64 29 27 29 3b 0a 0a 66 70 72 69 6e | .(previously.computed)');..fprin |
| 174e0 | 74 66 28 31 2c 27 5c 6e 27 29 3b 0a 69 6d 61 67 65 5f 6e 61 6d 65 20 3d 20 69 6e 70 75 74 28 27 | tf(1,'\n');.image_name.=.input(' |
| 17500 | 49 6d 61 67 65 20 6e 61 6d 65 20 28 66 75 6c 6c 20 6e 61 6d 65 20 77 69 74 68 6f 75 74 20 65 78 | Image.name.(full.name.without.ex |
| 17520 | 74 65 6e 73 69 6f 6e 29 3a 20 27 2c 27 73 27 29 3b 0a 0a 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 | tension):.','s');..format_image2 |
| 17540 | 20 3d 20 27 30 27 3b 0a 0a 77 68 69 6c 65 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 3d 20 | .=.'0';..while.format_image2.==. |
| 17560 | 27 30 27 2c 0a 20 20 20 0a 20 20 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 20 69 6e 70 | '0',........format_image2.=..inp |
| 17580 | 75 74 28 27 49 6d 61 67 65 20 66 6f 72 6d 61 74 3a 20 28 5b 5d 3d 27 27 72 27 27 3d 27 27 72 61 | ut('Image.format:.([]=''r''=''ra |
| 175a0 | 73 27 27 2c 20 27 27 62 27 27 3d 27 27 62 6d 70 27 27 2c 20 27 27 74 27 27 3d 27 27 74 69 66 27 | s'',.''b''=''bmp'',.''t''=''tif' |
| 175c0 | 27 2c 20 27 27 70 27 27 3d 27 27 70 67 6d 27 27 2c 20 27 27 6a 27 27 3d 27 27 6a 70 67 27 27 29 | ',.''p''=''pgm'',.''j''=''jpg'') |
| 175e0 | 20 27 2c 27 73 27 29 3b 0a 0a 09 69 66 20 69 73 65 6d 70 74 79 28 66 6f 72 6d 61 74 5f 69 6d 61 | .','s');...if.isempty(format_ima |
| 17600 | 67 65 32 29 2c 0a 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 27 72 61 73 27 3b | ge2),.....format_image2.=.'ras'; |
| 17620 | 0a 09 65 6e 64 3b 0a 0a 09 69 66 20 6c 6f 77 65 72 28 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 28 | ..end;...if.lower(format_image2( |
| 17640 | 31 29 29 20 3d 3d 20 27 62 27 2c 0a 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 | 1)).==.'b',.....format_image2.=. |
| 17660 | 27 62 6d 70 27 3b 0a 09 65 6c 73 65 0a 20 20 20 09 69 66 20 6c 6f 77 65 72 28 66 6f 72 6d 61 74 | 'bmp';..else.....if.lower(format |
| 17680 | 5f 69 6d 61 67 65 32 28 31 29 29 20 3d 3d 20 27 74 27 2c 0a 20 20 20 20 20 20 09 66 6f 72 6d 61 | _image2(1)).==.'t',........forma |
| 176a0 | 74 5f 69 6d 61 67 65 32 20 3d 20 27 74 69 66 27 3b 0a 20 20 20 09 65 6c 73 65 0a 20 20 20 20 20 | t_image2.=.'tif';.....else...... |
| 176c0 | 20 09 69 66 20 6c 6f 77 65 72 28 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 28 31 29 29 20 3d 3d 20 | ..if.lower(format_image2(1)).==. |
| 176e0 | 27 70 27 2c 0a 20 20 20 20 20 20 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 27 | 'p',...........format_image2.=.' |
| 17700 | 70 67 6d 27 3b 0a 09 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 09 20 20 20 20 20 20 69 66 20 6c | pgm';........else...........if.l |
| 17720 | 6f 77 65 72 28 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 28 31 29 29 20 3d 3d 20 27 6a 27 2c 0a 20 | ower(format_image2(1)).==.'j',.. |
| 17740 | 20 20 20 20 20 09 20 20 20 20 20 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 27 6a 70 67 | ............format_image2.=.'jpg |
| 17760 | 27 3b 0a 20 20 20 20 20 20 20 20 20 09 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 09 69 | ';...........else..............i |
| 17780 | 66 20 6c 6f 77 65 72 28 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 28 31 29 29 20 3d 3d 20 27 72 27 | f.lower(format_image2(1)).==.'r' |
| 177a0 | 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 | ,.................format_image2. |
| 177c0 | 3d 20 27 72 61 73 27 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 | =.'ras';................else.... |
| 177e0 | 20 20 20 20 20 20 20 20 20 20 09 09 64 69 73 70 28 27 49 6e 76 61 6c 69 64 20 69 6d 61 67 65 20 | ............disp('Invalid.image. |
| 17800 | 66 6f 72 6d 61 74 27 29 3b 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 09 20 20 20 20 20 20 20 20 | format');....................... |
| 17820 | 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 27 30 27 3b 20 25 20 41 73 6b 20 66 6f 72 20 | .format_image2.=.'0';.%.Ask.for. |
| 17840 | 66 6f 72 6d 61 74 20 6f 6e 63 65 20 61 67 61 69 6e 0a 20 20 20 20 20 20 20 20 20 09 20 20 20 65 | format.once.again..............e |
| 17860 | 6e 64 3b 0a 20 20 20 20 20 20 09 20 20 20 65 6e 64 3b 0a 09 20 20 20 20 20 20 65 6e 64 3b 0a 20 | nd;...........end;........end;.. |
| 17880 | 20 20 09 65 6e 64 3b 0a 09 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 69 6d 61 5f 6e 61 6d 65 20 3d 20 5b | ...end;..end;.end;..ima_name.=.[ |
| 178a0 | 69 6d 61 67 65 5f 6e 61 6d 65 20 27 2e 27 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 5d 3b 0a 0a 0a | image_name.'.'.format_image];... |
| 178c0 | 0a 25 25 25 20 52 45 41 44 20 49 4e 20 49 4d 41 47 45 3a 0a 0a 69 66 20 66 6f 72 6d 61 74 5f 69 | .%%%.READ.IN.IMAGE:..if.format_i |
| 178e0 | 6d 61 67 65 28 31 29 20 3d 3d 20 27 70 27 2c 0a 20 20 20 49 20 3d 20 64 6f 75 62 6c 65 28 70 67 | mage(1).==.'p',....I.=.double(pg |
| 17900 | 6d 72 65 61 64 28 69 6d 61 5f 6e 61 6d 65 29 29 3b 0a 65 6c 73 65 0a 20 20 20 69 66 20 66 6f 72 | mread(ima_name));.else....if.for |
| 17920 | 6d 61 74 5f 69 6d 61 67 65 28 31 29 20 3d 3d 20 27 72 27 2c 0a 20 20 20 20 20 20 49 20 3d 20 72 | mat_image(1).==.'r',.......I.=.r |
| 17940 | 65 61 64 72 61 73 28 69 6d 61 5f 6e 61 6d 65 29 3b 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 | eadras(ima_name);....else....... |
| 17960 | 49 20 3d 20 64 6f 75 62 6c 65 28 69 6d 72 65 61 64 28 69 6d 61 5f 6e 61 6d 65 29 29 3b 0a 20 20 | I.=.double(imread(ima_name));... |
| 17980 | 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 69 66 20 73 69 7a 65 28 49 2c 33 29 3e 31 2c 0a 20 20 20 49 | .end;.end;..if.size(I,3)>1,....I |
| 179a0 | 20 3d 20 49 28 3a 2c 3a 2c 32 29 3b 0a 65 6e 64 3b 0a 0a 0a 25 25 25 20 45 58 54 52 41 43 54 20 | .=.I(:,:,2);.end;...%%%.EXTRACT. |
| 179c0 | 47 52 49 44 20 43 4f 52 4e 45 52 53 3a 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 45 78 74 72 | GRID.CORNERS:..fprintf(1,'\nExtr |
| 179e0 | 61 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 67 72 69 64 20 63 6f 72 6e 65 72 73 20 6f 6e 20 74 68 | action.of.the.grid.corners.on.th |
| 17a00 | 65 20 69 6d 61 67 65 5c 6e 27 29 3b 0a 0a 64 69 73 70 28 27 57 69 6e 64 6f 77 20 73 69 7a 65 20 | e.image\n');..disp('Window.size. |
| 17a20 | 66 6f 72 20 63 6f 72 6e 65 72 20 66 69 6e 64 65 72 20 28 77 69 6e 74 78 20 61 6e 64 20 77 69 6e | for.corner.finder.(wintx.and.win |
| 17a40 | 74 79 29 3a 27 29 3b 0a 77 69 6e 74 78 20 3d 20 69 6e 70 75 74 28 27 77 69 6e 74 78 20 28 5b 5d | ty):');.wintx.=.input('wintx.([] |
| 17a60 | 20 3d 20 35 29 20 3d 20 27 29 3b 0a 69 66 20 69 73 65 6d 70 74 79 28 77 69 6e 74 78 29 2c 20 77 | .=.5).=.');.if.isempty(wintx),.w |
| 17a80 | 69 6e 74 78 20 3d 20 35 3b 20 65 6e 64 3b 0a 77 69 6e 74 78 20 3d 20 72 6f 75 6e 64 28 77 69 6e | intx.=.5;.end;.wintx.=.round(win |
| 17aa0 | 74 78 29 3b 0a 77 69 6e 74 79 20 3d 20 69 6e 70 75 74 28 27 77 69 6e 74 79 20 28 5b 5d 20 3d 20 | tx);.winty.=.input('winty.([].=. |
| 17ac0 | 35 29 20 3d 20 27 29 3b 0a 69 66 20 69 73 65 6d 70 74 79 28 77 69 6e 74 79 29 2c 20 77 69 6e 74 | 5).=.');.if.isempty(winty),.wint |
| 17ae0 | 79 20 3d 20 35 3b 20 65 6e 64 3b 0a 77 69 6e 74 79 20 3d 20 72 6f 75 6e 64 28 77 69 6e 74 79 29 | y.=.5;.end;.winty.=.round(winty) |
| 17b00 | 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 57 69 6e 64 6f 77 20 73 69 7a 65 20 3d 20 25 64 78 25 | ;..fprintf(1,'Window.size.=.%dx% |
| 17b20 | 64 5c 6e 27 2c 32 2a 77 69 6e 74 78 2b 31 2c 32 2a 77 69 6e 74 79 2b 31 29 3b 0a 0a 5b 78 5f 65 | d\n',2*wintx+1,2*winty+1);..[x_e |
| 17b40 | 78 74 2c 58 5f 65 78 74 2c 6e 5f 73 71 5f 78 2c 6e 5f 73 71 5f 79 2c 69 6e 64 5f 6f 72 69 67 2c | xt,X_ext,n_sq_x,n_sq_y,ind_orig, |
| 17b60 | 69 6e 64 5f 78 2c 69 6e 64 5f 79 5d 20 3d 20 65 78 74 72 61 63 74 5f 67 72 69 64 28 49 2c 77 69 | ind_x,ind_y].=.extract_grid(I,wi |
| 17b80 | 6e 74 78 2c 77 69 6e 74 79 2c 66 63 2c 63 63 2c 6b 63 29 3b 0a 0a 0a 0a 25 25 25 20 43 6f 6d 70 | ntx,winty,fc,cc,kc);....%%%.Comp |
| 17ba0 | 75 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 45 78 74 72 69 6e 73 69 63 20 50 61 72 61 6d 65 74 | utation.of.the.Extrinsic.Paramet |
| 17bc0 | 65 72 73 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 67 72 69 64 3a 0a 0a 5b 6f 6d 63 5f | ers.attached.to.the.grid:..[omc_ |
| 17be0 | 65 78 74 2c 54 63 5f 65 78 74 2c 52 63 5f 65 78 74 2c 48 5f 65 78 74 5d 20 3d 20 63 6f 6d 70 75 | ext,Tc_ext,Rc_ext,H_ext].=.compu |
| 17c00 | 74 65 5f 65 78 74 72 69 6e 73 69 63 28 78 5f 65 78 74 2c 58 5f 65 78 74 2c 66 63 2c 63 63 2c 6b | te_extrinsic(x_ext,X_ext,fc,cc,k |
| 17c20 | 63 29 3b 0a 0a 0a 25 25 25 20 52 65 70 72 6f 6a 65 63 74 20 74 68 65 20 70 6f 69 6e 74 73 20 6f | c);...%%%.Reproject.the.points.o |
| 17c40 | 6e 20 74 68 65 20 69 6d 61 67 65 3a 0a 0a 5b 78 5f 72 65 70 72 6f 6a 5d 20 3d 20 70 72 6f 6a 65 | n.the.image:..[x_reproj].=.proje |
| 17c60 | 63 74 5f 70 6f 69 6e 74 73 28 58 5f 65 78 74 2c 6f 6d 63 5f 65 78 74 2c 54 63 5f 65 78 74 2c 66 | ct_points(X_ext,omc_ext,Tc_ext,f |
| 17c80 | 63 2c 63 63 2c 6b 63 29 3b 0a 0a 65 72 72 5f 72 65 70 72 6f 6a 20 3d 20 78 5f 65 78 74 20 2d 20 | c,cc,kc);..err_reproj.=.x_ext.-. |
| 17ca0 | 78 5f 72 65 70 72 6f 6a 3b 0a 0a 65 72 72 5f 73 74 64 32 20 3d 20 73 74 64 28 65 72 72 5f 72 65 | x_reproj;..err_std2.=.std(err_re |
| 17cc0 | 70 72 6f 6a 27 29 27 3b 0a 0a 0a 42 61 73 69 73 20 3d 20 5b 58 5f 65 78 74 28 3a 2c 5b 69 6e 64 | proj')';...Basis.=.[X_ext(:,[ind |
| 17ce0 | 5f 6f 72 69 67 20 69 6e 64 5f 78 20 69 6e 64 5f 6f 72 69 67 20 69 6e 64 5f 79 20 69 6e 64 5f 6f | _orig.ind_x.ind_orig.ind_y.ind_o |
| 17d00 | 72 69 67 20 5d 29 5d 3b 0a 0a 56 58 20 3d 20 42 61 73 69 73 28 3a 2c 32 29 20 2d 20 42 61 73 69 | rig.])];..VX.=.Basis(:,2).-.Basi |
| 17d20 | 73 28 3a 2c 31 29 3b 0a 56 59 20 3d 20 42 61 73 69 73 28 3a 2c 34 29 20 2d 20 42 61 73 69 73 28 | s(:,1);.VY.=.Basis(:,4).-.Basis( |
| 17d40 | 3a 2c 31 29 3b 0a 0a 6e 58 20 3d 20 6e 6f 72 6d 28 56 58 29 3b 0a 6e 59 20 3d 20 6e 6f 72 6d 28 | :,1);..nX.=.norm(VX);.nY.=.norm( |
| 17d60 | 56 59 29 3b 0a 0a 56 5a 20 3d 20 6d 69 6e 28 6e 58 2c 6e 59 29 20 2a 20 63 72 6f 73 73 28 56 58 | VY);..VZ.=.min(nX,nY).*.cross(VX |
| 17d80 | 2f 6e 58 2c 56 59 2f 6e 59 29 3b 0a 0a 42 61 73 69 73 20 3d 20 5b 42 61 73 69 73 20 56 5a 5d 3b | /nX,VY/nY);..Basis.=.[Basis.VZ]; |
| 17da0 | 0a 0a 5b 78 5f 62 61 73 69 73 5d 20 3d 20 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 28 42 61 73 | ..[x_basis].=.project_points(Bas |
| 17dc0 | 69 73 2c 6f 6d 63 5f 65 78 74 2c 54 63 5f 65 78 74 2c 66 63 2c 63 63 2c 6b 63 29 3b 0a 0a 64 78 | is,omc_ext,Tc_ext,fc,cc,kc);..dx |
| 17de0 | 70 6f 73 20 3d 20 28 78 5f 62 61 73 69 73 28 3a 2c 32 29 20 2b 20 78 5f 62 61 73 69 73 28 3a 2c | pos.=.(x_basis(:,2).+.x_basis(:, |
| 17e00 | 31 29 29 2f 32 3b 0a 64 79 70 6f 73 20 3d 20 28 78 5f 62 61 73 69 73 28 3a 2c 34 29 20 2b 20 78 | 1))/2;.dypos.=.(x_basis(:,4).+.x |
| 17e20 | 5f 62 61 73 69 73 28 3a 2c 33 29 29 2f 32 3b 0a 64 7a 70 6f 73 20 3d 20 28 78 5f 62 61 73 69 73 | _basis(:,3))/2;.dzpos.=.(x_basis |
| 17e40 | 28 3a 2c 36 29 20 2b 20 78 5f 62 61 73 69 73 28 3a 2c 35 29 29 2f 32 3b 0a 0a 0a 0a 66 69 67 75 | (:,6).+.x_basis(:,5))/2;....figu |
| 17e60 | 72 65 28 32 29 3b 0a 69 6d 61 67 65 28 49 29 3b 0a 63 6f 6c 6f 72 6d 61 70 28 67 72 61 79 28 32 | re(2);.image(I);.colormap(gray(2 |
| 17e80 | 35 36 29 29 3b 0a 68 6f 6c 64 20 6f 6e 3b 0a 70 6c 6f 74 28 78 5f 65 78 74 28 31 2c 3a 29 2b 31 | 56));.hold.on;.plot(x_ext(1,:)+1 |
| 17ea0 | 2c 78 5f 65 78 74 28 32 2c 3a 29 2b 31 2c 27 72 2b 27 29 3b 0a 70 6c 6f 74 28 78 5f 72 65 70 72 | ,x_ext(2,:)+1,'r+');.plot(x_repr |
| 17ec0 | 6f 6a 28 31 2c 3a 29 2b 31 2c 78 5f 72 65 70 72 6f 6a 28 32 2c 3a 29 2b 31 2c 27 79 6f 27 29 3b | oj(1,:)+1,x_reproj(2,:)+1,'yo'); |
| 17ee0 | 0a 68 20 3d 20 74 65 78 74 28 78 5f 65 78 74 28 31 2c 69 6e 64 5f 6f 72 69 67 29 2d 32 35 2c 78 | .h.=.text(x_ext(1,ind_orig)-25,x |
| 17f00 | 5f 65 78 74 28 32 2c 69 6e 64 5f 6f 72 69 67 29 2d 32 35 2c 27 4f 27 29 3b 0a 73 65 74 28 68 2c | _ext(2,ind_orig)-25,'O');.set(h, |
| 17f20 | 27 43 6f 6c 6f 72 27 2c 27 67 27 2c 27 46 6f 6e 74 53 69 7a 65 27 2c 31 34 29 3b 0a 68 32 20 3d | 'Color','g','FontSize',14);.h2.= |
| 17f40 | 20 74 65 78 74 28 64 78 70 6f 73 28 31 29 2b 31 2c 64 78 70 6f 73 28 32 29 2d 33 30 2c 27 58 27 | .text(dxpos(1)+1,dxpos(2)-30,'X' |
| 17f60 | 29 3b 0a 73 65 74 28 68 32 2c 27 43 6f 6c 6f 72 27 2c 27 67 27 2c 27 46 6f 6e 74 53 69 7a 65 27 | );.set(h2,'Color','g','FontSize' |
| 17f80 | 2c 31 34 29 3b 0a 68 33 20 3d 20 74 65 78 74 28 64 79 70 6f 73 28 31 29 2d 33 30 2c 64 79 70 6f | ,14);.h3.=.text(dypos(1)-30,dypo |
| 17fa0 | 73 28 32 29 2b 31 2c 27 59 27 29 3b 0a 73 65 74 28 68 33 2c 27 43 6f 6c 6f 72 27 2c 27 67 27 2c | s(2)+1,'Y');.set(h3,'Color','g', |
| 17fc0 | 27 46 6f 6e 74 53 69 7a 65 27 2c 31 34 29 3b 0a 68 34 20 3d 20 74 65 78 74 28 64 7a 70 6f 73 28 | 'FontSize',14);.h4.=.text(dzpos( |
| 17fe0 | 31 29 2d 31 30 2c 64 7a 70 6f 73 28 32 29 2d 32 30 2c 27 5a 27 29 3b 0a 73 65 74 28 68 34 2c 27 | 1)-10,dzpos(2)-20,'Z');.set(h4,' |
| 18000 | 43 6f 6c 6f 72 27 2c 27 67 27 2c 27 46 6f 6e 74 53 69 7a 65 27 2c 31 34 29 3b 0a 70 6c 6f 74 28 | Color','g','FontSize',14);.plot( |
| 18020 | 78 5f 62 61 73 69 73 28 31 2c 3a 29 2b 31 2c 78 5f 62 61 73 69 73 28 32 2c 3a 29 2b 31 2c 27 67 | x_basis(1,:)+1,x_basis(2,:)+1,'g |
| 18040 | 2d 27 2c 27 6c 69 6e 65 77 69 64 74 68 27 2c 32 29 3b 0a 74 69 74 6c 65 28 27 49 6d 61 67 65 20 | -','linewidth',2);.title('Image. |
| 18060 | 70 6f 69 6e 74 73 20 28 2b 29 20 61 6e 64 20 72 65 70 72 6f 6a 65 63 74 65 64 20 67 72 69 64 20 | points.(+).and.reprojected.grid. |
| 18080 | 70 6f 69 6e 74 73 20 28 6f 29 27 29 3b 0a 68 6f 6c 64 20 6f 66 66 3b 0a 0a 0a 66 70 72 69 6e 74 | points.(o)');.hold.off;...fprint |
| 180a0 | 66 28 31 2c 27 5c 6e 5c 6e 45 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 3a 5c 6e | f(1,'\n\nExtrinsic.parameters:\n |
| 180c0 | 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 54 72 61 6e 73 6c 61 74 69 6f 6e 20 76 65 63 | \n');.fprintf(1,'Translation.vec |
| 180e0 | 74 6f 72 3a 20 54 63 5f 65 78 74 20 3d 20 5b 20 25 33 2e 36 66 20 5c 74 20 25 33 2e 36 66 20 5c | tor:.Tc_ext.=.[.%3.6f.\t.%3.6f.\ |
| 18100 | 74 20 25 33 2e 36 66 20 5d 5c 6e 27 2c 54 63 5f 65 78 74 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c | t.%3.6f.]\n',Tc_ext);.fprintf(1, |
| 18120 | 27 52 6f 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 3a 20 20 20 6f 6d 63 5f 65 78 74 20 3d 20 5b 20 | 'Rotation.vector:...omc_ext.=.[. |
| 18140 | 25 33 2e 36 66 20 5c 74 20 25 33 2e 36 66 20 5c 74 20 25 33 2e 36 66 20 5d 5c 6e 27 2c 6f 6d 63 | %3.6f.\t.%3.6f.\t.%3.6f.]\n',omc |
| 18160 | 5f 65 78 74 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 52 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 | _ext);.fprintf(1,'Rotation.matri |
| 18180 | 78 3a 20 20 20 20 52 63 5f 65 78 74 20 3d 20 5b 20 25 33 2e 36 66 20 5c 74 20 25 33 2e 36 66 20 | x:....Rc_ext.=.[.%3.6f.\t.%3.6f. |
| 181a0 | 5c 74 20 25 33 2e 36 66 5c 6e 27 2c 52 63 5f 65 78 74 28 31 2c 3a 29 27 29 3b 0a 66 70 72 69 6e | \t.%3.6f\n',Rc_ext(1,:)');.fprin |
| 181c0 | 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | tf(1,'.......................... |
| 181e0 | 20 20 20 20 20 25 33 2e 36 66 20 5c 74 20 25 33 2e 36 66 20 5c 74 20 25 33 2e 36 66 5c 6e 27 2c | .....%3.6f.\t.%3.6f.\t.%3.6f\n', |
| 18200 | 52 63 5f 65 78 74 28 32 2c 3a 29 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 | Rc_ext(2,:)');.fprintf(1,'...... |
| 18220 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 25 33 2e 36 66 20 5c | .........................%3.6f.\ |
| 18240 | 74 20 25 33 2e 36 66 20 5c 74 20 25 33 2e 36 66 20 5d 5c 6e 27 2c 52 63 5f 65 78 74 28 33 2c 3a | t.%3.6f.\t.%3.6f.]\n',Rc_ext(3,: |
| 18260 | 29 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 50 69 78 65 6c 20 65 72 72 6f 72 3a 20 20 20 20 | )');.fprintf(1,'Pixel.error:.... |
| 18280 | 20 20 20 20 20 20 20 65 72 72 20 3d 20 5b 20 25 33 2e 35 66 20 5c 74 20 25 33 2e 35 66 20 5d 5c | .......err.=.[.%3.5f.\t.%3.5f.]\ |
| 182a0 | 6e 5c 6e 27 2c 65 72 72 5f 73 74 64 32 29 3b 20 0a 0a 0a 0a 0a 0a 72 65 74 75 72 6e 3b 0a 0a 0a | n\n',err_std2);.......return;... |
| 182c0 | 25 20 53 74 6f 72 65 73 20 74 68 65 20 72 65 73 75 6c 74 73 3a 0a 0a 6b 6b 20 3d 20 31 3b 0a 0a | %.Stores.the.results:..kk.=.1;.. |
| 182e0 | 25 20 53 74 6f 72 65 73 20 6c 6f 63 61 74 69 6f 6e 20 6f 66 20 67 72 69 64 20 77 72 74 20 63 61 | %.Stores.location.of.grid.wrt.ca |
| 18300 | 6d 65 72 61 3a 0a 0a 65 76 61 6c 28 5b 27 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 | mera:..eval(['omc_'.num2str(kk). |
| 18320 | 27 20 3d 20 6f 6d 63 5f 65 78 74 3b 27 5d 29 3b 0a 65 76 61 6c 28 5b 27 54 63 5f 27 20 6e 75 6d | '.=.omc_ext;']);.eval(['Tc_'.num |
| 18340 | 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 54 63 5f 65 78 74 3b 27 5d 29 3b 0a 0a 25 20 53 74 6f 72 | 2str(kk).'.=.Tc_ext;']);..%.Stor |
| 18360 | 65 73 20 74 68 65 20 70 72 6f 6a 65 63 74 65 64 20 70 6f 69 6e 74 73 3a 0a 20 20 20 20 20 20 0a | es.the.projected.points:........ |
| 18380 | 65 76 61 6c 28 5b 27 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 78 5f 72 65 70 | eval(['y_'.num2str(kk).'.=.x_rep |
| 183a0 | 72 6f 6a 3b 27 5d 29 3b 0a 65 76 61 6c 28 5b 27 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 | roj;']);.eval(['X_'.num2str(kk). |
| 183c0 | 27 20 3d 20 58 5f 65 78 74 3b 27 5d 29 3b 0a 65 76 61 6c 28 5b 27 78 5f 27 20 6e 75 6d 32 73 74 | '.=.X_ext;']);.eval(['x_'.num2st |
| 183e0 | 72 28 6b 6b 29 20 27 20 3d 20 78 5f 65 78 74 3b 27 5d 29 3b 20 20 20 20 20 20 0a 20 20 20 20 20 | r(kk).'.=.x_ext;']);............ |
| 18400 | 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 25 20 4f 72 67 61 6e 69 7a 65 20 74 68 65 20 70 6f | ...............%.Organize.the.po |
| 18420 | 69 6e 74 73 20 69 6e 20 61 20 67 72 69 64 3a 0a 20 20 20 20 20 20 0a 65 76 61 6c 28 5b 27 6e 5f | ints.in.a.grid:........eval(['n_ |
| 18440 | 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 6e 5f 73 71 5f 78 3b 27 5d | sq_x_'.num2str(kk).'.=.n_sq_x;'] |
| 18460 | 29 3b 0a 65 76 61 6c 28 5b 27 6e 5f 73 71 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 | );.eval(['n_sq_y_'.num2str(kk).' |
| 18480 | 20 3d 20 6e 5f 73 71 5f 79 3b 27 5d 29 3b 0a 20 20 20 0a 0a 69 6d 61 5f 6e 61 6d 65 20 3d 20 5b | .=.n_sq_y;']);......ima_name.=.[ |
| 184a0 | 69 6d 61 67 65 5f 6e 61 6d 65 20 27 2e 27 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 5d 3b 0a 0a 0a | image_name.'.'.format_image];... |
| 184c0 | 0a 25 25 25 20 52 45 41 44 20 49 4e 20 49 4d 41 47 45 3a 0a 0a 69 66 20 66 6f 72 6d 61 74 5f 69 | .%%%.READ.IN.IMAGE:..if.format_i |
| 184e0 | 6d 61 67 65 28 31 29 20 3d 3d 20 27 70 27 2c 0a 20 20 20 49 20 3d 20 64 6f 75 62 6c 65 28 70 67 | mage(1).==.'p',....I.=.double(pg |
| 18500 | 6d 72 65 61 64 28 69 6d 61 5f 6e 61 6d 65 29 29 3b 0a 65 6c 73 65 0a 20 20 20 69 66 20 66 6f 72 | mread(ima_name));.else....if.for |
| 18520 | 6d 61 74 5f 69 6d 61 67 65 28 31 29 20 3d 3d 20 27 72 27 2c 0a 20 20 20 20 20 20 49 20 3d 20 72 | mat_image(1).==.'r',.......I.=.r |
| 18540 | 65 61 64 72 61 73 28 69 6d 61 5f 6e 61 6d 65 29 3b 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 | eadras(ima_name);....else....... |
| 18560 | 49 20 3d 20 64 6f 75 62 6c 65 28 69 6d 72 65 61 64 28 69 6d 61 5f 6e 61 6d 65 29 29 3b 0a 20 20 | I.=.double(imread(ima_name));... |
| 18580 | 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 69 66 20 73 69 7a 65 28 49 2c 33 29 3e 31 2c 0a 20 20 20 49 | .end;.end;..if.size(I,3)>1,....I |
| 185a0 | 20 3d 20 49 28 3a 2c 3a 2c 32 29 3b 0a 65 6e 64 3b 0a 0a 0a 25 25 25 20 45 58 54 52 41 43 54 20 | .=.I(:,:,2);.end;...%%%.EXTRACT. |
| 185c0 | 47 52 49 44 20 43 4f 52 4e 45 52 53 3a 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 45 78 74 72 | GRID.CORNERS:..fprintf(1,'\nExtr |
| 185e0 | 61 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 67 72 69 64 20 63 6f 72 6e 65 72 73 20 6f 6e 20 74 68 | action.of.the.grid.corners.on.th |
| 18600 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 65 78 74 5f 63 61 6c 69 62 2e 6d 00 00 00 00 00 00 00 | TOOLBOX_calib/ext_calib.m....... |
| 18620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 18640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 18660 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 18680 | 20 20 20 36 34 37 34 20 20 37 30 32 34 30 33 37 33 32 33 20 20 31 30 35 34 31 00 20 00 00 00 00 | ...6474..7024037323..10541...... |
| 186a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 186c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 186e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 18700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 18720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 18740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 18760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 18780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 187a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 187c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 187e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 18800 | 0a 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 53 48 4f 57 20 45 58 54 52 49 | .%%%%%%%%%%%%%%%%%%%%.SHOW.EXTRI |
| 18820 | 4e 53 49 43 20 52 45 53 55 4c 54 53 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 | NSIC.RESULTS.%%%%%%%%%%%%%%%%%%% |
| 18840 | 25 25 25 25 25 0a 0a 63 68 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 0a 69 66 20 | %%%%%..check_active_images;..if. |
| 18860 | 7e 65 78 69 73 74 28 5b 27 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 69 6e 64 5f 61 63 74 69 76 | ~exist(['omc_'.num2str(ind_activ |
| 18880 | 65 28 31 29 29 5d 29 2c 0a 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 4e 65 65 64 20 74 6f 20 63 | e(1))]),....fprintf(1,'Need.to.c |
| 188a0 | 61 6c 69 62 72 61 74 65 20 62 65 66 6f 72 65 20 73 68 6f 77 69 6e 67 20 65 78 74 72 69 6e 73 69 | alibrate.before.showing.extrinsi |
| 188c0 | 63 20 72 65 73 75 6c 74 73 2e 20 4d 61 79 62 65 20 6e 65 65 64 20 74 6f 20 6c 6f 61 64 20 43 61 | c.results..Maybe.need.to.load.Ca |
| 188e0 | 6c 69 62 5f 52 65 73 75 6c 74 73 2e 6d 61 74 20 66 69 6c 65 2e 5c 6e 27 29 3b 0a 20 20 20 72 65 | lib_Results.mat.file.\n');....re |
| 18900 | 74 75 72 6e 3b 0a 65 6e 64 3b 0a 0a 25 69 66 20 7e 65 78 69 73 74 28 27 6e 6f 5f 67 72 69 64 27 | turn;.end;..%if.~exist('no_grid' |
| 18920 | 29 2c 0a 20 20 20 6e 6f 5f 67 72 69 64 20 3d 20 30 3b 0a 25 65 6e 64 3b 0a 0a 69 66 20 7e 65 78 | ),....no_grid.=.0;.%end;..if.~ex |
| 18940 | 69 73 74 28 5b 27 6e 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 69 6e 64 5f 61 63 74 69 76 | ist(['n_sq_x_'.num2str(ind_activ |
| 18960 | 65 28 31 29 29 5d 29 2c 0a 20 20 20 6e 6f 5f 67 72 69 64 20 3d 20 31 3b 0a 65 6e 64 3b 0a 0a 0a | e(1))]),....no_grid.=.1;.end;... |
| 18980 | 69 66 20 30 2c 0a 0a 65 72 72 5f 73 74 64 20 3d 20 73 74 64 28 65 78 27 29 3b 0a 0a 66 70 72 69 | if.0,..err_std.=.std(ex');..fpri |
| 189a0 | 6e 74 66 28 31 2c 27 5c 6e 5c 6e 43 61 6c 69 62 72 61 74 69 6f 6e 20 72 65 73 75 6c 74 73 20 77 | ntf(1,'\n\nCalibration.results.w |
| 189c0 | 69 74 68 6f 75 74 20 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 65 73 74 69 6d 61 74 69 6f | ithout.principal.point.estimatio |
| 189e0 | 6e 3a 5c 6e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 46 6f 63 61 6c 20 4c 65 6e 67 74 | n:\n\n');.fprintf(1,'Focal.Lengt |
| 18a00 | 68 3a 20 20 20 20 20 66 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c | h:.....fc.=.[.%3.5f...%3.5f]\n', |
| 18a20 | 66 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 50 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 3a | fc);.fprintf(1,'Principal.point: |
| 18a40 | 20 20 63 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 63 63 29 3b 0a | ..cc.=.[.%3.5f...%3.5f]\n',cc);. |
| 18a60 | 66 70 72 69 6e 74 66 28 31 2c 27 44 69 73 74 6f 72 74 69 6f 6e 3a 20 20 20 20 20 20 20 6b 63 20 | fprintf(1,'Distortion:.......kc. |
| 18a80 | 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 20 20 20 25 33 2e 35 | =.[.%3.5f...%3.5f...%3.5f...%3.5 |
| 18aa0 | 66 5d 5c 6e 27 2c 6b 63 29 3b 20 20 20 0a 66 70 72 69 6e 74 66 28 31 2c 27 50 69 78 65 6c 20 65 | f]\n',kc);....fprintf(1,'Pixel.e |
| 18ac0 | 72 72 6f 72 3a 20 20 20 20 20 20 65 72 72 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 | rror:......err.=.[.%3.5f...%3.5f |
| 18ae0 | 5d 5c 6e 5c 6e 27 2c 65 72 72 5f 73 74 64 29 3b 20 0a 0a 65 6e 64 3b 0a 0a 0a 25 20 43 6f 6c 6f | ]\n\n',err_std);...end;...%.Colo |
| 18b00 | 72 20 63 6f 64 65 20 66 6f 72 20 65 61 63 68 20 69 6d 61 67 65 3a 0a 0a 63 6f 6c 6f 72 73 20 3d | r.code.for.each.image:..colors.= |
| 18b20 | 20 27 62 72 67 6b 63 6d 27 3b 0a 0a 0a 25 25 25 20 53 68 6f 77 20 74 68 65 20 65 78 74 72 69 6e | .'brgkcm';...%%%.Show.the.extrin |
| 18b40 | 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 0a 0a 69 66 20 7e 65 78 69 73 74 28 27 64 58 27 29 2c | sic.parameters..if.~exist('dX'), |
| 18b60 | 0a 20 20 20 65 76 61 6c 28 5b 27 64 58 20 3d 20 6e 6f 72 6d 28 54 63 5f 27 20 6e 75 6d 32 73 74 | ....eval(['dX.=.norm(Tc_'.num2st |
| 18b80 | 72 28 69 6e 64 5f 61 63 74 69 76 65 28 31 29 29 20 27 29 2f 31 30 3b 27 5d 29 3b 0a 20 20 20 64 | r(ind_active(1)).')/10;']);....d |
| 18ba0 | 59 20 3d 20 64 58 3b 0a 65 6e 64 3b 0a 0a 49 50 20 3d 20 35 2a 64 58 2a 28 5b 30 20 6e 78 2d 31 | Y.=.dX;.end;..IP.=.5*dX*([0.nx-1 |
| 18bc0 | 20 6e 78 2d 31 20 30 20 30 20 3b 20 30 20 30 20 6e 79 2d 31 20 6e 79 2d 31 20 30 3b 31 20 31 20 | .nx-1.0.0.;.0.0.ny-1.ny-1.0;1.1. |
| 18be0 | 31 20 31 20 31 5d 20 2d 20 5b 63 63 3b 30 5d 2a 6f 6e 65 73 28 31 2c 35 29 29 20 2e 2f 20 28 5b | 1.1.1].-.[cc;0]*ones(1,5))../.([ |
| 18c00 | 66 63 3b 31 5d 2a 6f 6e 65 73 28 31 2c 35 29 29 3b 0a 42 41 53 45 20 3d 20 35 2a 64 58 2a 28 5b | fc;1]*ones(1,5));.BASE.=.5*dX*([ |
| 18c20 | 30 20 31 20 30 20 30 20 30 20 30 3b 30 20 30 20 30 20 31 20 30 20 30 3b 30 20 30 20 30 20 30 20 | 0.1.0.0.0.0;0.0.0.1.0.0;0.0.0.0. |
| 18c40 | 30 20 31 5d 29 3b 0a 49 50 20 3d 20 72 65 73 68 61 70 65 28 5b 49 50 3b 42 41 53 45 28 3a 2c 31 | 0.1]);.IP.=.reshape([IP;BASE(:,1 |
| 18c60 | 29 2a 6f 6e 65 73 28 31 2c 35 29 3b 49 50 5d 2c 33 2c 31 35 29 3b 0a 0a 66 69 67 75 72 65 28 34 | )*ones(1,5);IP],3,15);..figure(4 |
| 18c80 | 29 3b 0a 5b 61 2c 62 5d 20 3d 20 76 69 65 77 3b 0a 0a 66 69 67 75 72 65 28 34 29 3b 0a 70 6c 6f | );.[a,b].=.view;..figure(4);.plo |
| 18ca0 | 74 33 28 42 41 53 45 28 31 2c 3a 29 2c 42 41 53 45 28 33 2c 3a 29 2c 2d 42 41 53 45 28 32 2c 3a | t3(BASE(1,:),BASE(3,:),-BASE(2,: |
| 18cc0 | 29 2c 27 62 2d 27 2c 27 6c 69 6e 65 77 69 64 74 68 27 2c 32 27 29 3b 0a 68 6f 6c 64 20 6f 6e 3b | ),'b-','linewidth',2');.hold.on; |
| 18ce0 | 0a 70 6c 6f 74 33 28 49 50 28 31 2c 3a 29 2c 49 50 28 33 2c 3a 29 2c 2d 49 50 28 32 2c 3a 29 2c | .plot3(IP(1,:),IP(3,:),-IP(2,:), |
| 18d00 | 27 72 2d 27 2c 27 6c 69 6e 65 77 69 64 74 68 27 2c 32 29 3b 0a 74 65 78 74 28 36 2a 64 58 2c 30 | 'r-','linewidth',2);.text(6*dX,0 |
| 18d20 | 2c 30 2c 27 58 5f 63 27 29 3b 0a 74 65 78 74 28 2d 64 58 2c 35 2a 64 58 2c 30 2c 27 5a 5f 63 27 | ,0,'X_c');.text(-dX,5*dX,0,'Z_c' |
| 18d40 | 29 3b 0a 74 65 78 74 28 30 2c 30 2c 2d 36 2a 64 58 2c 27 59 5f 63 27 29 3b 0a 74 65 78 74 28 2d | );.text(0,0,-6*dX,'Y_c');.text(- |
| 18d60 | 64 58 2c 2d 64 58 2c 64 58 2c 27 4f 5f 63 27 29 3b 0a 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e | dX,-dX,dX,'O_c');...for.kk.=.1:n |
| 18d80 | 5f 69 6d 61 2c 0a 20 20 20 0a 20 20 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b | _ima,........if.active_images(kk |
| 18da0 | 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 09 65 76 61 6c 28 5b 27 58 58 5f 6b 6b 20 3d 20 58 5f 27 | );............eval(['XX_kk.=.X_' |
| 18dc0 | 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 09 65 76 61 6c 28 5b 27 6f | .num2str(kk).';']);.....eval(['o |
| 18de0 | 6d 63 5f 6b 6b 20 3d 20 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b | mc_kk.=.omc_'.num2str(kk).';']); |
| 18e00 | 0a 20 20 20 09 65 76 61 6c 28 5b 27 54 63 5f 6b 6b 20 3d 20 54 63 5f 27 20 6e 75 6d 32 73 74 72 | .....eval(['Tc_kk.=.Tc_'.num2str |
| 18e20 | 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 20 20 20 4e 5f 6b 6b 20 3d 20 73 69 7a 65 28 58 58 | (kk).';']);.......N_kk.=.size(XX |
| 18e40 | 5f 6b 6b 2c 32 29 3b 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 69 66 20 7e 65 | _kk,2);....................if.~e |
| 18e60 | 78 69 73 74 28 5b 27 6e 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 5d 29 2c 0a 20 | xist(['n_sq_x_'.num2str(kk)]),.. |
| 18e80 | 20 20 20 20 20 20 20 20 20 20 20 6e 6f 5f 67 72 69 64 20 3d 20 31 3b 0a 20 20 20 20 20 20 20 20 | ...........no_grid.=.1;......... |
| 18ea0 | 20 65 6e 64 3b 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 69 66 20 7e 6e 6f 5f | .end;....................if.~no_ |
| 18ec0 | 67 72 69 64 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 76 61 6c 28 5b 27 6e 5f 73 71 5f 78 20 | grid,.............eval(['n_sq_x. |
| 18ee0 | 3d 20 6e 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 | =.n_sq_x_'.num2str(kk).';']);... |
| 18f00 | 20 20 20 20 20 20 20 20 20 20 65 76 61 6c 28 5b 27 6e 5f 73 71 5f 79 20 3d 20 6e 5f 73 71 5f 79 | ..........eval(['n_sq_y.=.n_sq_y |
| 18f20 | 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 | _'.num2str(kk).';']);........... |
| 18f40 | 20 20 69 66 20 28 4e 5f 6b 6b 20 7e 3d 20 28 28 6e 5f 73 71 5f 78 2b 31 29 2a 28 6e 5f 73 71 5f | ..if.(N_kk.~=.((n_sq_x+1)*(n_sq_ |
| 18f60 | 79 2b 31 29 29 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 5f 67 72 69 64 20 3d | y+1))),................no_grid.= |
| 18f80 | 20 31 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 20 20 20 65 6e | .1;.............end;..........en |
| 18fa0 | 64 3b 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 69 66 20 7e 69 73 6e 61 6e 28 | d;....................if.~isnan( |
| 18fc0 | 6f 6d 63 5f 6b 6b 28 31 2c 31 29 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 | omc_kk(1,1)),................... |
| 18fe0 | 20 20 20 20 20 20 20 52 5f 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 6b 6b 29 3b | .......R_kk.=.rodrigues(omc_kk); |
| 19000 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 59 59 5f 6b 6b 20 | ..........................YY_kk. |
| 19020 | 3d 20 52 5f 6b 6b 20 2a 20 58 58 5f 6b 6b 20 2b 20 54 63 5f 6b 6b 20 2a 20 6f 6e 65 73 28 31 2c | =.R_kk.*.XX_kk.+.Tc_kk.*.ones(1, |
| 19040 | 6c 65 6e 67 74 68 28 58 58 5f 6b 6b 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 | length(XX_kk));................. |
| 19060 | 20 20 20 20 20 20 20 20 20 75 75 20 3d 20 5b 2d 64 58 3b 2d 64 59 3b 30 5d 2f 32 3b 0a 20 20 20 | .........uu.=.[-dX;-dY;0]/2;.... |
| 19080 | 20 20 20 20 20 20 20 20 20 75 75 20 3d 20 52 5f 6b 6b 20 2a 20 75 75 20 2b 20 54 63 5f 6b 6b 3b | .........uu.=.R_kk.*.uu.+.Tc_kk; |
| 190a0 | 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 7e 6e | ...........................if.~n |
| 190c0 | 6f 5f 67 72 69 64 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 59 59 78 20 3d 20 7a 65 72 | o_grid,................YYx.=.zer |
| 190e0 | 6f 73 28 6e 5f 73 71 5f 78 2b 31 2c 6e 5f 73 71 5f 79 2b 31 29 3b 0a 20 20 20 20 20 20 20 20 20 | os(n_sq_x+1,n_sq_y+1);.......... |
| 19100 | 20 20 20 20 20 20 59 59 79 20 3d 20 7a 65 72 6f 73 28 6e 5f 73 71 5f 78 2b 31 2c 6e 5f 73 71 5f | ......YYy.=.zeros(n_sq_x+1,n_sq_ |
| 19120 | 79 2b 31 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 59 59 7a 20 3d 20 7a 65 72 6f 73 | y+1);................YYz.=.zeros |
| 19140 | 28 6e 5f 73 71 5f 78 2b 31 2c 6e 5f 73 71 5f 79 2b 31 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 | (n_sq_x+1,n_sq_y+1);............ |
| 19160 | 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 59 59 78 28 3a 29 20 3d 20 59 59 5f | ....................YYx(:).=.YY_ |
| 19180 | 6b 6b 28 31 2c 3a 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 59 59 79 28 3a 29 20 3d | kk(1,:);................YYy(:).= |
| 191a0 | 20 59 59 5f 6b 6b 28 32 2c 3a 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 59 59 7a 28 | .YY_kk(2,:);................YYz( |
| 191c0 | 3a 29 20 3d 20 59 59 5f 6b 6b 28 33 2c 3a 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | :).=.YY_kk(3,:);................ |
| 191e0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 25 6b 65 79 62 6f 61 72 64 3b 0a 20 20 20 20 20 | ................%keyboard;...... |
| 19200 | 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 67 75 72 65 | ..........................figure |
| 19220 | 28 34 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 68 68 3d 20 6d 65 73 68 28 59 59 | (4);................hhh=.mesh(YY |
| 19240 | 78 2c 59 59 7a 2c 2d 59 59 79 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 28 | x,YYz,-YYy);................set( |
| 19260 | 68 68 68 2c 27 65 64 67 65 63 6f 6c 6f 72 27 2c 63 6f 6c 6f 72 73 28 72 65 6d 28 6b 6b 2d 31 2c | hhh,'edgecolor',colors(rem(kk-1, |
| 19280 | 36 29 2b 31 29 2c 27 6c 69 6e 65 77 69 64 74 68 27 2c 31 29 3b 20 25 2c 27 66 61 63 65 63 6f 6c | 6)+1),'linewidth',1);.%,'facecol |
| 192a0 | 6f 72 27 2c 27 6e 6f 6e 65 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 25 70 6c 6f | or','none');................%plo |
| 192c0 | 74 33 28 59 59 5f 6b 6b 28 31 2c 3a 29 2c 59 59 5f 6b 6b 28 33 2c 3a 29 2c 2d 59 59 5f 6b 6b 28 | t3(YY_kk(1,:),YY_kk(3,:),-YY_kk( |
| 192e0 | 32 2c 3a 29 2c 5b 27 6f 27 20 63 6f 6c 6f 72 73 28 72 65 6d 28 6b 6b 2d 31 2c 36 29 2b 31 29 5d | 2,:),['o'.colors(rem(kk-1,6)+1)] |
| 19300 | 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 28 75 75 28 31 29 2c 75 75 28 | );................text(uu(1),uu( |
| 19320 | 33 29 2c 2d 75 75 28 32 29 2c 6e 75 6d 32 73 74 72 28 6b 6b 29 2c 27 66 6f 6e 74 73 69 7a 65 27 | 3),-uu(2),num2str(kk),'fontsize' |
| 19340 | 2c 31 34 2c 27 63 6f 6c 6f 72 27 2c 63 6f 6c 6f 72 73 28 72 65 6d 28 6b 6b 2d 31 2c 36 29 2b 31 | ,14,'color',colors(rem(kk-1,6)+1 |
| 19360 | 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 | ));.............else............ |
| 19380 | 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 67 75 72 65 28 34 29 3b 0a 20 | ....................figure(4);.. |
| 193a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 6c 6f 74 33 28 59 59 5f 6b 6b 28 31 2c 3a 29 2c 59 | ..............plot3(YY_kk(1,:),Y |
| 193c0 | 59 5f 6b 6b 28 33 2c 3a 29 2c 2d 59 59 5f 6b 6b 28 32 2c 3a 29 2c 5b 27 2e 27 20 63 6f 6c 6f 72 | Y_kk(3,:),-YY_kk(2,:),['.'.color |
| 193e0 | 73 28 72 65 6d 28 6b 6b 2d 31 2c 36 29 2b 31 29 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 | s(rem(kk-1,6)+1)]);............. |
| 19400 | 20 20 20 74 65 78 74 28 75 75 28 31 29 2c 75 75 28 33 29 2c 2d 75 75 28 32 29 2c 6e 75 6d 32 73 | ...text(uu(1),uu(3),-uu(2),num2s |
| 19420 | 74 72 28 6b 6b 29 2c 27 66 6f 6e 74 73 69 7a 65 27 2c 31 34 2c 27 63 6f 6c 6f 72 27 2c 63 6f 6c | tr(kk),'fontsize',14,'color',col |
| 19440 | 6f 72 73 28 72 65 6d 28 6b 6b 2d 31 2c 36 29 2b 31 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 | ors(rem(kk-1,6)+1));............ |
| 19460 | 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 20 20 20 20 | .................end;........... |
| 19480 | 20 20 0a 20 20 20 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a | ............end;...........end;. |
| 194a0 | 20 20 20 0a 65 6e 64 3b 0a 0a 66 69 67 75 72 65 28 34 29 3b 72 6f 74 61 74 65 33 64 20 6f 6e 3b | ....end;..figure(4);rotate3d.on; |
| 194c0 | 0a 61 78 69 73 28 27 65 71 75 61 6c 27 29 3b 0a 74 69 74 6c 65 28 27 45 78 74 72 69 6e 73 69 63 | .axis('equal');.title('Extrinsic |
| 194e0 | 20 70 61 72 61 6d 65 74 65 72 73 27 29 3b 0a 25 76 69 65 77 28 36 30 2c 33 30 29 3b 0a 76 69 65 | .parameters');.%view(60,30);.vie |
| 19500 | 77 28 61 2c 62 29 3b 0a 68 6f 6c 64 20 6f 66 66 3b 0a 0a 73 65 74 28 34 2c 27 4e 61 6d 65 27 2c | w(a,b);.hold.off;..set(4,'Name', |
| 19520 | 27 33 44 27 2c 27 4e 75 6d 62 65 72 54 69 74 6c 65 27 2c 27 6f 66 66 27 29 3b 0a 0a 25 25 25 25 | '3D','NumberTitle','off');..%%%% |
| 19540 | 25 25 0a 20 20 20 66 69 67 75 72 65 28 32 29 3b 0a 20 20 20 68 6f 6c 64 20 6f 6e 3b 0a 20 20 20 | %%....figure(2);....hold.on;.... |
| 19560 | 70 6c 6f 74 28 58 58 28 31 2c 3a 29 2c 58 58 28 32 2c 3a 29 2c 27 72 2b 27 29 3b 0a 20 20 20 74 | plot(XX(1,:),XX(2,:),'r+');....t |
| 19580 | 69 74 6c 65 28 27 54 68 65 20 72 65 64 20 63 72 6f 73 73 65 73 20 73 68 6f 75 6c 64 20 62 65 20 | itle('The.red.crosses.should.be. |
| 195a0 | 63 6c 6f 73 65 20 74 6f 20 74 68 65 20 69 6d 61 67 65 20 63 6f 72 6e 65 72 73 27 29 3b 0a 20 20 | close.to.the.image.corners');... |
| 195c0 | 20 68 6f 6c 64 20 6f 66 66 3b 0a 20 20 20 0a 20 20 20 64 69 73 70 28 27 49 66 20 74 68 65 20 67 | .hold.off;........disp('If.the.g |
| 195e0 | 75 65 73 73 65 64 20 67 72 69 64 20 63 6f 72 6e 65 72 73 20 28 72 65 64 20 63 72 6f 73 73 65 73 | uessed.grid.corners.(red.crosses |
| 19600 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 67 69 6e 70 75 74 33 2e 6d 00 00 00 00 00 00 00 00 00 | TOOLBOX_calib/ginput3.m......... |
| 19620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 19640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 19660 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 19680 | 20 20 31 34 33 30 34 20 20 37 30 32 34 30 33 37 33 32 34 20 20 31 30 32 31 30 00 20 00 00 00 00 | ..14304..7024037324..10210...... |
| 196a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 196c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 196e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 19700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 19720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 19740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 19760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 19780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 197a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 197c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 197e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 19800 | 66 75 6e 63 74 69 6f 6e 20 5b 6f 75 74 31 2c 6f 75 74 32 2c 6f 75 74 33 5d 20 3d 20 67 69 6e 70 | function.[out1,out2,out3].=.ginp |
| 19820 | 75 74 32 28 61 72 67 31 29 0a 25 47 49 4e 50 55 54 20 47 72 61 70 68 69 63 61 6c 20 69 6e 70 75 | ut2(arg1).%GINPUT.Graphical.inpu |
| 19840 | 74 20 66 72 6f 6d 20 6d 6f 75 73 65 2e 0a 25 20 20 20 5b 58 2c 59 5d 20 3d 20 47 49 4e 50 55 54 | t.from.mouse..%...[X,Y].=.GINPUT |
| 19860 | 28 4e 29 20 67 65 74 73 20 4e 20 70 6f 69 6e 74 73 20 66 72 6f 6d 20 74 68 65 20 63 75 72 72 65 | (N).gets.N.points.from.the.curre |
| 19880 | 6e 74 20 61 78 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 0a 25 20 20 20 74 68 65 20 58 2d 20 | nt.axes.and.returns..%...the.X-. |
| 198a0 | 61 6e 64 20 59 2d 63 6f 6f 72 64 69 6e 61 74 65 73 20 69 6e 20 6c 65 6e 67 74 68 20 4e 20 76 65 | and.Y-coordinates.in.length.N.ve |
| 198c0 | 63 74 6f 72 73 20 58 20 61 6e 64 20 59 2e 20 20 54 68 65 20 63 75 72 73 6f 72 0a 25 20 20 20 63 | ctors.X.and.Y...The.cursor.%...c |
| 198e0 | 61 6e 20 62 65 20 70 6f 73 69 74 69 6f 6e 65 64 20 75 73 69 6e 67 20 61 20 6d 6f 75 73 65 20 28 | an.be.positioned.using.a.mouse.( |
| 19900 | 6f 72 20 62 79 20 75 73 69 6e 67 20 74 68 65 20 41 72 72 6f 77 20 4b 65 79 73 20 6f 6e 20 73 6f | or.by.using.the.Arrow.Keys.on.so |
| 19920 | 6d 65 20 0a 25 20 20 20 73 79 73 74 65 6d 73 29 2e 20 20 44 61 74 61 20 70 6f 69 6e 74 73 20 61 | me..%...systems)...Data.points.a |
| 19940 | 72 65 20 65 6e 74 65 72 65 64 20 62 79 20 70 72 65 73 73 69 6e 67 20 61 20 6d 6f 75 73 65 20 62 | re.entered.by.pressing.a.mouse.b |
| 19960 | 75 74 74 6f 6e 0a 25 20 20 20 6f 72 20 61 6e 79 20 6b 65 79 20 6f 6e 20 74 68 65 20 6b 65 79 62 | utton.%...or.any.key.on.the.keyb |
| 19980 | 6f 61 72 64 20 65 78 63 65 70 74 20 63 61 72 72 69 61 67 65 20 72 65 74 75 72 6e 2c 20 77 68 69 | oard.except.carriage.return,.whi |
| 199a0 | 63 68 20 74 65 72 6d 69 6e 61 74 65 73 0a 25 20 20 20 74 68 65 20 69 6e 70 75 74 20 62 65 66 6f | ch.terminates.%...the.input.befo |
| 199c0 | 72 65 20 4e 20 70 6f 69 6e 74 73 20 61 72 65 20 65 6e 74 65 72 65 64 2e 0a 25 0a 25 20 20 20 5b | re.N.points.are.entered..%.%...[ |
| 199e0 | 58 2c 59 5d 20 3d 20 47 49 4e 50 55 54 20 67 61 74 68 65 72 73 20 61 6e 20 75 6e 6c 69 6d 69 74 | X,Y].=.GINPUT.gathers.an.unlimit |
| 19a00 | 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 70 6f 69 6e 74 73 20 75 6e 74 69 6c 20 74 68 65 0a 25 20 | ed.number.of.points.until.the.%. |
| 19a20 | 20 20 72 65 74 75 72 6e 20 6b 65 79 20 69 73 20 70 72 65 73 73 65 64 2e 0a 25 20 0a 25 20 20 20 | ..return.key.is.pressed..%..%... |
| 19a40 | 5b 58 2c 59 2c 42 55 54 54 4f 4e 5d 20 3d 20 47 49 4e 50 55 54 28 4e 29 20 72 65 74 75 72 6e 73 | [X,Y,BUTTON].=.GINPUT(N).returns |
| 19a60 | 20 61 20 74 68 69 72 64 20 72 65 73 75 6c 74 2c 20 42 55 54 54 4f 4e 2c 20 74 68 61 74 20 0a 25 | .a.third.result,.BUTTON,.that..% |
| 19a80 | 20 20 20 63 6f 6e 74 61 69 6e 73 20 61 20 76 65 63 74 6f 72 20 6f 66 20 69 6e 74 65 67 65 72 73 | ...contains.a.vector.of.integers |
| 19aa0 | 20 73 70 65 63 69 66 79 69 6e 67 20 77 68 69 63 68 20 6d 6f 75 73 65 20 62 75 74 74 6f 6e 20 77 | .specifying.which.mouse.button.w |
| 19ac0 | 61 73 0a 25 20 20 20 75 73 65 64 20 28 31 2c 32 2c 33 20 66 72 6f 6d 20 6c 65 66 74 29 20 6f 72 | as.%...used.(1,2,3.from.left).or |
| 19ae0 | 20 41 53 43 49 49 20 6e 75 6d 62 65 72 73 20 69 66 20 61 20 6b 65 79 20 6f 6e 20 74 68 65 20 6b | .ASCII.numbers.if.a.key.on.the.k |
| 19b00 | 65 79 62 6f 61 72 64 0a 25 20 20 20 77 61 73 20 75 73 65 64 2e 0a 0a 25 20 20 20 43 6f 70 79 72 | eyboard.%...was.used...%...Copyr |
| 19b20 | 69 67 68 74 20 28 63 29 20 31 39 38 34 2d 39 36 20 62 79 20 54 68 65 20 4d 61 74 68 57 6f 72 6b | ight.(c).1984-96.by.The.MathWork |
| 19b40 | 73 2c 20 49 6e 63 2e 0a 25 20 20 20 24 52 65 76 69 73 69 6f 6e 3a 20 35 2e 31 38 20 24 20 20 24 | s,.Inc..%...$Revision:.5.18.$..$ |
| 19b60 | 44 61 74 65 3a 20 31 39 39 36 2f 31 31 2f 31 30 20 31 37 3a 34 38 3a 30 38 20 24 0a 0a 25 20 46 | Date:.1996/11/10.17:48:08.$..%.F |
| 19b80 | 69 78 65 64 20 76 65 72 73 69 6f 6e 20 62 79 20 4a 65 61 6e 2d 59 76 65 73 20 42 6f 75 67 75 65 | ixed.version.by.Jean-Yves.Bougue |
| 19ba0 | 74 20 74 6f 20 68 61 76 65 20 61 20 63 72 6f 73 73 20 69 6e 73 74 65 61 64 20 6f 66 20 32 20 6c | t.to.have.a.cross.instead.of.2.l |
| 19bc0 | 69 6e 65 73 0a 25 20 4d 6f 72 65 20 76 69 73 69 62 6c 65 20 66 6f 72 20 69 6d 61 67 65 73 0a 0a | ines.%.More.visible.for.images.. |
| 19be0 | 50 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 31 36 2c 31 36 29 3b 0a 50 28 31 3a 31 35 2c 31 3a 31 35 | P.=.NaN*ones(16,16);.P(1:15,1:15 |
| 19c00 | 29 20 3d 20 32 2a 6f 6e 65 73 28 31 35 2c 31 35 29 3b 0a 50 28 32 3a 31 34 2c 32 3a 31 34 29 20 | ).=.2*ones(15,15);.P(2:14,2:14). |
| 19c20 | 3d 20 6f 6e 65 73 28 31 33 2c 31 33 29 3b 0a 50 28 33 3a 31 33 2c 33 3a 31 33 29 20 3d 20 4e 61 | =.ones(13,13);.P(3:13,3:13).=.Na |
| 19c40 | 4e 2a 6f 6e 65 73 28 31 31 2c 31 31 29 3b 0a 50 28 36 3a 31 30 2c 36 3a 31 30 29 20 3d 20 32 2a | N*ones(11,11);.P(6:10,6:10).=.2* |
| 19c60 | 6f 6e 65 73 28 35 2c 35 29 3b 0a 50 28 37 3a 39 2c 37 3a 39 29 20 3d 20 31 2a 6f 6e 65 73 28 33 | ones(5,5);.P(7:9,7:9).=.1*ones(3 |
| 19c80 | 2c 33 29 3b 0a 0a 6f 75 74 31 20 3d 20 5b 5d 3b 20 6f 75 74 32 20 3d 20 5b 5d 3b 20 6f 75 74 33 | ,3);..out1.=.[];.out2.=.[];.out3 |
| 19ca0 | 20 3d 20 5b 5d 3b 20 79 20 3d 20 5b 5d 3b 0a 63 20 3d 20 63 6f 6d 70 75 74 65 72 3b 0a 69 66 20 | .=.[];.y.=.[];.c.=.computer;.if. |
| 19cc0 | 7e 73 74 72 63 6d 70 28 63 28 31 3a 32 29 2c 27 50 43 27 29 20 26 20 7e 73 74 72 63 6d 70 28 63 | ~strcmp(c(1:2),'PC').&.~strcmp(c |
| 19ce0 | 28 31 3a 32 29 2c 27 4d 41 27 29 0a 20 20 20 20 74 70 20 3d 20 67 65 74 28 30 2c 27 54 65 72 6d | (1:2),'MA').....tp.=.get(0,'Term |
| 19d00 | 69 6e 61 6c 50 72 6f 74 6f 63 6f 6c 27 29 3b 0a 65 6c 73 65 0a 20 20 20 20 74 70 20 3d 20 27 6d | inalProtocol');.else.....tp.=.'m |
| 19d20 | 69 63 72 6f 27 3b 0a 65 6e 64 0a 0a 69 66 20 7e 73 74 72 63 6d 70 28 74 70 2c 27 6e 6f 6e 65 27 | icro';.end..if.~strcmp(tp,'none' |
| 19d40 | 29 20 26 20 7e 73 74 72 63 6d 70 28 74 70 2c 27 78 27 29 20 26 20 7e 73 74 72 63 6d 70 28 74 70 | ).&.~strcmp(tp,'x').&.~strcmp(tp |
| 19d60 | 2c 27 6d 69 63 72 6f 27 29 2c 0a 20 20 20 20 69 66 20 6e 61 72 67 6f 75 74 20 3d 3d 20 31 2c 0a | ,'micro'),.....if.nargout.==.1,. |
| 19d80 | 20 20 20 20 20 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3d 3d 20 31 2c 0a 20 20 20 20 20 20 20 20 | ........if.nargin.==.1,......... |
| 19da0 | 20 20 20 20 65 76 61 6c 28 27 6f 75 74 31 20 3d 20 74 72 6d 67 69 6e 70 75 74 28 61 72 67 31 29 | ....eval('out1.=.trmginput(arg1) |
| 19dc0 | 3b 27 29 3b 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 76 | ;');.........else.............ev |
| 19de0 | 61 6c 28 27 6f 75 74 31 20 3d 20 74 72 6d 67 69 6e 70 75 74 3b 27 29 3b 0a 20 20 20 20 20 20 20 | al('out1.=.trmginput;');........ |
| 19e00 | 20 65 6e 64 0a 20 20 20 20 65 6c 73 65 69 66 20 6e 61 72 67 6f 75 74 20 3d 3d 20 32 20 7c 20 6e | .end.....elseif.nargout.==.2.|.n |
| 19e20 | 61 72 67 6f 75 74 20 3d 3d 20 30 2c 0a 20 20 20 20 20 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3d | argout.==.0,.........if.nargin.= |
| 19e40 | 3d 20 31 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 76 61 6c 28 27 5b 6f 75 74 31 2c 6f 75 74 | =.1,.............eval('[out1,out |
| 19e60 | 32 5d 20 3d 20 74 72 6d 67 69 6e 70 75 74 28 61 72 67 31 29 3b 27 29 3b 0a 20 20 20 20 20 20 20 | 2].=.trmginput(arg1);');........ |
| 19e80 | 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 76 61 6c 28 27 5b 6f 75 74 31 2c 6f 75 | .else.............eval('[out1,ou |
| 19ea0 | 74 32 5d 20 3d 20 74 72 6d 67 69 6e 70 75 74 3b 27 29 3b 0a 20 20 20 20 20 20 20 20 65 6e 64 0a | t2].=.trmginput;');.........end. |
| 19ec0 | 20 20 20 20 20 20 20 20 69 66 20 20 6e 61 72 67 6f 75 74 20 3d 3d 20 30 0a 20 20 20 20 20 20 20 | ........if..nargout.==.0........ |
| 19ee0 | 20 20 20 20 20 6f 75 74 31 20 3d 20 5b 20 6f 75 74 31 20 6f 75 74 32 20 5d 3b 0a 20 20 20 20 20 | .....out1.=.[.out1.out2.];...... |
| 19f00 | 20 20 20 65 6e 64 0a 20 20 20 20 65 6c 73 65 69 66 20 6e 61 72 67 6f 75 74 20 3d 3d 20 33 2c 0a | ...end.....elseif.nargout.==.3,. |
| 19f20 | 20 20 20 20 20 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3d 3d 20 31 2c 0a 20 20 20 20 20 20 20 20 | ........if.nargin.==.1,......... |
| 19f40 | 20 20 20 20 65 76 61 6c 28 27 5b 6f 75 74 31 2c 6f 75 74 32 2c 6f 75 74 33 5d 20 3d 20 74 72 6d | ....eval('[out1,out2,out3].=.trm |
| 19f60 | 67 69 6e 70 75 74 28 61 72 67 31 29 3b 27 29 3b 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20 | ginput(arg1);');.........else... |
| 19f80 | 20 20 20 20 20 20 20 20 20 20 65 76 61 6c 28 27 5b 6f 75 74 31 2c 6f 75 74 32 2c 6f 75 74 33 5d | ..........eval('[out1,out2,out3] |
| 19fa0 | 20 3d 20 74 72 6d 67 69 6e 70 75 74 3b 27 29 3b 0a 20 20 20 20 20 20 20 20 65 6e 64 0a 20 20 20 | .=.trmginput;');.........end.... |
| 19fc0 | 20 65 6e 64 0a 65 6c 73 65 0a 0a 20 20 20 20 66 69 67 20 3d 20 67 63 66 3b 0a 20 20 20 20 66 69 | .end.else......fig.=.gcf;.....fi |
| 19fe0 | 67 75 72 65 28 67 63 66 29 3b 0a 0a 20 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3d 3d 20 30 0a 20 | gure(gcf);......if.nargin.==.0.. |
| 1a000 | 20 20 20 20 20 20 20 68 6f 77 5f 6d 61 6e 79 20 3d 20 2d 31 3b 0a 20 20 20 20 20 20 20 20 62 20 | .......how_many.=.-1;.........b. |
| 1a020 | 3d 20 5b 5d 3b 0a 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 68 6f 77 5f 6d 61 6e 79 20 | =.[];.....else.........how_many. |
| 1a040 | 3d 20 61 72 67 31 3b 0a 20 20 20 20 20 20 20 20 62 20 3d 20 5b 5d 3b 0a 20 20 20 20 20 20 20 20 | =.arg1;.........b.=.[];......... |
| 1a060 | 69 66 20 20 69 73 73 74 72 28 68 6f 77 5f 6d 61 6e 79 29 20 2e 2e 2e 0a 20 20 20 20 20 20 20 20 | if..isstr(how_many)............. |
| 1a080 | 20 20 20 20 7c 20 73 69 7a 65 28 68 6f 77 5f 6d 61 6e 79 2c 31 29 20 7e 3d 20 31 20 7c 20 73 69 | ....|.size(how_many,1).~=.1.|.si |
| 1a0a0 | 7a 65 28 68 6f 77 5f 6d 61 6e 79 2c 32 29 20 7e 3d 20 31 20 2e 2e 2e 0a 20 20 20 20 20 20 20 20 | ze(how_many,2).~=.1............. |
| 1a0c0 | 20 20 20 20 7c 20 7e 28 66 69 78 28 68 6f 77 5f 6d 61 6e 79 29 20 3d 3d 20 68 6f 77 5f 6d 61 6e | ....|.~(fix(how_many).==.how_man |
| 1a0e0 | 79 29 20 2e 2e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 68 6f 77 5f 6d 61 6e 79 20 3c 20 | y).................|.how_many.<. |
| 1a100 | 30 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 28 27 52 65 71 75 69 72 65 73 20 61 20 | 0.............error('Requires.a. |
| 1a120 | 70 6f 73 69 74 69 76 65 20 69 6e 74 65 67 65 72 2e 27 29 0a 20 20 20 20 20 20 20 20 65 6e 64 0a | positive.integer.').........end. |
| 1a140 | 20 20 20 20 20 20 20 20 69 66 20 68 6f 77 5f 6d 61 6e 79 20 3d 3d 20 30 0a 20 20 20 20 20 20 20 | ........if.how_many.==.0........ |
| 1a160 | 20 20 20 20 20 70 74 72 5f 66 69 67 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 68 | .....ptr_fig.=.0;.............wh |
| 1a180 | 69 6c 65 28 70 74 72 5f 66 69 67 20 7e 3d 20 66 69 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | ile(ptr_fig.~=.fig)............. |
| 1a1a0 | 20 20 20 20 70 74 72 5f 66 69 67 20 3d 20 67 65 74 28 30 2c 27 50 6f 69 6e 74 65 72 57 69 6e 64 | ....ptr_fig.=.get(0,'PointerWind |
| 1a1c0 | 6f 77 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0a 20 20 20 20 20 20 20 20 20 20 | ow');.............end........... |
| 1a1e0 | 20 20 73 63 72 6e 5f 70 74 20 3d 20 67 65 74 28 30 2c 27 50 6f 69 6e 74 65 72 4c 6f 63 61 74 69 | ..scrn_pt.=.get(0,'PointerLocati |
| 1a200 | 6f 6e 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 20 3d 20 67 65 74 28 66 69 67 2c | on');.............loc.=.get(fig, |
| 1a220 | 27 50 6f 73 69 74 69 6f 6e 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 74 20 3d 20 5b 73 | 'Position');.............pt.=.[s |
| 1a240 | 63 72 6e 5f 70 74 28 31 29 20 2d 20 6c 6f 63 28 31 29 2c 20 73 63 72 6e 5f 70 74 28 32 29 20 2d | crn_pt(1).-.loc(1),.scrn_pt(2).- |
| 1a260 | 20 6c 6f 63 28 32 29 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 31 20 3d 20 70 74 28 | .loc(2)];.............out1.=.pt( |
| 1a280 | 31 29 3b 20 79 20 3d 20 70 74 28 32 29 3b 0a 20 20 20 20 20 20 20 20 65 6c 73 65 69 66 20 68 6f | 1);.y.=.pt(2);.........elseif.ho |
| 1a2a0 | 77 5f 6d 61 6e 79 20 3c 20 30 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 28 27 41 72 | w_many.<.0.............error('Ar |
| 1a2c0 | 67 75 6d 65 6e 74 20 6d 75 73 74 20 62 65 20 61 20 70 6f 73 69 74 69 76 65 20 69 6e 74 65 67 65 | gument.must.be.a.positive.intege |
| 1a2e0 | 72 2e 27 29 0a 20 20 20 20 20 20 20 20 65 6e 64 0a 20 20 20 20 65 6e 64 0a 0a 70 6f 69 6e 74 65 | r.').........end.....end..pointe |
| 1a300 | 72 20 3d 20 67 65 74 28 67 63 66 2c 27 70 6f 69 6e 74 65 72 27 29 3b 0a 0a 73 65 74 28 67 63 66 | r.=.get(gcf,'pointer');..set(gcf |
| 1a320 | 2c 27 50 6f 69 6e 74 65 72 27 2c 27 63 75 73 74 6f 6d 27 2c 27 50 6f 69 6e 74 65 72 53 68 61 70 | ,'Pointer','custom','PointerShap |
| 1a340 | 65 43 44 61 74 61 27 2c 50 2c 27 50 6f 69 6e 74 65 72 53 68 61 70 65 48 6f 74 53 70 6f 74 27 2c | eCData',P,'PointerShapeHotSpot', |
| 1a360 | 5b 38 2c 38 5d 29 3b 0a 25 73 65 74 28 67 63 66 2c 27 70 6f 69 6e 74 65 72 27 2c 27 63 72 6f 73 | [8,8]);.%set(gcf,'pointer','cros |
| 1a380 | 73 68 61 69 72 27 29 3b 0a 20 20 20 20 66 69 67 5f 75 6e 69 74 73 20 3d 20 67 65 74 28 66 69 67 | shair');.....fig_units.=.get(fig |
| 1a3a0 | 2c 27 75 6e 69 74 73 27 29 3b 0a 20 20 20 20 63 68 61 72 20 3d 20 30 3b 0a 0a 20 20 20 20 77 68 | ,'units');.....char.=.0;......wh |
| 1a3c0 | 69 6c 65 20 68 6f 77 5f 6d 61 6e 79 20 7e 3d 20 30 0a 20 20 20 20 20 20 20 20 25 20 55 73 65 20 | ile.how_many.~=.0.........%.Use. |
| 1a3e0 | 6e 6f 2d 73 69 64 65 20 65 66 66 65 63 74 20 57 41 49 54 46 4f 52 42 55 54 54 4f 4e 50 52 45 53 | no-side.effect.WAITFORBUTTONPRES |
| 1a400 | 53 0a 20 20 20 20 20 20 20 20 77 61 73 65 72 72 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 65 76 | S.........waserr.=.0;.........ev |
| 1a420 | 61 6c 28 27 6b 65 79 64 6f 77 6e 20 3d 20 77 66 62 70 3b 27 2c 20 27 77 61 73 65 72 72 20 3d 20 | al('keydown.=.wfbp;',.'waserr.=. |
| 1a440 | 31 3b 27 29 3b 0a 20 20 20 20 20 20 20 20 69 66 28 77 61 73 65 72 72 20 3d 3d 20 31 29 0a 20 20 | 1;');.........if(waserr.==.1)... |
| 1a460 | 20 20 20 20 69 66 28 69 73 68 61 6e 64 6c 65 28 66 69 67 29 29 0a 20 20 20 20 20 20 20 20 73 65 | ....if(ishandle(fig)).........se |
| 1a480 | 74 28 66 69 67 2c 27 70 6f 69 6e 74 65 72 27 2c 70 6f 69 6e 74 65 72 2c 27 75 6e 69 74 73 27 2c | t(fig,'pointer',pointer,'units', |
| 1a4a0 | 66 69 67 5f 75 6e 69 74 73 29 3b 0a 20 20 20 20 20 20 20 20 65 72 72 6f 72 28 27 49 6e 74 65 72 | fig_units);.........error('Inter |
| 1a4c0 | 72 75 70 74 65 64 27 29 3b 0a 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 65 72 72 | rupted');.......else.........err |
| 1a4e0 | 6f 72 28 27 49 6e 74 65 72 72 75 70 74 65 64 20 62 79 20 66 69 67 75 72 65 20 64 65 6c 65 74 69 | or('Interrupted.by.figure.deleti |
| 1a500 | 6f 6e 27 29 3b 0a 20 20 20 20 20 20 65 6e 64 0a 20 20 20 20 20 20 20 20 65 6e 64 0a 20 20 20 20 | on');.......end.........end..... |
| 1a520 | 20 20 0a 20 20 20 20 20 20 20 20 70 74 72 5f 66 69 67 20 3d 20 67 65 74 28 30 2c 27 43 75 72 72 | ...........ptr_fig.=.get(0,'Curr |
| 1a540 | 65 6e 74 46 69 67 75 72 65 27 29 3b 0a 20 20 20 20 20 20 20 20 69 66 28 70 74 72 5f 66 69 67 20 | entFigure');.........if(ptr_fig. |
| 1a560 | 3d 3d 20 66 69 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6b 65 79 64 6f 77 6e 0a 20 | ==.fig).............if.keydown.. |
| 1a580 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 68 61 72 20 3d 20 67 65 74 28 66 69 67 2c 20 27 | ...............char.=.get(fig,.' |
| 1a5a0 | 43 75 72 72 65 6e 74 43 68 61 72 61 63 74 65 72 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 | CurrentCharacter');............. |
| 1a5c0 | 20 20 20 20 62 75 74 74 6f 6e 20 3d 20 61 62 73 28 67 65 74 28 66 69 67 2c 20 27 43 75 72 72 65 | ....button.=.abs(get(fig,.'Curre |
| 1a5e0 | 6e 74 43 68 61 72 61 63 74 65 72 27 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ntCharacter'));................. |
| 1a600 | 73 63 72 6e 5f 70 74 20 3d 20 67 65 74 28 30 2c 20 27 50 6f 69 6e 74 65 72 4c 6f 63 61 74 69 6f | scrn_pt.=.get(0,.'PointerLocatio |
| 1a620 | 6e 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 28 66 69 67 2c 27 75 6e | n');.................set(fig,'un |
| 1a640 | 69 74 73 27 2c 27 70 69 78 65 6c 73 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c | its','pixels').................l |
| 1a660 | 6f 63 20 3d 20 67 65 74 28 66 69 67 2c 20 27 50 6f 73 69 74 69 6f 6e 27 29 3b 0a 20 20 20 20 20 | oc.=.get(fig,.'Position');...... |
| 1a680 | 20 20 20 20 20 20 20 20 20 20 20 70 74 20 3d 20 5b 73 63 72 6e 5f 70 74 28 31 29 20 2d 20 6c 6f | ...........pt.=.[scrn_pt(1).-.lo |
| 1a6a0 | 63 28 31 29 2c 20 73 63 72 6e 5f 70 74 28 32 29 20 2d 20 6c 6f 63 28 32 29 5d 3b 0a 20 20 20 20 | c(1),.scrn_pt(2).-.loc(2)];..... |
| 1a6c0 | 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 28 66 69 67 2c 27 43 75 72 72 65 6e 74 50 6f 69 6e | ............set(fig,'CurrentPoin |
| 1a6e0 | 74 27 2c 70 74 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 | t',pt);.............else........ |
| 1a700 | 20 20 20 20 20 20 20 20 20 62 75 74 74 6f 6e 20 3d 20 67 65 74 28 66 69 67 2c 20 27 53 65 6c 65 | .........button.=.get(fig,.'Sele |
| 1a720 | 63 74 69 6f 6e 54 79 70 65 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 | ctionType');.................if. |
| 1a740 | 73 74 72 63 6d 70 28 62 75 74 74 6f 6e 2c 27 6f 70 65 6e 27 29 0a 20 20 20 20 20 20 20 20 20 20 | strcmp(button,'open')........... |
| 1a760 | 20 20 20 20 20 20 20 20 20 20 62 75 74 74 6f 6e 20 3d 20 62 28 6c 65 6e 67 74 68 28 62 29 29 3b | ..........button.=.b(length(b)); |
| 1a780 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 69 66 20 73 74 72 63 6d 70 28 62 | .................elseif.strcmp(b |
| 1a7a0 | 75 74 74 6f 6e 2c 27 6e 6f 72 6d 61 6c 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | utton,'normal')................. |
| 1a7c0 | 20 20 20 20 62 75 74 74 6f 6e 20 3d 20 31 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ....button.=.1;................. |
| 1a7e0 | 65 6c 73 65 69 66 20 73 74 72 63 6d 70 28 62 75 74 74 6f 6e 2c 27 65 78 74 65 6e 64 27 29 0a 20 | elseif.strcmp(button,'extend').. |
| 1a800 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75 74 74 6f 6e 20 3d 20 32 3b 0a 20 | ...................button.=.2;.. |
| 1a820 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 69 66 20 73 74 72 63 6d 70 28 62 75 74 | ...............elseif.strcmp(but |
| 1a840 | 74 6f 6e 2c 27 61 6c 74 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 | ton,'alt').....................b |
| 1a860 | 75 74 74 6f 6e 20 3d 20 33 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0a | utton.=.3;.................else. |
| 1a880 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 28 27 49 6e 76 61 6c | ....................error('Inval |
| 1a8a0 | 69 64 20 6d 6f 75 73 65 20 73 65 6c 65 63 74 69 6f 6e 2e 27 29 0a 20 20 20 20 20 20 20 20 20 20 | id.mouse.selection.')........... |
| 1a8c0 | 20 20 20 20 20 20 65 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0a 20 20 20 20 20 20 | ......end.............end....... |
| 1a8e0 | 20 20 20 20 20 20 70 74 20 3d 20 67 65 74 28 67 63 61 2c 20 27 43 75 72 72 65 6e 74 50 6f 69 6e | ......pt.=.get(gca,.'CurrentPoin |
| 1a900 | 74 27 29 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 77 5f 6d 61 6e 79 20 3d 20 68 6f 77 | t');..............how_many.=.how |
| 1a920 | 5f 6d 61 6e 79 20 2d 20 31 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 28 63 68 61 72 20 | _many.-.1;..............if(char. |
| 1a940 | 3d 3d 20 31 33 29 20 25 20 26 20 68 6f 77 5f 6d 61 6e 79 20 7e 3d 20 30 29 0a 20 20 20 20 20 20 | ==.13).%.&.how_many.~=.0)....... |
| 1a960 | 20 20 20 20 20 20 20 20 20 20 25 20 69 66 20 74 68 65 20 72 65 74 75 72 6e 20 6b 65 79 20 77 61 | ..........%.if.the.return.key.wa |
| 1a980 | 73 20 70 72 65 73 73 65 64 2c 20 63 68 61 72 20 77 69 6c 6c 20 3d 3d 20 31 33 2c 0a 20 20 20 20 | s.pressed,.char.will.==.13,..... |
| 1a9a0 | 20 20 20 20 20 20 20 20 20 20 20 20 25 20 61 6e 64 20 74 68 61 74 27 73 20 6f 75 72 20 73 69 67 | ............%.and.that's.our.sig |
| 1a9c0 | 6e 61 6c 20 74 6f 20 62 72 65 61 6b 20 6f 75 74 20 6f 66 20 68 65 72 65 20 77 68 65 74 68 65 72 | nal.to.break.out.of.here.whether |
| 1a9e0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 25 20 6f 72 20 6e 6f 74 20 77 65 20 68 61 76 | .................%.or.not.we.hav |
| 1aa00 | 65 20 63 6f 6c 6c 65 63 74 65 64 20 61 6c 6c 20 74 68 65 20 72 65 71 75 65 73 74 65 64 20 64 61 | e.collected.all.the.requested.da |
| 1aa20 | 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 25 20 70 6f 69 6e 74 73 2e 20 20 0a 20 | ta.................%.points..... |
| 1aa40 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 25 20 49 66 20 74 68 69 73 20 77 61 73 20 61 6e 20 | ...............%.If.this.was.an. |
| 1aa60 | 65 61 72 6c 79 20 62 72 65 61 6b 6f 75 74 2c 20 64 6f 6e 27 74 20 69 6e 63 6c 75 64 65 0a 20 20 | early.breakout,.don't.include... |
| 1aa80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 25 20 74 68 65 20 3c 52 65 74 75 72 6e 3e 20 6b 65 79 | ..............%.the.<Return>.key |
| 1aaa0 | 20 69 6e 66 6f 20 69 6e 20 74 68 65 20 72 65 74 75 72 6e 20 61 72 72 61 79 73 2e 0a 20 20 20 20 | .info.in.the.return.arrays...... |
| 1aac0 | 20 20 20 20 20 20 20 20 20 20 20 20 25 20 57 65 20 77 69 6c 6c 20 6e 6f 20 6c 6f 6e 67 65 72 20 | ............%.We.will.no.longer. |
| 1aae0 | 63 6f 75 6e 74 20 69 74 20 69 66 20 69 74 27 73 20 74 68 65 20 6c 61 73 74 20 69 6e 70 75 74 2e | count.it.if.it's.the.last.input. |
| 1ab00 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 | .................break;......... |
| 1ab20 | 20 20 20 20 65 6e 64 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 31 20 3d 20 5b 6f 75 74 | ....end..............out1.=.[out |
| 1ab40 | 31 3b 70 74 28 31 2c 31 29 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 79 20 3d 20 5b 79 3b 70 | 1;pt(1,1)];.............y.=.[y;p |
| 1ab60 | 74 28 31 2c 32 29 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 20 3d 20 5b 62 3b 62 75 74 74 | t(1,2)];.............b.=.[b;butt |
| 1ab80 | 6f 6e 5d 3b 0a 20 20 20 20 20 20 20 20 65 6e 64 0a 20 20 20 20 65 6e 64 0a 0a 20 20 20 20 73 65 | on];.........end.....end......se |
| 1aba0 | 74 28 66 69 67 2c 27 70 6f 69 6e 74 65 72 27 2c 70 6f 69 6e 74 65 72 2c 27 75 6e 69 74 73 27 2c | t(fig,'pointer',pointer,'units', |
| 1abc0 | 66 69 67 5f 75 6e 69 74 73 29 3b 0a 0a 20 20 20 20 69 66 20 6e 61 72 67 6f 75 74 20 3e 20 31 0a | fig_units);......if.nargout.>.1. |
| 1abe0 | 20 20 20 20 20 20 20 20 6f 75 74 32 20 3d 20 79 3b 0a 20 20 20 20 20 20 20 20 69 66 20 6e 61 72 | ........out2.=.y;.........if.nar |
| 1ac00 | 67 6f 75 74 20 3e 20 32 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 33 20 3d 20 62 3b 0a 20 | gout.>.2.............out3.=.b;.. |
| 1ac20 | 20 20 20 20 20 20 20 65 6e 64 0a 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 6f 75 74 31 | .......end.....else.........out1 |
| 1ac40 | 20 3d 20 5b 6f 75 74 31 20 79 5d 3b 0a 20 20 20 20 65 6e 64 0a 0a 65 6e 64 0a 0a 25 25 25 25 25 | .=.[out1.y];.....end..end..%%%%% |
| 1ac60 | 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
| 1ac80 | 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 0a 66 75 6e 63 74 69 6f 6e 20 6b 65 79 20 | %%%%%%%%%%%%%%%%%%.function.key. |
| 1aca0 | 3d 20 77 66 62 70 0a 25 57 46 42 50 20 20 20 52 65 70 6c 61 63 65 6d 65 6e 74 20 66 6f 72 20 57 | =.wfbp.%WFBP...Replacement.for.W |
| 1acc0 | 41 49 54 46 4f 52 42 55 54 54 4f 4e 50 52 45 53 53 20 74 68 61 74 20 68 61 73 20 6e 6f 20 73 69 | AITFORBUTTONPRESS.that.has.no.si |
| 1ace0 | 64 65 20 65 66 66 65 63 74 73 2e 0a 0a 25 20 52 65 6d 6f 76 65 20 66 69 67 75 72 65 20 62 75 74 | de.effects...%.Remove.figure.but |
| 1ad00 | 74 6f 6e 20 66 75 6e 63 74 69 6f 6e 73 0a 66 70 72 6f 70 73 20 3d 20 7b 27 77 69 6e 64 6f 77 62 | ton.functions.fprops.=.{'windowb |
| 1ad20 | 75 74 74 6f 6e 75 70 66 63 6e 27 2c 27 62 75 74 74 6f 6e 64 6f 77 6e 66 63 6e 27 2c 20 2e 2e 2e | uttonupfcn','buttondownfcn',.... |
| 1ad40 | 0a 20 20 20 20 20 20 20 20 20 20 27 77 69 6e 64 6f 77 62 75 74 74 6f 6e 64 6f 77 6e 66 63 6e 27 | ...........'windowbuttondownfcn' |
| 1ad60 | 2c 27 77 69 6e 64 6f 77 62 75 74 74 6f 6e 6d 6f 74 69 6f 6e 66 63 6e 27 7d 3b 0a 66 69 67 20 3d | ,'windowbuttonmotionfcn'};.fig.= |
| 1ad80 | 20 67 63 66 3b 0a 66 76 61 6c 73 20 3d 20 67 65 74 28 66 69 67 2c 66 70 72 6f 70 73 29 3b 0a 73 | .gcf;.fvals.=.get(fig,fprops);.s |
| 1ada0 | 65 74 28 66 69 67 2c 66 70 72 6f 70 73 2c 7b 27 27 2c 27 27 2c 27 27 2c 27 27 7d 29 0a 0a 25 20 | et(fig,fprops,{'','','',''})..%. |
| 1adc0 | 52 65 6d 6f 76 65 20 61 6c 6c 20 6f 74 68 65 72 20 62 75 74 74 6f 6e 64 6f 77 6e 20 66 75 6e 63 | Remove.all.other.buttondown.func |
| 1ade0 | 74 69 6f 6e 73 0a 61 78 20 3d 20 66 69 6e 64 6f 62 6a 28 66 69 67 2c 27 74 79 70 65 27 2c 27 61 | tions.ax.=.findobj(fig,'type','a |
| 1ae00 | 78 65 73 27 29 3b 0a 69 66 20 69 73 65 6d 70 74 79 28 61 78 29 0a 20 20 20 20 63 68 20 3d 20 7b | xes');.if.isempty(ax).....ch.=.{ |
| 1ae20 | 7d 3b 0a 65 6c 73 65 0a 20 20 20 20 63 68 20 3d 20 67 65 74 28 61 78 2c 7b 27 43 68 69 6c 64 72 | };.else.....ch.=.get(ax,{'Childr |
| 1ae40 | 65 6e 27 7d 29 3b 0a 65 6e 64 0a 66 6f 72 20 69 3d 31 3a 6c 65 6e 67 74 68 28 63 68 29 2c 0a 20 | en'});.end.for.i=1:length(ch),.. |
| 1ae60 | 20 20 20 63 68 7b 69 7d 20 3d 20 63 68 7b 69 7d 28 3a 29 27 3b 0a 65 6e 64 0a 68 20 3d 20 5b 61 | ...ch{i}.=.ch{i}(:)';.end.h.=.[a |
| 1ae80 | 78 28 3a 29 27 2c 63 68 7b 3a 7d 5d 3b 0a 76 61 6c 73 20 3d 20 67 65 74 28 68 2c 7b 27 62 75 74 | x(:)',ch{:}];.vals.=.get(h,{'but |
| 1aea0 | 74 6f 6e 64 6f 77 6e 66 63 6e 27 7d 29 3b 0a 6d 74 20 3d 20 72 65 70 6d 61 74 28 7b 27 27 7d 2c | tondownfcn'});.mt.=.repmat({''}, |
| 1aec0 | 73 69 7a 65 28 76 61 6c 73 29 29 3b 0a 73 65 74 28 68 2c 7b 27 62 75 74 74 6f 6e 64 6f 77 6e 66 | size(vals));.set(h,{'buttondownf |
| 1aee0 | 63 6e 27 7d 2c 6d 74 29 3b 0a 0a 25 20 4e 6f 77 20 77 61 69 74 20 66 6f 72 20 74 68 61 74 20 62 | cn'},mt);..%.Now.wait.for.that.b |
| 1af00 | 75 74 74 6f 6e 70 72 65 73 73 2c 20 61 6e 64 20 63 68 65 63 6b 20 66 6f 72 20 65 72 72 6f 72 20 | uttonpress,.and.check.for.error. |
| 1af20 | 63 6f 6e 64 69 74 69 6f 6e 73 0a 77 61 73 65 72 72 20 3d 20 30 3b 0a 65 76 61 6c 28 5b 27 69 66 | conditions.waserr.=.0;.eval(['if |
| 1af40 | 20 6e 61 72 67 6f 75 74 3d 3d 30 2c 27 2c 20 2e 2e 2e 0a 20 20 20 20 20 20 27 20 20 20 77 61 69 | .nargout==0,',...........'...wai |
| 1af60 | 74 66 6f 72 62 75 74 74 6f 6e 70 72 65 73 73 2c 27 2c 20 2e 2e 2e 0a 20 20 20 20 20 20 27 65 6c | tforbuttonpress,',...........'el |
| 1af80 | 73 65 2c 27 2c 20 2e 2e 2e 0a 20 20 20 20 20 20 27 20 20 20 6b 65 79 64 6f 77 6e 20 3d 20 77 61 | se,',...........'...keydown.=.wa |
| 1afa0 | 69 74 66 6f 72 62 75 74 74 6f 6e 70 72 65 73 73 3b 27 2c 2e 2e 2e 0a 20 20 20 20 20 20 27 65 6e | itforbuttonpress;',..........'en |
| 1afc0 | 64 27 20 5d 2c 20 27 77 61 73 65 72 72 20 3d 20 31 3b 27 29 3b 0a 0a 25 20 50 75 74 20 65 76 65 | d'.],.'waserr.=.1;');..%.Put.eve |
| 1afe0 | 72 79 74 68 69 6e 67 20 62 61 63 6b 0a 69 66 28 69 73 68 61 6e 64 6c 65 28 66 69 67 29 29 0a 20 | rything.back.if(ishandle(fig)).. |
| 1b000 | 20 73 65 74 28 66 69 67 2c 66 70 72 6f 70 73 2c 66 76 61 6c 73 29 0a 20 20 73 65 74 28 68 2c 7b | .set(fig,fprops,fvals)...set(h,{ |
| 1b020 | 27 62 75 74 74 6f 6e 64 6f 77 6e 66 63 6e 27 7d 2c 76 61 6c 73 29 0a 65 6e 64 0a 0a 69 66 28 77 | 'buttondownfcn'},vals).end..if(w |
| 1b040 | 61 73 65 72 72 20 3d 3d 20 31 29 0a 20 20 65 72 72 6f 72 28 27 49 6e 74 65 72 72 75 70 74 65 64 | aserr.==.1)...error('Interrupted |
| 1b060 | 27 29 3b 0a 65 6e 64 0a 0a 69 66 20 6e 61 72 67 6f 75 74 3e 30 2c 20 6b 65 79 20 3d 20 6b 65 79 | ');.end..if.nargout>0,.key.=.key |
| 1b080 | 64 6f 77 6e 3b 20 65 6e 64 0a 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 | down;.end.%%%%%%%%%%%%%%%%%%%%%% |
| 1b0a0 | 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
| 1b0c0 | 25 25 25 0a 20 49 4d 41 47 45 53 20 25 25 25 25 25 25 25 25 25 25 25 25 25 0a 20 20 20 0a 09 65 | %%%..IMAGES.%%%%%%%%%%%%%......e |
| 1b0e0 | 6c 73 65 0a 20 20 20 09 0a 20 20 20 09 78 79 5f 63 6f 72 6e 65 72 73 5f 75 6e 64 69 73 74 20 3d | lse..........xy_corners_undist.= |
| 1b100 | 20 63 6f 6d 70 5f 64 69 73 74 6f 72 74 69 6f 6e 5f 6f 75 6c 75 28 5b 28 78 27 20 2d 20 63 63 28 | .comp_distortion_oulu([(x'.-.cc( |
| 1b120 | 31 29 29 2f 66 63 28 31 29 3b 28 79 27 2d 63 63 28 32 29 29 2f 66 63 28 31 29 5d 2c 6b 63 29 3b | 1))/fc(1);(y'-cc(2))/fc(1)],kc); |
| 1b140 | 0a 09 20 0a 09 20 09 78 75 20 3d 20 78 79 5f 63 6f 72 6e 65 72 73 5f 75 6e 64 69 73 74 28 31 2c | .......xu.=.xy_corners_undist(1, |
| 1b160 | 3a 29 27 3b 0a 09 20 09 79 75 20 3d 20 78 79 5f 63 6f 72 6e 65 72 73 5f 75 6e 64 69 73 74 28 32 | :)';....yu.=.xy_corners_undist(2 |
| 1b180 | 2c 3a 29 27 3b 0a 09 20 0a 09 20 09 5b 58 58 75 5d 20 3d 20 70 72 6f 6a 65 63 74 65 64 47 72 69 | ,:)';.......[XXu].=.projectedGri |
| 1b1a0 | 64 20 28 20 5b 78 75 28 31 29 3b 79 75 28 31 29 5d 2c 20 5b 78 75 28 32 29 3b 79 75 28 32 29 5d | d.(.[xu(1);yu(1)],.[xu(2);yu(2)] |
| 1b1c0 | 2c 5b 78 75 28 33 29 3b 79 75 28 33 29 5d 2c 20 5b 78 75 28 34 29 3b 79 75 28 34 29 5d 2c 6e 5f | ,[xu(3);yu(3)],.[xu(4);yu(4)],n_ |
| 1b1e0 | 73 71 5f 78 2b 31 2c 6e 5f 73 71 5f 79 2b 31 29 3b 20 25 20 54 68 65 20 66 75 6c 6c 20 67 72 69 | sq_x+1,n_sq_y+1);.%.The.full.gri |
| 1b200 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 2e 6d 00 00 | TOOLBOX_calib/go_calib_optim.m.. |
| 1b220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b260 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 1b280 | 20 20 20 34 32 36 36 20 20 37 30 32 34 30 33 37 33 32 35 20 20 31 31 35 35 35 00 20 00 00 00 00 | ...4266..7024037325..11555...... |
| 1b2a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b2c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b2e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b3a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b3c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b3e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b400 | 25 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 0a 25 0a 25 4d 61 69 6e 20 63 61 6c 69 62 72 61 74 | %go_calib_optim.%.%Main.calibrat |
| 1b420 | 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 2e 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 69 6e 74 72 69 | ion.function..Computes.the.intri |
| 1b440 | 6e 73 69 63 20 61 6e 64 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 2e 0a 25 52 | nsic.andextrinsic.parameters..%R |
| 1b460 | 75 6e 73 20 61 73 20 61 20 73 63 72 69 70 74 2e 0a 25 0a 25 49 4e 50 55 54 3a 20 78 5f 31 2c 78 | uns.as.a.script..%.%INPUT:.x_1,x |
| 1b480 | 5f 32 2c 78 5f 33 2c 2e 2e 2e 3a 20 46 65 61 74 75 72 65 20 6c 6f 63 61 74 69 6f 6e 73 20 6f 6e | _2,x_3,...:.Feature.locations.on |
| 1b4a0 | 20 74 68 65 20 69 6d 61 67 65 73 0a 25 20 20 20 20 20 20 20 58 5f 31 2c 58 5f 32 2c 58 5f 33 2c | .the.images.%.......X_1,X_2,X_3, |
| 1b4c0 | 2e 2e 2e 3a 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 67 72 69 64 20 63 6f 6f 72 64 69 6e 61 | ...:.Corresponding.grid.coordina |
| 1b4e0 | 74 65 73 0a 25 0a 25 4f 55 54 50 55 54 3a 20 66 63 3a 20 43 61 6d 65 72 61 20 66 6f 63 61 6c 20 | tes.%.%OUTPUT:.fc:.Camera.focal. |
| 1b500 | 6c 65 6e 67 74 68 0a 25 20 20 20 20 20 20 20 20 63 63 3a 20 50 72 69 6e 63 69 70 61 6c 20 70 6f | length.%........cc:.Principal.po |
| 1b520 | 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 0a 25 20 20 20 20 20 20 20 20 6b 63 3a 20 44 69 73 | int.coordinates.%........kc:.Dis |
| 1b540 | 74 6f 72 74 69 6f 6e 20 63 6f 65 66 66 69 63 69 65 6e 74 73 0a 25 20 20 20 20 20 20 20 20 4b 4b | tortion.coefficients.%........KK |
| 1b560 | 3a 20 54 68 65 20 63 61 6d 65 72 61 20 6d 61 74 72 69 78 20 28 63 6f 6e 74 61 69 6e 69 6e 67 20 | :.The.camera.matrix.(containing. |
| 1b580 | 66 63 20 61 6e 64 20 63 63 29 0a 25 20 20 20 20 20 20 20 20 6f 6d 63 5f 31 2c 6f 6d 63 5f 32 2c | fc.and.cc).%........omc_1,omc_2, |
| 1b5a0 | 6f 6d 63 5f 33 2c 2e 2e 2e 3a 20 33 44 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 73 20 61 | omc_3,...:.3D.rotation.vectors.a |
| 1b5c0 | 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 67 72 69 64 20 70 6f 73 69 74 69 6f 6e 73 20 69 6e | ttached.to.the.grid.positions.in |
| 1b5e0 | 20 73 70 61 63 65 0a 25 20 20 20 20 20 20 20 20 54 63 5f 31 2c 54 63 5f 32 2c 54 63 5f 33 2c 2e | .space.%........Tc_1,Tc_2,Tc_3,. |
| 1b600 | 2e 2e 3a 20 33 44 20 74 72 61 6e 73 6c 61 74 69 6f 6e 20 76 65 63 74 6f 72 73 20 61 74 74 61 63 | ..:.3D.translation.vectors.attac |
| 1b620 | 68 65 64 20 74 6f 20 74 68 65 20 67 72 69 64 20 70 6f 73 69 74 69 6f 6e 73 20 69 6e 20 73 70 61 | hed.to.the.grid.positions.in.spa |
| 1b640 | 63 65 0a 25 20 20 20 20 20 20 20 20 52 63 5f 31 2c 52 63 5f 32 2c 52 63 5f 33 2c 2e 2e 2e 3a 20 | ce.%........Rc_1,Rc_2,Rc_3,...:. |
| 1b660 | 33 44 20 72 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 63 65 73 20 63 6f 72 72 65 73 70 6f 6e 64 69 | 3D.rotation.matrices.correspondi |
| 1b680 | 6e 67 20 74 6f 20 74 68 65 20 6f 6d 63 20 76 65 63 74 6f 72 73 0a 25 0a 25 4d 65 74 68 6f 64 3a | ng.to.the.omc.vectors.%.%Method: |
| 1b6a0 | 20 4d 69 6e 69 6d 69 7a 65 73 20 74 68 65 20 70 69 78 65 6c 20 72 65 70 72 6f 6a 65 63 74 69 6f | .Minimizes.the.pixel.reprojectio |
| 1b6c0 | 6e 20 65 72 72 6f 72 20 69 6e 20 74 68 65 20 6c 65 61 73 74 20 73 71 75 61 72 65 73 20 73 65 6e | n.error.in.the.least.squares.sen |
| 1b6e0 | 73 65 20 6f 76 65 72 20 74 68 65 20 69 6e 74 72 69 6e 73 69 63 0a 25 20 20 20 20 20 20 20 20 63 | se.over.the.intrinsic.%........c |
| 1b700 | 61 6d 65 72 61 20 70 61 72 61 6d 65 74 65 72 73 2c 20 61 6e 64 20 74 68 65 20 65 78 74 72 69 6e | amera.parameters,.and.the.extrin |
| 1b720 | 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 28 33 44 20 6c 6f 63 61 74 69 6f 6e 73 20 6f 66 20 | sic.parameters.(3D.locations.of. |
| 1b740 | 74 68 65 20 67 72 69 64 73 20 69 6e 20 73 70 61 63 65 29 0a 25 0a 25 4e 6f 74 65 3a 20 49 66 20 | the.grids.in.space).%.%Note:.If. |
| 1b760 | 74 68 65 20 69 6e 74 72 69 6e 73 69 63 20 63 61 6d 65 72 61 20 70 61 72 61 6d 65 74 65 72 73 20 | the.intrinsic.camera.parameters. |
| 1b780 | 28 66 63 2c 20 63 63 2c 20 6b 63 29 20 64 6f 20 6e 6f 74 20 65 78 69 73 74 20 62 65 66 6f 72 65 | (fc,.cc,.kc).do.not.exist.before |
| 1b7a0 | 2c 20 74 68 65 79 20 61 72 65 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 74 68 72 6f 75 67 68 0a 25 | ,.they.are.initialized.through.% |
| 1b7c0 | 20 20 20 20 20 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 69 6e 69 74 5f 69 6e 74 72 69 6e 73 69 | ......the.function.init_intrinsi |
| 1b7e0 | 63 5f 70 61 72 61 6d 2e 6d 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 74 68 65 20 76 61 72 69 61 62 | c_param.m..Otherwise,.the.variab |
| 1b800 | 6c 65 73 20 69 6e 20 6d 65 6d 6f 72 79 20 61 72 65 20 75 73 65 64 20 61 73 20 69 6e 69 74 69 61 | les.in.memory.are.used.as.initia |
| 1b820 | 6c 20 67 75 65 73 73 65 73 2e 0a 25 0a 25 4e 6f 74 65 3a 20 54 68 65 20 72 6f 77 20 76 65 63 74 | l.guesses..%.%Note:.The.row.vect |
| 1b840 | 6f 72 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 7a 65 72 | or.active_images.consists.of.zer |
| 1b860 | 6f 73 20 61 6e 64 20 6f 6e 65 73 2e 20 54 6f 20 64 65 61 63 74 69 76 61 74 65 20 61 6e 20 69 6d | os.and.ones..To.deactivate.an.im |
| 1b880 | 61 67 65 2c 20 73 65 74 20 74 68 65 0a 25 20 20 20 20 20 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e | age,.set.the.%......correspondin |
| 1b8a0 | 67 20 65 6e 74 72 79 20 69 6e 20 74 68 65 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 20 76 65 63 | g.entry.in.the.active_images.vec |
| 1b8c0 | 74 6f 72 20 74 6f 20 7a 65 72 6f 2e 0a 25 0a 25 56 45 52 59 20 49 4d 50 4f 52 54 41 4e 54 3a 20 | tor.to.zero..%.%VERY.IMPORTANT:. |
| 1b8e0 | 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 77 6f 72 6b 73 20 66 6f 72 20 32 44 20 61 6e 64 20 33 | This.function.works.for.2D.and.3 |
| 1b900 | 44 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 72 69 67 73 2c 20 65 78 63 65 70 74 20 66 6f 72 20 69 | D.calibration.rigs,.except.for.i |
| 1b920 | 6e 69 74 5f 69 6e 74 72 69 6e 73 69 63 5f 70 61 72 61 6d 2e 6d 0a 25 74 68 61 74 20 69 73 20 73 | nit_intrinsic_param.m.%that.is.s |
| 1b940 | 6f 20 66 61 72 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 74 6f 20 77 6f 72 6b 20 6f 6e 6c 79 20 77 | o.far.implemented.to.work.only.w |
| 1b960 | 69 74 68 20 32 44 20 72 69 67 73 2e 0a 25 49 6e 20 74 68 65 20 66 75 74 75 72 65 2c 20 61 20 6d | ith.2D.rigs..%In.the.future,.a.m |
| 1b980 | 6f 72 65 20 67 65 6e 65 72 61 6c 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 74 68 65 | ore.general.function.will.be.the |
| 1b9a0 | 72 65 2e 0a 25 46 6f 72 20 6e 6f 77 2c 20 69 66 20 75 73 69 6e 67 20 61 20 33 44 20 63 61 6c 69 | re..%For.now,.if.using.a.3D.cali |
| 1b9c0 | 62 72 61 74 69 6f 6e 20 72 69 67 2c 20 73 65 74 20 71 75 69 63 6b 5f 69 6e 69 74 20 74 6f 20 31 | bration.rig,.set.quick_init.to.1 |
| 1b9e0 | 20 66 6f 72 20 61 6e 20 65 61 73 79 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 74 | .for.an.easy.initialization.of.t |
| 1ba00 | 68 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 0a 0a 0a 64 65 73 61 63 74 69 76 61 74 65 64 5f 69 | he.focal.length...desactivated_i |
| 1ba20 | 6d 61 67 65 73 20 3d 20 5b 5d 3b 0a 0a 0a 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 74 65 | mages.=.[];...go_calib_optim_ite |
| 1ba40 | 72 3b 0a 0a 0a 69 66 20 7e 69 73 65 6d 70 74 79 28 64 65 73 61 63 74 69 76 61 74 65 64 5f 69 6d | r;...if.~isempty(desactivated_im |
| 1ba60 | 61 67 65 73 29 2c 0a 20 20 20 0a 20 20 20 70 61 72 61 6d 5f 6c 69 73 74 5f 73 61 76 65 20 3d 20 | ages),........param_list_save.=. |
| 1ba80 | 70 61 72 61 6d 5f 6c 69 73 74 3b 0a 20 20 20 0a 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e | param_list;........fprintf(1,'\n |
| 1baa0 | 4e 65 77 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 20 69 | New.optimization.including.the.i |
| 1bac0 | 6d 61 67 65 73 20 74 68 61 74 20 68 61 76 65 20 62 65 65 6e 20 64 65 61 63 74 69 76 61 74 65 64 | mages.that.have.been.deactivated |
| 1bae0 | 20 64 75 72 69 6e 67 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 6f 70 74 69 6d 69 7a 61 74 69 6f | .during.the.previous.optimizatio |
| 1bb00 | 6e 2e 5c 6e 27 29 3b 0a 20 20 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 64 65 73 61 63 74 69 | n.\n');....active_images(desacti |
| 1bb20 | 76 61 74 65 64 5f 69 6d 61 67 65 73 29 20 3d 20 6f 6e 65 73 28 31 2c 6c 65 6e 67 74 68 28 64 65 | vated_images).=.ones(1,length(de |
| 1bb40 | 73 61 63 74 69 76 61 74 65 64 5f 69 6d 61 67 65 73 29 29 3b 0a 20 20 20 64 65 73 61 63 74 69 76 | sactivated_images));....desactiv |
| 1bb60 | 61 74 65 64 5f 69 6d 61 67 65 73 20 3d 20 5b 5d 3b 0a 20 20 20 0a 20 20 20 67 6f 5f 63 61 6c 69 | ated_images.=.[];........go_cali |
| 1bb80 | 62 5f 6f 70 74 69 6d 5f 69 74 65 72 3b 0a 20 20 20 0a 20 20 20 69 66 20 7e 69 73 65 6d 70 74 79 | b_optim_iter;........if.~isempty |
| 1bba0 | 28 64 65 73 61 63 74 69 76 61 74 65 64 5f 69 6d 61 67 65 73 29 2c 0a 20 20 20 20 20 20 66 70 72 | (desactivated_images),.......fpr |
| 1bbc0 | 69 6e 74 66 28 31 2c 5b 27 4c 69 73 74 20 6f 66 20 69 6d 61 67 65 73 20 6c 65 66 74 20 64 65 73 | intf(1,['List.of.images.left.des |
| 1bbe0 | 61 63 74 69 76 61 74 65 64 3a 20 27 20 6e 75 6d 32 73 74 72 28 64 65 73 61 63 74 69 76 61 74 65 | activated:.'.num2str(desactivate |
| 1bc00 | 64 5f 69 6d 61 67 65 73 29 20 27 5c 6e 27 20 5d 20 29 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a | d_images).'\n'.].);....end;..... |
| 1bc20 | 20 20 20 70 61 72 61 6d 5f 6c 69 73 74 20 3d 20 5b 70 61 72 61 6d 5f 6c 69 73 74 5f 73 61 76 65 | ...param_list.=.[param_list_save |
| 1bc40 | 28 3a 2c 31 3a 65 6e 64 2d 31 29 20 70 61 72 61 6d 5f 6c 69 73 74 5d 3b 0a 20 20 20 0a 65 6e 64 | (:,1:end-1).param_list];.....end |
| 1bc60 | 3b 0a 0a 0a 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 47 52 41 50 48 49 43 | ;...%%%%%%%%%%%%%%%%%%%%.GRAPHIC |
| 1bc80 | 41 4c 20 4f 55 54 50 55 54 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 | AL.OUTPUT.%%%%%%%%%%%%%%%%%%%%%% |
| 1bca0 | 25 25 0a 0a 25 67 72 61 70 68 6f 75 74 5f 63 61 6c 69 62 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 | %%..%graphout_calib;............ |
| 1bcc0 | 20 20 20 20 20 20 65 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0a 20 20 20 20 20 20 | ......end.............end....... |
| 1bce0 | 20 20 20 20 20 20 70 74 20 3d 20 67 65 74 28 67 63 61 2c 20 27 43 75 72 72 65 6e 74 50 6f 69 6e | ......pt.=.get(gca,.'CurrentPoin |
| 1bd00 | 74 27 29 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 77 5f 6d 61 6e 79 20 3d 20 68 6f 77 | t');..............how_many.=.how |
| 1bd20 | 5f 6d 61 6e 79 20 2d 20 31 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 28 63 68 61 72 20 | _many.-.1;..............if(char. |
| 1bd40 | 3d 3d 20 31 33 29 20 25 20 26 20 68 6f 77 5f 6d 61 6e 79 20 7e 3d 20 30 29 0a 20 20 20 20 20 20 | ==.13).%.&.how_many.~=.0)....... |
| 1bd60 | 20 20 20 20 20 20 20 20 20 20 25 20 69 66 20 74 68 65 20 72 65 74 75 72 6e 20 6b 65 79 20 77 61 | ..........%.if.the.return.key.wa |
| 1bd80 | 73 20 70 72 65 73 73 65 64 2c 20 63 68 61 72 20 77 69 6c 6c 20 3d 3d 20 31 33 2c 0a 20 20 20 20 | s.pressed,.char.will.==.13,..... |
| 1bda0 | 20 20 20 20 20 20 20 20 20 20 20 20 25 20 61 6e 64 20 74 68 61 74 27 73 20 6f 75 72 20 73 69 67 | ............%.and.that's.our.sig |
| 1bdc0 | 6e 61 6c 20 74 6f 20 62 72 65 61 6b 20 6f 75 74 20 6f 66 20 68 65 72 65 20 77 68 65 74 68 65 72 | nal.to.break.out.of.here.whether |
| 1bde0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 25 20 6f 72 20 6e 6f 74 20 77 65 20 68 61 76 | .................%.or.not.we.hav |
| 1be00 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 33 44 2e 6d | TOOLBOX_calib/go_calib_optim3D.m |
| 1be20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1be40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1be60 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 1be80 | 20 20 31 35 30 32 30 20 20 37 30 32 34 30 33 37 33 32 36 20 20 31 31 37 35 33 00 20 00 00 00 00 | ..15020..7024037326..11753...... |
| 1bea0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1bec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1bee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1bf00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1bf20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1bf40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1bf60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1bf80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1bfa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1bfc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1bfe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1c000 | 25 20 53 69 6d 70 6c 69 66 69 65 64 20 76 65 72 73 69 6f 6e 20 6f 66 20 67 6f 5f 63 61 6c 69 62 | %.Simplified.version.of.go_calib |
| 1c020 | 2e 6d 0a 0a 0a 69 66 20 7e 65 78 69 73 74 28 27 78 5f 31 27 29 2c 0a 20 20 20 63 6c 69 63 6b 5f | .m...if.~exist('x_1'),....click_ |
| 1c040 | 63 61 6c 69 62 3b 0a 65 6e 64 3b 0a 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 4d 61 69 6e 20 | calib;.end;...fprintf(1,'\nMain. |
| 1c060 | 63 61 6c 69 62 72 61 74 69 6f 6e 20 70 72 6f 63 65 64 75 72 65 5c 6e 27 29 3b 0a 0a 25 20 69 6e | calibration.procedure\n');..%.in |
| 1c080 | 69 74 69 61 6c 20 67 75 65 73 73 20 66 6f 72 20 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 | itial.guess.for.principal.point. |
| 1c0a0 | 61 6e 64 20 64 69 73 74 6f 72 74 69 6f 6e 3a 0a 63 5f 69 6e 69 74 20 3d 20 5b 6e 78 3b 6e 79 5d | and.distortion:.c_init.=.[nx;ny] |
| 1c0c0 | 2f 32 20 2d 20 30 2e 35 3b 20 25 20 69 6e 69 74 69 61 6c 69 7a 65 20 61 74 20 74 68 65 20 63 65 | /2.-.0.5;.%.initialize.at.the.ce |
| 1c0e0 | 6e 74 65 72 20 6f 66 20 74 68 65 20 69 6d 61 67 65 0a 6b 5f 69 6e 69 74 20 3d 20 5b 30 3b 30 3b | nter.of.the.image.k_init.=.[0;0; |
| 1c100 | 30 3b 30 5d 3b 20 25 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 6f 20 7a 65 72 6f 20 28 6e 6f 20 64 | 0;0];.%.initialize.to.zero.(no.d |
| 1c120 | 69 73 74 6f 72 74 69 6f 6e 29 0a 0a 0a 25 20 43 6f 6d 70 75 74 65 20 65 78 70 6c 69 63 69 74 65 | istortion)...%.Compute.explicite |
| 1c140 | 6c 79 20 74 68 65 20 66 6f 63 61 6c 20 6c 65 6e 74 67 68 20 75 73 69 6e 67 20 61 6c 6c 20 74 68 | ly.the.focal.lentgh.using.all.th |
| 1c160 | 65 20 28 6d 75 74 75 61 6c 6c 79 20 6f 72 74 68 6f 67 6f 6e 61 6c 29 20 76 61 6e 69 73 68 69 6e | e.(mutually.orthogonal).vanishin |
| 1c180 | 67 20 70 6f 69 6e 74 73 0a 25 20 6e 6f 74 65 3a 20 54 68 65 20 76 61 6e 69 68 69 6e 67 20 70 6f | g.points.%.note:.The.vanihing.po |
| 1c1a0 | 69 6e 74 73 20 61 72 65 20 68 69 64 64 65 6e 20 69 6e 20 74 68 65 20 70 6c 61 6e 61 72 20 63 6f | ints.are.hidden.in.the.planar.co |
| 1c1c0 | 6c 6c 69 6e 65 61 74 69 6f 6e 73 20 48 5f 6b 6b 0a 0a 41 20 3d 20 5b 5d 3b 0a 62 20 3d 20 5b 5d | llineations.H_kk..A.=.[];.b.=.[] |
| 1c1e0 | 3b 0a 0a 25 20 6d 61 74 72 69 78 20 74 68 61 74 20 73 75 62 74 72 61 63 74 20 74 68 65 20 70 72 | ;..%.matrix.that.subtract.the.pr |
| 1c200 | 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 3a 0a 53 75 62 5f 63 63 20 3d 20 5b 31 20 30 20 2d 63 5f | incipal.point:.Sub_cc.=.[1.0.-c_ |
| 1c220 | 69 6e 69 74 28 31 29 3b 30 20 31 20 2d 63 5f 69 6e 69 74 28 32 29 3b 30 20 30 20 31 5d 3b 0a 0a | init(1);0.1.-c_init(2);0.0.1];.. |
| 1c240 | 0a 66 6f 72 20 6b 6b 3d 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 0a 20 20 20 25 20 6c 65 66 74 20 50 | .for.kk=1:n_ima,........%.left.P |
| 1c260 | 61 74 74 65 72 6e 3a 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 48 6c 6b 6b 20 3d 20 48 6c 5f | attern:........eval(['Hlkk.=.Hl_ |
| 1c280 | 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 48 6c 6b 6b | '.num2str(kk).';']);........Hlkk |
| 1c2a0 | 20 3d 20 53 75 62 5f 63 63 20 2a 20 48 6c 6b 6b 3b 0a 0a 20 20 20 25 20 45 78 74 72 61 63 74 20 | .=.Sub_cc.*.Hlkk;.....%.Extract. |
| 1c2c0 | 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 73 20 28 64 69 72 65 63 74 20 61 6e 64 20 64 69 61 | vanishing.points.(direct.and.dia |
| 1c2e0 | 67 6f 6e 61 6c 73 29 3a 0a 20 20 20 0a 20 20 20 56 6c 5f 68 6f 72 69 5f 70 69 78 20 3d 20 48 6c | gonals):........Vl_hori_pix.=.Hl |
| 1c300 | 6b 6b 28 3a 2c 31 29 3b 0a 20 20 20 56 6c 5f 76 65 72 74 5f 70 69 78 20 3d 20 48 6c 6b 6b 28 3a | kk(:,1);....Vl_vert_pix.=.Hlkk(: |
| 1c320 | 2c 32 29 3b 0a 20 20 20 56 6c 5f 64 69 61 67 31 5f 70 69 78 20 3d 20 28 48 6c 6b 6b 28 3a 2c 31 | ,2);....Vl_diag1_pix.=.(Hlkk(:,1 |
| 1c340 | 29 2b 48 6c 6b 6b 28 3a 2c 32 29 29 2f 32 3b 0a 20 20 20 56 6c 5f 64 69 61 67 32 5f 70 69 78 20 | )+Hlkk(:,2))/2;....Vl_diag2_pix. |
| 1c360 | 3d 20 28 48 6c 6b 6b 28 3a 2c 31 29 2d 48 6c 6b 6b 28 3a 2c 32 29 29 2f 32 3b 0a 20 20 20 0a 20 | =.(Hlkk(:,1)-Hlkk(:,2))/2;...... |
| 1c380 | 20 20 56 6c 5f 68 6f 72 69 5f 70 69 78 20 3d 20 56 6c 5f 68 6f 72 69 5f 70 69 78 2f 6e 6f 72 6d | ..Vl_hori_pix.=.Vl_hori_pix/norm |
| 1c3a0 | 28 56 6c 5f 68 6f 72 69 5f 70 69 78 29 3b 0a 20 20 20 56 6c 5f 76 65 72 74 5f 70 69 78 20 3d 20 | (Vl_hori_pix);....Vl_vert_pix.=. |
| 1c3c0 | 56 6c 5f 76 65 72 74 5f 70 69 78 2f 6e 6f 72 6d 28 56 6c 5f 76 65 72 74 5f 70 69 78 29 3b 0a 20 | Vl_vert_pix/norm(Vl_vert_pix);.. |
| 1c3e0 | 20 20 56 6c 5f 64 69 61 67 31 5f 70 69 78 20 3d 20 56 6c 5f 64 69 61 67 31 5f 70 69 78 2f 6e 6f | ..Vl_diag1_pix.=.Vl_diag1_pix/no |
| 1c400 | 72 6d 28 56 6c 5f 64 69 61 67 31 5f 70 69 78 29 3b 0a 20 20 20 56 6c 5f 64 69 61 67 32 5f 70 69 | rm(Vl_diag1_pix);....Vl_diag2_pi |
| 1c420 | 78 20 3d 20 56 6c 5f 64 69 61 67 32 5f 70 69 78 2f 6e 6f 72 6d 28 56 6c 5f 64 69 61 67 32 5f 70 | x.=.Vl_diag2_pix/norm(Vl_diag2_p |
| 1c440 | 69 78 29 3b 0a 20 20 20 0a 20 20 20 61 6c 31 20 3d 20 56 6c 5f 68 6f 72 69 5f 70 69 78 28 31 29 | ix);........al1.=.Vl_hori_pix(1) |
| 1c460 | 3b 0a 20 20 20 62 6c 31 20 3d 20 56 6c 5f 68 6f 72 69 5f 70 69 78 28 32 29 3b 0a 20 20 20 63 6c | ;....bl1.=.Vl_hori_pix(2);....cl |
| 1c480 | 31 20 3d 20 56 6c 5f 68 6f 72 69 5f 70 69 78 28 33 29 3b 0a 20 20 20 0a 20 20 20 61 6c 32 20 3d | 1.=.Vl_hori_pix(3);........al2.= |
| 1c4a0 | 20 56 6c 5f 76 65 72 74 5f 70 69 78 28 31 29 3b 0a 20 20 20 62 6c 32 20 3d 20 56 6c 5f 76 65 72 | .Vl_vert_pix(1);....bl2.=.Vl_ver |
| 1c4c0 | 74 5f 70 69 78 28 32 29 3b 0a 20 20 20 63 6c 32 20 3d 20 56 6c 5f 76 65 72 74 5f 70 69 78 28 33 | t_pix(2);....cl2.=.Vl_vert_pix(3 |
| 1c4e0 | 29 3b 0a 20 20 20 0a 20 20 20 61 6c 33 20 3d 20 56 6c 5f 64 69 61 67 31 5f 70 69 78 28 31 29 3b | );........al3.=.Vl_diag1_pix(1); |
| 1c500 | 0a 20 20 20 62 6c 33 20 3d 20 56 6c 5f 64 69 61 67 31 5f 70 69 78 28 32 29 3b 0a 20 20 20 63 6c | ....bl3.=.Vl_diag1_pix(2);....cl |
| 1c520 | 33 20 3d 20 56 6c 5f 64 69 61 67 31 5f 70 69 78 28 33 29 3b 0a 20 20 20 0a 20 20 20 61 6c 34 20 | 3.=.Vl_diag1_pix(3);........al4. |
| 1c540 | 3d 20 56 6c 5f 64 69 61 67 32 5f 70 69 78 28 31 29 3b 0a 20 20 20 62 6c 34 20 3d 20 56 6c 5f 64 | =.Vl_diag2_pix(1);....bl4.=.Vl_d |
| 1c560 | 69 61 67 32 5f 70 69 78 28 32 29 3b 0a 20 20 20 63 6c 34 20 3d 20 56 6c 5f 64 69 61 67 32 5f 70 | iag2_pix(2);....cl4.=.Vl_diag2_p |
| 1c580 | 69 78 28 33 29 3b 0a 20 20 20 0a 20 20 20 25 20 72 69 67 68 74 20 50 61 74 74 65 72 6e 3a 0a 20 | ix(3);........%.right.Pattern:.. |
| 1c5a0 | 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 48 72 6b 6b 20 3d 20 48 72 5f 27 20 6e 75 6d 32 73 74 72 | ......eval(['Hrkk.=.Hr_'.num2str |
| 1c5c0 | 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 48 72 6b 6b 20 3d 20 53 75 62 5f 63 63 | (kk).';']);........Hrkk.=.Sub_cc |
| 1c5e0 | 20 2a 20 48 72 6b 6b 3b 0a 0a 20 20 20 25 20 45 78 74 72 61 63 74 20 76 61 6e 69 73 68 69 6e 67 | .*.Hrkk;.....%.Extract.vanishing |
| 1c600 | 20 70 6f 69 6e 74 73 20 28 64 69 72 65 63 74 20 61 6e 64 20 64 69 61 67 6f 6e 61 6c 73 29 3a 0a | .points.(direct.and.diagonals):. |
| 1c620 | 20 20 20 0a 20 20 20 56 72 5f 68 6f 72 69 5f 70 69 78 20 3d 20 48 72 6b 6b 28 3a 2c 31 29 3b 0a | .......Vr_hori_pix.=.Hrkk(:,1);. |
| 1c640 | 20 20 20 56 72 5f 76 65 72 74 5f 70 69 78 20 3d 20 48 72 6b 6b 28 3a 2c 32 29 3b 0a 20 20 20 56 | ...Vr_vert_pix.=.Hrkk(:,2);....V |
| 1c660 | 72 5f 64 69 61 67 31 5f 70 69 78 20 3d 20 28 48 72 6b 6b 28 3a 2c 31 29 2b 48 72 6b 6b 28 3a 2c | r_diag1_pix.=.(Hrkk(:,1)+Hrkk(:, |
| 1c680 | 32 29 29 2f 32 3b 0a 20 20 20 56 72 5f 64 69 61 67 32 5f 70 69 78 20 3d 20 28 48 72 6b 6b 28 3a | 2))/2;....Vr_diag2_pix.=.(Hrkk(: |
| 1c6a0 | 2c 31 29 2d 48 72 6b 6b 28 3a 2c 32 29 29 2f 32 3b 0a 20 20 20 0a 20 20 20 56 72 5f 68 6f 72 69 | ,1)-Hrkk(:,2))/2;........Vr_hori |
| 1c6c0 | 5f 70 69 78 20 3d 20 56 72 5f 68 6f 72 69 5f 70 69 78 2f 6e 6f 72 6d 28 56 6c 5f 68 6f 72 69 5f | _pix.=.Vr_hori_pix/norm(Vl_hori_ |
| 1c6e0 | 70 69 78 29 3b 0a 20 20 20 56 72 5f 76 65 72 74 5f 70 69 78 20 3d 20 56 72 5f 76 65 72 74 5f 70 | pix);....Vr_vert_pix.=.Vr_vert_p |
| 1c700 | 69 78 2f 6e 6f 72 6d 28 56 6c 5f 76 65 72 74 5f 70 69 78 29 3b 0a 20 20 20 56 72 5f 64 69 61 67 | ix/norm(Vl_vert_pix);....Vr_diag |
| 1c720 | 31 5f 70 69 78 20 3d 20 56 72 5f 64 69 61 67 31 5f 70 69 78 2f 6e 6f 72 6d 28 56 72 5f 64 69 61 | 1_pix.=.Vr_diag1_pix/norm(Vr_dia |
| 1c740 | 67 31 5f 70 69 78 29 3b 0a 20 20 20 56 72 5f 64 69 61 67 32 5f 70 69 78 20 3d 20 56 72 5f 64 69 | g1_pix);....Vr_diag2_pix.=.Vr_di |
| 1c760 | 61 67 32 5f 70 69 78 2f 6e 6f 72 6d 28 56 72 5f 64 69 61 67 32 5f 70 69 78 29 3b 0a 20 20 20 0a | ag2_pix/norm(Vr_diag2_pix);..... |
| 1c780 | 20 20 20 61 72 31 20 3d 20 56 72 5f 68 6f 72 69 5f 70 69 78 28 31 29 3b 0a 20 20 20 62 72 31 20 | ...ar1.=.Vr_hori_pix(1);....br1. |
| 1c7a0 | 3d 20 56 72 5f 68 6f 72 69 5f 70 69 78 28 32 29 3b 0a 20 20 20 63 72 31 20 3d 20 56 72 5f 68 6f | =.Vr_hori_pix(2);....cr1.=.Vr_ho |
| 1c7c0 | 72 69 5f 70 69 78 28 33 29 3b 0a 20 20 20 0a 20 20 20 61 72 32 20 3d 20 56 72 5f 76 65 72 74 5f | ri_pix(3);........ar2.=.Vr_vert_ |
| 1c7e0 | 70 69 78 28 31 29 3b 0a 20 20 20 62 72 32 20 3d 20 56 72 5f 76 65 72 74 5f 70 69 78 28 32 29 3b | pix(1);....br2.=.Vr_vert_pix(2); |
| 1c800 | 0a 20 20 20 63 72 32 20 3d 20 56 72 5f 76 65 72 74 5f 70 69 78 28 33 29 3b 0a 20 20 20 0a 20 20 | ....cr2.=.Vr_vert_pix(3);....... |
| 1c820 | 20 61 72 33 20 3d 20 56 72 5f 64 69 61 67 31 5f 70 69 78 28 31 29 3b 0a 20 20 20 62 72 33 20 3d | .ar3.=.Vr_diag1_pix(1);....br3.= |
| 1c840 | 20 56 72 5f 64 69 61 67 31 5f 70 69 78 28 32 29 3b 0a 20 20 20 63 72 33 20 3d 20 56 72 5f 64 69 | .Vr_diag1_pix(2);....cr3.=.Vr_di |
| 1c860 | 61 67 31 5f 70 69 78 28 33 29 3b 0a 20 20 20 0a 20 20 20 61 72 34 20 3d 20 56 72 5f 64 69 61 67 | ag1_pix(3);........ar4.=.Vr_diag |
| 1c880 | 32 5f 70 69 78 28 31 29 3b 0a 20 20 20 62 72 34 20 3d 20 56 72 5f 64 69 61 67 32 5f 70 69 78 28 | 2_pix(1);....br4.=.Vr_diag2_pix( |
| 1c8a0 | 32 29 3b 0a 20 20 20 63 72 34 20 3d 20 56 72 5f 64 69 61 67 32 5f 70 69 78 28 33 29 3b 0a 20 20 | 2);....cr4.=.Vr_diag2_pix(3);... |
| 1c8c0 | 20 0a 20 20 20 0a 20 20 20 25 20 43 6f 6c 6c 65 63 74 20 61 6c 6c 20 74 68 65 20 63 6f 6e 73 74 | .........%.Collect.all.the.const |
| 1c8e0 | 72 61 69 6e 74 73 3a 0a 20 20 20 0a 20 20 20 41 5f 6b 6b 20 3d 20 5b 61 6c 31 2a 61 6c 32 20 20 | raints:........A_kk.=.[al1*al2.. |
| 1c900 | 62 6c 31 2a 62 6c 32 3b 0a 20 20 20 20 20 20 61 6c 33 2a 61 6c 34 20 20 62 6c 33 2a 62 6c 34 3b | bl1*bl2;.......al3*al4..bl3*bl4; |
| 1c920 | 0a 20 20 20 20 20 20 61 72 31 2a 61 72 32 20 20 62 72 31 2a 62 72 32 3b 0a 20 20 20 20 20 20 61 | .......ar1*ar2..br1*br2;.......a |
| 1c940 | 72 33 2a 61 72 34 20 20 62 72 33 2a 62 72 34 3b 0a 20 20 20 20 20 20 61 6c 31 2a 61 72 31 20 20 | r3*ar4..br3*br4;.......al1*ar1.. |
| 1c960 | 62 6c 31 2a 62 72 31 5d 3b 0a 20 20 20 0a 20 20 20 62 5f 6b 6b 20 3d 20 2d 5b 63 6c 31 2a 63 6c | bl1*br1];........b_kk.=.-[cl1*cl |
| 1c980 | 32 3b 63 6c 33 2a 63 6c 34 3b 63 72 31 2a 63 72 32 3b 63 72 33 2a 63 72 34 3b 63 6c 31 2a 63 72 | 2;cl3*cl4;cr1*cr2;cr3*cr4;cl1*cr |
| 1c9a0 | 31 5d 3b 0a 20 20 20 0a 0a 20 20 20 41 20 3d 20 5b 41 3b 41 5f 6b 6b 5d 3b 0a 20 20 20 62 20 3d | 1];.........A.=.[A;A_kk];....b.= |
| 1c9c0 | 20 5b 62 3b 62 5f 6b 6b 5d 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 25 20 75 73 65 20 61 6c 6c 20 74 | .[b;b_kk];.....end;..%.use.all.t |
| 1c9e0 | 68 65 20 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 73 20 74 6f 20 65 73 74 69 6d 61 74 65 20 | he.vanishing.points.to.estimate. |
| 1ca00 | 66 6f 63 61 6c 20 6c 65 6e 67 74 68 3a 0a 0a 66 5f 69 6e 69 74 20 3d 20 73 71 72 74 28 61 62 73 | focal.length:..f_init.=.sqrt(abs |
| 1ca20 | 28 31 2e 2f 28 69 6e 76 28 41 27 2a 41 29 2a 41 27 2a 62 29 29 29 3b 20 25 20 69 66 20 75 73 69 | (1./(inv(A'*A)*A'*b)));.%.if.usi |
| 1ca40 | 6e 67 20 61 20 74 77 6f 2d 66 6f 63 61 6c 20 6d 6f 64 65 6c 20 66 6f 72 20 69 6e 69 74 69 61 6c | ng.a.two-focal.model.for.initial |
| 1ca60 | 20 67 75 65 73 73 0a 0a 25 66 5f 69 6e 69 74 20 3d 20 73 71 72 74 28 62 27 2a 28 73 75 6d 28 41 | .guess..%f_init.=.sqrt(b'*(sum(A |
| 1ca80 | 27 29 27 29 20 2f 20 28 62 27 2a 62 29 29 20 2a 20 6f 6e 65 73 28 32 2c 31 29 3b 20 25 20 69 66 | ')')./.(b'*b)).*.ones(2,1);.%.if |
| 1caa0 | 20 73 69 6e 67 6c 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 20 6d 6f 64 65 6c 20 69 73 20 75 73 | .single.focal.length.model.is.us |
| 1cac0 | 65 64 0a 0a 0a 25 20 47 6c 6f 62 61 6c 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 6d 61 74 72 69 78 | ed...%.Global.calibration.matrix |
| 1cae0 | 20 28 69 6e 69 74 69 61 6c 20 67 75 65 73 73 29 3a 0a 20 20 20 09 0a 4b 4b 20 3d 20 5b 66 5f 69 | .(initial.guess):......KK.=.[f_i |
| 1cb00 | 6e 69 74 28 31 29 20 30 20 63 5f 69 6e 69 74 28 31 29 3b 30 20 66 5f 69 6e 69 74 28 32 29 20 63 | nit(1).0.c_init(1);0.f_init(2).c |
| 1cb20 | 5f 69 6e 69 74 28 32 29 3b 20 30 20 30 20 31 5d 3b 0a 69 6e 76 5f 4b 4b 20 3d 20 69 6e 76 28 4b | _init(2);.0.0.1];.inv_KK.=.inv(K |
| 1cb40 | 4b 29 3b 0a 0a 09 0a 25 20 43 6f 6d 70 75 74 69 6e 67 20 6f 66 20 74 68 65 20 65 78 74 72 69 6e | K);....%.Computing.of.the.extrin |
| 1cb60 | 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 28 66 72 6f 6d 20 74 68 65 20 63 6f 6c 6c 69 6e 65 | sic.parameters.(from.the.colline |
| 1cb80 | 61 74 69 6f 6e 73 29 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 0a 20 | ations)..for.kk.=.1:n_ima,...... |
| 1cba0 | 20 20 65 76 61 6c 28 5b 27 48 6c 6b 6b 20 3d 20 48 6c 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 | ..eval(['Hlkk.=.Hl_'.num2str(kk) |
| 1cbc0 | 20 27 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 48 6c 32 20 3d 20 69 6e 76 5f 4b 4b 2a 48 6c 6b 6b | .';']);........Hl2.=.inv_KK*Hlkk |
| 1cbe0 | 3b 0a 20 20 20 20 20 20 0a 20 20 20 73 63 20 3d 20 6d 65 61 6e 28 5b 6e 6f 72 6d 28 48 6c 32 28 | ;...........sc.=.mean([norm(Hl2( |
| 1cc00 | 3a 2c 31 29 29 3b 6e 6f 72 6d 28 48 6c 32 28 3a 2c 32 29 29 5d 29 3b 0a 20 20 20 0a 20 09 48 6c | :,1));norm(Hl2(:,2))]);.......Hl |
| 1cc20 | 32 20 3d 20 48 6c 32 2f 73 63 3b 0a 20 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 48 72 6b 6b 20 | 2.=.Hl2/sc;.........eval(['Hrkk. |
| 1cc40 | 3d 20 48 72 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 | =.Hr_'.num2str(kk).';']);....... |
| 1cc60 | 20 48 72 32 20 3d 20 69 6e 76 5f 4b 4b 2a 48 72 6b 6b 3b 0a 20 20 20 20 20 20 0a 20 20 20 73 63 | .Hr2.=.inv_KK*Hrkk;...........sc |
| 1cc80 | 20 3d 20 6d 65 61 6e 28 5b 6e 6f 72 6d 28 48 72 32 28 3a 2c 31 29 29 3b 6e 6f 72 6d 28 48 72 32 | .=.mean([norm(Hr2(:,1));norm(Hr2 |
| 1cca0 | 28 3a 2c 32 29 29 5d 29 3b 0a 20 20 20 0a 20 20 20 48 72 32 20 3d 20 48 72 32 2f 73 63 3b 0a 20 | (:,2))]);........Hr2.=.Hr2/sc;.. |
| 1ccc0 | 20 20 0a 20 20 20 6f 6d 63 6c 20 3d 20 72 6f 64 72 69 67 75 65 73 28 5b 48 6c 32 28 3a 2c 31 3a | ......omcl.=.rodrigues([Hl2(:,1: |
| 1cce0 | 32 29 20 63 72 6f 73 73 28 48 6c 32 28 3a 2c 31 29 2c 48 6c 32 28 3a 2c 32 29 29 5d 29 3b 0a 20 | 2).cross(Hl2(:,1),Hl2(:,2))]);.. |
| 1cd00 | 20 20 54 63 6c 20 3d 20 48 6c 32 28 3a 2c 33 29 3b 0a 20 20 20 0a 20 20 20 25 6f 6d 63 72 20 3d | ..Tcl.=.Hl2(:,3);........%omcr.= |
| 1cd20 | 20 72 6f 64 72 69 67 75 65 73 28 5b 48 72 32 28 3a 2c 31 3a 32 29 20 63 72 6f 73 73 28 48 72 32 | .rodrigues([Hr2(:,1:2).cross(Hr2 |
| 1cd40 | 28 3a 2c 31 29 2c 48 72 32 28 3a 2c 32 29 29 5d 29 3b 0a 20 20 20 25 54 63 72 20 3d 20 48 72 32 | (:,1),Hr2(:,2))]);....%Tcr.=.Hr2 |
| 1cd60 | 28 3a 2c 33 29 3b 0a 20 20 20 0a 20 20 20 0a 20 20 09 6f 6d 63 6b 6b 20 3d 20 6f 6d 63 6c 3b 20 | (:,3);............omckk.=.omcl;. |
| 1cd80 | 25 72 6f 64 72 69 67 75 65 73 28 5b 48 32 28 3a 2c 31 3a 32 29 20 63 72 6f 73 73 28 48 32 28 3a | %rodrigues([H2(:,1:2).cross(H2(: |
| 1cda0 | 2c 31 29 2c 48 32 28 3a 2c 32 29 29 5d 29 3b 0a 20 20 09 54 63 6b 6b 20 3d 20 54 63 6c 3b 20 25 | ,1),H2(:,2))]);....Tckk.=.Tcl;.% |
| 1cdc0 | 48 32 28 3a 2c 33 29 3b 0a 20 20 20 0a 20 20 09 65 76 61 6c 28 5b 27 6f 6d 63 5f 27 20 6e 75 6d | H2(:,3);........eval(['omc_'.num |
| 1cde0 | 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 6f 6d 63 6b 6b 3b 27 5d 29 3b 0a 20 20 09 65 76 61 6c 28 | 2str(kk).'.=.omckk;']);....eval( |
| 1ce00 | 5b 27 54 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 54 63 6b 6b 3b 27 5d 29 3b | ['Tc_'.num2str(kk).'.=.Tckk;']); |
| 1ce20 | 0a 20 20 20 09 0a 65 6e 64 3b 0a 0a 0a 20 20 20 20 20 20 0a 25 20 49 6e 69 74 69 61 6c 69 73 61 | ......end;..........%.Initialisa |
| 1ce40 | 74 69 6f 6e 20 6f 66 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 20 66 6f 72 20 67 6c 6f 62 61 | tion.of.the.parameters.for.globa |
| 1ce60 | 6c 20 6d 69 6e 69 6d 69 7a 61 74 69 6f 6e 3a 0a 0a 69 6e 69 74 5f 70 61 72 61 6d 20 3d 20 5b 66 | l.minimization:..init_param.=.[f |
| 1ce80 | 5f 69 6e 69 74 3b 6b 5f 69 6e 69 74 5d 3b 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 | _init;k_init];..for.kk.=.1:n_ima |
| 1cea0 | 2c 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 69 6e 69 74 5f 70 61 72 61 6d 20 3d 20 5b 69 6e 69 | ,.......eval(['init_param.=.[ini |
| 1cec0 | 74 5f 70 61 72 61 6d 3b 20 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 20 54 63 | t_param;.omc_'.num2str(kk).';.Tc |
| 1cee0 | 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 5d 3b 27 5d 29 3b 0a 65 6e 64 3b 0a 0a 69 66 20 | _'.num2str(kk).'];']);.end;..if. |
| 1cf00 | 7e 65 78 69 73 74 28 27 6c 73 71 6e 6f 6e 6c 69 6e 27 29 2c 0a 0a 09 6f 70 74 69 6f 6e 73 20 3d | ~exist('lsqnonlin'),...options.= |
| 1cf20 | 20 5b 31 20 31 65 2d 34 20 31 65 2d 34 20 31 65 2d 36 20 20 30 20 30 20 30 20 30 20 30 20 30 20 | .[1.1e-4.1e-4.1e-6..0.0.0.0.0.0. |
| 1cf40 | 30 20 30 20 30 20 36 30 30 30 20 30 20 31 65 2d 38 20 30 2e 31 20 30 5d 3b 0a 0a 09 69 66 20 65 | 0.0.0.6000.0.1e-8.0.1.0];...if.e |
| 1cf60 | 78 69 73 74 28 27 6c 65 61 73 74 73 71 27 29 2c 0a 20 20 20 09 73 73 73 20 3d 20 5b 27 5b 70 61 | xist('leastsq'),.....sss.=.['[pa |
| 1cf80 | 72 61 6d 2c 6f 70 74 5d 20 3d 20 6c 65 61 73 74 73 71 28 27 27 6d 75 6c 74 69 5f 65 72 72 6f 72 | ram,opt].=.leastsq(''multi_error |
| 1cfa0 | 5f 6f 75 6c 75 27 27 2c 69 6e 69 74 5f 70 61 72 61 6d 2c 6f 70 74 69 6f 6e 73 2c 5b 5d 2c 6e 5f | _oulu'',init_param,options,[],n_ |
| 1cfc0 | 69 6d 61 2c 63 5f 69 6e 69 74 29 3b 27 5d 3b 0a 09 65 6c 73 65 0a 20 20 20 09 73 73 73 20 3d 20 | ima,c_init);'];..else.....sss.=. |
| 1cfe0 | 5b 27 5b 70 61 72 61 6d 2c 6f 70 74 5d 20 3d 20 6c 65 61 73 74 73 71 32 28 27 27 6d 75 6c 74 69 | ['[param,opt].=.leastsq2(''multi |
| 1d000 | 5f 65 72 72 6f 72 5f 6f 75 6c 75 27 27 2c 69 6e 69 74 5f 70 61 72 61 6d 2c 6f 70 74 69 6f 6e 73 | _error_oulu'',init_param,options |
| 1d020 | 2c 5b 5d 2c 6e 5f 69 6d 61 2c 63 5f 69 6e 69 74 29 3b 27 5d 3b 0a 09 65 6e 64 3b 0a 0a 65 6c 73 | ,[],n_ima,c_init);'];..end;..els |
| 1d040 | 65 0a 20 20 20 0a 20 20 20 6f 70 74 69 6f 6e 73 20 3d 20 6f 70 74 69 6d 73 65 74 28 27 6c 73 71 | e........options.=.optimset('lsq |
| 1d060 | 6e 6f 6e 6c 69 6e 27 29 3b 0a 20 20 20 6f 70 74 69 6f 6e 73 2e 4d 61 78 49 74 65 72 20 20 3d 20 | nonlin');....options.MaxIter..=. |
| 1d080 | 36 30 30 30 3b 0a 20 20 20 6f 70 74 69 6f 6e 73 2e 44 69 73 70 6c 61 79 20 3d 20 27 69 74 65 72 | 6000;....options.Display.=.'iter |
| 1d0a0 | 27 3b 0a 20 20 09 73 73 73 20 3d 20 5b 27 5b 70 61 72 61 6d 2c 6f 70 74 5d 20 3d 20 6c 73 71 6e | ';....sss.=.['[param,opt].=.lsqn |
| 1d0c0 | 6f 6e 6c 69 6e 28 27 27 6d 75 6c 74 69 5f 65 72 72 6f 72 5f 6f 75 6c 75 27 27 2c 69 6e 69 74 5f | onlin(''multi_error_oulu'',init_ |
| 1d0e0 | 70 61 72 61 6d 2c 5b 5d 2c 5b 5d 2c 6f 70 74 69 6f 6e 73 2c 6e 5f 69 6d 61 2c 63 5f 69 6e 69 74 | param,[],[],options,n_ima,c_init |
| 1d100 | 29 3b 27 5d 3b 0a 0a 65 6e 64 3b 0a 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 4f 70 74 69 6d | );'];..end;...fprintf(1,'\nOptim |
| 1d120 | 69 7a 61 74 69 6f 6e 20 6e 6f 74 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 20 70 72 69 6e 63 69 | ization.not.including.the.princi |
| 1d140 | 70 61 6c 20 70 6f 69 6e 74 2e 2e 2e 5c 6e 27 29 0a 65 76 61 6c 28 73 73 73 29 3b 0a 0a 68 69 73 | pal.point...\n').eval(sss);..his |
| 1d160 | 74 6f 72 79 20 20 3d 20 5b 5b 69 6e 69 74 5f 70 61 72 61 6d 3b 63 5f 69 6e 69 74 5d 20 5b 70 61 | tory..=.[[init_param;c_init].[pa |
| 1d180 | 72 61 6d 3b 63 5f 69 6e 69 74 5d 5d 3b 0a 0a 73 6f 6c 5f 6e 6f 5f 63 65 6e 74 65 72 20 3d 20 5b | ram;c_init]];..sol_no_center.=.[ |
| 1d1a0 | 70 61 72 61 6d 3b 63 5f 69 6e 69 74 5d 3b 0a 0a 69 6e 69 74 5f 70 61 72 61 6d 20 3d 20 73 6f 6c | param;c_init];..init_param.=.sol |
| 1d1c0 | 5f 6e 6f 5f 63 65 6e 74 65 72 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 4f 70 74 69 6d 69 | _no_center;..fprintf(1,'\nOptimi |
| 1d1e0 | 7a 61 74 69 6f 6e 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 20 70 72 69 6e 63 69 70 61 6c 20 70 | zation.including.the.principal.p |
| 1d200 | 6f 69 6e 74 2e 2e 2e 5c 6e 27 29 0a 0a 65 76 61 6c 28 73 73 73 29 3b 0a 0a 68 69 73 74 6f 72 79 | oint...\n')..eval(sss);..history |
| 1d220 | 20 3d 20 5b 68 69 73 74 6f 72 79 20 70 61 72 61 6d 5d 3b 0a 0a 0a 73 6f 6c 5f 77 69 74 68 5f 63 | .=.[history.param];...sol_with_c |
| 1d240 | 65 6e 74 65 72 20 3d 20 70 61 72 61 6d 3b 0a 0a 0a 0a 0a 25 25 25 20 45 78 74 72 61 63 74 69 6f | enter.=.param;.....%%%.Extractio |
| 1d260 | 6e 20 6f 66 20 74 68 65 20 66 69 6e 61 6c 20 69 6e 74 72 69 6e 73 69 63 20 61 6e 64 20 65 78 74 | n.of.the.final.intrinsic.and.ext |
| 1d280 | 72 69 6e 73 69 63 20 70 61 72 61 6d 61 74 65 72 73 20 28 69 6e 20 74 68 65 20 6e 6f 2d 63 65 6e | rinsic.paramaters.(in.the.no-cen |
| 1d2a0 | 74 65 72 20 63 61 73 65 29 3a 0a 0a 73 6f 6c 75 74 69 6f 6e 20 3d 20 73 6f 6c 5f 6e 6f 5f 63 65 | ter.case):..solution.=.sol_no_ce |
| 1d2c0 | 6e 74 65 72 3b 0a 65 78 74 72 61 63 74 5f 70 61 72 61 6d 65 74 65 72 73 33 44 3b 0a 0a 66 70 72 | nter;.extract_parameters3D;..fpr |
| 1d2e0 | 69 6e 74 66 28 31 2c 27 5c 6e 5c 6e 43 61 6c 69 62 72 61 74 69 6f 6e 20 72 65 73 75 6c 74 73 20 | intf(1,'\n\nCalibration.results. |
| 1d300 | 77 69 74 68 6f 75 74 20 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 65 73 74 69 6d 61 74 69 | without.principal.point.estimati |
| 1d320 | 6f 6e 3a 5c 6e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 46 6f 63 61 6c 20 4c 65 6e 67 | on:\n\n');.fprintf(1,'Focal.Leng |
| 1d340 | 74 68 3a 20 20 20 20 20 66 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 | th:.....fc.=.[.%3.5f...%3.5f]\n' |
| 1d360 | 2c 66 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 50 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 | ,fc);.fprintf(1,'Principal.point |
| 1d380 | 3a 20 20 63 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 63 63 29 3b | :..cc.=.[.%3.5f...%3.5f]\n',cc); |
| 1d3a0 | 0a 66 70 72 69 6e 74 66 28 31 2c 27 44 69 73 74 6f 72 74 69 6f 6e 3a 20 20 20 20 20 20 20 6b 63 | .fprintf(1,'Distortion:.......kc |
| 1d3c0 | 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 20 20 20 25 33 2e | .=.[.%3.5f...%3.5f...%3.5f...%3. |
| 1d3e0 | 35 66 5d 5c 6e 27 2c 6b 63 29 3b 20 20 20 0a 66 70 72 69 6e 74 66 28 31 2c 5b 27 50 69 78 65 6c | 5f]\n',kc);....fprintf(1,['Pixel |
| 1d400 | 20 65 72 72 6f 72 3a 20 20 20 20 20 20 5b 63 6c 69 63 6b 20 6f 6e 20 27 27 73 6f 6c 2e 20 77 69 | .error:......[click.on.''sol..wi |
| 1d420 | 74 68 6f 75 74 20 63 65 6e 74 65 72 27 27 5d 5c 6e 27 5d 29 3b 20 0a 0a 0a 0a 0a 25 20 50 69 63 | thout.center'']\n']);......%.Pic |
| 1d440 | 6b 20 74 68 65 20 73 6f 6c 75 74 69 6f 6e 20 77 69 74 68 20 70 72 69 6e 63 69 70 61 6c 20 70 6f | k.the.solution.with.principal.po |
| 1d460 | 69 6e 74 0a 25 25 25 20 4e 4f 54 45 3a 20 41 74 20 74 68 61 74 20 70 6f 69 6e 74 2c 20 74 68 65 | int.%%%.NOTE:.At.that.point,.the |
| 1d480 | 20 75 73 65 72 20 63 61 6e 20 63 68 6f 6f 73 65 20 77 68 69 63 68 20 73 6f 6c 75 74 69 6f 6e 20 | .user.can.choose.which.solution. |
| 1d4a0 | 74 6f 20 70 69 63 6b 3a 20 77 69 74 68 20 6f 72 20 77 69 74 68 6f 75 74 0a 25 25 25 20 70 72 69 | to.pick:.with.or.without.%%%.pri |
| 1d4c0 | 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 65 73 74 69 6d 61 74 69 6f 6e 2e 20 42 79 20 64 65 66 61 | ncipal.point.estimation..By.defa |
| 1d4e0 | 75 6c 74 2c 20 77 65 20 70 69 63 6b 20 74 68 65 20 73 6f 6c 75 74 69 6f 6e 20 77 69 74 68 20 70 | ult,.we.pick.the.solution.with.p |
| 1d500 | 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 2e 0a 0a 73 6f 6c 75 74 69 6f 6e 20 3d 20 73 6f 6c 5f | rincipal.point...solution.=.sol_ |
| 1d520 | 77 69 74 68 5f 63 65 6e 74 65 72 3b 0a 0a 0a 0a 25 25 25 20 45 78 74 72 61 63 74 69 6f 6e 20 6f | with_center;....%%%.Extraction.o |
| 1d540 | 66 20 74 68 65 20 66 69 6e 61 6c 20 69 6e 74 72 69 6e 73 69 63 20 61 6e 64 20 65 78 74 72 69 6e | f.the.final.intrinsic.and.extrin |
| 1d560 | 73 69 63 20 70 61 72 61 6d 61 74 65 72 73 3a 0a 0a 65 78 74 72 61 63 74 5f 70 61 72 61 6d 65 74 | sic.paramaters:..extract_paramet |
| 1d580 | 65 72 73 33 44 3b 0a 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 5c 6e 43 61 6c 69 62 72 61 74 | ers3D;...fprintf(1,'\n\nCalibrat |
| 1d5a0 | 69 6f 6e 20 72 65 73 75 6c 74 73 20 77 69 74 68 20 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 | ion.results.with.principal.point |
| 1d5c0 | 20 65 73 74 69 6d 61 74 69 6f 6e 3a 5c 6e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 46 | .estimation:\n\n');.fprintf(1,'F |
| 1d5e0 | 6f 63 61 6c 20 4c 65 6e 67 74 68 3a 20 20 20 20 20 66 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 | ocal.Length:.....fc.=.[.%3.5f... |
| 1d600 | 25 33 2e 35 66 5d 5c 6e 27 2c 66 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 50 72 69 6e 63 69 | %3.5f]\n',fc);.fprintf(1,'Princi |
| 1d620 | 70 61 6c 20 70 6f 69 6e 74 3a 20 20 63 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 | pal.point:..cc.=.[.%3.5f...%3.5f |
| 1d640 | 5d 5c 6e 27 2c 63 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 44 69 73 74 6f 72 74 69 6f 6e 3a | ]\n',cc);.fprintf(1,'Distortion: |
| 1d660 | 20 20 20 20 20 20 20 6b 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 20 20 20 25 33 | .......kc.=.[.%3.5f...%3.5f...%3 |
| 1d680 | 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 6b 63 29 3b 20 20 20 0a 0a 0a 25 25 25 25 25 25 | .5f...%3.5f]\n',kc);......%%%%%% |
| 1d6a0 | 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 47 52 41 50 48 49 43 41 4c 20 4f 55 54 50 55 54 20 | %%%%%%%%%%%%%%.GRAPHICAL.OUTPUT. |
| 1d6c0 | 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 0a 0a 67 72 61 70 68 6f | %%%%%%%%%%%%%%%%%%%%%%%%..grapho |
| 1d6e0 | 75 74 5f 63 61 6c 69 62 33 44 3b 0a 0a 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 4e 6f 74 65 3a 20 | ut_calib3D;....fprintf(1,'Note:. |
| 1d700 | 49 66 20 74 68 65 20 73 6f 6c 75 74 69 6f 6e 20 69 73 20 6e 6f 74 20 73 61 74 69 73 66 61 63 74 | If.the.solution.is.not.satisfact |
| 1d720 | 6f 72 79 2c 20 73 65 6c 65 63 74 20 73 6f 6c 75 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 63 65 6e | ory,.select.solution.without.cen |
| 1d740 | 74 65 72 20 65 73 74 69 6d 61 74 69 6f 6e 2e 5c 6e 5c 6e 27 29 3b 0a 0a 0a 25 25 25 25 25 25 25 | ter.estimation.\n\n');...%%%%%%% |
| 1d760 | 25 25 25 25 25 25 25 20 53 61 76 65 20 61 6c 6c 20 74 68 65 20 43 61 6c 69 62 72 61 74 69 6f 6e | %%%%%%%.Save.all.the.Calibration |
| 1d780 | 20 72 65 73 75 6c 74 73 3a 0a 0a 64 69 73 70 28 27 53 61 76 65 20 63 61 6c 69 62 72 61 74 69 6f | .results:..disp('Save.calibratio |
| 1d7a0 | 6e 20 72 65 73 75 6c 74 73 20 75 6e 64 65 72 20 43 61 6c 69 62 5f 52 65 73 75 6c 74 73 2e 6d 61 | n.results.under.Calib_Results.ma |
| 1d7c0 | 74 27 29 3b 0a 0a 73 74 72 69 6e 67 5f 73 61 76 65 20 3d 20 27 73 61 76 65 20 43 61 6c 69 62 5f | t');..string_save.=.'save.Calib_ |
| 1d7e0 | 52 65 73 75 6c 74 73 20 66 63 20 6b 63 20 63 63 20 65 78 20 78 20 79 20 73 6f 6c 75 74 69 6f 6e | Results.fc.kc.cc.ex.x.y.solution |
| 1d800 | 20 73 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 65 72 20 73 6f 6c 5f 6e 6f 5f 63 65 6e 74 65 72 20 68 | .sol_with_center.sol_no_center.h |
| 1d820 | 69 73 74 6f 72 79 20 77 69 6e 74 78 20 77 69 6e 74 79 20 6e 5f 69 6d 61 20 74 79 70 65 5f 6e 75 | istory.wintx.winty.n_ima.type_nu |
| 1d840 | 6d 62 65 72 69 6e 67 20 4e 5f 73 6c 6f 74 73 20 73 6d 61 6c 6c 5f 63 61 6c 69 62 5f 69 6d 61 67 | mbering.N_slots.small_calib_imag |
| 1d860 | 65 20 66 69 72 73 74 5f 6e 75 6d 20 69 6d 61 67 65 5f 6e 75 6d 62 65 72 73 20 66 6f 72 6d 61 74 | e.first_num.image_numbers.format |
| 1d880 | 5f 69 6d 61 67 65 20 63 61 6c 69 62 5f 6e 61 6d 65 20 48 63 61 6c 20 57 63 61 6c 20 6e 78 20 6e | _image.calib_name.Hcal.Wcal.nx.n |
| 1d8a0 | 79 20 6d 61 70 20 64 58 5f 64 65 66 61 75 6c 74 20 64 59 5f 64 65 66 61 75 6c 74 20 4b 4b 20 69 | y.map.dX_default.dY_default.KK.i |
| 1d8c0 | 6e 76 5f 4b 4b 20 64 58 20 64 59 27 3b 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c | nv_KK.dX.dY';..for.kk.=.1:n_ima, |
| 1d8e0 | 0a 20 20 20 73 74 72 69 6e 67 5f 73 61 76 65 20 3d 20 5b 73 74 72 69 6e 67 5f 73 61 76 65 20 27 | ....string_save.=.[string_save.' |
| 1d900 | 20 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b | .X_'.num2str(kk).'.x_'.num2str(k |
| 1d920 | 6b 29 20 27 20 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 65 78 5f 27 20 6e 75 6d 32 | k).'.y_'.num2str(kk).'.ex_'.num2 |
| 1d940 | 73 74 72 28 6b 6b 29 20 27 20 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 54 63 | str(kk).'.omc_'.num2str(kk).'.Tc |
| 1d960 | 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 48 6c 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b | _'.num2str(kk).'.Hl_'.num2str(kk |
| 1d980 | 29 20 27 20 6e 6c 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 6e 6c 5f 73 | ).'.nl_sq_x_'.num2str(kk).'.nl_s |
| 1d9a0 | 71 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 48 72 5f 27 20 6e 75 6d 32 73 74 72 | q_y_'.num2str(kk).'.Hr_'.num2str |
| 1d9c0 | 28 6b 6b 29 20 27 20 6e 72 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 6e | (kk).'.nr_sq_x_'.num2str(kk).'.n |
| 1d9e0 | 72 5f 73 71 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 5d 3b 0a 65 6e 64 3b 0a 0a 65 76 61 | r_sq_y_'.num2str(kk)];.end;..eva |
| 1da00 | 6c 28 73 74 72 69 6e 67 5f 73 61 76 65 29 3b 0a 49 53 49 54 49 4f 4e 20 25 25 25 25 25 25 25 25 | l(string_save);.ISITION.%%%%%%%% |
| 1da20 | 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 0a 20 20 20 0a 20 20 0a 20 20 20 | %%%%%%%%%%%%%%%%%%%%%........... |
| 1da40 | 78 31 20 3d 20 61 31 30 28 31 29 2f 61 31 30 28 33 29 3b 0a 20 20 20 78 34 20 3d 20 61 31 31 28 | x1.=.a10(1)/a10(3);....x4.=.a11( |
| 1da60 | 31 29 2f 61 31 31 28 33 29 3b 0a 20 20 20 0a 20 20 20 79 31 20 3d 20 61 31 30 28 32 29 2f 61 31 | 1)/a11(3);........y1.=.a10(2)/a1 |
| 1da80 | 30 28 33 29 3b 0a 20 20 20 79 34 20 3d 20 61 31 31 28 32 29 2f 61 31 31 28 33 29 3b 0a 20 20 20 | 0(3);....y4.=.a11(2)/a11(3);.... |
| 1daa0 | 0a 0a 20 20 66 69 67 75 72 65 28 32 29 3b 0a 20 20 68 6f 6c 64 20 6f 6e 3b 0a 20 20 70 6c 6f 74 | ....figure(2);...hold.on;...plot |
| 1dac0 | 28 5b 78 31 20 78 34 5d 2c 5b 79 31 20 79 34 5d 2c 27 63 2d 27 29 3b 0a 20 20 70 6c 6f 74 28 5b | ([x1.x4],[y1.y4],'c-');...plot([ |
| 1dae0 | 78 31 20 78 34 5d 2c 5b 79 31 20 79 34 5d 2c 27 63 6f 27 29 3b 0a 20 20 68 6f 6c 64 20 6f 66 66 | x1.x4],[y1.y4],'co');...hold.off |
| 1db00 | 3b 0a 0a 20 20 20 74 69 74 6c 65 28 5b 27 43 6c 69 63 6b 20 6f 6e 20 74 68 65 20 74 77 6f 20 72 | ;.....title(['Click.on.the.two.r |
| 1db20 | 65 6d 61 69 6e 69 6e 67 20 65 78 74 72 65 6d 65 20 63 6f 72 6e 65 72 73 20 6f 66 20 74 68 65 20 | emaining.extreme.corners.of.the. |
| 1db40 | 72 69 67 68 74 20 72 65 63 74 61 6e 67 75 6c 61 72 20 70 61 74 74 65 72 6e 2e 2e 2e 20 49 6d 61 | right.rectangular.pattern....Ima |
| 1db60 | 67 65 20 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 5d 29 3b 0a 20 20 20 0a 20 20 20 64 69 73 70 28 | ge.'.num2str(kk)]);........disp( |
| 1db80 | 27 43 6c 69 63 6b 20 6f 6e 20 74 68 65 20 74 77 6f 20 72 65 6d 61 69 6e 69 6e 67 20 65 78 74 72 | 'Click.on.the.two.remaining.extr |
| 1dba0 | 65 6d 65 20 63 6f 72 6e 65 72 73 20 6f 66 20 74 68 65 20 72 69 67 68 74 20 72 65 63 74 61 6e 67 | eme.corners.of.the.right.rectang |
| 1dbc0 | 75 6c 61 72 20 70 61 74 74 65 72 6e 2e 2e 2e 27 29 3b 0a 20 20 20 0a 20 20 20 5b 78 2c 79 5d 20 | ular.pattern...');........[x,y]. |
| 1dbe0 | 3d 20 67 69 6e 70 75 74 33 28 32 29 3b 0a 20 20 20 0a 20 20 20 5b 58 63 2c 67 6f 6f 64 2c 62 61 | =.ginput3(2);........[Xc,good,ba |
| 1dc00 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 63 6f 6e | TOOLBOX_calib/go_calib_optim_con |
| 1dc20 | 74 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | t.m............................. |
| 1dc40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1dc60 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 1dc80 | 20 20 20 36 35 31 30 20 20 37 30 32 34 30 33 37 33 32 37 20 20 31 32 35 37 34 00 20 00 00 00 00 | ...6510..7024037327..12574...... |
| 1dca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1dcc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1dce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1dd00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1dd20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1dd40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1dd60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1dd80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1dda0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ddc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1dde0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1de00 | 25 20 53 69 6d 70 6c 69 66 69 65 64 20 76 65 72 73 69 6f 6e 20 6f 66 20 67 6f 5f 63 61 6c 69 62 | %.Simplified.version.of.go_calib |
| 1de20 | 2e 6d 0a 0a 69 66 20 7e 65 78 69 73 74 28 27 78 5f 31 27 29 2c 0a 20 20 20 63 6c 69 63 6b 5f 63 | .m..if.~exist('x_1'),....click_c |
| 1de40 | 61 6c 69 62 3b 0a 65 6e 64 3b 0a 20 20 20 20 20 20 0a 0a 25 20 49 6e 69 74 69 61 6c 69 73 61 74 | alib;.end;.........%.Initialisat |
| 1de60 | 69 6f 6e 20 6f 66 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 20 66 6f 72 20 67 6c 6f 62 61 6c | ion.of.the.parameters.for.global |
| 1de80 | 20 6d 69 6e 69 6d 69 7a 61 74 69 6f 6e 3a 0a 0a 69 6e 69 74 5f 70 61 72 61 6d 20 3d 20 5b 66 63 | .minimization:..init_param.=.[fc |
| 1dea0 | 3b 6b 63 5d 3b 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 0a 20 20 20 | ;kc];..for.kk.=.1:n_ima,........ |
| 1dec0 | 69 66 20 7e 65 78 69 73 74 28 5b 27 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 5d 29 2c | if.~exist(['omc_'.num2str(kk)]), |
| 1dee0 | 0a 20 20 20 20 20 20 65 76 61 6c 28 5b 27 48 6b 6b 20 3d 20 48 5f 27 20 6e 75 6d 32 73 74 72 28 | .......eval(['Hkk.=.H_'.num2str( |
| 1df00 | 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 09 48 32 20 3d 20 69 6e 76 5f 4b 4b 2a 48 6b 6b 3b 0a | kk).';']);.....H2.=.inv_KK*Hkk;. |
| 1df20 | 20 20 20 20 20 20 73 63 20 3d 20 6d 65 61 6e 28 5b 6e 6f 72 6d 28 48 32 28 3a 2c 31 29 29 3b 6e | ......sc.=.mean([norm(H2(:,1));n |
| 1df40 | 6f 72 6d 28 48 32 28 3a 2c 32 29 29 5d 29 3b 0a 20 20 20 09 48 32 20 3d 20 48 32 2f 73 63 3b 0a | orm(H2(:,2))]);.....H2.=.H2/sc;. |
| 1df60 | 20 20 20 20 20 20 6f 6d 63 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 28 5b 48 32 28 3a 2c 31 3a | ......omckk.=.rodrigues([H2(:,1: |
| 1df80 | 32 29 20 63 72 6f 73 73 28 48 32 28 3a 2c 31 29 2c 48 32 28 3a 2c 32 29 29 5d 29 3b 0a 20 20 20 | 2).cross(H2(:,1),H2(:,2))]);.... |
| 1dfa0 | 20 20 20 54 63 6b 6b 20 3d 20 48 32 28 3a 2c 33 29 3b 0a 20 20 20 20 20 20 65 76 61 6c 28 5b 27 | ...Tckk.=.H2(:,3);.......eval([' |
| 1dfc0 | 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 6f 6d 63 6b 6b 3b 27 5d 29 3b | omc_'.num2str(kk).'.=.omckk;']); |
| 1dfe0 | 0a 20 20 20 20 20 20 65 76 61 6c 28 5b 27 54 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 | .......eval(['Tc_'.num2str(kk).' |
| 1e000 | 20 3d 20 54 63 6b 6b 3b 27 5d 29 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 65 76 61 6c | .=.Tckk;']);....end;........eval |
| 1e020 | 28 5b 27 69 6e 69 74 5f 70 61 72 61 6d 20 3d 20 5b 69 6e 69 74 5f 70 61 72 61 6d 3b 20 6f 6d 63 | (['init_param.=.[init_param;.omc |
| 1e040 | 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 20 54 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b | _'.num2str(kk).';.Tc_'.num2str(k |
| 1e060 | 6b 29 20 27 5d 3b 27 5d 29 3b 0a 65 6e 64 3b 0a 0a 69 6e 69 74 5f 70 61 72 61 6d 20 3d 20 5b 69 | k).'];']);.end;..init_param.=.[i |
| 1e080 | 6e 69 74 5f 70 61 72 61 6d 3b 63 63 5d 3b 0a 0a 0a 0a 25 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | nit_param;cc];....%------------- |
| 1e0a0 | 2d 2d 2d 2d 2d 2d 2d 20 4d 61 69 6e 20 4f 70 74 69 6d 69 7a 61 74 69 6f 6e 3a 0a 0a 66 70 72 69 | -------.Main.Optimization:..fpri |
| 1e0c0 | 6e 74 66 28 31 2c 27 5c 6e 52 65 2d 4f 70 74 69 6d 69 7a 61 74 69 6f 6e 2e 2e 2e 5c 6e 27 29 0a | ntf(1,'\nRe-Optimization...\n'). |
| 1e0e0 | 0a 0a 70 61 72 61 6d 20 3d 20 69 6e 69 74 5f 70 61 72 61 6d 3b 0a 63 68 61 6e 67 65 20 3d 20 31 | ..param.=.init_param;.change.=.1 |
| 1e100 | 3b 0a 0a 69 74 65 72 20 3d 20 30 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 49 74 65 72 61 74 69 | ;..iter.=.0;..fprintf(1,'Iterati |
| 1e120 | 6f 6e 20 27 29 3b 0a 0a 77 68 69 6c 65 20 28 63 68 61 6e 67 65 20 3e 20 31 65 2d 36 29 26 28 69 | on.');..while.(change.>.1e-6)&(i |
| 1e140 | 74 65 72 20 3c 20 31 30 29 2c 0a 20 20 20 0a 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 25 64 2e | ter.<.10),........fprintf(1,'%d. |
| 1e160 | 2e 2e 27 2c 69 74 65 72 2b 31 29 3b 0a 0a 09 4a 4a 20 3d 20 5b 5d 3b 0a 09 65 78 20 3d 20 5b 5d | ..',iter+1);...JJ.=.[];..ex.=.[] |
| 1e180 | 3b 0a 09 0a 09 63 20 3d 20 70 61 72 61 6d 28 36 2a 6e 5f 69 6d 61 20 2b 20 34 20 2b 20 33 3a 36 | ;....c.=.param(6*n_ima.+.4.+.3:6 |
| 1e1a0 | 2a 6e 5f 69 6d 61 20 2b 20 35 20 2b 20 33 29 3b 0a 09 66 20 3d 20 70 61 72 61 6d 28 31 3a 32 29 | *n_ima.+.5.+.3);..f.=.param(1:2) |
| 1e1c0 | 3b 0a 09 6b 20 3d 20 70 61 72 61 6d 28 33 3a 36 29 3b 0a 09 0a 09 66 6f 72 20 6b 6b 20 3d 20 31 | ;..k.=.param(3:6);....for.kk.=.1 |
| 1e1e0 | 3a 6e 5f 69 6d 61 2c 0a 20 20 09 20 0a 20 20 20 09 6f 6d 63 6b 6b 20 3d 20 70 61 72 61 6d 28 34 | :n_ima,..........omckk.=.param(4 |
| 1e200 | 2b 36 2a 28 6b 6b 2d 31 29 20 2b 20 33 3a 36 2a 6b 6b 20 2b 20 33 29 3b 0a 20 20 20 09 0a 20 20 | +6*(kk-1).+.3:6*kk.+.3);........ |
| 1e220 | 09 09 54 63 6b 6b 20 3d 20 70 61 72 61 6d 28 36 2a 6b 6b 2b 31 20 2b 20 33 3a 36 2a 6b 6b 2b 33 | ..Tckk.=.param(6*kk+1.+.3:6*kk+3 |
| 1e240 | 20 2b 20 33 29 3b 0a 20 20 20 09 0a 20 20 20 09 65 76 61 6c 28 5b 27 58 5f 6b 6b 20 3d 20 58 5f | .+.3);..........eval(['X_kk.=.X_ |
| 1e260 | 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 09 65 76 61 6c 28 5b 27 | '.num2str(kk).';']);.....eval([' |
| 1e280 | 78 5f 6b 6b 20 3d 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 | x_kk.=.x_'.num2str(kk).';']);... |
| 1e2a0 | 20 09 0a 20 20 20 09 4e 70 20 3d 20 73 69 7a 65 28 58 5f 6b 6b 2c 32 29 3b 0a 20 20 20 09 0a 20 | .......Np.=.size(X_kk,2);....... |
| 1e2c0 | 20 20 09 4a 4a 6b 6b 20 3d 20 7a 65 72 6f 73 28 32 2a 4e 70 2c 6e 5f 69 6d 61 20 2a 20 36 20 2b | ...JJkk.=.zeros(2*Np,n_ima.*.6.+ |
| 1e2e0 | 20 38 29 3b 0a 20 20 20 09 0a 20 20 20 09 5b 78 2c 64 78 64 6f 6d 2c 64 78 64 54 2c 64 78 64 66 | .8);..........[x,dxdom,dxdT,dxdf |
| 1e300 | 2c 64 78 64 63 2c 64 78 64 6b 5d 20 3d 20 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 28 58 5f 6b | ,dxdc,dxdk].=.project_points(X_k |
| 1e320 | 6b 2c 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 66 2c 63 2c 6b 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 09 | k,omckk,Tckk,f,c,k);............ |
| 1e340 | 65 78 6b 6b 20 3d 20 78 5f 6b 6b 20 2d 20 78 3b 0a 20 20 20 0a 20 20 20 09 65 78 20 3d 20 5b 65 | exkk.=.x_kk.-.x;.........ex.=.[e |
| 1e360 | 78 3b 65 78 6b 6b 28 3a 29 5d 3b 0a 20 20 20 0a 20 20 20 09 4a 4a 6b 6b 28 3a 2c 31 3a 32 29 20 | x;exkk(:)];.........JJkk(:,1:2). |
| 1e380 | 3d 20 64 78 64 66 3b 0a 20 20 20 09 4a 4a 6b 6b 28 3a 2c 33 3a 36 29 20 3d 20 64 78 64 6b 3b 0a | =.dxdf;.....JJkk(:,3:6).=.dxdk;. |
| 1e3a0 | 20 20 20 09 4a 4a 6b 6b 28 3a 2c 34 2b 36 2a 28 6b 6b 2d 31 29 20 2b 20 33 3a 36 2a 6b 6b 20 2b | ....JJkk(:,4+6*(kk-1).+.3:6*kk.+ |
| 1e3c0 | 20 33 29 20 3d 20 64 78 64 6f 6d 3b 0a 20 20 20 09 4a 4a 6b 6b 28 3a 2c 36 2a 6b 6b 2b 31 20 2b | .3).=.dxdom;.....JJkk(:,6*kk+1.+ |
| 1e3e0 | 20 33 3a 36 2a 6b 6b 2b 33 20 2b 20 33 29 20 3d 20 64 78 64 54 3b 0a 20 20 20 09 4a 4a 6b 6b 28 | .3:6*kk+3.+.3).=.dxdT;.....JJkk( |
| 1e400 | 3a 2c 36 2a 6e 5f 69 6d 61 20 2b 20 34 20 2b 20 33 3a 36 2a 6e 5f 69 6d 61 20 2b 20 35 20 2b 20 | :,6*n_ima.+.4.+.3:6*n_ima.+.5.+. |
| 1e420 | 33 29 20 3d 20 64 78 64 63 3b 0a 20 20 20 09 0a 20 20 20 09 4a 4a 20 3d 20 5b 4a 4a 3b 4a 4a 6b | 3).=.dxdc;..........JJ.=.[JJ;JJk |
| 1e440 | 6b 5d 3b 0a 20 20 20 09 0a 09 65 6e 64 3b 0a 09 0a 09 70 61 72 61 6d 5f 69 6e 6e 6f 76 20 3d 20 | k];.......end;....param_innov.=. |
| 1e460 | 69 6e 76 28 4a 4a 27 2a 4a 4a 29 2a 28 4a 4a 27 29 2a 65 78 3b 0a 09 70 61 72 61 6d 5f 75 70 20 | inv(JJ'*JJ)*(JJ')*ex;..param_up. |
| 1e480 | 3d 20 70 61 72 61 6d 20 2b 20 70 61 72 61 6d 5f 69 6e 6e 6f 76 3b 0a 09 63 68 61 6e 67 65 20 3d | =.param.+.param_innov;..change.= |
| 1e4a0 | 20 6e 6f 72 6d 28 70 61 72 61 6d 5f 69 6e 6e 6f 76 29 2f 6e 6f 72 6d 28 70 61 72 61 6d 5f 75 70 | .norm(param_innov)/norm(param_up |
| 1e4c0 | 29 3b 0a 09 70 61 72 61 6d 20 3d 20 70 61 72 61 6d 5f 75 70 3b 0a 09 69 74 65 72 20 3d 20 69 74 | );..param.=.param_up;..iter.=.it |
| 1e4e0 | 65 72 20 2b 20 31 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 27 | er.+.1;.....end;..fprintf(1,'\n' |
| 1e500 | 29 3b 0a 0a 0a 73 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 65 72 20 3d 20 70 61 72 61 6d 3b 0a 0a 73 | );...sol_with_center.=.param;..s |
| 1e520 | 6f 6c 75 74 69 6f 6e 20 3d 20 73 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 65 72 3b 0a 0a 0a 25 25 25 | olution.=.sol_with_center;...%%% |
| 1e540 | 20 45 78 74 72 61 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 66 69 6e 61 6c 20 69 6e 74 72 69 6e 73 | .Extraction.of.the.final.intrins |
| 1e560 | 69 63 20 61 6e 64 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 61 74 65 72 73 3a 0a 0a 65 78 | ic.and.extrinsic.paramaters:..ex |
| 1e580 | 74 72 61 63 74 5f 70 61 72 61 6d 65 74 65 72 73 3b 0a 63 6f 6d 70 5f 65 72 72 6f 72 5f 63 61 6c | tract_parameters;.comp_error_cal |
| 1e5a0 | 69 62 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 5c 6e 43 61 6c 69 62 72 61 74 69 6f 6e 20 | ib;..fprintf(1,'\n\nCalibration. |
| 1e5c0 | 72 65 73 75 6c 74 73 20 77 69 74 68 20 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 65 73 74 | results.with.principal.point.est |
| 1e5e0 | 69 6d 61 74 69 6f 6e 3a 5c 6e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 46 6f 63 61 6c | imation:\n\n');.fprintf(1,'Focal |
| 1e600 | 20 4c 65 6e 67 74 68 3a 20 20 20 20 20 66 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 | .Length:.....fc.=.[.%3.5f...%3.5 |
| 1e620 | 66 5d 5c 6e 27 2c 66 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 50 72 69 6e 63 69 70 61 6c 20 | f]\n',fc);.fprintf(1,'Principal. |
| 1e640 | 70 6f 69 6e 74 3a 20 20 63 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 | point:..cc.=.[.%3.5f...%3.5f]\n' |
| 1e660 | 2c 63 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 44 69 73 74 6f 72 74 69 6f 6e 3a 20 20 20 20 | ,cc);.fprintf(1,'Distortion:.... |
| 1e680 | 20 20 20 6b 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 20 | ...kc.=.[.%3.5f...%3.5f...%3.5f. |
| 1e6a0 | 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 6b 63 29 3b 20 20 20 0a 66 70 72 69 6e 74 66 28 31 2c 27 50 | ..%3.5f]\n',kc);....fprintf(1,'P |
| 1e6c0 | 69 78 65 6c 20 65 72 72 6f 72 3a 20 20 20 20 20 20 65 72 72 20 3d 20 5b 20 25 33 2e 35 66 20 20 | ixel.error:......err.=.[.%3.5f.. |
| 1e6e0 | 20 25 33 2e 35 66 5d 5c 6e 5c 6e 27 2c 65 72 72 5f 73 74 64 29 3b 20 0a 0a 0a 25 25 25 25 25 25 | .%3.5f]\n\n',err_std);....%%%%%% |
| 1e700 | 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 47 52 41 50 48 49 43 41 4c 20 4f 55 54 50 55 54 20 | %%%%%%%%%%%%%%.GRAPHICAL.OUTPUT. |
| 1e720 | 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 0a 0a 67 72 61 70 68 6f | %%%%%%%%%%%%%%%%%%%%%%%%..grapho |
| 1e740 | 75 74 5f 63 61 6c 69 62 3b 0a 0a 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 4e 6f 74 65 3a 20 49 66 | ut_calib;....fprintf(1,'Note:.If |
| 1e760 | 20 74 68 65 20 73 6f 6c 75 74 69 6f 6e 20 69 73 20 6e 6f 74 20 73 61 74 69 73 66 61 63 74 6f 72 | .the.solution.is.not.satisfactor |
| 1e780 | 79 2c 20 73 65 6c 65 63 74 20 73 6f 6c 75 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 63 65 6e 74 65 | y,.select.solution.without.cente |
| 1e7a0 | 72 20 65 73 74 69 6d 61 74 69 6f 6e 2e 5c 6e 5c 6e 27 29 3b 0a 0a 0a 25 25 25 25 25 25 25 25 25 | r.estimation.\n\n');...%%%%%%%%% |
| 1e7c0 | 25 25 25 25 25 20 53 61 76 65 20 61 6c 6c 20 74 68 65 20 43 61 6c 69 62 72 61 74 69 6f 6e 20 72 | %%%%%.Save.all.the.Calibration.r |
| 1e7e0 | 65 73 75 6c 74 73 3a 0a 0a 64 69 73 70 28 27 53 61 76 65 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 | esults:..disp('Save.calibration. |
| 1e800 | 72 65 73 75 6c 74 73 20 75 6e 64 65 72 20 43 61 6c 69 62 5f 52 65 73 75 6c 74 73 2e 6d 61 74 27 | results.under.Calib_Results.mat' |
| 1e820 | 29 3b 0a 0a 73 74 72 69 6e 67 5f 73 61 76 65 20 3d 20 27 73 61 76 65 20 43 61 6c 69 62 5f 52 65 | );..string_save.=.'save.Calib_Re |
| 1e840 | 73 75 6c 74 73 20 66 63 20 6b 63 20 63 63 20 65 78 20 78 20 79 20 73 6f 6c 75 74 69 6f 6e 20 73 | sults.fc.kc.cc.ex.x.y.solution.s |
| 1e860 | 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 65 72 20 73 6f 6c 75 74 69 6f 6e 5f 69 6e 69 74 20 68 69 73 | ol_with_center.solution_init.his |
| 1e880 | 74 6f 72 79 20 77 69 6e 74 78 20 77 69 6e 74 79 20 6e 5f 69 6d 61 20 74 79 70 65 5f 6e 75 6d 62 | tory.wintx.winty.n_ima.type_numb |
| 1e8a0 | 65 72 69 6e 67 20 4e 5f 73 6c 6f 74 73 20 73 6d 61 6c 6c 5f 63 61 6c 69 62 5f 69 6d 61 67 65 20 | ering.N_slots.small_calib_image. |
| 1e8c0 | 66 69 72 73 74 5f 6e 75 6d 20 69 6d 61 67 65 5f 6e 75 6d 62 65 72 73 20 66 6f 72 6d 61 74 5f 69 | first_num.image_numbers.format_i |
| 1e8e0 | 6d 61 67 65 20 63 61 6c 69 62 5f 6e 61 6d 65 20 48 63 61 6c 20 57 63 61 6c 20 6e 78 20 6e 79 20 | mage.calib_name.Hcal.Wcal.nx.ny. |
| 1e900 | 6d 61 70 20 64 58 5f 64 65 66 61 75 6c 74 20 64 59 5f 64 65 66 61 75 6c 74 20 4b 4b 20 69 6e 76 | map.dX_default.dY_default.KK.inv |
| 1e920 | 5f 4b 4b 20 64 58 20 64 59 27 3b 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 | _KK.dX.dY';..for.kk.=.1:n_ima,.. |
| 1e940 | 20 20 73 74 72 69 6e 67 5f 73 61 76 65 20 3d 20 5b 73 74 72 69 6e 67 5f 73 61 76 65 20 27 20 58 | ..string_save.=.[string_save.'.X |
| 1e960 | 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 | _'.num2str(kk).'.x_'.num2str(kk) |
| 1e980 | 20 27 20 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 65 78 5f 27 20 6e 75 6d 32 73 74 | .'.y_'.num2str(kk).'.ex_'.num2st |
| 1e9a0 | 72 28 6b 6b 29 20 27 20 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 52 63 5f 27 | r(kk).'.omc_'.num2str(kk).'.Rc_' |
| 1e9c0 | 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 54 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 | .num2str(kk).'.Tc_'.num2str(kk). |
| 1e9e0 | 27 20 48 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 48 69 6e 69 5f 27 20 6e 75 6d 32 73 | '.H_'.num2str(kk).'.Hini_'.num2s |
| 1ea00 | 74 72 28 6b 6b 29 20 27 20 6e 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 | tr(kk).'.n_sq_x_'.num2str(kk).'. |
| 1ea20 | 6e 5f 73 71 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 77 69 6e 74 78 5f 27 20 6e | n_sq_y_'.num2str(kk).'.wintx_'.n |
| 1ea40 | 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 77 69 6e 74 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 | um2str(kk).'.winty_'.num2str(kk) |
| 1ea60 | 20 27 20 64 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 64 59 5f 27 20 6e 75 6d 32 73 | .'.dX_'.num2str(kk).'.dY_'.num2s |
| 1ea80 | 74 72 28 6b 6b 29 5d 3b 0a 65 6e 64 3b 0a 0a 65 76 61 6c 28 73 74 72 69 6e 67 5f 73 61 76 65 29 | tr(kk)];.end;..eval(string_save) |
| 1eaa0 | 3b 0a 0a 72 65 74 75 72 6e 3b 0a 0a 69 66 20 65 78 69 73 74 28 27 63 61 6c 69 62 5f 64 61 74 61 | ;..return;..if.exist('calib_data |
| 1eac0 | 2e 6d 61 74 27 29 2c 0a 20 20 20 63 63 63 20 3d 20 63 6f 6d 70 75 74 65 72 3b 0a 20 20 20 69 66 | .mat'),....ccc.=.computer;....if |
| 1eae0 | 20 63 63 63 28 31 29 3d 3d 27 50 27 2c 0a 20 20 20 20 20 20 65 76 61 6c 28 27 21 64 65 6c 20 63 | .ccc(1)=='P',.......eval('!del.c |
| 1eb00 | 61 6c 69 62 5f 64 61 74 61 2e 6d 61 74 27 29 3b 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 65 | alib_data.mat');....else.......e |
| 1eb20 | 76 61 6c 28 27 21 72 6d 20 63 61 6c 69 62 5f 64 61 74 61 2e 6d 61 74 27 29 3b 0a 20 20 20 65 6e | val('!rm.calib_data.mat');....en |
| 1eb40 | 64 3b 0a 65 6e 64 3b 0a 20 43 6f 6d 70 75 74 69 6e 67 20 6f 66 20 74 68 65 20 65 78 74 72 69 6e | d;.end;..Computing.of.the.extrin |
| 1eb60 | 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 28 66 72 6f 6d 20 74 68 65 20 63 6f 6c 6c 69 6e 65 | sic.parameters.(from.the.colline |
| 1eb80 | 61 74 69 6f 6e 73 29 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 0a 20 | ations)..for.kk.=.1:n_ima,...... |
| 1eba0 | 20 20 65 76 61 6c 28 5b 27 48 6c 6b 6b 20 3d 20 48 6c 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 | ..eval(['Hlkk.=.Hl_'.num2str(kk) |
| 1ebc0 | 20 27 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 48 6c 32 20 3d 20 69 6e 76 5f 4b 4b 2a 48 6c 6b 6b | .';']);........Hl2.=.inv_KK*Hlkk |
| 1ebe0 | 3b 0a 20 20 20 20 20 20 0a 20 20 20 73 63 20 3d 20 6d 65 61 6e 28 5b 6e 6f 72 6d 28 48 6c 32 28 | ;...........sc.=.mean([norm(Hl2( |
| 1ec00 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 67 72 61 70 68 6f 75 74 5f 63 61 6c 69 62 2e 6d 00 00 | TOOLBOX_calib/graphout_calib.m.. |
| 1ec20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ec40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ec60 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 1ec80 | 20 20 20 20 33 35 35 20 20 37 30 32 34 30 33 37 33 33 31 20 20 31 31 35 34 31 00 20 00 00 00 00 | ....355..7024037331..11541...... |
| 1eca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ecc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ece0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ed00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ed20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ed40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ed60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ed80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1eda0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1edc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ede0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ee00 | 0a 0a 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 47 52 41 50 48 49 43 41 4c | ..%%%%%%%%%%%%%%%%%%%%.GRAPHICAL |
| 1ee20 | 20 4f 55 54 50 55 54 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 | .OUTPUT.%%%%%%%%%%%%%%%%%%%%%%%% |
| 1ee40 | 0a 0a 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 53 48 4f 57 20 45 58 54 52 | ..%%%%%%%%%%%%%%%%%%%%.SHOW.EXTR |
| 1ee60 | 49 4e 53 49 43 20 52 45 53 55 4c 54 53 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 | INSIC.RESULTS.%%%%%%%%%%%%%%%%%% |
| 1ee80 | 25 25 25 25 25 25 0a 0a 65 78 74 5f 63 61 6c 69 62 3b 0a 0a 25 25 25 25 25 25 25 25 25 25 25 25 | %%%%%%..ext_calib;..%%%%%%%%%%%% |
| 1eea0 | 25 25 25 25 25 25 25 25 20 52 45 50 52 4f 4a 45 43 54 20 4f 4e 20 54 48 45 20 49 4d 41 47 45 53 | %%%%%%%%.REPROJECT.ON.THE.IMAGES |
| 1eec0 | 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 0a 0a 72 65 70 72 6f | .%%%%%%%%%%%%%%%%%%%%%%%%..repro |
| 1eee0 | 6a 65 63 74 5f 63 61 6c 69 62 3b 0a 0a 61 64 2e 6d 00 65 72 00 00 04 2c 00 02 35 d7 00 1c 00 0f | ject_calib;..ad.m.er...,..5..... |
| 1ef00 | 70 72 6f 6a 65 63 74 32 5f 6f 75 6c 75 2e 6d 00 00 00 04 44 00 02 35 d8 00 1c 00 0f 70 72 6f 6a | project2_oulu.m....D..5.....proj |
| 1ef20 | 65 63 74 65 64 47 72 69 64 2e 6d 00 00 00 04 60 00 02 35 d9 00 20 00 10 70 72 6f 6a 65 63 74 5f | ectedGrid.m....`..5.....project_ |
| 1ef40 | 70 6f 69 6e 74 73 2e 6d 00 47 72 69 00 00 04 74 00 02 35 da 00 18 00 09 72 65 61 64 72 61 73 2e | points.m.Gri...t..5.....readras. |
| 1ef60 | 6d 00 74 5f 00 00 04 94 00 02 35 db 00 24 00 15 72 65 63 6f 6d 70 5f 63 6f 72 6e 65 72 5f 63 61 | m.t_......5..$..recomp_corner_ca |
| 1ef80 | 6c 69 62 2e 6d 00 00 17 00 00 04 a4 00 02 35 dc 00 14 00 06 72 65 63 74 2e 6d 00 63 00 00 04 c0 | lib.m.........5.....rect.m.c.... |
| 1efa0 | 00 02 35 dd 00 20 00 12 52 65 63 74 61 6e 67 6c 65 32 53 71 75 61 72 65 2e 6d 00 74 00 00 04 dc | ..5.....Rectangle2Square.m.t.... |
| 1efc0 | 00 02 35 de 00 20 00 11 72 65 70 72 6f 6a 65 63 74 5f 63 61 6c 69 62 2e 6d 00 72 65 00 00 04 f0 | ..5.....reproject_calib.m.re.... |
| 1efe0 | 00 02 35 df 00 18 00 0b 72 6f 64 72 69 67 75 65 73 2e 6d 00 00 00 05 04 00 02 35 e0 00 18 00 0a | ..5.....rodrigues.m.......5..... |
| 1f000 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 67 72 61 70 68 6f 75 74 5f 63 61 6c 69 62 33 44 2e 6d | TOOLBOX_calib/graphout_calib3D.m |
| 1f020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f060 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 1f080 | 20 20 20 37 31 32 36 20 20 37 30 32 34 30 33 37 33 33 32 20 20 31 31 37 35 34 00 20 00 00 00 00 | ...7126..7024037332..11754...... |
| 1f0a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f0c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f0e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f1a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f1c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f1e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f200 | 0a 0a 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 47 52 41 50 48 49 43 41 4c | ..%%%%%%%%%%%%%%%%%%%%.GRAPHICAL |
| 1f220 | 20 4f 55 54 50 55 54 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 | .OUTPUT.%%%%%%%%%%%%%%%%%%%%%%%% |
| 1f240 | 0a 0a 0a 25 20 43 6f 6c 6f 72 20 63 6f 64 65 20 66 6f 72 20 65 61 63 68 20 69 6d 61 67 65 3a 0a | ...%.Color.code.for.each.image:. |
| 1f260 | 0a 63 6f 6c 6f 72 73 20 3d 20 27 62 72 67 6b 63 6d 27 3b 0a 0a 0a 25 25 25 20 53 68 6f 77 20 74 | .colors.=.'brgkcm';...%%%.Show.t |
| 1f280 | 68 65 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 0a 0a 49 50 20 3d 20 38 2a | he.extrinsic.parameters..IP.=.8* |
| 1f2a0 | 64 58 2a 28 5b 30 20 6e 78 2d 31 20 6e 78 2d 31 20 30 20 30 20 3b 20 30 20 30 20 6e 79 2d 31 20 | dX*([0.nx-1.nx-1.0.0.;.0.0.ny-1. |
| 1f2c0 | 6e 79 2d 31 20 30 3b 31 20 31 20 31 20 31 20 31 5d 20 2d 20 5b 63 63 3b 30 5d 2a 6f 6e 65 73 28 | ny-1.0;1.1.1.1.1].-.[cc;0]*ones( |
| 1f2e0 | 31 2c 35 29 29 20 2e 2f 20 28 5b 66 63 3b 31 5d 2a 6f 6e 65 73 28 31 2c 35 29 29 3b 0a 0a 0a 66 | 1,5))../.([fc;1]*ones(1,5));...f |
| 1f300 | 69 67 75 72 65 28 34 29 3b 0a 5b 61 2c 62 5d 20 3d 20 76 69 65 77 3b 0a 0a 66 69 67 75 72 65 28 | igure(4);.[a,b].=.view;..figure( |
| 1f320 | 34 29 3b 0a 70 6c 6f 74 33 28 35 2a 5b 30 20 64 58 20 30 20 30 20 30 20 30 20 5d 2c 35 2a 5b 30 | 4);.plot3(5*[0.dX.0.0.0.0.],5*[0 |
| 1f340 | 20 30 20 30 20 30 20 30 20 64 58 5d 2c 2d 35 2a 5b 30 20 30 20 30 20 64 58 20 30 20 30 20 5d 2c | .0.0.0.0.dX],-5*[0.0.0.dX.0.0.], |
| 1f360 | 27 62 2d 27 2c 27 6c 69 6e 65 77 69 64 74 68 27 2c 32 27 29 3b 0a 68 6f 6c 64 20 6f 6e 3b 0a 70 | 'b-','linewidth',2');.hold.on;.p |
| 1f380 | 6c 6f 74 33 28 49 50 28 31 2c 3a 29 2c 49 50 28 33 2c 3a 29 2c 2d 49 50 28 32 2c 3a 29 2c 27 72 | lot3(IP(1,:),IP(3,:),-IP(2,:),'r |
| 1f3a0 | 2d 27 2c 27 6c 69 6e 65 77 69 64 74 68 27 2c 32 29 3b 0a 74 65 78 74 28 36 2a 64 58 2c 30 2c 30 | -','linewidth',2);.text(6*dX,0,0 |
| 1f3c0 | 2c 27 58 5f 63 27 29 3b 0a 74 65 78 74 28 2d 64 58 2c 35 2a 64 58 2c 30 2c 27 5a 5f 63 27 29 3b | ,'X_c');.text(-dX,5*dX,0,'Z_c'); |
| 1f3e0 | 0a 74 65 78 74 28 30 2c 30 2c 2d 36 2a 64 58 2c 27 59 5f 63 27 29 3b 0a 74 65 78 74 28 2d 64 58 | .text(0,0,-6*dX,'Y_c');.text(-dX |
| 1f400 | 2c 2d 64 58 2c 64 58 2c 27 4f 5f 63 27 29 3b 0a 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 | ,-dX,dX,'O_c');...for.kk.=.1:n_i |
| 1f420 | 6d 61 2c 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 58 58 5f 6b 6b 20 3d 20 58 5f 27 20 6e 75 | ma,........eval(['XX_kk.=.X_'.nu |
| 1f440 | 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 6f 6d 63 5f 6b | m2str(kk).';']);....eval(['omc_k |
| 1f460 | 6b 20 3d 20 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 | k.=.omc_'.num2str(kk).';']);.... |
| 1f480 | 65 76 61 6c 28 5b 27 54 63 5f 6b 6b 20 3d 20 54 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 | eval(['Tc_kk.=.Tc_'.num2str(kk). |
| 1f4a0 | 27 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 6e 6c 5f 73 71 5f 78 20 3d 20 6e | ';']);........eval(['nl_sq_x.=.n |
| 1f4c0 | 6c 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 65 | l_sq_x_'.num2str(kk).';']);....e |
| 1f4e0 | 76 61 6c 28 5b 27 6e 6c 5f 73 71 5f 79 20 3d 20 6e 6c 5f 73 71 5f 79 5f 27 20 6e 75 6d 32 73 74 | val(['nl_sq_y.=.nl_sq_y_'.num2st |
| 1f500 | 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 6e 72 5f 73 71 | r(kk).';']);........eval(['nr_sq |
| 1f520 | 5f 78 20 3d 20 6e 72 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 | _x.=.nr_sq_x_'.num2str(kk).';']) |
| 1f540 | 3b 0a 20 20 20 65 76 61 6c 28 5b 27 6e 72 5f 73 71 5f 79 20 3d 20 6e 72 5f 73 71 5f 79 5f 27 20 | ;....eval(['nr_sq_y.=.nr_sq_y_'. |
| 1f560 | 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 0a 20 20 20 52 5f 6b 6b 20 3d 20 72 6f | num2str(kk).';']);.....R_kk.=.ro |
| 1f580 | 64 72 69 67 75 65 73 28 6f 6d 63 5f 6b 6b 29 3b 0a 20 20 20 0a 20 20 20 59 59 5f 6b 6b 20 3d 20 | drigues(omc_kk);........YY_kk.=. |
| 1f5a0 | 52 5f 6b 6b 20 2a 20 58 58 5f 6b 6b 20 2b 20 54 63 5f 6b 6b 20 2a 20 6f 6e 65 73 28 31 2c 6c 65 | R_kk.*.XX_kk.+.Tc_kk.*.ones(1,le |
| 1f5c0 | 6e 67 74 68 28 58 58 5f 6b 6b 29 29 3b 0a 20 20 20 0a 20 20 20 59 59 6c 5f 6b 6b 20 3d 20 59 59 | ngth(XX_kk));........YYl_kk.=.YY |
| 1f5e0 | 5f 6b 6b 28 3a 2c 31 3a 28 6e 6c 5f 73 71 5f 78 2b 31 29 2a 28 6e 6c 5f 73 71 5f 79 2b 31 29 29 | _kk(:,1:(nl_sq_x+1)*(nl_sq_y+1)) |
| 1f600 | 3b 0a 20 20 20 59 59 72 5f 6b 6b 20 3d 20 59 59 5f 6b 6b 28 3a 2c 28 6e 6c 5f 73 71 5f 78 2b 31 | ;....YYr_kk.=.YY_kk(:,(nl_sq_x+1 |
| 1f620 | 29 2a 28 6e 6c 5f 73 71 5f 79 2b 31 29 2b 31 3a 65 6e 64 29 3b 0a 0a 20 20 20 0a 20 20 20 65 76 | )*(nl_sq_y+1)+1:end);.........ev |
| 1f640 | 61 6c 28 5b 27 59 59 6c 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 59 59 6c 5f 6b | al(['YYl_'.num2str(kk).'.=.YYl_k |
| 1f660 | 6b 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 59 59 72 5f 27 20 6e 75 6d 32 73 74 72 28 6b | k;']);....eval(['YYr_'.num2str(k |
| 1f680 | 6b 29 20 27 20 3d 20 59 59 72 5f 6b 6b 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 75 75 20 3d 20 5b | k).'.=.YYr_kk;']);........uu.=.[ |
| 1f6a0 | 2d 64 58 3b 2d 64 59 3b 30 5d 2f 32 3b 0a 20 20 20 75 75 20 3d 20 52 5f 6b 6b 20 2a 20 75 75 20 | -dX;-dY;0]/2;....uu.=.R_kk.*.uu. |
| 1f6c0 | 2b 20 54 63 5f 6b 6b 3b 20 0a 20 20 20 0a 20 20 20 59 59 6c 78 20 3d 20 7a 65 72 6f 73 28 6e 6c | +.Tc_kk;.........YYlx.=.zeros(nl |
| 1f6e0 | 5f 73 71 5f 78 2b 31 2c 6e 6c 5f 73 71 5f 79 2b 31 29 3b 0a 20 20 20 59 59 6c 79 20 3d 20 7a 65 | _sq_x+1,nl_sq_y+1);....YYly.=.ze |
| 1f700 | 72 6f 73 28 6e 6c 5f 73 71 5f 78 2b 31 2c 6e 6c 5f 73 71 5f 79 2b 31 29 3b 0a 20 20 20 59 59 6c | ros(nl_sq_x+1,nl_sq_y+1);....YYl |
| 1f720 | 7a 20 3d 20 7a 65 72 6f 73 28 6e 6c 5f 73 71 5f 78 2b 31 2c 6e 6c 5f 73 71 5f 79 2b 31 29 3b 0a | z.=.zeros(nl_sq_x+1,nl_sq_y+1);. |
| 1f740 | 20 20 20 0a 20 20 20 59 59 72 78 20 3d 20 7a 65 72 6f 73 28 6e 72 5f 73 71 5f 78 2b 31 2c 6e 72 | .......YYrx.=.zeros(nr_sq_x+1,nr |
| 1f760 | 5f 73 71 5f 79 2b 31 29 3b 0a 20 20 20 59 59 72 79 20 3d 20 7a 65 72 6f 73 28 6e 72 5f 73 71 5f | _sq_y+1);....YYry.=.zeros(nr_sq_ |
| 1f780 | 78 2b 31 2c 6e 72 5f 73 71 5f 79 2b 31 29 3b 0a 20 20 20 59 59 72 7a 20 3d 20 7a 65 72 6f 73 28 | x+1,nr_sq_y+1);....YYrz.=.zeros( |
| 1f7a0 | 6e 72 5f 73 71 5f 78 2b 31 2c 6e 72 5f 73 71 5f 79 2b 31 29 3b 0a 20 20 20 0a 20 20 20 59 59 6c | nr_sq_x+1,nr_sq_y+1);........YYl |
| 1f7c0 | 78 28 3a 29 20 3d 20 59 59 6c 5f 6b 6b 28 31 2c 3a 29 3b 0a 20 20 20 59 59 6c 79 28 3a 29 20 3d | x(:).=.YYl_kk(1,:);....YYly(:).= |
| 1f7e0 | 20 59 59 6c 5f 6b 6b 28 32 2c 3a 29 3b 0a 20 20 20 59 59 6c 7a 28 3a 29 20 3d 20 59 59 6c 5f 6b | .YYl_kk(2,:);....YYlz(:).=.YYl_k |
| 1f800 | 6b 28 33 2c 3a 29 3b 0a 20 20 20 0a 20 20 20 59 59 72 78 28 3a 29 20 3d 20 59 59 72 5f 6b 6b 28 | k(3,:);........YYrx(:).=.YYr_kk( |
| 1f820 | 31 2c 3a 29 3b 0a 20 20 20 59 59 72 79 28 3a 29 20 3d 20 59 59 72 5f 6b 6b 28 32 2c 3a 29 3b 0a | 1,:);....YYry(:).=.YYr_kk(2,:);. |
| 1f840 | 20 20 20 59 59 72 7a 28 3a 29 20 3d 20 59 59 72 5f 6b 6b 28 33 2c 3a 29 3b 0a 20 20 20 0a 20 20 | ...YYrz(:).=.YYr_kk(3,:);....... |
| 1f860 | 20 0a 20 20 20 25 6b 65 79 62 6f 61 72 64 3b 0a 20 20 20 0a 20 20 20 66 69 67 75 72 65 28 34 29 | .....%keyboard;........figure(4) |
| 1f880 | 3b 0a 20 20 20 68 68 68 3d 20 6d 65 73 68 28 59 59 6c 78 2c 59 59 6c 7a 2c 2d 59 59 6c 79 29 3b | ;....hhh=.mesh(YYlx,YYlz,-YYly); |
| 1f8a0 | 0a 20 20 20 73 65 74 28 68 68 68 2c 27 65 64 67 65 63 6f 6c 6f 72 27 2c 63 6f 6c 6f 72 73 28 72 | ....set(hhh,'edgecolor',colors(r |
| 1f8c0 | 65 6d 28 6b 6b 2d 31 2c 36 29 2b 31 29 2c 27 6c 69 6e 65 77 69 64 74 68 27 2c 31 29 3b 20 25 2c | em(kk-1,6)+1),'linewidth',1);.%, |
| 1f8e0 | 27 66 61 63 65 63 6f 6c 6f 72 27 2c 27 6e 6f 6e 65 27 29 3b 0a 20 20 20 25 70 6c 6f 74 33 28 59 | 'facecolor','none');....%plot3(Y |
| 1f900 | 59 5f 6b 6b 28 31 2c 3a 29 2c 59 59 5f 6b 6b 28 33 2c 3a 29 2c 2d 59 59 5f 6b 6b 28 32 2c 3a 29 | Y_kk(1,:),YY_kk(3,:),-YY_kk(2,:) |
| 1f920 | 2c 5b 27 6f 27 20 63 6f 6c 6f 72 73 28 72 65 6d 28 6b 6b 2d 31 2c 36 29 2b 31 29 5d 29 3b 0a 20 | ,['o'.colors(rem(kk-1,6)+1)]);.. |
| 1f940 | 20 20 68 68 68 3d 20 6d 65 73 68 28 59 59 72 78 2c 59 59 72 7a 2c 2d 59 59 72 79 29 3b 0a 20 20 | ..hhh=.mesh(YYrx,YYrz,-YYry);... |
| 1f960 | 20 73 65 74 28 68 68 68 2c 27 65 64 67 65 63 6f 6c 6f 72 27 2c 63 6f 6c 6f 72 73 28 72 65 6d 28 | .set(hhh,'edgecolor',colors(rem( |
| 1f980 | 6b 6b 2d 31 2c 36 29 2b 31 29 2c 27 6c 69 6e 65 77 69 64 74 68 27 2c 31 29 3b 0a 20 20 20 74 65 | kk-1,6)+1),'linewidth',1);....te |
| 1f9a0 | 78 74 28 75 75 28 31 29 2c 75 75 28 33 29 2c 2d 75 75 28 32 29 2c 6e 75 6d 32 73 74 72 28 6b 6b | xt(uu(1),uu(3),-uu(2),num2str(kk |
| 1f9c0 | 29 2c 27 66 6f 6e 74 73 69 7a 65 27 2c 31 34 2c 27 63 6f 6c 6f 72 27 2c 63 6f 6c 6f 72 73 28 72 | ),'fontsize',14,'color',colors(r |
| 1f9e0 | 65 6d 28 6b 6b 2d 31 2c 36 29 2b 31 29 29 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 66 69 67 75 72 65 | em(kk-1,6)+1));.....end;..figure |
| 1fa00 | 28 34 29 3b 72 6f 74 61 74 65 33 64 20 6f 6e 3b 0a 61 78 69 73 28 27 65 71 75 61 6c 27 29 3b 0a | (4);rotate3d.on;.axis('equal');. |
| 1fa20 | 74 69 74 6c 65 28 27 45 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 27 29 3b 0a 25 | title('Extrinsic.parameters');.% |
| 1fa40 | 76 69 65 77 28 36 30 2c 33 30 29 3b 0a 76 69 65 77 28 61 2c 62 29 3b 0a 68 6f 6c 64 20 6f 66 66 | view(60,30);.view(a,b);.hold.off |
| 1fa60 | 3b 0a 0a 0a 0a 25 20 52 65 70 72 6f 6a 65 63 74 20 74 68 65 20 70 61 74 74 65 72 6e 73 20 6f 6e | ;....%.Reproject.the.patterns.on |
| 1fa80 | 20 74 68 65 20 69 6d 61 67 65 73 2c 20 61 6e 64 20 63 6f 6d 70 75 74 65 20 74 68 65 20 70 69 78 | .the.images,.and.compute.the.pix |
| 1faa0 | 65 6c 20 65 72 72 6f 72 73 3a 0a 0a 25 20 52 65 6c 6f 61 64 20 74 68 65 20 69 6d 61 67 65 73 20 | el.errors:..%.Reload.the.images. |
| 1fac0 | 69 66 20 6e 65 63 65 73 73 61 72 79 0a 0a 69 66 20 7e 65 78 69 73 74 28 27 49 5f 31 27 29 2c 0a | if.necessary..if.~exist('I_1'),. |
| 1fae0 | 20 20 20 69 6d 61 5f 72 65 61 64 5f 63 61 6c 69 62 3b 0a 20 20 20 69 66 20 6e 6f 5f 69 6d 61 67 | ...ima_read_calib;....if.no_imag |
| 1fb00 | 65 5f 66 69 6c 65 2c 0a 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0a 20 20 20 65 6e 64 3b 0a 65 6e | e_file,.......return;....end;.en |
| 1fb20 | 64 3b 0a 0a 0a 65 78 20 3d 20 5b 5d 3b 20 25 20 47 6c 6f 62 61 6c 20 65 72 72 6f 72 20 76 65 63 | d;...ex.=.[];.%.Global.error.vec |
| 1fb40 | 74 6f 72 0a 78 20 3d 20 5b 5d 3b 20 25 20 44 65 74 65 63 74 65 64 20 63 6f 72 6e 65 72 73 20 6f | tor.x.=.[];.%.Detected.corners.o |
| 1fb60 | 6e 20 74 68 65 20 69 6d 61 67 65 20 70 6c 61 6e 65 0a 79 20 3d 20 5b 5d 3b 20 25 20 52 65 70 72 | n.the.image.plane.y.=.[];.%.Repr |
| 1fb80 | 6f 6a 65 63 74 65 64 20 70 6f 69 6e 74 73 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 | ojected.points..for.kk.=.1:n_ima |
| 1fba0 | 2c 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 6f 6d 63 6b 6b 20 3d 20 6f 6d 63 5f 27 20 6e 75 | ,........eval(['omckk.=.omc_'.nu |
| 1fbc0 | 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 54 63 6b 6b 20 | m2str(kk).';']);....eval(['Tckk. |
| 1fbe0 | 3d 20 54 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 | =.Tc_'.num2str(kk).';']);....... |
| 1fc00 | 20 52 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 6b 6b 29 3b 0a 20 20 20 0a 20 20 20 | .Rkk.=.rodrigues(omckk);........ |
| 1fc20 | 65 76 61 6c 28 5b 27 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 20 3d 20 70 72 6f 6a | eval(['y_'.num2str(kk).'..=.proj |
| 1fc40 | 65 63 74 32 5f 6f 75 6c 75 28 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 2c 52 6b 6b 2c | ect2_oulu(X_'.num2str(kk).',Rkk, |
| 1fc60 | 54 63 6b 6b 2c 66 63 2c 63 63 2c 6b 63 29 3b 27 5d 29 3b 0a 0a 20 20 20 65 76 61 6c 28 5b 27 65 | Tckk,fc,cc,kc);']);.....eval(['e |
| 1fc80 | 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 | x_'.num2str(kk).'.=.x_'.num2str( |
| 1fca0 | 6b 6b 29 20 27 20 2d 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 | kk).'.-y_'.num2str(kk).';']);... |
| 1fcc0 | 20 0a 20 20 20 65 76 61 6c 28 5b 27 78 5f 6b 6b 20 3d 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b | .....eval(['x_kk.=.x_'.num2str(k |
| 1fce0 | 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 66 69 67 75 72 65 28 34 2b 6b 6b 29 3b 0a 20 | k).';']);........figure(4+kk);.. |
| 1fd00 | 20 20 65 76 61 6c 28 5b 27 49 20 3d 20 49 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 | ..eval(['I.=.I_'.num2str(kk).';' |
| 1fd20 | 5d 29 3b 0a 20 20 20 69 6d 61 67 65 28 49 29 3b 20 68 6f 6c 64 20 6f 6e 3b 0a 20 20 20 63 6f 6c | ]);....image(I);.hold.on;....col |
| 1fd40 | 6f 72 6d 61 70 28 67 72 61 79 28 32 35 36 29 29 3b 0a 20 20 20 74 69 74 6c 65 28 5b 27 49 6d 61 | ormap(gray(256));....title(['Ima |
| 1fd60 | 67 65 20 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 2d 20 49 6d 61 67 65 20 70 6f 69 6e 74 | ge.'.num2str(kk).'.-.Image.point |
| 1fd80 | 73 20 28 2b 29 20 61 6e 64 20 72 65 70 72 6f 6a 65 63 74 65 64 20 67 72 69 64 20 70 6f 69 6e 74 | s.(+).and.reprojected.grid.point |
| 1fda0 | 73 20 28 6f 29 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 70 6c 6f 74 28 78 5f 27 20 6e 75 6d | s.(o)']);....eval(['plot(x_'.num |
| 1fdc0 | 32 73 74 72 28 6b 6b 29 20 27 28 31 2c 3a 29 2b 31 2c 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b | 2str(kk).'(1,:)+1,x_'.num2str(kk |
| 1fde0 | 29 20 27 28 32 2c 3a 29 2b 31 2c 27 27 72 2b 27 27 29 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 | ).'(2,:)+1,''r+'');']);....eval( |
| 1fe00 | 5b 27 70 6c 6f 74 28 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 28 31 2c 3a 29 2b 31 2c | ['plot(y_'.num2str(kk).'(1,:)+1, |
| 1fe20 | 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 28 32 2c 3a 29 2b 31 2c 27 27 27 20 63 6f 6c | y_'.num2str(kk).'(2,:)+1,'''.col |
| 1fe40 | 6f 72 73 28 72 65 6d 28 6b 6b 2d 31 2c 36 29 2b 31 29 20 27 6f 27 27 29 3b 27 5d 29 3b 0a 20 20 | ors(rem(kk-1,6)+1).'o'');']);... |
| 1fe60 | 20 7a 6f 6f 6d 20 6f 6e 3b 0a 20 20 20 68 6f 6c 64 20 6f 66 66 3b 0a 20 20 20 0a 20 20 20 0a 20 | .zoom.on;....hold.off;.......... |
| 1fe80 | 20 20 65 76 61 6c 28 5b 27 65 78 20 3d 20 5b 65 78 20 65 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b | ..eval(['ex.=.[ex.ex_'.num2str(k |
| 1fea0 | 6b 29 20 27 5d 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 78 20 3d 20 5b 78 20 78 5f 27 20 | k).'];']);....eval(['x.=.[x.x_'. |
| 1fec0 | 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 5d 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 79 20 | num2str(kk).'];']);....eval(['y. |
| 1fee0 | 3d 20 5b 79 20 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 5d 3b 27 5d 29 3b 0a 20 20 20 | =.[y.y_'.num2str(kk).'];']);.... |
| 1ff00 | 0a 65 6e 64 3b 0a 0a 0a 66 69 67 75 72 65 28 35 2b 6e 5f 69 6d 61 29 3b 0a 66 6f 72 20 6b 6b 20 | .end;...figure(5+n_ima);.for.kk. |
| 1ff20 | 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 65 76 61 6c 28 5b 27 70 6c 6f 74 28 65 78 5f 27 20 6e | =.1:n_ima,....eval(['plot(ex_'.n |
| 1ff40 | 75 6d 32 73 74 72 28 6b 6b 29 20 27 28 31 2c 3a 29 2c 65 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b | um2str(kk).'(1,:),ex_'.num2str(k |
| 1ff60 | 6b 29 20 27 28 32 2c 3a 29 2c 27 27 27 20 63 6f 6c 6f 72 73 28 72 65 6d 28 6b 6b 2d 31 2c 36 29 | k).'(2,:),'''.colors(rem(kk-1,6) |
| 1ff80 | 2b 31 29 20 27 2b 27 27 29 3b 27 5d 29 3b 0a 20 20 20 68 6f 6c 64 20 6f 6e 3b 0a 65 6e 64 3b 0a | +1).'+'');']);....hold.on;.end;. |
| 1ffa0 | 68 6f 6c 64 20 6f 66 66 3b 0a 61 78 69 73 28 27 65 71 75 61 6c 27 29 3b 0a 74 69 74 6c 65 28 27 | hold.off;.axis('equal');.title(' |
| 1ffc0 | 52 65 70 72 6f 6a 65 63 74 69 6f 6e 20 65 72 72 6f 72 20 28 69 6e 20 70 69 78 65 6c 29 27 29 3b | Reprojection.error.(in.pixel)'); |
| 1ffe0 | 0a 78 6c 61 62 65 6c 28 27 78 27 29 3b 0a 79 6c 61 62 65 6c 28 27 79 27 29 3b 0a 0a 65 72 72 5f | .xlabel('x');.ylabel('y');..err_ |
| 20000 | 73 74 64 20 3d 20 73 74 64 28 65 78 27 29 27 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 50 69 78 | std.=.std(ex')';..fprintf(1,'Pix |
| 20020 | 65 6c 20 65 72 72 6f 72 3a 20 20 20 20 20 20 65 72 72 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 | el.error:......err.=.[.%3.5f...% |
| 20040 | 33 2e 35 66 5d 5c 6e 5c 6e 27 2c 65 72 72 5f 73 74 64 29 3b 20 0a 63 68 20 69 6d 61 67 65 3a 0a | 3.5f]\n\n',err_std);..ch.image:. |
| 20060 | 0a 63 6f 6c 6f 72 73 20 3d 20 27 62 72 67 6b 63 6d 27 3b 0a 0a 0a 25 25 25 20 53 68 6f 77 20 74 | .colors.=.'brgkcm';...%%%.Show.t |
| 20080 | 68 65 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 0a 0a 49 50 20 3d 20 38 2a | he.extrinsic.parameters..IP.=.8* |
| 200a0 | 64 58 2a 28 5b 30 20 6e 78 2d 31 20 6e 78 2d 31 20 30 20 30 20 3b 20 30 20 30 20 6e 79 2d 31 20 | dX*([0.nx-1.nx-1.0.0.;.0.0.ny-1. |
| 200c0 | 6e 79 2d 31 20 30 3b 31 20 31 20 31 20 31 20 31 5d 20 2d 20 5b 63 63 3b 30 5d 2a 6f 6e 65 73 28 | ny-1.0;1.1.1.1.1].-.[cc;0]*ones( |
| 200e0 | 31 2c 35 29 29 20 2e 2f 20 28 5b 66 63 3b 31 5d 2a 6f 6e 65 73 28 31 2c 35 29 29 3b 0a 0a 0a 66 | 1,5))../.([fc;1]*ones(1,5));...f |
| 20100 | 69 67 75 72 65 28 34 29 3b 0a 5b 61 2c 62 5d 20 3d 20 76 69 65 77 3b 0a 0a 66 69 67 75 72 65 28 | igure(4);.[a,b].=.view;..figure( |
| 20120 | 34 29 3b 0a 70 6c 6f 74 33 28 35 2a 5b 30 20 64 58 20 30 20 30 20 30 20 30 20 5d 2c 35 2a 5b 30 | 4);.plot3(5*[0.dX.0.0.0.0.],5*[0 |
| 20140 | 20 30 20 30 20 30 20 30 20 64 58 5d 2c 2d 35 2a 5b 30 20 30 20 30 20 64 58 20 30 20 30 20 5d 2c | .0.0.0.0.dX],-5*[0.0.0.dX.0.0.], |
| 20160 | 27 62 2d 27 2c 27 6c 69 6e 65 77 69 64 74 68 27 2c 32 27 29 3b 0a 68 6f 6c 64 20 6f 6e 3b 0a 70 | 'b-','linewidth',2');.hold.on;.p |
| 20180 | 6c 6f 74 33 28 49 50 28 31 2c 3a 29 2c 49 50 28 33 2c 3a 29 2c 2d 49 50 28 32 2c 3a 29 2c 27 72 | lot3(IP(1,:),IP(3,:),-IP(2,:),'r |
| 201a0 | 2d 27 2c 27 6c 69 6e 65 77 69 64 74 68 27 2c 32 29 3b 0a 74 65 78 74 28 36 2a 64 58 2c 30 2c 30 | -','linewidth',2);.text(6*dX,0,0 |
| 201c0 | 2c 27 58 5f 63 27 29 3b 0a 74 65 78 74 28 2d 64 58 2c 35 2a 64 58 2c 30 2c 27 5a 5f 63 27 29 3b | ,'X_c');.text(-dX,5*dX,0,'Z_c'); |
| 201e0 | 0a 74 65 78 74 28 30 2c 30 2c 2d 36 2a 64 58 2c 27 59 5f 63 27 29 3b 0a 74 65 78 74 28 2d 64 58 | .text(0,0,-6*dX,'Y_c');.text(-dX |
| 20200 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 69 6d 61 5f 72 65 61 64 5f 63 61 6c 69 62 2e 6d 00 00 | TOOLBOX_calib/ima_read_calib.m.. |
| 20220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20260 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 20280 | 20 20 20 33 34 31 30 20 20 37 30 32 34 30 33 37 33 33 32 20 20 31 31 34 36 35 00 20 00 00 00 00 | ...3410..7024037332..11465...... |
| 202a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 202c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 202e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 203a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 203c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 203e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20400 | 0a 69 66 20 7e 65 78 69 73 74 28 27 63 61 6c 69 62 5f 6e 61 6d 65 27 29 2c 0a 20 20 20 64 61 74 | .if.~exist('calib_name'),....dat |
| 20420 | 61 5f 63 61 6c 69 62 3b 0a 65 6e 64 3b 0a 0a 63 68 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 | a_calib;.end;..check_active_imag |
| 20440 | 65 73 3b 0a 0a 69 6d 61 67 65 73 5f 72 65 61 64 20 3d 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 | es;..images_read.=.active_images |
| 20460 | 3b 0a 0a 69 6d 61 67 65 5f 6e 75 6d 62 65 72 73 20 3d 20 66 69 72 73 74 5f 6e 75 6d 3a 6e 5f 69 | ;..image_numbers.=.first_num:n_i |
| 20480 | 6d 61 2d 31 2b 66 69 72 73 74 5f 6e 75 6d 3b 0a 0a 6e 6f 5f 69 6d 61 67 65 5f 66 69 6c 65 20 3d | ma-1+first_num;..no_image_file.= |
| 204a0 | 20 30 3b 0a 0a 69 20 3d 20 31 3b 0a 0a 77 68 69 6c 65 20 28 69 20 3c 3d 20 6e 5f 69 6d 61 29 2c | .0;..i.=.1;..while.(i.<=.n_ima), |
| 204c0 | 20 25 20 26 20 28 7e 6e 6f 5f 69 6d 61 67 65 5f 66 69 6c 65 29 2c 0a 20 20 20 0a 20 20 20 69 66 | .%.&.(~no_image_file),........if |
| 204e0 | 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 69 29 2c 0a 20 20 20 0a 20 20 20 09 25 66 70 72 69 | .active_images(i),.........%fpri |
| 20500 | 6e 74 66 28 31 2c 27 4c 6f 61 64 69 6e 67 20 69 6d 61 67 65 20 25 64 2e 2e 2e 5c 6e 27 2c 69 29 | ntf(1,'Loading.image.%d...\n',i) |
| 20520 | 3b 0a 20 20 20 0a 20 20 20 09 69 66 20 7e 74 79 70 65 5f 6e 75 6d 62 65 72 69 6e 67 2c 20 20 20 | ;.........if.~type_numbering,... |
| 20540 | 0a 20 20 20 20 20 20 09 6e 75 6d 62 65 72 5f 65 78 74 20 3d 20 20 6e 75 6d 32 73 74 72 28 69 6d | ........number_ext.=..num2str(im |
| 20560 | 61 67 65 5f 6e 75 6d 62 65 72 73 28 69 29 29 3b 0a 20 20 20 09 65 6c 73 65 0a 20 20 20 20 20 20 | age_numbers(i));.....else....... |
| 20580 | 09 6e 75 6d 62 65 72 5f 65 78 74 20 3d 20 73 70 72 69 6e 74 66 28 5b 27 25 2e 27 20 6e 75 6d 32 | .number_ext.=.sprintf(['%.'.num2 |
| 205a0 | 73 74 72 28 4e 5f 73 6c 6f 74 73 29 20 27 64 27 5d 2c 69 6d 61 67 65 5f 6e 75 6d 62 65 72 73 28 | str(N_slots).'d'],image_numbers( |
| 205c0 | 69 29 29 3b 0a 20 20 20 09 65 6e 64 3b 0a 20 20 20 09 0a 20 20 20 20 20 20 69 6d 61 5f 6e 61 6d | i));.....end;............ima_nam |
| 205e0 | 65 20 3d 20 5b 63 61 6c 69 62 5f 6e 61 6d 65 20 20 6e 75 6d 62 65 72 5f 65 78 74 20 27 2e 27 20 | e.=.[calib_name..number_ext.'.'. |
| 20600 | 66 6f 72 6d 61 74 5f 69 6d 61 67 65 5d 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 69 66 20 69 | format_image];..............if.i |
| 20620 | 20 3d 3d 20 69 6e 64 5f 61 63 74 69 76 65 28 31 29 2c 0a 20 20 20 20 20 20 20 20 20 66 70 72 69 | .==.ind_active(1),..........fpri |
| 20640 | 6e 74 66 28 31 2c 27 4c 6f 61 64 69 6e 67 20 69 6d 61 67 65 20 27 29 3b 0a 20 20 20 20 20 20 65 | ntf(1,'Loading.image.');.......e |
| 20660 | 6e 64 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 69 66 20 65 78 69 73 74 28 69 6d 61 5f 6e 61 | nd;..............if.exist(ima_na |
| 20680 | 6d 65 29 2c 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 | me),....................fprintf( |
| 206a0 | 31 2c 27 25 64 2e 2e 2e 27 2c 69 29 3b 0a 20 20 20 20 20 20 09 0a 20 20 20 20 20 20 09 69 66 20 | 1,'%d...',i);................if. |
| 206c0 | 66 6f 72 6d 61 74 5f 69 6d 61 67 65 28 31 29 20 3d 3d 20 27 70 27 2c 0a 20 20 20 20 20 20 20 20 | format_image(1).==.'p',......... |
| 206e0 | 20 09 49 69 20 3d 20 64 6f 75 62 6c 65 28 70 67 6d 72 65 61 64 28 69 6d 61 5f 6e 61 6d 65 29 29 | ..Ii.=.double(pgmread(ima_name)) |
| 20700 | 3b 0a 20 20 20 20 20 20 09 65 6c 73 65 0a 20 20 20 20 20 20 09 09 69 66 20 66 6f 72 6d 61 74 5f | ;........else.........if.format_ |
| 20720 | 69 6d 61 67 65 28 31 29 20 3d 3d 20 27 72 27 2c 0a 20 20 20 20 20 20 20 20 20 09 09 49 69 20 3d | image(1).==.'r',............Ii.= |
| 20740 | 20 72 65 61 64 72 61 73 28 69 6d 61 5f 6e 61 6d 65 29 3b 0a 20 20 20 09 09 09 65 6c 73 65 0a 20 | .readras(ima_name);.......else.. |
| 20760 | 20 20 20 20 20 09 09 09 49 69 20 3d 20 64 6f 75 62 6c 65 28 69 6d 72 65 61 64 28 69 6d 61 5f 6e | ........Ii.=.double(imread(ima_n |
| 20780 | 61 6d 65 29 29 3b 0a 20 20 20 09 09 09 65 6e 64 3b 0a 20 20 20 20 20 20 09 65 6e 64 3b 0a 20 20 | ame));.......end;........end;... |
| 207a0 | 20 20 20 20 09 0a 20 20 20 09 09 69 66 20 73 69 7a 65 28 49 69 2c 33 29 3e 31 2c 0a 20 20 20 20 | ...........if.size(Ii,3)>1,..... |
| 207c0 | 20 20 09 09 49 69 20 3d 20 49 69 28 3a 2c 3a 2c 32 29 3b 0a 20 20 20 09 09 65 6e 64 3b 0a 20 20 | ....Ii.=.Ii(:,:,2);......end;... |
| 207e0 | 20 0a 20 20 20 09 09 65 76 61 6c 28 5b 27 49 5f 27 20 6e 75 6d 32 73 74 72 28 69 29 20 27 20 3d | .......eval(['I_'.num2str(i).'.= |
| 20800 | 20 49 69 3b 27 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 65 6c 73 65 0a 20 20 | .Ii;']);.................else... |
| 20820 | 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 25 64 2e 2e | .................fprintf(1,'%d.. |
| 20840 | 2e 27 2c 69 29 3b 0a 0a 09 09 09 69 6d 61 67 65 73 5f 72 65 61 64 28 69 29 20 3d 20 30 3b 0a 0a | .',i);.....images_read(i).=.0;.. |
| 20860 | 09 09 09 6e 6f 5f 69 6d 61 67 65 5f 66 69 6c 65 20 3d 20 31 3b 0a 20 20 20 20 20 20 20 20 20 0a | ...no_image_file.=.1;........... |
| 20880 | 09 09 65 6e 64 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 69 20 3d | ..end;...........end;........i.= |
| 208a0 | 20 69 2b 31 3b 20 20 20 0a 20 20 20 0a 65 6e 64 3b 0a 0a 0a 69 66 20 6e 6f 5f 69 6d 61 67 65 5f | .i+1;........end;...if.no_image_ |
| 208c0 | 66 69 6c 65 2c 0a 20 20 20 0a 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 57 41 52 4e 49 4e | file,........fprintf(1,'\nWARNIN |
| 208e0 | 47 21 20 43 61 6e 6e 6f 74 20 6c 6f 61 64 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 69 6d 61 67 65 | G!.Cannot.load.calibration.image |
| 20900 | 73 5c 6e 27 29 3b 0a 20 20 20 0a 65 6c 73 65 0a 20 20 20 0a 20 20 20 66 70 72 69 6e 74 66 28 31 | s\n');.....else........fprintf(1 |
| 20920 | 2c 27 5c 6e 27 29 3b 0a 0a 20 20 20 69 66 20 73 69 7a 65 28 49 5f 31 2c 31 29 7e 3d 34 38 30 2c | ,'\n');.....if.size(I_1,1)~=480, |
| 20940 | 0a 20 20 20 09 73 6d 61 6c 6c 5f 63 61 6c 69 62 5f 69 6d 61 67 65 20 3d 20 31 3b 0a 09 65 6c 73 | .....small_calib_image.=.1;..els |
| 20960 | 65 0a 20 20 20 09 73 6d 61 6c 6c 5f 63 61 6c 69 62 5f 69 6d 61 67 65 20 3d 20 30 3b 0a 09 65 6e | e.....small_calib_image.=.0;..en |
| 20980 | 64 3b 0a 20 20 20 0a 20 20 20 5b 48 63 61 6c 2c 57 63 61 6c 5d 20 3d 20 73 69 7a 65 28 49 5f 31 | d;........[Hcal,Wcal].=.size(I_1 |
| 209a0 | 29 3b 20 09 25 20 73 69 7a 65 20 6f 66 20 74 68 65 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 69 6d | );..%.size.of.the.calibration.im |
| 209c0 | 61 67 65 0a 20 20 20 0a 20 20 20 5b 6e 79 2c 6e 78 5d 20 3d 20 73 69 7a 65 28 49 5f 31 29 3b 0a | age........[ny,nx].=.size(I_1);. |
| 209e0 | 20 20 20 0a 20 20 20 63 6c 69 63 6b 6e 61 6d 65 20 3d 20 5b 5d 3b 0a 20 20 20 0a 20 20 20 6d 61 | .......clickname.=.[];........ma |
| 20a00 | 70 20 3d 20 67 72 61 79 28 32 35 36 29 3b 0a 20 20 20 0a 09 25 73 74 72 69 6e 67 5f 73 61 76 65 | p.=.gray(256);......%string_save |
| 20a20 | 20 3d 20 27 73 61 76 65 20 63 61 6c 69 62 5f 64 61 74 61 20 6e 5f 69 6d 61 20 74 79 70 65 5f 6e | .=.'save.calib_data.n_ima.type_n |
| 20a40 | 75 6d 62 65 72 69 6e 67 20 4e 5f 73 6c 6f 74 73 20 69 6d 61 67 65 5f 6e 75 6d 62 65 72 73 20 66 | umbering.N_slots.image_numbers.f |
| 20a60 | 6f 72 6d 61 74 5f 69 6d 61 67 65 20 63 61 6c 69 62 5f 6e 61 6d 65 20 48 63 61 6c 20 57 63 61 6c | ormat_image.calib_name.Hcal.Wcal |
| 20a80 | 20 6e 78 20 6e 79 20 6d 61 70 20 73 6d 61 6c 6c 5f 63 61 6c 69 62 5f 69 6d 61 67 65 27 3b 0a 0a | .nx.ny.map.small_calib_image';.. |
| 20aa0 | 09 25 65 76 61 6c 28 73 74 72 69 6e 67 5f 73 61 76 65 29 3b 0a 0a 09 64 69 73 70 28 27 64 6f 6e | .%eval(string_save);...disp('don |
| 20ac0 | 65 27 29 3b 0a 09 25 63 6c 69 63 6b 5f 63 61 6c 69 62 3b 0a 0a 65 6e 64 3b 0a 0a 69 66 20 7e 65 | e');..%click_calib;..end;..if.~e |
| 20ae0 | 78 69 73 74 28 27 6d 61 70 27 29 2c 20 6d 61 70 20 3d 20 67 72 61 79 28 32 35 36 29 3b 20 65 6e | xist('map'),.map.=.gray(256);.en |
| 20b00 | 64 3b 0a 0a 0a 0a 0a 0a 29 2c 59 59 5f 6b 6b 28 33 2c 3a 29 2c 2d 59 59 5f 6b 6b 28 32 2c 3a 29 | d;......),YY_kk(3,:),-YY_kk(2,:) |
| 20b20 | 2c 5b 27 6f 27 20 63 6f 6c 6f 72 73 28 72 65 6d 28 6b 6b 2d 31 2c 36 29 2b 31 29 5d 29 3b 0a 20 | ,['o'.colors(rem(kk-1,6)+1)]);.. |
| 20b40 | 20 20 68 68 68 3d 20 6d 65 73 68 28 59 59 72 78 2c 59 59 72 7a 2c 2d 59 59 72 79 29 3b 0a 20 20 | ..hhh=.mesh(YYrx,YYrz,-YYry);... |
| 20b60 | 20 73 65 74 28 68 68 68 2c 27 65 64 67 65 63 6f 6c 6f 72 27 2c 63 6f 6c 6f 72 73 28 72 65 6d 28 | .set(hhh,'edgecolor',colors(rem( |
| 20b80 | 6b 6b 2d 31 2c 36 29 2b 31 29 2c 27 6c 69 6e 65 77 69 64 74 68 27 2c 31 29 3b 0a 20 20 20 74 65 | kk-1,6)+1),'linewidth',1);....te |
| 20ba0 | 78 74 28 75 75 28 31 29 2c 75 75 28 33 29 2c 2d 75 75 28 32 29 2c 6e 75 6d 32 73 74 72 28 6b 6b | xt(uu(1),uu(3),-uu(2),num2str(kk |
| 20bc0 | 29 2c 27 66 6f 6e 74 73 69 7a 65 27 2c 31 34 2c 27 63 6f 6c 6f 72 27 2c 63 6f 6c 6f 72 73 28 72 | ),'fontsize',14,'color',colors(r |
| 20be0 | 65 6d 28 6b 6b 2d 31 2c 36 29 2b 31 29 29 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 66 69 67 75 72 65 | em(kk-1,6)+1));.....end;..figure |
| 20c00 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 69 6e 69 74 5f 63 61 6c 69 62 5f 70 61 72 61 6d 2e 6d | TOOLBOX_calib/init_calib_param.m |
| 20c20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20c40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20c60 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 20c80 | 20 20 31 32 37 36 31 20 20 37 30 32 34 30 33 37 33 33 33 20 20 31 32 31 30 31 00 20 00 00 00 00 | ..12761..7024037333..12101...... |
| 20ca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20cc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20ce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20d00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20d20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20d40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20d60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20d80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20e00 | 25 69 6e 69 74 5f 63 61 6c 69 62 5f 70 61 72 61 6d 0a 25 0a 25 49 6e 69 74 69 61 6c 69 7a 61 74 | %init_calib_param.%.%Initializat |
| 20e20 | 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e 74 72 69 6e 73 69 63 20 61 6e 64 20 65 78 74 72 69 6e 73 | ion.of.the.intrinsic.and.extrins |
| 20e40 | 69 63 20 70 61 72 61 6d 65 74 65 72 73 2e 0a 25 52 75 6e 73 20 61 73 20 61 20 73 63 72 69 70 74 | ic.parameters..%Runs.as.a.script |
| 20e60 | 2e 0a 25 0a 25 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6f 62 73 6f 6c 65 74 65 20 77 | ..%.%This.function.is.obsolete.w |
| 20e80 | 69 74 68 20 69 6e 69 74 5f 69 6e 74 72 69 6e 73 69 63 5f 70 61 72 61 6d 20 63 61 6c 6c 65 64 20 | ith.init_intrinsic_param.called. |
| 20ea0 | 66 72 6f 6d 20 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 0a 25 0a 25 49 4e 50 55 54 3a 20 78 5f | from.go_calib_optim.%.%INPUT:.x_ |
| 20ec0 | 31 2c 78 5f 32 2c 78 5f 33 2c 2e 2e 2e 3a 20 46 65 61 74 75 72 65 20 6c 6f 63 61 74 69 6f 6e 73 | 1,x_2,x_3,...:.Feature.locations |
| 20ee0 | 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 73 0a 25 20 20 20 20 20 20 20 58 5f 31 2c 58 5f 32 2c 58 | .on.the.images.%.......X_1,X_2,X |
| 20f00 | 5f 33 2c 2e 2e 2e 3a 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 67 72 69 64 20 63 6f 6f 72 64 | _3,...:.Corresponding.grid.coord |
| 20f20 | 69 6e 61 74 65 73 0a 25 0a 25 4f 55 54 50 55 54 3a 20 66 63 3a 20 43 61 6d 65 72 61 20 66 6f 63 | inates.%.%OUTPUT:.fc:.Camera.foc |
| 20f40 | 61 6c 20 6c 65 6e 67 74 68 0a 25 20 20 20 20 20 20 20 20 63 63 3a 20 50 72 69 6e 63 69 70 61 6c | al.length.%........cc:.Principal |
| 20f60 | 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 0a 25 09 20 20 20 20 20 20 6b 63 3a 20 44 | .point.coordinates.%.......kc:.D |
| 20f80 | 69 73 74 6f 72 74 69 6f 6e 20 63 6f 65 66 66 69 63 69 65 6e 74 73 0a 25 20 20 20 20 20 20 20 20 | istortion.coefficients.%........ |
| 20fa0 | 4b 4b 3a 20 54 68 65 20 63 61 6d 65 72 61 20 6d 61 74 72 69 78 20 28 63 6f 6e 74 61 69 6e 69 6e | KK:.The.camera.matrix.(containin |
| 20fc0 | 67 20 66 63 20 61 6e 64 20 63 63 29 0a 25 20 20 20 20 20 20 20 20 6f 6d 63 5f 31 2c 6f 6d 63 5f | g.fc.and.cc).%........omc_1,omc_ |
| 20fe0 | 32 2c 6f 6d 63 5f 33 2c 2e 2e 2e 3a 20 33 44 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 73 | 2,omc_3,...:.3D.rotation.vectors |
| 21000 | 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 67 72 69 64 20 70 6f 73 69 74 69 6f 6e 73 20 | .attached.to.the.grid.positions. |
| 21020 | 69 6e 20 73 70 61 63 65 0a 25 20 20 20 20 20 20 20 20 54 63 5f 31 2c 54 63 5f 32 2c 54 63 5f 33 | in.space.%........Tc_1,Tc_2,Tc_3 |
| 21040 | 2c 2e 2e 2e 3a 20 33 44 20 74 72 61 6e 73 6c 61 74 69 6f 6e 20 76 65 63 74 6f 72 73 20 61 74 74 | ,...:.3D.translation.vectors.att |
| 21060 | 61 63 68 65 64 20 74 6f 20 74 68 65 20 67 72 69 64 20 70 6f 73 69 74 69 6f 6e 73 20 69 6e 20 73 | ached.to.the.grid.positions.in.s |
| 21080 | 70 61 63 65 0a 25 20 20 20 20 20 20 20 20 52 63 5f 31 2c 52 63 5f 32 2c 52 63 5f 33 2c 2e 2e 2e | pace.%........Rc_1,Rc_2,Rc_3,... |
| 210a0 | 3a 20 33 44 20 72 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 63 65 73 20 63 6f 72 72 65 73 70 6f 6e | :.3D.rotation.matrices.correspon |
| 210c0 | 64 69 6e 67 20 74 6f 20 74 68 65 20 6f 6d 63 20 76 65 63 74 6f 72 73 0a 25 0a 25 4d 65 74 68 6f | ding.to.the.omc.vectors.%.%Metho |
| 210e0 | 64 3a 20 43 6f 6d 70 75 74 65 20 74 68 65 20 70 6c 61 6e 61 72 20 68 6f 6d 6f 67 72 61 70 68 69 | d:.Compute.the.planar.homographi |
| 21100 | 65 73 20 48 5f 31 2c 20 48 5f 32 2c 20 48 5f 33 2c 20 2e 2e 2e 20 61 6e 64 20 63 6f 6d 70 75 74 | es.H_1,.H_2,.H_3,.....and.comput |
| 21120 | 65 73 0a 25 20 20 20 20 20 20 20 20 74 68 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 20 66 63 20 | es.%........the.focal.length.fc. |
| 21140 | 66 72 6f 6d 20 6f 72 74 68 6f 67 6f 6e 61 6c 20 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 73 | from.orthogonal.vanishing.points |
| 21160 | 20 63 6f 6e 73 74 72 61 69 6e 74 2e 0a 25 20 20 20 20 20 20 20 20 54 68 65 20 70 72 69 6e 63 69 | .constraint..%........The.princi |
| 21180 | 70 61 6c 20 70 6f 69 6e 74 20 63 63 20 69 73 20 61 73 73 75 6d 65 64 20 61 74 20 74 68 65 20 63 | pal.point.cc.is.assumed.at.the.c |
| 211a0 | 65 6e 74 65 72 20 6f 66 20 74 68 65 20 69 6d 61 67 65 2e 0a 25 20 20 20 20 20 20 20 20 41 73 73 | enter.of.the.image..%........Ass |
| 211c0 | 75 6d 65 73 20 6e 6f 20 69 6d 61 67 65 20 64 69 73 74 6f 72 74 69 6f 6e 20 28 6b 63 20 3d 20 5b | umes.no.image.distortion.(kc.=.[ |
| 211e0 | 30 3b 30 3b 30 3b 30 5d 29 0a 25 20 20 20 20 20 20 20 20 4f 6e 63 65 20 74 68 65 20 69 6e 74 72 | 0;0;0;0]).%........Once.the.intr |
| 21200 | 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 61 72 65 20 65 73 74 69 6d 61 74 65 64 2c 20 | insic.parameters.are.estimated,. |
| 21220 | 74 68 65 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 0a 25 20 20 20 20 20 20 | the.extrinsic.parameters.%...... |
| 21240 | 20 20 61 72 65 20 63 6f 6d 70 75 74 65 64 20 66 6f 72 20 65 61 63 68 20 69 6d 61 67 65 2e 0a 25 | ..are.computed.for.each.image..% |
| 21260 | 0a 25 4e 6f 74 65 3a 20 54 68 65 20 72 6f 77 20 76 65 63 74 6f 72 20 61 63 74 69 76 65 5f 69 6d | .%Note:.The.row.vector.active_im |
| 21280 | 61 67 65 73 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 7a 65 72 6f 73 20 61 6e 64 20 6f 6e 65 73 2e | ages.consists.of.zeros.and.ones. |
| 212a0 | 20 54 6f 20 64 65 61 63 74 69 76 61 74 65 20 61 6e 20 69 6d 61 67 65 2c 20 73 65 74 20 74 68 65 | .To.deactivate.an.image,.set.the |
| 212c0 | 0a 25 20 20 20 20 20 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 65 6e 74 72 79 20 69 6e 20 74 | .%......corresponding.entry.in.t |
| 212e0 | 68 65 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 20 76 65 63 74 6f 72 20 74 6f 20 7a 65 72 6f 2e | he.active_images.vector.to.zero. |
| 21300 | 0a 25 0a 25 0a 25 49 6d 70 6f 72 74 61 6e 74 20 66 75 6e 63 74 69 6f 6e 73 20 63 61 6c 6c 65 64 | .%.%.%Important.functions.called |
| 21320 | 20 77 69 74 68 69 6e 20 74 68 61 74 20 70 72 6f 67 72 61 6d 3a 0a 25 0a 25 63 6f 6d 70 75 74 65 | .within.that.program:.%.%compute |
| 21340 | 5f 68 6f 6d 6f 67 72 61 70 68 79 2e 6d 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 70 6c 61 6e | _homography.m:.Computes.the.plan |
| 21360 | 61 72 20 68 6f 6d 6f 67 72 61 70 68 79 20 62 65 74 77 65 65 6e 20 70 6f 69 6e 74 73 20 6f 6e 20 | ar.homography.between.points.on. |
| 21380 | 74 68 65 20 67 72 69 64 20 69 6e 20 33 44 2c 20 61 6e 64 20 74 68 65 20 69 6d 61 67 65 20 70 6c | the.grid.in.3D,.and.the.image.pl |
| 213a0 | 61 6e 65 2e 0a 25 0a 25 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 2e 6d 3a 20 43 6f 6d | ane..%.%compute_extrinsic.m:.Com |
| 213c0 | 70 75 74 65 73 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 20 6f 66 20 61 20 67 72 69 64 20 61 73 73 | putes.the.location.of.a.grid.ass |
| 213e0 | 75 6d 69 6e 67 20 6b 6e 6f 77 6e 20 69 6e 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 | uming.known.intrinsic.parameters |
| 21400 | 2e 0a 25 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 68 69 73 20 66 75 | ..%......................This.fu |
| 21420 | 6e 63 74 69 6f 6e 20 69 73 20 63 61 6c 6c 65 64 20 61 74 20 74 68 65 20 69 6e 69 74 69 61 6c 69 | nction.is.called.at.the.initiali |
| 21440 | 7a 61 74 69 6f 6e 20 73 74 65 70 2e 0a 0a 0a 0a 0a 63 68 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d | zation.step......check_active_im |
| 21460 | 61 67 65 73 3b 0a 0a 69 66 20 7e 65 78 69 73 74 28 5b 27 78 5f 27 20 6e 75 6d 32 73 74 72 28 69 | ages;..if.~exist(['x_'.num2str(i |
| 21480 | 6e 64 5f 61 63 74 69 76 65 28 31 29 29 20 5d 29 2c 0a 20 20 20 63 6c 69 63 6b 5f 63 61 6c 69 62 | nd_active(1)).]),....click_calib |
| 214a0 | 3b 0a 65 6e 64 3b 0a 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 49 6e 69 74 69 61 6c 69 7a 61 | ;.end;...fprintf(1,'\nInitializa |
| 214c0 | 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 70 61 72 61 6d 65 74 65 | tion.of.the.calibration.paramete |
| 214e0 | 72 73 20 2d 20 4e 75 6d 62 65 72 20 6f 66 20 69 6d 61 67 65 73 3a 20 25 64 5c 6e 27 2c 6c 65 6e | rs.-.Number.of.images:.%d\n',len |
| 21500 | 67 74 68 28 69 6e 64 5f 61 63 74 69 76 65 29 29 3b 0a 0a 0a 25 20 49 6e 69 74 69 61 6c 69 7a 65 | gth(ind_active));...%.Initialize |
| 21520 | 20 74 68 65 20 68 6f 6d 6f 67 72 61 70 68 69 65 73 3a 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e | .the.homographies:..for.kk.=.1:n |
| 21540 | 5f 69 6d 61 2c 0a 20 20 20 65 76 61 6c 28 5b 27 78 5f 6b 6b 20 3d 20 78 5f 27 20 6e 75 6d 32 73 | _ima,....eval(['x_kk.=.x_'.num2s |
| 21560 | 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 58 5f 6b 6b 20 3d 20 58 | tr(kk).';']);....eval(['X_kk.=.X |
| 21580 | 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 69 66 20 28 69 73 6e | _'.num2str(kk).';']);....if.(isn |
| 215a0 | 61 6e 28 78 5f 6b 6b 28 31 2c 31 29 29 29 2c 0a 20 20 20 20 20 20 69 66 20 61 63 74 69 76 65 5f | an(x_kk(1,1))),.......if.active_ |
| 215c0 | 69 6d 61 67 65 73 28 6b 6b 29 2c 0a 20 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 | images(kk),..........fprintf(1,' |
| 215e0 | 57 41 52 4e 49 4e 47 3a 20 43 61 6e 6e 6f 74 20 63 61 6c 69 62 72 61 74 65 20 77 69 74 68 20 69 | WARNING:.Cannot.calibrate.with.i |
| 21600 | 6d 61 67 65 20 25 64 2e 20 4e 65 65 64 20 74 6f 20 65 78 74 72 61 63 74 20 67 72 69 64 20 63 6f | mage.%d..Need.to.extract.grid.co |
| 21620 | 72 6e 65 72 73 20 66 69 72 73 74 2e 5c 6e 27 2c 6b 6b 29 0a 20 20 20 20 20 20 20 20 20 66 70 72 | rners.first.\n',kk)..........fpr |
| 21640 | 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 53 65 74 20 61 63 74 69 76 65 5f 69 6d 61 67 | intf(1,'.........Set.active_imag |
| 21660 | 65 73 28 25 64 29 3d 31 3b 20 61 6e 64 20 72 75 6e 20 45 78 74 72 61 63 74 20 67 72 69 64 20 63 | es(%d)=1;.and.run.Extract.grid.c |
| 21680 | 6f 72 6e 65 72 73 2e 5c 6e 27 2c 6b 6b 29 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 | orners.\n',kk).......end;....... |
| 216a0 | 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 20 3d 20 30 3b 0a 20 20 20 65 6e 64 3b 0a 20 | active_images(kk).=.0;....end;.. |
| 216c0 | 20 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 2c 0a 20 20 20 20 20 20 65 76 | ..if.active_images(kk),.......ev |
| 216e0 | 61 6c 28 5b 27 48 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 63 6f 6d 70 75 74 65 | al(['H_'.num2str(kk).'.=.compute |
| 21700 | 5f 68 6f 6d 6f 67 72 61 70 68 79 28 78 5f 6b 6b 2c 58 5f 6b 6b 28 31 3a 32 2c 3a 29 29 3b 27 5d | _homography(x_kk,X_kk(1:2,:));'] |
| 21720 | 29 3b 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 65 76 61 6c 28 5b 27 48 5f 27 20 6e 75 6d 32 | );....else.......eval(['H_'.num2 |
| 21740 | 73 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 33 2c 33 29 3b 27 5d 29 3b 0a 20 | str(kk).'.=.NaN*ones(3,3);']);.. |
| 21760 | 20 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 63 68 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 65 73 | ..end;.end;..check_active_images |
| 21780 | 3b 0a 0a 25 20 69 6e 69 74 69 61 6c 20 67 75 65 73 73 20 66 6f 72 20 70 72 69 6e 63 69 70 61 6c | ;..%.initial.guess.for.principal |
| 217a0 | 20 70 6f 69 6e 74 20 61 6e 64 20 64 69 73 74 6f 72 74 69 6f 6e 3a 0a 0a 69 66 20 7e 65 78 69 73 | .point.and.distortion:..if.~exis |
| 217c0 | 74 28 27 6e 78 27 29 2c 20 5b 6e 79 2c 6e 78 5d 20 3d 20 73 69 7a 65 28 49 29 3b 20 65 6e 64 3b | t('nx'),.[ny,nx].=.size(I);.end; |
| 217e0 | 0a 0a 63 5f 69 6e 69 74 20 3d 20 5b 6e 78 3b 6e 79 5d 2f 32 20 2d 20 30 2e 35 3b 20 25 20 69 6e | ..c_init.=.[nx;ny]/2.-.0.5;.%.in |
| 21800 | 69 74 69 61 6c 69 7a 65 20 61 74 20 74 68 65 20 63 65 6e 74 65 72 20 6f 66 20 74 68 65 20 69 6d | itialize.at.the.center.of.the.im |
| 21820 | 61 67 65 0a 6b 5f 69 6e 69 74 20 3d 20 5b 30 3b 30 3b 30 3b 30 5d 3b 20 25 20 69 6e 69 74 69 61 | age.k_init.=.[0;0;0;0];.%.initia |
| 21840 | 6c 69 7a 65 20 74 6f 20 7a 65 72 6f 20 28 6e 6f 20 64 69 73 74 6f 72 74 69 6f 6e 29 0a 0a 0a 0a | lize.to.zero.(no.distortion).... |
| 21860 | 25 20 43 6f 6d 70 75 74 65 20 65 78 70 6c 69 63 69 74 65 6c 79 20 74 68 65 20 66 6f 63 61 6c 20 | %.Compute.explicitely.the.focal. |
| 21880 | 6c 65 6e 67 74 68 20 75 73 69 6e 67 20 61 6c 6c 20 74 68 65 20 28 6d 75 74 75 61 6c 6c 79 20 6f | length.using.all.the.(mutually.o |
| 218a0 | 72 74 68 6f 67 6f 6e 61 6c 29 20 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 73 0a 25 20 6e 6f | rthogonal).vanishing.points.%.no |
| 218c0 | 74 65 3a 20 54 68 65 20 76 61 6e 69 68 69 6e 67 20 70 6f 69 6e 74 73 20 61 72 65 20 68 69 64 64 | te:.The.vanihing.points.are.hidd |
| 218e0 | 65 6e 20 69 6e 20 74 68 65 20 70 6c 61 6e 61 72 20 63 6f 6c 6c 69 6e 65 61 74 69 6f 6e 73 20 48 | en.in.the.planar.collineations.H |
| 21900 | 5f 6b 6b 0a 0a 41 20 3d 20 5b 5d 3b 0a 62 20 3d 20 5b 5d 3b 0a 0a 25 20 6d 61 74 72 69 78 20 74 | _kk..A.=.[];.b.=.[];..%.matrix.t |
| 21920 | 68 61 74 20 73 75 62 74 72 61 63 74 20 74 68 65 20 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 | hat.subtract.the.principal.point |
| 21940 | 3a 0a 53 75 62 5f 63 63 20 3d 20 5b 31 20 30 20 2d 63 5f 69 6e 69 74 28 31 29 3b 30 20 31 20 2d | :.Sub_cc.=.[1.0.-c_init(1);0.1.- |
| 21960 | 63 5f 69 6e 69 74 28 32 29 3b 30 20 30 20 31 5d 3b 0a 0a 66 6f 72 20 6b 6b 3d 31 3a 6e 5f 69 6d | c_init(2);0.0.1];..for.kk=1:n_im |
| 21980 | 61 2c 0a 20 20 20 0a 20 20 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 2c 0a | a,........if.active_images(kk),. |
| 219a0 | 20 20 20 20 20 20 0a 20 20 20 09 65 76 61 6c 28 5b 27 48 6b 6b 20 3d 20 48 5f 27 20 6e 75 6d 32 | ...........eval(['Hkk.=.H_'.num2 |
| 219c0 | 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 09 48 6b 6b 20 3d 20 53 75 62 | str(kk).';']);.........Hkk.=.Sub |
| 219e0 | 5f 63 63 20 2a 20 48 6b 6b 3b 20 20 20 0a 20 20 20 0a 20 20 20 09 25 20 45 78 74 72 61 63 74 20 | _cc.*.Hkk;............%.Extract. |
| 21a00 | 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 73 20 28 64 69 72 65 63 74 20 61 6e 64 20 64 69 61 | vanishing.points.(direct.and.dia |
| 21a20 | 67 6f 6e 61 6c 73 29 3a 0a 20 20 20 0a 20 20 20 09 56 5f 68 6f 72 69 5f 70 69 78 20 3d 20 48 6b | gonals):.........V_hori_pix.=.Hk |
| 21a40 | 6b 28 3a 2c 31 29 3b 0a 20 20 20 09 56 5f 76 65 72 74 5f 70 69 78 20 3d 20 48 6b 6b 28 3a 2c 32 | k(:,1);.....V_vert_pix.=.Hkk(:,2 |
| 21a60 | 29 3b 0a 20 20 20 09 56 5f 64 69 61 67 31 5f 70 69 78 20 3d 20 28 48 6b 6b 28 3a 2c 31 29 2b 48 | );.....V_diag1_pix.=.(Hkk(:,1)+H |
| 21a80 | 6b 6b 28 3a 2c 32 29 29 2f 32 3b 0a 20 20 20 09 56 5f 64 69 61 67 32 5f 70 69 78 20 3d 20 28 48 | kk(:,2))/2;.....V_diag2_pix.=.(H |
| 21aa0 | 6b 6b 28 3a 2c 31 29 2d 48 6b 6b 28 3a 2c 32 29 29 2f 32 3b 0a 20 20 20 0a 20 20 20 09 56 5f 68 | kk(:,1)-Hkk(:,2))/2;.........V_h |
| 21ac0 | 6f 72 69 5f 70 69 78 20 3d 20 56 5f 68 6f 72 69 5f 70 69 78 2f 6e 6f 72 6d 28 56 5f 68 6f 72 69 | ori_pix.=.V_hori_pix/norm(V_hori |
| 21ae0 | 5f 70 69 78 29 3b 0a 20 20 20 09 56 5f 76 65 72 74 5f 70 69 78 20 3d 20 56 5f 76 65 72 74 5f 70 | _pix);.....V_vert_pix.=.V_vert_p |
| 21b00 | 69 78 2f 6e 6f 72 6d 28 56 5f 76 65 72 74 5f 70 69 78 29 3b 0a 20 20 20 09 56 5f 64 69 61 67 31 | ix/norm(V_vert_pix);.....V_diag1 |
| 21b20 | 5f 70 69 78 20 3d 20 56 5f 64 69 61 67 31 5f 70 69 78 2f 6e 6f 72 6d 28 56 5f 64 69 61 67 31 5f | _pix.=.V_diag1_pix/norm(V_diag1_ |
| 21b40 | 70 69 78 29 3b 0a 20 20 20 09 56 5f 64 69 61 67 32 5f 70 69 78 20 3d 20 56 5f 64 69 61 67 32 5f | pix);.....V_diag2_pix.=.V_diag2_ |
| 21b60 | 70 69 78 2f 6e 6f 72 6d 28 56 5f 64 69 61 67 32 5f 70 69 78 29 3b 0a 20 20 20 20 20 20 0a 20 20 | pix/norm(V_diag2_pix);.......... |
| 21b80 | 20 20 20 20 61 31 20 3d 20 56 5f 68 6f 72 69 5f 70 69 78 28 31 29 3b 0a 20 20 20 20 20 20 62 31 | ....a1.=.V_hori_pix(1);.......b1 |
| 21ba0 | 20 3d 20 56 5f 68 6f 72 69 5f 70 69 78 28 32 29 3b 0a 20 20 20 20 20 20 63 31 20 3d 20 56 5f 68 | .=.V_hori_pix(2);.......c1.=.V_h |
| 21bc0 | 6f 72 69 5f 70 69 78 28 33 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 09 61 32 20 3d 20 56 5f 76 65 | ori_pix(3);............a2.=.V_ve |
| 21be0 | 72 74 5f 70 69 78 28 31 29 3b 0a 20 20 20 09 62 32 20 3d 20 56 5f 76 65 72 74 5f 70 69 78 28 32 | rt_pix(1);.....b2.=.V_vert_pix(2 |
| 21c00 | 29 3b 0a 20 20 20 09 63 32 20 3d 20 56 5f 76 65 72 74 5f 70 69 78 28 33 29 3b 0a 20 20 20 09 0a | );.....c2.=.V_vert_pix(3);...... |
| 21c20 | 20 20 20 09 61 33 20 3d 20 56 5f 64 69 61 67 31 5f 70 69 78 28 31 29 3b 0a 20 20 20 09 62 33 20 | ....a3.=.V_diag1_pix(1);.....b3. |
| 21c40 | 3d 20 56 5f 64 69 61 67 31 5f 70 69 78 28 32 29 3b 0a 20 20 20 09 63 33 20 3d 20 56 5f 64 69 61 | =.V_diag1_pix(2);.....c3.=.V_dia |
| 21c60 | 67 31 5f 70 69 78 28 33 29 3b 0a 20 20 20 09 0a 20 20 20 09 61 34 20 3d 20 56 5f 64 69 61 67 32 | g1_pix(3);..........a4.=.V_diag2 |
| 21c80 | 5f 70 69 78 28 31 29 3b 0a 20 20 20 09 62 34 20 3d 20 56 5f 64 69 61 67 32 5f 70 69 78 28 32 29 | _pix(1);.....b4.=.V_diag2_pix(2) |
| 21ca0 | 3b 0a 20 20 20 09 63 34 20 3d 20 56 5f 64 69 61 67 32 5f 70 69 78 28 33 29 3b 0a 20 09 0a 20 09 | ;.....c4.=.V_diag2_pix(3);...... |
| 21cc0 | 20 20 20 41 5f 6b 6b 20 3d 20 5b 61 31 2a 61 32 20 20 62 31 2a 62 32 3b 0a 09 20 20 20 20 09 20 | ...A_kk.=.[a1*a2..b1*b2;........ |
| 21ce0 | 20 20 20 61 33 2a 61 34 20 20 62 33 2a 62 34 5d 3b 0a 20 20 20 0a 20 20 20 09 62 5f 6b 6b 20 3d | ...a3*a4..b3*b4];.........b_kk.= |
| 21d00 | 20 2d 5b 63 31 2a 63 32 3b 63 33 2a 63 34 5d 3b 0a 20 20 20 09 0a 09 09 0a 20 20 20 09 41 20 3d | .-[c1*c2;c3*c4];.............A.= |
| 21d20 | 20 5b 41 3b 41 5f 6b 6b 5d 3b 0a 20 20 20 09 62 20 3d 20 5b 62 3b 62 5f 6b 6b 5d 3b 0a 20 20 20 | .[A;A_kk];.....b.=.[b;b_kk];.... |
| 21d40 | 20 20 20 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 0a 25 20 75 73 65 20 61 6c 6c | .......end;.....end;...%.use.all |
| 21d60 | 20 74 68 65 20 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 73 20 74 6f 20 65 73 74 69 6d 61 74 | .the.vanishing.points.to.estimat |
| 21d80 | 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 3a 0a 0a 66 5f 69 6e 69 74 20 3d 20 73 71 72 74 28 61 | e.focal.length:..f_init.=.sqrt(a |
| 21da0 | 62 73 28 31 2e 2f 28 69 6e 76 28 41 27 2a 41 29 2a 41 27 2a 62 29 29 29 3b 20 25 20 69 66 20 75 | bs(1./(inv(A'*A)*A'*b)));.%.if.u |
| 21dc0 | 73 69 6e 67 20 61 20 74 77 6f 2d 66 6f 63 61 6c 20 6d 6f 64 65 6c 20 66 6f 72 20 69 6e 69 74 69 | sing.a.two-focal.model.for.initi |
| 21de0 | 61 6c 20 67 75 65 73 73 0a 0a 25 66 5f 69 6e 69 74 20 3d 20 73 71 72 74 28 62 27 2a 28 73 75 6d | al.guess..%f_init.=.sqrt(b'*(sum |
| 21e00 | 28 41 27 29 27 29 20 2f 20 28 62 27 2a 62 29 29 20 2a 20 6f 6e 65 73 28 32 2c 31 29 3b 20 25 20 | (A')')./.(b'*b)).*.ones(2,1);.%. |
| 21e20 | 69 66 20 73 69 6e 67 6c 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 20 6d 6f 64 65 6c 20 69 73 20 | if.single.focal.length.model.is. |
| 21e40 | 75 73 65 64 0a 0a 0a 25 20 47 6c 6f 62 61 6c 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 6d 61 74 72 | used...%.Global.calibration.matr |
| 21e60 | 69 78 20 28 69 6e 69 74 69 61 6c 20 67 75 65 73 73 29 3a 0a 20 20 20 09 0a 4b 4b 20 3d 20 5b 66 | ix.(initial.guess):......KK.=.[f |
| 21e80 | 5f 69 6e 69 74 28 31 29 20 30 20 63 5f 69 6e 69 74 28 31 29 3b 30 20 66 5f 69 6e 69 74 28 32 29 | _init(1).0.c_init(1);0.f_init(2) |
| 21ea0 | 20 63 5f 69 6e 69 74 28 32 29 3b 20 30 20 30 20 31 5d 3b 0a 69 6e 76 5f 4b 4b 20 3d 20 69 6e 76 | .c_init(2);.0.0.1];.inv_KK.=.inv |
| 21ec0 | 28 4b 4b 29 3b 0a 0a 0a 63 63 20 3d 20 63 5f 69 6e 69 74 3b 0a 66 63 20 3d 20 66 5f 69 6e 69 74 | (KK);...cc.=.c_init;.fc.=.f_init |
| 21ee0 | 3b 0a 6b 63 20 3d 20 6b 5f 69 6e 69 74 3b 0a 0a 0a 25 20 43 6f 6d 70 75 74 69 6e 67 20 6f 66 20 | ;.kc.=.k_init;...%.Computing.of. |
| 21f00 | 74 68 65 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 28 66 72 6f 6d 20 74 | the.extrinsic.parameters.(from.t |
| 21f20 | 68 65 20 63 6f 6c 6c 69 6e 65 61 74 69 6f 6e 73 29 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f | he.collineations)..for.kk.=.1:n_ |
| 21f40 | 69 6d 61 2c 0a 20 20 20 0a 20 20 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 | ima,........if.active_images(kk) |
| 21f60 | 2c 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 0a 20 20 20 09 65 76 61 6c 28 5b 27 78 5f 6b 6b 20 | ,...................eval(['x_kk. |
| 21f80 | 3d 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 20 20 20 65 | =.x_'.num2str(kk).';']);.......e |
| 21fa0 | 76 61 6c 28 5b 27 58 5f 6b 6b 20 3d 20 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 | val(['X_kk.=.X_'.num2str(kk).';' |
| 21fc0 | 5d 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 5b 6f 6d 63 6b 6b 2c 54 63 6b 6b 5d 20 3d 20 | ]);..............[omckk,Tckk].=. |
| 21fe0 | 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 28 78 5f 6b 6b 2c 58 5f 6b 6b 2c 66 63 2c 63 | compute_extrinsic(x_kk,X_kk,fc,c |
| 22000 | 63 2c 6b 63 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 52 63 6b 6b 20 3d 20 72 6f 64 72 69 | c,kc);..............Rckk.=.rodri |
| 22020 | 67 75 65 73 28 6f 6d 63 5f 6b 6b 29 3b 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 65 6c 73 65 0a | gues(omc_kk);..............else. |
| 22040 | 20 20 20 20 20 20 0a 20 20 20 20 20 20 6f 6d 63 6b 6b 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 33 2c | .............omckk.=.NaN*ones(3, |
| 22060 | 31 29 3b 0a 20 20 20 20 20 20 54 63 6b 6b 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 33 2c 31 29 3b 0a | 1);.......Tckk.=.NaN*ones(3,1);. |
| 22080 | 20 20 20 20 20 20 52 63 6b 6b 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 33 2c 33 29 3b 0a 20 20 20 20 | ......Rckk.=.NaN*ones(3,3);..... |
| 220a0 | 20 20 0a 09 65 6e 64 3b 0a 0a 20 20 20 65 76 61 6c 28 5b 27 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 | ....end;.....eval(['omc_'.num2st |
| 220c0 | 72 28 6b 6b 29 20 27 20 3d 20 6f 6d 63 6b 6b 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 52 | r(kk).'.=.omckk;']);....eval(['R |
| 220e0 | 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 52 63 6b 6b 3b 27 5d 29 3b 0a 20 20 | c_'.num2str(kk).'.=.Rckk;']);... |
| 22100 | 20 65 76 61 6c 28 5b 27 54 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 54 63 6b | .eval(['Tc_'.num2str(kk).'.=.Tck |
| 22120 | 6b 3b 27 5d 29 3b 0a 20 20 20 20 20 20 0a 65 6e 64 3b 0a 0a 0a 25 20 49 6e 69 74 69 61 6c 69 7a | k;']);........end;...%.Initializ |
| 22140 | 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 20 66 6f 72 20 67 6c 6f 62 | ation.of.the.parameters.for.glob |
| 22160 | 61 6c 20 6d 69 6e 69 6d 69 7a 61 74 69 6f 6e 3a 0a 0a 69 6e 69 74 5f 70 61 72 61 6d 20 3d 20 5b | al.minimization:..init_param.=.[ |
| 22180 | 66 5f 69 6e 69 74 3b 6b 5f 69 6e 69 74 5d 3b 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d | f_init;k_init];..for.kk.=.1:n_im |
| 221a0 | 61 2c 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 69 6e 69 74 5f 70 61 72 61 6d 20 3d 20 5b 69 6e | a,.......eval(['init_param.=.[in |
| 221c0 | 69 74 5f 70 61 72 61 6d 3b 20 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 20 54 | it_param;.omc_'.num2str(kk).';.T |
| 221e0 | 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 5d 3b 27 5d 29 3b 0a 65 6e 64 3b 0a 0a 73 6f | c_'.num2str(kk).'];']);.end;..so |
| 22200 | 6c 75 74 69 6f 6e 5f 69 6e 69 74 20 3d 20 5b 69 6e 69 74 5f 70 61 72 61 6d 3b 63 5f 69 6e 69 74 | lution_init.=.[init_param;c_init |
| 22220 | 5d 3b 0a 0a 73 6f 6c 75 74 69 6f 6e 20 3d 20 73 6f 6c 75 74 69 6f 6e 5f 69 6e 69 74 3b 0a 0a 63 | ];..solution.=.solution_init;..c |
| 22240 | 6f 6d 70 5f 65 72 72 6f 72 5f 63 61 6c 69 62 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 5c | omp_error_calib;..fprintf(1,'\n\ |
| 22260 | 6e 43 61 6c 69 62 72 61 74 69 6f 6e 20 70 61 72 61 6d 65 74 65 72 73 20 61 66 74 65 72 20 69 6e | nCalibration.parameters.after.in |
| 22280 | 69 74 69 61 6c 69 7a 61 74 69 6f 6e 3a 5c 6e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 | itialization:\n\n');.fprintf(1,' |
| 222a0 | 46 6f 63 61 6c 20 4c 65 6e 67 74 68 3a 20 20 20 20 20 66 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 | Focal.Length:.....fc.=.[.%3.5f.. |
| 222c0 | 20 25 33 2e 35 66 5d 5c 6e 27 2c 66 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 50 72 69 6e 63 | .%3.5f]\n',fc);.fprintf(1,'Princ |
| 222e0 | 69 70 61 6c 20 70 6f 69 6e 74 3a 20 20 63 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 | ipal.point:..cc.=.[.%3.5f...%3.5 |
| 22300 | 66 5d 5c 6e 27 2c 63 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 44 69 73 74 6f 72 74 69 6f 6e | f]\n',cc);.fprintf(1,'Distortion |
| 22320 | 3a 20 20 20 20 20 20 20 6b 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 20 20 20 25 | :.......kc.=.[.%3.5f...%3.5f...% |
| 22340 | 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 6b 63 29 3b 20 20 20 0a 66 70 72 69 6e 74 66 | 3.5f...%3.5f]\n',kc);....fprintf |
| 22360 | 28 31 2c 27 50 69 78 65 6c 20 65 72 72 6f 72 3a 20 20 20 20 20 20 65 72 72 20 3d 20 5b 20 25 33 | (1,'Pixel.error:......err.=.[.%3 |
| 22380 | 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 5c 6e 27 2c 65 72 72 5f 73 74 64 29 3b 20 0a 0a 0a 25 | .5f...%3.5f]\n\n',err_std);....% |
| 223a0 | 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 47 52 41 50 48 49 43 41 4c 20 4f 55 | %%%%%%%%%%%%%%%%%%%.GRAPHICAL.OU |
| 223c0 | 54 50 55 54 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 0a 0a 25 | TPUT.%%%%%%%%%%%%%%%%%%%%%%%%..% |
| 223e0 | 67 72 61 70 68 6f 75 74 5f 63 61 6c 69 62 3b 0a 0a 20 20 4f 6e 63 65 20 74 68 65 20 69 6e 74 72 | graphout_calib;....Once.the.intr |
| 22400 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 6c 6f 61 64 69 6e 67 5f 63 61 6c 69 62 2e 6d 00 00 00 | TOOLBOX_calib/loading_calib.m... |
| 22420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22460 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 22480 | 20 20 20 20 33 34 33 20 20 37 30 32 34 30 33 37 33 33 35 20 20 31 31 33 32 36 00 20 00 00 00 00 | ....343..7024037335..11326...... |
| 224a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 224c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 224e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 225a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 225c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 225e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22600 | 69 66 20 7e 65 78 69 73 74 28 27 43 61 6c 69 62 5f 52 65 73 75 6c 74 73 2e 6d 61 74 27 29 2c 0a | if.~exist('Calib_Results.mat'),. |
| 22620 | 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 43 61 6c 69 62 72 61 74 69 6f 6e 20 66 69 6c 65 | ...fprintf(1,'\nCalibration.file |
| 22640 | 20 43 61 6c 69 62 5f 52 65 73 75 6c 74 73 2e 6d 61 74 20 6e 6f 74 20 66 6f 75 6e 64 21 5c 6e 27 | .Calib_Results.mat.not.found!\n' |
| 22660 | 29 3b 0a 20 20 20 72 65 74 75 72 6e 3b 0a 65 6e 64 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c | );....return;.end;..fprintf(1,'\ |
| 22680 | 6e 4c 6f 61 64 69 6e 67 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 72 65 73 75 6c 74 73 20 66 72 6f | nLoading.calibration.results.fro |
| 226a0 | 6d 20 43 61 6c 69 62 5f 52 65 73 75 6c 74 73 2e 6d 61 74 5c 6e 27 29 3b 0a 0a 6c 6f 61 64 20 43 | m.Calib_Results.mat\n');..load.C |
| 226c0 | 61 6c 69 62 5f 52 65 73 75 6c 74 73 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 64 6f 6e 65 5c 6e 27 | alib_Results..fprintf(1,'done\n' |
| 226e0 | 29 3b 0a 6e 00 00 04 94 00 02 35 db 00 24 00 15 72 65 63 6f 6d 70 5f 63 6f 72 6e 65 72 5f 63 61 | );.n......5..$..recomp_corner_ca |
| 22700 | 6c 69 62 2e 6d 00 04 94 00 00 04 a4 00 02 35 dc 00 14 00 06 72 65 63 74 2e 6d 00 65 00 00 04 c0 | lib.m.........5.....rect.m.e.... |
| 22720 | 00 02 35 dd 00 20 00 12 52 65 63 74 61 6e 67 6c 65 32 53 71 75 61 72 65 2e 6d 00 65 00 00 04 dc | ..5.....Rectangle2Square.m.e.... |
| 22740 | 00 02 35 de 00 20 00 11 72 65 70 72 6f 6a 65 63 74 5f 63 61 6c 69 62 2e 6d 00 00 65 00 00 04 f0 | ..5.....reproject_calib.m..e.... |
| 22760 | 00 02 35 df 00 18 00 0b 72 6f 64 72 69 67 75 65 73 2e 6d 00 00 00 05 04 00 02 35 e0 00 18 00 0a | ..5.....rodrigues.m.......5..... |
| 22780 | 72 6f 74 61 74 69 6f 6e 2e 6d 00 72 00 00 05 1c 00 02 36 9f 00 1c 00 0e 73 61 76 69 6e 67 5f 63 | rotation.m.r......6.....saving_c |
| 227a0 | 61 6c 69 62 2e 6d 00 6e 00 00 05 3c 00 02 36 a0 00 24 00 17 73 63 72 69 70 74 5f 66 69 74 5f 64 | alib.m.n...<..6..$..script_fit_d |
| 227c0 | 69 73 74 6f 72 74 69 6f 6e 2e 6d 00 00 00 05 5c 00 02 36 a1 00 24 00 16 73 65 6c 65 63 74 5f 73 | istortion.m....\..6..$..select_s |
| 227e0 | 6f 6c 5f 6e 6f 5f 63 65 6e 74 65 72 2e 6d 00 5c 00 00 05 80 00 02 36 a2 00 28 00 18 73 65 6c 65 | ol_no_center.m.\......6..(..sele |
| 22800 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 4d 75 6c 74 69 5f 43 61 6c 69 62 5f 6f 75 6c 75 2e 6d | TOOLBOX_calib/Multi_Calib_oulu.m |
| 22820 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22860 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 22880 | 20 20 20 20 32 33 32 20 20 37 30 32 34 30 33 37 33 33 37 20 20 31 32 30 30 36 00 20 00 00 00 00 | ....232..7024037337..12006...... |
| 228a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 228c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 228e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22900 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22920 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 229a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 229c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 229e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22a00 | 0a 25 20 65 6e 74 65 72 20 69 6d 61 67 65 20 6e 61 6d 65 73 2c 20 6e 75 6d 62 65 72 73 2c 20 2e | .%.enter.image.names,.numbers,.. |
| 22a20 | 2e 2e 0a 64 61 74 61 5f 63 61 6c 69 62 3b 0a 0a 25 72 65 61 64 20 69 6d 61 67 65 73 20 66 72 6f | ...data_calib;..%read.images.fro |
| 22a40 | 6d 20 66 69 6c 65 73 0a 69 6d 61 5f 72 65 61 64 5f 63 61 6c 69 62 3b 0a 0a 63 6c 69 63 6b 5f 63 | m.files.ima_read_calib;..click_c |
| 22a60 | 61 6c 69 62 3b 0a 0a 25 67 6f 5f 63 61 6c 69 62 3b 20 25 20 74 68 65 20 6f 72 69 67 69 6e 61 6c | alib;..%go_calib;.%.the.original |
| 22a80 | 20 76 65 72 73 69 6f 6e 0a 0a 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 3b 0a 00 10 70 72 6f 6a | .version..go_calib_optim;...proj |
| 22aa0 | 65 63 74 5f 70 6f 69 6e 74 73 2e 6d 00 00 04 60 00 00 04 74 00 02 35 da 00 18 00 09 72 65 61 64 | ect_points.m...`...t..5.....read |
| 22ac0 | 72 61 73 2e 6d 00 2e 6d 00 00 04 94 00 02 35 db 00 24 00 15 72 65 63 6f 6d 70 5f 63 6f 72 6e 65 | ras.m..m......5..$..recomp_corne |
| 22ae0 | 72 5f 63 61 6c 69 62 2e 6d 00 35 db 00 00 04 a4 00 02 35 dc 00 14 00 06 72 65 63 74 2e 6d 00 61 | r_calib.m.5.......5.....rect.m.a |
| 22b00 | 00 00 04 c0 00 02 35 dd 00 20 00 12 52 65 63 74 61 6e 67 6c 65 32 53 71 75 61 72 65 2e 6d 00 c0 | ......5.....Rectangle2Square.m.. |
| 22b20 | 00 00 04 dc 00 02 35 de 00 20 00 11 72 65 70 72 6f 6a 65 63 74 5f 63 61 6c 69 62 2e 6d 00 04 dc | ......5.....reproject_calib.m... |
| 22b40 | 00 00 04 f0 00 02 35 df 00 18 00 0b 72 6f 64 72 69 67 75 65 73 2e 6d 00 00 00 05 04 00 02 35 e0 | ......5.....rodrigues.m.......5. |
| 22b60 | 00 18 00 0a 72 6f 74 61 74 69 6f 6e 2e 6d 00 65 00 00 05 1c 00 02 36 9f 00 1c 00 0e 73 61 76 69 | ....rotation.m.e......6.....savi |
| 22b80 | 6e 67 5f 63 61 6c 69 62 2e 6d 00 72 00 00 05 3c 00 02 36 a0 00 24 00 17 73 63 72 69 70 74 5f 66 | ng_calib.m.r...<..6..$..script_f |
| 22ba0 | 69 74 5f 64 69 73 74 6f 72 74 69 6f 6e 2e 6d 00 00 00 05 5c 00 02 36 a1 00 24 00 16 73 65 6c 65 | it_distortion.m....\..6..$..sele |
| 22bc0 | 63 74 5f 73 6f 6c 5f 6e 6f 5f 63 65 6e 74 65 72 2e 6d 00 a1 00 00 05 80 00 02 36 a2 00 28 00 18 | ct_sol_no_center.m........6..(.. |
| 22be0 | 73 65 6c 65 63 74 5f 73 6f 6c 5f 6e 6f 5f 63 65 6e 74 65 72 33 44 2e 6d 00 28 00 18 00 00 05 a4 | select_sol_no_center3D.m.(...... |
| 22c00 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 6d 75 6c 74 69 5f 65 72 72 6f 72 5f 6f 75 6c 75 2e 6d | TOOLBOX_calib/multi_error_oulu.m |
| 22c20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22c40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22c60 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 22c80 | 20 20 20 31 37 33 37 20 20 37 30 32 34 30 33 37 33 34 30 20 20 31 32 32 31 32 00 20 00 00 00 00 | ...1737..7024037340..12212...... |
| 22ca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22cc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22ce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22d00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22d20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22d40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22d60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22d80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 22e00 | 66 75 6e 63 74 69 6f 6e 20 65 78 20 3d 20 6d 75 6c 74 69 5f 65 72 72 6f 72 5f 6f 75 6c 75 28 70 | function.ex.=.multi_error_oulu(p |
| 22e20 | 61 72 61 6d 2c 6e 5f 69 6d 61 2c 63 63 29 3b 0a 0a 67 6c 6f 62 61 6c 20 58 5f 31 20 78 5f 31 20 | aram,n_ima,cc);..global.X_1.x_1. |
| 22e40 | 58 5f 32 20 78 5f 32 20 58 5f 33 20 78 5f 33 20 58 5f 34 20 78 5f 34 20 58 5f 35 20 78 5f 35 20 | X_2.x_2.X_3.x_3.X_4.x_4.X_5.x_5. |
| 22e60 | 58 5f 36 20 78 5f 36 20 58 5f 37 20 78 5f 37 20 58 5f 38 20 78 5f 38 20 58 5f 39 20 78 5f 39 20 | X_6.x_6.X_7.x_7.X_8.x_8.X_9.x_9. |
| 22e80 | 58 5f 31 30 20 78 5f 31 30 20 58 5f 31 31 20 78 5f 31 31 20 58 5f 31 32 20 78 5f 31 32 20 58 5f | X_10.x_10.X_11.x_11.X_12.x_12.X_ |
| 22ea0 | 31 33 20 78 5f 31 33 20 58 5f 31 34 20 78 5f 31 34 20 58 5f 31 35 20 78 5f 31 35 20 58 5f 31 36 | 13.x_13.X_14.x_14.X_15.x_15.X_16 |
| 22ec0 | 20 78 5f 31 36 20 58 5f 31 37 20 78 5f 31 37 20 58 5f 31 38 20 78 5f 31 38 20 58 5f 31 39 20 78 | .x_16.X_17.x_17.X_18.x_18.X_19.x |
| 22ee0 | 5f 31 39 20 58 5f 32 30 20 78 5f 32 30 20 58 5f 32 31 20 78 5f 32 31 20 58 5f 32 32 20 78 5f 32 | _19.X_20.x_20.X_21.x_21.X_22.x_2 |
| 22f00 | 32 20 58 5f 32 33 20 78 5f 32 33 20 58 5f 32 34 20 78 5f 32 34 20 58 5f 32 35 20 78 5f 32 35 20 | 2.X_23.x_23.X_24.x_24.X_25.x_25. |
| 22f20 | 58 5f 32 36 20 78 5f 32 36 20 58 5f 32 37 20 78 5f 32 37 20 58 5f 32 38 20 78 5f 32 38 20 58 5f | X_26.x_26.X_27.x_27.X_28.x_28.X_ |
| 22f40 | 32 39 20 78 5f 32 39 20 58 5f 33 30 20 78 5f 33 30 0a 0a 66 63 20 3d 20 70 61 72 61 6d 28 31 3a | 29.x_29.X_30.x_30..fc.=.param(1: |
| 22f60 | 32 29 3b 0a 6b 63 20 3d 20 70 61 72 61 6d 28 33 3a 36 29 3b 0a 25 70 70 63 20 3d 20 70 61 72 61 | 2);.kc.=.param(3:6);.%ppc.=.para |
| 22f80 | 6d 28 35 3a 36 29 3b 0a 0a 69 66 20 6c 65 6e 67 74 68 28 70 61 72 61 6d 29 20 3e 20 36 2a 6e 5f | m(5:6);..if.length(param).>.6*n_ |
| 22fa0 | 69 6d 61 20 2b 20 33 20 2b 20 33 2c 0a 20 20 20 0a 20 20 20 63 63 20 3d 20 70 61 72 61 6d 28 36 | ima.+.3.+.3,........cc.=.param(6 |
| 22fc0 | 2a 6e 5f 69 6d 61 20 2b 20 34 20 2b 20 33 3a 36 2a 6e 5f 69 6d 61 20 2b 20 35 20 2b 20 33 29 3b | *n_ima.+.4.+.3:6*n_ima.+.5.+.3); |
| 22fe0 | 0a 20 20 20 0a 20 20 20 69 66 20 6c 65 6e 67 74 68 28 70 61 72 61 6d 29 20 3e 20 36 2a 6e 5f 69 | ........if.length(param).>.6*n_i |
| 23000 | 6d 61 20 2b 20 35 20 2b 20 33 2c 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 63 5f 64 20 3d 20 70 | ma.+.5.+.3,..............c_d.=.p |
| 23020 | 61 72 61 6d 28 36 2a 6e 5f 69 6d 61 20 2b 20 36 20 2b 20 33 20 3a 36 2a 6e 5f 69 6d 61 20 2b 20 | aram(6*n_ima.+.6.+.3.:6*n_ima.+. |
| 23040 | 37 20 2b 20 33 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 0a 20 20 | 7.+.3);...........else.......... |
| 23060 | 20 20 20 20 63 5f 64 20 3d 20 5b 30 3b 30 5d 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a | ....c_d.=.[0;0];...........end;. |
| 23080 | 20 20 20 0a 65 6c 73 65 0a 20 20 20 0a 20 20 20 63 5f 64 20 3d 20 5b 30 3b 30 5d 3b 0a 0a 65 6e | ....else........c_d.=.[0;0];..en |
| 230a0 | 64 3b 0a 0a 0a 0a 65 78 20 3d 20 5b 5d 3b 0a 0a 25 6b 65 79 62 6f 61 72 64 3b 0a 0a 66 6f 72 20 | d;....ex.=.[];..%keyboard;..for. |
| 230c0 | 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 0a 20 20 20 6f 6d 63 6b 6b 20 3d 20 70 61 72 | kk.=.1:n_ima,........omckk.=.par |
| 230e0 | 61 6d 28 34 2b 36 2a 28 6b 6b 2d 31 29 20 2b 20 33 3a 36 2a 6b 6b 20 2b 20 33 29 3b 0a 20 20 20 | am(4+6*(kk-1).+.3:6*kk.+.3);.... |
| 23100 | 0a 20 20 20 54 63 6b 6b 20 3d 20 70 61 72 61 6d 28 36 2a 6b 6b 2b 31 20 2b 20 33 3a 36 2a 6b 6b | ....Tckk.=.param(6*kk+1.+.3:6*kk |
| 23120 | 2b 33 20 2b 20 33 29 3b 0a 0a 20 20 20 52 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 | +3.+.3);.....Rkk.=.rodrigues(omc |
| 23140 | 6b 6b 29 3b 0a 0a 20 20 20 65 76 61 6c 28 5b 27 79 6b 6b 20 3d 20 70 72 6f 6a 65 63 74 32 5f 6f | kk);.....eval(['ykk.=.project2_o |
| 23160 | 75 6c 75 28 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 2c 52 6b 6b 2c 54 63 6b 6b 2c 66 | ulu(X_'.num2str(kk).',Rkk,Tckk,f |
| 23180 | 63 2c 63 63 2c 6b 63 29 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 65 78 6b 6b | c,cc,kc);']);........eval(['exkk |
| 231a0 | 20 3d 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 2d 79 6b 6b 3b 27 5d 29 3b 0a 0a | .=.x_'.num2str(kk).'.-ykk;']);.. |
| 231c0 | 20 20 20 65 78 20 3d 20 5b 65 78 3b 65 78 6b 6b 28 3a 29 5d 3b 0a 20 20 20 0a 65 6e 64 3b 0a 54 | ...ex.=.[ex;exkk(:)];.....end;.T |
| 231e0 | 00 02 36 b4 00 20 00 13 63 68 65 63 6b 5f 63 6f 6e 76 65 72 67 65 6e 63 65 2e 6d 00 00 00 07 70 | ..6.....check_convergence.m....p |
| 23200 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 70 67 6d 72 65 61 64 2e 6d 00 00 00 00 00 00 00 00 00 | TOOLBOX_calib/pgmread.m......... |
| 23220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 23240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 23260 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 23280 | 20 20 20 31 30 33 37 20 20 37 30 32 34 30 33 37 33 34 31 20 20 31 30 32 31 34 00 20 00 00 00 00 | ...1037..7024037341..10214...... |
| 232a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 232c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 232e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 23300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 23320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 23340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 23360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 23380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 233a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 233c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 233e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 23400 | 66 75 6e 63 74 69 6f 6e 20 69 6d 67 20 3d 20 70 67 6d 72 65 61 64 28 66 69 6c 65 6e 61 6d 65 29 | function.img.=.pgmread(filename) |
| 23420 | 0a 25 20 66 75 6e 63 74 69 6f 6e 20 69 6d 67 20 3d 20 70 67 6d 72 65 61 64 28 66 69 6c 65 6e 61 | .%.function.img.=.pgmread(filena |
| 23440 | 6d 65 29 0a 25 20 20 20 74 68 69 73 20 69 73 20 6d 79 20 76 65 72 73 69 6f 6e 20 6f 66 20 70 67 | me).%...this.is.my.version.of.pg |
| 23460 | 6d 72 65 61 64 20 66 6f 72 20 74 68 65 20 70 67 6d 20 66 69 6c 65 20 63 72 65 61 74 65 64 20 62 | mread.for.the.pgm.file.created.b |
| 23480 | 79 20 58 56 2e 0a 25 20 20 20 0a 25 20 20 74 68 69 73 20 70 72 6f 67 72 61 6d 20 61 6c 73 6f 20 | y.XV..%....%..this.program.also. |
| 234a0 | 63 6f 72 72 65 63 74 73 20 66 6f 72 20 74 68 65 20 73 68 69 66 74 73 20 69 6e 20 74 68 65 20 69 | corrects.for.the.shifts.in.the.i |
| 234c0 | 6d 61 67 65 20 66 72 6f 6d 20 70 6d 20 66 69 6c 65 2e 0a 0a 66 69 64 20 3d 20 66 6f 70 65 6e 28 | mage.from.pm.file...fid.=.fopen( |
| 234e0 | 66 69 6c 65 6e 61 6d 65 2c 27 72 27 29 3b 0a 66 73 63 61 6e 66 28 66 69 64 2c 20 27 50 35 5c 6e | filename,'r');.fscanf(fid,.'P5\n |
| 23500 | 27 29 3b 0a 63 6d 74 20 3d 20 27 23 27 3b 0a 77 68 69 6c 65 20 66 69 6e 64 73 74 72 28 63 6d 74 | ');.cmt.=.'#';.while.findstr(cmt |
| 23520 | 2c 20 27 23 27 29 2c 0a 20 20 63 6d 74 20 3d 20 66 67 65 74 73 28 66 69 64 29 3b 0a 20 20 20 69 | ,.'#'),...cmt.=.fgets(fid);....i |
| 23540 | 66 20 6c 65 6e 67 74 68 28 66 69 6e 64 73 74 72 28 63 6d 74 2c 20 27 23 27 29 29 20 7e 3d 20 31 | f.length(findstr(cmt,.'#')).~=.1 |
| 23560 | 2c 0a 20 20 20 20 20 20 59 58 20 3d 20 73 73 63 61 6e 66 28 63 6d 74 2c 20 27 25 64 20 25 64 27 | ,.......YX.=.sscanf(cmt,.'%d.%d' |
| 23580 | 29 3b 0a 20 20 20 20 20 20 79 20 3d 20 59 58 28 31 29 3b 20 78 20 3d 20 59 58 28 32 29 3b 0a 20 | );.......y.=.YX(1);.x.=.YX(2);.. |
| 235a0 | 20 20 65 6e 64 0a 65 6e 64 0a 0a 25 66 67 65 74 73 28 66 69 64 29 3b 0a 0a 25 69 6d 67 20 3d 20 | ..end.end..%fgets(fid);..%img.=. |
| 235c0 | 66 73 63 61 6e 66 28 66 69 64 2c 27 25 64 27 2c 73 69 7a 65 29 3b 0a 25 69 6d 67 20 3d 20 69 6d | fscanf(fid,'%d',size);.%img.=.im |
| 235e0 | 67 27 3b 0a 0a 69 6d 67 20 3d 20 66 72 65 61 64 28 66 69 64 2c 5b 79 2c 78 5d 2c 27 75 69 6e 74 | g';..img.=.fread(fid,[y,x],'uint |
| 23600 | 38 27 29 3b 0a 69 6d 67 20 3d 20 69 6d 67 27 3b 0a 66 63 6c 6f 73 65 28 66 69 64 29 3b 0a 0a 2e | 8');.img.=.img';.fclose(fid);... |
| 23620 | 6d 00 6e 74 00 00 05 f0 00 02 36 a6 00 18 00 09 74 65 73 74 5f 33 64 2e 6d 00 61 72 00 00 06 00 | m.nt......6.....test_3d.m.ar.... |
| 23640 | 00 02 33 c0 00 14 00 06 69 73 33 44 2e 6d 00 09 00 00 06 1c 00 02 36 a7 00 20 00 11 75 6e 64 69 | ..3.....is3D.m........6.....undi |
| 23660 | 73 74 6f 72 74 5f 69 6d 61 67 65 2e 6d 00 00 09 00 00 06 34 00 02 36 a8 00 1c 00 0d 55 6e 57 61 | stort_image.m......4..6.....UnWa |
| 23680 | 72 70 50 6c 61 6e 65 2e 6d 00 65 2e 00 00 06 48 00 02 36 a9 00 18 00 0a 77 72 69 74 65 72 61 73 | rpPlane.m.e....H..6.....writeras |
| 236a0 | 2e 6d 00 6c 00 00 06 64 00 02 36 aa 00 20 00 10 65 72 72 6f 72 5f 61 6e 61 6c 79 73 69 73 2e 6d | .m.l...d..6.....error_analysis.m |
| 236c0 | 00 6d 00 6c 00 00 06 78 00 02 36 ab 00 18 00 09 6c 6f 61 64 69 6e 72 2e 6d 00 79 73 00 00 06 8c | .m.l...x..6.....loadinr.m.ys.... |
| 236e0 | 00 02 36 ac 00 18 00 09 6c 6f 61 64 70 67 6d 2e 6d 00 61 64 00 00 06 a0 00 02 36 ad 00 18 00 09 | ..6.....loadpgm.m.ad......6..... |
| 23700 | 6c 6f 61 64 70 70 6d 2e 6d 00 61 64 00 00 06 b4 00 02 36 ae 00 18 00 09 73 61 76 65 69 6e 72 2e | loadppm.m.ad......6.....saveinr. |
| 23720 | 6d 00 61 64 00 00 06 c8 00 02 36 af 00 18 00 09 73 61 76 65 70 67 6d 2e 6d 00 76 65 00 00 06 dc | m.ad......6.....savepgm.m.ve.... |
| 23740 | 00 02 36 b0 00 18 00 09 73 61 76 65 70 70 6d 2e 6d 00 76 65 00 00 06 fc 00 02 36 b1 00 24 00 16 | ..6.....saveppm.m.ve......6..$.. |
| 23760 | 69 6e 69 74 5f 69 6e 74 72 69 6e 73 69 63 5f 70 61 72 61 6d 2e 6d 00 fc 00 00 07 18 00 02 36 b2 | init_intrinsic_param.m........6. |
| 23780 | 00 20 00 11 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 2e 6d 00 00 fc 00 00 07 38 00 02 36 b3 | ....mean_std_robust.m......8..6. |
| 237a0 | 00 24 00 14 72 75 6e 5f 65 72 72 6f 72 5f 61 6e 61 6c 79 73 69 73 2e 6d 00 00 07 38 00 00 07 54 | .$..run_error_analysis.m...8...T |
| 237c0 | 00 02 36 b4 00 20 00 13 63 68 65 63 6b 5f 63 6f 6e 76 65 72 67 65 6e 63 65 2e 6d 00 00 00 07 70 | ..6.....check_convergence.m....p |
| 237e0 | 00 02 36 b5 00 20 00 11 63 68 65 63 6b 5f 70 6c 61 6e 61 72 69 74 79 2e 6d 00 6d 00 00 00 07 88 | ..6.....check_planarity.m.m..... |
| 23800 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 70 72 6f 6a 65 63 74 32 5f 6f 75 6c 75 2e 6d 00 00 00 | TOOLBOX_calib/project2_oulu.m... |
| 23820 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 23840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 23860 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 23880 | 20 20 20 32 30 32 33 20 20 37 30 32 34 30 33 37 33 34 32 20 20 31 31 33 36 36 00 20 00 00 00 00 | ...2023..7024037342..11366...... |
| 238a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 238c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 238e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 23900 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 23920 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 23940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 23960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 23980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 239a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 239c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 239e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 23a00 | 66 75 6e 63 74 69 6f 6e 20 5b 78 5d 20 3d 20 70 72 6f 6a 65 63 74 32 5f 6f 75 6c 75 28 58 2c 52 | function.[x].=.project2_oulu(X,R |
| 23a20 | 2c 54 2c 66 2c 74 2c 6b 29 0a 25 50 52 4f 4a 45 43 54 20 20 20 20 20 53 75 62 73 69 64 69 61 72 | ,T,f,t,k).%PROJECT.....Subsidiar |
| 23a40 | 79 20 74 6f 20 63 61 6c 69 62 0a 0a 25 20 20 20 20 20 20 20 20 20 28 63 29 20 50 69 65 74 72 6f | y.to.calib..%.........(c).Pietro |
| 23a60 | 20 50 65 72 6f 6e 61 20 2d 2d 20 4d 61 72 63 68 20 32 34 2c 20 31 39 39 34 0a 25 20 20 20 20 20 | .Perona.--.March.24,.1994.%..... |
| 23a80 | 20 20 20 20 43 61 6c 69 66 6f 72 6e 69 61 20 49 6e 73 74 69 74 75 74 65 20 6f 66 20 54 65 63 68 | ....California.Institute.of.Tech |
| 23aa0 | 6e 6f 6c 6f 67 79 0a 25 20 20 20 20 20 20 20 20 20 50 61 73 61 64 65 6e 61 2c 20 43 41 0a 25 20 | nology.%.........Pasadena,.CA.%. |
| 23ac0 | 20 20 20 20 20 20 20 20 0a 25 20 20 20 20 20 20 20 20 20 52 65 6e 61 6d 65 64 20 62 65 63 61 75 | .........%.........Renamed.becau |
| 23ae0 | 73 65 20 70 72 6f 6a 65 63 74 20 65 78 69 73 74 73 20 69 6e 20 6d 61 74 6c 61 62 20 35 2e 32 21 | se.project.exists.in.matlab.5.2! |
| 23b00 | 21 21 0a 25 20 20 20 20 20 20 20 20 20 4e 6f 77 20 75 73 65 73 20 74 68 65 20 6d 6f 72 65 20 65 | !!.%.........Now.uses.the.more.e |
| 23b20 | 6c 61 62 6f 72 61 74 65 20 69 6e 74 72 69 6e 73 69 63 20 6d 6f 64 65 6c 20 66 72 6f 6d 20 4f 75 | laborate.intrinsic.model.from.Ou |
| 23b40 | 6c 75 0a 0a 0a 0a 5b 6d 2c 6e 5d 20 3d 20 73 69 7a 65 28 58 29 3b 0a 0a 59 20 3d 20 52 2a 58 20 | lu....[m,n].=.size(X);..Y.=.R*X. |
| 23b60 | 2b 20 54 2a 6f 6e 65 73 28 31 2c 6e 29 3b 0a 5a 20 3d 20 59 28 33 2c 3a 29 3b 0a 0a 66 20 3d 20 | +.T*ones(1,n);.Z.=.Y(3,:);..f.=. |
| 23b80 | 66 28 3a 29 3b 20 25 25 20 6d 61 6b 65 20 61 20 63 6f 6c 75 6d 6e 20 76 65 63 74 6f 72 0a 69 66 | f(:);.%%.make.a.column.vector.if |
| 23ba0 | 20 6c 65 6e 67 74 68 28 66 29 3d 3d 31 2c 0a 20 20 20 66 20 3d 20 5b 66 20 66 5d 27 3b 0a 65 6e | .length(f)==1,....f.=.[f.f]';.en |
| 23bc0 | 64 3b 0a 0a 78 20 3d 20 28 59 28 31 3a 32 2c 3a 29 20 2e 2f 20 28 6f 6e 65 73 28 32 2c 31 29 20 | d;..x.=.(Y(1:2,:)../.(ones(2,1). |
| 23be0 | 2a 20 5a 29 29 20 3b 0a 0a 0a 72 61 64 69 75 73 5f 32 20 3d 20 78 28 31 2c 3a 29 2e 5e 32 20 2b | *.Z)).;...radius_2.=.x(1,:).^2.+ |
| 23c00 | 20 78 28 32 2c 3a 29 2e 5e 32 3b 0a 0a 69 66 20 6c 65 6e 67 74 68 28 6b 29 20 3e 20 31 2c 0a 0a | .x(2,:).^2;..if.length(k).>.1,.. |
| 23c20 | 20 20 20 72 61 64 69 61 6c 5f 64 69 73 74 6f 72 74 69 6f 6e 20 3d 20 31 20 2b 20 6f 6e 65 73 28 | ...radial_distortion.=.1.+.ones( |
| 23c40 | 32 2c 31 29 20 2a 20 28 28 6b 28 31 29 20 2a 20 72 61 64 69 75 73 5f 32 29 20 2b 20 28 6b 28 32 | 2,1).*.((k(1).*.radius_2).+.(k(2 |
| 23c60 | 29 20 2a 20 72 61 64 69 75 73 5f 32 2e 5e 32 29 29 3b 0a 20 20 20 0a 20 20 20 69 66 20 6c 65 6e | ).*.radius_2.^2));........if.len |
| 23c80 | 67 74 68 28 6b 29 20 3c 20 34 2c 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 64 65 6c 74 61 5f 78 | gth(k).<.4,..............delta_x |
| 23ca0 | 20 3d 20 7a 65 72 6f 73 28 32 2c 6e 29 3b 20 0a 20 20 20 20 20 20 0a 20 20 20 65 6c 73 65 0a 20 | .=.zeros(2,n);............else.. |
| 23cc0 | 20 20 0a 20 20 20 20 20 20 64 65 6c 74 61 5f 78 20 3d 20 5b 32 2a 6b 28 33 29 2a 78 28 31 2c 3a | .........delta_x.=.[2*k(3)*x(1,: |
| 23ce0 | 29 2e 2a 78 28 32 2c 3a 29 20 2b 20 6b 28 34 29 2a 28 72 61 64 69 75 73 5f 32 20 2b 20 32 2a 78 | ).*x(2,:).+.k(4)*(radius_2.+.2*x |
| 23d00 | 28 31 2c 3a 29 2e 5e 32 29 20 3b 0a 09 20 20 20 20 6b 28 33 29 20 2a 20 28 72 61 64 69 75 73 5f | (1,:).^2).;......k(3).*.(radius_ |
| 23d20 | 32 20 2b 20 32 2a 78 28 32 2c 3a 29 2e 5e 32 29 2b 32 2a 6b 28 34 29 2a 78 28 31 2c 3a 29 2e 2a | 2.+.2*x(2,:).^2)+2*k(4)*x(1,:).* |
| 23d40 | 78 28 32 2c 3a 29 5d 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 0a 0a | x(2,:)];...........end;......... |
| 23d60 | 65 6c 73 65 0a 20 20 20 0a 20 20 20 72 61 64 69 61 6c 5f 64 69 73 74 6f 72 74 69 6f 6e 20 3d 20 | else........radial_distortion.=. |
| 23d80 | 31 20 2b 20 6f 6e 65 73 28 32 2c 31 29 20 2a 20 28 28 6b 28 31 29 20 2a 20 72 61 64 69 75 73 5f | 1.+.ones(2,1).*.((k(1).*.radius_ |
| 23da0 | 32 29 29 3b 0a 0a 20 20 20 64 65 6c 74 61 5f 78 20 3d 20 7a 65 72 6f 73 28 32 2c 6e 29 3b 0a 20 | 2));.....delta_x.=.zeros(2,n);.. |
| 23dc0 | 20 20 0a 65 6e 64 3b 0a 0a 0a 78 20 3d 20 28 78 20 2e 2a 20 72 61 64 69 61 6c 5f 64 69 73 74 6f | ...end;...x.=.(x..*.radial_disto |
| 23de0 | 72 74 69 6f 6e 20 2b 20 64 65 6c 74 61 5f 78 29 2e 2a 20 28 66 20 2a 20 6f 6e 65 73 28 31 2c 6e | rtion.+.delta_x).*.(f.*.ones(1,n |
| 23e00 | 29 29 20 20 2b 20 74 2a 6f 6e 65 73 28 31 2c 6e 29 3b 0a 7a 65 2e 6d 00 00 00 07 b4 00 02 36 b8 | ))..+.t*ones(1,n);.ze.m.......6. |
| 23e20 | 00 1c 00 0e 72 69 67 69 64 5f 6d 6f 74 69 6f 6e 2e 6d 00 00 00 00 07 d8 00 02 36 b9 00 28 00 18 | ....rigid_motion.m........6..(.. |
| 23e40 | 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 69 6e 69 74 2e 6d 00 00 00 00 00 00 08 00 | compute_extrinsic_init.m........ |
| 23e60 | 00 02 36 ba 00 28 00 1a 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 72 65 66 69 6e 65 | ..6..(..compute_extrinsic_refine |
| 23e80 | 2e 6d 00 27 00 00 0a 00 00 02 36 bb 00 24 00 15 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 | .m.'......6..$..go_calib_optim_i |
| 23ea0 | 74 65 72 2e 6d 00 0a 63 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 74 65 72 2e 6d 00 0a 00 | ter.m..cgo_calib_optim_iter.m... |
| 23ec0 | 00 02 36 bb 00 24 00 15 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 74 65 72 2e 6d 00 0a 00 | ..6..$..go_calib_optim_iter.m... |
| 23ee0 | 00 02 36 bb 00 24 00 15 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 74 65 72 2e 6d 00 36 bb | ..6..$..go_calib_optim_iter.m.6. |
| 23f00 | 00 24 00 15 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 74 65 72 2e 6d 00 0a 00 6c 6c 65 64 | .$..go_calib_optim_iter.m...lled |
| 23f20 | 20 77 69 74 68 69 6e 20 74 68 61 74 20 70 72 6f 67 72 61 6d 3a 0a 25 0a 25 63 6f 6d 70 75 74 65 | .within.that.program:.%.%compute |
| 23f40 | 5f 68 6f 6d 6f 67 72 61 70 68 79 2e 6d 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 70 6c 61 6e | _homography.m:.Computes.the.plan |
| 23f60 | 61 72 20 68 6f 6d 6f 67 72 61 70 68 79 20 62 65 74 77 65 65 6e 20 70 6f 69 6e 74 73 20 6f 6e 20 | ar.homography.between.points.on. |
| 23f80 | 74 68 65 20 67 72 69 64 20 69 6e 20 33 44 2c 20 61 6e 64 20 74 68 65 20 69 6d 61 67 65 20 70 6c | the.grid.in.3D,.and.the.image.pl |
| 23fa0 | 61 6e 65 2e 0a 25 0a 25 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 2e 6d 3a 20 43 6f 6d | ane..%.%compute_extrinsic.m:.Com |
| 23fc0 | 70 75 74 65 73 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 20 6f 66 20 61 20 67 72 69 64 20 61 73 73 | putes.the.location.of.a.grid.ass |
| 23fe0 | 75 6d 69 6e 67 20 6b 6e 6f 77 6e 20 69 6e 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 | uming.known.intrinsic.parameters |
| 24000 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 70 72 6f 6a 65 63 74 65 64 47 72 69 64 2e 6d 00 00 00 | TOOLBOX_calib/projectedGrid.m... |
| 24020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 24040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 24060 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 24080 | 20 20 20 20 37 31 34 20 20 37 30 32 34 30 33 37 33 34 33 20 20 31 31 33 34 35 00 20 00 00 00 00 | ....714..7024037343..11345...... |
| 240a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 240c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 240e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 24100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 24120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 24140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 24160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 24180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 241a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 241c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 241e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 24200 | 66 75 6e 63 74 69 6f 6e 20 5b 58 58 2c 48 5d 20 3d 20 70 72 6f 6a 65 63 74 65 64 47 72 69 64 20 | function.[XX,H].=.projectedGrid. |
| 24220 | 28 20 50 31 2c 20 50 32 2c 20 50 33 2c 20 50 34 20 2c 20 6e 78 2c 20 6e 79 29 3b 0a 0a 25 20 6e | (.P1,.P2,.P3,.P4.,.nx,.ny);..%.n |
| 24240 | 65 77 20 66 6f 72 6d 61 6c 69 73 6d 20 75 73 69 6e 67 20 68 6f 6d 6f 67 72 61 70 68 69 65 73 0a | ew.formalism.using.homographies. |
| 24260 | 0a 61 30 30 20 3d 20 5b 50 31 3b 31 5d 3b 0a 61 31 30 20 3d 20 5b 50 32 3b 31 5d 3b 0a 61 31 31 | .a00.=.[P1;1];.a10.=.[P2;1];.a11 |
| 24280 | 20 3d 20 5b 50 33 3b 31 5d 3b 0a 61 30 31 20 3d 20 5b 50 34 3b 31 5d 3b 0a 0a 25 20 43 6f 6d 70 | .=.[P3;1];.a01.=.[P4;1];..%.Comp |
| 242a0 | 75 74 65 20 74 68 65 20 70 6c 61 6e 61 72 74 20 63 6f 6c 6c 69 6e 65 61 74 69 6f 6e 3a 0a 0a 5b | ute.the.planart.collineation:..[ |
| 242c0 | 48 5d 20 3d 20 63 6f 6d 70 75 74 65 5f 63 6f 6c 6c 69 6e 65 61 74 69 6f 6e 20 28 61 30 30 2c 20 | H].=.compute_collineation.(a00,. |
| 242e0 | 61 31 30 2c 20 61 31 31 2c 20 61 30 31 29 3b 0a 0a 0a 25 20 42 75 69 6c 64 20 74 68 65 20 67 72 | a10,.a11,.a01);...%.Build.the.gr |
| 24300 | 69 64 20 75 73 69 6e 67 20 74 68 65 20 70 6c 61 6e 61 72 20 63 6f 6c 6c 69 6e 65 61 74 69 6f 6e | id.using.the.planar.collineation |
| 24320 | 3a 0a 0a 78 5f 6c 20 3d 20 28 28 30 3a 28 6e 78 2d 31 29 29 27 2a 6f 6e 65 73 28 31 2c 6e 79 29 | :..x_l.=.((0:(nx-1))'*ones(1,ny) |
| 24340 | 29 2f 28 6e 78 2d 31 29 3b 0a 79 5f 6c 20 3d 20 28 6f 6e 65 73 28 6e 78 2c 31 29 2a 28 30 3a 28 | )/(nx-1);.y_l.=.(ones(nx,1)*(0:( |
| 24360 | 6e 79 2d 31 29 29 29 2f 28 6e 79 2d 31 29 3b 0a 0a 70 74 73 20 3d 20 5b 78 5f 6c 28 3a 29 20 79 | ny-1)))/(ny-1);..pts.=.[x_l(:).y |
| 24380 | 5f 6c 28 3a 29 20 6f 6e 65 73 28 6e 78 2a 6e 79 2c 31 29 5d 27 3b 0a 0a 58 58 20 3d 20 48 2a 70 | _l(:).ones(nx*ny,1)]';..XX.=.H*p |
| 243a0 | 74 73 3b 0a 0a 58 58 20 3d 20 58 58 28 31 3a 32 2c 3a 29 20 2e 2f 20 28 6f 6e 65 73 28 32 2c 31 | ts;..XX.=.XX(1:2,:)../.(ones(2,1 |
| 243c0 | 29 2a 58 58 28 33 2c 3a 29 29 3b 0a 63 65 6e 74 65 72 33 44 2e 6d 00 1a 00 00 05 dc 00 02 36 a5 | )*XX(3,:));.center3D.m........6. |
| 243e0 | 00 18 00 09 73 74 61 72 74 75 70 2e 6d 00 33 44 00 00 05 f0 00 02 36 a6 00 18 00 09 74 65 73 74 | ....startup.m.3D......6.....test |
| 24400 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 2e 6d 00 00 | TOOLBOX_calib/project_points.m.. |
| 24420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 24440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 24460 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 24480 | 20 20 31 35 33 34 33 20 20 37 30 32 34 30 33 37 33 34 33 20 20 31 31 36 36 36 00 20 00 00 00 00 | ..15343..7024037343..11666...... |
| 244a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 244c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 244e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 24500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 24520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 24540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 24560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 24580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 245a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 245c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 245e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 24600 | 66 75 6e 63 74 69 6f 6e 20 5b 78 70 2c 64 78 70 64 6f 6d 2c 64 78 70 64 54 2c 64 78 70 64 66 2c | function.[xp,dxpdom,dxpdT,dxpdf, |
| 24620 | 64 78 70 64 63 2c 64 78 70 64 6b 5d 20 3d 20 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 28 58 2c | dxpdc,dxpdk].=.project_points(X, |
| 24640 | 6f 6d 2c 54 2c 66 2c 63 2c 6b 29 0a 0a 25 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 2e 6d 0a 25 | om,T,f,c,k)..%project_points.m.% |
| 24660 | 0a 25 5b 78 70 2c 64 78 70 64 6f 6d 2c 64 78 70 64 54 2c 64 78 70 64 66 2c 64 78 70 64 63 2c 64 | .%[xp,dxpdom,dxpdT,dxpdf,dxpdc,d |
| 24680 | 78 70 64 6b 5d 20 3d 20 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 28 58 2c 6f 6d 2c 54 2c 66 2c | xpdk].=.project_points(X,om,T,f, |
| 246a0 | 63 2c 6b 29 0a 25 0a 25 50 72 6f 6a 65 63 74 73 20 61 20 33 44 20 73 74 72 75 63 74 75 72 65 20 | c,k).%.%Projects.a.3D.structure. |
| 246c0 | 6f 6e 74 6f 20 74 68 65 20 69 6d 61 67 65 20 70 6c 61 6e 65 2e 0a 25 0a 25 49 4e 50 55 54 3a 20 | onto.the.image.plane..%.%INPUT:. |
| 246e0 | 58 3a 20 33 44 20 73 74 72 75 63 74 75 72 65 20 69 6e 20 74 68 65 20 77 6f 72 6c 64 20 63 6f 6f | X:.3D.structure.in.the.world.coo |
| 24700 | 72 64 69 6e 61 74 65 20 66 72 61 6d 65 20 28 33 78 4e 20 6d 61 74 72 69 78 20 66 6f 72 20 4e 20 | rdinate.frame.(3xN.matrix.for.N. |
| 24720 | 70 6f 69 6e 74 73 29 0a 25 20 20 20 20 20 20 20 28 6f 6d 2c 54 29 3a 20 52 69 67 69 64 20 6d 6f | points).%.......(om,T):.Rigid.mo |
| 24740 | 74 69 6f 6e 20 70 61 72 61 6d 65 74 65 72 73 20 62 65 74 77 65 65 6e 20 77 6f 72 6c 64 20 63 6f | tion.parameters.between.world.co |
| 24760 | 6f 72 64 69 6e 61 74 65 20 66 72 61 6d 65 20 61 6e 64 20 63 61 6d 65 72 61 20 72 65 66 65 72 65 | ordinate.frame.and.camera.refere |
| 24780 | 6e 63 65 20 66 72 61 6d 65 0a 25 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 6d 3a 20 72 6f | nce.frame.%...............om:.ro |
| 247a0 | 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 28 33 78 31 20 76 65 63 74 6f 72 29 3b 20 54 3a 20 74 | tation.vector.(3x1.vector);.T:.t |
| 247c0 | 72 61 6e 73 6c 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 28 33 78 31 20 76 65 63 74 6f 72 29 0a 25 | ranslation.vector.(3x1.vector).% |
| 247e0 | 20 20 20 20 20 20 20 66 3a 20 63 61 6d 65 72 61 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 20 69 6e | .......f:.camera.focal.length.in |
| 24800 | 20 75 6e 69 74 73 20 6f 66 20 68 6f 72 69 7a 6f 6e 74 61 6c 20 61 6e 64 20 76 65 72 74 69 63 61 | .units.of.horizontal.and.vertica |
| 24820 | 6c 20 70 69 78 65 6c 20 75 6e 69 74 73 20 28 32 78 31 20 76 65 63 74 6f 72 29 0a 25 20 20 20 20 | l.pixel.units.(2x1.vector).%.... |
| 24840 | 20 20 20 63 3a 20 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 6c 6f 63 61 74 69 6f 6e 20 69 | ...c:.principal.point.location.i |
| 24860 | 6e 20 70 69 78 65 6c 20 75 6e 69 74 73 20 28 32 78 31 20 76 65 63 74 6f 72 29 0a 25 20 20 20 20 | n.pixel.units.(2x1.vector).%.... |
| 24880 | 20 20 20 6b 3a 20 44 69 73 74 6f 72 74 69 6f 6e 20 63 6f 65 66 66 69 63 69 65 6e 74 73 20 28 72 | ...k:.Distortion.coefficients.(r |
| 248a0 | 61 64 69 61 6c 20 61 6e 64 20 74 61 6e 67 65 6e 74 69 61 6c 29 20 28 34 78 31 20 76 65 63 74 6f | adial.and.tangential).(4x1.vecto |
| 248c0 | 72 29 0a 25 0a 25 4f 55 54 50 55 54 3a 20 78 70 3a 20 50 72 6f 6a 65 63 74 65 64 20 70 69 78 65 | r).%.%OUTPUT:.xp:.Projected.pixe |
| 248e0 | 6c 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 28 32 78 4e 20 6d 61 74 72 69 78 20 66 6f 72 20 4e 20 | l.coordinates.(2xN.matrix.for.N. |
| 24900 | 70 6f 69 6e 74 73 29 0a 25 20 20 20 20 20 20 20 20 64 78 70 64 6f 6d 3a 20 44 65 72 69 76 61 74 | points).%........dxpdom:.Derivat |
| 24920 | 69 76 65 20 6f 66 20 78 70 20 77 69 74 68 20 72 65 73 70 65 63 74 20 74 6f 20 6f 6d 20 28 28 32 | ive.of.xp.with.respect.to.om.((2 |
| 24940 | 4e 29 78 33 20 6d 61 74 72 69 78 29 0a 25 20 20 20 20 20 20 20 20 64 78 70 64 54 3a 20 44 65 72 | N)x3.matrix).%........dxpdT:.Der |
| 24960 | 69 76 61 74 69 76 65 20 6f 66 20 78 70 20 77 69 74 68 20 72 65 73 70 65 63 74 20 74 6f 20 54 20 | ivative.of.xp.with.respect.to.T. |
| 24980 | 28 28 32 4e 29 78 33 20 6d 61 74 72 69 78 29 0a 25 20 20 20 20 20 20 20 20 64 78 70 64 66 3a 20 | ((2N)x3.matrix).%........dxpdf:. |
| 249a0 | 44 65 72 69 76 61 74 69 76 65 20 6f 66 20 78 70 20 77 69 74 68 20 72 65 73 70 65 63 74 20 74 6f | Derivative.of.xp.with.respect.to |
| 249c0 | 20 66 20 28 28 32 4e 29 78 32 20 6d 61 74 72 69 78 29 0a 25 20 20 20 20 20 20 20 20 64 78 70 64 | .f.((2N)x2.matrix).%........dxpd |
| 249e0 | 63 3a 20 44 65 72 69 76 61 74 69 76 65 20 6f 66 20 78 70 20 77 69 74 68 20 72 65 73 70 65 63 74 | c:.Derivative.of.xp.with.respect |
| 24a00 | 20 74 6f 20 63 20 28 28 32 4e 29 78 32 20 6d 61 74 72 69 78 29 0a 25 20 20 20 20 20 20 20 20 64 | .to.c.((2N)x2.matrix).%........d |
| 24a20 | 78 70 64 6b 3a 20 44 65 72 69 76 61 74 69 76 65 20 6f 66 20 78 70 20 77 69 74 68 20 72 65 73 70 | xpdk:.Derivative.of.xp.with.resp |
| 24a40 | 65 63 74 20 74 6f 20 6b 20 28 28 32 4e 29 78 34 20 6d 61 74 72 69 78 29 0a 25 0a 25 44 65 66 69 | ect.to.k.((2N)x4.matrix).%.%Defi |
| 24a60 | 6e 69 74 69 6f 6e 73 3a 0a 25 4c 65 74 20 50 20 62 65 20 61 20 70 6f 69 6e 74 20 69 6e 20 33 44 | nitions:.%Let.P.be.a.point.in.3D |
| 24a80 | 20 6f 66 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 58 20 69 6e 20 74 68 65 20 77 6f 72 6c 64 20 72 | .of.coordinates.X.in.the.world.r |
| 24aa0 | 65 66 65 72 65 6e 63 65 20 66 72 61 6d 65 20 28 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 6d 61 | eference.frame.(stored.in.the.ma |
| 24ac0 | 74 72 69 78 20 58 29 0a 25 54 68 65 20 63 6f 6f 72 64 69 6e 61 74 65 20 76 65 63 74 6f 72 20 6f | trix.X).%The.coordinate.vector.o |
| 24ae0 | 66 20 50 20 69 6e 20 74 68 65 20 63 61 6d 65 72 61 20 72 65 66 65 72 65 6e 63 65 20 66 72 61 6d | f.P.in.the.camera.reference.fram |
| 24b00 | 65 20 69 73 3a 20 58 63 20 3d 20 52 2a 58 20 2b 20 54 0a 25 77 68 65 72 65 20 52 20 69 73 20 74 | e.is:.Xc.=.R*X.+.T.%where.R.is.t |
| 24b20 | 68 65 20 72 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 78 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 | he.rotation.matrix.corresponding |
| 24b40 | 20 74 6f 20 74 68 65 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 6f 6d 3a 20 52 20 3d 20 | .to.the.rotation.vector.om:.R.=. |
| 24b60 | 72 6f 64 72 69 67 75 65 73 28 6f 6d 29 3b 0a 25 63 61 6c 6c 20 78 2c 20 79 20 61 6e 64 20 7a 20 | rodrigues(om);.%call.x,.y.and.z. |
| 24b80 | 74 68 65 20 33 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 6f 66 20 58 63 3a 20 78 20 3d 20 58 63 28 | the.3.coordinates.of.Xc:.x.=.Xc( |
| 24ba0 | 31 29 3b 20 79 20 3d 20 58 63 28 32 29 3b 20 7a 20 3d 20 58 63 28 33 29 3b 0a 25 54 68 65 20 70 | 1);.y.=.Xc(2);.z.=.Xc(3);.%The.p |
| 24bc0 | 69 6e 65 68 6f 6c 65 20 70 72 6f 6a 65 63 74 69 6f 6e 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 6f | inehole.projection.coordinates.o |
| 24be0 | 66 20 50 20 69 73 20 5b 61 3b 62 5d 20 77 68 65 72 65 20 61 3d 78 2f 7a 20 61 6e 64 20 62 3d 79 | f.P.is.[a;b].where.a=x/z.and.b=y |
| 24c00 | 2f 7a 2e 0a 25 63 61 6c 6c 20 72 5e 32 20 3d 20 61 5e 32 20 2b 20 62 5e 32 2e 0a 25 54 68 65 20 | /z..%call.r^2.=.a^2.+.b^2..%The. |
| 24c20 | 64 69 73 74 6f 72 74 65 64 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 61 72 65 3a | distorted.point.coordinates.are: |
| 24c40 | 20 78 64 20 3d 20 5b 78 78 3b 79 79 5d 20 77 68 65 72 65 3a 0a 25 0a 25 78 78 20 3d 20 61 20 2a | .xd.=.[xx;yy].where:.%.%xx.=.a.* |
| 24c60 | 20 28 31 20 2b 20 6b 63 28 31 29 2a 72 5e 32 20 2b 20 6b 63 28 32 29 2a 72 5e 34 29 20 20 20 20 | .(1.+.kc(1)*r^2.+.kc(2)*r^4).... |
| 24c80 | 20 20 2b 20 20 20 20 20 20 32 2a 6b 63 28 33 29 2a 61 2a 62 20 2b 20 6b 63 28 34 29 2a 28 72 5e | ..+......2*kc(3)*a*b.+.kc(4)*(r^ |
| 24ca0 | 32 20 2b 20 32 2a 61 5e 32 29 3b 0a 25 79 79 20 3d 20 62 20 2a 20 28 31 20 2b 20 6b 63 28 31 29 | 2.+.2*a^2);.%yy.=.b.*.(1.+.kc(1) |
| 24cc0 | 2a 72 5e 32 20 2b 20 6b 63 28 32 29 2a 72 5e 34 29 20 20 20 20 20 20 2b 20 20 20 20 20 20 6b 63 | *r^2.+.kc(2)*r^4)......+......kc |
| 24ce0 | 28 33 29 2a 28 72 5e 32 20 2b 20 32 2a 62 5e 32 29 20 2b 20 32 2a 6b 63 28 34 29 2a 61 2a 62 3b | (3)*(r^2.+.2*b^2).+.2*kc(4)*a*b; |
| 24d00 | 0a 25 0a 25 54 68 65 20 6c 65 66 74 20 74 65 72 6d 73 20 63 6f 72 72 65 73 70 6f 6e 64 20 74 6f | .%.%The.left.terms.correspond.to |
| 24d20 | 20 72 61 64 69 61 6c 20 64 69 73 74 6f 72 74 69 6f 6e 2c 20 74 68 65 20 72 69 67 68 74 20 74 65 | .radial.distortion,.the.right.te |
| 24d40 | 72 6d 73 20 63 6f 72 72 65 73 70 6f 6e 64 20 74 6f 20 74 61 6e 67 65 6e 74 69 61 6c 20 64 69 73 | rms.correspond.to.tangential.dis |
| 24d60 | 74 6f 72 74 69 6f 6e 0a 25 0a 25 46 69 61 6e 6c 6c 79 2c 20 63 6f 6e 76 65 72 74 69 6f 6e 20 69 | tortion.%.%Fianlly,.convertion.i |
| 24d80 | 6e 74 6f 20 70 69 78 65 6c 20 63 6f 6f 72 64 69 6e 61 74 65 73 3a 20 54 68 65 20 66 69 6e 61 6c | nto.pixel.coordinates:.The.final |
| 24da0 | 20 70 69 78 65 6c 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 76 65 63 74 6f 72 20 78 70 3d 5b 78 78 | .pixel.coordinates.vector.xp=[xx |
| 24dc0 | 70 3b 79 79 70 5d 20 77 68 65 72 65 3a 0a 25 0a 25 78 78 70 20 3d 20 66 28 31 29 2a 78 78 20 2b | p;yyp].where:.%.%xxp.=.f(1)*xx.+ |
| 24de0 | 20 63 28 31 29 0a 25 79 79 70 20 3d 20 66 28 32 29 2a 79 79 20 2b 20 63 28 32 29 0a 25 0a 25 0a | .c(1).%yyp.=.f(2)*yy.+.c(2).%.%. |
| 24e00 | 25 4e 4f 54 45 3a 20 41 62 6f 75 74 20 39 30 20 70 65 72 63 65 6e 74 20 6f 66 20 74 68 65 20 63 | %NOTE:.About.90.percent.of.the.c |
| 24e20 | 6f 64 65 20 74 61 6b 65 73 20 63 61 72 65 20 66 6f 20 63 6f 6d 70 75 74 69 6e 67 20 74 68 65 20 | ode.takes.care.fo.computing.the. |
| 24e40 | 4a 61 63 6f 62 69 61 6e 20 6d 61 74 72 69 63 65 73 0a 25 0a 25 0a 25 49 6d 70 6f 72 74 61 6e 74 | Jacobian.matrices.%.%.%Important |
| 24e60 | 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 65 64 20 77 69 74 68 69 6e 20 74 68 61 74 20 70 72 6f | .function.called.within.that.pro |
| 24e80 | 67 72 61 6d 3a 0a 25 0a 25 72 6f 64 72 69 67 75 65 73 2e 6d 3a 20 43 6f 6d 70 75 74 65 73 20 74 | gram:.%.%rodrigues.m:.Computes.t |
| 24ea0 | 68 65 20 72 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 78 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 | he.rotation.matrix.corresponding |
| 24ec0 | 20 74 6f 20 61 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 0a 25 0a 25 72 69 67 69 64 5f 6d | .to.a.rotation.vector.%.%rigid_m |
| 24ee0 | 6f 74 69 6f 6e 2e 6d 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 72 69 67 69 64 20 6d 6f 74 69 | otion.m:.Computes.the.rigid.moti |
| 24f00 | 6f 6e 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 6f 66 20 61 20 67 69 76 65 6e 20 73 74 72 | on.transformation.of.a.given.str |
| 24f20 | 75 63 74 75 72 65 0a 0a 0a 0a 69 66 20 6e 61 72 67 69 6e 20 3c 20 36 2c 0a 20 20 20 6b 20 3d 20 | ucture....if.nargin.<.6,....k.=. |
| 24f40 | 7a 65 72 6f 73 28 34 2c 31 29 3b 0a 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3c 20 35 2c 0a 20 20 | zeros(4,1);....if.nargin.<.5,... |
| 24f60 | 20 20 20 20 63 20 3d 20 7a 65 72 6f 73 28 32 2c 31 29 3b 0a 20 20 20 20 20 20 69 66 20 6e 61 72 | ....c.=.zeros(2,1);.......if.nar |
| 24f80 | 67 69 6e 20 3c 20 34 2c 0a 20 20 20 20 20 20 20 20 20 66 20 3d 20 6f 6e 65 73 28 32 2c 31 29 3b | gin.<.4,..........f.=.ones(2,1); |
| 24fa0 | 0a 20 20 20 20 20 20 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3c 20 33 2c 0a 20 20 20 20 20 20 20 | ..........if.nargin.<.3,........ |
| 24fc0 | 20 20 20 20 20 54 20 3d 20 7a 65 72 6f 73 28 33 2c 31 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 | .....T.=.zeros(3,1);............ |
| 24fe0 | 20 69 66 20 6e 61 72 67 69 6e 20 3c 20 32 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f | .if.nargin.<.2,................o |
| 25000 | 6d 20 3d 20 7a 65 72 6f 73 28 33 2c 31 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 | m.=.zeros(3,1);................i |
| 25020 | 66 20 6e 61 72 67 69 6e 20 3c 20 31 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | f.nargin.<.1,................... |
| 25040 | 65 72 72 6f 72 28 27 4e 65 65 64 20 61 74 20 6c 65 61 73 74 20 61 20 33 44 20 73 74 72 75 63 74 | error('Need.at.least.a.3D.struct |
| 25060 | 75 72 65 20 74 6f 20 70 72 6f 6a 65 63 74 20 28 69 6e 20 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 | ure.to.project.(in.project_point |
| 25080 | 73 2e 6d 29 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e | s.m)');...................return |
| 250a0 | 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 20 20 20 20 | ;................end;........... |
| 250c0 | 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 65 6e 64 3b 0a | ..end;..........end;.......end;. |
| 250e0 | 20 20 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 0a 5b 6d 2c 6e 5d 20 3d 20 73 69 7a 65 28 58 29 3b 0a | ...end;.end;...[m,n].=.size(X);. |
| 25100 | 0a 5b 59 2c 64 59 64 6f 6d 2c 64 59 64 54 5d 20 3d 20 72 69 67 69 64 5f 6d 6f 74 69 6f 6e 28 58 | .[Y,dYdom,dYdT].=.rigid_motion(X |
| 25120 | 2c 6f 6d 2c 54 29 3b 0a 0a 0a 69 6e 76 5f 5a 20 3d 20 31 2e 2f 59 28 33 2c 3a 29 3b 0a 0a 78 20 | ,om,T);...inv_Z.=.1./Y(3,:);..x. |
| 25140 | 3d 20 28 59 28 31 3a 32 2c 3a 29 20 2e 2a 20 28 6f 6e 65 73 28 32 2c 31 29 20 2a 20 69 6e 76 5f | =.(Y(1:2,:)..*.(ones(2,1).*.inv_ |
| 25160 | 5a 29 29 20 3b 0a 0a 0a 62 62 20 3d 20 28 2d 78 28 31 2c 3a 29 20 2e 2a 20 69 6e 76 5f 5a 29 27 | Z)).;...bb.=.(-x(1,:)..*.inv_Z)' |
| 25180 | 2a 6f 6e 65 73 28 31 2c 33 29 3b 0a 63 63 20 3d 20 28 2d 78 28 32 2c 3a 29 20 2e 2a 20 69 6e 76 | *ones(1,3);.cc.=.(-x(2,:)..*.inv |
| 251a0 | 5f 5a 29 27 2a 6f 6e 65 73 28 31 2c 33 29 3b 0a 0a 0a 64 78 64 6f 6d 20 3d 20 7a 65 72 6f 73 28 | _Z)'*ones(1,3);...dxdom.=.zeros( |
| 251c0 | 32 2a 6e 2c 33 29 3b 0a 64 78 64 6f 6d 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 28 28 69 6e 76 | 2*n,3);.dxdom(1:2:end,:).=.((inv |
| 251e0 | 5f 5a 27 29 2a 6f 6e 65 73 28 31 2c 33 29 29 20 2e 2a 20 64 59 64 6f 6d 28 31 3a 33 3a 65 6e 64 | _Z')*ones(1,3))..*.dYdom(1:3:end |
| 25200 | 2c 3a 29 20 2b 20 62 62 20 2e 2a 20 64 59 64 6f 6d 28 33 3a 33 3a 65 6e 64 2c 3a 29 3b 0a 64 78 | ,:).+.bb..*.dYdom(3:3:end,:);.dx |
| 25220 | 64 6f 6d 28 32 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 28 28 69 6e 76 5f 5a 27 29 2a 6f 6e 65 73 28 | dom(2:2:end,:).=.((inv_Z')*ones( |
| 25240 | 31 2c 33 29 29 20 2e 2a 20 64 59 64 6f 6d 28 32 3a 33 3a 65 6e 64 2c 3a 29 20 2b 20 63 63 20 2e | 1,3))..*.dYdom(2:3:end,:).+.cc.. |
| 25260 | 2a 20 64 59 64 6f 6d 28 33 3a 33 3a 65 6e 64 2c 3a 29 3b 0a 0a 64 78 64 54 20 3d 20 7a 65 72 6f | *.dYdom(3:3:end,:);..dxdT.=.zero |
| 25280 | 73 28 32 2a 6e 2c 33 29 3b 0a 64 78 64 54 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 28 28 69 6e | s(2*n,3);.dxdT(1:2:end,:).=.((in |
| 252a0 | 76 5f 5a 27 29 2a 6f 6e 65 73 28 31 2c 33 29 29 20 2e 2a 20 64 59 64 54 28 31 3a 33 3a 65 6e 64 | v_Z')*ones(1,3))..*.dYdT(1:3:end |
| 252c0 | 2c 3a 29 20 2b 20 62 62 20 2e 2a 20 64 59 64 54 28 33 3a 33 3a 65 6e 64 2c 3a 29 3b 0a 64 78 64 | ,:).+.bb..*.dYdT(3:3:end,:);.dxd |
| 252e0 | 54 28 32 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 28 28 69 6e 76 5f 5a 27 29 2a 6f 6e 65 73 28 31 2c | T(2:2:end,:).=.((inv_Z')*ones(1, |
| 25300 | 33 29 29 20 2e 2a 20 64 59 64 54 28 32 3a 33 3a 65 6e 64 2c 3a 29 20 2b 20 63 63 20 2e 2a 20 64 | 3))..*.dYdT(2:3:end,:).+.cc..*.d |
| 25320 | 59 64 54 28 33 3a 33 3a 65 6e 64 2c 3a 29 3b 0a 0a 0a 25 20 41 64 64 20 64 69 73 74 6f 72 74 69 | YdT(3:3:end,:);...%.Add.distorti |
| 25340 | 6f 6e 3a 0a 0a 72 32 20 3d 20 78 28 31 2c 3a 29 2e 5e 32 20 2b 20 78 28 32 2c 3a 29 2e 5e 32 3b | on:..r2.=.x(1,:).^2.+.x(2,:).^2; |
| 25360 | 0a 0a 0a 0a 64 72 32 64 6f 6d 20 3d 20 32 2a 28 28 78 28 31 2c 3a 29 27 29 2a 6f 6e 65 73 28 31 | ....dr2dom.=.2*((x(1,:)')*ones(1 |
| 25380 | 2c 33 29 29 20 2e 2a 20 64 78 64 6f 6d 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 2b 20 32 2a 28 28 78 | ,3))..*.dxdom(1:2:end,:).+.2*((x |
| 253a0 | 28 32 2c 3a 29 27 29 2a 6f 6e 65 73 28 31 2c 33 29 29 20 2e 2a 20 64 78 64 6f 6d 28 32 3a 32 3a | (2,:)')*ones(1,3))..*.dxdom(2:2: |
| 253c0 | 65 6e 64 2c 3a 29 3b 0a 64 72 32 64 54 20 3d 20 32 2a 28 28 78 28 31 2c 3a 29 27 29 2a 6f 6e 65 | end,:);.dr2dT.=.2*((x(1,:)')*one |
| 253e0 | 73 28 31 2c 33 29 29 20 2e 2a 20 64 78 64 54 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 2b 20 32 2a 28 | s(1,3))..*.dxdT(1:2:end,:).+.2*( |
| 25400 | 28 78 28 32 2c 3a 29 27 29 2a 6f 6e 65 73 28 31 2c 33 29 29 20 2e 2a 20 64 78 64 54 28 32 3a 32 | (x(2,:)')*ones(1,3))..*.dxdT(2:2 |
| 25420 | 3a 65 6e 64 2c 3a 29 3b 0a 0a 0a 72 34 20 3d 20 72 32 2e 5e 32 3b 0a 0a 64 72 34 64 6f 6d 20 3d | :end,:);...r4.=.r2.^2;..dr4dom.= |
| 25440 | 20 32 2a 28 28 72 32 27 29 2a 6f 6e 65 73 28 31 2c 33 29 29 20 2e 2a 20 64 72 32 64 6f 6d 3b 0a | .2*((r2')*ones(1,3))..*.dr2dom;. |
| 25460 | 64 72 34 64 54 20 3d 20 32 2a 28 28 72 32 27 29 2a 6f 6e 65 73 28 31 2c 33 29 29 20 2e 2a 20 64 | dr4dT.=.2*((r2')*ones(1,3))..*.d |
| 25480 | 72 32 64 54 3b 0a 0a 0a 25 20 52 61 64 69 61 6c 20 64 69 73 74 6f 72 74 69 6f 6e 3a 0a 0a 63 64 | r2dT;...%.Radial.distortion:..cd |
| 254a0 | 69 73 74 20 3d 20 31 20 2b 20 6b 28 31 29 20 2a 20 72 32 20 2b 20 6b 28 32 29 20 2a 20 72 34 3b | ist.=.1.+.k(1).*.r2.+.k(2).*.r4; |
| 254c0 | 0a 0a 64 63 64 69 73 74 64 6f 6d 20 3d 20 6b 28 31 29 20 2a 20 64 72 32 64 6f 6d 20 2b 20 6b 28 | ..dcdistdom.=.k(1).*.dr2dom.+.k( |
| 254e0 | 32 29 20 2a 20 64 72 34 64 6f 6d 3b 0a 64 63 64 69 73 74 64 54 20 3d 20 6b 28 31 29 20 2a 20 64 | 2).*.dr4dom;.dcdistdT.=.k(1).*.d |
| 25500 | 72 32 64 54 2b 20 6b 28 32 29 20 2a 20 64 72 34 64 54 3b 0a 64 63 64 69 73 74 64 6b 20 3d 20 5b | r2dT+.k(2).*.dr4dT;.dcdistdk.=.[ |
| 25520 | 20 72 32 27 20 72 34 27 20 7a 65 72 6f 73 28 6e 2c 32 29 5d 3b 0a 0a 0a 78 64 31 20 3d 20 78 20 | .r2'.r4'.zeros(n,2)];...xd1.=.x. |
| 25540 | 2e 2a 20 28 6f 6e 65 73 28 32 2c 31 29 2a 63 64 69 73 74 29 3b 0a 0a 64 78 64 31 64 6f 6d 20 3d | .*.(ones(2,1)*cdist);..dxd1dom.= |
| 25560 | 20 7a 65 72 6f 73 28 32 2a 6e 2c 33 29 3b 0a 64 78 64 31 64 6f 6d 28 31 3a 32 3a 65 6e 64 2c 3a | .zeros(2*n,3);.dxd1dom(1:2:end,: |
| 25580 | 29 20 3d 20 28 78 28 31 2c 3a 29 27 2a 6f 6e 65 73 28 31 2c 33 29 29 20 2e 2a 20 64 63 64 69 73 | ).=.(x(1,:)'*ones(1,3))..*.dcdis |
| 255a0 | 74 64 6f 6d 3b 0a 64 78 64 31 64 6f 6d 28 32 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 28 78 28 32 2c | tdom;.dxd1dom(2:2:end,:).=.(x(2, |
| 255c0 | 3a 29 27 2a 6f 6e 65 73 28 31 2c 33 29 29 20 2e 2a 20 64 63 64 69 73 74 64 6f 6d 3b 0a 63 6f 65 | :)'*ones(1,3))..*.dcdistdom;.coe |
| 255e0 | 66 66 20 3d 20 28 72 65 73 68 61 70 65 28 5b 63 64 69 73 74 3b 63 64 69 73 74 5d 2c 32 2a 6e 2c | ff.=.(reshape([cdist;cdist],2*n, |
| 25600 | 31 29 2a 6f 6e 65 73 28 31 2c 33 29 29 3b 0a 64 78 64 31 64 6f 6d 20 3d 20 64 78 64 31 64 6f 6d | 1)*ones(1,3));.dxd1dom.=.dxd1dom |
| 25620 | 20 2b 20 63 6f 65 66 66 2e 2a 20 64 78 64 6f 6d 3b 0a 0a 64 78 64 31 64 54 20 3d 20 7a 65 72 6f | .+.coeff.*.dxdom;..dxd1dT.=.zero |
| 25640 | 73 28 32 2a 6e 2c 33 29 3b 0a 64 78 64 31 64 54 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 28 78 | s(2*n,3);.dxd1dT(1:2:end,:).=.(x |
| 25660 | 28 31 2c 3a 29 27 2a 6f 6e 65 73 28 31 2c 33 29 29 20 2e 2a 20 64 63 64 69 73 74 64 54 3b 0a 64 | (1,:)'*ones(1,3))..*.dcdistdT;.d |
| 25680 | 78 64 31 64 54 28 32 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 28 78 28 32 2c 3a 29 27 2a 6f 6e 65 73 | xd1dT(2:2:end,:).=.(x(2,:)'*ones |
| 256a0 | 28 31 2c 33 29 29 20 2e 2a 20 64 63 64 69 73 74 64 54 3b 0a 64 78 64 31 64 54 20 3d 20 64 78 64 | (1,3))..*.dcdistdT;.dxd1dT.=.dxd |
| 256c0 | 31 64 54 20 2b 20 63 6f 65 66 66 2e 2a 20 64 78 64 54 3b 0a 0a 64 78 64 31 64 6b 20 3d 20 7a 65 | 1dT.+.coeff.*.dxdT;..dxd1dk.=.ze |
| 256e0 | 72 6f 73 28 32 2a 6e 2c 34 29 3b 0a 64 78 64 31 64 6b 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 | ros(2*n,4);.dxd1dk(1:2:end,:).=. |
| 25700 | 28 78 28 31 2c 3a 29 27 2a 6f 6e 65 73 28 31 2c 34 29 29 20 2e 2a 20 64 63 64 69 73 74 64 6b 3b | (x(1,:)'*ones(1,4))..*.dcdistdk; |
| 25720 | 0a 64 78 64 31 64 6b 28 32 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 28 78 28 32 2c 3a 29 27 2a 6f 6e | .dxd1dk(2:2:end,:).=.(x(2,:)'*on |
| 25740 | 65 73 28 31 2c 34 29 29 20 2e 2a 20 64 63 64 69 73 74 64 6b 3b 0a 0a 0a 0a 25 20 74 61 6e 67 65 | es(1,4))..*.dcdistdk;....%.tange |
| 25760 | 6e 74 69 61 6c 20 64 69 73 74 6f 72 74 69 6f 6e 3a 0a 0a 61 31 20 3d 20 32 2e 2a 78 28 31 2c 3a | ntial.distortion:..a1.=.2.*x(1,: |
| 25780 | 29 2e 2a 78 28 32 2c 3a 29 3b 0a 61 32 20 3d 20 72 32 20 2b 20 32 2a 78 28 31 2c 3a 29 2e 5e 32 | ).*x(2,:);.a2.=.r2.+.2*x(1,:).^2 |
| 257a0 | 3b 0a 61 33 20 3d 20 72 32 20 2b 20 32 2a 78 28 32 2c 3a 29 2e 5e 32 3b 0a 0a 64 65 6c 74 61 5f | ;.a3.=.r2.+.2*x(2,:).^2;..delta_ |
| 257c0 | 78 20 3d 20 5b 6b 28 33 29 2a 61 31 20 2b 20 6b 28 34 29 2a 61 32 20 3b 0a 20 20 20 6b 28 33 29 | x.=.[k(3)*a1.+.k(4)*a2.;....k(3) |
| 257e0 | 20 2a 20 61 33 20 2b 20 6b 28 34 29 2a 61 31 5d 3b 0a 0a 0a 64 64 65 6c 74 61 5f 78 64 78 20 3d | .*.a3.+.k(4)*a1];...ddelta_xdx.= |
| 25800 | 20 7a 65 72 6f 73 28 32 2a 6e 2c 32 2a 6e 29 3b 0a 61 61 20 3d 20 28 32 2a 6b 28 33 29 2a 78 28 | .zeros(2*n,2*n);.aa.=.(2*k(3)*x( |
| 25820 | 32 2c 3a 29 2b 36 2a 6b 28 34 29 2a 78 28 31 2c 3a 29 29 27 2a 6f 6e 65 73 28 31 2c 33 29 3b 0a | 2,:)+6*k(4)*x(1,:))'*ones(1,3);. |
| 25840 | 62 62 20 3d 20 28 32 2a 6b 28 33 29 2a 78 28 31 2c 3a 29 2b 32 2a 6b 28 34 29 2a 78 28 32 2c 3a | bb.=.(2*k(3)*x(1,:)+2*k(4)*x(2,: |
| 25860 | 29 29 27 2a 6f 6e 65 73 28 31 2c 33 29 3b 0a 63 63 20 3d 20 28 36 2a 6b 28 33 29 2a 78 28 32 2c | ))'*ones(1,3);.cc.=.(6*k(3)*x(2, |
| 25880 | 3a 29 2b 32 2a 6b 28 34 29 2a 78 28 31 2c 3a 29 29 27 2a 6f 6e 65 73 28 31 2c 33 29 3b 0a 0a 64 | :)+2*k(4)*x(1,:))'*ones(1,3);..d |
| 258a0 | 64 65 6c 74 61 5f 78 64 6f 6d 20 3d 20 7a 65 72 6f 73 28 32 2a 6e 2c 33 29 3b 0a 64 64 65 6c 74 | delta_xdom.=.zeros(2*n,3);.ddelt |
| 258c0 | 61 5f 78 64 6f 6d 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 61 61 20 2e 2a 20 64 78 64 6f 6d 28 | a_xdom(1:2:end,:).=.aa..*.dxdom( |
| 258e0 | 31 3a 32 3a 65 6e 64 2c 3a 29 20 2b 20 62 62 20 2e 2a 20 64 78 64 6f 6d 28 32 3a 32 3a 65 6e 64 | 1:2:end,:).+.bb..*.dxdom(2:2:end |
| 25900 | 2c 3a 29 3b 0a 64 64 65 6c 74 61 5f 78 64 6f 6d 28 32 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 62 62 | ,:);.ddelta_xdom(2:2:end,:).=.bb |
| 25920 | 20 2e 2a 20 64 78 64 6f 6d 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 2b 20 63 63 20 2e 2a 20 64 78 64 | ..*.dxdom(1:2:end,:).+.cc..*.dxd |
| 25940 | 6f 6d 28 32 3a 32 3a 65 6e 64 2c 3a 29 3b 0a 0a 64 64 65 6c 74 61 5f 78 64 54 20 3d 20 7a 65 72 | om(2:2:end,:);..ddelta_xdT.=.zer |
| 25960 | 6f 73 28 32 2a 6e 2c 33 29 3b 0a 64 64 65 6c 74 61 5f 78 64 54 28 31 3a 32 3a 65 6e 64 2c 3a 29 | os(2*n,3);.ddelta_xdT(1:2:end,:) |
| 25980 | 20 3d 20 61 61 20 2e 2a 20 64 78 64 54 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 2b 20 62 62 20 2e 2a | .=.aa..*.dxdT(1:2:end,:).+.bb..* |
| 259a0 | 20 64 78 64 54 28 32 3a 32 3a 65 6e 64 2c 3a 29 3b 0a 64 64 65 6c 74 61 5f 78 64 54 28 32 3a 32 | .dxdT(2:2:end,:);.ddelta_xdT(2:2 |
| 259c0 | 3a 65 6e 64 2c 3a 29 20 3d 20 62 62 20 2e 2a 20 64 78 64 54 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 | :end,:).=.bb..*.dxdT(1:2:end,:). |
| 259e0 | 2b 20 63 63 20 2e 2a 20 64 78 64 54 28 32 3a 32 3a 65 6e 64 2c 3a 29 3b 0a 0a 64 64 65 6c 74 61 | +.cc..*.dxdT(2:2:end,:);..ddelta |
| 25a00 | 5f 78 64 6b 20 3d 20 7a 65 72 6f 73 28 32 2a 6e 2c 34 29 3b 0a 64 64 65 6c 74 61 5f 78 64 6b 28 | _xdk.=.zeros(2*n,4);.ddelta_xdk( |
| 25a20 | 31 3a 32 3a 65 6e 64 2c 33 29 20 3d 20 61 31 27 3b 0a 64 64 65 6c 74 61 5f 78 64 6b 28 31 3a 32 | 1:2:end,3).=.a1';.ddelta_xdk(1:2 |
| 25a40 | 3a 65 6e 64 2c 34 29 20 3d 20 61 32 27 3b 0a 64 64 65 6c 74 61 5f 78 64 6b 28 32 3a 32 3a 65 6e | :end,4).=.a2';.ddelta_xdk(2:2:en |
| 25a60 | 64 2c 33 29 20 3d 20 61 33 27 3b 0a 64 64 65 6c 74 61 5f 78 64 6b 28 32 3a 32 3a 65 6e 64 2c 34 | d,3).=.a3';.ddelta_xdk(2:2:end,4 |
| 25a80 | 29 20 3d 20 61 31 27 3b 0a 0a 0a 0a 78 64 32 20 3d 20 78 64 31 20 2b 20 64 65 6c 74 61 5f 78 3b | ).=.a1';....xd2.=.xd1.+.delta_x; |
| 25aa0 | 0a 0a 64 78 64 32 64 6f 6d 20 3d 20 64 78 64 31 64 6f 6d 20 2b 20 64 64 65 6c 74 61 5f 78 64 6f | ..dxd2dom.=.dxd1dom.+.ddelta_xdo |
| 25ac0 | 6d 20 3b 0a 64 78 64 32 64 54 20 3d 20 64 78 64 31 64 54 20 2b 20 64 64 65 6c 74 61 5f 78 64 54 | m.;.dxd2dT.=.dxd1dT.+.ddelta_xdT |
| 25ae0 | 3b 0a 64 78 64 32 64 6b 20 3d 20 64 78 64 31 64 6b 20 2b 20 64 64 65 6c 74 61 5f 78 64 6b 20 3b | ;.dxd2dk.=.dxd1dk.+.ddelta_xdk.; |
| 25b00 | 0a 0a 0a 25 20 50 69 78 65 6c 20 63 6f 6f 72 64 69 6e 61 74 65 73 3a 0a 0a 78 70 20 3d 20 78 64 | ...%.Pixel.coordinates:..xp.=.xd |
| 25b20 | 32 20 2e 2a 20 28 66 20 2a 20 6f 6e 65 73 28 31 2c 6e 29 29 20 20 2b 20 20 63 2a 6f 6e 65 73 28 | 2..*.(f.*.ones(1,n))..+..c*ones( |
| 25b40 | 31 2c 6e 29 3b 0a 0a 63 6f 65 66 66 20 3d 20 72 65 73 68 61 70 65 28 66 2a 6f 6e 65 73 28 31 2c | 1,n);..coeff.=.reshape(f*ones(1, |
| 25b60 | 6e 29 2c 32 2a 6e 2c 31 29 3b 0a 0a 64 78 70 64 6f 6d 20 3d 20 28 63 6f 65 66 66 2a 6f 6e 65 73 | n),2*n,1);..dxpdom.=.(coeff*ones |
| 25b80 | 28 31 2c 33 29 29 20 2e 2a 20 64 78 64 32 64 6f 6d 3b 0a 64 78 70 64 54 20 3d 20 28 63 6f 65 66 | (1,3))..*.dxd2dom;.dxpdT.=.(coef |
| 25ba0 | 66 2a 6f 6e 65 73 28 31 2c 33 29 29 20 2e 2a 20 64 78 64 32 64 54 3b 0a 64 78 70 64 6b 20 3d 20 | f*ones(1,3))..*.dxd2dT;.dxpdk.=. |
| 25bc0 | 28 63 6f 65 66 66 2a 6f 6e 65 73 28 31 2c 34 29 29 20 2e 2a 20 64 78 64 32 64 6b 3b 0a 0a 64 78 | (coeff*ones(1,4))..*.dxd2dk;..dx |
| 25be0 | 70 64 66 20 3d 20 7a 65 72 6f 73 28 32 2a 6e 2c 32 29 3b 0a 64 78 70 64 66 28 31 3a 32 3a 65 6e | pdf.=.zeros(2*n,2);.dxpdf(1:2:en |
| 25c00 | 64 2c 31 29 20 3d 20 78 64 32 28 31 2c 3a 29 27 3b 0a 64 78 70 64 66 28 32 3a 32 3a 65 6e 64 2c | d,1).=.xd2(1,:)';.dxpdf(2:2:end, |
| 25c20 | 32 29 20 3d 20 78 64 32 28 32 2c 3a 29 27 3b 0a 0a 64 78 70 64 63 20 3d 20 7a 65 72 6f 73 28 32 | 2).=.xd2(2,:)';..dxpdc.=.zeros(2 |
| 25c40 | 2a 6e 2c 32 29 3b 0a 64 78 70 64 63 28 31 3a 32 3a 65 6e 64 2c 31 29 20 3d 20 6f 6e 65 73 28 6e | *n,2);.dxpdc(1:2:end,1).=.ones(n |
| 25c60 | 2c 31 29 3b 0a 64 78 70 64 63 28 32 3a 32 3a 65 6e 64 2c 32 29 20 3d 20 6f 6e 65 73 28 6e 2c 31 | ,1);.dxpdc(2:2:end,2).=.ones(n,1 |
| 25c80 | 29 3b 0a 0a 0a 72 65 74 75 72 6e 3b 0a 0a 25 20 54 65 73 74 20 6f 66 20 74 68 65 20 4a 61 63 6f | );...return;..%.Test.of.the.Jaco |
| 25ca0 | 62 69 61 6e 73 3a 0a 0a 6e 20 3d 20 31 30 3b 0a 0a 58 20 3d 20 31 30 2a 72 61 6e 64 6e 28 33 2c | bians:..n.=.10;..X.=.10*randn(3, |
| 25cc0 | 6e 29 3b 0a 6f 6d 20 3d 20 72 61 6e 64 6e 28 33 2c 31 29 3b 0a 54 20 3d 20 5b 31 30 2a 72 61 6e | n);.om.=.randn(3,1);.T.=.[10*ran |
| 25ce0 | 64 6e 28 32 2c 31 29 3b 34 30 5d 3b 0a 66 20 3d 20 31 30 30 30 2a 72 61 6e 64 28 32 2c 31 29 3b | dn(2,1);40];.f.=.1000*rand(2,1); |
| 25d00 | 0a 63 20 3d 20 31 30 30 30 2a 72 61 6e 64 6e 28 32 2c 31 29 3b 0a 6b 20 3d 20 30 2e 35 2a 72 61 | .c.=.1000*randn(2,1);.k.=.0.5*ra |
| 25d20 | 6e 64 6e 28 34 2c 31 29 3b 0a 0a 0a 5b 78 2c 64 78 64 6f 6d 2c 64 78 64 54 2c 64 78 64 66 2c 64 | ndn(4,1);...[x,dxdom,dxdT,dxdf,d |
| 25d40 | 78 64 63 2c 64 78 64 6b 5d 20 3d 20 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 28 58 2c 6f 6d 2c | xdc,dxdk].=.project_points(X,om, |
| 25d60 | 54 2c 66 2c 63 2c 6b 29 3b 0a 0a 0a 25 20 54 65 73 74 20 6f 6e 20 6f 6d 3a 20 4e 4f 54 20 4f 4b | T,f,c,k);...%.Test.on.om:.NOT.OK |
| 25d80 | 0a 0a 64 6f 6d 20 3d 20 30 2e 30 30 30 30 30 30 30 30 31 20 2a 20 6e 6f 72 6d 28 6f 6d 29 2a 72 | ..dom.=.0.000000001.*.norm(om)*r |
| 25da0 | 61 6e 64 6e 28 33 2c 31 29 3b 0a 6f 6d 32 20 3d 20 6f 6d 20 2b 20 64 6f 6d 3b 0a 0a 5b 78 32 5d | andn(3,1);.om2.=.om.+.dom;..[x2] |
| 25dc0 | 20 3d 20 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 28 58 2c 6f 6d 32 2c 54 2c 66 2c 63 2c 6b 29 | .=.project_points(X,om2,T,f,c,k) |
| 25de0 | 3b 0a 0a 78 5f 70 72 65 64 20 3d 20 78 20 2b 20 72 65 73 68 61 70 65 28 64 78 64 6f 6d 20 2a 20 | ;..x_pred.=.x.+.reshape(dxdom.*. |
| 25e00 | 64 6f 6d 2c 32 2c 6e 29 3b 0a 0a 0a 6e 6f 72 6d 28 78 32 2d 78 29 2f 6e 6f 72 6d 28 78 32 20 2d | dom,2,n);...norm(x2-x)/norm(x2.- |
| 25e20 | 20 78 5f 70 72 65 64 29 0a 0a 0a 25 20 54 65 73 74 20 6f 6e 20 54 3a 20 4f 4b 21 21 0a 0a 64 54 | .x_pred)...%.Test.on.T:.OK!!..dT |
| 25e40 | 20 3d 20 30 2e 30 30 30 31 20 2a 20 6e 6f 72 6d 28 54 29 2a 72 61 6e 64 6e 28 33 2c 31 29 3b 0a | .=.0.0001.*.norm(T)*randn(3,1);. |
| 25e60 | 54 32 20 3d 20 54 20 2b 20 64 54 3b 0a 0a 5b 78 32 5d 20 3d 20 70 72 6f 6a 65 63 74 5f 70 6f 69 | T2.=.T.+.dT;..[x2].=.project_poi |
| 25e80 | 6e 74 73 28 58 2c 6f 6d 2c 54 32 2c 66 2c 63 2c 6b 29 3b 0a 0a 78 5f 70 72 65 64 20 3d 20 78 20 | nts(X,om,T2,f,c,k);..x_pred.=.x. |
| 25ea0 | 2b 20 72 65 73 68 61 70 65 28 64 78 64 54 20 2a 20 64 54 2c 32 2c 6e 29 3b 0a 0a 0a 6e 6f 72 6d | +.reshape(dxdT.*.dT,2,n);...norm |
| 25ec0 | 28 78 32 2d 78 29 2f 6e 6f 72 6d 28 78 32 20 2d 20 78 5f 70 72 65 64 29 0a 0a 0a 0a 25 20 54 65 | (x2-x)/norm(x2.-.x_pred)....%.Te |
| 25ee0 | 73 74 20 6f 6e 20 66 3a 20 4f 4b 21 21 0a 0a 64 66 20 3d 20 30 2e 30 30 31 20 2a 20 6e 6f 72 6d | st.on.f:.OK!!..df.=.0.001.*.norm |
| 25f00 | 28 66 29 2a 72 61 6e 64 6e 28 32 2c 31 29 3b 0a 66 32 20 3d 20 66 20 2b 20 64 66 3b 0a 0a 5b 78 | (f)*randn(2,1);.f2.=.f.+.df;..[x |
| 25f20 | 32 5d 20 3d 20 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 28 58 2c 6f 6d 2c 54 2c 66 32 2c 63 2c | 2].=.project_points(X,om,T,f2,c, |
| 25f40 | 6b 29 3b 0a 0a 78 5f 70 72 65 64 20 3d 20 78 20 2b 20 72 65 73 68 61 70 65 28 64 78 64 66 20 2a | k);..x_pred.=.x.+.reshape(dxdf.* |
| 25f60 | 20 64 66 2c 32 2c 6e 29 3b 0a 0a 0a 6e 6f 72 6d 28 78 32 2d 78 29 2f 6e 6f 72 6d 28 78 32 20 2d | .df,2,n);...norm(x2-x)/norm(x2.- |
| 25f80 | 20 78 5f 70 72 65 64 29 0a 0a 0a 25 20 54 65 73 74 20 6f 6e 20 63 3a 20 4f 4b 21 21 0a 0a 64 63 | .x_pred)...%.Test.on.c:.OK!!..dc |
| 25fa0 | 20 3d 20 30 2e 30 31 20 2a 20 6e 6f 72 6d 28 63 29 2a 72 61 6e 64 6e 28 32 2c 31 29 3b 0a 63 32 | .=.0.01.*.norm(c)*randn(2,1);.c2 |
| 25fc0 | 20 3d 20 63 20 2b 20 64 63 3b 0a 0a 5b 78 32 5d 20 3d 20 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 | .=.c.+.dc;..[x2].=.project_point |
| 25fe0 | 73 28 58 2c 6f 6d 2c 54 2c 66 2c 63 32 2c 6b 29 3b 0a 0a 78 5f 70 72 65 64 20 3d 20 78 20 2b 20 | s(X,om,T,f,c2,k);..x_pred.=.x.+. |
| 26000 | 72 65 73 68 61 70 65 28 64 78 64 63 20 2a 20 64 63 2c 32 2c 6e 29 3b 0a 0a 6e 6f 72 6d 28 78 32 | reshape(dxdc.*.dc,2,n);..norm(x2 |
| 26020 | 2d 78 29 2f 6e 6f 72 6d 28 78 32 20 2d 20 78 5f 70 72 65 64 29 0a 0a 25 20 54 65 73 74 20 6f 6e | -x)/norm(x2.-.x_pred)..%.Test.on |
| 26040 | 20 6b 3a 20 4f 4b 21 21 0a 0a 64 6b 20 3d 20 30 2e 30 30 31 20 2a 20 6e 6f 72 6d 28 34 29 2a 72 | .k:.OK!!..dk.=.0.001.*.norm(4)*r |
| 26060 | 61 6e 64 6e 28 34 2c 31 29 3b 0a 6b 32 20 3d 20 6b 20 2b 20 64 6b 3b 0a 0a 5b 78 32 5d 20 3d 20 | andn(4,1);.k2.=.k.+.dk;..[x2].=. |
| 26080 | 70 72 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 28 58 2c 6f 6d 2c 54 2c 66 2c 63 2c 6b 32 29 3b 0a 0a | project_points(X,om,T,f,c,k2);.. |
| 260a0 | 78 5f 70 72 65 64 20 3d 20 78 20 2b 20 72 65 73 68 61 70 65 28 64 78 64 6b 20 2a 20 64 6b 2c 32 | x_pred.=.x.+.reshape(dxdk.*.dk,2 |
| 260c0 | 2c 6e 29 3b 0a 0a 6e 6f 72 6d 28 78 32 2d 78 29 2f 6e 6f 72 6d 28 78 32 20 2d 20 78 5f 70 72 65 | ,n);..norm(x2-x)/norm(x2.-.x_pre |
| 260e0 | 64 29 0a 33 44 20 73 74 72 75 63 74 75 72 65 20 69 6e 20 74 68 65 20 77 6f 72 6c 64 20 63 6f 6f | d).3D.structure.in.the.world.coo |
| 26100 | 72 64 69 6e 61 74 65 20 66 72 61 6d 65 20 28 33 78 4e 20 6d 61 74 72 69 78 20 66 6f 72 20 4e 20 | rdinate.frame.(3xN.matrix.for.N. |
| 26120 | 70 6f 69 6e 74 73 29 0a 25 20 20 20 20 20 20 20 28 6f 6d 2c 54 29 3a 20 52 69 67 69 64 20 6d 6f | points).%.......(om,T):.Rigid.mo |
| 26140 | 74 69 6f 6e 20 70 61 72 61 6d 65 74 65 72 73 20 62 65 74 77 65 65 6e 20 77 6f 72 6c 64 20 63 6f | tion.parameters.between.world.co |
| 26160 | 6f 72 64 69 6e 61 74 65 20 66 72 61 6d 65 20 61 6e 64 20 63 61 6d 65 72 61 20 72 65 66 65 72 65 | ordinate.frame.and.camera.refere |
| 26180 | 6e 63 65 20 66 72 61 6d 65 0a 25 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 6d 3a 20 72 6f | nce.frame.%...............om:.ro |
| 261a0 | 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 28 33 78 31 20 76 65 63 74 6f 72 29 3b 20 54 3a 20 74 | tation.vector.(3x1.vector);.T:.t |
| 261c0 | 72 61 6e 73 6c 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 28 33 78 31 20 76 65 63 74 6f 72 29 0a 25 | ranslation.vector.(3x1.vector).% |
| 261e0 | 20 20 20 20 20 20 20 66 3a 20 63 61 6d 65 72 61 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 20 69 6e | .......f:.camera.focal.length.in |
| 26200 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 72 65 61 64 72 61 73 2e 6d 00 00 00 00 00 00 00 00 00 | TOOLBOX_calib/readras.m......... |
| 26220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 26240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 26260 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 26280 | 20 20 20 35 33 36 34 20 20 37 30 32 34 30 33 37 33 34 34 20 20 31 30 32 33 30 00 20 00 00 00 00 | ...5364..7024037344..10230...... |
| 262a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 262c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 262e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 26300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 26320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 26340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 26360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 26380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 263a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 263c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 263e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 26400 | 66 75 6e 63 74 69 6f 6e 20 5b 58 2c 20 6d 61 70 5d 20 3d 20 72 65 61 64 72 61 73 28 66 69 6c 65 | function.[X,.map].=.readras(file |
| 26420 | 6e 61 6d 65 2c 20 79 73 2c 20 79 65 2c 20 78 73 2c 20 78 65 29 3b 0a 25 52 45 41 44 52 41 53 20 | name,.ys,.ye,.xs,.xe);.%READRAS. |
| 26440 | 52 65 61 64 20 61 6e 20 69 6d 61 67 65 20 66 69 6c 65 20 69 6e 20 73 75 6e 20 72 61 73 74 65 72 | Read.an.image.file.in.sun.raster |
| 26460 | 20 66 6f 72 6d 61 74 2e 0a 25 20 09 20 52 45 41 44 52 41 53 28 27 69 6d 61 67 65 66 69 6c 65 2e | .format..%...READRAS('imagefile. |
| 26480 | 72 61 73 27 29 20 72 65 61 64 73 20 61 20 22 73 75 6e 2e 72 61 73 74 65 72 22 20 69 6d 61 67 65 | ras').reads.a."sun.raster".image |
| 264a0 | 20 66 69 6c 65 2e 0a 25 09 20 5b 58 2c 20 6d 61 70 5d 20 3d 20 52 45 41 44 52 41 53 28 27 69 6d | .file..%..[X,.map].=.READRAS('im |
| 264c0 | 61 67 65 66 69 6c 65 2e 72 61 73 27 29 20 72 65 74 75 72 6e 73 20 62 6f 74 68 20 74 68 65 20 69 | agefile.ras').returns.both.the.i |
| 264e0 | 6d 61 67 65 20 61 6e 64 20 61 20 0a 25 09 20 63 6f 6c 6f 72 20 6d 61 70 2c 20 73 6f 20 74 68 61 | mage.and.a..%..color.map,.so.tha |
| 26500 | 74 0a 25 09 09 5b 58 2c 20 6d 61 70 5d 20 3d 20 72 65 61 64 72 61 73 28 27 69 6d 61 67 65 66 69 | t.%..[X,.map].=.readras('imagefi |
| 26520 | 6c 65 2e 72 61 73 27 29 3b 0a 25 09 09 69 6d 61 67 65 28 58 29 20 0a 25 09 09 63 6f 6c 6f 72 6d | le.ras');.%..image(X)..%..colorm |
| 26540 | 61 70 28 6d 61 70 29 0a 25 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 78 69 73 28 27 65 71 | ap(map).%...............axis('eq |
| 26560 | 75 61 6c 27 29 0a 25 09 20 77 69 6c 6c 20 64 69 73 70 6c 61 79 20 74 68 65 20 72 65 73 75 6c 74 | ual').%..will.display.the.result |
| 26580 | 20 77 69 74 68 20 74 68 65 20 70 72 6f 70 65 72 20 63 6f 6c 6f 72 73 2e 0a 25 09 20 4e 4f 54 45 | .with.the.proper.colors..%..NOTE |
| 265a0 | 3a 20 72 65 61 64 72 61 73 20 63 61 6e 6e 6f 74 20 64 65 61 6c 20 77 69 74 68 20 63 6f 6d 70 6c | :.readras.cannot.deal.with.compl |
| 265c0 | 69 63 61 74 65 64 20 63 6f 6c 6f 72 20 6d 61 70 73 2e 20 20 0a 25 09 20 20 20 20 20 20 20 49 6e | icated.color.maps....%........In |
| 265e0 | 20 66 61 63 74 2c 20 4d 61 74 6c 61 62 20 64 6f 65 73 6e 27 74 20 71 75 69 74 65 20 61 6c 6c 6f | .fact,.Matlab.doesn't.quite.allo |
| 26600 | 77 20 74 6f 20 77 6f 72 6b 20 77 69 74 68 20 63 6f 6c 6f 72 6d 61 70 73 0a 25 09 20 20 20 20 20 | w.to.work.with.colormaps.%...... |
| 26620 | 20 20 77 69 74 68 20 6d 6f 72 65 20 74 68 61 6e 20 36 34 20 65 6e 74 72 69 65 73 2e 0a 25 0a 0a | ..with.more.than.64.entries..%.. |
| 26640 | 25 25 0a 25 25 09 20 28 43 29 20 54 68 6f 6d 61 73 20 4b 2e 20 4c 65 75 6e 67 20 33 2f 33 30 2f | %%.%%..(C).Thomas.K..Leung.3/30/ |
| 26660 | 39 33 2e 0a 25 25 09 20 43 61 6c 69 66 6f 72 6e 69 61 20 49 6e 73 74 69 74 75 74 65 20 6f 66 20 | 93..%%..California.Institute.of. |
| 26680 | 54 65 63 68 6e 6f 6c 6f 67 79 2e 0a 25 25 09 20 4d 6f 64 69 66 69 65 64 20 62 79 20 41 6e 64 72 | Technology..%%..Modified.by.Andr |
| 266a0 | 65 61 20 4d 65 6e 6e 75 63 63 69 20 74 6f 20 64 65 61 6c 20 77 69 74 68 20 63 6f 6c 6f 72 20 69 | ea.Mennucci.to.deal.with.color.i |
| 266c0 | 6d 61 67 65 73 0a 25 25 0a 0a 25 20 50 43 20 61 6e 64 20 55 4e 49 58 20 76 65 72 73 69 6f 6e 20 | mages.%%..%.PC.and.UNIX.version. |
| 266e0 | 6f 66 20 72 65 61 64 72 61 73 20 2d 20 4a 65 61 6e 2d 59 76 65 73 20 42 6f 75 67 75 65 74 20 2d | of.readras.-.Jean-Yves.Bouguet.- |
| 26700 | 20 44 65 63 2e 20 31 39 39 38 0a 0a 64 6f 74 20 3d 20 6d 61 78 28 66 69 6e 64 28 66 69 6c 65 6e | .Dec..1998..dot.=.max(find(filen |
| 26720 | 61 6d 65 20 3d 3d 20 27 2e 27 29 29 3b 0a 73 75 66 66 69 78 20 3d 20 66 69 6c 65 6e 61 6d 65 28 | ame.==.'.'));.suffix.=.filename( |
| 26740 | 64 6f 74 2b 31 3a 64 6f 74 2b 33 29 3b 0a 0a 69 66 28 73 74 72 63 6d 70 28 73 75 66 66 69 78 2c | dot+1:dot+3);..if(strcmp(suffix, |
| 26760 | 20 27 72 61 73 27 29 29 09 09 09 25 20 72 61 73 74 65 72 20 66 69 6c 65 20 66 6f 72 6d 61 74 20 | .'ras'))...%.raster.file.format. |
| 26780 | 25 0a 09 66 70 20 3d 20 66 6f 70 65 6e 28 66 69 6c 65 6e 61 6d 65 2c 20 27 72 62 27 29 3b 0a 09 | %..fp.=.fopen(filename,.'rb');.. |
| 267a0 | 69 66 28 66 70 3c 30 29 20 65 72 72 6f 72 28 5b 27 43 61 6e 6e 6f 74 20 6f 70 65 6e 20 27 20 66 | if(fp<0).error(['Cannot.open.'.f |
| 267c0 | 69 6c 65 6e 61 6d 65 20 27 2e 27 5d 29 2c 20 65 6e 64 0a 0a 09 25 52 65 61 64 20 61 6e 64 20 63 | ilename.'.']),.end...%Read.and.c |
| 267e0 | 72 61 63 6b 20 74 68 65 20 33 32 2d 62 79 74 65 20 68 65 61 64 65 72 0a 09 66 73 65 65 6b 28 66 | rack.the.32-byte.header..fseek(f |
| 26800 | 70 2c 20 34 2c 20 2d 31 29 3b 20 20 0a 0a 09 77 69 64 74 68 20 09 3d 20 32 5e 32 34 20 2a 20 66 | p,.4,.-1);.....width..=.2^24.*.f |
| 26820 | 72 65 61 64 28 66 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 32 5e 31 36 20 2a 20 66 72 | read(fp,.1,.'uchar').+.2^16.*.fr |
| 26840 | 65 61 64 28 66 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 32 5e 38 20 2a 20 66 72 65 61 | ead(fp,.1,.'uchar').+.2^8.*.frea |
| 26860 | 64 28 66 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 66 72 65 61 64 28 66 70 2c 20 31 2c | d(fp,.1,.'uchar').+.fread(fp,.1, |
| 26880 | 20 27 75 63 68 61 72 27 29 3b 0a 0a 09 68 65 69 67 68 74 20 09 3d 20 32 5e 32 34 20 2a 20 66 72 | .'uchar');...height..=.2^24.*.fr |
| 268a0 | 65 61 64 28 66 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 32 5e 31 36 20 2a 20 66 72 65 | ead(fp,.1,.'uchar').+.2^16.*.fre |
| 268c0 | 61 64 28 66 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 32 5e 38 20 2a 20 66 72 65 61 64 | ad(fp,.1,.'uchar').+.2^8.*.fread |
| 268e0 | 28 66 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 66 72 65 61 64 28 66 70 2c 20 31 2c 20 | (fp,.1,.'uchar').+.fread(fp,.1,. |
| 26900 | 27 75 63 68 61 72 27 29 3b 0a 0a 09 64 65 70 74 68 20 20 09 3d 20 32 5e 32 34 20 2a 20 66 72 65 | 'uchar');...depth...=.2^24.*.fre |
| 26920 | 61 64 28 66 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 32 5e 31 36 20 2a 20 66 72 65 61 | ad(fp,.1,.'uchar').+.2^16.*.frea |
| 26940 | 64 28 66 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 32 5e 38 20 2a 20 66 72 65 61 64 28 | d(fp,.1,.'uchar').+.2^8.*.fread( |
| 26960 | 66 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 66 72 65 61 64 28 66 70 2c 20 31 2c 20 27 | fp,.1,.'uchar').+.fread(fp,.1,.' |
| 26980 | 75 63 68 61 72 27 29 3b 0a 0a 09 6c 65 6e 67 74 68 20 09 3d 20 32 5e 32 34 20 2a 20 66 72 65 61 | uchar');...length..=.2^24.*.frea |
| 269a0 | 64 28 66 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 32 5e 31 36 20 2a 20 66 72 65 61 64 | d(fp,.1,.'uchar').+.2^16.*.fread |
| 269c0 | 28 66 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 32 5e 38 20 2a 20 66 72 65 61 64 28 66 | (fp,.1,.'uchar').+.2^8.*.fread(f |
| 269e0 | 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 66 72 65 61 64 28 66 70 2c 20 31 2c 20 27 75 | p,.1,.'uchar').+.fread(fp,.1,.'u |
| 26a00 | 63 68 61 72 27 29 3b 0a 0a 09 74 79 70 65 20 20 20 09 3d 20 32 5e 32 34 20 2a 20 66 72 65 61 64 | char');...type....=.2^24.*.fread |
| 26a20 | 28 66 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 32 5e 31 36 20 2a 20 66 72 65 61 64 28 | (fp,.1,.'uchar').+.2^16.*.fread( |
| 26a40 | 66 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 32 5e 38 20 2a 20 66 72 65 61 64 28 66 70 | fp,.1,.'uchar').+.2^8.*.fread(fp |
| 26a60 | 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 66 72 65 61 64 28 66 70 2c 20 31 2c 20 27 75 63 | ,.1,.'uchar').+.fread(fp,.1,.'uc |
| 26a80 | 68 61 72 27 29 3b 0a 0a 09 6d 61 70 74 79 70 65 20 3d 20 32 5e 32 34 20 2a 20 66 72 65 61 64 28 | har');...maptype.=.2^24.*.fread( |
| 26aa0 | 66 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 32 5e 31 36 20 2a 20 66 72 65 61 64 28 66 | fp,.1,.'uchar').+.2^16.*.fread(f |
| 26ac0 | 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 32 5e 38 20 2a 20 66 72 65 61 64 28 66 70 2c | p,.1,.'uchar').+.2^8.*.fread(fp, |
| 26ae0 | 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 66 72 65 61 64 28 66 70 2c 20 31 2c 20 27 75 63 68 | .1,.'uchar').+.fread(fp,.1,.'uch |
| 26b00 | 61 72 27 29 3b 0a 0a 09 6d 61 70 6c 65 6e 20 20 3d 20 32 5e 32 34 20 2a 20 66 72 65 61 64 28 66 | ar');...maplen..=.2^24.*.fread(f |
| 26b20 | 70 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 32 5e 31 36 20 2a 20 66 72 65 61 64 28 66 70 | p,.1,.'uchar').+.2^16.*.fread(fp |
| 26b40 | 2c 20 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 32 5e 38 20 2a 20 66 72 65 61 64 28 66 70 2c 20 | ,.1,.'uchar').+.2^8.*.fread(fp,. |
| 26b60 | 31 2c 20 27 75 63 68 61 72 27 29 20 2b 20 66 72 65 61 64 28 66 70 2c 20 31 2c 20 27 75 63 68 61 | 1,.'uchar').+.fread(fp,.1,.'ucha |
| 26b80 | 72 27 29 3b 0a 0a 09 6d 61 70 6c 65 6e 20 3d 20 6d 61 70 6c 65 6e 20 2f 20 33 3b 0a 0a 09 69 66 | r');...maplen.=.maplen./.3;...if |
| 26ba0 | 20 6d 61 70 74 79 70 65 20 3d 3d 20 32 09 09 09 09 09 25 20 52 4d 54 5f 52 41 57 0a 09 09 6d 61 | .maptype.==.2.....%.RMT_RAW...ma |
| 26bc0 | 70 20 3d 20 66 72 65 61 64 28 66 70 2c 20 5b 6d 61 70 6c 65 6e 2c 20 33 5d 2c 20 27 75 63 68 61 | p.=.fread(fp,.[maplen,.3],.'ucha |
| 26be0 | 72 27 29 2f 32 35 35 3b 0a 25 09 09 69 66 20 6d 61 70 6c 65 6e 3c 36 34 2c 20 6d 61 70 3d 5b 6d | r')/255;.%..if.maplen<64,.map=[m |
| 26c00 | 61 70 27 2c 7a 65 72 6f 73 28 33 2c 36 34 2d 6d 61 70 6c 65 6e 29 5d 27 3b 6d 61 70 6c 65 6e 3d | ap',zeros(3,64-maplen)]';maplen= |
| 26c20 | 36 34 3b 20 65 6e 64 3b 0a 09 65 6c 73 65 69 66 20 6d 61 70 74 79 70 65 20 3d 3d 20 31 09 09 09 | 64;.end;..elseif.maptype.==.1... |
| 26c40 | 09 25 20 52 4d 54 5f 45 51 55 41 4c 5f 52 47 42 0a 09 09 6d 61 70 28 3a 2c 31 29 20 3d 20 66 72 | .%.RMT_EQUAL_RGB...map(:,1).=.fr |
| 26c60 | 65 61 64 28 66 70 2c 20 5b 6d 61 70 6c 65 6e 5d 2c 20 27 75 63 68 61 72 27 29 3b 0a 09 09 6d 61 | ead(fp,.[maplen],.'uchar');...ma |
| 26c80 | 70 28 3a 2c 32 29 20 3d 20 66 72 65 61 64 28 66 70 2c 20 5b 6d 61 70 6c 65 6e 5d 2c 20 27 75 63 | p(:,2).=.fread(fp,.[maplen],.'uc |
| 26ca0 | 68 61 72 27 29 3b 0a 09 09 6d 61 70 28 3a 2c 33 29 20 3d 20 66 72 65 61 64 28 66 70 2c 20 5b 6d | har');...map(:,3).=.fread(fp,.[m |
| 26cc0 | 61 70 6c 65 6e 5d 2c 20 27 75 63 68 61 72 27 29 3b 0a 09 09 25 6d 61 78 6d 61 70 20 3d 20 6d 61 | aplen],.'uchar');...%maxmap.=.ma |
| 26ce0 | 78 28 6d 61 78 28 6d 61 70 29 29 3b 0a 09 09 6d 61 70 20 3d 20 6d 61 70 2f 32 35 35 3b 0a 09 20 | x(max(map));...map.=.map/255;... |
| 26d00 | 20 20 20 20 20 20 20 69 66 20 6d 61 70 6c 65 6e 3c 36 34 2c 20 6d 61 70 3d 5b 6d 61 70 27 2c 7a | .......if.maplen<64,.map=[map',z |
| 26d20 | 65 72 6f 73 28 33 2c 36 34 2d 6d 61 70 6c 65 6e 29 5d 27 3b 20 6d 61 70 6c 65 6e 3d 36 34 3b 20 | eros(3,64-maplen)]';.maplen=64;. |
| 26d40 | 65 6e 64 3b 0a 09 65 6c 73 65 20 09 09 09 09 09 09 25 20 52 4d 54 5f 4e 4f 4e 45 0a 09 09 6d 61 | end;..else.......%.RMT_NONE...ma |
| 26d60 | 70 20 3d 20 5b 5d 3b 0a 09 65 6e 64 0a 25 09 69 66 20 6d 61 70 6c 65 6e 3e 36 34 2c 0a 25 20 20 | p.=.[];..end.%.if.maplen>64,.%.. |
| 26d80 | 20 20 20 20 20 20 20 20 20 20 6d 61 70 3d 5b 6d 61 70 27 2c 7a 65 72 6f 73 28 33 2c 32 35 36 2d | ..........map=[map',zeros(3,256- |
| 26da0 | 6d 61 70 6c 65 6e 29 5d 27 3b 0a 25 09 65 6e 64 3b 0a 0a 09 25 20 52 65 61 64 20 74 68 65 20 69 | maplen)]';.%.end;...%.Read.the.i |
| 26dc0 | 6d 61 67 65 0a 0a 09 69 66 20 72 65 6d 28 77 69 64 74 68 2c 32 29 20 3d 3d 20 31 0a 09 09 58 74 | mage...if.rem(width,2).==.1...Xt |
| 26de0 | 20 3d 20 66 72 65 61 64 28 66 70 2c 20 5b 77 69 64 74 68 2b 31 2c 20 68 65 69 67 68 74 5d 2c 20 | .=.fread(fp,.[width+1,.height],. |
| 26e00 | 27 75 63 68 61 72 27 29 3b 0a 09 09 58 20 3d 20 58 74 28 31 3a 77 69 64 74 68 2c 20 3a 29 27 3b | 'uchar');...X.=.Xt(1:width,.:)'; |
| 26e20 | 0a 09 65 6c 73 65 0a 09 09 58 74 20 3d 20 66 72 65 61 64 28 66 70 2c 20 5b 77 69 64 74 68 2c 20 | ..else...Xt.=.fread(fp,.[width,. |
| 26e40 | 68 65 69 67 68 74 5d 2c 20 27 75 63 68 61 72 27 29 3b 0a 09 09 58 20 3d 20 58 74 27 3b 0a 09 65 | height],.'uchar');...X.=.Xt';..e |
| 26e60 | 6e 64 0a 09 58 20 3d 20 58 20 2b 20 31 3b 0a 09 66 63 6c 6f 73 65 28 66 70 29 3b 0a 65 6c 73 65 | nd..X.=.X.+.1;..fclose(fp);.else |
| 26e80 | 0a 09 65 72 72 6f 72 28 27 49 6d 61 67 65 20 66 69 6c 65 20 6e 61 6d 65 20 6d 75 73 74 20 65 6e | ..error('Image.file.name.must.en |
| 26ea0 | 64 20 69 6e 20 65 69 74 68 65 72 20 27 27 72 61 73 27 27 20 6f 72 20 27 27 72 61 73 74 27 27 2e | d.in.either.''ras''.or.''rast''. |
| 26ec0 | 27 29 3b 0a 65 6e 64 0a 0a 0a 69 66 20 6e 61 72 67 69 6e 20 3d 3d 20 35 0a 0a 09 58 20 3d 20 58 | ');.end...if.nargin.==.5...X.=.X |
| 26ee0 | 28 79 73 3a 79 65 2c 20 78 73 3a 78 65 29 3b 0a 0a 65 6e 64 20 3d 20 73 69 7a 65 28 58 29 3b 0a | (ys:ye,.xs:xe);..end.=.size(X);. |
| 26f00 | 0a 5b 59 2c 64 59 64 6f 6d 2c 64 59 64 54 5d 20 3d 20 72 69 67 69 64 5f 6d 6f 74 69 6f 6e 28 58 | .[Y,dYdom,dYdT].=.rigid_motion(X |
| 26f20 | 2c 6f 6d 2c 54 29 3b 0a 0a 0a 69 6e 76 5f 5a 20 3d 20 31 2e 2f 59 28 33 2c 3a 29 3b 0a 0a 78 20 | ,om,T);...inv_Z.=.1./Y(3,:);..x. |
| 26f40 | 3d 20 28 59 28 31 3a 32 2c 3a 29 20 2e 2a 20 28 6f 6e 65 73 28 32 2c 31 29 20 2a 20 69 6e 76 5f | =.(Y(1:2,:)..*.(ones(2,1).*.inv_ |
| 26f60 | 5a 29 29 20 3b 0a 0a 0a 62 62 20 3d 20 28 2d 78 28 31 2c 3a 29 20 2e 2a 20 69 6e 76 5f 5a 29 27 | Z)).;...bb.=.(-x(1,:)..*.inv_Z)' |
| 26f80 | 2a 6f 6e 65 73 28 31 2c 33 29 3b 0a 63 63 20 3d 20 28 2d 78 28 32 2c 3a 29 20 2e 2a 20 69 6e 76 | *ones(1,3);.cc.=.(-x(2,:)..*.inv |
| 26fa0 | 5f 5a 29 27 2a 6f 6e 65 73 28 31 2c 33 29 3b 0a 0a 0a 64 78 64 6f 6d 20 3d 20 7a 65 72 6f 73 28 | _Z)'*ones(1,3);...dxdom.=.zeros( |
| 26fc0 | 32 2a 6e 2c 33 29 3b 0a 64 78 64 6f 6d 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 28 28 69 6e 76 | 2*n,3);.dxdom(1:2:end,:).=.((inv |
| 26fe0 | 5f 5a 27 29 2a 6f 6e 65 73 28 31 2c 33 29 29 20 2e 2a 20 64 59 64 6f 6d 28 31 3a 33 3a 65 6e 64 | _Z')*ones(1,3))..*.dYdom(1:3:end |
| 27000 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 72 65 63 6f 6d 70 5f 63 6f 72 6e 65 72 5f 63 61 6c 69 | TOOLBOX_calib/recomp_corner_cali |
| 27020 | 62 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | b.m............................. |
| 27040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 27060 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 27080 | 20 20 20 34 31 37 37 20 20 37 30 32 34 30 33 37 33 34 35 20 20 31 32 36 30 30 00 20 00 00 00 00 | ...4177..7024037345..12600...... |
| 270a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 270c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 270e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 27100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 27120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 27140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 27160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 27180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 271a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 271c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 271e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 27200 | 25 20 52 65 2d 73 65 6c 65 63 74 20 74 65 20 63 6f 72 6e 65 72 73 20 61 66 74 65 72 20 63 61 6c | %.Re-select.te.corners.after.cal |
| 27220 | 69 62 72 61 74 69 6f 6e 0a 0a 63 68 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 0a | ibration..check_active_images;.. |
| 27240 | 69 66 20 7e 65 78 69 73 74 28 5b 27 79 5f 27 20 6e 75 6d 32 73 74 72 28 69 6e 64 5f 61 63 74 69 | if.~exist(['y_'.num2str(ind_acti |
| 27260 | 76 65 28 31 29 29 5d 29 2c 0a 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 4e 65 65 64 20 74 6f 20 | ve(1))]),....fprintf(1,'Need.to. |
| 27280 | 63 61 6c 69 62 72 61 74 65 20 6f 6e 63 65 20 62 65 66 6f 72 65 20 62 65 66 6f 72 65 20 72 65 63 | calibrate.once.before.before.rec |
| 272a0 | 6f 6d 70 75 74 69 6e 67 20 69 6d 61 67 65 20 63 6f 72 6e 65 72 73 2e 20 4d 61 79 62 65 20 6e 65 | omputing.image.corners..Maybe.ne |
| 272c0 | 65 64 20 74 6f 20 6c 6f 61 64 20 43 61 6c 69 62 5f 52 65 73 75 6c 74 73 2e 6d 61 74 20 66 69 6c | ed.to.load.Calib_Results.mat.fil |
| 272e0 | 65 2e 5c 6e 27 29 3b 0a 20 20 20 72 65 74 75 72 6e 3b 0a 65 6e 64 3b 0a 0a 69 66 20 7e 65 78 69 | e.\n');....return;.end;..if.~exi |
| 27300 | 73 74 28 5b 27 49 5f 27 20 6e 75 6d 32 73 74 72 28 69 6e 64 5f 61 63 74 69 76 65 28 31 29 29 5d | st(['I_'.num2str(ind_active(1))] |
| 27320 | 29 2c 0a 20 20 20 69 6d 61 5f 72 65 61 64 5f 63 61 6c 69 62 3b 0a 20 20 20 69 66 20 6e 6f 5f 69 | ),....ima_read_calib;....if.no_i |
| 27340 | 6d 61 67 65 5f 66 69 6c 65 2c 0a 20 20 20 20 20 20 64 69 73 70 28 27 43 61 6e 6e 6f 74 20 65 78 | mage_file,.......disp('Cannot.ex |
| 27360 | 74 72 61 63 74 20 63 6f 72 6e 65 72 73 20 77 69 74 68 6f 75 74 20 69 6d 61 67 65 73 27 29 3b 0a | tract.corners.without.images');. |
| 27380 | 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0a 20 20 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 66 70 72 69 | ......return;....end;.end;..fpri |
| 273a0 | 6e 74 66 28 31 2c 27 5c 6e 52 65 2d 65 78 74 72 61 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 67 72 | ntf(1,'\nRe-extraction.of.the.gr |
| 273c0 | 69 64 20 63 6f 72 6e 65 72 73 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 73 20 28 61 66 74 65 72 20 | id.corners.on.the.images.(after. |
| 273e0 | 66 69 72 73 74 20 63 61 6c 69 62 72 61 74 69 6f 6e 29 5c 6e 27 29 3b 0a 0a 64 69 73 70 28 27 57 | first.calibration)\n');..disp('W |
| 27400 | 69 6e 64 6f 77 20 73 69 7a 65 20 66 6f 72 20 63 6f 72 6e 65 72 20 66 69 6e 64 65 72 20 28 77 69 | indow.size.for.corner.finder.(wi |
| 27420 | 6e 74 78 20 61 6e 64 20 77 69 6e 74 79 29 3a 27 29 3b 0a 77 69 6e 74 78 20 3d 20 69 6e 70 75 74 | ntx.and.winty):');.wintx.=.input |
| 27440 | 28 27 77 69 6e 74 78 20 28 5b 5d 20 3d 20 35 29 20 3d 20 27 29 3b 0a 69 66 20 69 73 65 6d 70 74 | ('wintx.([].=.5).=.');.if.isempt |
| 27460 | 79 28 77 69 6e 74 78 29 2c 20 77 69 6e 74 78 20 3d 20 35 3b 20 65 6e 64 3b 0a 77 69 6e 74 78 20 | y(wintx),.wintx.=.5;.end;.wintx. |
| 27480 | 3d 20 72 6f 75 6e 64 28 77 69 6e 74 78 29 3b 0a 77 69 6e 74 79 20 3d 20 69 6e 70 75 74 28 27 77 | =.round(wintx);.winty.=.input('w |
| 274a0 | 69 6e 74 79 20 28 5b 5d 20 3d 20 35 29 20 3d 20 27 29 3b 0a 69 66 20 69 73 65 6d 70 74 79 28 77 | inty.([].=.5).=.');.if.isempty(w |
| 274c0 | 69 6e 74 79 29 2c 20 77 69 6e 74 79 20 3d 20 35 3b 20 65 6e 64 3b 0a 77 69 6e 74 79 20 3d 20 72 | inty),.winty.=.5;.end;.winty.=.r |
| 274e0 | 6f 75 6e 64 28 77 69 6e 74 79 29 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 57 69 6e 64 6f 77 20 | ound(winty);..fprintf(1,'Window. |
| 27500 | 73 69 7a 65 20 3d 20 25 64 78 25 64 5c 6e 27 2c 32 2a 77 69 6e 74 78 2b 31 2c 32 2a 77 69 6e 74 | size.=.%dx%d\n',2*wintx+1,2*wint |
| 27520 | 79 2b 31 29 3b 0a 0a 69 6d 61 5f 6e 75 6d 62 65 72 73 20 3d 20 69 6e 70 75 74 28 27 4e 75 6d 62 | y+1);..ima_numbers.=.input('Numb |
| 27540 | 65 72 28 73 29 20 6f 66 20 69 6d 61 67 65 28 73 29 20 74 6f 20 70 72 6f 63 65 73 73 20 28 5b 5d | er(s).of.image(s).to.process.([] |
| 27560 | 20 3d 20 61 6c 6c 20 69 6d 61 67 65 73 29 20 3d 20 27 29 3b 0a 0a 69 66 20 69 73 65 6d 70 74 79 | .=.all.images).=.');..if.isempty |
| 27580 | 28 69 6d 61 5f 6e 75 6d 62 65 72 73 29 2c 0a 20 20 20 69 6d 61 5f 70 72 6f 63 20 3d 20 31 3a 6e | (ima_numbers),....ima_proc.=.1:n |
| 275a0 | 5f 69 6d 61 3b 0a 65 6c 73 65 0a 20 20 20 69 6d 61 5f 70 72 6f 63 20 3d 20 69 6d 61 5f 6e 75 6d | _ima;.else....ima_proc.=.ima_num |
| 275c0 | 62 65 72 73 3b 0a 65 6e 64 3b 0a 0a 71 5f 61 75 74 6f 20 3d 20 69 6e 70 75 74 28 27 55 73 65 20 | bers;.end;..q_auto.=.input('Use. |
| 275e0 | 74 68 65 20 70 72 6f 6a 65 63 74 69 6f 6e 20 6f 66 20 33 44 20 67 72 69 64 20 6f 72 20 6d 61 6e | the.projection.of.3D.grid.or.man |
| 27600 | 75 61 6c 20 63 6c 69 63 6b 20 28 5b 5d 3d 61 75 74 6f 2c 20 6f 74 68 65 72 3d 6d 61 6e 75 61 6c | ual.click.([]=auto,.other=manual |
| 27620 | 29 3a 20 27 29 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 50 72 6f 63 65 73 73 69 6e 67 20 69 6d | ):.');..fprintf(1,'Processing.im |
| 27640 | 61 67 65 20 27 29 3b 0a 0a 66 6f 72 20 6b 6b 20 3d 20 69 6d 61 5f 70 72 6f 63 3b 0a 20 20 20 0a | age.');..for.kk.=.ima_proc;..... |
| 27660 | 20 20 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 2c 0a 20 20 20 0a 09 09 66 | ...if.active_images(kk),.......f |
| 27680 | 70 72 69 6e 74 66 28 31 2c 27 25 64 2e 2e 2e 27 2c 6b 6b 29 3b 0a 20 20 20 0a 20 20 20 09 69 66 | printf(1,'%d...',kk);.........if |
| 276a0 | 20 69 73 65 6d 70 74 79 28 71 5f 61 75 74 6f 29 2c 0a 20 20 20 0a 20 20 09 09 09 65 76 61 6c 28 | .isempty(q_auto),..........eval( |
| 276c0 | 5b 27 49 20 3d 20 49 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 | ['I.=.I_'.num2str(kk).';']);.... |
| 276e0 | 0a 20 20 20 09 09 65 76 61 6c 28 5b 27 79 20 3d 20 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 | ......eval(['y.=.y_'.num2str(kk) |
| 27700 | 20 27 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 20 09 09 78 63 20 3d 20 63 6f 72 6e 65 72 66 69 6e 64 | .';']);..........xc.=.cornerfind |
| 27720 | 65 72 28 79 2b 31 2c 49 2c 77 69 6e 74 79 2c 77 69 6e 74 78 29 3b 20 25 20 74 68 65 20 66 6f 75 | er(y+1,I,winty,wintx);.%.the.fou |
| 27740 | 72 20 63 6f 72 6e 65 72 73 0a 20 20 20 0a 20 20 20 20 20 20 09 65 76 61 6c 28 5b 27 77 69 6e 74 | r.corners............eval(['wint |
| 27760 | 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 77 69 6e 74 78 3b 27 5d 29 3b 0a 20 | x_'.num2str(kk).'.=.wintx;']);.. |
| 27780 | 20 20 20 20 20 09 65 76 61 6c 28 5b 27 77 69 6e 74 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 | ......eval(['winty_'.num2str(kk) |
| 277a0 | 20 27 20 3d 20 77 69 6e 74 79 3b 27 5d 29 3b 0a 20 20 20 20 20 20 09 0a 20 20 20 09 09 65 76 61 | .'.=.winty;']);..............eva |
| 277c0 | 6c 28 5b 27 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3d 20 78 63 20 2d 20 31 3b 27 5d | l(['x_'.num2str(kk).'=.xc.-.1;'] |
| 277e0 | 29 3b 0a 20 20 20 09 0a 20 20 20 09 65 6c 73 65 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 09 66 | );..........else...............f |
| 27800 | 70 72 69 6e 74 66 28 31 2c 27 5c 6e 27 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 09 63 6c | printf(1,'\n');...............cl |
| 27820 | 69 63 6b 5f 69 6d 61 5f 63 61 6c 69 62 3b 0a 20 20 20 20 20 20 0a 20 20 20 09 65 6e 64 3b 0a 20 | ick_ima_calib;............end;.. |
| 27840 | 20 20 20 20 20 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 69 66 20 7e 65 | .........else..............if.~e |
| 27860 | 78 69 73 74 28 5b 27 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 5d 29 2c 0a 20 20 20 20 | xist(['omc_'.num2str(kk)]),..... |
| 27880 | 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 65 76 61 6c 28 5b 27 64 58 5f 27 20 6e 75 6d 32 73 | ...............eval(['dX_'.num2s |
| 278a0 | 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 3b 27 5d 29 3b 0a 20 20 20 09 09 65 76 61 6c 28 5b 27 | tr(kk).'.=.NaN;']);......eval([' |
| 278c0 | 64 59 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 3b 27 5d 29 3b 20 20 0a | dY_'.num2str(kk).'.=.NaN;']);... |
| 278e0 | 20 20 09 09 09 0a 20 20 20 09 09 65 76 61 6c 28 5b 27 77 69 6e 74 78 5f 27 20 6e 75 6d 32 73 74 | ...........eval(['wintx_'.num2st |
| 27900 | 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 3b 27 5d 29 3b 0a 20 20 20 09 09 65 76 61 6c 28 5b 27 77 | r(kk).'.=.NaN;']);......eval(['w |
| 27920 | 69 6e 74 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 3b 27 5d 29 3b 0a | inty_'.num2str(kk).'.=.NaN;']);. |
| 27940 | 09 09 09 0a 09 20 20 20 09 65 76 61 6c 28 5b 27 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 | .........eval(['x_'.num2str(kk). |
| 27960 | 27 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 32 2c 31 29 3b 27 5d 29 3b 0a 20 20 20 09 09 65 76 61 6c | '.=.NaN*ones(2,1);']);......eval |
| 27980 | 28 5b 27 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 | (['X_'.num2str(kk).'.=.NaN*ones( |
| 279a0 | 33 2c 31 29 3b 27 5d 29 3b 0a 20 20 20 09 09 0a 20 20 20 09 09 65 76 61 6c 28 5b 27 6e 5f 73 71 | 3,1);']);............eval(['n_sq |
| 279c0 | 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 3b 27 5d 29 3b 0a 20 20 | _x_'.num2str(kk).'.=.NaN;']);... |
| 279e0 | 20 09 09 65 76 61 6c 28 5b 27 6e 5f 73 71 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 | ...eval(['n_sq_y_'.num2str(kk).' |
| 27a00 | 20 3d 20 4e 61 4e 3b 27 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 65 6e 64 3b | .=.NaN;']);.................end; |
| 27a20 | 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 0a 65 6e 64 3b 0a 0a 25 20 | ...........end;.........end;..%. |
| 27a40 | 52 65 63 6f 6d 70 75 74 65 20 74 68 65 20 65 72 72 6f 72 3a 0a 0a 63 6f 6d 70 5f 65 72 72 6f 72 | Recompute.the.error:..comp_error |
| 27a60 | 5f 63 61 6c 69 62 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 64 6f 6e 65 5c 6e 27 29 3b 61 | _calib;..fprintf(1,'\ndone\n');a |
| 27a80 | 70 28 3a 2c 32 29 20 3d 20 66 72 65 61 64 28 66 70 2c 20 5b 6d 61 70 6c 65 6e 5d 2c 20 27 75 63 | p(:,2).=.fread(fp,.[maplen],.'uc |
| 27aa0 | 68 61 72 27 29 3b 0a 09 09 6d 61 70 28 3a 2c 33 29 20 3d 20 66 72 65 61 64 28 66 70 2c 20 5b 6d | har');...map(:,3).=.fread(fp,.[m |
| 27ac0 | 61 70 6c 65 6e 5d 2c 20 27 75 63 68 61 72 27 29 3b 0a 09 09 25 6d 61 78 6d 61 70 20 3d 20 6d 61 | aplen],.'uchar');...%maxmap.=.ma |
| 27ae0 | 78 28 6d 61 78 28 6d 61 70 29 29 3b 0a 09 09 6d 61 70 20 3d 20 6d 61 70 2f 32 35 35 3b 0a 09 20 | x(max(map));...map.=.map/255;... |
| 27b00 | 20 20 20 20 20 20 20 69 66 20 6d 61 70 6c 65 6e 3c 36 34 2c 20 6d 61 70 3d 5b 6d 61 70 27 2c 7a | .......if.maplen<64,.map=[map',z |
| 27b20 | 65 72 6f 73 28 33 2c 36 34 2d 6d 61 70 6c 65 6e 29 5d 27 3b 20 6d 61 70 6c 65 6e 3d 36 34 3b 20 | eros(3,64-maplen)]';.maplen=64;. |
| 27b40 | 65 6e 64 3b 0a 09 65 6c 73 65 20 09 09 09 09 09 09 25 20 52 4d 54 5f 4e 4f 4e 45 0a 09 09 6d 61 | end;..else.......%.RMT_NONE...ma |
| 27b60 | 70 20 3d 20 5b 5d 3b 0a 09 65 6e 64 0a 25 09 69 66 20 6d 61 70 6c 65 6e 3e 36 34 2c 0a 25 20 20 | p.=.[];..end.%.if.maplen>64,.%.. |
| 27b80 | 20 20 20 20 20 20 20 20 20 20 6d 61 70 3d 5b 6d 61 70 27 2c 7a 65 72 6f 73 28 33 2c 32 35 36 2d | ..........map=[map',zeros(3,256- |
| 27ba0 | 6d 61 70 6c 65 6e 29 5d 27 3b 0a 25 09 65 6e 64 3b 0a 0a 09 25 20 52 65 61 64 20 74 68 65 20 69 | maplen)]';.%.end;...%.Read.the.i |
| 27bc0 | 6d 61 67 65 0a 0a 09 69 66 20 72 65 6d 28 77 69 64 74 68 2c 32 29 20 3d 3d 20 31 0a 09 09 58 74 | mage...if.rem(width,2).==.1...Xt |
| 27be0 | 20 3d 20 66 72 65 61 64 28 66 70 2c 20 5b 77 69 64 74 68 2b 31 2c 20 68 65 69 67 68 74 5d 2c 20 | .=.fread(fp,.[width+1,.height],. |
| 27c00 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 72 65 63 74 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 | TOOLBOX_calib/rect.m............ |
| 27c20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 27c40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 27c60 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 27c80 | 20 20 20 33 36 33 35 20 20 37 30 32 34 30 33 37 33 34 36 20 20 20 37 35 34 35 00 20 00 00 00 00 | ...3635..7024037346...7545...... |
| 27ca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 27cc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 27ce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 27d00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 27d20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 27d40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 27d60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 27d80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 27da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 27dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 27de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 27e00 | 66 75 6e 63 74 69 6f 6e 20 5b 49 72 65 63 5d 20 3d 20 72 65 63 74 28 49 2c 52 2c 66 2c 63 2c 6b | function.[Irec].=.rect(I,R,f,c,k |
| 27e20 | 2c 4b 4b 5f 6e 65 77 29 3b 0a 0a 0a 25 20 4e 6f 74 65 3a 20 52 20 69 73 20 74 68 65 20 6d 6f 74 | ,KK_new);...%.Note:.R.is.the.mot |
| 27e40 | 69 6f 6e 20 6f 66 20 74 68 65 20 70 6f 69 6e 74 73 20 69 6e 20 73 70 61 63 65 0a 25 20 53 6f 3a | ion.of.the.points.in.space.%.So: |
| 27e60 | 20 58 32 20 3d 20 52 2a 58 20 77 68 65 72 65 20 58 3a 20 63 6f 6f 72 64 20 69 6e 20 74 68 65 20 | .X2.=.R*X.where.X:.coord.in.the. |
| 27e80 | 6f 6c 64 20 72 65 66 65 72 65 6e 63 65 20 66 72 61 6d 65 2c 20 58 32 3a 20 63 6f 6f 72 64 20 69 | old.reference.frame,.X2:.coord.i |
| 27ea0 | 6e 20 74 68 65 20 6e 65 77 20 72 65 66 20 66 72 61 6d 65 2e 0a 0a 5b 6e 72 2c 6e 63 5d 20 3d 20 | n.the.new.ref.frame...[nr,nc].=. |
| 27ec0 | 73 69 7a 65 28 49 29 3b 0a 0a 49 72 65 63 20 3d 20 32 35 35 2a 6f 6e 65 73 28 6e 72 2c 6e 63 29 | size(I);..Irec.=.255*ones(nr,nc) |
| 27ee0 | 3b 0a 0a 5b 6d 78 2c 6d 79 5d 20 3d 20 6d 65 73 68 67 72 69 64 28 31 3a 6e 63 2c 20 31 3a 6e 72 | ;..[mx,my].=.meshgrid(1:nc,.1:nr |
| 27f00 | 29 3b 0a 70 78 20 3d 20 72 65 73 68 61 70 65 28 6d 78 27 2c 6e 63 2a 6e 72 2c 31 29 3b 0a 70 79 | );.px.=.reshape(mx',nc*nr,1);.py |
| 27f20 | 20 3d 20 72 65 73 68 61 70 65 28 6d 79 27 2c 6e 63 2a 6e 72 2c 31 29 3b 0a 0a 72 61 79 73 20 3d | .=.reshape(my',nc*nr,1);..rays.= |
| 27f40 | 20 69 6e 76 28 4b 4b 5f 6e 65 77 29 2a 5b 28 70 78 20 2d 20 31 29 27 3b 28 70 79 20 2d 20 31 29 | .inv(KK_new)*[(px.-.1)';(py.-.1) |
| 27f60 | 27 3b 6f 6e 65 73 28 31 2c 6c 65 6e 67 74 68 28 70 78 29 29 5d 3b 0a 0a 0a 25 20 52 6f 74 61 74 | ';ones(1,length(px))];...%.Rotat |
| 27f80 | 69 6f 6e 3a 20 28 6f 72 20 61 66 66 69 6e 65 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 29 3a | ion:.(or.affine.transformation): |
| 27fa0 | 0a 0a 72 61 79 73 32 20 3d 20 52 27 2a 72 61 79 73 3b 0a 0a 0a 78 20 3d 20 5b 72 61 79 73 32 28 | ..rays2.=.R'*rays;...x.=.[rays2( |
| 27fc0 | 31 2c 3a 29 2e 2f 72 61 79 73 32 28 33 2c 3a 29 3b 72 61 79 73 32 28 32 2c 3a 29 2e 2f 72 61 79 | 1,:)./rays2(3,:);rays2(2,:)./ray |
| 27fe0 | 73 32 28 33 2c 3a 29 5d 3b 0a 0a 25 20 41 64 64 20 64 69 73 74 6f 72 74 69 6f 6e 3a 0a 0a 6b 31 | s2(3,:)];..%.Add.distortion:..k1 |
| 28000 | 20 3d 20 6b 28 31 29 3b 0a 6b 32 20 3d 20 6b 28 32 29 3b 0a 0a 70 31 20 3d 20 6b 28 33 29 3b 0a | .=.k(1);.k2.=.k(2);..p1.=.k(3);. |
| 28020 | 70 32 20 3d 20 6b 28 34 29 3b 0a 0a 72 5f 32 20 3d 20 73 75 6d 28 78 2e 5e 32 29 3b 0a 0a 64 65 | p2.=.k(4);..r_2.=.sum(x.^2);..de |
| 28040 | 6c 74 61 5f 78 20 3d 20 5b 32 2a 70 31 2a 78 28 31 2c 3a 29 2e 2a 78 28 32 2c 3a 29 20 2b 20 70 | lta_x.=.[2*p1*x(1,:).*x(2,:).+.p |
| 28060 | 32 2a 28 72 5f 32 20 2b 20 32 2a 78 28 31 2c 3a 29 2e 5e 32 29 20 3b 0a 20 20 20 20 20 20 20 20 | 2*(r_2.+.2*x(1,:).^2).;......... |
| 28080 | 20 20 20 70 31 20 2a 20 28 72 5f 32 20 2b 20 32 2a 78 28 32 2c 3a 29 2e 5e 32 29 2b 32 2a 70 32 | ...p1.*.(r_2.+.2*x(2,:).^2)+2*p2 |
| 280a0 | 2a 78 28 31 2c 3a 29 2e 2a 78 28 32 2c 3a 29 5d 3b 0a 0a 78 64 20 3d 20 28 6f 6e 65 73 28 32 2c | *x(1,:).*x(2,:)];..xd.=.(ones(2, |
| 280c0 | 31 29 2a 28 20 31 20 2b 20 6b 31 20 2a 20 72 5f 32 20 2b 20 6b 32 20 2a 20 72 5f 32 2e 5e 32 29 | 1)*(.1.+.k1.*.r_2.+.k2.*.r_2.^2) |
| 280e0 | 29 20 2e 2a 20 78 20 2b 20 64 65 6c 74 61 5f 78 3b 0a 0a 0a 25 20 52 65 63 6f 6e 76 65 72 74 20 | )..*.x.+.delta_x;...%.Reconvert. |
| 28100 | 69 6e 20 70 69 78 65 6c 73 3a 0a 0a 70 78 32 20 3d 20 66 28 31 29 2a 78 64 28 31 2c 3a 29 2b 63 | in.pixels:..px2.=.f(1)*xd(1,:)+c |
| 28120 | 28 31 29 3b 0a 70 79 32 20 3d 20 66 28 32 29 2a 78 64 28 32 2c 3a 29 2b 63 28 32 29 3b 0a 0a 0a | (1);.py2.=.f(2)*xd(2,:)+c(2);... |
| 28140 | 25 20 49 6e 74 65 72 70 6f 6c 61 74 65 20 62 65 74 77 65 65 6e 20 74 68 65 20 63 6c 6f 73 65 73 | %.Interpolate.between.the.closes |
| 28160 | 74 20 70 69 78 65 6c 73 3a 0a 0a 0a 70 78 5f 30 20 3d 20 66 6c 6f 6f 72 28 70 78 32 29 3b 0a 70 | t.pixels:...px_0.=.floor(px2);.p |
| 28180 | 78 5f 31 20 3d 20 70 78 5f 30 20 2b 20 31 3b 0a 61 6c 70 68 61 5f 78 20 3d 20 70 78 32 20 2d 20 | x_1.=.px_0.+.1;.alpha_x.=.px2.-. |
| 281a0 | 70 78 5f 30 3b 0a 0a 70 79 5f 30 20 3d 20 66 6c 6f 6f 72 28 70 79 32 29 3b 0a 70 79 5f 31 20 3d | px_0;..py_0.=.floor(py2);.py_1.= |
| 281c0 | 20 70 79 5f 30 20 2b 20 31 3b 0a 61 6c 70 68 61 5f 79 20 3d 20 70 79 32 20 2d 20 70 79 5f 30 3b | .py_0.+.1;.alpha_y.=.py2.-.py_0; |
| 281e0 | 0a 0a 67 6f 6f 64 5f 70 6f 69 6e 74 73 20 3d 20 66 69 6e 64 28 28 70 78 5f 30 20 3e 3d 20 30 29 | ..good_points.=.find((px_0.>=.0) |
| 28200 | 20 26 20 28 70 78 5f 31 20 3c 3d 20 28 6e 63 2d 31 29 29 20 26 20 28 70 79 5f 30 20 3e 3d 20 30 | .&.(px_1.<=.(nc-1)).&.(py_0.>=.0 |
| 28220 | 29 20 26 20 28 70 79 5f 31 20 3c 3d 20 28 6e 72 2d 31 29 29 29 3b 0a 0a 49 5f 6c 75 20 3d 20 49 | ).&.(py_1.<=.(nr-1)));..I_lu.=.I |
| 28240 | 28 70 78 5f 30 28 67 6f 6f 64 5f 70 6f 69 6e 74 73 29 20 2a 20 6e 72 20 2b 20 70 79 5f 30 28 67 | (px_0(good_points).*.nr.+.py_0(g |
| 28260 | 6f 6f 64 5f 70 6f 69 6e 74 73 29 20 2b 20 31 29 3b 0a 49 5f 72 75 20 3d 20 49 28 70 78 5f 31 28 | ood_points).+.1);.I_ru.=.I(px_1( |
| 28280 | 67 6f 6f 64 5f 70 6f 69 6e 74 73 29 20 2a 20 6e 72 20 2b 20 70 79 5f 30 28 67 6f 6f 64 5f 70 6f | good_points).*.nr.+.py_0(good_po |
| 282a0 | 69 6e 74 73 29 20 2b 20 31 29 3b 0a 49 5f 6c 64 20 3d 20 49 28 70 78 5f 30 28 67 6f 6f 64 5f 70 | ints).+.1);.I_ld.=.I(px_0(good_p |
| 282c0 | 6f 69 6e 74 73 29 20 2a 20 6e 72 20 2b 20 70 79 5f 31 28 67 6f 6f 64 5f 70 6f 69 6e 74 73 29 20 | oints).*.nr.+.py_1(good_points). |
| 282e0 | 2b 20 31 29 3b 0a 49 5f 72 64 20 3d 20 49 28 70 78 5f 31 28 67 6f 6f 64 5f 70 6f 69 6e 74 73 29 | +.1);.I_rd.=.I(px_1(good_points) |
| 28300 | 20 2a 20 6e 72 20 2b 20 70 79 5f 31 28 67 6f 6f 64 5f 70 6f 69 6e 74 73 29 20 2b 20 31 29 3b 0a | .*.nr.+.py_1(good_points).+.1);. |
| 28320 | 0a 0a 49 5f 69 6e 74 65 72 70 20 3d 20 28 31 20 2d 20 61 6c 70 68 61 5f 79 28 67 6f 6f 64 5f 70 | ..I_interp.=.(1.-.alpha_y(good_p |
| 28340 | 6f 69 6e 74 73 29 29 2e 2a 28 28 31 20 2d 20 61 6c 70 68 61 5f 78 28 67 6f 6f 64 5f 70 6f 69 6e | oints)).*((1.-.alpha_x(good_poin |
| 28360 | 74 73 29 29 2e 2a 20 49 5f 6c 75 20 2b 20 61 6c 70 68 61 5f 78 28 67 6f 6f 64 5f 70 6f 69 6e 74 | ts)).*.I_lu.+.alpha_x(good_point |
| 28380 | 73 29 20 2e 2a 20 49 5f 72 75 29 20 2b 20 61 6c 70 68 61 5f 79 28 67 6f 6f 64 5f 70 6f 69 6e 74 | s)..*.I_ru).+.alpha_y(good_point |
| 283a0 | 73 29 20 2e 2a 20 28 28 31 20 2d 20 61 6c 70 68 61 5f 78 28 67 6f 6f 64 5f 70 6f 69 6e 74 73 29 | s)..*.((1.-.alpha_x(good_points) |
| 283c0 | 29 2e 2a 20 49 5f 6c 64 20 2b 20 61 6c 70 68 61 5f 78 28 67 6f 6f 64 5f 70 6f 69 6e 74 73 29 20 | ).*.I_ld.+.alpha_x(good_points). |
| 283e0 | 2e 2a 20 49 5f 72 64 29 3b 0a 0a 0a 49 72 65 63 28 28 70 78 28 67 6f 6f 64 5f 70 6f 69 6e 74 73 | .*.I_rd);...Irec((px(good_points |
| 28400 | 29 2d 31 29 2a 6e 72 20 2b 20 70 79 28 67 6f 6f 64 5f 70 6f 69 6e 74 73 29 29 20 3d 20 49 5f 69 | )-1)*nr.+.py(good_points)).=.I_i |
| 28420 | 6e 74 65 72 70 3b 0a 0a 0a 0a 72 65 74 75 72 6e 3b 0a 0a 0a 25 20 43 6f 6e 76 65 72 74 20 69 6e | nterp;....return;...%.Convert.in |
| 28440 | 20 69 6e 64 69 63 65 73 3a 0a 0a 66 61 63 74 20 3d 20 33 3b 0a 0a 5b 58 58 2c 59 59 5d 3d 20 6d | .indices:..fact.=.3;..[XX,YY]=.m |
| 28460 | 65 73 68 67 72 69 64 28 31 3a 6e 63 2c 31 3a 6e 72 29 3b 0a 5b 58 58 69 2c 59 59 69 5d 3d 20 6d | eshgrid(1:nc,1:nr);.[XXi,YYi]=.m |
| 28480 | 65 73 68 67 72 69 64 28 31 3a 31 2f 66 61 63 74 3a 6e 63 2c 31 3a 31 2f 66 61 63 74 3a 6e 72 29 | eshgrid(1:1/fact:nc,1:1/fact:nr) |
| 284a0 | 3b 0a 0a 25 74 69 63 3b 0a 49 69 6e 74 65 72 70 20 3d 20 69 6e 74 65 72 70 32 28 58 58 2c 59 59 | ;..%tic;.Iinterp.=.interp2(XX,YY |
| 284c0 | 2c 49 2c 58 58 69 2c 59 59 69 29 3b 20 0a 25 74 6f 63 0a 0a 5b 6e 72 69 2c 6e 63 69 5d 20 3d 20 | ,I,XXi,YYi);..%toc..[nri,nci].=. |
| 284e0 | 73 69 7a 65 28 49 69 6e 74 65 72 70 29 3b 0a 0a 0a 69 6e 64 5f 63 6f 6c 20 3d 20 72 6f 75 6e 64 | size(Iinterp);...ind_col.=.round |
| 28500 | 28 66 61 63 74 2a 28 66 28 31 29 2a 78 64 28 31 2c 3a 29 2b 63 28 31 29 29 29 2b 31 3b 0a 69 6e | (fact*(f(1)*xd(1,:)+c(1)))+1;.in |
| 28520 | 64 5f 72 6f 77 20 3d 20 72 6f 75 6e 64 28 66 61 63 74 2a 28 66 28 32 29 2a 78 64 28 32 2c 3a 29 | d_row.=.round(fact*(f(2)*xd(2,:) |
| 28540 | 2b 63 28 32 29 29 29 2b 31 3b 0a 0a 67 6f 6f 64 5f 70 6f 69 6e 74 73 20 3d 20 66 69 6e 64 28 28 | +c(2)))+1;..good_points.=.find(( |
| 28560 | 69 6e 64 5f 63 6f 6c 20 3e 3d 31 29 26 28 69 6e 64 5f 63 6f 6c 3c 3d 6e 63 69 29 26 28 69 6e 64 | ind_col.>=1)&(ind_col<=nci)&(ind |
| 28580 | 5f 72 6f 77 20 3e 3d 31 29 26 20 28 69 6e 64 5f 72 6f 77 20 3c 3d 6e 72 69 29 29 3b 0a 6b 6b 29 | _row.>=1)&.(ind_row.<=nri));.kk) |
| 285a0 | 20 27 20 3d 20 77 69 6e 74 79 3b 27 5d 29 3b 0a 20 20 20 20 20 20 09 0a 20 20 20 09 09 65 76 61 | .'.=.winty;']);..............eva |
| 285c0 | 6c 28 5b 27 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3d 20 78 63 20 2d 20 31 3b 27 5d | l(['x_'.num2str(kk).'=.xc.-.1;'] |
| 285e0 | 29 3b 0a 20 20 20 09 0a 20 20 20 09 65 6c 73 65 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 09 66 | );..........else...............f |
| 28600 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 52 65 63 74 61 6e 67 6c 65 32 53 71 75 61 72 65 2e 6d | TOOLBOX_calib/Rectangle2Square.m |
| 28620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 28640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 28660 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 28680 | 20 20 20 20 36 36 35 20 20 37 30 32 34 30 33 37 33 34 37 20 20 31 31 37 34 30 00 20 00 00 00 00 | ....665..7024037347..11740...... |
| 286a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 286c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 286e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 28700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 28720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 28740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 28760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 28780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 287a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 287c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 287e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 28800 | 66 75 6e 63 74 69 6f 6e 20 5b 73 71 75 61 72 65 5d 20 3d 20 52 65 63 74 61 6e 67 6c 65 32 53 71 | function.[square].=.Rectangle2Sq |
| 28820 | 75 61 72 65 28 72 65 63 74 61 6e 67 6c 65 2c 4c 2c 57 29 3b 0a 0a 25 20 47 65 6e 65 72 61 74 65 | uare(rectangle,L,W);..%.Generate |
| 28840 | 20 74 68 65 20 73 71 75 61 72 65 20 66 72 6f 6d 20 61 20 72 65 63 74 61 6e 67 6c 65 20 6f 66 20 | .the.square.from.a.rectangle.of. |
| 28860 | 6b 6e 6f 77 6e 20 73 65 67 6d 65 6e 74 20 6c 65 6e 67 74 68 73 0a 25 20 66 72 6f 6d 20 70 74 31 | known.segment.lengths.%.from.pt1 |
| 28880 | 20 74 6f 20 70 74 32 20 3a 20 4c 0a 25 20 66 72 6f 6d 20 70 74 32 20 74 6f 20 70 74 33 20 3a 20 | .to.pt2.:.L.%.from.pt2.to.pt3.:. |
| 288a0 | 57 0a 0a 5b 75 5f 68 6f 72 69 2c 75 5f 76 65 72 74 5d 20 3d 20 55 6e 57 61 72 70 50 6c 61 6e 65 | W..[u_hori,u_vert].=.UnWarpPlane |
| 288c0 | 28 72 65 63 74 61 6e 67 6c 65 29 3b 0a 0a 63 6f 65 66 66 5f 78 20 3d 20 73 71 72 74 28 57 2f 4c | (rectangle);..coeff_x.=.sqrt(W/L |
| 288e0 | 29 3b 0a 63 6f 65 66 66 5f 79 20 3d 20 31 2f 63 6f 65 66 66 5f 78 3b 0a 0a 78 5f 63 6f 6f 72 64 | );.coeff_y.=.1/coeff_x;..x_coord |
| 28900 | 20 3d 20 5b 20 30 20 63 6f 65 66 66 5f 78 20 20 63 6f 65 66 66 5f 78 20 30 5d 3b 0a 79 5f 63 6f | .=.[.0.coeff_x..coeff_x.0];.y_co |
| 28920 | 6f 72 64 20 3d 20 5b 20 30 20 30 20 63 6f 65 66 66 5f 79 20 63 6f 65 66 66 5f 79 5d 3b 0a 0a 0a | ord.=.[.0.0.coeff_y.coeff_y];... |
| 28940 | 73 71 75 61 72 65 20 3d 20 72 65 63 74 61 6e 67 6c 65 28 3a 2c 31 29 20 2a 20 6f 6e 65 73 28 31 | square.=.rectangle(:,1).*.ones(1 |
| 28960 | 2c 34 29 20 2b 20 75 5f 68 6f 72 69 2a 78 5f 63 6f 6f 72 64 20 2b 20 75 5f 76 65 72 74 2a 79 5f | ,4).+.u_hori*x_coord.+.u_vert*y_ |
| 28980 | 63 6f 6f 72 64 3b 0a 73 71 75 61 72 65 20 3d 20 73 71 75 61 72 65 20 2e 2f 20 28 6f 6e 65 73 28 | coord;.square.=.square../.(ones( |
| 289a0 | 33 2c 31 29 2a 73 71 75 61 72 65 28 33 2c 3a 29 29 3b 0a 0a 0a 02 36 a8 00 1c 00 0d 55 6e 57 61 | 3,1)*square(3,:));....6.....UnWa |
| 289c0 | 72 70 50 6c 61 6e 65 2e 6d 00 36 a8 00 00 06 48 00 02 36 a9 00 18 00 0a 77 72 69 74 65 72 61 73 | rpPlane.m.6....H..6.....writeras |
| 289e0 | 2e 6d 00 48 00 00 06 64 00 02 36 aa 00 20 00 10 65 72 72 6f 72 5f 61 6e 61 6c 79 73 69 73 2e 6d | .m.H...d..6.....error_analysis.m |
| 28a00 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 72 65 70 72 6f 6a 65 63 74 5f 63 61 6c 69 62 2e 6d 00 | TOOLBOX_calib/reproject_calib.m. |
| 28a20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 28a40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 28a60 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 28a80 | 20 20 20 33 37 33 37 20 20 37 30 32 34 30 33 37 33 34 37 20 20 31 31 37 34 33 00 20 00 00 00 00 | ...3737..7024037347..11743...... |
| 28aa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 28ac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 28ae0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 28b00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 28b20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 28b40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 28b60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 28b80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 28ba0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 28bc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 28be0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 28c00 | 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 52 45 50 52 4f 4a 45 43 54 20 4f | %%%%%%%%%%%%%%%%%%%%.REPROJECT.O |
| 28c20 | 4e 20 54 48 45 20 49 4d 41 47 45 53 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 | N.THE.IMAGES.%%%%%%%%%%%%%%%%%%% |
| 28c40 | 25 25 25 25 25 0a 0a 69 66 20 7e 65 78 69 73 74 28 27 6e 6f 5f 69 6d 61 67 65 27 29 2c 0a 20 20 | %%%%%..if.~exist('no_image'),... |
| 28c60 | 20 6e 6f 5f 69 6d 61 67 65 20 3d 20 30 3b 0a 65 6e 64 3b 0a 0a 63 68 65 63 6b 5f 61 63 74 69 76 | .no_image.=.0;.end;..check_activ |
| 28c80 | 65 5f 69 6d 61 67 65 73 3b 0a 0a 0a 25 20 43 6f 6c 6f 72 20 63 6f 64 65 20 66 6f 72 20 65 61 63 | e_images;...%.Color.code.for.eac |
| 28ca0 | 68 20 69 6d 61 67 65 3a 0a 0a 63 6f 6c 6f 72 73 20 3d 20 27 62 72 67 6b 63 6d 27 3b 0a 0a 25 20 | h.image:..colors.=.'brgkcm';..%. |
| 28cc0 | 52 65 70 72 6f 6a 65 63 74 20 74 68 65 20 70 61 74 74 65 72 6e 73 20 6f 6e 20 74 68 65 20 69 6d | Reproject.the.patterns.on.the.im |
| 28ce0 | 61 67 65 73 2c 20 61 6e 64 20 63 6f 6d 70 75 74 65 20 74 68 65 20 70 69 78 65 6c 20 65 72 72 6f | ages,.and.compute.the.pixel.erro |
| 28d00 | 72 73 3a 0a 0a 25 20 52 65 6c 6f 61 64 20 74 68 65 20 69 6d 61 67 65 73 20 69 66 20 6e 65 63 65 | rs:..%.Reload.the.images.if.nece |
| 28d20 | 73 73 61 72 79 0a 0a 69 66 20 7e 65 78 69 73 74 28 5b 27 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 | ssary..if.~exist(['omc_'.num2str |
| 28d40 | 28 69 6e 64 5f 61 63 74 69 76 65 28 31 29 29 20 5d 29 2c 0a 20 20 20 66 70 72 69 6e 74 66 28 31 | (ind_active(1)).]),....fprintf(1 |
| 28d60 | 2c 27 4e 65 65 64 20 74 6f 20 63 61 6c 69 62 72 61 74 65 20 62 65 66 6f 72 65 20 73 68 6f 77 69 | ,'Need.to.calibrate.before.showi |
| 28d80 | 6e 67 20 69 6d 61 67 65 20 72 65 70 72 6f 6a 65 63 74 69 6f 6e 2e 20 4d 61 79 62 65 20 6e 65 65 | ng.image.reprojection..Maybe.nee |
| 28da0 | 64 20 74 6f 20 6c 6f 61 64 20 43 61 6c 69 62 5f 52 65 73 75 6c 74 73 2e 6d 61 74 20 66 69 6c 65 | d.to.load.Calib_Results.mat.file |
| 28dc0 | 2e 5c 6e 27 29 3b 0a 20 20 20 72 65 74 75 72 6e 3b 0a 65 6e 64 3b 0a 0a 69 66 20 7e 6e 6f 5f 69 | .\n');....return;.end;..if.~no_i |
| 28de0 | 6d 61 67 65 2c 0a 09 69 66 20 7e 65 78 69 73 74 28 5b 27 49 5f 27 20 6e 75 6d 32 73 74 72 28 69 | mage,..if.~exist(['I_'.num2str(i |
| 28e00 | 6e 64 5f 61 63 74 69 76 65 28 31 29 29 20 5d 27 29 2c 0a 20 20 20 09 69 6d 61 5f 72 65 61 64 5f | nd_active(1)).]'),.....ima_read_ |
| 28e20 | 63 61 6c 69 62 3b 0a 20 20 20 09 69 66 20 6e 6f 5f 69 6d 61 67 65 5f 66 69 6c 65 2c 0a 20 20 20 | calib;.....if.no_image_file,.... |
| 28e40 | 20 20 20 09 66 70 72 69 6e 74 66 28 31 2c 27 57 41 52 4e 49 4e 47 3a 20 44 6f 20 6e 6f 74 20 73 | ....fprintf(1,'WARNING:.Do.not.s |
| 28e60 | 68 6f 77 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 69 6d 61 67 65 73 5c 6e 27 29 3b 20 25 72 65 | how.the.original.images\n');.%re |
| 28e80 | 74 75 72 6e 3b 0a 20 20 20 09 65 6e 64 3b 0a 20 20 20 65 6e 64 3b 0a 65 6c 73 65 0a 20 20 20 6e | turn;.....end;....end;.else....n |
| 28ea0 | 6f 5f 69 6d 61 67 65 5f 66 69 6c 65 20 3d 20 31 3b 0a 65 6e 64 3b 0a 0a 0a 0a 69 6d 61 5f 6e 75 | o_image_file.=.1;.end;....ima_nu |
| 28ec0 | 6d 62 65 72 73 20 3d 20 69 6e 70 75 74 28 27 4e 75 6d 62 65 72 28 73 29 20 6f 66 20 69 6d 61 67 | mbers.=.input('Number(s).of.imag |
| 28ee0 | 65 28 73 29 20 74 6f 20 73 68 6f 77 20 28 5b 5d 20 3d 20 61 6c 6c 20 69 6d 61 67 65 73 29 20 3d | e(s).to.show.([].=.all.images).= |
| 28f00 | 20 27 29 3b 0a 0a 69 66 20 69 73 65 6d 70 74 79 28 69 6d 61 5f 6e 75 6d 62 65 72 73 29 2c 0a 20 | .');..if.isempty(ima_numbers),.. |
| 28f20 | 20 20 69 6d 61 5f 70 72 6f 63 20 3d 20 31 3a 6e 5f 69 6d 61 3b 0a 65 6c 73 65 0a 20 20 20 69 6d | ..ima_proc.=.1:n_ima;.else....im |
| 28f40 | 61 5f 70 72 6f 63 20 3d 20 69 6d 61 5f 6e 75 6d 62 65 72 73 3b 0a 65 6e 64 3b 0a 0a 0a 66 69 67 | a_proc.=.ima_numbers;.end;...fig |
| 28f60 | 75 72 65 28 35 29 3b 0a 66 6f 72 20 6b 6b 20 3d 20 69 6d 61 5f 70 72 6f 63 2c 20 25 31 3a 6e 5f | ure(5);.for.kk.=.ima_proc,.%1:n_ |
| 28f80 | 69 6d 61 2c 0a 20 20 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 20 26 20 65 | ima,....if.active_images(kk).&.e |
| 28fa0 | 76 61 6c 28 5b 27 7e 69 73 6e 61 6e 28 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 28 31 | val(['~isnan(y_'.num2str(kk).'(1 |
| 28fc0 | 2c 31 29 29 27 5d 29 2c 0a 09 20 20 20 65 76 61 6c 28 5b 27 70 6c 6f 74 28 65 78 5f 27 20 6e 75 | ,1))']),.....eval(['plot(ex_'.nu |
| 28fe0 | 6d 32 73 74 72 28 6b 6b 29 20 27 28 31 2c 3a 29 2c 65 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b | m2str(kk).'(1,:),ex_'.num2str(kk |
| 29000 | 29 20 27 28 32 2c 3a 29 2c 27 27 27 20 63 6f 6c 6f 72 73 28 72 65 6d 28 6b 6b 2d 31 2c 36 29 2b | ).'(2,:),'''.colors(rem(kk-1,6)+ |
| 29020 | 31 29 20 27 2b 27 27 29 3b 27 5d 29 3b 0a 20 20 20 20 20 20 68 6f 6c 64 20 6f 6e 3b 0a 20 20 20 | 1).'+'');']);.......hold.on;.... |
| 29040 | 65 6e 64 3b 0a 65 6e 64 3b 0a 68 6f 6c 64 20 6f 66 66 3b 0a 61 78 69 73 28 27 65 71 75 61 6c 27 | end;.end;.hold.off;.axis('equal' |
| 29060 | 29 3b 0a 74 69 74 6c 65 28 27 52 65 70 72 6f 6a 65 63 74 69 6f 6e 20 65 72 72 6f 72 20 28 69 6e | );.title('Reprojection.error.(in |
| 29080 | 20 70 69 78 65 6c 29 27 29 3b 0a 78 6c 61 62 65 6c 28 27 78 27 29 3b 0a 79 6c 61 62 65 6c 28 27 | .pixel)');.xlabel('x');.ylabel(' |
| 290a0 | 79 27 29 3b 0a 64 72 61 77 6e 6f 77 3b 0a 0a 73 65 74 28 35 2c 27 4e 61 6d 65 27 2c 27 65 72 72 | y');.drawnow;..set(5,'Name','err |
| 290c0 | 6f 72 27 2c 27 4e 75 6d 62 65 72 54 69 74 6c 65 27 2c 27 6f 66 66 27 29 3b 0a 0a 0a 0a 66 6f 72 | or','NumberTitle','off');....for |
| 290e0 | 20 6b 6b 20 3d 20 69 6d 61 5f 70 72 6f 63 2c 0a 20 20 20 0a 20 20 20 69 66 20 61 63 74 69 76 65 | .kk.=.ima_proc,........if.active |
| 29100 | 5f 69 6d 61 67 65 73 28 6b 6b 29 20 26 20 65 76 61 6c 28 5b 27 7e 69 73 6e 61 6e 28 79 5f 27 20 | _images(kk).&.eval(['~isnan(y_'. |
| 29120 | 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 28 31 2c 31 29 29 27 5d 29 2c 0a 20 20 20 0a 20 20 20 09 | num2str(kk).'(1,1))']),......... |
| 29140 | 69 66 20 65 78 69 73 74 28 5b 27 49 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 5d 29 2c 0a 20 20 | if.exist(['I_'.num2str(kk)]),... |
| 29160 | 20 20 20 20 09 65 76 61 6c 28 5b 27 49 20 3d 20 49 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 | .....eval(['I.=.I_'.num2str(kk). |
| 29180 | 27 3b 27 5d 29 3b 0a 20 20 20 09 65 6c 73 65 0a 20 20 20 20 20 20 09 49 20 3d 20 32 35 35 2a 6f | ';']);.....else........I.=.255*o |
| 291a0 | 6e 65 73 28 6e 79 2c 6e 78 29 3b 0a 20 20 20 09 65 6e 64 3b 0a 20 20 20 0a 20 20 20 09 66 69 67 | nes(ny,nx);.....end;.........fig |
| 291c0 | 75 72 65 28 35 2b 6b 6b 29 3b 0a 20 20 20 09 69 6d 61 67 65 28 49 29 3b 20 68 6f 6c 64 20 6f 6e | ure(5+kk);.....image(I);.hold.on |
| 291e0 | 3b 0a 20 20 20 09 63 6f 6c 6f 72 6d 61 70 28 67 72 61 79 28 32 35 36 29 29 3b 0a 20 20 20 09 74 | ;.....colormap(gray(256));.....t |
| 29200 | 69 74 6c 65 28 5b 27 49 6d 61 67 65 20 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 2d 20 49 | itle(['Image.'.num2str(kk).'.-.I |
| 29220 | 6d 61 67 65 20 70 6f 69 6e 74 73 20 28 2b 29 20 61 6e 64 20 72 65 70 72 6f 6a 65 63 74 65 64 20 | mage.points.(+).and.reprojected. |
| 29240 | 67 72 69 64 20 70 6f 69 6e 74 73 20 28 6f 29 27 5d 29 3b 0a 20 20 20 09 65 76 61 6c 28 5b 27 70 | grid.points.(o)']);.....eval(['p |
| 29260 | 6c 6f 74 28 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 28 31 2c 3a 29 2b 31 2c 78 5f 27 | lot(x_'.num2str(kk).'(1,:)+1,x_' |
| 29280 | 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 28 32 2c 3a 29 2b 31 2c 27 27 72 2b 27 27 29 3b 27 5d | .num2str(kk).'(2,:)+1,''r+'');'] |
| 292a0 | 29 3b 0a 20 20 20 09 65 76 61 6c 28 5b 27 70 6c 6f 74 28 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b | );.....eval(['plot(y_'.num2str(k |
| 292c0 | 6b 29 20 27 28 31 2c 3a 29 2b 31 2c 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 28 32 2c | k).'(1,:)+1,y_'.num2str(kk).'(2, |
| 292e0 | 3a 29 2b 31 2c 27 27 27 20 63 6f 6c 6f 72 73 28 72 65 6d 28 6b 6b 2d 31 2c 36 29 2b 31 29 20 27 | :)+1,'''.colors(rem(kk-1,6)+1).' |
| 29300 | 6f 27 27 29 3b 27 5d 29 3b 0a 20 20 20 09 7a 6f 6f 6d 20 6f 6e 3b 0a 20 20 20 09 68 6f 6c 64 20 | o'');']);.....zoom.on;.....hold. |
| 29320 | 6f 66 66 3b 0a 20 20 20 09 64 72 61 77 6e 6f 77 3b 0a 0a 20 20 20 20 20 20 73 65 74 28 35 2b 6b | off;.....drawnow;........set(5+k |
| 29340 | 6b 2c 27 4e 61 6d 65 27 2c 6e 75 6d 32 73 74 72 28 6b 6b 29 2c 27 4e 75 6d 62 65 72 54 69 74 6c | k,'Name',num2str(kk),'NumberTitl |
| 29360 | 65 27 2c 27 6f 66 66 27 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a 65 6e | e','off');...........end;.....en |
| 29380 | 64 3b 0a 0a 0a 65 72 72 5f 73 74 64 20 3d 20 73 74 64 28 65 78 27 29 27 3b 0a 0a 66 70 72 69 6e | d;...err_std.=.std(ex')';..fprin |
| 293a0 | 74 66 28 31 2c 27 50 69 78 65 6c 20 65 72 72 6f 72 3a 20 20 20 20 20 20 65 72 72 20 3d 20 5b 20 | tf(1,'Pixel.error:......err.=.[. |
| 293c0 | 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 5c 6e 27 2c 65 72 72 5f 73 74 64 29 3b 20 0a 20 | %3.5f...%3.5f]\n\n',err_std);... |
| 293e0 | 20 09 09 65 76 61 6c 28 5b 27 6e 5f 73 71 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 | ...eval(['n_sq_y_'.num2str(kk).' |
| 29400 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 72 6f 64 72 69 67 75 65 73 2e 6d 00 00 00 00 00 00 00 | TOOLBOX_calib/rodrigues.m....... |
| 29420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 29440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 29460 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 29480 | 20 20 31 30 36 32 36 20 20 37 30 32 34 30 33 37 33 35 31 20 20 31 30 36 32 35 00 20 00 00 00 00 | ..10626..7024037351..10625...... |
| 294a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 294c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 294e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 29500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 29520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 29540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 29560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 29580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 295a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 295c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 295e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 29600 | 66 75 6e 63 74 69 6f 6e 09 5b 6f 75 74 2c 64 6f 75 74 5d 3d 72 6f 64 72 69 67 75 65 73 28 69 6e | function.[out,dout]=rodrigues(in |
| 29620 | 29 0a 0a 25 20 52 4f 44 52 49 47 55 45 53 09 54 72 61 6e 73 66 6f 72 6d 20 72 6f 74 61 74 69 6f | )..%.RODRIGUES.Transform.rotatio |
| 29640 | 6e 20 6d 61 74 72 69 78 20 69 6e 74 6f 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 61 6e | n.matrix.into.rotation.vector.an |
| 29660 | 64 20 76 69 63 65 76 65 72 73 61 2e 0a 25 09 09 0a 25 09 09 53 69 6e 74 61 78 3a 20 20 5b 4f 55 | d.viceversa..%...%..Sintax:..[OU |
| 29680 | 54 5d 3d 52 4f 44 52 49 47 55 45 53 28 49 4e 29 0a 25 20 09 09 49 66 20 49 4e 20 69 73 20 61 20 | T]=RODRIGUES(IN).%...If.IN.is.a. |
| 296a0 | 33 78 33 20 72 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 78 20 74 68 65 6e 20 4f 55 54 20 69 73 20 | 3x3.rotation.matrix.then.OUT.is. |
| 296c0 | 74 68 65 0a 25 09 09 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 33 78 31 20 72 6f 74 61 74 69 6f | the.%..corresponding.3x1.rotatio |
| 296e0 | 6e 20 76 65 63 74 6f 72 0a 25 20 09 09 69 66 20 49 4e 20 69 73 20 61 20 72 6f 74 61 74 69 6f 6e | n.vector.%...if.IN.is.a.rotation |
| 29700 | 20 33 2d 76 65 63 74 6f 72 20 74 68 65 6e 20 4f 55 54 20 69 73 20 74 68 65 20 0a 25 09 09 63 6f | .3-vector.then.OUT.is.the..%..co |
| 29720 | 72 72 65 73 70 6f 6e 64 69 6e 67 20 33 78 33 20 72 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 78 0a | rresponding.3x3.rotation.matrix. |
| 29740 | 25 0a 0a 25 25 0a 25 25 09 09 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 4d 61 72 63 68 20 31 39 | %..%%.%%..Copyright.(c).March.19 |
| 29760 | 39 33 20 2d 2d 20 50 69 65 74 72 6f 20 50 65 72 6f 6e 61 0a 25 25 09 09 43 61 6c 69 66 6f 72 6e | 93.--.Pietro.Perona.%%..Californ |
| 29780 | 69 61 20 49 6e 73 74 69 74 75 74 65 20 6f 66 20 54 65 63 68 6e 6f 6c 6f 67 79 0a 25 25 0a 0a 25 | ia.Institute.of.Technology.%%..% |
| 297a0 | 25 20 41 4c 4c 20 43 48 45 43 4b 45 44 20 42 59 20 4a 45 41 4e 2d 59 56 45 53 20 42 4f 55 47 55 | %.ALL.CHECKED.BY.JEAN-YVES.BOUGU |
| 297c0 | 45 54 2c 20 4f 63 74 6f 62 65 72 20 31 39 39 35 2e 0a 25 25 20 46 4f 52 20 41 4c 4c 20 4a 41 43 | ET,.October.1995..%%.FOR.ALL.JAC |
| 297e0 | 4f 42 49 41 4e 20 4d 41 54 52 49 43 45 53 20 21 21 21 20 4c 4f 4f 4b 20 41 54 20 54 48 45 20 54 | OBIAN.MATRICES.!!!.LOOK.AT.THE.T |
| 29800 | 45 53 54 20 41 54 20 54 48 45 20 45 4e 44 20 21 21 0a 0a 25 25 20 42 55 47 20 77 68 65 6e 20 6e | EST.AT.THE.END.!!..%%.BUG.when.n |
| 29820 | 6f 72 6d 28 6f 6d 29 3d 70 69 20 66 69 78 65 64 20 2d 2d 20 41 70 72 69 6c 20 36 74 68 2c 20 31 | orm(om)=pi.fixed.--.April.6th,.1 |
| 29840 | 39 39 37 3b 0a 25 25 20 4a 65 61 6e 2d 59 76 65 73 20 42 6f 75 67 75 65 74 0a 0a 0a 5b 6d 2c 6e | 997;.%%.Jean-Yves.Bouguet...[m,n |
| 29860 | 5d 20 3d 20 73 69 7a 65 28 69 6e 29 3b 0a 25 62 69 67 65 70 73 20 3d 20 31 30 65 2b 34 2a 65 70 | ].=.size(in);.%bigeps.=.10e+4*ep |
| 29880 | 73 3b 0a 62 69 67 65 70 73 20 3d 20 31 30 65 2b 32 30 2a 65 70 73 3b 0a 0a 69 66 20 28 28 6d 3d | s;.bigeps.=.10e+20*eps;..if.((m= |
| 298a0 | 3d 31 29 20 26 20 28 6e 3d 3d 33 29 29 20 7c 20 28 28 6d 3d 3d 33 29 20 26 20 28 6e 3d 3d 31 29 | =1).&.(n==3)).|.((m==3).&.(n==1) |
| 298c0 | 29 20 25 25 20 69 74 20 69 73 20 61 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 0a 20 20 20 | ).%%.it.is.a.rotation.vector.... |
| 298e0 | 74 68 65 74 61 20 3d 20 6e 6f 72 6d 28 69 6e 29 3b 0a 20 20 20 69 66 20 74 68 65 74 61 20 3c 20 | theta.=.norm(in);....if.theta.<. |
| 29900 | 65 70 73 0a 20 20 20 20 20 20 52 20 3d 20 65 79 65 28 33 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 | eps.......R.=.eye(3);........... |
| 29920 | 20 20 20 25 69 66 20 6e 61 72 67 6f 75 74 20 3e 20 31 2c 0a 20 20 20 20 20 20 0a 20 20 20 20 20 | ...%if.nargout.>.1,............. |
| 29940 | 20 64 52 64 69 6e 20 3d 20 5b 30 20 30 20 30 3b 0a 09 20 20 20 20 20 20 20 30 20 30 20 31 3b 0a | .dRdin.=.[0.0.0;.........0.0.1;. |
| 29960 | 09 20 20 20 20 20 20 20 30 20 2d 31 20 30 3b 0a 09 20 20 20 20 20 20 20 30 20 30 20 2d 31 3b 0a | ........0.-1.0;.........0.0.-1;. |
| 29980 | 09 20 20 20 20 20 20 20 30 20 30 20 30 3b 0a 09 20 20 20 20 20 20 20 31 20 30 20 30 3b 0a 09 20 | ........0.0.0;.........1.0.0;... |
| 299a0 | 20 20 20 20 20 20 30 20 31 20 30 3b 0a 09 20 20 20 20 20 20 20 2d 31 20 30 20 30 3b 0a 20 20 20 | ......0.1.0;.........-1.0.0;.... |
| 299c0 | 20 20 20 20 20 20 20 30 20 30 20 30 5d 3b 0a 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 25 65 | .......0.0.0];................%e |
| 299e0 | 6e 64 3b 0a 09 20 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 69 66 20 6e 3d 3d 6c 65 6e 67 74 | nd;.......else.......if.n==lengt |
| 29a00 | 68 28 69 6e 29 20 20 69 6e 3d 69 6e 27 3b 20 65 6e 64 3b 20 09 25 25 20 6d 61 6b 65 20 69 74 20 | h(in)..in=in';.end;..%%.make.it. |
| 29a20 | 61 20 63 6f 6c 75 6d 6e 20 76 65 63 2e 20 69 66 20 6e 65 63 65 73 73 2e 0a 09 20 0a 09 20 25 6d | a.column.vec..if.necess.......%m |
| 29a40 | 33 20 3d 20 5b 69 6e 2c 74 68 65 74 61 5d 0a 0a 09 20 64 6d 33 64 69 6e 20 3d 20 5b 65 79 65 28 | 3.=.[in,theta]....dm3din.=.[eye( |
| 29a60 | 33 29 3b 69 6e 27 2f 74 68 65 74 61 5d 3b 0a 0a 09 20 6f 6d 65 67 61 20 3d 20 69 6e 2f 74 68 65 | 3);in'/theta];....omega.=.in/the |
| 29a80 | 74 61 3b 0a 09 20 0a 09 20 25 6d 32 20 3d 20 5b 6f 6d 65 67 61 3b 74 68 65 74 61 5d 0a 09 20 0a | ta;......%m2.=.[omega;theta].... |
| 29aa0 | 09 20 64 6d 32 64 6d 33 20 3d 20 5b 65 79 65 28 33 29 2f 74 68 65 74 61 20 2d 69 6e 2f 74 68 65 | ..dm2dm3.=.[eye(3)/theta.-in/the |
| 29ac0 | 74 61 5e 32 3b 20 7a 65 72 6f 73 28 31 2c 33 29 20 31 5d 3b 0a 09 20 0a 09 20 61 6c 70 68 61 20 | ta^2;.zeros(1,3).1];......alpha. |
| 29ae0 | 3d 20 63 6f 73 28 74 68 65 74 61 29 3b 0a 09 20 62 65 74 61 20 3d 20 73 69 6e 28 74 68 65 74 61 | =.cos(theta);...beta.=.sin(theta |
| 29b00 | 29 3b 0a 09 20 67 61 6d 6d 61 20 3d 20 31 2d 63 6f 73 28 74 68 65 74 61 29 3b 0a 09 20 6f 6d 65 | );...gamma.=.1-cos(theta);...ome |
| 29b20 | 67 61 76 3d 5b 5b 30 20 2d 6f 6d 65 67 61 28 33 29 20 6f 6d 65 67 61 28 32 29 5d 3b 5b 6f 6d 65 | gav=[[0.-omega(3).omega(2)];[ome |
| 29b40 | 67 61 28 33 29 20 30 20 2d 6f 6d 65 67 61 28 31 29 5d 3b 5b 2d 6f 6d 65 67 61 28 32 29 20 6f 6d | ga(3).0.-omega(1)];[-omega(2).om |
| 29b60 | 65 67 61 28 31 29 20 30 20 5d 5d 3b 0a 09 20 41 20 3d 20 6f 6d 65 67 61 2a 6f 6d 65 67 61 27 3b | ega(1).0.]];...A.=.omega*omega'; |
| 29b80 | 0a 09 20 0a 09 20 25 6d 31 20 3d 20 5b 61 6c 70 68 61 3b 62 65 74 61 3b 67 61 6d 6d 61 3b 6f 6d | ......%m1.=.[alpha;beta;gamma;om |
| 29ba0 | 65 67 61 76 3b 41 5d 3b 0a 09 20 0a 09 20 64 6d 31 64 6d 32 20 3d 20 7a 65 72 6f 73 28 32 31 2c | egav;A];......dm1dm2.=.zeros(21, |
| 29bc0 | 34 29 3b 0a 09 20 64 6d 31 64 6d 32 28 31 2c 34 29 20 3d 20 2d 73 69 6e 28 74 68 65 74 61 29 3b | 4);...dm1dm2(1,4).=.-sin(theta); |
| 29be0 | 0a 09 20 64 6d 31 64 6d 32 28 32 2c 34 29 20 3d 20 63 6f 73 28 74 68 65 74 61 29 3b 0a 09 20 64 | ...dm1dm2(2,4).=.cos(theta);...d |
| 29c00 | 6d 31 64 6d 32 28 33 2c 34 29 20 3d 20 73 69 6e 28 74 68 65 74 61 29 3b 0a 09 20 64 6d 31 64 6d | m1dm2(3,4).=.sin(theta);...dm1dm |
| 29c20 | 32 28 34 3a 31 32 2c 31 3a 33 29 20 3d 20 5b 30 20 30 20 30 20 30 20 30 20 31 20 30 20 2d 31 20 | 2(4:12,1:3).=.[0.0.0.0.0.1.0.-1. |
| 29c40 | 30 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30 20 30 20 2d 31 20 | 0;.......................0.0.-1. |
| 29c60 | 30 20 30 20 30 20 31 20 30 20 30 3b 0a 09 09 09 20 20 20 20 20 30 20 31 20 30 20 2d 31 20 30 20 | 0.0.0.1.0.0;.........0.1.0.-1.0. |
| 29c80 | 30 20 30 20 30 20 30 5d 27 3b 0a 09 09 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 77 31 | 0.0.0.0]';....................w1 |
| 29ca0 | 20 3d 20 6f 6d 65 67 61 28 31 29 3b 0a 09 20 77 32 20 3d 20 6f 6d 65 67 61 28 32 29 3b 0a 09 20 | .=.omega(1);...w2.=.omega(2);... |
| 29cc0 | 77 33 20 3d 20 6f 6d 65 67 61 28 33 29 3b 0a 09 20 0a 09 20 64 6d 31 64 6d 32 28 31 33 3a 32 31 | w3.=.omega(3);......dm1dm2(13:21 |
| 29ce0 | 2c 31 29 20 3d 20 5b 32 2a 77 31 3b 77 32 3b 77 33 3b 77 32 3b 30 3b 30 3b 77 33 3b 30 3b 30 5d | ,1).=.[2*w1;w2;w3;w2;0;0;w3;0;0] |
| 29d00 | 3b 0a 09 20 64 6d 31 64 6d 32 28 31 33 3a 20 32 31 2c 32 29 20 3d 20 5b 30 3b 77 31 3b 30 3b 77 | ;...dm1dm2(13:.21,2).=.[0;w1;0;w |
| 29d20 | 31 3b 32 2a 77 32 3b 77 33 3b 30 3b 77 33 3b 30 5d 3b 0a 09 20 64 6d 31 64 6d 32 28 31 33 3a 32 | 1;2*w2;w3;0;w3;0];...dm1dm2(13:2 |
| 29d40 | 31 2c 33 29 20 3d 20 5b 30 3b 30 3b 77 31 3b 30 3b 30 3b 77 32 3b 77 31 3b 77 32 3b 32 2a 77 33 | 1,3).=.[0;0;w1;0;0;w2;w1;w2;2*w3 |
| 29d60 | 5d 3b 0a 09 20 0a 09 20 52 20 3d 20 65 79 65 28 33 29 2a 61 6c 70 68 61 20 2b 20 6f 6d 65 67 61 | ];......R.=.eye(3)*alpha.+.omega |
| 29d80 | 76 2a 62 65 74 61 20 2b 20 41 2a 67 61 6d 6d 61 3b 0a 09 20 0a 09 20 64 52 64 6d 31 20 3d 20 7a | v*beta.+.A*gamma;......dRdm1.=.z |
| 29da0 | 65 72 6f 73 28 39 2c 32 31 29 3b 0a 09 20 0a 09 20 64 52 64 6d 31 28 5b 31 20 35 20 39 5d 2c 31 | eros(9,21);......dRdm1([1.5.9],1 |
| 29dc0 | 29 20 3d 20 6f 6e 65 73 28 33 2c 31 29 3b 0a 09 20 64 52 64 6d 31 28 3a 2c 32 29 20 3d 20 6f 6d | ).=.ones(3,1);...dRdm1(:,2).=.om |
| 29de0 | 65 67 61 76 28 3a 29 3b 0a 09 20 64 52 64 6d 31 28 3a 2c 34 3a 31 32 29 20 3d 20 62 65 74 61 2a | egav(:);...dRdm1(:,4:12).=.beta* |
| 29e00 | 65 79 65 28 39 29 3b 0a 09 20 64 52 64 6d 31 28 3a 2c 33 29 20 3d 20 41 28 3a 29 3b 0a 09 20 64 | eye(9);...dRdm1(:,3).=.A(:);...d |
| 29e20 | 52 64 6d 31 28 3a 2c 31 33 3a 32 31 29 20 3d 20 67 61 6d 6d 61 2a 65 79 65 28 39 29 3b 0a 09 20 | Rdm1(:,13:21).=.gamma*eye(9);... |
| 29e40 | 0a 09 20 64 52 64 69 6e 20 3d 20 64 52 64 6d 31 20 2a 20 64 6d 31 64 6d 32 20 2a 20 64 6d 32 64 | ...dRdin.=.dRdm1.*.dm1dm2.*.dm2d |
| 29e60 | 6d 33 20 2a 20 64 6d 33 64 69 6e 3b 0a 09 20 0a 09 20 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 | m3.*.dm3din;.............end;... |
| 29e80 | 20 20 20 20 6f 75 74 20 3d 20 52 3b 0a 20 20 20 20 20 20 64 6f 75 74 20 3d 20 64 52 64 69 6e 3b | ....out.=.R;.......dout.=.dRdin; |
| 29ea0 | 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 25 25 20 69 74 20 69 73 20 70 72 6f 62 2e 20 61 20 72 | ..............%%.it.is.prob..a.r |
| 29ec0 | 6f 74 20 6d 61 74 72 2e 0a 20 20 20 65 6c 73 65 69 66 20 28 28 6d 3d 3d 6e 29 20 26 20 28 6d 3d | ot.matr.....elseif.((m==n).&.(m= |
| 29ee0 | 3d 33 29 20 26 20 28 6e 6f 72 6d 28 69 6e 27 20 2a 20 69 6e 20 2d 20 65 79 65 28 33 29 29 20 3c | =3).&.(norm(in'.*.in.-.eye(3)).< |
| 29f00 | 20 62 69 67 65 70 73 29 2e 2e 2e 0a 09 20 20 20 20 26 20 28 61 62 73 28 64 65 74 28 69 6e 29 2d | .bigeps).........&.(abs(det(in)- |
| 29f20 | 31 29 20 3c 20 62 69 67 65 70 73 29 29 0a 20 20 20 20 20 20 52 20 3d 20 69 6e 3b 0a 20 20 20 20 | 1).<.bigeps)).......R.=.in;..... |
| 29f40 | 20 20 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 74 72 20 3d 20 28 74 72 61 | .......................tr.=.(tra |
| 29f60 | 63 65 28 52 29 2d 31 29 2f 32 3b 0a 20 20 20 20 20 20 64 74 72 64 52 20 3d 20 5b 31 20 30 20 30 | ce(R)-1)/2;.......dtrdR.=.[1.0.0 |
| 29f80 | 20 30 20 31 20 30 20 30 20 30 20 31 5d 2f 32 3b 0a 20 20 20 20 20 20 74 68 65 74 61 20 3d 20 72 | .0.1.0.0.0.1]/2;.......theta.=.r |
| 29fa0 | 65 61 6c 28 61 63 6f 73 28 74 72 29 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 0a 20 20 20 | eal(acos(tr));.................. |
| 29fc0 | 20 20 20 69 66 20 73 69 6e 28 74 68 65 74 61 29 20 3e 3d 20 31 65 2d 35 2c 0a 09 20 0a 09 20 64 | ...if.sin(theta).>=.1e-5,......d |
| 29fe0 | 74 68 65 74 61 64 74 72 20 3d 20 2d 31 2f 73 71 72 74 28 31 2d 74 72 5e 32 29 3b 0a 09 20 0a 09 | thetadtr.=.-1/sqrt(1-tr^2);..... |
| 2a000 | 20 64 74 68 65 74 61 64 52 20 3d 20 64 74 68 65 74 61 64 74 72 20 2a 20 64 74 72 64 52 3b 0a 09 | .dthetadR.=.dthetadtr.*.dtrdR;.. |
| 2a020 | 20 25 20 76 61 72 31 20 3d 20 5b 76 74 68 3b 74 68 65 74 61 5d 3b 0a 09 20 76 74 68 20 3d 20 31 | .%.var1.=.[vth;theta];...vth.=.1 |
| 2a040 | 2f 28 32 2a 73 69 6e 28 74 68 65 74 61 29 29 3b 0a 09 20 64 76 74 68 64 74 68 65 74 61 20 3d 20 | /(2*sin(theta));...dvthdtheta.=. |
| 2a060 | 2d 76 74 68 2a 63 6f 73 28 74 68 65 74 61 29 2f 73 69 6e 28 74 68 65 74 61 29 3b 0a 09 20 64 76 | -vth*cos(theta)/sin(theta);...dv |
| 2a080 | 61 72 31 64 74 68 65 74 61 20 3d 20 5b 64 76 74 68 64 74 68 65 74 61 3b 31 5d 3b 0a 09 20 0a 09 | ar1dtheta.=.[dvthdtheta;1];..... |
| 2a0a0 | 20 64 76 61 72 31 64 52 20 3d 20 20 64 76 61 72 31 64 74 68 65 74 61 20 2a 20 64 74 68 65 74 61 | .dvar1dR.=..dvar1dtheta.*.dtheta |
| 2a0c0 | 64 52 3b 0a 09 20 0a 09 20 0a 09 20 6f 6d 31 20 3d 20 5b 52 28 33 2c 32 29 2d 52 28 32 2c 33 29 | dR;.........om1.=.[R(3,2)-R(2,3) |
| 2a0e0 | 2c 20 52 28 31 2c 33 29 2d 52 28 33 2c 31 29 2c 20 52 28 32 2c 31 29 2d 52 28 31 2c 32 29 5d 27 | ,.R(1,3)-R(3,1),.R(2,1)-R(1,2)]' |
| 2a100 | 3b 0a 09 20 0a 09 20 64 6f 6d 31 64 52 20 3d 20 5b 30 20 30 20 30 20 30 20 30 20 31 20 30 20 2d | ;......dom1dR.=.[0.0.0.0.0.1.0.- |
| 2a120 | 31 20 30 3b 0a 09 20 20 20 20 20 20 20 30 20 30 20 2d 31 20 30 20 30 20 30 20 31 20 30 20 30 3b | 1.0;.........0.0.-1.0.0.0.1.0.0; |
| 2a140 | 0a 09 20 20 20 20 20 20 20 30 20 31 20 30 20 2d 31 20 30 20 30 20 30 20 30 20 30 5d 3b 0a 09 20 | .........0.1.0.-1.0.0.0.0.0];... |
| 2a160 | 0a 09 20 25 20 76 61 72 20 3d 20 5b 6f 6d 31 3b 76 74 68 3b 74 68 65 74 61 5d 3b 0a 09 20 64 76 | ...%.var.=.[om1;vth;theta];...dv |
| 2a180 | 61 72 64 52 20 3d 20 5b 64 6f 6d 31 64 52 3b 64 76 61 72 31 64 52 5d 3b 0a 09 20 0a 09 20 25 20 | ardR.=.[dom1dR;dvar1dR];......%. |
| 2a1a0 | 76 61 72 32 20 3d 20 5b 6f 6d 3b 74 68 65 74 61 5d 3b 0a 09 20 6f 6d 20 3d 20 76 74 68 2a 6f 6d | var2.=.[om;theta];...om.=.vth*om |
| 2a1c0 | 31 3b 0a 09 20 64 6f 6d 64 76 61 72 20 3d 20 5b 76 74 68 2a 65 79 65 28 33 29 20 6f 6d 31 20 7a | 1;...domdvar.=.[vth*eye(3).om1.z |
| 2a1e0 | 65 72 6f 73 28 33 2c 31 29 5d 3b 0a 09 20 64 74 68 65 74 61 64 76 61 72 20 3d 20 5b 30 20 30 20 | eros(3,1)];...dthetadvar.=.[0.0. |
| 2a200 | 30 20 30 20 31 5d 3b 0a 09 20 64 76 61 72 32 64 76 61 72 20 3d 20 5b 64 6f 6d 64 76 61 72 3b 64 | 0.0.1];...dvar2dvar.=.[domdvar;d |
| 2a220 | 74 68 65 74 61 64 76 61 72 5d 3b 0a 09 20 0a 09 20 0a 09 20 6f 75 74 20 3d 20 6f 6d 2a 74 68 65 | thetadvar];.........out.=.om*the |
| 2a240 | 74 61 3b 0a 09 20 64 6f 6d 65 67 61 64 76 61 72 32 20 3d 20 5b 74 68 65 74 61 2a 65 79 65 28 33 | ta;...domegadvar2.=.[theta*eye(3 |
| 2a260 | 29 20 6f 6d 5d 3b 0a 09 20 0a 09 20 64 6f 75 74 20 3d 20 64 6f 6d 65 67 61 64 76 61 72 32 20 2a | ).om];......dout.=.domegadvar2.* |
| 2a280 | 20 64 76 61 72 32 64 76 61 72 20 2a 20 64 76 61 72 64 52 3b 0a 09 20 0a 09 20 0a 20 20 20 20 20 | .dvar2dvar.*.dvardR;............ |
| 2a2a0 | 20 65 6c 73 65 0a 09 20 69 66 20 74 72 20 3e 20 30 3b 20 09 09 09 25 20 63 61 73 65 20 6e 6f 72 | .else...if.tr.>.0;....%.case.nor |
| 2a2c0 | 6d 28 6f 6d 29 3d 30 3b 0a 09 20 20 20 20 0a 09 20 20 20 20 6f 75 74 20 3d 20 5b 30 20 30 20 30 | m(om)=0;............out.=.[0.0.0 |
| 2a2e0 | 5d 27 3b 0a 09 20 20 20 20 0a 09 20 20 20 20 64 6f 75 74 20 3d 20 5b 30 20 30 20 30 20 30 20 30 | ]';............dout.=.[0.0.0.0.0 |
| 2a300 | 20 31 2f 32 20 30 20 2d 31 2f 32 20 30 3b 0a 09 09 20 20 30 20 30 20 2d 31 2f 32 20 30 20 30 20 | .1/2.0.-1/2.0;.....0.0.-1/2.0.0. |
| 2a320 | 30 20 31 2f 32 20 30 20 30 3b 0a 09 09 20 20 30 20 31 2f 32 20 30 20 2d 31 2f 32 20 30 20 30 20 | 0.1/2.0.0;.....0.1/2.0.-1/2.0.0. |
| 2a340 | 30 20 30 20 30 5d 3b 0a 09 20 65 6c 73 65 20 09 09 09 09 25 20 63 61 73 65 20 6e 6f 72 6d 28 6f | 0.0.0];...else.....%.case.norm(o |
| 2a360 | 6d 29 3d 70 69 3b 20 25 25 20 66 69 78 65 64 20 41 70 72 69 6c 20 36 74 68 0a 09 20 20 20 20 0a | m)=pi;.%%.fixed.April.6th....... |
| 2a380 | 09 20 20 20 20 0a 09 20 20 20 20 6f 75 74 20 3d 20 74 68 65 74 61 20 2a 20 28 73 71 72 74 28 28 | ...........out.=.theta.*.(sqrt(( |
| 2a3a0 | 64 69 61 67 28 52 29 2b 31 29 2f 32 29 2e 2a 5b 31 3b 32 2a 28 52 28 31 2c 32 3a 33 29 3e 3d 30 | diag(R)+1)/2).*[1;2*(R(1,2:3)>=0 |
| 2a3c0 | 29 27 2d 31 5d 29 3b 0a 09 20 20 20 20 25 6b 65 79 62 6f 61 72 64 3b 0a 09 20 20 20 20 0a 09 20 | )'-1]);......%keyboard;......... |
| 2a3e0 | 20 20 20 69 66 20 6e 61 72 67 6f 75 74 20 3e 20 31 2c 0a 09 20 20 20 20 20 20 20 66 70 72 69 6e | ...if.nargout.>.1,.........fprin |
| 2a400 | 74 66 28 31 2c 27 57 41 52 4e 49 4e 47 21 21 21 21 20 4a 61 63 6f 62 69 61 6e 20 64 6f 6d 64 52 | tf(1,'WARNING!!!!.Jacobian.domdR |
| 2a420 | 20 75 6e 64 65 66 69 6e 65 64 21 21 21 5c 6e 27 29 3b 0a 09 09 20 09 64 6f 75 74 20 3d 20 4e 61 | .undefined!!!\n');.....dout.=.Na |
| 2a440 | 4e 2a 6f 6e 65 73 28 33 2c 39 29 3b 0a 09 20 20 20 20 65 6e 64 3b 0a 09 20 65 6e 64 3b 20 0a 20 | N*ones(3,9);......end;...end;... |
| 2a460 | 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 65 | .....end;...........else.......e |
| 2a480 | 72 72 6f 72 28 27 4e 65 69 74 68 65 72 20 61 20 72 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 78 20 | rror('Neither.a.rotation.matrix. |
| 2a4a0 | 6e 6f 72 20 61 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 77 65 72 65 20 70 72 6f 76 69 | nor.a.rotation.vector.were.provi |
| 2a4c0 | 64 65 64 27 29 3b 0a 20 20 20 65 6e 64 3b 0a 0a 72 65 74 75 72 6e 3b 0a 0a 25 25 20 74 65 73 74 | ded');....end;..return;..%%.test |
| 2a4e0 | 20 6f 66 20 74 68 65 20 4a 61 63 6f 62 69 61 6e 73 3a 0a 0a 25 25 25 25 20 54 45 53 54 20 4f 46 | .of.the.Jacobians:..%%%%.TEST.OF |
| 2a500 | 20 64 52 64 6f 6d 3a 0a 6f 6d 20 3d 20 72 61 6e 64 6e 28 33 2c 31 29 3b 0a 64 6f 6d 20 3d 20 72 | .dRdom:.om.=.randn(3,1);.dom.=.r |
| 2a520 | 61 6e 64 6e 28 33 2c 31 29 2f 31 30 30 30 30 30 30 3b 0a 0a 5b 52 31 2c 64 52 31 5d 20 3d 20 72 | andn(3,1)/1000000;..[R1,dR1].=.r |
| 2a540 | 6f 64 72 69 67 75 65 73 28 6f 6d 29 3b 0a 52 32 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 2b | odrigues(om);.R2.=.rodrigues(om+ |
| 2a560 | 64 6f 6d 29 3b 0a 0a 52 32 61 20 3d 20 52 31 20 2b 20 72 65 73 68 61 70 65 28 64 52 31 20 2a 20 | dom);..R2a.=.R1.+.reshape(dR1.*. |
| 2a580 | 64 6f 6d 2c 33 2c 33 29 3b 0a 0a 67 61 69 6e 20 3d 20 6e 6f 72 6d 28 52 32 20 2d 20 52 31 29 2f | dom,3,3);..gain.=.norm(R2.-.R1)/ |
| 2a5a0 | 6e 6f 72 6d 28 52 32 20 2d 20 52 32 61 29 0a 0a 25 25 25 20 54 45 53 54 20 4f 46 20 64 4f 6d 64 | norm(R2.-.R2a)..%%%.TEST.OF.dOmd |
| 2a5c0 | 52 3a 0a 6f 6d 20 3d 20 72 61 6e 64 6e 28 33 2c 31 29 3b 0a 52 20 3d 20 72 6f 64 72 69 67 75 65 | R:.om.=.randn(3,1);.R.=.rodrigue |
| 2a5e0 | 73 28 6f 6d 29 3b 0a 64 6f 6d 20 3d 20 72 61 6e 64 6e 28 33 2c 31 29 2f 31 30 30 30 30 3b 0a 64 | s(om);.dom.=.randn(3,1)/10000;.d |
| 2a600 | 52 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 2b 64 6f 6d 29 20 2d 20 52 3b 0a 0a 5b 6f 6d 63 | R.=.rodrigues(om+dom).-.R;..[omc |
| 2a620 | 2c 64 6f 6d 64 52 5d 20 3d 20 72 6f 64 72 69 67 75 65 73 28 52 29 3b 0a 5b 6f 6d 32 5d 20 3d 20 | ,domdR].=.rodrigues(R);.[om2].=. |
| 2a640 | 72 6f 64 72 69 67 75 65 73 28 52 2b 64 52 29 3b 0a 0a 6f 6d 5f 61 70 70 20 3d 20 6f 6d 63 20 2b | rodrigues(R+dR);..om_app.=.omc.+ |
| 2a660 | 20 64 6f 6d 64 52 2a 64 52 28 3a 29 3b 0a 0a 67 61 69 6e 20 3d 20 6e 6f 72 6d 28 6f 6d 32 20 2d | .domdR*dR(:);..gain.=.norm(om2.- |
| 2a680 | 20 6f 6d 63 29 2f 6e 6f 72 6d 28 6f 6d 32 20 2d 20 6f 6d 5f 61 70 70 29 0a 0a 0a 25 25 25 20 4f | .omc)/norm(om2.-.om_app)...%%%.O |
| 2a6a0 | 54 48 45 52 20 42 55 47 3a 20 28 46 49 58 45 44 20 4e 4f 57 21 21 21 29 0a 0a 6f 6d 75 20 3d 20 | THER.BUG:.(FIXED.NOW!!!)..omu.=. |
| 2a6c0 | 72 61 6e 64 6e 28 33 2c 31 29 3b 20 20 20 0a 6f 6d 75 20 3d 20 6f 6d 75 2f 6e 6f 72 6d 28 6f 6d | randn(3,1);....omu.=.omu/norm(om |
| 2a6e0 | 75 29 0a 6f 6d 20 3d 20 70 69 2a 6f 6d 75 3b 20 20 20 20 20 20 20 20 0a 5b 52 2c 64 52 5d 3d 20 | u).om.=.pi*omu;.........[R,dR]=. |
| 2a700 | 72 6f 64 72 69 67 75 65 73 28 6f 6d 29 3b 0a 5b 6f 6d 32 5d 20 3d 20 72 6f 64 72 69 67 75 65 73 | rodrigues(om);.[om2].=.rodrigues |
| 2a720 | 28 52 29 3b 0a 5b 6f 6d 20 6f 6d 32 5d 0a 0a 25 25 25 20 4e 4f 52 4d 41 4c 20 4f 50 45 52 41 54 | (R);.[om.om2]..%%%.NORMAL.OPERAT |
| 2a740 | 49 4f 4e 0a 0a 6f 6d 20 3d 20 72 61 6e 64 6e 28 33 2c 31 29 3b 20 20 20 20 20 20 20 20 20 0a 5b | ION..om.=.randn(3,1);..........[ |
| 2a760 | 52 2c 64 52 5d 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 29 3b 0a 5b 6f 6d 32 5d 20 3d 20 72 6f | R,dR]=.rodrigues(om);.[om2].=.ro |
| 2a780 | 64 72 69 67 75 65 73 28 52 29 3b 0a 5b 6f 6d 20 6f 6d 32 5d 0a 0a 20 64 52 64 6d 31 20 3d 20 7a | drigues(R);.[om.om2]...dRdm1.=.z |
| 2a7a0 | 65 72 6f 73 28 39 2c 32 31 29 3b 0a 09 20 0a 09 20 64 52 64 6d 31 28 5b 31 20 35 20 39 5d 2c 31 | eros(9,21);......dRdm1([1.5.9],1 |
| 2a7c0 | 29 20 3d 20 6f 6e 65 73 28 33 2c 31 29 3b 0a 09 20 64 52 64 6d 31 28 3a 2c 32 29 20 3d 20 6f 6d | ).=.ones(3,1);...dRdm1(:,2).=.om |
| 2a7e0 | 65 67 61 76 28 3a 29 3b 0a 09 20 64 52 64 6d 31 28 3a 2c 34 3a 31 32 29 20 3d 20 62 65 74 61 2a | egav(:);...dRdm1(:,4:12).=.beta* |
| 2a800 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 72 6f 74 61 74 69 6f 6e 2e 6d 00 00 00 00 00 00 00 00 | TOOLBOX_calib/rotation.m........ |
| 2a820 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2a840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2a860 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 2a880 | 20 20 20 20 33 34 36 20 20 37 30 32 34 30 33 37 33 35 32 20 20 31 30 34 32 30 00 20 00 00 00 00 | ....346..7024037352..10420...... |
| 2a8a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2a8c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2a8e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2a900 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2a920 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2a940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2a960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2a980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2a9a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2a9c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2a9e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2aa00 | 66 75 6e 63 74 69 6f 6e 20 5b 5d 20 3d 20 72 6f 74 61 74 69 6f 6e 28 73 74 29 3b 0a 0a 69 66 20 | function.[].=.rotation(st);..if. |
| 2aa20 | 6e 61 72 67 69 6e 20 3c 20 31 2c 0a 20 20 20 73 74 3d 20 31 3b 0a 65 6e 64 3b 0a 0a 0a 66 69 67 | nargin.<.1,....st=.1;.end;...fig |
| 2aa40 | 20 3d 20 67 63 66 3b 0a 0a 61 78 20 3d 20 67 63 61 3b 0a 0a 76 76 20 3d 20 67 65 74 28 61 78 2c | .=.gcf;..ax.=.gca;..vv.=.get(ax, |
| 2aa60 | 27 76 69 65 77 27 29 3b 0a 0a 61 7a 20 3d 20 76 76 28 31 29 3b 0a 65 6c 20 3d 20 76 76 28 32 29 | 'view');..az.=.vv(1);.el.=.vv(2) |
| 2aa80 | 3b 0a 0a 66 6f 72 20 61 7a 69 20 3d 20 61 7a 3a 2d 61 62 73 28 73 74 29 3a 61 7a 2d 33 36 30 2c | ;..for.azi.=.az:-abs(st):az-360, |
| 2aaa0 | 0a 20 20 20 0a 20 20 20 73 65 74 28 61 78 2c 27 76 69 65 77 27 2c 5b 61 7a 69 20 65 6c 5d 29 3b | ........set(ax,'view',[azi.el]); |
| 2aac0 | 0a 20 20 20 66 69 67 75 72 65 28 66 69 67 29 3b 0a 20 20 20 64 72 61 77 6e 6f 77 3b 0a 20 20 20 | ....figure(fig);....drawnow;.... |
| 2aae0 | 0a 65 6e 64 3b 0a 68 5f 63 65 6e 74 65 72 33 44 2e 6d 00 65 00 00 05 dc 00 02 36 a5 00 18 00 09 | .end;.h_center3D.m.e......6..... |
| 2ab00 | 73 74 61 72 74 75 70 2e 6d 00 00 a4 00 00 05 f0 00 02 36 a6 00 18 00 09 74 65 73 74 5f 33 64 2e | startup.m.........6.....test_3d. |
| 2ab20 | 6d 00 6e 74 00 00 06 00 00 02 33 c0 00 14 00 06 69 73 33 44 2e 6d 00 2e 00 00 06 1c 00 02 36 a7 | m.nt......3.....is3D.m........6. |
| 2ab40 | 00 20 00 11 75 6e 64 69 73 74 6f 72 74 5f 69 6d 61 67 65 2e 6d 00 36 a7 00 00 06 34 00 02 36 a8 | ....undistort_image.m.6....4..6. |
| 2ab60 | 00 1c 00 0d 55 6e 57 61 72 70 50 6c 61 6e 65 2e 6d 00 06 34 00 00 06 48 00 02 36 a9 00 18 00 0a | ....UnWarpPlane.m..4...H..6..... |
| 2ab80 | 77 72 69 74 65 72 61 73 2e 6d 00 2e 00 00 06 64 00 02 36 aa 00 20 00 10 65 72 72 6f 72 5f 61 6e | writeras.m.....d..6.....error_an |
| 2aba0 | 61 6c 79 73 69 73 2e 6d 00 02 36 aa 00 00 06 78 00 02 36 ab 00 18 00 09 6c 6f 61 64 69 6e 72 2e | alysis.m..6....x..6.....loadinr. |
| 2abc0 | 6d 00 00 6c 00 00 06 8c 00 02 36 ac 00 18 00 09 6c 6f 61 64 70 67 6d 2e 6d 00 79 73 00 00 06 a0 | m..l......6.....loadpgm.m.ys.... |
| 2abe0 | 00 02 36 ad 00 18 00 09 6c 6f 61 64 70 70 6d 2e 6d 00 61 64 00 00 06 b4 00 02 36 ae 00 18 00 09 | ..6.....loadppm.m.ad......6..... |
| 2ac00 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 73 61 76 69 6e 67 5f 63 61 6c 69 62 2e 6d 00 00 00 00 | TOOLBOX_calib/saving_calib.m.... |
| 2ac20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2ac40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2ac60 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 2ac80 | 20 20 20 32 31 30 33 20 20 37 30 32 34 30 33 37 33 35 36 20 20 31 31 32 31 37 00 20 00 00 00 00 | ...2103..7024037356..11217...... |
| 2aca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2acc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2ace0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2ad00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2ad20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2ad40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2ad60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2ad80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2ada0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2adc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2ade0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2ae00 | 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 53 61 76 69 6e 67 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 | fprintf(1,'\nSaving.calibration. |
| 2ae20 | 72 65 73 75 6c 74 73 20 75 6e 64 65 72 20 43 61 6c 69 62 5f 52 65 73 75 6c 74 73 2e 6d 61 74 5c | results.under.Calib_Results.mat\ |
| 2ae40 | 6e 27 29 3b 0a 0a 63 68 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 0a 69 66 20 7e | n');..check_active_images;..if.~ |
| 2ae60 | 65 78 69 73 74 28 27 73 6f 6c 75 74 69 6f 6e 5f 69 6e 69 74 27 29 2c 20 73 6f 6c 75 74 69 6f 6e | exist('solution_init'),.solution |
| 2ae80 | 5f 69 6e 69 74 20 3d 20 5b 5d 3b 20 65 6e 64 3b 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 | _init.=.[];.end;..for.kk.=.1:n_i |
| 2aea0 | 6d 61 2c 0a 20 20 20 69 66 20 7e 65 78 69 73 74 28 5b 27 64 58 5f 27 20 6e 75 6d 32 73 74 72 28 | ma,....if.~exist(['dX_'.num2str( |
| 2aec0 | 6b 6b 29 5d 29 2c 20 65 76 61 6c 28 5b 27 64 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 | kk)]),.eval(['dX_'.num2str(kk).' |
| 2aee0 | 3d 20 64 58 3b 27 5d 29 3b 20 65 6e 64 3b 0a 20 20 20 69 66 20 7e 65 78 69 73 74 28 5b 27 64 59 | =.dX;']);.end;....if.~exist(['dY |
| 2af00 | 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 5d 29 2c 20 65 76 61 6c 28 5b 27 64 59 5f 27 20 6e 75 | _'.num2str(kk)]),.eval(['dY_'.nu |
| 2af20 | 6d 32 73 74 72 28 6b 6b 29 20 27 3d 20 64 59 3b 27 5d 29 3b 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a | m2str(kk).'=.dY;']);.end;.end;.. |
| 2af40 | 69 66 20 7e 65 78 69 73 74 28 27 70 61 72 61 6d 5f 6c 69 73 74 27 29 2c 0a 20 20 20 70 61 72 61 | if.~exist('param_list'),....para |
| 2af60 | 6d 5f 6c 69 73 74 20 3d 20 73 6f 6c 75 74 69 6f 6e 3b 0a 65 6e 64 3b 0a 0a 0a 73 74 72 69 6e 67 | m_list.=.solution;.end;...string |
| 2af80 | 5f 73 61 76 65 20 3d 20 27 73 61 76 65 20 43 61 6c 69 62 5f 52 65 73 75 6c 74 73 20 70 61 72 61 | _save.=.'save.Calib_Results.para |
| 2afa0 | 6d 5f 6c 69 73 74 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 20 69 6e 64 5f 61 63 74 69 76 65 20 | m_list.active_images.ind_active. |
| 2afc0 | 66 63 20 6b 63 20 63 63 20 65 78 20 78 20 79 20 73 6f 6c 75 74 69 6f 6e 20 73 6f 6c 5f 77 69 74 | fc.kc.cc.ex.x.y.solution.sol_wit |
| 2afe0 | 68 5f 63 65 6e 74 65 72 20 73 6f 6c 75 74 69 6f 6e 5f 69 6e 69 74 20 77 69 6e 74 78 20 77 69 6e | h_center.solution_init.wintx.win |
| 2b000 | 74 79 20 6e 5f 69 6d 61 20 74 79 70 65 5f 6e 75 6d 62 65 72 69 6e 67 20 4e 5f 73 6c 6f 74 73 20 | ty.n_ima.type_numbering.N_slots. |
| 2b020 | 73 6d 61 6c 6c 5f 63 61 6c 69 62 5f 69 6d 61 67 65 20 66 69 72 73 74 5f 6e 75 6d 20 69 6d 61 67 | small_calib_image.first_num.imag |
| 2b040 | 65 5f 6e 75 6d 62 65 72 73 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 20 63 61 6c 69 62 5f 6e 61 6d | e_numbers.format_image.calib_nam |
| 2b060 | 65 20 48 63 61 6c 20 57 63 61 6c 20 6e 78 20 6e 79 20 6d 61 70 20 64 58 5f 64 65 66 61 75 6c 74 | e.Hcal.Wcal.nx.ny.map.dX_default |
| 2b080 | 20 64 59 5f 64 65 66 61 75 6c 74 20 4b 4b 20 69 6e 76 5f 4b 4b 20 64 58 20 64 59 27 3b 0a 0a 66 | .dY_default.KK.inv_KK.dX.dY';..f |
| 2b0a0 | 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 73 74 72 69 6e 67 5f 73 61 76 65 20 | or.kk.=.1:n_ima,....string_save. |
| 2b0c0 | 3d 20 5b 73 74 72 69 6e 67 5f 73 61 76 65 20 27 20 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 | =.[string_save.'.X_'.num2str(kk) |
| 2b0e0 | 20 27 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 79 5f 27 20 6e 75 6d 32 73 74 72 | .'.x_'.num2str(kk).'.y_'.num2str |
| 2b100 | 28 6b 6b 29 20 27 20 65 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 6f 6d 63 5f 27 20 | (kk).'.ex_'.num2str(kk).'.omc_'. |
| 2b120 | 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 52 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 | num2str(kk).'.Rc_'.num2str(kk).' |
| 2b140 | 20 54 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 48 5f 27 20 6e 75 6d 32 73 74 72 28 | .Tc_'.num2str(kk).'.H_'.num2str( |
| 2b160 | 6b 6b 29 20 27 20 6e 5f 73 71 5f 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 6e 5f 73 | kk).'.n_sq_x_'.num2str(kk).'.n_s |
| 2b180 | 71 5f 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 77 69 6e 74 78 5f 27 20 6e 75 6d 32 | q_y_'.num2str(kk).'.wintx_'.num2 |
| 2b1a0 | 73 74 72 28 6b 6b 29 20 27 20 77 69 6e 74 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 | str(kk).'.winty_'.num2str(kk).'. |
| 2b1c0 | 64 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 64 59 5f 27 20 6e 75 6d 32 73 74 72 28 | dX_'.num2str(kk).'.dY_'.num2str( |
| 2b1e0 | 6b 6b 29 5d 3b 0a 65 6e 64 3b 0a 0a 25 66 70 72 69 6e 74 66 28 31 2c 27 54 6f 20 6c 6f 61 64 20 | kk)];.end;..%fprintf(1,'To.load. |
| 2b200 | 6c 61 74 65 72 20 63 6c 69 63 6b 20 6f 6e 20 4c 6f 61 64 5c 6e 27 29 3b 0a 0a 66 70 72 69 6e 74 | later.click.on.Load\n');..fprint |
| 2b220 | 66 28 31 2c 27 64 6f 6e 65 5c 6e 27 29 3b 0a 0a 65 76 61 6c 28 73 74 72 69 6e 67 5f 73 61 76 65 | f(1,'done\n');..eval(string_save |
| 2b240 | 29 3b 0a 6e 65 73 28 33 2c 39 29 3b 0a 09 20 20 20 20 65 6e 64 3b 0a 09 20 65 6e 64 3b 20 0a 20 | );.nes(3,9);......end;...end;... |
| 2b260 | 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 65 | .....end;...........else.......e |
| 2b280 | 72 72 6f 72 28 27 4e 65 69 74 68 65 72 20 61 20 72 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 78 20 | rror('Neither.a.rotation.matrix. |
| 2b2a0 | 6e 6f 72 20 61 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 77 65 72 65 20 70 72 6f 76 69 | nor.a.rotation.vector.were.provi |
| 2b2c0 | 64 65 64 27 29 3b 0a 20 20 20 65 6e 64 3b 0a 0a 72 65 74 75 72 6e 3b 0a 0a 25 25 20 74 65 73 74 | ded');....end;..return;..%%.test |
| 2b2e0 | 20 6f 66 20 74 68 65 20 4a 61 63 6f 62 69 61 6e 73 3a 0a 0a 25 25 25 25 20 54 45 53 54 20 4f 46 | .of.the.Jacobians:..%%%%.TEST.OF |
| 2b300 | 20 64 52 64 6f 6d 3a 0a 6f 6d 20 3d 20 72 61 6e 64 6e 28 33 2c 31 29 3b 0a 64 6f 6d 20 3d 20 72 | .dRdom:.om.=.randn(3,1);.dom.=.r |
| 2b320 | 61 6e 64 6e 28 33 2c 31 29 2f 31 30 30 30 30 30 30 3b 0a 0a 5b 52 31 2c 64 52 31 5d 20 3d 20 72 | andn(3,1)/1000000;..[R1,dR1].=.r |
| 2b340 | 6f 64 72 69 67 75 65 73 28 6f 6d 29 3b 0a 52 32 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 2b | odrigues(om);.R2.=.rodrigues(om+ |
| 2b360 | 64 6f 6d 29 3b 0a 0a 52 32 61 20 3d 20 52 31 20 2b 20 72 65 73 68 61 70 65 28 64 52 31 20 2a 20 | dom);..R2a.=.R1.+.reshape(dR1.*. |
| 2b380 | 64 6f 6d 2c 33 2c 33 29 3b 0a 0a 67 61 69 6e 20 3d 20 6e 6f 72 6d 28 52 32 20 2d 20 52 31 29 2f | dom,3,3);..gain.=.norm(R2.-.R1)/ |
| 2b3a0 | 6e 6f 72 6d 28 52 32 20 2d 20 52 32 61 29 0a 0a 25 25 25 20 54 45 53 54 20 4f 46 20 64 4f 6d 64 | norm(R2.-.R2a)..%%%.TEST.OF.dOmd |
| 2b3c0 | 52 3a 0a 6f 6d 20 3d 20 72 61 6e 64 6e 28 33 2c 31 29 3b 0a 52 20 3d 20 72 6f 64 72 69 67 75 65 | R:.om.=.randn(3,1);.R.=.rodrigue |
| 2b3e0 | 73 28 6f 6d 29 3b 0a 64 6f 6d 20 3d 20 72 61 6e 64 6e 28 33 2c 31 29 2f 31 30 30 30 30 3b 0a 64 | s(om);.dom.=.randn(3,1)/10000;.d |
| 2b400 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 73 63 72 69 70 74 5f 66 69 74 5f 64 69 73 74 6f 72 74 | TOOLBOX_calib/script_fit_distort |
| 2b420 | 69 6f 6e 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ion.m........................... |
| 2b440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2b460 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 2b480 | 20 20 20 31 37 32 35 20 20 37 30 32 34 30 33 37 33 35 37 20 20 31 33 32 33 34 00 20 00 00 00 00 | ...1725..7024037357..13234...... |
| 2b4a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2b4c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2b4e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2b500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2b520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2b540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2b560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2b580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2b5a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2b5c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2b5e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2b600 | 0a 20 20 20 20 20 20 73 61 74 69 73 5f 64 69 73 74 6f 72 74 20 3d 20 30 3b 0a 20 20 20 20 20 20 | .......satis_distort.=.0;....... |
| 2b620 | 0a 20 20 20 20 20 20 64 69 73 70 28 5b 27 45 73 74 69 6d 61 74 65 64 20 66 6f 63 61 6c 3a 20 27 | .......disp(['Estimated.focal:.' |
| 2b640 | 20 6e 75 6d 32 73 74 72 28 66 5f 67 29 20 27 20 70 69 78 65 6c 73 27 5d 29 3b 0a 20 20 20 20 20 | .num2str(f_g).'.pixels']);...... |
| 2b660 | 20 0a 20 20 20 20 20 20 77 68 69 6c 65 20 7e 73 61 74 69 73 5f 64 69 73 74 6f 72 74 2c 0a 0a 09 | ........while.~satis_distort,... |
| 2b680 | 20 6b 5f 67 20 3d 20 69 6e 70 75 74 28 27 47 75 65 73 73 20 66 6f 72 20 64 69 73 74 6f 72 74 69 | .k_g.=.input('Guess.for.distorti |
| 2b6a0 | 6f 6e 20 66 61 63 74 6f 72 20 6b 63 20 28 5b 5d 3d 30 29 3a 20 27 29 3b 0a 09 20 0a 09 20 69 66 | on.factor.kc.([]=0):.');......if |
| 2b6c0 | 20 69 73 65 6d 70 74 79 28 6b 5f 67 29 2c 20 6b 5f 67 20 3d 20 30 3b 20 65 6e 64 3b 0a 20 20 20 | .isempty(k_g),.k_g.=.0;.end;.... |
| 2b6e0 | 20 20 20 0a 09 20 78 79 5f 63 6f 72 6e 65 72 73 5f 75 6e 64 69 73 74 20 3d 20 63 6f 6d 70 5f 64 | ......xy_corners_undist.=.comp_d |
| 2b700 | 69 73 74 6f 72 74 69 6f 6e 32 28 5b 78 27 20 2d 20 63 5f 67 28 31 29 3b 79 27 2d 63 5f 67 28 32 | istortion2([x'.-.c_g(1);y'-c_g(2 |
| 2b720 | 29 5d 2f 66 5f 67 2c 6b 5f 67 29 3b 0a 09 20 0a 09 20 78 75 20 3d 20 78 79 5f 63 6f 72 6e 65 72 | )]/f_g,k_g);......xu.=.xy_corner |
| 2b740 | 73 5f 75 6e 64 69 73 74 28 31 2c 3a 29 27 3b 0a 09 20 79 75 20 3d 20 78 79 5f 63 6f 72 6e 65 72 | s_undist(1,:)';...yu.=.xy_corner |
| 2b760 | 73 5f 75 6e 64 69 73 74 28 32 2c 3a 29 27 3b 0a 09 20 0a 09 20 5b 58 58 75 5d 20 3d 20 70 72 6f | s_undist(2,:)';......[XXu].=.pro |
| 2b780 | 6a 65 63 74 65 64 47 72 69 64 20 28 20 5b 78 75 28 31 29 3b 79 75 28 31 29 5d 2c 20 5b 78 75 28 | jectedGrid.(.[xu(1);yu(1)],.[xu( |
| 2b7a0 | 32 29 3b 79 75 28 32 29 5d 2c 5b 78 75 28 33 29 3b 79 75 28 33 29 5d 2c 20 5b 78 75 28 34 29 3b | 2);yu(2)],[xu(3);yu(3)],.[xu(4); |
| 2b7c0 | 79 75 28 34 29 5d 2c 6e 5f 73 71 5f 78 2b 31 2c 6e 5f 73 71 5f 79 2b 31 29 3b 20 25 20 54 68 65 | yu(4)],n_sq_x+1,n_sq_y+1);.%.The |
| 2b7e0 | 20 66 75 6c 6c 20 67 72 69 64 0a 09 20 0a 09 20 58 58 20 3d 20 28 6f 6e 65 73 28 32 2c 31 29 2a | .full.grid......XX.=.(ones(2,1)* |
| 2b800 | 28 31 20 2b 20 6b 5f 67 20 2a 20 73 75 6d 28 58 58 75 2e 5e 32 29 29 29 20 2e 2a 20 58 58 75 3b | (1.+.k_g.*.sum(XXu.^2)))..*.XXu; |
| 2b820 | 0a 09 20 58 58 28 31 2c 3a 29 20 3d 20 66 5f 67 2a 58 58 28 31 2c 3a 29 2b 63 5f 67 28 31 29 3b | ...XX(1,:).=.f_g*XX(1,:)+c_g(1); |
| 2b840 | 0a 09 20 58 58 28 32 2c 3a 29 20 3d 20 66 5f 67 2a 58 58 28 32 2c 3a 29 2b 63 5f 67 28 32 29 3b | ...XX(2,:).=.f_g*XX(2,:)+c_g(2); |
| 2b860 | 0a 09 20 0a 09 20 66 69 67 75 72 65 28 32 29 3b 0a 09 20 69 6d 61 67 65 28 49 29 3b 0a 09 20 63 | ......figure(2);...image(I);...c |
| 2b880 | 6f 6c 6f 72 6d 61 70 28 6d 61 70 29 3b 0a 09 20 7a 6f 6f 6d 20 6f 6e 3b 0a 09 20 68 6f 6c 64 20 | olormap(map);...zoom.on;...hold. |
| 2b8a0 | 6f 6e 3b 0a 09 20 25 70 6c 6f 74 28 66 5f 67 2a 58 58 75 28 31 2c 3a 29 2b 63 5f 67 28 31 29 2c | on;...%plot(f_g*XXu(1,:)+c_g(1), |
| 2b8c0 | 66 5f 67 2a 58 58 75 28 32 2c 3a 29 2b 63 5f 67 28 32 29 2c 27 72 6f 27 29 3b 0a 09 20 70 6c 6f | f_g*XXu(2,:)+c_g(2),'ro');...plo |
| 2b8e0 | 74 28 58 58 28 31 2c 3a 29 2c 58 58 28 32 2c 3a 29 2c 27 72 2b 27 29 3b 0a 09 20 74 69 74 6c 65 | t(XX(1,:),XX(2,:),'r+');...title |
| 2b900 | 28 27 54 68 65 20 72 65 64 20 63 72 6f 73 73 65 73 20 73 68 6f 75 6c 64 20 62 65 20 6f 6e 20 74 | ('The.red.crosses.should.be.on.t |
| 2b920 | 68 65 20 67 72 69 64 20 63 6f 72 6e 65 72 73 2e 2e 2e 27 29 3b 0a 09 20 68 6f 6c 64 20 6f 66 66 | he.grid.corners...');...hold.off |
| 2b940 | 3b 0a 09 20 0a 09 20 73 61 74 69 73 5f 64 69 73 74 6f 72 74 20 3d 20 69 6e 70 75 74 28 27 53 61 | ;......satis_distort.=.input('Sa |
| 2b960 | 74 69 73 66 69 65 64 20 77 69 74 68 20 64 69 73 74 6f 72 74 69 6f 6e 3f 20 28 5b 5d 3d 6e 6f 2c | tisfied.with.distortion?.([]=no, |
| 2b980 | 20 6f 74 68 65 72 3d 79 65 73 29 20 27 29 3b 0a 09 20 0a 09 20 73 61 74 69 73 5f 64 69 73 74 6f | .other=yes).');......satis_disto |
| 2b9a0 | 72 74 20 3d 20 7e 69 73 65 6d 70 74 79 28 73 61 74 69 73 5f 64 69 73 74 6f 72 74 29 3b 0a 09 20 | rt.=.~isempty(satis_distort);... |
| 2b9c0 | 0a 09 20 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 5f 27 20 6e 75 6d 32 73 74 72 28 | ..........end;......._'.num2str( |
| 2b9e0 | 6b 6b 29 5d 3b 0a 65 6e 64 3b 0a 0a 25 66 70 72 69 6e 74 66 28 31 2c 27 54 6f 20 6c 6f 61 64 20 | kk)];.end;..%fprintf(1,'To.load. |
| 2ba00 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 73 65 6c 65 63 74 5f 73 6f 6c 5f 6e 6f 5f 63 65 6e 74 | TOOLBOX_calib/select_sol_no_cent |
| 2ba20 | 65 72 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | er.m............................ |
| 2ba40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2ba60 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 2ba80 | 20 20 20 31 33 30 32 20 20 37 30 32 34 30 33 37 33 36 30 20 20 31 32 37 36 31 00 20 00 00 00 00 | ...1302..7024037360..12761...... |
| 2baa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2bac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2bae0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2bb00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2bb20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2bb40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2bb60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2bb80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2bba0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2bbc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2bbe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2bc00 | 25 25 25 20 53 65 6c 65 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 61 6c 69 62 72 61 74 69 6f 6e | %%%.Selection.of.the.calibration |
| 2bc20 | 20 73 6f 6c 75 74 69 6f 6e 20 77 69 74 68 20 63 65 6e 74 65 72 20 65 73 74 69 6d 61 74 69 6f 6e | .solution.with.center.estimation |
| 2bc40 | 0a 0a 69 66 20 7e 65 78 69 73 74 28 27 73 6f 6c 5f 6e 6f 5f 63 65 6e 74 65 72 27 29 2c 0a 20 20 | ..if.~exist('sol_no_center'),... |
| 2bc60 | 20 66 70 72 69 6e 74 66 28 31 2c 27 4e 65 65 64 20 74 6f 20 63 61 6c 69 62 72 61 74 65 20 62 65 | .fprintf(1,'Need.to.calibrate.be |
| 2bc80 | 66 6f 72 65 20 73 65 6c 65 63 74 69 6e 67 20 73 6f 6c 75 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 | fore.selecting.solution.without. |
| 2bca0 | 63 65 6e 74 65 72 2e 20 4d 61 79 62 65 20 6e 65 65 64 20 74 6f 20 6c 6f 61 64 20 43 61 6c 69 62 | center..Maybe.need.to.load.Calib |
| 2bcc0 | 5f 52 65 73 75 6c 74 73 2e 6d 61 74 20 66 69 6c 65 2e 5c 6e 27 29 3b 0a 20 20 20 72 65 74 75 72 | _Results.mat.file.\n');....retur |
| 2bce0 | 6e 3b 0a 65 6e 64 3b 0a 0a 73 6f 6c 75 74 69 6f 6e 20 3d 20 73 6f 6c 5f 6e 6f 5f 63 65 6e 74 65 | n;.end;..solution.=.sol_no_cente |
| 2bd00 | 72 3b 0a 0a 25 25 25 20 45 78 74 72 61 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 66 69 6e 61 6c 20 | r;..%%%.Extraction.of.the.final. |
| 2bd20 | 69 6e 74 72 69 6e 73 69 63 20 61 6e 64 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 61 74 65 | intrinsic.and.extrinsic.paramate |
| 2bd40 | 72 73 3a 0a 0a 65 78 74 72 61 63 74 5f 70 61 72 61 6d 65 74 65 72 73 3b 0a 63 6f 6d 70 5f 65 72 | rs:..extract_parameters;.comp_er |
| 2bd60 | 72 6f 72 5f 63 61 6c 69 62 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 5c 6e 43 61 6c 69 62 | ror_calib;..fprintf(1,'\n\nCalib |
| 2bd80 | 72 61 74 69 6f 6e 20 72 65 73 75 6c 74 73 20 77 69 74 68 6f 75 74 20 70 72 69 6e 63 69 70 61 6c | ration.results.without.principal |
| 2bda0 | 20 70 6f 69 6e 74 20 65 73 74 69 6d 61 74 69 6f 6e 3a 5c 6e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 | .point.estimation:\n\n');.fprint |
| 2bdc0 | 66 28 31 2c 27 46 6f 63 61 6c 20 4c 65 6e 67 74 68 3a 20 20 20 20 20 66 63 20 3d 20 5b 20 25 33 | f(1,'Focal.Length:.....fc.=.[.%3 |
| 2bde0 | 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 66 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 | .5f...%3.5f]\n',fc);.fprintf(1,' |
| 2be00 | 50 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 3a 20 20 63 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 | Principal.point:..cc.=.[.%3.5f.. |
| 2be20 | 20 25 33 2e 35 66 5d 5c 6e 27 2c 63 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 44 69 73 74 6f | .%3.5f]\n',cc);.fprintf(1,'Disto |
| 2be40 | 72 74 69 6f 6e 3a 20 20 20 20 20 20 20 6b 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 | rtion:.......kc.=.[.%3.5f...%3.5 |
| 2be60 | 66 20 20 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 6b 63 29 3b 20 20 20 0a 66 70 | f...%3.5f...%3.5f]\n',kc);....fp |
| 2be80 | 72 69 6e 74 66 28 31 2c 27 50 69 78 65 6c 20 65 72 72 6f 72 3a 20 20 20 20 20 20 65 72 72 20 3d | rintf(1,'Pixel.error:......err.= |
| 2bea0 | 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 5c 6e 27 2c 65 72 72 5f 73 74 64 29 3b | .[.%3.5f...%3.5f]\n\n',err_std); |
| 2bec0 | 20 0a 07 b4 00 02 36 b8 00 1c 00 0e 72 69 67 69 64 5f 6d 6f 74 69 6f 6e 2e 6d 00 6d 00 00 07 d8 | ......6.....rigid_motion.m.m.... |
| 2bee0 | 00 02 36 b9 00 28 00 18 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 69 6e 69 74 2e 6d | ..6..(..compute_extrinsic_init.m |
| 2bf00 | 00 00 07 d8 00 00 08 00 00 02 36 ba 00 28 00 1a 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 | ..........6..(..compute_extrinsi |
| 2bf20 | 63 5f 72 65 66 69 6e 65 2e 6d 00 00 00 00 0a 00 00 02 36 bb 00 24 00 15 67 6f 5f 63 61 6c 69 62 | c_refine.m........6..$..go_calib |
| 2bf40 | 5f 6f 70 74 69 6d 5f 69 74 65 72 2e 6d 00 00 1a 74 6f 72 74 20 3d 20 69 6e 70 75 74 28 27 53 61 | _optim_iter.m...tort.=.input('Sa |
| 2bf60 | 74 69 73 66 69 65 64 20 77 69 74 68 20 64 69 73 74 6f 72 74 69 6f 6e 3f 20 28 5b 5d 3d 6e 6f 2c | tisfied.with.distortion?.([]=no, |
| 2bf80 | 20 6f 74 68 65 72 3d 79 65 73 29 20 27 29 3b 0a 09 20 0a 09 20 73 61 74 69 73 5f 64 69 73 74 6f | .other=yes).');......satis_disto |
| 2bfa0 | 72 74 20 3d 20 7e 69 73 65 6d 70 74 79 28 73 61 74 69 73 5f 64 69 73 74 6f 72 74 29 3b 0a 09 20 | rt.=.~isempty(satis_distort);... |
| 2bfc0 | 0a 09 20 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 5f 27 20 6e 75 6d 32 73 74 72 28 | ..........end;......._'.num2str( |
| 2bfe0 | 6b 6b 29 5d 3b 0a 65 6e 64 3b 0a 0a 25 66 70 72 69 6e 74 66 28 31 2c 27 54 6f 20 6c 6f 61 64 20 | kk)];.end;..%fprintf(1,'To.load. |
| 2c000 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 73 65 6c 65 63 74 5f 73 6f 6c 5f 6e 6f 5f 63 65 6e 74 | TOOLBOX_calib/select_sol_no_cent |
| 2c020 | 65 72 33 44 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | er3D.m.......................... |
| 2c040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2c060 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 2c080 | 20 20 20 31 30 33 36 20 20 37 30 32 34 30 33 37 33 36 31 20 20 31 33 31 35 35 00 20 00 00 00 00 | ...1036..7024037361..13155...... |
| 2c0a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2c0c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2c0e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2c100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2c120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2c140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2c160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2c180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2c1a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2c1c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2c1e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2c200 | 25 25 25 20 53 65 6c 65 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 61 6c 69 62 72 61 74 69 6f 6e | %%%.Selection.of.the.calibration |
| 2c220 | 20 73 6f 6c 75 74 69 6f 6e 20 77 69 74 68 20 63 65 6e 74 65 72 20 65 73 74 69 6d 61 74 69 6f 6e | .solution.with.center.estimation |
| 2c240 | 0a 0a 73 6f 6c 75 74 69 6f 6e 20 3d 20 73 6f 6c 5f 6e 6f 5f 63 65 6e 74 65 72 3b 0a 0a 25 25 25 | ..solution.=.sol_no_center;..%%% |
| 2c260 | 20 45 78 74 72 61 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 66 69 6e 61 6c 20 69 6e 74 72 69 6e 73 | .Extraction.of.the.final.intrins |
| 2c280 | 69 63 20 61 6e 64 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 61 74 65 72 73 3a 0a 0a 65 78 | ic.and.extrinsic.paramaters:..ex |
| 2c2a0 | 74 72 61 63 74 5f 70 61 72 61 6d 65 74 65 72 73 33 44 3b 0a 0a 0a 66 70 72 69 6e 74 66 28 31 2c | tract_parameters3D;...fprintf(1, |
| 2c2c0 | 27 5c 6e 5c 6e 43 61 6c 69 62 72 61 74 69 6f 6e 20 72 65 73 75 6c 74 73 20 77 69 74 68 6f 75 74 | '\n\nCalibration.results.without |
| 2c2e0 | 20 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 65 73 74 69 6d 61 74 69 6f 6e 3a 5c 6e 5c 6e | .principal.point.estimation:\n\n |
| 2c300 | 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 46 6f 63 61 6c 20 4c 65 6e 67 74 68 3a 20 20 20 20 | ');.fprintf(1,'Focal.Length:.... |
| 2c320 | 20 66 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 66 63 29 3b 0a 66 | .fc.=.[.%3.5f...%3.5f]\n',fc);.f |
| 2c340 | 70 72 69 6e 74 66 28 31 2c 27 50 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 3a 20 20 63 63 20 3d | printf(1,'Principal.point:..cc.= |
| 2c360 | 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 63 63 29 3b 0a 66 70 72 69 6e 74 | .[.%3.5f...%3.5f]\n',cc);.fprint |
| 2c380 | 66 28 31 2c 27 44 69 73 74 6f 72 74 69 6f 6e 3a 20 20 20 20 20 20 20 6b 63 20 3d 20 5b 20 25 33 | f(1,'Distortion:.......kc.=.[.%3 |
| 2c3a0 | 2e 35 66 20 20 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c | .5f...%3.5f...%3.5f...%3.5f]\n', |
| 2c3c0 | 6b 63 29 3b 20 20 20 0a 0a 0a 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 47 | kc);......%%%%%%%%%%%%%%%%%%%%.G |
| 2c3e0 | 52 41 50 48 49 43 41 4c 20 4f 55 54 50 55 54 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 | RAPHICAL.OUTPUT.%%%%%%%%%%%%%%%% |
| 2c400 | 25 25 25 25 25 25 25 25 0a 0a 67 72 61 70 68 6f 75 74 5f 63 61 6c 69 62 33 44 3b 0a 0a 0a 79 73 | %%%%%%%%..graphout_calib3D;...ys |
| 2c420 | 69 73 2e 6d 00 00 61 6d 00 00 07 54 00 02 36 b4 00 20 00 13 63 68 65 63 6b 5f 63 6f 6e 76 65 72 | is.m..am...T..6.....check_conver |
| 2c440 | 67 65 6e 63 65 2e 6d 00 00 00 07 70 00 02 36 b5 00 20 00 11 63 68 65 63 6b 5f 70 6c 61 6e 61 72 | gence.m....p..6.....check_planar |
| 2c460 | 69 74 79 2e 6d 00 6e 63 00 00 07 88 00 02 36 b6 00 1c 00 0e 63 6f 6e 76 65 72 74 5f 6f 75 6c 75 | ity.m.nc......6.....convert_oulu |
| 2c480 | 2e 6d 00 72 00 00 07 9c 00 02 36 b7 00 18 00 0b 6e 6f 72 6d 61 6c 69 7a 65 2e 6d 00 00 00 07 b4 | .m.r......6.....normalize.m..... |
| 2c4a0 | 00 02 36 b8 00 1c 00 0e 72 69 67 69 64 5f 6d 6f 74 69 6f 6e 2e 6d 00 6d 00 00 07 d8 00 02 36 b9 | ..6.....rigid_motion.m.m......6. |
| 2c4c0 | 00 28 00 18 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 69 6e 69 74 2e 6d 00 00 07 d8 | .(..compute_extrinsic_init.m.... |
| 2c4e0 | 00 00 08 00 00 02 36 ba 00 28 00 1a 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 72 65 | ......6..(..compute_extrinsic_re |
| 2c500 | 66 69 6e 65 2e 6d 00 00 00 00 0a 00 00 02 36 bb 00 24 00 15 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 | fine.m........6..$..go_calib_opt |
| 2c520 | 69 6d 5f 69 74 65 72 2e 6d 00 00 00 00 00 0a 00 00 02 36 bb 00 24 00 15 67 6f 5f 63 61 6c 69 62 | im_iter.m.........6..$..go_calib |
| 2c540 | 5f 6f 70 74 69 6d 5f 69 74 65 72 2e 6d 00 00 1a 74 6f 72 74 20 3d 20 69 6e 70 75 74 28 27 53 61 | _optim_iter.m...tort.=.input('Sa |
| 2c560 | 74 69 73 66 69 65 64 20 77 69 74 68 20 64 69 73 74 6f 72 74 69 6f 6e 3f 20 28 5b 5d 3d 6e 6f 2c | tisfied.with.distortion?.([]=no, |
| 2c580 | 20 6f 74 68 65 72 3d 79 65 73 29 20 27 29 3b 0a 09 20 0a 09 20 73 61 74 69 73 5f 64 69 73 74 6f | .other=yes).');......satis_disto |
| 2c5a0 | 72 74 20 3d 20 7e 69 73 65 6d 70 74 79 28 73 61 74 69 73 5f 64 69 73 74 6f 72 74 29 3b 0a 09 20 | rt.=.~isempty(satis_distort);... |
| 2c5c0 | 0a 09 20 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 5f 27 20 6e 75 6d 32 73 74 72 28 | ..........end;......._'.num2str( |
| 2c5e0 | 6b 6b 29 5d 3b 0a 65 6e 64 3b 0a 0a 25 66 70 72 69 6e 74 66 28 31 2c 27 54 6f 20 6c 6f 61 64 20 | kk)];.end;..%fprintf(1,'To.load. |
| 2c600 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 73 65 6c 65 63 74 5f 73 6f 6c 5f 77 69 74 68 5f 63 65 | TOOLBOX_calib/select_sol_with_ce |
| 2c620 | 6e 74 65 72 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | nter.m.......................... |
| 2c640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2c660 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 2c680 | 20 20 20 31 33 30 30 20 20 37 30 32 34 30 33 37 33 36 32 20 20 31 33 33 32 30 00 20 00 00 00 00 | ...1300..7024037362..13320...... |
| 2c6a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2c6c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2c6e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2c700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2c720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2c740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2c760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2c780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2c7a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2c7c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2c7e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2c800 | 25 25 25 20 53 65 6c 65 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 61 6c 69 62 72 61 74 69 6f 6e | %%%.Selection.of.the.calibration |
| 2c820 | 20 73 6f 6c 75 74 69 6f 6e 20 77 69 74 68 20 63 65 6e 74 65 72 20 65 73 74 69 6d 61 74 69 6f 6e | .solution.with.center.estimation |
| 2c840 | 0a 0a 69 66 20 7e 65 78 69 73 74 28 27 73 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 65 72 27 29 2c 0a | ..if.~exist('sol_with_center'),. |
| 2c860 | 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 4e 65 65 64 20 74 6f 20 63 61 6c 69 62 72 61 74 65 20 | ...fprintf(1,'Need.to.calibrate. |
| 2c880 | 62 65 66 6f 72 65 20 73 65 6c 65 63 74 69 6e 67 20 73 6f 6c 75 74 69 6f 6e 20 77 69 74 68 20 63 | before.selecting.solution.with.c |
| 2c8a0 | 65 6e 74 65 72 2e 20 4d 61 79 62 65 20 6e 65 65 64 20 74 6f 20 6c 6f 61 64 20 43 61 6c 69 62 5f | enter..Maybe.need.to.load.Calib_ |
| 2c8c0 | 52 65 73 75 6c 74 73 2e 6d 61 74 20 66 69 6c 65 2e 5c 6e 27 29 3b 0a 20 20 20 72 65 74 75 72 6e | Results.mat.file.\n');....return |
| 2c8e0 | 3b 0a 65 6e 64 3b 0a 0a 73 6f 6c 75 74 69 6f 6e 20 3d 20 73 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 | ;.end;..solution.=.sol_with_cent |
| 2c900 | 65 72 3b 0a 0a 25 25 25 20 45 78 74 72 61 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 66 69 6e 61 6c | er;..%%%.Extraction.of.the.final |
| 2c920 | 20 69 6e 74 72 69 6e 73 69 63 20 61 6e 64 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 61 74 | .intrinsic.and.extrinsic.paramat |
| 2c940 | 65 72 73 3a 0a 0a 65 78 74 72 61 63 74 5f 70 61 72 61 6d 65 74 65 72 73 3b 0a 63 6f 6d 70 5f 65 | ers:..extract_parameters;.comp_e |
| 2c960 | 72 72 6f 72 5f 63 61 6c 69 62 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 5c 6e 43 61 6c 69 | rror_calib;..fprintf(1,'\n\nCali |
| 2c980 | 62 72 61 74 69 6f 6e 20 72 65 73 75 6c 74 73 20 77 69 74 68 20 70 72 69 6e 63 69 70 61 6c 20 70 | bration.results.with.principal.p |
| 2c9a0 | 6f 69 6e 74 20 65 73 74 69 6d 61 74 69 6f 6e 3a 5c 6e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 | oint.estimation:\n\n');.fprintf( |
| 2c9c0 | 31 2c 27 46 6f 63 61 6c 20 4c 65 6e 67 74 68 3a 20 20 20 20 20 66 63 20 3d 20 5b 20 25 33 2e 35 | 1,'Focal.Length:.....fc.=.[.%3.5 |
| 2c9e0 | 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 66 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 50 72 | f...%3.5f]\n',fc);.fprintf(1,'Pr |
| 2ca00 | 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 3a 20 20 63 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 | incipal.point:..cc.=.[.%3.5f...% |
| 2ca20 | 33 2e 35 66 5d 5c 6e 27 2c 63 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 44 69 73 74 6f 72 74 | 3.5f]\n',cc);.fprintf(1,'Distort |
| 2ca40 | 69 6f 6e 3a 20 20 20 20 20 20 20 6b 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 20 | ion:.......kc.=.[.%3.5f...%3.5f. |
| 2ca60 | 20 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 6b 63 29 3b 20 20 20 0a 66 70 72 69 | ..%3.5f...%3.5f]\n',kc);....fpri |
| 2ca80 | 6e 74 66 28 31 2c 27 50 69 78 65 6c 20 65 72 72 6f 72 3a 20 20 20 20 20 20 65 72 72 20 3d 20 5b | ntf(1,'Pixel.error:......err.=.[ |
| 2caa0 | 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 5c 6e 27 2c 65 72 72 5f 73 74 64 29 3b 20 0a | .%3.5f...%3.5f]\n\n',err_std);.. |
| 2cac0 | 00 28 00 1a 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 72 65 66 69 6e 65 2e 6d 00 d8 | .(..compute_extrinsic_refine.m.. |
| 2cae0 | 00 00 0a 00 00 02 36 bb 00 24 00 15 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 74 65 72 2e | ......6..$..go_calib_optim_iter. |
| 2cb00 | 6d 00 6e 65 2e 6d 00 00 00 00 0a 00 00 02 36 bb 00 24 00 15 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 | m.ne.m........6..$..go_calib_opt |
| 2cb20 | 69 6d 5f 69 74 65 72 2e 6d 00 00 00 00 00 0a 00 00 02 36 bb 00 24 00 15 67 6f 5f 63 61 6c 69 62 | im_iter.m.........6..$..go_calib |
| 2cb40 | 5f 6f 70 74 69 6d 5f 69 74 65 72 2e 6d 00 00 1a 74 6f 72 74 20 3d 20 69 6e 70 75 74 28 27 53 61 | _optim_iter.m...tort.=.input('Sa |
| 2cb60 | 74 69 73 66 69 65 64 20 77 69 74 68 20 64 69 73 74 6f 72 74 69 6f 6e 3f 20 28 5b 5d 3d 6e 6f 2c | tisfied.with.distortion?.([]=no, |
| 2cb80 | 20 6f 74 68 65 72 3d 79 65 73 29 20 27 29 3b 0a 09 20 0a 09 20 73 61 74 69 73 5f 64 69 73 74 6f | .other=yes).');......satis_disto |
| 2cba0 | 72 74 20 3d 20 7e 69 73 65 6d 70 74 79 28 73 61 74 69 73 5f 64 69 73 74 6f 72 74 29 3b 0a 09 20 | rt.=.~isempty(satis_distort);... |
| 2cbc0 | 0a 09 20 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 5f 27 20 6e 75 6d 32 73 74 72 28 | ..........end;......._'.num2str( |
| 2cbe0 | 6b 6b 29 5d 3b 0a 65 6e 64 3b 0a 0a 25 66 70 72 69 6e 74 66 28 31 2c 27 54 6f 20 6c 6f 61 64 20 | kk)];.end;..%fprintf(1,'To.load. |
| 2cc00 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 73 65 6c 65 63 74 5f 73 6f 6c 5f 77 69 74 68 5f 63 65 | TOOLBOX_calib/select_sol_with_ce |
| 2cc20 | 6e 74 65 72 33 44 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | nter3D.m........................ |
| 2cc40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2cc60 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 2cc80 | 20 20 20 31 30 33 35 20 20 37 30 32 34 30 33 37 33 36 33 20 20 31 33 35 31 35 00 20 00 00 00 00 | ...1035..7024037363..13515...... |
| 2cca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2ccc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2cce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2cd00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2cd20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2cd40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2cd60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2cd80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2cda0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2cdc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2cde0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2ce00 | 25 25 25 20 53 65 6c 65 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 61 6c 69 62 72 61 74 69 6f 6e | %%%.Selection.of.the.calibration |
| 2ce20 | 20 73 6f 6c 75 74 69 6f 6e 20 77 69 74 68 20 63 65 6e 74 65 72 20 65 73 74 69 6d 61 74 69 6f 6e | .solution.with.center.estimation |
| 2ce40 | 0a 0a 73 6f 6c 75 74 69 6f 6e 20 3d 20 73 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 65 72 3b 0a 0a 25 | ..solution.=.sol_with_center;..% |
| 2ce60 | 25 25 20 45 78 74 72 61 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 66 69 6e 61 6c 20 69 6e 74 72 69 | %%.Extraction.of.the.final.intri |
| 2ce80 | 6e 73 69 63 20 61 6e 64 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 61 74 65 72 73 3a 0a 0a | nsic.and.extrinsic.paramaters:.. |
| 2cea0 | 65 78 74 72 61 63 74 5f 70 61 72 61 6d 65 74 65 72 73 33 44 3b 0a 0a 0a 66 70 72 69 6e 74 66 28 | extract_parameters3D;...fprintf( |
| 2cec0 | 31 2c 27 5c 6e 5c 6e 43 61 6c 69 62 72 61 74 69 6f 6e 20 72 65 73 75 6c 74 73 20 77 69 74 68 20 | 1,'\n\nCalibration.results.with. |
| 2cee0 | 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 65 73 74 69 6d 61 74 69 6f 6e 3a 5c 6e 5c 6e 27 | principal.point.estimation:\n\n' |
| 2cf00 | 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 46 6f 63 61 6c 20 4c 65 6e 67 74 68 3a 20 20 20 20 20 | );.fprintf(1,'Focal.Length:..... |
| 2cf20 | 66 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 66 63 29 3b 0a 66 70 | fc.=.[.%3.5f...%3.5f]\n',fc);.fp |
| 2cf40 | 72 69 6e 74 66 28 31 2c 27 50 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 3a 20 20 63 63 20 3d 20 | rintf(1,'Principal.point:..cc.=. |
| 2cf60 | 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 63 63 29 3b 0a 66 70 72 69 6e 74 66 | [.%3.5f...%3.5f]\n',cc);.fprintf |
| 2cf80 | 28 31 2c 27 44 69 73 74 6f 72 74 69 6f 6e 3a 20 20 20 20 20 20 20 6b 63 20 3d 20 5b 20 25 33 2e | (1,'Distortion:.......kc.=.[.%3. |
| 2cfa0 | 35 66 20 20 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 6b | 5f...%3.5f...%3.5f...%3.5f]\n',k |
| 2cfc0 | 63 29 3b 20 20 20 0a 0a 0a 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 47 52 | c);......%%%%%%%%%%%%%%%%%%%%.GR |
| 2cfe0 | 41 50 48 49 43 41 4c 20 4f 55 54 50 55 54 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 | APHICAL.OUTPUT.%%%%%%%%%%%%%%%%% |
| 2d000 | 25 25 25 25 25 25 25 0a 0a 67 72 61 70 68 6f 75 74 5f 63 61 6c 69 62 33 44 3b 0a 0a 0a 02 36 b6 | %%%%%%%..graphout_calib3D;....6. |
| 2d020 | 00 1c 00 0e 63 6f 6e 76 65 72 74 5f 6f 75 6c 75 2e 6d 00 6c 00 00 07 9c 00 02 36 b7 00 18 00 0b | ....convert_oulu.m.l......6..... |
| 2d040 | 6e 6f 72 6d 61 6c 69 7a 65 2e 6d 00 00 00 07 b4 00 02 36 b8 00 1c 00 0e 72 69 67 69 64 5f 6d 6f | normalize.m.......6.....rigid_mo |
| 2d060 | 74 69 6f 6e 2e 6d 00 0b 00 00 07 d8 00 02 36 b9 00 28 00 18 63 6f 6d 70 75 74 65 5f 65 78 74 72 | tion.m........6..(..compute_extr |
| 2d080 | 69 6e 73 69 63 5f 69 6e 69 74 2e 6d 00 6d 00 0b 00 00 08 00 00 02 36 ba 00 28 00 1a 63 6f 6d 70 | insic_init.m.m........6..(..comp |
| 2d0a0 | 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 72 65 66 69 6e 65 2e 6d 00 6d 00 00 0a 00 00 02 36 bb | ute_extrinsic_refine.m.m......6. |
| 2d0c0 | 00 24 00 15 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 74 65 72 2e 6d 00 6e 65 2e 6d 00 d8 | .$..go_calib_optim_iter.m.ne.m.. |
| 2d0e0 | 00 00 0a 00 00 02 36 bb 00 24 00 15 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 74 65 72 2e | ......6..$..go_calib_optim_iter. |
| 2d100 | 6d 00 6e 65 2e 6d 00 00 00 00 0a 00 00 02 36 bb 00 24 00 15 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 | m.ne.m........6..$..go_calib_opt |
| 2d120 | 69 6d 5f 69 74 65 72 2e 6d 00 00 00 00 00 0a 00 00 02 36 bb 00 24 00 15 67 6f 5f 63 61 6c 69 62 | im_iter.m.........6..$..go_calib |
| 2d140 | 5f 6f 70 74 69 6d 5f 69 74 65 72 2e 6d 00 00 1a 74 6f 72 74 20 3d 20 69 6e 70 75 74 28 27 53 61 | _optim_iter.m...tort.=.input('Sa |
| 2d160 | 74 69 73 66 69 65 64 20 77 69 74 68 20 64 69 73 74 6f 72 74 69 6f 6e 3f 20 28 5b 5d 3d 6e 6f 2c | tisfied.with.distortion?.([]=no, |
| 2d180 | 20 6f 74 68 65 72 3d 79 65 73 29 20 27 29 3b 0a 09 20 0a 09 20 73 61 74 69 73 5f 64 69 73 74 6f | .other=yes).');......satis_disto |
| 2d1a0 | 72 74 20 3d 20 7e 69 73 65 6d 70 74 79 28 73 61 74 69 73 5f 64 69 73 74 6f 72 74 29 3b 0a 09 20 | rt.=.~isempty(satis_distort);... |
| 2d1c0 | 0a 09 20 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 5f 27 20 6e 75 6d 32 73 74 72 28 | ..........end;......._'.num2str( |
| 2d1e0 | 6b 6b 29 5d 3b 0a 65 6e 64 3b 0a 0a 25 66 70 72 69 6e 74 66 28 31 2c 27 54 6f 20 6c 6f 61 64 20 | kk)];.end;..%fprintf(1,'To.load. |
| 2d200 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 73 74 61 72 74 75 70 2e 6d 00 00 00 00 00 00 00 00 00 | TOOLBOX_calib/startup.m......... |
| 2d220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d260 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 2d280 | 20 20 20 20 31 33 35 20 20 37 30 32 34 30 33 37 33 36 34 20 20 31 30 32 36 32 00 20 00 00 00 00 | ....135..7024037364..10262...... |
| 2d2a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d2c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d2e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d3a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d3c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d3e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d400 | 25 20 4d 61 69 6e 20 63 61 6d 65 72 61 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 74 6f 6f 6c 62 6f | %.Main.camera.calibration.toolbo |
| 2d420 | 78 3a 0a 0a 63 61 6c 69 62 5f 67 75 69 3b 0a 0a 25 63 61 6c 69 62 5f 67 75 69 3b 0a 0a 70 61 74 | x:..calib_gui;..%calib_gui;..pat |
| 2d440 | 68 28 70 77 64 2c 70 61 74 68 29 3b 0a 0a 66 6f 72 6d 61 74 20 63 6f 6d 70 61 63 74 0a 67 65 2e | h(pwd,path);..format.compact.ge. |
| 2d460 | 6d 00 00 06 00 00 06 34 00 02 36 a8 00 1c 00 0d 55 6e 57 61 72 70 50 6c 61 6e 65 2e 6d 00 6f 72 | m......4..6.....UnWarpPlane.m.or |
| 2d480 | 00 00 06 48 00 02 36 a9 00 18 00 0a 77 72 69 74 65 72 61 73 2e 6d 00 0d 00 00 06 64 00 02 36 aa | ...H..6.....writeras.m.....d..6. |
| 2d4a0 | 00 20 00 10 65 72 72 6f 72 5f 61 6e 61 6c 79 73 69 73 2e 6d 00 72 69 74 00 00 06 78 00 02 36 ab | ....error_analysis.m.rit...x..6. |
| 2d4c0 | 00 18 00 09 6c 6f 61 64 69 6e 72 2e 6d 00 72 6f 00 00 06 8c 00 02 36 ac 00 18 00 09 6c 6f 61 64 | ....loadinr.m.ro......6.....load |
| 2d4e0 | 70 67 6d 2e 6d 00 36 ab 00 00 06 a0 00 02 36 ad 00 18 00 09 6c 6f 61 64 70 70 6d 2e 6d 00 36 ac | pgm.m.6.......6.....loadppm.m.6. |
| 2d500 | 00 00 06 b4 00 02 36 ae 00 18 00 09 73 61 76 65 69 6e 72 2e 6d 00 36 ad 00 00 06 c8 00 02 36 af | ......6.....saveinr.m.6.......6. |
| 2d520 | 00 18 00 09 73 61 76 65 70 67 6d 2e 6d 00 36 ae 00 00 06 dc 00 02 36 b0 00 18 00 09 73 61 76 65 | ....savepgm.m.6.......6.....save |
| 2d540 | 70 70 6d 2e 6d 00 36 af 00 00 06 fc 00 02 36 b1 00 24 00 16 69 6e 69 74 5f 69 6e 74 72 69 6e 73 | ppm.m.6.......6..$..init_intrins |
| 2d560 | 69 63 5f 70 61 72 61 6d 2e 6d 00 2e 00 00 07 18 00 02 36 b2 00 20 00 11 6d 65 61 6e 5f 73 74 64 | ic_param.m........6.....mean_std |
| 2d580 | 5f 72 6f 62 75 73 74 2e 6d 00 5f 70 00 00 07 38 00 02 36 b3 00 24 00 14 72 75 6e 5f 65 72 72 6f | _robust.m._p...8..6..$..run_erro |
| 2d5a0 | 72 5f 61 6e 61 6c 79 73 69 73 2e 6d 00 73 74 2e 00 00 07 54 00 02 36 b4 00 20 00 13 63 68 65 63 | r_analysis.m.st....T..6.....chec |
| 2d5c0 | 6b 5f 63 6f 6e 76 65 72 67 65 6e 63 65 2e 6d 00 00 00 07 70 00 02 36 b5 00 20 00 11 63 68 65 63 | k_convergence.m....p..6.....chec |
| 2d5e0 | 6b 5f 70 6c 61 6e 61 72 69 74 79 2e 6d 00 65 72 00 00 07 88 00 02 36 b6 00 1c 00 0e 63 6f 6e 76 | k_planarity.m.er......6.....conv |
| 2d600 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 74 65 73 74 5f 33 64 2e 6d 00 00 00 00 00 00 00 00 00 | TOOLBOX_calib/test_3d.m......... |
| 2d620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d660 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 2d680 | 20 20 20 34 33 36 31 20 20 37 30 32 34 30 33 37 33 36 35 20 20 31 30 31 35 33 00 20 00 00 00 00 | ...4361..7024037365..10153...... |
| 2d6a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d6c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d6e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d7a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d7c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d7e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d800 | 52 63 5f 31 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 31 29 3b 0a 52 63 5f 32 20 3d 20 | Rc_1.=.rodrigues(omc_1);.Rc_2.=. |
| 2d820 | 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 32 29 3b 0a 52 63 5f 33 20 3d 20 72 6f 64 72 69 67 75 | rodrigues(omc_2);.Rc_3.=.rodrigu |
| 2d840 | 65 73 28 6f 6d 63 5f 33 29 3b 0a 52 63 5f 34 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f | es(omc_3);.Rc_4.=.rodrigues(omc_ |
| 2d860 | 34 29 3b 0a 52 63 5f 35 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 35 29 3b 0a 52 63 5f | 4);.Rc_5.=.rodrigues(omc_5);.Rc_ |
| 2d880 | 36 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 36 29 3b 0a 52 63 5f 37 20 3d 20 72 6f 64 | 6.=.rodrigues(omc_6);.Rc_7.=.rod |
| 2d8a0 | 72 69 67 75 65 73 28 6f 6d 63 5f 37 29 3b 0a 52 63 5f 38 20 3d 20 72 6f 64 72 69 67 75 65 73 28 | rigues(omc_7);.Rc_8.=.rodrigues( |
| 2d8c0 | 6f 6d 63 5f 38 29 3b 0a 52 63 5f 39 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 39 29 3b | omc_8);.Rc_9.=.rodrigues(omc_9); |
| 2d8e0 | 0a 0a 52 63 5f 31 30 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 31 30 29 3b 0a 52 63 5f | ..Rc_10.=.rodrigues(omc_10);.Rc_ |
| 2d900 | 31 31 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 31 31 29 3b 0a 52 63 5f 31 32 20 3d 20 | 11.=.rodrigues(omc_11);.Rc_12.=. |
| 2d920 | 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 31 32 29 3b 0a 52 63 5f 31 33 20 3d 20 72 6f 64 72 69 | rodrigues(omc_12);.Rc_13.=.rodri |
| 2d940 | 67 75 65 73 28 6f 6d 63 5f 31 33 29 3b 0a 52 63 5f 31 34 20 3d 20 72 6f 64 72 69 67 75 65 73 28 | gues(omc_13);.Rc_14.=.rodrigues( |
| 2d960 | 6f 6d 63 5f 31 34 29 3b 0a 52 63 5f 31 35 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 31 | omc_14);.Rc_15.=.rodrigues(omc_1 |
| 2d980 | 35 29 3b 0a 52 63 5f 31 36 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 31 36 29 3b 0a 52 | 5);.Rc_16.=.rodrigues(omc_16);.R |
| 2d9a0 | 63 5f 31 37 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 31 37 29 3b 0a 52 63 5f 31 38 20 | c_17.=.rodrigues(omc_17);.Rc_18. |
| 2d9c0 | 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 31 38 29 3b 0a 0a 0a 0a 52 52 31 20 3d 20 52 63 | =.rodrigues(omc_18);....RR1.=.Rc |
| 2d9e0 | 5f 31 27 2a 52 63 5f 31 30 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 72 6f 64 72 69 67 75 65 73 | _1'*Rc_10;.%.should.be.rodrigues |
| 2da00 | 28 5b 30 3b 70 69 2f 32 3b 30 5d 29 0a 54 54 31 20 3d 20 52 63 5f 31 27 2a 28 54 63 5f 31 30 2d | ([0;pi/2;0]).TT1.=.Rc_1'*(Tc_10- |
| 2da20 | 54 63 5f 31 29 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 5b 64 58 2a 6e 5f 73 71 5f 78 5f 31 3b | Tc_1);.%.should.be.[dX*n_sq_x_1; |
| 2da40 | 30 3b 30 5d 0a 0a 58 72 5f 31 20 3d 20 52 52 31 20 2a 20 58 5f 31 30 20 20 2b 20 54 54 31 2a 6f | 0;0]..Xr_1.=.RR1.*.X_10..+.TT1*o |
| 2da60 | 6e 65 73 28 31 2c 6c 65 6e 67 74 68 28 58 5f 31 30 29 29 3b 0a 0a 66 69 67 75 72 65 28 31 29 3b | nes(1,length(X_10));..figure(1); |
| 2da80 | 0a 70 6c 6f 74 33 28 58 5f 31 28 31 2c 3a 29 2c 58 5f 31 28 32 2c 3a 29 2c 58 5f 31 28 33 2c 3a | .plot3(X_1(1,:),X_1(2,:),X_1(3,: |
| 2daa0 | 29 2c 27 72 2b 27 29 3b 20 68 6f 6c 64 20 6f 6e 3b 0a 70 6c 6f 74 33 28 58 72 5f 31 28 31 2c 3a | ),'r+');.hold.on;.plot3(Xr_1(1,: |
| 2dac0 | 29 2c 58 72 5f 31 28 32 2c 3a 29 2c 58 72 5f 31 28 33 2c 3a 29 2c 27 67 2b 27 29 3b 0a 68 6f 6c | ),Xr_1(2,:),Xr_1(3,:),'g+');.hol |
| 2dae0 | 64 20 6f 66 66 3b 0a 61 78 69 73 28 27 65 71 75 61 6c 27 29 3b 0a 72 6f 74 61 74 65 33 64 20 6f | d.off;.axis('equal');.rotate3d.o |
| 2db00 | 6e 3b 0a 76 69 65 77 28 30 2c 30 29 3b 0a 78 6c 61 62 65 6c 28 27 78 27 29 3b 0a 79 6c 61 62 65 | n;.view(0,0);.xlabel('x');.ylabe |
| 2db20 | 6c 28 27 79 27 29 3b 0a 7a 6c 61 62 65 6c 28 27 7a 27 29 3b 0a 0a 61 61 61 20 3d 20 5b 5d 3b 0a | l('y');.zlabel('z');..aaa.=.[];. |
| 2db40 | 0a 52 52 31 20 3d 20 52 63 5f 31 27 2a 52 63 5f 31 30 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 | .RR1.=.Rc_1'*Rc_10;.%.should.be. |
| 2db60 | 72 6f 64 72 69 67 75 65 73 28 5b 30 3b 70 69 2f 32 3b 30 5d 29 0a 54 54 31 20 3d 20 52 63 5f 31 | rodrigues([0;pi/2;0]).TT1.=.Rc_1 |
| 2db80 | 27 2a 28 54 63 5f 31 30 2d 54 63 5f 31 29 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 5b 64 58 2a | '*(Tc_10-Tc_1);.%.should.be.[dX* |
| 2dba0 | 6e 5f 73 71 5f 78 5f 31 3b 30 3b 30 5d 0a 65 72 72 20 3d 20 72 6f 64 72 69 67 75 65 73 28 52 52 | n_sq_x_1;0;0].err.=.rodrigues(RR |
| 2dbc0 | 31 29 20 2d 20 5b 30 3b 70 69 2f 32 3b 30 5d 0a 61 61 61 20 3d 20 5b 61 61 61 20 32 2a 73 69 6e | 1).-.[0;pi/2;0].aaa.=.[aaa.2*sin |
| 2dbe0 | 28 65 72 72 28 32 29 2f 32 29 2a 2e 33 33 2a 31 30 30 30 5d 3b 0a 0a 52 52 32 20 3d 20 52 63 5f | (err(2)/2)*.33*1000];..RR2.=.Rc_ |
| 2dc00 | 32 27 2a 52 63 5f 31 31 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 72 6f 64 72 69 67 75 65 73 28 | 2'*Rc_11;.%.should.be.rodrigues( |
| 2dc20 | 5b 30 3b 70 69 2f 32 3b 30 5d 29 0a 54 54 32 20 3d 20 52 63 5f 32 27 2a 28 54 63 5f 31 31 2d 54 | [0;pi/2;0]).TT2.=.Rc_2'*(Tc_11-T |
| 2dc40 | 63 5f 32 29 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 5b 64 58 2a 6e 5f 73 71 5f 78 5f 31 3b 30 | c_2);.%.should.be.[dX*n_sq_x_1;0 |
| 2dc60 | 3b 30 5d 0a 65 72 72 20 3d 20 72 6f 64 72 69 67 75 65 73 28 52 52 32 29 20 2d 20 5b 30 3b 70 69 | ;0].err.=.rodrigues(RR2).-.[0;pi |
| 2dc80 | 2f 32 3b 30 5d 0a 61 61 61 20 3d 20 5b 61 61 61 20 32 2a 73 69 6e 28 65 72 72 28 32 29 2f 32 29 | /2;0].aaa.=.[aaa.2*sin(err(2)/2) |
| 2dca0 | 2a 2e 33 33 2a 31 30 30 30 5d 3b 0a 0a 52 52 33 20 3d 20 52 63 5f 33 27 2a 52 63 5f 31 32 3b 20 | *.33*1000];..RR3.=.Rc_3'*Rc_12;. |
| 2dcc0 | 25 20 73 68 6f 75 6c 64 20 62 65 20 72 6f 64 72 69 67 75 65 73 28 5b 30 3b 70 69 2f 32 3b 30 5d | %.should.be.rodrigues([0;pi/2;0] |
| 2dce0 | 29 0a 54 54 33 20 3d 20 52 63 5f 33 27 2a 28 54 63 5f 31 32 2d 54 63 5f 33 29 3b 20 25 20 73 68 | ).TT3.=.Rc_3'*(Tc_12-Tc_3);.%.sh |
| 2dd00 | 6f 75 6c 64 20 62 65 20 5b 64 58 2a 6e 5f 73 71 5f 78 5f 31 3b 30 3b 30 5d 0a 65 72 72 20 3d 20 | ould.be.[dX*n_sq_x_1;0;0].err.=. |
| 2dd20 | 72 6f 64 72 69 67 75 65 73 28 52 52 33 29 20 2d 20 5b 30 3b 70 69 2f 32 3b 30 5d 0a 61 61 61 20 | rodrigues(RR3).-.[0;pi/2;0].aaa. |
| 2dd40 | 3d 20 5b 61 61 61 20 32 2a 73 69 6e 28 65 72 72 28 32 29 2f 32 29 2a 2e 33 33 2a 31 30 30 30 5d | =.[aaa.2*sin(err(2)/2)*.33*1000] |
| 2dd60 | 3b 0a 0a 52 52 34 20 3d 20 52 63 5f 34 27 2a 52 63 5f 31 33 3b 20 25 20 73 68 6f 75 6c 64 20 62 | ;..RR4.=.Rc_4'*Rc_13;.%.should.b |
| 2dd80 | 65 20 72 6f 64 72 69 67 75 65 73 28 5b 30 3b 70 69 2f 32 3b 30 5d 29 0a 54 54 34 20 3d 20 52 63 | e.rodrigues([0;pi/2;0]).TT4.=.Rc |
| 2dda0 | 5f 34 27 2a 28 54 63 5f 31 33 2d 54 63 5f 34 29 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 5b 64 | _4'*(Tc_13-Tc_4);.%.should.be.[d |
| 2ddc0 | 58 2a 6e 5f 73 71 5f 78 5f 31 3b 30 3b 30 5d 0a 65 72 72 20 3d 20 72 6f 64 72 69 67 75 65 73 28 | X*n_sq_x_1;0;0].err.=.rodrigues( |
| 2dde0 | 52 52 34 29 20 2d 20 5b 30 3b 70 69 2f 32 3b 30 5d 0a 61 61 61 20 3d 20 5b 61 61 61 20 32 2a 73 | RR4).-.[0;pi/2;0].aaa.=.[aaa.2*s |
| 2de00 | 69 6e 28 65 72 72 28 32 29 2f 32 29 2a 2e 33 33 2a 31 30 30 30 5d 3b 0a 0a 52 52 35 20 3d 20 52 | in(err(2)/2)*.33*1000];..RR5.=.R |
| 2de20 | 63 5f 35 27 2a 52 63 5f 31 34 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 72 6f 64 72 69 67 75 65 | c_5'*Rc_14;.%.should.be.rodrigue |
| 2de40 | 73 28 5b 30 3b 70 69 2f 32 3b 30 5d 29 0a 54 54 35 20 3d 20 52 63 5f 35 27 2a 28 54 63 5f 31 34 | s([0;pi/2;0]).TT5.=.Rc_5'*(Tc_14 |
| 2de60 | 2d 54 63 5f 35 29 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 5b 64 58 2a 6e 5f 73 71 5f 78 5f 31 | -Tc_5);.%.should.be.[dX*n_sq_x_1 |
| 2de80 | 3b 30 3b 30 5d 0a 65 72 72 20 3d 20 72 6f 64 72 69 67 75 65 73 28 52 52 35 29 20 2d 20 5b 30 3b | ;0;0].err.=.rodrigues(RR5).-.[0; |
| 2dea0 | 70 69 2f 32 3b 30 5d 0a 61 61 61 20 3d 20 5b 61 61 61 20 32 2a 73 69 6e 28 65 72 72 28 32 29 2f | pi/2;0].aaa.=.[aaa.2*sin(err(2)/ |
| 2dec0 | 32 29 2a 2e 33 33 2a 31 30 30 30 5d 3b 0a 0a 52 52 36 20 3d 20 52 63 5f 36 27 2a 52 63 5f 31 35 | 2)*.33*1000];..RR6.=.Rc_6'*Rc_15 |
| 2dee0 | 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 72 6f 64 72 69 67 75 65 73 28 5b 30 3b 70 69 2f 32 3b | ;.%.should.be.rodrigues([0;pi/2; |
| 2df00 | 30 5d 29 0a 54 54 36 20 3d 20 52 63 5f 36 27 2a 28 54 63 5f 31 35 2d 54 63 5f 36 29 3b 20 25 20 | 0]).TT6.=.Rc_6'*(Tc_15-Tc_6);.%. |
| 2df20 | 73 68 6f 75 6c 64 20 62 65 20 5b 64 58 2a 6e 5f 73 71 5f 78 5f 31 3b 30 3b 30 5d 0a 65 72 72 20 | should.be.[dX*n_sq_x_1;0;0].err. |
| 2df40 | 3d 20 72 6f 64 72 69 67 75 65 73 28 52 52 36 29 20 2d 20 5b 30 3b 70 69 2f 32 3b 30 5d 0a 61 61 | =.rodrigues(RR6).-.[0;pi/2;0].aa |
| 2df60 | 61 20 3d 20 5b 61 61 61 20 32 2a 73 69 6e 28 65 72 72 28 32 29 2f 32 29 2a 2e 33 33 2a 31 30 30 | a.=.[aaa.2*sin(err(2)/2)*.33*100 |
| 2df80 | 30 5d 3b 0a 0a 52 52 37 20 3d 20 52 63 5f 37 27 2a 52 63 5f 31 36 3b 20 25 20 73 68 6f 75 6c 64 | 0];..RR7.=.Rc_7'*Rc_16;.%.should |
| 2dfa0 | 20 62 65 20 72 6f 64 72 69 67 75 65 73 28 5b 30 3b 70 69 2f 32 3b 30 5d 29 0a 54 54 37 20 3d 20 | .be.rodrigues([0;pi/2;0]).TT7.=. |
| 2dfc0 | 52 63 5f 37 27 2a 28 54 63 5f 31 36 2d 54 63 5f 37 29 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 | Rc_7'*(Tc_16-Tc_7);.%.should.be. |
| 2dfe0 | 5b 64 58 2a 6e 5f 73 71 5f 78 5f 31 3b 30 3b 30 5d 0a 65 72 72 20 3d 20 72 6f 64 72 69 67 75 65 | [dX*n_sq_x_1;0;0].err.=.rodrigue |
| 2e000 | 73 28 52 52 37 29 20 2d 20 5b 30 3b 70 69 2f 32 3b 30 5d 0a 61 61 61 20 3d 20 5b 61 61 61 20 32 | s(RR7).-.[0;pi/2;0].aaa.=.[aaa.2 |
| 2e020 | 2a 73 69 6e 28 65 72 72 28 32 29 2f 32 29 2a 2e 33 33 2a 31 30 30 30 5d 3b 0a 0a 52 52 38 20 3d | *sin(err(2)/2)*.33*1000];..RR8.= |
| 2e040 | 20 52 63 5f 38 27 2a 52 63 5f 31 37 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 72 6f 64 72 69 67 | .Rc_8'*Rc_17;.%.should.be.rodrig |
| 2e060 | 75 65 73 28 5b 30 3b 70 69 2f 32 3b 30 5d 29 0a 54 54 38 20 3d 20 52 63 5f 38 27 2a 28 54 63 5f | ues([0;pi/2;0]).TT8.=.Rc_8'*(Tc_ |
| 2e080 | 31 37 2d 54 63 5f 38 29 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 5b 64 58 2a 6e 5f 73 71 5f 78 | 17-Tc_8);.%.should.be.[dX*n_sq_x |
| 2e0a0 | 5f 31 3b 30 3b 30 5d 0a 65 72 72 20 3d 20 72 6f 64 72 69 67 75 65 73 28 52 52 38 29 20 2d 20 5b | _1;0;0].err.=.rodrigues(RR8).-.[ |
| 2e0c0 | 30 3b 70 69 2f 32 3b 30 5d 0a 61 61 61 20 3d 20 5b 61 61 61 20 32 2a 73 69 6e 28 65 72 72 28 32 | 0;pi/2;0].aaa.=.[aaa.2*sin(err(2 |
| 2e0e0 | 29 2f 32 29 2a 2e 33 33 2a 31 30 30 30 5d 3b 0a 0a 65 73 28 6f 6d 63 5f 31 30 29 3b 0a 52 63 5f | )/2)*.33*1000];..es(omc_10);.Rc_ |
| 2e100 | 31 31 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 31 31 29 3b 0a 52 63 5f 31 32 20 3d 20 | 11.=.rodrigues(omc_11);.Rc_12.=. |
| 2e120 | 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 31 32 29 3b 0a 52 63 5f 31 33 20 3d 20 72 6f 64 72 69 | rodrigues(omc_12);.Rc_13.=.rodri |
| 2e140 | 67 75 65 73 28 6f 6d 63 5f 31 33 29 3b 0a 52 63 5f 31 34 20 3d 20 72 6f 64 72 69 67 75 65 73 28 | gues(omc_13);.Rc_14.=.rodrigues( |
| 2e160 | 6f 6d 63 5f 31 34 29 3b 0a 52 63 5f 31 35 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 31 | omc_14);.Rc_15.=.rodrigues(omc_1 |
| 2e180 | 35 29 3b 0a 52 63 5f 31 36 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 31 36 29 3b 0a 52 | 5);.Rc_16.=.rodrigues(omc_16);.R |
| 2e1a0 | 63 5f 31 37 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 31 37 29 3b 0a 52 63 5f 31 38 20 | c_17.=.rodrigues(omc_17);.Rc_18. |
| 2e1c0 | 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 5f 31 38 29 3b 0a 0a 0a 0a 52 52 31 20 3d 20 52 63 | =.rodrigues(omc_18);....RR1.=.Rc |
| 2e1e0 | 5f 31 27 2a 52 63 5f 31 30 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 72 6f 64 72 69 67 75 65 73 | _1'*Rc_10;.%.should.be.rodrigues |
| 2e200 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 69 73 33 44 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 | TOOLBOX_calib/is3D.m............ |
| 2e220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e260 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 2e280 | 20 20 20 20 33 32 31 20 20 37 30 32 34 30 33 37 33 33 34 20 20 20 37 33 35 34 00 20 00 00 00 00 | ....321..7024037334...7354...... |
| 2e2a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e2c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e2e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e3a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e3c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e3e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e400 | 66 75 6e 63 74 69 6f 6e 20 74 65 73 74 20 3d 20 69 73 33 44 28 58 29 2c 0a 0a 0a 4e 70 20 3d 20 | function.test.=.is3D(X),...Np.=. |
| 2e420 | 73 69 7a 65 28 58 2c 32 29 3b 0a 0a 25 25 20 43 68 65 63 6b 20 66 6f 72 20 70 6c 61 6e 61 72 69 | size(X,2);..%%.Check.for.planari |
| 2e440 | 74 79 20 6f 66 20 74 68 65 20 73 74 72 75 63 74 75 72 65 3a 0a 0a 58 5f 6d 65 61 6e 20 3d 20 6d | ty.of.the.structure:..X_mean.=.m |
| 2e460 | 65 61 6e 28 58 27 29 27 3b 0a 0a 59 20 3d 20 58 20 2d 20 28 58 5f 6d 65 61 6e 2a 6f 6e 65 73 28 | ean(X')';..Y.=.X.-.(X_mean*ones( |
| 2e480 | 31 2c 4e 70 29 29 3b 0a 0a 59 59 20 3d 20 59 2a 59 27 3b 0a 0a 5b 55 2c 53 2c 56 5d 20 3d 20 73 | 1,Np));..YY.=.Y*Y';..[U,S,V].=.s |
| 2e4a0 | 76 64 28 59 59 29 3b 0a 0a 72 20 3d 20 53 28 33 2c 33 29 2f 53 28 32 2c 32 29 3b 0a 0a 74 65 73 | vd(YY);..r.=.S(3,3)/S(2,2);..tes |
| 2e4c0 | 74 20 3d 20 28 72 20 3e 20 31 65 2d 33 29 3b 0a 0a 00 06 b4 00 02 36 ae 00 18 00 09 73 61 76 65 | t.=.(r.>.1e-3);.......6.....save |
| 2e4e0 | 69 6e 72 2e 6d 00 36 ab 00 00 06 c8 00 02 36 af 00 18 00 09 73 61 76 65 70 67 6d 2e 6d 00 36 ac | inr.m.6.......6.....savepgm.m.6. |
| 2e500 | 00 00 06 dc 00 02 36 b0 00 18 00 09 73 61 76 65 70 70 6d 2e 6d 00 36 ad 00 00 06 fc 00 02 36 b1 | ......6.....saveppm.m.6.......6. |
| 2e520 | 00 24 00 16 69 6e 69 74 5f 69 6e 74 72 69 6e 73 69 63 5f 70 61 72 61 6d 2e 6d 00 16 00 00 07 18 | .$..init_intrinsic_param.m...... |
| 2e540 | 00 02 36 b2 00 20 00 11 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 2e 6d 00 36 b2 00 00 07 38 | ..6.....mean_std_robust.m.6....8 |
| 2e560 | 00 02 36 b3 00 24 00 14 72 75 6e 5f 65 72 72 6f 72 5f 61 6e 61 6c 79 73 69 73 2e 6d 00 24 00 14 | ..6..$..run_error_analysis.m.$.. |
| 2e580 | 00 00 07 54 00 02 36 b4 00 20 00 13 63 68 65 63 6b 5f 63 6f 6e 76 65 72 67 65 6e 63 65 2e 6d 00 | ...T..6.....check_convergence.m. |
| 2e5a0 | 00 00 07 70 00 02 36 b5 00 20 00 11 63 68 65 63 6b 5f 70 6c 61 6e 61 72 69 74 79 2e 6d 00 36 b5 | ...p..6.....check_planarity.m.6. |
| 2e5c0 | 00 00 07 88 00 02 36 b6 00 1c 00 0e 63 6f 6e 76 65 72 74 5f 6f 75 6c 75 2e 6d 00 88 00 00 07 9c | ......6.....convert_oulu.m...... |
| 2e5e0 | 00 02 36 b7 00 18 00 0b 6e 6f 72 6d 61 6c 69 7a 65 2e 6d 00 00 00 07 b4 00 02 36 b8 00 1c 00 0e | ..6.....normalize.m.......6..... |
| 2e600 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 75 6e 64 69 73 74 6f 72 74 5f 69 6d 61 67 65 2e 6d 00 | TOOLBOX_calib/undistort_image.m. |
| 2e620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e660 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 2e680 | 20 20 20 33 34 30 36 20 20 37 30 32 34 30 33 37 33 36 36 20 20 31 32 30 30 33 00 20 00 00 00 00 | ...3406..7024037366..12003...... |
| 2e6a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e6c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e6e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e7a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e7c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e7e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e800 | 25 25 25 20 49 4e 50 55 54 20 54 48 45 20 49 4d 41 47 45 20 46 49 4c 45 20 4e 41 4d 45 3a 0a 0a | %%%.INPUT.THE.IMAGE.FILE.NAME:.. |
| 2e820 | 64 69 72 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 27 29 3b 0a 64 69 73 70 28 27 50 72 6f | dir;..fprintf(1,'\n');.disp('Pro |
| 2e840 | 67 72 61 6d 20 74 68 61 74 20 75 6e 64 69 73 74 6f 72 74 20 61 6e 20 69 6d 61 67 65 27 29 3b 0a | gram.that.undistort.an.image');. |
| 2e860 | 64 69 73 70 28 27 54 68 65 20 69 6e 74 72 69 6e 73 69 63 20 63 61 6d 65 72 61 20 70 61 72 61 6d | disp('The.intrinsic.camera.param |
| 2e880 | 65 74 65 72 73 20 61 72 65 20 61 73 73 75 6d 65 64 20 74 6f 20 62 65 20 6b 6e 6f 77 6e 20 28 70 | eters.are.assumed.to.be.known.(p |
| 2e8a0 | 72 65 76 69 6f 75 73 6c 79 20 63 6f 6d 70 75 74 65 64 29 27 29 3b 0a 0a 66 70 72 69 6e 74 66 28 | reviously.computed)');..fprintf( |
| 2e8c0 | 31 2c 27 5c 6e 27 29 3b 0a 69 6d 61 67 65 5f 6e 61 6d 65 20 3d 20 69 6e 70 75 74 28 27 49 6d 61 | 1,'\n');.image_name.=.input('Ima |
| 2e8e0 | 67 65 20 6e 61 6d 65 20 28 66 75 6c 6c 20 6e 61 6d 65 20 77 69 74 68 6f 75 74 20 65 78 74 65 6e | ge.name.(full.name.without.exten |
| 2e900 | 73 69 6f 6e 29 3a 20 27 2c 27 73 27 29 3b 0a 0a 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 | sion):.','s');..format_image2.=. |
| 2e920 | 27 30 27 3b 0a 0a 77 68 69 6c 65 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 3d 20 27 30 27 | '0';..while.format_image2.==.'0' |
| 2e940 | 2c 0a 20 20 20 0a 20 20 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 20 69 6e 70 75 74 28 | ,........format_image2.=..input( |
| 2e960 | 27 49 6d 61 67 65 20 66 6f 72 6d 61 74 3a 20 28 5b 5d 3d 27 27 72 27 27 3d 27 27 72 61 73 27 27 | 'Image.format:.([]=''r''=''ras'' |
| 2e980 | 2c 20 27 27 62 27 27 3d 27 27 62 6d 70 27 27 2c 20 27 27 74 27 27 3d 27 27 74 69 66 27 27 2c 20 | ,.''b''=''bmp'',.''t''=''tif'',. |
| 2e9a0 | 27 27 70 27 27 3d 27 27 70 67 6d 27 27 2c 20 27 27 6a 27 27 3d 27 27 6a 70 67 27 27 29 20 27 2c | ''p''=''pgm'',.''j''=''jpg'').', |
| 2e9c0 | 27 73 27 29 3b 0a 0a 09 69 66 20 69 73 65 6d 70 74 79 28 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 | 's');...if.isempty(format_image2 |
| 2e9e0 | 29 2c 0a 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 27 72 61 73 27 3b 0a 09 65 | ),.....format_image2.=.'ras';..e |
| 2ea00 | 6e 64 3b 0a 0a 09 69 66 20 6c 6f 77 65 72 28 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 28 31 29 29 | nd;...if.lower(format_image2(1)) |
| 2ea20 | 20 3d 3d 20 27 62 27 2c 0a 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 27 62 6d | .==.'b',.....format_image2.=.'bm |
| 2ea40 | 70 27 3b 0a 09 65 6c 73 65 0a 20 20 20 09 69 66 20 6c 6f 77 65 72 28 66 6f 72 6d 61 74 5f 69 6d | p';..else.....if.lower(format_im |
| 2ea60 | 61 67 65 32 28 31 29 29 20 3d 3d 20 27 74 27 2c 0a 20 20 20 20 20 20 09 66 6f 72 6d 61 74 5f 69 | age2(1)).==.'t',........format_i |
| 2ea80 | 6d 61 67 65 32 20 3d 20 27 74 69 66 27 3b 0a 20 20 20 09 65 6c 73 65 0a 20 20 20 20 20 20 09 69 | mage2.=.'tif';.....else........i |
| 2eaa0 | 66 20 6c 6f 77 65 72 28 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 28 31 29 29 20 3d 3d 20 27 70 27 | f.lower(format_image2(1)).==.'p' |
| 2eac0 | 2c 0a 20 20 20 20 20 20 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 27 70 67 6d | ,...........format_image2.=.'pgm |
| 2eae0 | 27 3b 0a 09 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 09 20 20 20 20 20 20 69 66 20 6c 6f 77 65 | ';........else...........if.lowe |
| 2eb00 | 72 28 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 28 31 29 29 20 3d 3d 20 27 6a 27 2c 0a 20 20 20 20 | r(format_image2(1)).==.'j',..... |
| 2eb20 | 20 20 09 20 20 20 20 20 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 27 6a 70 67 27 3b 0a | .........format_image2.=.'jpg';. |
| 2eb40 | 20 20 20 20 20 20 20 20 20 09 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 09 69 66 20 6c | ..........else..............if.l |
| 2eb60 | 6f 77 65 72 28 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 28 31 29 29 20 3d 3d 20 27 72 27 2c 0a 09 | ower(format_image2(1)).==.'r',.. |
| 2eb80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 27 | ...............format_image2.=.' |
| 2eba0 | 72 61 73 27 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 | ras';................else....... |
| 2ebc0 | 20 20 20 20 20 20 20 09 09 64 69 73 70 28 27 49 6e 76 61 6c 69 64 20 69 6d 61 67 65 20 66 6f 72 | .........disp('Invalid.image.for |
| 2ebe0 | 6d 61 74 27 29 3b 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 09 20 20 20 20 20 20 20 20 20 66 6f | mat');........................fo |
| 2ec00 | 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 27 30 27 3b 20 25 20 41 73 6b 20 66 6f 72 20 66 6f 72 | rmat_image2.=.'0';.%.Ask.for.for |
| 2ec20 | 6d 61 74 20 6f 6e 63 65 20 61 67 61 69 6e 0a 20 20 20 20 20 20 20 20 20 09 20 20 20 65 6e 64 3b | mat.once.again..............end; |
| 2ec40 | 0a 20 20 20 20 20 20 09 20 20 20 65 6e 64 3b 0a 09 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 09 | ...........end;........end;..... |
| 2ec60 | 65 6e 64 3b 0a 09 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 69 6d 61 5f 6e 61 6d 65 20 3d 20 5b 69 6d 61 | end;..end;.end;..ima_name.=.[ima |
| 2ec80 | 67 65 5f 6e 61 6d 65 20 27 2e 27 20 66 6f 72 6d 61 74 5f 69 6d 61 67 65 5d 3b 0a 0a 0a 0a 25 25 | ge_name.'.'.format_image];....%% |
| 2eca0 | 25 20 52 45 41 44 20 49 4e 20 49 4d 41 47 45 3a 0a 0a 69 66 20 66 6f 72 6d 61 74 5f 69 6d 61 67 | %.READ.IN.IMAGE:..if.format_imag |
| 2ecc0 | 65 28 31 29 20 3d 3d 20 27 70 27 2c 0a 20 20 20 49 20 3d 20 64 6f 75 62 6c 65 28 70 67 6d 72 65 | e(1).==.'p',....I.=.double(pgmre |
| 2ece0 | 61 64 28 69 6d 61 5f 6e 61 6d 65 29 29 3b 0a 65 6c 73 65 0a 20 20 20 69 66 20 66 6f 72 6d 61 74 | ad(ima_name));.else....if.format |
| 2ed00 | 5f 69 6d 61 67 65 28 31 29 20 3d 3d 20 27 72 27 2c 0a 20 20 20 20 20 20 49 20 3d 20 72 65 61 64 | _image(1).==.'r',.......I.=.read |
| 2ed20 | 72 61 73 28 69 6d 61 5f 6e 61 6d 65 29 3b 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 49 20 3d | ras(ima_name);....else.......I.= |
| 2ed40 | 20 64 6f 75 62 6c 65 28 69 6d 72 65 61 64 28 69 6d 61 5f 6e 61 6d 65 29 29 3b 0a 20 20 20 65 6e | .double(imread(ima_name));....en |
| 2ed60 | 64 3b 0a 65 6e 64 3b 0a 20 20 20 20 20 0a 69 66 20 73 69 7a 65 28 49 2c 33 29 3e 31 2c 0a 20 20 | d;.end;.......if.size(I,3)>1,... |
| 2ed80 | 20 49 20 3d 20 49 28 3a 2c 3a 2c 32 29 3b 0a 65 6e 64 3b 0a 20 20 20 0a 20 20 20 0a 25 25 20 53 | .I.=.I(:,:,2);.end;.........%%.S |
| 2eda0 | 48 4f 57 20 54 48 45 20 4f 52 49 47 49 4e 41 4c 20 49 4d 41 47 45 3a 0a 0a 66 69 67 75 72 65 28 | HOW.THE.ORIGINAL.IMAGE:..figure( |
| 2edc0 | 32 29 3b 0a 69 6d 61 67 65 28 49 29 3b 0a 63 6f 6c 6f 72 6d 61 70 28 67 72 61 79 28 32 35 36 29 | 2);.image(I);.colormap(gray(256) |
| 2ede0 | 29 3b 0a 74 69 74 6c 65 28 27 4f 72 69 67 69 6e 61 6c 20 69 6d 61 67 65 20 28 77 69 74 68 20 64 | );.title('Original.image.(with.d |
| 2ee00 | 69 73 74 6f 72 74 69 6f 6e 29 20 2d 20 53 74 6f 72 65 64 20 69 6e 20 61 72 72 61 79 20 49 27 29 | istortion).-.Stored.in.array.I') |
| 2ee20 | 3b 0a 64 72 61 77 6e 6f 77 3b 0a 0a 0a 25 25 20 55 4e 44 49 53 54 4f 52 54 20 54 48 45 20 49 4d | ;.drawnow;...%%.UNDISTORT.THE.IM |
| 2ee40 | 41 47 45 3a 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 43 6f 6d 70 75 74 75 74 69 6e 67 20 74 68 65 | AGE:..fprintf(1,'Compututing.the |
| 2ee60 | 20 75 6e 64 69 73 74 6f 72 74 65 64 20 69 6d 61 67 65 2e 2e 2e 5c 6e 27 29 0a 0a 5b 49 32 5d 20 | .undistorted.image...\n')..[I2]. |
| 2ee80 | 3d 20 72 65 63 74 28 49 2c 65 79 65 28 33 29 2c 66 63 2c 63 63 2c 6b 63 2c 4b 4b 29 3b 0a 0a 0a | =.rect(I,eye(3),fc,cc,kc,KK);... |
| 2eea0 | 66 69 67 75 72 65 28 33 29 3b 0a 69 6d 61 67 65 28 49 32 29 3b 0a 63 6f 6c 6f 72 6d 61 70 28 67 | figure(3);.image(I2);.colormap(g |
| 2eec0 | 72 61 79 28 32 35 36 29 29 3b 0a 74 69 74 6c 65 28 27 55 6e 64 69 73 74 6f 72 74 65 64 20 69 6d | ray(256));.title('Undistorted.im |
| 2eee0 | 61 67 65 20 2d 20 53 74 6f 72 65 64 20 69 6e 20 61 72 72 61 79 20 49 32 27 29 3b 0a 64 72 61 77 | age.-.Stored.in.array.I2');.draw |
| 2ef00 | 6e 6f 77 3b 0a 0a 36 20 3d 20 52 63 5f 36 27 2a 28 54 63 5f 31 35 2d 54 63 5f 36 29 3b 20 25 20 | now;..6.=.Rc_6'*(Tc_15-Tc_6);.%. |
| 2ef20 | 73 68 6f 75 6c 64 20 62 65 20 5b 64 58 2a 6e 5f 73 71 5f 78 5f 31 3b 30 3b 30 5d 0a 65 72 72 20 | should.be.[dX*n_sq_x_1;0;0].err. |
| 2ef40 | 3d 20 72 6f 64 72 69 67 75 65 73 28 52 52 36 29 20 2d 20 5b 30 3b 70 69 2f 32 3b 30 5d 0a 61 61 | =.rodrigues(RR6).-.[0;pi/2;0].aa |
| 2ef60 | 61 20 3d 20 5b 61 61 61 20 32 2a 73 69 6e 28 65 72 72 28 32 29 2f 32 29 2a 2e 33 33 2a 31 30 30 | a.=.[aaa.2*sin(err(2)/2)*.33*100 |
| 2ef80 | 30 5d 3b 0a 0a 52 52 37 20 3d 20 52 63 5f 37 27 2a 52 63 5f 31 36 3b 20 25 20 73 68 6f 75 6c 64 | 0];..RR7.=.Rc_7'*Rc_16;.%.should |
| 2efa0 | 20 62 65 20 72 6f 64 72 69 67 75 65 73 28 5b 30 3b 70 69 2f 32 3b 30 5d 29 0a 54 54 37 20 3d 20 | .be.rodrigues([0;pi/2;0]).TT7.=. |
| 2efc0 | 52 63 5f 37 27 2a 28 54 63 5f 31 36 2d 54 63 5f 37 29 3b 20 25 20 73 68 6f 75 6c 64 20 62 65 20 | Rc_7'*(Tc_16-Tc_7);.%.should.be. |
| 2efe0 | 5b 64 58 2a 6e 5f 73 71 5f 78 5f 31 3b 30 3b 30 5d 0a 65 72 72 20 3d 20 72 6f 64 72 69 67 75 65 | [dX*n_sq_x_1;0;0].err.=.rodrigue |
| 2f000 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 55 6e 57 61 72 70 50 6c 61 6e 65 2e 6d 00 00 00 00 00 | TOOLBOX_calib/UnWarpPlane.m..... |
| 2f020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f060 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 2f080 | 20 20 20 31 35 36 37 20 20 37 30 32 34 30 33 37 33 36 37 20 20 31 31 30 31 31 00 20 00 00 00 00 | ...1567..7024037367..11011...... |
| 2f0a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f0c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f0e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f1a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f1c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f1e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f200 | 66 75 6e 63 74 69 6f 6e 20 20 5b 75 5f 68 6f 72 69 2c 75 5f 76 65 72 74 5d 20 3d 20 55 6e 57 61 | function..[u_hori,u_vert].=.UnWa |
| 2f220 | 72 70 50 6c 61 6e 65 28 78 31 2c 78 32 2c 78 33 2c 78 34 29 3b 0a 0a 25 20 52 65 63 6f 76 65 72 | rpPlane(x1,x2,x3,x4);..%.Recover |
| 2f240 | 73 20 74 68 65 20 74 77 6f 20 33 44 20 64 69 72 65 63 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 72 | s.the.two.3D.directions.of.the.r |
| 2f260 | 65 63 74 61 6e 67 75 6c 61 72 20 70 61 74 63 68 20 78 31 78 32 78 33 78 34 0a 25 20 78 31 20 69 | ectangular.patch.x1x2x3x4.%.x1.i |
| 2f280 | 73 20 74 68 65 20 6f 72 69 67 69 6e 20 70 6f 69 6e 74 2c 20 69 65 20 61 6e 79 20 70 6f 69 6e 74 | s.the.origin.point,.ie.any.point |
| 2f2a0 | 20 6f 66 20 70 6c 61 6e 61 72 20 63 6f 6f 72 64 69 6e 61 74 65 20 28 78 2c 79 29 20 6f 6e 20 74 | .of.planar.coordinate.(x,y).on.t |
| 2f2c0 | 68 65 0a 25 20 72 65 63 74 61 6e 67 75 6c 61 72 20 70 61 74 63 68 20 77 69 6c 6c 20 62 65 20 70 | he.%.rectangular.patch.will.be.p |
| 2f2e0 | 72 6f 6a 65 63 74 65 64 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 20 70 6c 61 6e 65 20 61 74 3a 0a | rojected.on.the.image.plane.at:. |
| 2f300 | 25 20 78 31 20 2b 20 78 20 2a 20 75 5f 68 6f 72 69 20 2b 20 79 20 2a 20 75 5f 76 65 72 74 0a 25 | %.x1.+.x.*.u_hori.+.y.*.u_vert.% |
| 2f320 | 0a 25 20 4e 6f 74 65 3a 20 75 5f 68 6f 72 69 20 61 6e 64 20 75 5f 76 65 72 74 20 61 72 65 20 61 | .%.Note:.u_hori.and.u_vert.are.a |
| 2f340 | 6c 73 6f 20 74 68 65 20 74 77 6f 20 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 73 2e 0a 0a 0a | lso.the.two.vanishing.points.... |
| 2f360 | 69 66 20 6e 61 72 67 69 6e 20 3c 20 34 2c 0a 20 20 20 0a 20 20 20 78 34 20 3d 20 78 31 28 3a 2c | if.nargin.<.4,........x4.=.x1(:, |
| 2f380 | 34 29 3b 0a 20 20 20 78 33 20 3d 20 78 31 28 3a 2c 33 29 3b 0a 20 20 20 78 32 20 3d 20 78 31 28 | 4);....x3.=.x1(:,3);....x2.=.x1( |
| 2f3a0 | 3a 2c 32 29 3b 0a 20 20 20 78 31 20 3d 20 78 31 28 3a 2c 31 29 3b 0a 20 20 20 0a 65 6e 64 3b 0a | :,2);....x1.=.x1(:,1);.....end;. |
| 2f3c0 | 0a 0a 25 20 49 6d 61 67 65 20 50 72 6f 6a 65 63 74 69 6f 6e 3a 0a 4c 31 20 3d 20 63 72 6f 73 73 | ..%.Image.Projection:.L1.=.cross |
| 2f3e0 | 28 78 31 2c 78 32 29 3b 0a 4c 32 20 3d 20 63 72 6f 73 73 28 78 34 2c 78 33 29 3b 0a 4c 33 20 3d | (x1,x2);.L2.=.cross(x4,x3);.L3.= |
| 2f400 | 20 63 72 6f 73 73 28 78 32 2c 78 33 29 3b 0a 4c 34 20 3d 20 63 72 6f 73 73 28 78 31 2c 78 34 29 | .cross(x2,x3);.L4.=.cross(x1,x4) |
| 2f420 | 3b 0a 0a 25 20 56 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 3a 0a 56 31 20 3d 20 63 72 6f 73 73 | ;..%.Vanishing.point:.V1.=.cross |
| 2f440 | 28 4c 31 2c 4c 32 29 3b 0a 56 32 20 3d 20 63 72 6f 73 73 28 4c 33 2c 4c 34 29 3b 0a 0a 25 20 48 | (L1,L2);.V2.=.cross(L3,L4);..%.H |
| 2f460 | 6f 72 69 7a 6f 6e 20 6c 69 6e 65 3a 0a 48 20 3d 20 63 72 6f 73 73 28 56 31 2c 56 32 29 3b 0a 0a | orizon.line:.H.=.cross(V1,V2);.. |
| 2f480 | 69 66 20 48 28 33 29 20 3c 20 30 2c 20 48 20 20 3d 20 2d 48 3b 20 65 6e 64 3b 0a 0a 0a 48 20 3d | if.H(3).<.0,.H..=.-H;.end;...H.= |
| 2f4a0 | 20 48 20 2f 20 6e 6f 72 6d 28 48 29 3b 0a 0a 0a 58 31 20 3d 20 78 31 20 2f 20 64 6f 74 28 48 2c | .H./.norm(H);...X1.=.x1./.dot(H, |
| 2f4c0 | 78 31 29 3b 0a 58 32 20 3d 20 78 32 20 2f 20 64 6f 74 28 48 2c 78 32 29 3b 0a 58 33 20 3d 20 78 | x1);.X2.=.x2./.dot(H,x2);.X3.=.x |
| 2f4e0 | 33 20 2f 20 64 6f 74 28 48 2c 78 33 29 3b 0a 58 34 20 3d 20 78 34 20 2f 20 64 6f 74 28 48 2c 78 | 3./.dot(H,x3);.X4.=.x4./.dot(H,x |
| 2f500 | 34 29 3b 0a 0a 73 63 61 6c 65 20 3d 20 58 31 28 33 29 3b 0a 0a 58 31 20 3d 20 58 31 2f 73 63 61 | 4);..scale.=.X1(3);..X1.=.X1/sca |
| 2f520 | 6c 65 3b 0a 58 32 20 3d 20 58 32 2f 73 63 61 6c 65 3b 0a 58 33 20 3d 20 58 33 2f 73 63 61 6c 65 | le;.X2.=.X2/scale;.X3.=.X3/scale |
| 2f540 | 3b 0a 58 34 20 3d 20 58 34 2f 73 63 61 6c 65 3b 0a 0a 0a 75 5f 68 6f 72 69 20 3d 20 58 32 20 2d | ;.X4.=.X4/scale;...u_hori.=.X2.- |
| 2f560 | 20 58 31 3b 0a 75 5f 76 65 72 74 20 3d 20 58 34 20 2d 20 58 31 3b 0a 3d 3d 20 27 72 27 2c 0a 09 | .X1;.u_vert.=.X4.-.X1;.==.'r',.. |
| 2f580 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 09 66 6f 72 6d 61 74 5f 69 6d 61 67 65 32 20 3d 20 27 | ...............format_image2.=.' |
| 2f5a0 | 72 61 73 27 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 | ras';................else....... |
| 2f5c0 | 20 20 20 20 20 20 20 09 09 64 69 73 70 28 27 49 6e 76 61 6c 69 64 20 69 6d 61 67 65 20 66 6f 72 | .........disp('Invalid.image.for |
| 2f5e0 | 6d 61 74 27 29 3b 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 09 20 20 20 20 20 20 20 20 20 66 6f | mat');........................fo |
| 2f600 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 77 72 69 74 65 72 61 73 2e 6d 00 00 00 00 00 00 00 00 | TOOLBOX_calib/writeras.m........ |
| 2f620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f660 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 2f680 | 20 20 20 34 35 31 32 20 20 37 30 32 34 30 33 37 33 37 30 20 20 31 30 34 34 30 00 20 00 00 00 00 | ...4512..7024037370..10440...... |
| 2f6a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f6c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f6e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f7a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f7c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f7e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f800 | 66 75 6e 63 74 69 6f 6e 20 77 72 69 74 65 72 61 73 28 66 69 6c 65 6e 61 6d 65 2c 20 69 6d 61 67 | function.writeras(filename,.imag |
| 2f820 | 65 2c 20 6d 61 70 29 3b 0a 25 57 52 49 54 45 52 41 53 20 57 72 69 74 65 20 61 6e 20 69 6d 61 67 | e,.map);.%WRITERAS.Write.an.imag |
| 2f840 | 65 20 66 69 6c 65 20 69 6e 20 73 75 6e 20 72 61 73 74 65 72 20 66 6f 72 6d 61 74 2e 0a 25 20 09 | e.file.in.sun.raster.format..%.. |
| 2f860 | 20 20 57 52 49 54 45 52 41 53 28 27 69 6d 61 67 65 66 69 6c 65 2e 72 61 73 27 2c 20 69 6d 61 67 | ..WRITERAS('imagefile.ras',.imag |
| 2f880 | 65 5f 6d 61 74 72 69 78 2c 20 6d 61 70 29 20 77 72 69 74 65 73 20 61 20 0a 25 09 20 20 22 73 75 | e_matrix,.map).writes.a..%..."su |
| 2f8a0 | 6e 2e 72 61 73 74 65 72 22 20 69 6d 61 67 65 20 66 69 6c 65 2e 0a 0a 25 09 20 20 57 72 69 74 74 | n.raster".image.file...%...Writt |
| 2f8c0 | 65 6e 20 62 79 20 54 68 6f 6d 61 73 20 4b 2e 20 4c 65 75 6e 67 20 33 2f 33 30 2f 39 33 2e 0a 25 | en.by.Thomas.K..Leung.3/30/93..% |
| 2f8e0 | 09 20 20 40 20 43 61 6c 69 66 6f 72 6e 69 61 20 49 6e 73 74 69 74 75 74 65 20 6f 66 20 54 65 63 | ...@.California.Institute.of.Tec |
| 2f900 | 68 6e 6f 6c 6f 67 79 2e 0a 0a 0a 25 20 50 43 20 61 6e 64 20 55 4e 49 58 20 76 65 72 73 69 6f 6e | hnology....%.PC.and.UNIX.version |
| 2f920 | 20 6f 66 20 77 72 69 74 65 72 61 73 20 2d 20 4a 65 61 6e 2d 59 76 65 73 20 42 6f 75 67 75 65 74 | .of.writeras.-.Jean-Yves.Bouguet |
| 2f940 | 20 2d 20 44 65 63 2e 20 31 39 39 38 0a 0a 64 6f 74 20 3d 20 6d 61 78 28 66 69 6e 64 28 66 69 6c | .-.Dec..1998..dot.=.max(find(fil |
| 2f960 | 65 6e 61 6d 65 20 3d 3d 20 27 2e 27 29 29 3b 0a 73 75 66 66 69 78 20 3d 20 66 69 6c 65 6e 61 6d | ename.==.'.'));.suffix.=.filenam |
| 2f980 | 65 28 64 6f 74 2b 31 3a 64 6f 74 2b 33 29 3b 0a 0a 69 66 20 6e 61 72 67 69 6e 20 3c 20 33 2c 0a | e(dot+1:dot+3);..if.nargin.<.3,. |
| 2f9a0 | 20 20 20 6d 61 70 20 3d 20 5b 5d 3b 0a 65 6e 64 3b 0a 0a 69 66 28 73 74 72 63 6d 70 28 73 75 66 | ...map.=.[];.end;..if(strcmp(suf |
| 2f9c0 | 66 69 78 2c 20 27 72 61 73 27 29 29 0a 09 25 57 72 69 74 65 20 68 65 61 64 65 72 0a 0a 09 66 70 | fix,.'ras'))..%Write.header...fp |
| 2f9e0 | 20 3d 20 66 6f 70 65 6e 28 66 69 6c 65 6e 61 6d 65 2c 20 27 77 62 27 29 3b 0a 09 69 66 28 66 70 | .=.fopen(filename,.'wb');..if(fp |
| 2fa00 | 20 3c 20 30 29 20 65 72 72 6f 72 28 5b 27 43 61 6e 6e 6f 74 20 6f 70 65 6e 20 27 20 66 69 6c 65 | .<.0).error(['Cannot.open.'.file |
| 2fa20 | 6e 61 6d 65 20 27 2e 27 5d 29 2c 20 65 6e 64 0a 0a 09 5b 68 65 69 67 68 74 2c 20 77 69 64 74 68 | name.'.']),.end...[height,.width |
| 2fa40 | 5d 20 3d 20 73 69 7a 65 28 69 6d 61 67 65 29 3b 0a 09 69 6d 61 67 65 20 3d 20 69 6d 61 67 65 20 | ].=.size(image);..image.=.image. |
| 2fa60 | 2d 20 31 3b 0a 09 6d 61 70 73 69 7a 65 20 3d 20 73 69 7a 65 28 6d 61 70 2c 20 31 29 2a 73 69 7a | -.1;..mapsize.=.size(map,.1)*siz |
| 2fa80 | 65 28 6d 61 70 2c 32 29 3b 0a 09 25 66 77 72 69 74 65 28 66 70 2c 20 2e 2e 2e 0a 09 25 20 20 20 | e(map,2);..%fwrite(fp,......%... |
| 2faa0 | 20 20 20 20 5b 31 35 30 34 30 37 38 34 38 35 2c 20 77 69 64 74 68 2c 20 68 65 69 67 68 74 2c 20 | ....[1504078485,.width,.height,. |
| 2fac0 | 38 2c 20 68 65 69 67 68 74 2a 77 69 64 74 68 2c 20 31 2c 20 31 2c 20 6d 61 70 73 69 7a 65 5d 2c | 8,.height*width,.1,.1,.mapsize], |
| 2fae0 | 20 2e 2e 2e 0a 20 20 20 25 20 20 20 20 20 20 20 27 6c 6f 6e 67 27 29 3b 0a 20 20 20 0a 20 20 20 | ........%.......'long');........ |
| 2fb00 | 0a 20 20 20 7a 65 72 6f 5f 73 74 72 20 3d 20 27 30 30 30 30 30 30 30 30 27 3b 0a 20 20 20 0a 20 | ....zero_str.=.'00000000';...... |
| 2fb20 | 20 20 25 20 4d 41 47 49 43 20 4e 55 4d 42 45 52 3a 0a 20 20 20 0a 0a 09 66 77 72 69 74 65 28 66 | ..%.MAGIC.NUMBER:.......fwrite(f |
| 2fb40 | 70 2c 38 39 2c 27 75 63 68 61 72 27 29 3b 0a 20 20 20 66 77 72 69 74 65 28 66 70 2c 31 36 36 2c | p,89,'uchar');....fwrite(fp,166, |
| 2fb60 | 27 75 63 68 61 72 27 29 3b 0a 20 20 20 66 77 72 69 74 65 28 66 70 2c 31 30 36 2c 27 75 63 68 61 | 'uchar');....fwrite(fp,106,'ucha |
| 2fb80 | 72 27 29 3b 0a 20 20 20 66 77 72 69 74 65 28 66 70 2c 31 34 39 2c 27 75 63 68 61 72 27 29 3b 0a | r');....fwrite(fp,149,'uchar');. |
| 2fba0 | 0a 20 20 20 77 69 64 74 68 5f 73 74 72 20 3d 20 64 65 63 32 68 65 78 28 77 69 64 74 68 29 3b 0a | ....width_str.=.dec2hex(width);. |
| 2fbc0 | 09 77 69 64 74 68 5f 73 74 72 20 3d 20 5b 7a 65 72 6f 5f 73 74 72 28 31 3a 38 2d 6c 65 6e 67 74 | .width_str.=.[zero_str(1:8-lengt |
| 2fbe0 | 68 28 77 69 64 74 68 5f 73 74 72 29 29 20 77 69 64 74 68 5f 73 74 72 5d 3b 0a 20 20 20 0a 20 20 | h(width_str)).width_str];....... |
| 2fc00 | 20 66 6f 72 20 69 69 20 3d 20 31 3a 32 3a 37 2c 0a 20 20 20 09 66 77 72 69 74 65 28 66 70 2c 68 | .for.ii.=.1:2:7,.....fwrite(fp,h |
| 2fc20 | 65 78 32 64 65 63 28 77 69 64 74 68 5f 73 74 72 28 69 69 3a 69 69 2b 31 29 29 2c 27 75 63 68 61 | ex2dec(width_str(ii:ii+1)),'ucha |
| 2fc40 | 72 27 29 3b 0a 09 65 6e 64 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 68 65 69 67 68 74 5f 73 74 72 | r');..end;............height_str |
| 2fc60 | 20 3d 20 64 65 63 32 68 65 78 28 68 65 69 67 68 74 29 3b 0a 09 68 65 69 67 68 74 5f 73 74 72 20 | .=.dec2hex(height);..height_str. |
| 2fc80 | 3d 20 5b 7a 65 72 6f 5f 73 74 72 28 31 3a 38 2d 6c 65 6e 67 74 68 28 68 65 69 67 68 74 5f 73 74 | =.[zero_str(1:8-length(height_st |
| 2fca0 | 72 29 29 20 68 65 69 67 68 74 5f 73 74 72 5d 3b 0a 20 20 20 0a 20 20 20 66 6f 72 20 69 69 20 3d | r)).height_str];........for.ii.= |
| 2fcc0 | 20 31 3a 32 3a 37 2c 0a 20 20 20 09 66 77 72 69 74 65 28 66 70 2c 68 65 78 32 64 65 63 28 68 65 | .1:2:7,.....fwrite(fp,hex2dec(he |
| 2fce0 | 69 67 68 74 5f 73 74 72 28 69 69 3a 69 69 2b 31 29 29 2c 27 75 63 68 61 72 27 29 3b 0a 20 20 20 | ight_str(ii:ii+1)),'uchar');.... |
| 2fd00 | 65 6e 64 3b 0a 20 20 20 0a 20 20 20 66 77 72 69 74 65 28 66 70 2c 30 2c 27 75 63 68 61 72 27 29 | end;........fwrite(fp,0,'uchar') |
| 2fd20 | 3b 0a 20 20 20 66 77 72 69 74 65 28 66 70 2c 30 2c 27 75 63 68 61 72 27 29 3b 0a 20 20 20 66 77 | ;....fwrite(fp,0,'uchar');....fw |
| 2fd40 | 72 69 74 65 28 66 70 2c 30 2c 27 75 63 68 61 72 27 29 3b 0a 20 20 20 66 77 72 69 74 65 28 66 70 | rite(fp,0,'uchar');....fwrite(fp |
| 2fd60 | 2c 38 2c 27 75 63 68 61 72 27 29 3b 0a 20 20 20 0a 20 20 20 6c 6c 20 3d 20 68 65 69 67 68 74 2a | ,8,'uchar');........ll.=.height* |
| 2fd80 | 77 69 64 74 68 3b 0a 20 20 20 6c 6c 5f 73 74 72 20 3d 20 64 65 63 32 68 65 78 28 6c 6c 29 3b 0a | width;....ll_str.=.dec2hex(ll);. |
| 2fda0 | 20 20 20 6c 6c 5f 73 74 72 20 3d 20 5b 7a 65 72 6f 5f 73 74 72 28 31 3a 38 2d 6c 65 6e 67 74 68 | ...ll_str.=.[zero_str(1:8-length |
| 2fdc0 | 28 6c 6c 5f 73 74 72 29 29 20 6c 6c 5f 73 74 72 5d 3b 0a 20 20 20 0a 20 20 20 66 6f 72 20 69 69 | (ll_str)).ll_str];........for.ii |
| 2fde0 | 20 3d 20 31 3a 32 3a 37 2c 0a 20 20 20 09 66 77 72 69 74 65 28 66 70 2c 68 65 78 32 64 65 63 28 | .=.1:2:7,.....fwrite(fp,hex2dec( |
| 2fe00 | 6c 6c 5f 73 74 72 28 69 69 3a 69 69 2b 31 29 29 2c 27 75 63 68 61 72 27 29 3b 0a 09 65 6e 64 3b | ll_str(ii:ii+1)),'uchar');..end; |
| 2fe20 | 0a 20 20 0a 20 20 20 66 77 72 69 74 65 28 66 70 2c 30 2c 27 75 63 68 61 72 27 29 3b 0a 20 20 20 | .......fwrite(fp,0,'uchar');.... |
| 2fe40 | 66 77 72 69 74 65 28 66 70 2c 30 2c 27 75 63 68 61 72 27 29 3b 0a 20 20 20 66 77 72 69 74 65 28 | fwrite(fp,0,'uchar');....fwrite( |
| 2fe60 | 66 70 2c 30 2c 27 75 63 68 61 72 27 29 3b 0a 20 20 20 66 77 72 69 74 65 28 66 70 2c 31 2c 27 75 | fp,0,'uchar');....fwrite(fp,1,'u |
| 2fe80 | 63 68 61 72 27 29 3b 0a 20 20 20 66 77 72 69 74 65 28 66 70 2c 30 2c 27 75 63 68 61 72 27 29 3b | char');....fwrite(fp,0,'uchar'); |
| 2fea0 | 0a 20 20 20 66 77 72 69 74 65 28 66 70 2c 30 2c 27 75 63 68 61 72 27 29 3b 0a 20 20 20 66 77 72 | ....fwrite(fp,0,'uchar');....fwr |
| 2fec0 | 69 74 65 28 66 70 2c 30 2c 27 75 63 68 61 72 27 29 3b 0a 20 20 20 66 77 72 69 74 65 28 66 70 2c | ite(fp,0,'uchar');....fwrite(fp, |
| 2fee0 | 7e 7e 6d 61 70 73 69 7a 65 2c 27 75 63 68 61 72 27 29 3b 0a 0a 20 20 20 6d 61 70 73 69 7a 65 5f | ~~mapsize,'uchar');.....mapsize_ |
| 2ff00 | 73 74 72 20 3d 20 64 65 63 32 68 65 78 28 6d 61 70 73 69 7a 65 29 3b 0a 20 20 20 6d 61 70 73 69 | str.=.dec2hex(mapsize);....mapsi |
| 2ff20 | 7a 65 5f 73 74 72 20 3d 20 5b 7a 65 72 6f 5f 73 74 72 28 31 3a 38 2d 6c 65 6e 67 74 68 28 6d 61 | ze_str.=.[zero_str(1:8-length(ma |
| 2ff40 | 70 73 69 7a 65 5f 73 74 72 29 29 20 6d 61 70 73 69 7a 65 5f 73 74 72 5d 3b 0a 20 20 20 0a 20 20 | psize_str)).mapsize_str];....... |
| 2ff60 | 20 25 6b 65 79 62 6f 61 72 64 3b 0a 20 20 20 0a 20 20 20 66 6f 72 20 69 69 20 3d 20 31 3a 32 3a | .%keyboard;........for.ii.=.1:2: |
| 2ff80 | 37 2c 0a 20 20 20 09 66 77 72 69 74 65 28 66 70 2c 68 65 78 32 64 65 63 28 6d 61 70 73 69 7a 65 | 7,.....fwrite(fp,hex2dec(mapsize |
| 2ffa0 | 5f 73 74 72 28 69 69 3a 69 69 2b 31 29 29 2c 27 75 63 68 61 72 27 29 3b 0a 09 65 6e 64 3b 0a 20 | _str(ii:ii+1)),'uchar');..end;.. |
| 2ffc0 | 0a 20 20 20 0a 09 69 66 20 6d 61 70 73 69 7a 65 20 7e 3d 20 30 0a 09 09 6d 61 70 20 3d 20 6d 69 | ......if.mapsize.~=.0...map.=.mi |
| 2ffe0 | 6e 28 32 35 35 2c 20 66 69 78 28 32 35 35 2a 6d 61 70 29 29 3b 0a 09 09 66 77 72 69 74 65 28 66 | n(255,.fix(255*map));...fwrite(f |
| 30000 | 70 2c 20 6d 61 70 2c 20 27 75 63 68 61 72 27 29 3b 0a 09 65 6e 64 0a 09 69 66 20 72 65 6d 28 77 | p,.map,.'uchar');..end..if.rem(w |
| 30020 | 69 64 74 68 2c 32 29 20 3d 3d 20 31 0a 09 09 69 6d 61 67 65 20 3d 20 5b 69 6d 61 67 65 27 3b 20 | idth,2).==.1...image.=.[image';. |
| 30040 | 7a 65 72 6f 73 28 31 2c 20 68 65 69 67 68 74 29 5d 27 3b 0a 09 09 74 6f 70 20 3d 20 32 35 35 20 | zeros(1,.height)]';...top.=.255. |
| 30060 | 2a 20 6f 6e 65 73 28 73 69 7a 65 28 69 6d 61 67 65 29 29 3b 0a 09 09 66 77 72 69 74 65 28 66 70 | *.ones(size(image));...fwrite(fp |
| 30080 | 2c 20 6d 69 6e 28 74 6f 70 2c 69 6d 61 67 65 29 27 2c 20 27 75 63 68 61 72 27 29 3b 0a 09 65 6c | ,.min(top,image)',.'uchar');..el |
| 300a0 | 73 65 0a 09 09 74 6f 70 20 3d 20 32 35 35 20 2a 20 6f 6e 65 73 28 73 69 7a 65 28 69 6d 61 67 65 | se...top.=.255.*.ones(size(image |
| 300c0 | 29 29 3b 0a 09 09 66 77 72 69 74 65 28 66 70 2c 20 6d 69 6e 28 74 6f 70 2c 69 6d 61 67 65 29 27 | ));...fwrite(fp,.min(top,image)' |
| 300e0 | 2c 20 27 75 63 68 61 72 27 29 3b 0a 09 65 6e 64 0a 09 66 63 6c 6f 73 65 28 66 70 29 3b 0a 65 6c | ,.'uchar');..end..fclose(fp);.el |
| 30100 | 73 65 0a 09 65 72 72 6f 72 28 27 49 6d 61 67 65 20 66 69 6c 65 20 6e 61 6d 65 20 6d 75 73 74 20 | se..error('Image.file.name.must. |
| 30120 | 65 6e 64 20 69 6e 20 65 69 74 68 65 72 20 27 27 72 61 73 27 27 20 6f 72 20 27 27 72 61 73 74 27 | end.in.either.''ras''.or.''rast' |
| 30140 | 27 2e 27 29 3b 0a 65 6e 64 0a 39 38 0a 0a 64 6f 74 20 3d 20 6d 61 78 28 66 69 6e 64 28 66 69 6c | '.');.end.98..dot.=.max(find(fil |
| 30160 | 65 6e 61 6d 65 20 3d 3d 20 27 2e 27 29 29 3b 0a 73 75 66 66 69 78 20 3d 20 66 69 6c 65 6e 61 6d | ename.==.'.'));.suffix.=.filenam |
| 30180 | 65 28 64 6f 74 2b 31 3a 64 6f 74 2b 33 29 3b 0a 0a 69 66 20 6e 61 72 67 69 6e 20 3c 20 33 2c 0a | e(dot+1:dot+3);..if.nargin.<.3,. |
| 301a0 | 20 20 20 6d 61 70 20 3d 20 5b 5d 3b 0a 65 6e 64 3b 0a 0a 69 66 28 73 74 72 63 6d 70 28 73 75 66 | ...map.=.[];.end;..if(strcmp(suf |
| 301c0 | 66 69 78 2c 20 27 72 61 73 27 29 29 0a 09 25 57 72 69 74 65 20 68 65 61 64 65 72 0a 0a 09 66 70 | fix,.'ras'))..%Write.header...fp |
| 301e0 | 20 3d 20 66 6f 70 65 6e 28 66 69 6c 65 6e 61 6d 65 2c 20 27 77 62 27 29 3b 0a 09 69 66 28 66 70 | .=.fopen(filename,.'wb');..if(fp |
| 30200 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 65 72 72 6f 72 5f 61 6e 61 6c 79 73 69 73 2e 6d 00 00 | TOOLBOX_calib/error_analysis.m.. |
| 30220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30260 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 30280 | 20 20 20 36 34 35 37 20 20 37 30 32 34 30 33 37 33 32 30 20 20 31 31 36 34 31 00 20 00 00 00 00 | ...6457..7024037320..11641...... |
| 302a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 302c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 302e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 303a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 303c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 303e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30400 | 25 25 25 20 45 52 52 4f 52 5f 41 4e 41 4c 59 53 49 53 0a 25 25 25 20 54 68 69 73 20 73 69 6d 75 | %%%.ERROR_ANALYSIS.%%%.This.simu |
| 30420 | 6c 61 74 69 6f 6e 20 68 65 6c 70 73 20 63 6f 70 75 74 69 6e 67 20 74 68 65 20 61 63 74 75 72 61 | lation.helps.coputing.the.actura |
| 30440 | 63 69 65 73 20 6f 66 20 63 61 6c 69 62 72 61 74 69 6f 6e 0a 25 25 25 20 52 75 6e 20 69 74 20 61 | cies.of.calibration.%%%.Run.it.a |
| 30460 | 66 74 65 72 20 74 68 65 20 6d 61 69 6e 20 63 61 6c 69 62 72 61 74 69 6f 6e 0a 0a 0a 0a 4e 5f 72 | fter.the.main.calibration....N_r |
| 30480 | 75 6e 73 20 3d 20 32 30 30 3b 0a 0a 25 4e 5f 69 6d 61 5f 61 63 74 69 76 65 20 3d 20 34 3b 0a 0a | uns.=.200;..%N_ima_active.=.4;.. |
| 304a0 | 73 61 76 69 6e 67 20 3d 20 31 3b 0a 0a 69 66 20 31 2c 20 25 7e 65 78 69 73 74 28 27 66 63 5f 6c | saving.=.1;..if.1,.%~exist('fc_l |
| 304c0 | 69 73 74 27 29 2c 20 25 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 0a 20 20 20 0a 20 20 20 25 | ist'),.%.initialization........% |
| 304e0 | 20 49 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 3a 0a 20 20 20 0a 20 20 20 6c 6f 61 64 20 43 61 6c | .Initialization:........load.Cal |
| 30500 | 69 62 5f 52 65 73 75 6c 74 73 3b 0a 20 20 20 63 68 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 | ib_Results;....check_active_imag |
| 30520 | 65 73 3b 0a 20 20 20 0a 09 66 63 5f 6c 69 73 74 20 3d 20 5b 5d 3b 0a 09 63 63 5f 6c 69 73 74 20 | es;......fc_list.=.[];..cc_list. |
| 30540 | 3d 20 5b 5d 3b 0a 09 6b 63 5f 6c 69 73 74 20 3d 20 5b 5d 3b 0a 20 20 20 61 63 74 69 76 65 5f 69 | =.[];..kc_list.=.[];....active_i |
| 30560 | 6d 61 67 65 73 5f 6c 69 73 74 20 3d 20 5b 5d 3b 0a 20 20 20 0a 20 20 20 0a 09 66 6f 72 20 6b 6b | mages_list.=.[];..........for.kk |
| 30580 | 3d 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 09 0a 20 20 20 09 65 76 61 6c 28 5b 27 6f 6d 63 5f 6c 69 | =1:n_ima,..........eval(['omc_li |
| 305a0 | 73 74 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 5b 5d 3b 27 5d 29 3b 0a 20 20 20 | st_'.num2str(kk).'.=.[];']);.... |
| 305c0 | 09 65 76 61 6c 28 5b 27 54 63 5f 6c 69 73 74 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 | .eval(['Tc_list_'.num2str(kk).'. |
| 305e0 | 3d 20 5b 5d 3b 27 5d 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a 09 0a 09 25 73 78 20 | =.[];']);...........end;....%sx. |
| 30600 | 3d 20 6d 65 64 69 61 6e 28 61 62 73 28 65 78 28 31 2c 3a 29 29 29 2a 31 2e 34 38 33 36 3b 0a 09 | =.median(abs(ex(1,:)))*1.4836;.. |
| 30620 | 25 73 79 20 3d 20 6d 65 64 69 61 6e 28 61 62 73 28 65 78 28 32 2c 3a 29 29 29 2a 31 2e 34 38 33 | %sy.=.median(abs(ex(2,:)))*1.483 |
| 30640 | 36 3b 0a 09 0a 09 73 78 20 3d 20 73 74 64 28 65 78 28 31 2c 3a 29 29 3b 0a 09 73 79 20 3d 20 73 | 6;....sx.=.std(ex(1,:));..sy.=.s |
| 30660 | 74 64 28 65 78 28 32 2c 3a 29 29 3b 0a 20 20 20 0a 09 25 20 53 61 76 69 6e 67 20 74 68 65 20 66 | td(ex(2,:));......%.Saving.the.f |
| 30680 | 65 61 74 75 72 65 20 6c 6f 63 61 74 69 6f 6e 73 3a 0a 0a 09 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e | eature.locations:...for.kk.=.1:n |
| 306a0 | 5f 69 6d 61 2c 0a 20 20 20 09 0a 20 20 20 09 65 76 61 6c 28 5b 27 78 5f 73 61 76 65 5f 27 20 6e | _ima,..........eval(['x_save_'.n |
| 306c0 | 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 | um2str(kk).'.=.x_'.num2str(kk).' |
| 306e0 | 3b 27 5d 29 3b 0a 20 20 20 09 65 76 61 6c 28 5b 27 79 5f 73 61 76 65 5f 27 20 6e 75 6d 32 73 74 | ;']);.....eval(['y_save_'.num2st |
| 30700 | 72 28 6b 6b 29 20 27 20 3d 20 79 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b | r(kk).'.=.y_'.num2str(kk).';']); |
| 30720 | 0a 0a 09 65 6e 64 3b 0a 20 20 20 0a 20 20 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 5f 73 61 76 | ...end;........active_images_sav |
| 30740 | 65 20 3d 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 20 20 20 69 6e 64 5f 61 63 74 69 76 65 | e.=.active_images;....ind_active |
| 30760 | 5f 73 61 76 65 20 3d 20 69 6e 64 5f 61 63 74 69 76 65 3b 0a 20 20 20 0a 20 20 20 66 63 5f 73 61 | _save.=.ind_active;........fc_sa |
| 30780 | 76 65 20 3d 20 66 63 3b 0a 20 20 20 63 63 5f 73 61 76 65 20 3d 20 63 63 3b 0a 20 20 20 6b 63 5f | ve.=.fc;....cc_save.=.cc;....kc_ |
| 307a0 | 73 61 76 65 20 3d 20 6b 63 3b 0a 20 20 20 4b 4b 5f 73 61 76 65 20 3d 20 4b 4b 3b 0a 20 20 20 0a | save.=.kc;....KK_save.=.KK;..... |
| 307c0 | 0a 65 6e 64 3b 0a 0a 0a 0a 0a 25 25 25 20 54 68 65 20 6d 61 69 6e 20 6c 6f 6f 70 3a 0a 0a 0a 66 | .end;.....%%%.The.main.loop:...f |
| 307e0 | 6f 72 20 6e 74 72 69 61 6c 20 3d 20 31 3a 4e 5f 72 75 6e 73 2c 0a 20 20 20 0a 20 20 20 66 70 72 | or.ntrial.=.1:N_runs,........fpr |
| 30800 | 69 6e 74 66 28 31 2c 27 5c 6e 52 75 6e 20 6e 75 6d 62 65 72 3a 20 25 64 5c 6e 27 2c 6e 74 72 69 | intf(1,'\nRun.number:.%d\n',ntri |
| 30820 | 61 6c 29 3b 0a 20 20 20 66 70 72 69 6e 74 66 28 31 2c 20 20 27 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c | al);....fprintf(1,..'----------\ |
| 30840 | 6e 27 29 3b 0a 20 20 20 0a 20 20 20 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 | n');........for.kk.=.1:n_ima,... |
| 30860 | 20 20 20 20 0a 20 20 20 20 20 20 65 76 61 6c 28 5b 27 79 5f 6b 6b 20 3d 20 79 5f 73 61 76 65 5f | ...........eval(['y_kk.=.y_save_ |
| 30880 | 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 0a 20 20 20 20 20 20 0a 20 20 20 20 20 | '.num2str(kk).';'])............. |
| 308a0 | 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 20 26 20 7e 69 73 6e 61 6e 28 79 | .if.active_images(kk).&.~isnan(y |
| 308c0 | 5f 6b 6b 28 31 2c 31 29 29 2c 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 4e 6b | _kk(1,1)),....................Nk |
| 308e0 | 6b 20 3d 20 73 69 7a 65 28 79 5f 6b 6b 2c 32 29 3b 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 | k.=.size(y_kk,2);............... |
| 30900 | 20 20 20 20 20 78 5f 6b 6b 5f 6e 65 77 20 3d 20 79 5f 6b 6b 20 2b 20 5b 73 78 20 2a 20 72 61 6e | .....x_kk_new.=.y_kk.+.[sx.*.ran |
| 30920 | 64 6e 28 31 2c 4e 6b 6b 29 3b 73 79 2a 72 61 6e 64 6e 28 31 2c 4e 6b 6b 29 5d 3b 0a 20 20 20 20 | dn(1,Nkk);sy*randn(1,Nkk)];..... |
| 30940 | 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 65 76 61 6c 28 5b 27 78 5f 27 20 6e 75 6d 32 73 74 | ...............eval(['x_'.num2st |
| 30960 | 72 28 6b 6b 29 20 27 20 3d 20 78 5f 6b 6b 5f 6e 65 77 3b 27 5d 29 3b 0a 20 20 20 20 20 20 20 20 | r(kk).'.=.x_kk_new;']);......... |
| 30980 | 20 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a | ........end;...........end;..... |
| 309a0 | 20 20 20 4e 5f 61 63 74 69 76 65 20 3d 20 6c 65 6e 67 74 68 28 69 6e 64 5f 61 63 74 69 76 65 5f | ...N_active.=.length(ind_active_ |
| 309c0 | 73 61 76 65 29 3b 0a 20 20 20 6a 75 6e 6b 20 3d 20 72 61 6e 64 6e 28 31 2c 4e 5f 61 63 74 69 76 | save);....junk.=.randn(1,N_activ |
| 309e0 | 65 29 3b 0a 20 20 20 5b 6a 75 6e 6b 2c 6a 75 6e 6b 32 5d 20 3d 20 73 6f 72 74 28 6a 75 6e 6b 29 | e);....[junk,junk2].=.sort(junk) |
| 30a00 | 3b 0a 20 20 20 0a 20 20 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 20 3d 20 7a 65 72 6f 73 28 31 | ;........active_images.=.zeros(1 |
| 30a20 | 2c 6e 5f 69 6d 61 29 3b 0a 20 20 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 69 6e 64 5f 61 63 | ,n_ima);....active_images(ind_ac |
| 30a40 | 74 69 76 65 5f 73 61 76 65 28 6a 75 6e 6b 32 28 31 3a 4e 5f 69 6d 61 5f 61 63 74 69 76 65 29 29 | tive_save(junk2(1:N_ima_active)) |
| 30a60 | 29 20 3d 20 6f 6e 65 73 28 31 2c 4e 5f 69 6d 61 5f 61 63 74 69 76 65 29 3b 0a 20 20 20 0a 20 20 | ).=.ones(1,N_ima_active);....... |
| 30a80 | 20 66 63 20 3d 20 66 63 5f 73 61 76 65 3b 0a 20 20 20 63 63 20 3d 20 63 63 5f 73 61 76 65 3b 0a | .fc.=.fc_save;....cc.=.cc_save;. |
| 30aa0 | 20 20 20 6b 63 20 3d 20 6b 63 5f 73 61 76 65 3b 0a 20 20 20 4b 4b 20 3d 20 4b 4b 5f 73 61 76 65 | ...kc.=.kc_save;....KK.=.KK_save |
| 30ac0 | 3b 0a 20 20 20 0a 20 20 20 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 3b 0a 20 20 20 0a 20 20 20 | ;........go_calib_optim;........ |
| 30ae0 | 66 63 5f 6c 69 73 74 20 3d 20 5b 66 63 5f 6c 69 73 74 20 66 63 5d 3b 0a 20 20 20 63 63 5f 6c 69 | fc_list.=.[fc_list.fc];....cc_li |
| 30b00 | 73 74 20 3d 20 5b 63 63 5f 6c 69 73 74 20 63 63 5d 3b 0a 20 20 20 6b 63 5f 6c 69 73 74 20 3d 20 | st.=.[cc_list.cc];....kc_list.=. |
| 30b20 | 5b 6b 63 5f 6c 69 73 74 20 6b 63 5d 3b 0a 20 20 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 5f 6c | [kc_list.kc];....active_images_l |
| 30b40 | 69 73 74 20 3d 20 5b 61 63 74 69 76 65 5f 69 6d 61 67 65 73 5f 6c 69 73 74 20 61 63 74 69 76 65 | ist.=.[active_images_list.active |
| 30b60 | 5f 69 6d 61 67 65 73 27 5d 3b 0a 20 20 20 0a 20 20 20 66 6f 72 20 6b 6b 3d 31 3a 6e 5f 69 6d 61 | _images'];........for.kk=1:n_ima |
| 30b80 | 2c 0a 20 20 20 0a 20 20 20 09 65 76 61 6c 28 5b 27 6f 6d 63 5f 6c 69 73 74 5f 27 20 6e 75 6d 32 | ,.........eval(['omc_list_'.num2 |
| 30ba0 | 73 74 72 28 6b 6b 29 20 27 20 3d 20 5b 20 6f 6d 63 5f 6c 69 73 74 5f 27 20 6e 75 6d 32 73 74 72 | str(kk).'.=.[.omc_list_'.num2str |
| 30bc0 | 28 6b 6b 29 20 27 20 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 5d 3b 27 5d 29 | (kk).'.omc_'.num2str(kk).'.];']) |
| 30be0 | 3b 0a 20 20 20 09 65 76 61 6c 28 5b 27 54 63 5f 6c 69 73 74 5f 27 20 6e 75 6d 32 73 74 72 28 6b | ;.....eval(['Tc_list_'.num2str(k |
| 30c00 | 6b 29 20 27 20 3d 20 5b 20 54 63 5f 6c 69 73 74 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 | k).'.=.[.Tc_list_'.num2str(kk).' |
| 30c20 | 20 54 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 5d 3b 27 5d 29 3b 0a 20 20 20 0a 09 | .Tc_'.num2str(kk).'.];']);...... |
| 30c40 | 65 6e 64 3b 0a 0a 65 6e 64 3b 0a 0a 0a 0a 0a 69 66 20 30 2c 0a 0a 25 20 52 65 73 74 6f 72 69 6e | end;..end;.....if.0,..%.Restorin |
| 30c60 | 67 20 74 68 65 20 66 65 61 74 75 72 65 20 6c 6f 63 61 74 69 6f 6e 73 3a 0a 0a 66 6f 72 20 6b 6b | g.the.feature.locations:..for.kk |
| 30c80 | 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 78 5f 27 20 6e 75 | .=.1:n_ima,........eval(['x_'.nu |
| 30ca0 | 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 78 5f 73 61 76 65 5f 27 20 6e 75 6d 32 73 74 72 28 6b | m2str(kk).'.=.x_save_'.num2str(k |
| 30cc0 | 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c | k).';']);.....end;..fprintf(1,'\ |
| 30ce0 | 6e 46 69 6e 61 6c 20 72 75 6e 20 28 77 69 74 68 20 74 68 65 20 72 65 61 6c 20 64 61 74 61 29 5c | nFinal.run.(with.the.real.data)\ |
| 30d00 | 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 20 20 27 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | n');.fprintf(1,..'-------------- |
| 30d20 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 27 29 3b 0a 0a 61 63 74 69 76 65 5f 69 6d | ----------------\n');..active_im |
| 30d40 | 61 67 65 73 20 3d 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 5f 73 61 76 65 3b 0a 69 6e 64 5f 61 | ages.=.active_images_save;.ind_a |
| 30d60 | 63 74 69 76 65 20 3d 20 69 6e 64 5f 61 63 74 69 76 65 5f 73 61 76 65 3b 0a 0a 67 6f 5f 63 61 6c | ctive.=.ind_active_save;..go_cal |
| 30d80 | 69 62 5f 6f 70 74 69 6d 3b 0a 20 20 20 0a 66 63 5f 6c 69 73 74 20 3d 20 5b 66 63 5f 6c 69 73 74 | ib_optim;.....fc_list.=.[fc_list |
| 30da0 | 20 66 63 5d 3b 0a 63 63 5f 6c 69 73 74 20 3d 20 5b 63 63 5f 6c 69 73 74 20 63 63 5d 3b 0a 6b 63 | .fc];.cc_list.=.[cc_list.cc];.kc |
| 30dc0 | 5f 6c 69 73 74 20 3d 20 5b 6b 63 5f 6c 69 73 74 20 6b 63 5d 3b 0a 61 63 74 69 76 65 5f 69 6d 61 | _list.=.[kc_list.kc];.active_ima |
| 30de0 | 67 65 73 5f 6c 69 73 74 20 3d 20 5b 61 63 74 69 76 65 5f 69 6d 61 67 65 73 5f 6c 69 73 74 20 61 | ges_list.=.[active_images_list.a |
| 30e00 | 63 74 69 76 65 5f 69 6d 61 67 65 73 27 5d 3b 0a 0a 66 6f 72 20 6b 6b 3d 31 3a 6e 5f 69 6d 61 2c | ctive_images'];..for.kk=1:n_ima, |
| 30e20 | 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 6f 6d 63 5f 6c 69 73 74 5f 27 20 6e 75 6d 32 73 74 | ........eval(['omc_list_'.num2st |
| 30e40 | 72 28 6b 6b 29 20 27 20 3d 20 5b 20 6f 6d 63 5f 6c 69 73 74 5f 27 20 6e 75 6d 32 73 74 72 28 6b | r(kk).'.=.[.omc_list_'.num2str(k |
| 30e60 | 6b 29 20 27 20 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 5d 3b 27 5d 29 3b 0a | k).'.omc_'.num2str(kk).'.];']);. |
| 30e80 | 20 20 20 65 76 61 6c 28 5b 27 54 63 5f 6c 69 73 74 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 | ...eval(['Tc_list_'.num2str(kk). |
| 30ea0 | 27 20 3d 20 5b 20 54 63 5f 6c 69 73 74 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 54 63 | '.=.[.Tc_list_'.num2str(kk).'.Tc |
| 30ec0 | 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 5d 3b 27 5d 29 3b 0a 20 20 20 0a 65 6e 64 3b | _'.num2str(kk).'.];']);.....end; |
| 30ee0 | 0a 0a 65 6e 64 3b 0a 0a 0a 0a 0a 0a 69 66 20 73 61 76 69 6e 67 2c 0a 20 20 20 0a 64 69 73 70 28 | ..end;......if.saving,.....disp( |
| 30f00 | 5b 27 53 61 76 65 20 43 61 6c 69 62 72 61 74 69 6f 6e 20 61 63 63 75 72 61 63 79 20 72 65 73 75 | ['Save.Calibration.accuracy.resu |
| 30f20 | 6c 74 73 20 75 6e 64 65 72 20 43 61 6c 69 62 5f 41 63 63 75 72 61 63 69 65 73 5f 27 20 6e 75 6d | lts.under.Calib_Accuracies_'.num |
| 30f40 | 32 73 74 72 28 4e 5f 69 6d 61 5f 61 63 74 69 76 65 29 20 27 2e 6d 61 74 27 5d 29 3b 0a 0a 73 74 | 2str(N_ima_active).'.mat']);..st |
| 30f60 | 72 69 6e 67 5f 73 61 76 65 20 3d 20 5b 27 73 61 76 65 20 43 61 6c 69 62 5f 41 63 63 75 72 61 63 | ring_save.=.['save.Calib_Accurac |
| 30f80 | 69 65 73 5f 27 20 6e 75 6d 32 73 74 72 28 4e 5f 69 6d 61 5f 61 63 74 69 76 65 29 20 27 20 61 63 | ies_'.num2str(N_ima_active).'.ac |
| 30fa0 | 74 69 76 65 5f 69 6d 61 67 65 73 20 6e 5f 69 6d 61 20 4e 5f 69 6d 61 5f 61 63 74 69 76 65 20 4e | tive_images.n_ima.N_ima_active.N |
| 30fc0 | 5f 72 75 6e 73 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 5f 6c 69 73 74 20 66 63 20 63 63 20 6b | _runs.active_images_list.fc.cc.k |
| 30fe0 | 63 20 66 63 5f 6c 69 73 74 20 63 63 5f 6c 69 73 74 20 6b 63 5f 6c 69 73 74 27 5d 3b 0a 0a 66 6f | c.fc_list.cc_list.kc_list'];..fo |
| 31000 | 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 73 74 72 69 6e 67 5f 73 61 76 65 20 3d | r.kk.=.1:n_ima,....string_save.= |
| 31020 | 20 5b 73 74 72 69 6e 67 5f 73 61 76 65 20 27 20 54 63 5f 6c 69 73 74 5f 27 20 6e 75 6d 32 73 74 | .[string_save.'.Tc_list_'.num2st |
| 31040 | 72 28 6b 6b 29 20 27 20 6f 6d 63 5f 6c 69 73 74 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 20 | r(kk).'.omc_list_'.num2str(kk).. |
| 31060 | 27 20 54 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 6f 6d 63 5f 27 20 6e 75 6d 32 73 | '.Tc_'.num2str(kk).'.omc_'.num2s |
| 31080 | 74 72 28 6b 6b 29 20 5d 3b 0a 65 6e 64 3b 0a 0a 65 76 61 6c 28 73 74 72 69 6e 67 5f 73 61 76 65 | tr(kk).];.end;..eval(string_save |
| 310a0 | 29 3b 0a 0a 65 6e 64 3b 0a 0a 0a 72 65 74 75 72 6e 3b 0a 0a 73 74 64 28 66 63 5f 6c 69 73 74 27 | );..end;...return;..std(fc_list' |
| 310c0 | 29 0a 0a 73 74 64 28 63 63 5f 6c 69 73 74 27 29 0a 0a 73 74 64 28 6b 63 5f 6c 69 73 74 27 29 0a | )..std(cc_list')..std(kc_list'). |
| 310e0 | 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b | .for.kk.=.1:n_ima,........eval([ |
| 31100 | 27 73 74 64 28 54 63 5f 6c 69 73 74 5f 27 20 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 27 27 29 | 'std(Tc_list_'..num2str(kk).''') |
| 31120 | 27 5d 29 0a 20 20 20 0a 65 6e 64 3b 0a 0a 0a 0a 0a 0a 25 20 41 64 64 20 64 69 73 74 6f 72 74 69 | ']).....end;......%.Add.distorti |
| 31140 | 6f 6e 3a 0a 0a 72 32 20 3d 20 78 28 31 2c 3a 29 2e 5e 32 20 2b 20 78 28 32 2c 3a 29 2e 5e 32 3b | on:..r2.=.x(1,:).^2.+.x(2,:).^2; |
| 31160 | 0a 0a 0a 0a 64 72 32 64 6f 6d 20 3d 20 32 2a 28 28 78 28 31 2c 3a 29 27 29 2a 6f 6e 65 73 28 31 | ....dr2dom.=.2*((x(1,:)')*ones(1 |
| 31180 | 2c 33 29 29 20 2e 2a 20 64 78 64 6f 6d 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 2b 20 32 2a 28 28 78 | ,3))..*.dxdom(1:2:end,:).+.2*((x |
| 311a0 | 28 32 2c 3a 29 27 29 2a 6f 6e 65 73 28 31 2c 33 29 29 20 2e 2a 20 64 78 64 6f 6d 28 32 3a 32 3a | (2,:)')*ones(1,3))..*.dxdom(2:2: |
| 311c0 | 65 6e 64 2c 3a 29 3b 0a 64 72 32 64 54 20 3d 20 32 2a 28 28 78 28 31 2c 3a 29 27 29 2a 6f 6e 65 | end,:);.dr2dT.=.2*((x(1,:)')*one |
| 311e0 | 73 28 31 2c 33 29 29 20 2e 2a 20 64 78 64 54 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 2b 20 32 2a 28 | s(1,3))..*.dxdT(1:2:end,:).+.2*( |
| 31200 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 6c 6f 61 64 69 6e 72 2e 6d 00 00 00 00 00 00 00 00 00 | TOOLBOX_calib/loadinr.m......... |
| 31220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31260 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 31280 | 20 20 20 32 30 30 35 20 20 37 30 32 34 30 33 37 33 33 35 20 20 31 30 32 32 34 00 20 00 00 00 00 | ...2005..7024037335..10224...... |
| 312a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 312c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 312e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 313a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 313c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 313e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31400 | 25 4c 4f 41 44 49 4e 52 09 4c 6f 61 64 20 61 6e 20 49 4e 52 49 4d 41 47 45 20 66 6f 72 6d 61 74 | %LOADINR.Load.an.INRIMAGE.format |
| 31420 | 20 66 69 6c 65 0a 25 0a 25 09 4c 4f 41 44 49 4e 52 28 66 69 6c 65 6e 61 6d 65 2c 20 69 6d 29 0a | .file.%.%.LOADINR(filename,.im). |
| 31440 | 25 0a 25 09 4c 6f 61 64 20 61 6e 20 49 4e 52 49 41 20 69 6d 61 67 65 20 66 6f 72 6d 61 74 20 66 | %.%.Load.an.INRIA.image.format.f |
| 31460 | 69 6c 65 20 61 6e 64 20 72 65 74 75 72 6e 20 69 74 20 61 73 20 61 20 6d 61 74 72 69 78 0a 25 0a | ile.and.return.it.as.a.matrix.%. |
| 31480 | 25 20 53 45 45 20 41 4c 53 4f 3a 09 73 61 76 65 69 6e 72 0a 25 0a 25 09 43 6f 70 79 72 69 67 68 | %.SEE.ALSO:.saveinr.%.%.Copyrigh |
| 314a0 | 74 20 28 63 29 20 50 65 74 65 72 20 43 6f 72 6b 65 2c 20 31 39 39 39 20 20 4d 61 63 68 69 6e 65 | t.(c).Peter.Corke,.1999..Machine |
| 314c0 | 20 56 69 73 69 6f 6e 20 54 6f 6f 6c 62 6f 78 20 66 6f 72 20 4d 61 74 6c 61 62 0a 0a 0a 25 20 50 | .Vision.Toolbox.for.Matlab...%.P |
| 314e0 | 65 74 65 72 20 43 6f 72 6b 65 20 31 39 39 36 0a 0a 66 75 6e 63 74 69 6f 6e 20 69 6d 20 3d 20 6c | eter.Corke.1996..function.im.=.l |
| 31500 | 6f 61 64 69 6e 72 28 66 6e 61 6d 65 2c 20 69 6d 29 0a 0a 09 66 69 64 20 3d 20 66 6f 70 65 6e 28 | oadinr(fname,.im)...fid.=.fopen( |
| 31520 | 66 6e 61 6d 65 2c 20 27 72 27 29 3b 0a 0a 09 73 20 3d 20 66 67 65 74 73 28 66 69 64 29 3b 0a 09 | fname,.'r');...s.=.fgets(fid);.. |
| 31540 | 69 66 20 73 74 72 63 6d 70 28 73 28 31 3a 31 32 29 2c 20 27 23 49 4e 52 49 4d 41 47 45 2d 34 23 | if.strcmp(s(1:12),.'#INRIMAGE-4# |
| 31560 | 27 29 20 3d 3d 20 30 2c 0a 09 09 65 72 72 6f 72 28 27 6e 6f 74 20 49 4e 52 49 4d 41 47 45 20 66 | ').==.0,...error('not.INRIMAGE.f |
| 31580 | 6f 72 6d 61 74 27 29 3b 0a 09 65 6e 64 0a 0a 09 25 20 6e 6f 74 20 76 65 72 79 20 63 6f 6d 70 6c | ormat');..end...%.not.very.compl |
| 315a0 | 65 74 65 2c 20 6f 6e 6c 79 20 6c 6f 6f 6b 73 20 66 6f 72 20 74 68 65 20 58 2f 59 44 49 4d 20 6b | ete,.only.looks.for.the.X/YDIM.k |
| 315c0 | 65 79 73 0a 09 77 68 69 6c 65 20 31 2c 0a 09 09 73 20 3d 20 66 67 65 74 73 28 66 69 64 29 3b 0a | eys..while.1,...s.=.fgets(fid);. |
| 315e0 | 09 09 6e 20 3d 20 6c 65 6e 67 74 68 28 73 29 20 2d 20 31 3b 0a 09 09 69 66 20 73 28 31 29 20 3d | ..n.=.length(s).-.1;...if.s(1).= |
| 31600 | 3d 20 27 23 27 2c 0a 09 09 09 62 72 65 61 6b 0a 09 09 65 6e 64 0a 09 09 69 66 20 73 74 72 63 6d | =.'#',....break...end...if.strcm |
| 31620 | 70 28 73 28 31 3a 35 29 2c 20 27 58 44 49 4d 3d 27 29 2c 0a 09 09 09 63 6f 6c 73 20 3d 20 73 74 | p(s(1:5),.'XDIM='),....cols.=.st |
| 31640 | 72 32 6e 75 6d 28 73 28 36 3a 6e 29 29 3b 0a 09 09 65 6e 64 0a 09 09 69 66 20 73 74 72 63 6d 70 | r2num(s(6:n));...end...if.strcmp |
| 31660 | 28 73 28 31 3a 35 29 2c 20 27 59 44 49 4d 3d 27 29 2c 0a 09 09 09 72 6f 77 73 20 3d 20 73 74 72 | (s(1:5),.'YDIM='),....rows.=.str |
| 31680 | 32 6e 75 6d 28 73 28 36 3a 6e 29 29 3b 0a 09 09 65 6e 64 0a 09 09 69 66 20 73 74 72 63 6d 70 28 | 2num(s(6:n));...end...if.strcmp( |
| 316a0 | 73 28 31 3a 34 29 2c 20 27 43 50 55 3d 27 29 2c 0a 09 09 09 69 66 20 73 74 72 63 6d 70 28 73 28 | s(1:4),.'CPU='),....if.strcmp(s( |
| 316c0 | 35 3a 6e 29 2c 20 27 73 75 6e 27 29 20 3d 3d 20 30 2c 0a 09 09 09 09 65 72 72 6f 72 28 27 6e 6f | 5:n),.'sun').==.0,.....error('no |
| 316e0 | 74 20 73 75 6e 20 64 61 74 61 20 6f 72 64 65 72 69 6e 67 27 29 3b 0a 09 09 09 65 6e 64 0a 09 09 | t.sun.data.ordering');....end... |
| 31700 | 65 6e 64 0a 09 09 0a 09 65 6e 64 0a 09 64 69 73 70 28 5b 27 49 4e 52 49 4d 41 47 45 20 66 6f 72 | end.....end..disp(['INRIMAGE.for |
| 31720 | 6d 61 74 20 66 69 6c 65 20 27 20 6e 75 6d 32 73 74 72 28 72 6f 77 73 29 20 27 20 78 20 27 20 6e | mat.file.'.num2str(rows).'.x.'.n |
| 31740 | 75 6d 32 73 74 72 28 63 6f 6c 73 29 5d 29 0a 0a 09 25 20 6e 6f 77 20 74 68 65 20 62 69 6e 61 72 | um2str(cols)])...%.now.the.binar |
| 31760 | 79 20 64 61 74 61 0a 09 66 73 65 65 6b 28 66 69 64 2c 20 32 35 36 2c 20 27 62 6f 66 27 29 3b 0a | y.data..fseek(fid,.256,.'bof');. |
| 31780 | 09 5b 69 6d 20 63 6f 75 6e 74 5d 20 3d 20 66 72 65 61 64 28 66 69 64 2c 20 5b 63 6f 6c 73 20 72 | .[im.count].=.fread(fid,.[cols.r |
| 317a0 | 6f 77 73 5d 2c 20 27 66 6c 6f 61 74 33 32 27 29 3b 0a 09 69 6d 20 3d 20 69 6d 27 3b 0a 09 69 66 | ows],.'float32');..im.=.im';..if |
| 317c0 | 20 63 6f 75 6e 74 20 7e 3d 20 28 72 6f 77 73 2a 63 6f 6c 73 29 2c 0a 09 09 65 72 72 6f 72 28 27 | .count.~=.(rows*cols),...error(' |
| 317e0 | 66 69 6c 65 20 74 6f 6f 20 73 68 6f 72 74 27 29 3b 0a 09 65 6e 64 0a 09 66 63 6c 6f 73 65 28 66 | file.too.short');..end..fclose(f |
| 31800 | 69 64 29 3b 0a 31 2c 27 5c 6e 52 75 6e 20 6e 75 6d 62 65 72 3a 20 25 64 5c 6e 27 2c 6e 74 72 69 | id);.1,'\nRun.number:.%d\n',ntri |
| 31820 | 61 6c 29 3b 0a 20 20 20 66 70 72 69 6e 74 66 28 31 2c 20 20 27 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c | al);....fprintf(1,..'----------\ |
| 31840 | 6e 27 29 3b 0a 20 20 20 0a 20 20 20 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 | n');........for.kk.=.1:n_ima,... |
| 31860 | 20 20 20 20 0a 20 20 20 20 20 20 65 76 61 6c 28 5b 27 79 5f 6b 6b 20 3d 20 79 5f 73 61 76 65 5f | ...........eval(['y_kk.=.y_save_ |
| 31880 | 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 0a 20 20 20 20 20 20 0a 20 20 20 20 20 | '.num2str(kk).';'])............. |
| 318a0 | 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 20 26 20 7e 69 73 6e 61 6e 28 79 | .if.active_images(kk).&.~isnan(y |
| 318c0 | 5f 6b 6b 28 31 2c 31 29 29 2c 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 4e 6b | _kk(1,1)),....................Nk |
| 318e0 | 6b 20 3d 20 73 69 7a 65 28 79 5f 6b 6b 2c 32 29 3b 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 | k.=.size(y_kk,2);............... |
| 31900 | 20 20 20 20 20 78 5f 6b 6b 5f 6e 65 77 20 3d 20 79 5f 6b 6b 20 2b 20 5b 73 78 20 2a 20 72 61 6e | .....x_kk_new.=.y_kk.+.[sx.*.ran |
| 31920 | 64 6e 28 31 2c 4e 6b 6b 29 3b 73 79 2a 72 61 6e 64 6e 28 31 2c 4e 6b 6b 29 5d 3b 0a 20 20 20 20 | dn(1,Nkk);sy*randn(1,Nkk)];..... |
| 31940 | 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 65 76 61 6c 28 5b 27 78 5f 27 20 6e 75 6d 32 73 74 | ...............eval(['x_'.num2st |
| 31960 | 72 28 6b 6b 29 20 27 20 3d 20 78 5f 6b 6b 5f 6e 65 77 3b 27 5d 29 3b 0a 20 20 20 20 20 20 20 20 | r(kk).'.=.x_kk_new;']);......... |
| 31980 | 20 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a | ........end;...........end;..... |
| 319a0 | 20 20 20 4e 5f 61 63 74 69 76 65 20 3d 20 6c 65 6e 67 74 68 28 69 6e 64 5f 61 63 74 69 76 65 5f | ...N_active.=.length(ind_active_ |
| 319c0 | 73 61 76 65 29 3b 0a 20 20 20 6a 75 6e 6b 20 3d 20 72 61 6e 64 6e 28 31 2c 4e 5f 61 63 74 69 76 | save);....junk.=.randn(1,N_activ |
| 319e0 | 65 29 3b 0a 20 20 20 5b 6a 75 6e 6b 2c 6a 75 6e 6b 32 5d 20 3d 20 73 6f 72 74 28 6a 75 6e 6b 29 | e);....[junk,junk2].=.sort(junk) |
| 31a00 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 6c 6f 61 64 70 67 6d 2e 6d 00 00 00 00 00 00 00 00 00 | TOOLBOX_calib/loadpgm.m......... |
| 31a20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31a40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31a60 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 31a80 | 20 20 20 33 34 35 34 20 20 37 30 32 34 30 33 37 33 33 36 20 20 31 30 32 33 31 00 20 00 00 00 00 | ...3454..7024037336..10231...... |
| 31aa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31ac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31ae0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31b00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31b20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31b40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31b60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31b80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31ba0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31bc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31be0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31c00 | 25 4c 4f 41 44 50 47 4d 09 4c 6f 61 64 20 61 20 50 47 4d 20 69 6d 61 67 65 0a 25 0a 25 09 49 20 | %LOADPGM.Load.a.PGM.image.%.%.I. |
| 31c20 | 3d 20 6c 6f 61 64 70 67 6d 28 66 69 6c 65 6e 61 6d 65 29 0a 25 0a 25 09 52 65 74 75 72 6e 73 20 | =.loadpgm(filename).%.%.Returns. |
| 31c40 | 61 20 6d 61 74 72 69 78 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 69 6d 61 67 65 20 6c 6f | a.matrix.containing.the.image.lo |
| 31c60 | 61 64 65 64 20 66 72 6f 6d 20 74 68 65 20 50 47 4d 20 66 6f 72 6d 61 74 0a 25 09 66 69 6c 65 20 | aded.from.the.PGM.format.%.file. |
| 31c80 | 66 69 6c 65 6e 61 6d 65 2e 20 20 48 61 6e 64 6c 65 73 20 41 53 43 49 49 20 28 50 32 29 20 61 6e | filename...Handles.ASCII.(P2).an |
| 31ca0 | 64 20 62 69 6e 61 72 79 20 28 50 35 29 20 50 47 4d 20 66 69 6c 65 20 66 6f 72 6d 61 74 73 2e 0a | d.binary.(P5).PGM.file.formats.. |
| 31cc0 | 25 0a 25 09 49 66 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 20 68 61 73 20 6e 6f 20 65 78 74 65 6e | %.%.If.the.filename.has.no.exten |
| 31ce0 | 73 69 6f 6e 2c 20 61 6e 64 20 6f 70 65 6e 20 66 61 69 6c 73 2c 20 61 20 27 2e 70 67 6d 27 20 77 | sion,.and.open.fails,.a.'.pgm'.w |
| 31d00 | 69 6c 6c 0a 25 09 62 65 20 61 70 70 65 6e 64 65 64 2e 0a 25 0a 25 0a 25 09 43 6f 70 79 72 69 67 | ill.%.be.appended..%.%.%.Copyrig |
| 31d20 | 68 74 20 28 63 29 20 50 65 74 65 72 20 43 6f 72 6b 65 2c 20 31 39 39 39 20 20 4d 61 63 68 69 6e | ht.(c).Peter.Corke,.1999..Machin |
| 31d40 | 65 20 56 69 73 69 6f 6e 20 54 6f 6f 6c 62 6f 78 20 66 6f 72 20 4d 61 74 6c 61 62 0a 0a 0a 25 20 | e.Vision.Toolbox.for.Matlab...%. |
| 31d60 | 50 65 74 65 72 20 43 6f 72 6b 65 20 31 39 39 34 0a 0a 66 75 6e 63 74 69 6f 6e 20 49 20 3d 20 6c | Peter.Corke.1994..function.I.=.l |
| 31d80 | 6f 61 64 70 67 6d 28 66 69 6c 65 29 0a 09 77 68 69 74 65 20 3d 20 5b 27 20 27 20 39 20 31 30 20 | oadpgm(file)..white.=.['.'.9.10. |
| 31da0 | 31 33 5d 3b 09 25 20 73 70 61 63 65 2c 20 74 61 62 2c 20 6c 66 2c 20 63 72 0a 09 77 68 69 74 65 | 13];.%.space,.tab,.lf,.cr..white |
| 31dc0 | 20 3d 20 73 65 74 73 74 72 28 77 68 69 74 65 29 3b 0a 0a 09 66 69 64 20 3d 20 66 6f 70 65 6e 28 | .=.setstr(white);...fid.=.fopen( |
| 31de0 | 66 69 6c 65 2c 20 27 72 27 29 3b 0a 09 69 66 20 66 69 64 20 3c 20 30 2c 0a 09 09 66 69 64 20 3d | file,.'r');..if.fid.<.0,...fid.= |
| 31e00 | 20 66 6f 70 65 6e 28 5b 66 69 6c 65 20 27 2e 70 67 6d 27 5d 2c 20 27 72 27 29 3b 0a 09 65 6e 64 | .fopen([file.'.pgm'],.'r');..end |
| 31e20 | 0a 09 69 66 20 66 69 64 20 3c 20 30 2c 0a 09 09 65 72 72 6f 72 28 27 43 6f 75 6c 64 6e 27 27 74 | ..if.fid.<.0,...error('Couldn''t |
| 31e40 | 20 6f 70 65 6e 20 66 69 6c 65 27 29 3b 0a 09 65 6e 64 0a 09 09 0a 09 6d 61 67 69 63 20 3d 20 66 | .open.file');..end.....magic.=.f |
| 31e60 | 72 65 61 64 28 66 69 64 2c 20 32 2c 20 27 63 68 61 72 27 29 3b 0a 09 77 68 69 6c 65 20 31 0a 09 | read(fid,.2,.'char');..while.1.. |
| 31e80 | 09 63 20 3d 20 66 72 65 61 64 28 66 69 64 2c 31 2c 27 63 68 61 72 27 29 3b 0a 09 09 69 66 20 63 | .c.=.fread(fid,1,'char');...if.c |
| 31ea0 | 20 3d 3d 20 27 23 27 2c 0a 09 09 09 66 67 65 74 6c 28 66 69 64 29 3b 0a 09 09 65 6c 73 65 69 66 | .==.'#',....fgetl(fid);...elseif |
| 31ec0 | 20 7e 61 6e 79 28 63 20 3d 3d 20 77 68 69 74 65 29 0a 09 09 09 66 73 65 65 6b 28 66 69 64 2c 20 | .~any(c.==.white)....fseek(fid,. |
| 31ee0 | 2d 31 2c 20 27 63 6f 66 27 29 3b 09 25 20 75 6e 70 75 74 63 28 29 0a 09 09 09 62 72 65 61 6b 3b | -1,.'cof');.%.unputc()....break; |
| 31f00 | 0a 09 09 65 6e 64 0a 09 65 6e 64 0a 09 63 6f 6c 73 20 3d 20 66 73 63 61 6e 66 28 66 69 64 2c 20 | ...end..end..cols.=.fscanf(fid,. |
| 31f20 | 27 25 64 27 2c 20 31 29 3b 0a 09 77 68 69 6c 65 20 31 0a 09 09 63 20 3d 20 66 72 65 61 64 28 66 | '%d',.1);..while.1...c.=.fread(f |
| 31f40 | 69 64 2c 31 2c 27 63 68 61 72 27 29 3b 0a 09 09 69 66 20 63 20 3d 3d 20 27 23 27 2c 0a 09 09 09 | id,1,'char');...if.c.==.'#',.... |
| 31f60 | 66 67 65 74 6c 28 66 69 64 29 3b 0a 09 09 65 6c 73 65 69 66 20 7e 61 6e 79 28 63 20 3d 3d 20 77 | fgetl(fid);...elseif.~any(c.==.w |
| 31f80 | 68 69 74 65 29 0a 09 09 09 66 73 65 65 6b 28 66 69 64 2c 20 2d 31 2c 20 27 63 6f 66 27 29 3b 09 | hite)....fseek(fid,.-1,.'cof');. |
| 31fa0 | 25 20 75 6e 70 75 74 63 28 29 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 65 6e 64 0a 09 65 6e 64 0a | %.unputc()....break;...end..end. |
| 31fc0 | 09 72 6f 77 73 20 3d 20 66 73 63 61 6e 66 28 66 69 64 2c 20 27 25 64 27 2c 20 31 29 3b 0a 09 77 | .rows.=.fscanf(fid,.'%d',.1);..w |
| 31fe0 | 68 69 6c 65 20 31 0a 09 09 63 20 3d 20 66 72 65 61 64 28 66 69 64 2c 31 2c 27 63 68 61 72 27 29 | hile.1...c.=.fread(fid,1,'char') |
| 32000 | 3b 0a 09 09 69 66 20 63 20 3d 3d 20 27 23 27 2c 0a 09 09 09 66 67 65 74 6c 28 66 69 64 29 3b 0a | ;...if.c.==.'#',....fgetl(fid);. |
| 32020 | 09 09 65 6c 73 65 69 66 20 7e 61 6e 79 28 63 20 3d 3d 20 77 68 69 74 65 29 0a 09 09 09 66 73 65 | ..elseif.~any(c.==.white)....fse |
| 32040 | 65 6b 28 66 69 64 2c 20 2d 31 2c 20 27 63 6f 66 27 29 3b 09 25 20 75 6e 70 75 74 63 28 29 0a 09 | ek(fid,.-1,.'cof');.%.unputc().. |
| 32060 | 09 09 62 72 65 61 6b 3b 0a 09 09 65 6e 64 0a 09 65 6e 64 0a 09 6d 61 78 76 61 6c 20 3d 20 66 73 | ..break;...end..end..maxval.=.fs |
| 32080 | 63 61 6e 66 28 66 69 64 2c 20 27 25 64 27 2c 20 31 29 3b 0a 09 77 68 69 6c 65 20 31 0a 09 09 63 | canf(fid,.'%d',.1);..while.1...c |
| 320a0 | 20 3d 20 66 72 65 61 64 28 66 69 64 2c 31 2c 27 63 68 61 72 27 29 3b 0a 09 09 69 66 20 63 20 3d | .=.fread(fid,1,'char');...if.c.= |
| 320c0 | 3d 20 27 23 27 2c 0a 09 09 09 66 67 65 74 6c 28 66 69 64 29 3b 0a 09 09 65 6c 73 65 69 66 20 7e | =.'#',....fgetl(fid);...elseif.~ |
| 320e0 | 61 6e 79 28 63 20 3d 3d 20 77 68 69 74 65 29 0a 09 09 09 66 73 65 65 6b 28 66 69 64 2c 20 2d 31 | any(c.==.white)....fseek(fid,.-1 |
| 32100 | 2c 20 27 63 6f 66 27 29 3b 09 25 20 75 6e 70 75 74 63 28 29 0a 09 09 09 62 72 65 61 6b 3b 0a 09 | ,.'cof');.%.unputc()....break;.. |
| 32120 | 09 65 6e 64 0a 09 65 6e 64 0a 09 69 66 20 6d 61 67 69 63 28 31 29 20 3d 3d 20 27 50 27 2c 0a 09 | .end..end..if.magic(1).==.'P',.. |
| 32140 | 09 69 66 20 6d 61 67 69 63 28 32 29 20 3d 3d 20 27 32 27 2c 0a 09 09 09 64 69 73 70 28 5b 27 41 | .if.magic(2).==.'2',....disp(['A |
| 32160 | 53 43 49 49 20 50 47 4d 20 66 69 6c 65 20 27 20 6e 75 6d 32 73 74 72 28 72 6f 77 73 29 20 27 20 | SCII.PGM.file.'.num2str(rows).'. |
| 32180 | 78 20 27 20 6e 75 6d 32 73 74 72 28 63 6f 6c 73 29 5d 29 0a 09 09 09 49 20 3d 20 66 73 63 61 6e | x.'.num2str(cols)])....I.=.fscan |
| 321a0 | 66 28 66 69 64 2c 20 27 25 64 27 2c 20 5b 63 6f 6c 73 20 72 6f 77 73 5d 29 27 3b 0a 09 09 65 6c | f(fid,.'%d',.[cols.rows])';...el |
| 321c0 | 73 65 69 66 20 6d 61 67 69 63 28 32 29 20 3d 3d 20 27 35 27 2c 0a 09 09 09 64 69 73 70 28 5b 27 | seif.magic(2).==.'5',....disp([' |
| 321e0 | 42 69 6e 61 72 79 20 50 47 4d 20 66 69 6c 65 20 27 20 6e 75 6d 32 73 74 72 28 72 6f 77 73 29 20 | Binary.PGM.file.'.num2str(rows). |
| 32200 | 27 20 78 20 27 20 6e 75 6d 32 73 74 72 28 63 6f 6c 73 29 5d 29 0a 09 09 09 69 66 20 6d 61 78 76 | '.x.'.num2str(cols)])....if.maxv |
| 32220 | 61 6c 20 3d 3d 20 31 2c 0a 09 09 09 09 66 6d 74 20 3d 20 27 75 6e 69 6e 74 31 27 3b 0a 09 09 09 | al.==.1,.....fmt.=.'unint1';.... |
| 32240 | 65 6c 73 65 69 66 20 6d 61 78 76 61 6c 20 3d 3d 20 31 35 2c 0a 09 09 09 09 66 6d 74 20 3d 20 27 | elseif.maxval.==.15,.....fmt.=.' |
| 32260 | 75 69 6e 74 34 27 3b 0a 09 09 09 65 6c 73 65 69 66 20 6d 61 78 76 61 6c 20 3d 3d 20 32 35 35 2c | uint4';....elseif.maxval.==.255, |
| 32280 | 0a 09 09 09 09 66 6d 74 20 3d 20 27 75 69 6e 74 38 27 3b 0a 09 09 09 65 6c 73 65 69 66 20 6d 61 | .....fmt.=.'uint8';....elseif.ma |
| 322a0 | 78 76 61 6c 20 3d 3d 20 32 5e 33 32 2d 31 2c 0a 09 09 09 09 66 6d 74 20 3d 20 27 75 69 6e 74 33 | xval.==.2^32-1,.....fmt.=.'uint3 |
| 322c0 | 32 27 3b 0a 09 09 09 65 6e 64 0a 09 09 09 49 20 3d 20 66 72 65 61 64 28 66 69 64 2c 20 5b 63 6f | 2';....end....I.=.fread(fid,.[co |
| 322e0 | 6c 73 20 72 6f 77 73 5d 2c 20 66 6d 74 29 27 3b 0a 09 09 65 6c 73 65 0a 09 09 09 64 69 73 70 28 | ls.rows],.fmt)';...else....disp( |
| 32300 | 27 4e 6f 74 20 61 20 50 47 4d 20 66 69 6c 65 27 29 3b 0a 09 09 65 6e 64 0a 09 65 6e 64 0a 09 66 | 'Not.a.PGM.file');...end..end..f |
| 32320 | 63 6c 6f 73 65 28 66 69 64 29 3b 0a 68 69 6c 65 20 31 0a 09 09 63 20 3d 20 66 72 65 61 64 28 66 | close(fid);.hile.1...c.=.fread(f |
| 32340 | 69 64 2c 31 2c 27 63 68 61 72 27 29 3b 0a 09 09 69 66 20 63 20 3d 3d 20 27 23 27 2c 0a 09 09 09 | id,1,'char');...if.c.==.'#',.... |
| 32360 | 66 67 65 74 6c 28 66 69 64 29 3b 0a 09 09 65 6c 73 65 69 66 20 7e 61 6e 79 28 63 20 3d 3d 20 77 | fgetl(fid);...elseif.~any(c.==.w |
| 32380 | 68 69 74 65 29 0a 09 09 09 66 73 65 65 6b 28 66 69 64 2c 20 2d 31 2c 20 27 63 6f 66 27 29 3b 09 | hite)....fseek(fid,.-1,.'cof');. |
| 323a0 | 25 20 75 6e 70 75 74 63 28 29 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 65 6e 64 0a 09 65 6e 64 0a | %.unputc()....break;...end..end. |
| 323c0 | 09 72 6f 77 73 20 3d 20 66 73 63 61 6e 66 28 66 69 64 2c 20 27 25 64 27 2c 20 31 29 3b 0a 09 77 | .rows.=.fscanf(fid,.'%d',.1);..w |
| 323e0 | 68 69 6c 65 20 31 0a 09 09 63 20 3d 20 66 72 65 61 64 28 66 69 64 2c 31 2c 27 63 68 61 72 27 29 | hile.1...c.=.fread(fid,1,'char') |
| 32400 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 6c 6f 61 64 70 70 6d 2e 6d 00 00 00 00 00 00 00 00 00 | TOOLBOX_calib/loadppm.m......... |
| 32420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 32440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 32460 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 32480 | 20 20 20 34 30 36 32 20 20 37 30 32 34 30 33 37 33 33 36 20 20 31 30 32 33 36 00 20 00 00 00 00 | ...4062..7024037336..10236...... |
| 324a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 324c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 324e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 32500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 32520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 32540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 32560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 32580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 325a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 325c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 325e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 32600 | 25 4c 4f 41 44 50 50 4d 09 4c 6f 61 64 20 61 20 50 50 4d 20 69 6d 61 67 65 0a 25 0a 25 09 5b 52 | %LOADPPM.Load.a.PPM.image.%.%.[R |
| 32620 | 2c 47 2c 42 5d 20 3d 20 6c 6f 61 64 70 70 6d 28 66 69 6c 65 6e 61 6d 65 29 0a 25 0a 25 09 52 65 | ,G,B].=.loadppm(filename).%.%.Re |
| 32640 | 74 75 72 6e 73 20 61 20 6d 61 74 72 69 78 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 69 6d | turns.a.matrix.containing.the.im |
| 32660 | 61 67 65 20 6c 6f 61 64 65 64 20 66 72 6f 6d 20 74 68 65 20 50 50 4d 20 66 6f 72 6d 61 74 0a 25 | age.loaded.from.the.PPM.format.% |
| 32680 | 09 66 69 6c 65 20 66 69 6c 65 6e 61 6d 65 2e 20 20 48 61 6e 64 6c 65 73 20 41 53 43 49 49 20 28 | .file.filename...Handles.ASCII.( |
| 326a0 | 50 33 29 20 61 6e 64 20 62 69 6e 61 72 79 20 28 50 36 29 20 50 50 4d 20 66 69 6c 65 20 66 6f 72 | P3).and.binary.(P6).PPM.file.for |
| 326c0 | 6d 61 74 73 2e 0a 25 0a 25 09 49 66 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 20 68 61 73 20 6e 6f | mats..%.%.If.the.filename.has.no |
| 326e0 | 20 65 78 74 65 6e 73 69 6f 6e 2c 20 61 6e 64 20 6f 70 65 6e 20 66 61 69 6c 73 2c 20 61 20 27 2e | .extension,.and.open.fails,.a.'. |
| 32700 | 70 70 6d 27 20 61 6e 64 0a 25 09 27 2e 70 6e 6d 27 20 65 78 74 65 6e 73 69 6f 6e 20 77 69 6c 6c | ppm'.and.%.'.pnm'.extension.will |
| 32720 | 20 62 65 20 74 72 69 65 64 2e 0a 25 0a 25 20 53 45 45 20 41 4c 53 4f 3a 09 73 61 76 65 70 70 6d | .be.tried..%.%.SEE.ALSO:.saveppm |
| 32740 | 20 6c 6f 61 64 70 67 6d 0a 25 0a 25 09 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 50 65 74 65 72 | .loadpgm.%.%.Copyright.(c).Peter |
| 32760 | 20 43 6f 72 6b 65 2c 20 31 39 39 39 20 20 4d 61 63 68 69 6e 65 20 56 69 73 69 6f 6e 20 54 6f 6f | .Corke,.1999..Machine.Vision.Too |
| 32780 | 6c 62 6f 78 20 66 6f 72 20 4d 61 74 6c 61 62 0a 0a 0a 25 20 50 65 74 65 72 20 43 6f 72 6b 65 20 | lbox.for.Matlab...%.Peter.Corke. |
| 327a0 | 31 39 39 34 0a 0a 66 75 6e 63 74 69 6f 6e 20 5b 52 2c 47 2c 42 5d 20 3d 20 6c 6f 61 64 70 70 6d | 1994..function.[R,G,B].=.loadppm |
| 327c0 | 28 66 69 6c 65 29 0a 09 77 68 69 74 65 20 3d 20 5b 27 20 27 20 39 20 31 30 20 31 33 5d 3b 09 25 | (file)..white.=.['.'.9.10.13];.% |
| 327e0 | 20 73 70 61 63 65 2c 20 74 61 62 2c 20 6c 66 2c 20 63 72 0a 09 77 68 69 74 65 20 3d 20 73 65 74 | .space,.tab,.lf,.cr..white.=.set |
| 32800 | 73 74 72 28 77 68 69 74 65 29 3b 0a 0a 09 66 69 64 20 3d 20 66 6f 70 65 6e 28 66 69 6c 65 2c 20 | str(white);...fid.=.fopen(file,. |
| 32820 | 27 72 27 29 3b 0a 09 69 66 20 66 69 64 20 3c 20 30 2c 0a 09 09 66 69 64 20 3d 20 66 6f 70 65 6e | 'r');..if.fid.<.0,...fid.=.fopen |
| 32840 | 28 5b 66 69 6c 65 20 27 2e 70 70 6d 27 5d 2c 20 27 72 27 29 3b 0a 09 65 6e 64 0a 09 69 66 20 66 | ([file.'.ppm'],.'r');..end..if.f |
| 32860 | 69 64 20 3c 20 30 2c 0a 09 09 66 69 64 20 3d 20 66 6f 70 65 6e 28 5b 66 69 6c 65 20 27 2e 70 6e | id.<.0,...fid.=.fopen([file.'.pn |
| 32880 | 6d 27 5d 2c 20 27 72 27 29 3b 0a 09 65 6e 64 0a 09 69 66 20 66 69 64 20 3c 20 30 2c 0a 09 09 65 | m'],.'r');..end..if.fid.<.0,...e |
| 328a0 | 72 72 6f 72 28 27 43 6f 75 6c 64 6e 27 27 74 20 6f 70 65 6e 20 66 69 6c 65 27 29 3b 0a 09 65 6e | rror('Couldn''t.open.file');..en |
| 328c0 | 64 0a 09 09 0a 09 6d 61 67 69 63 20 3d 20 66 72 65 61 64 28 66 69 64 2c 20 32 2c 20 27 63 68 61 | d.....magic.=.fread(fid,.2,.'cha |
| 328e0 | 72 27 29 3b 0a 09 77 68 69 6c 65 20 31 0a 09 09 63 20 3d 20 66 72 65 61 64 28 66 69 64 2c 31 2c | r');..while.1...c.=.fread(fid,1, |
| 32900 | 27 63 68 61 72 27 29 3b 0a 09 09 69 66 20 63 20 3d 3d 20 27 23 27 2c 0a 09 09 09 66 67 65 74 6c | 'char');...if.c.==.'#',....fgetl |
| 32920 | 28 66 69 64 29 3b 0a 09 09 65 6c 73 65 69 66 20 7e 61 6e 79 28 63 20 3d 3d 20 77 68 69 74 65 29 | (fid);...elseif.~any(c.==.white) |
| 32940 | 0a 09 09 09 66 73 65 65 6b 28 66 69 64 2c 20 2d 31 2c 20 27 63 6f 66 27 29 3b 09 25 20 75 6e 70 | ....fseek(fid,.-1,.'cof');.%.unp |
| 32960 | 75 74 63 28 29 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 65 6e 64 0a 09 65 6e 64 0a 09 63 6f 6c 73 | utc()....break;...end..end..cols |
| 32980 | 20 3d 20 66 73 63 61 6e 66 28 66 69 64 2c 20 27 25 64 27 2c 20 31 29 3b 0a 09 77 68 69 6c 65 20 | .=.fscanf(fid,.'%d',.1);..while. |
| 329a0 | 31 0a 09 09 63 20 3d 20 66 72 65 61 64 28 66 69 64 2c 31 2c 27 63 68 61 72 27 29 3b 0a 09 09 69 | 1...c.=.fread(fid,1,'char');...i |
| 329c0 | 66 20 63 20 3d 3d 20 27 23 27 2c 0a 09 09 09 66 67 65 74 6c 28 66 69 64 29 3b 0a 09 09 65 6c 73 | f.c.==.'#',....fgetl(fid);...els |
| 329e0 | 65 69 66 20 7e 61 6e 79 28 63 20 3d 3d 20 77 68 69 74 65 29 0a 09 09 09 66 73 65 65 6b 28 66 69 | eif.~any(c.==.white)....fseek(fi |
| 32a00 | 64 2c 20 2d 31 2c 20 27 63 6f 66 27 29 3b 09 25 20 75 6e 70 75 74 63 28 29 0a 09 09 09 62 72 65 | d,.-1,.'cof');.%.unputc()....bre |
| 32a20 | 61 6b 3b 0a 09 09 65 6e 64 0a 09 65 6e 64 0a 09 72 6f 77 73 20 3d 20 66 73 63 61 6e 66 28 66 69 | ak;...end..end..rows.=.fscanf(fi |
| 32a40 | 64 2c 20 27 25 64 27 2c 20 31 29 3b 0a 09 77 68 69 6c 65 20 31 0a 09 09 63 20 3d 20 66 72 65 61 | d,.'%d',.1);..while.1...c.=.frea |
| 32a60 | 64 28 66 69 64 2c 31 2c 27 63 68 61 72 27 29 3b 0a 09 09 69 66 20 63 20 3d 3d 20 27 23 27 2c 0a | d(fid,1,'char');...if.c.==.'#',. |
| 32a80 | 09 09 09 66 67 65 74 6c 28 66 69 64 29 3b 0a 09 09 65 6c 73 65 69 66 20 7e 61 6e 79 28 63 20 3d | ...fgetl(fid);...elseif.~any(c.= |
| 32aa0 | 3d 20 77 68 69 74 65 29 0a 09 09 09 66 73 65 65 6b 28 66 69 64 2c 20 2d 31 2c 20 27 63 6f 66 27 | =.white)....fseek(fid,.-1,.'cof' |
| 32ac0 | 29 3b 09 25 20 75 6e 70 75 74 63 28 29 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 65 6e 64 0a 09 65 | );.%.unputc()....break;...end..e |
| 32ae0 | 6e 64 0a 09 6d 61 78 76 61 6c 20 3d 20 66 73 63 61 6e 66 28 66 69 64 2c 20 27 25 64 27 2c 20 31 | nd..maxval.=.fscanf(fid,.'%d',.1 |
| 32b00 | 29 3b 0a 09 77 68 69 6c 65 20 31 0a 09 09 63 20 3d 20 66 72 65 61 64 28 66 69 64 2c 31 2c 27 63 | );..while.1...c.=.fread(fid,1,'c |
| 32b20 | 68 61 72 27 29 3b 0a 09 09 69 66 20 63 20 3d 3d 20 27 23 27 2c 0a 09 09 09 66 67 65 74 6c 28 66 | har');...if.c.==.'#',....fgetl(f |
| 32b40 | 69 64 29 3b 0a 09 09 65 6c 73 65 69 66 20 7e 61 6e 79 28 63 20 3d 3d 20 77 68 69 74 65 29 0a 09 | id);...elseif.~any(c.==.white).. |
| 32b60 | 09 09 66 73 65 65 6b 28 66 69 64 2c 20 2d 31 2c 20 27 63 6f 66 27 29 3b 09 25 20 75 6e 70 75 74 | ..fseek(fid,.-1,.'cof');.%.unput |
| 32b80 | 63 28 29 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 65 6e 64 0a 09 65 6e 64 0a 09 69 66 20 6d 61 67 | c()....break;...end..end..if.mag |
| 32ba0 | 69 63 28 31 29 20 3d 3d 20 27 50 27 2c 0a 09 09 69 66 20 6d 61 67 69 63 28 32 29 20 3d 3d 20 27 | ic(1).==.'P',...if.magic(2).==.' |
| 32bc0 | 33 27 2c 0a 09 09 09 64 69 73 70 28 5b 27 41 53 43 49 49 20 50 50 4d 20 66 69 6c 65 20 27 20 6e | 3',....disp(['ASCII.PPM.file.'.n |
| 32be0 | 75 6d 32 73 74 72 28 72 6f 77 73 29 20 27 20 78 20 27 20 6e 75 6d 32 73 74 72 28 63 6f 6c 73 29 | um2str(rows).'.x.'.num2str(cols) |
| 32c00 | 5d 29 0a 09 09 09 49 20 3d 20 66 73 63 61 6e 66 28 66 69 64 2c 20 27 25 64 27 2c 20 5b 63 6f 6c | ])....I.=.fscanf(fid,.'%d',.[col |
| 32c20 | 73 2a 33 20 72 6f 77 73 5d 29 3b 0a 09 09 65 6c 73 65 69 66 20 6d 61 67 69 63 28 32 29 20 3d 3d | s*3.rows]);...elseif.magic(2).== |
| 32c40 | 20 27 36 27 2c 0a 09 09 09 64 69 73 70 28 5b 27 42 69 6e 61 72 79 20 50 50 4d 20 66 69 6c 65 20 | .'6',....disp(['Binary.PPM.file. |
| 32c60 | 27 20 6e 75 6d 32 73 74 72 28 72 6f 77 73 29 20 27 20 78 20 27 20 6e 75 6d 32 73 74 72 28 63 6f | '.num2str(rows).'.x.'.num2str(co |
| 32c80 | 6c 73 29 5d 29 0a 09 09 09 69 66 20 6d 61 78 76 61 6c 20 3d 3d 20 31 2c 0a 09 09 09 09 66 6d 74 | ls)])....if.maxval.==.1,.....fmt |
| 32ca0 | 20 3d 20 27 75 6e 69 6e 74 31 27 3b 0a 09 09 09 65 6c 73 65 69 66 20 6d 61 78 76 61 6c 20 3d 3d | .=.'unint1';....elseif.maxval.== |
| 32cc0 | 20 31 35 2c 0a 09 09 09 09 66 6d 74 20 3d 20 27 75 69 6e 74 34 27 3b 0a 09 09 09 65 6c 73 65 69 | .15,.....fmt.=.'uint4';....elsei |
| 32ce0 | 66 20 6d 61 78 76 61 6c 20 3d 3d 20 32 35 35 2c 0a 09 09 09 09 66 6d 74 20 3d 20 27 75 69 6e 74 | f.maxval.==.255,.....fmt.=.'uint |
| 32d00 | 38 27 3b 0a 09 09 09 65 6c 73 65 69 66 20 6d 61 78 76 61 6c 20 3d 3d 20 32 5e 33 32 2d 31 2c 0a | 8';....elseif.maxval.==.2^32-1,. |
| 32d20 | 09 09 09 09 66 6d 74 20 3d 20 27 75 69 6e 74 33 32 27 3b 0a 09 09 09 65 6e 64 0a 09 09 09 49 20 | ....fmt.=.'uint32';....end....I. |
| 32d40 | 3d 20 66 72 65 61 64 28 66 69 64 2c 20 5b 63 6f 6c 73 2a 33 20 72 6f 77 73 5d 2c 20 66 6d 74 29 | =.fread(fid,.[cols*3.rows],.fmt) |
| 32d60 | 3b 0a 09 09 65 6c 73 65 0a 09 09 09 64 69 73 70 28 27 4e 6f 74 20 61 20 50 50 4d 20 66 69 6c 65 | ;...else....disp('Not.a.PPM.file |
| 32d80 | 27 29 3b 0a 09 09 65 6e 64 0a 09 65 6e 64 0a 09 25 0a 09 25 20 6e 6f 77 20 74 68 65 20 6d 61 74 | ');...end..end..%..%.now.the.mat |
| 32da0 | 72 69 78 20 68 61 73 20 69 6e 74 65 72 6c 65 61 76 65 64 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 52 | rix.has.interleaved.columns.of.R |
| 32dc0 | 2c 20 47 2c 20 42 0a 09 25 0a 09 49 20 3d 20 49 27 3b 0a 09 73 69 7a 65 28 49 29 0a 09 52 20 3d | ,.G,.B..%..I.=.I';..size(I)..R.= |
| 32de0 | 20 49 28 3a 2c 31 3a 33 3a 28 63 6f 6c 73 2a 33 29 29 3b 0a 09 47 20 3d 20 49 28 3a 2c 32 3a 33 | .I(:,1:3:(cols*3));..G.=.I(:,2:3 |
| 32e00 | 3a 28 63 6f 6c 73 2a 33 29 29 3b 0a 09 42 20 3d 20 49 28 3a 2c 33 3a 33 3a 28 63 6f 6c 73 2a 33 | :(cols*3));..B.=.I(:,3:3:(cols*3 |
| 32e20 | 29 29 3b 0a 09 66 63 6c 6f 73 65 28 66 69 64 29 3b 0a 27 20 5d 3b 27 5d 29 3b 0a 20 20 20 0a 09 | ));..fclose(fid);.'.];']);...... |
| 32e40 | 65 6e 64 3b 0a 0a 65 6e 64 3b 0a 0a 0a 0a 0a 69 66 20 30 2c 0a 0a 25 20 52 65 73 74 6f 72 69 6e | end;..end;.....if.0,..%.Restorin |
| 32e60 | 67 20 74 68 65 20 66 65 61 74 75 72 65 20 6c 6f 63 61 74 69 6f 6e 73 3a 0a 0a 66 6f 72 20 6b 6b | g.the.feature.locations:..for.kk |
| 32e80 | 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 78 5f 27 20 6e 75 | .=.1:n_ima,........eval(['x_'.nu |
| 32ea0 | 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 78 5f 73 61 76 65 5f 27 20 6e 75 6d 32 73 74 72 28 6b | m2str(kk).'.=.x_save_'.num2str(k |
| 32ec0 | 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c | k).';']);.....end;..fprintf(1,'\ |
| 32ee0 | 6e 46 69 6e 61 6c 20 72 75 6e 20 28 77 69 74 68 20 74 68 65 20 72 65 61 6c 20 64 61 74 61 29 5c | nFinal.run.(with.the.real.data)\ |
| 32f00 | 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 20 20 27 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | n');.fprintf(1,..'-------------- |
| 32f20 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 27 29 3b 0a 0a 61 63 74 69 76 65 5f 69 6d | ----------------\n');..active_im |
| 32f40 | 61 67 65 73 20 3d 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 5f 73 61 76 65 3b 0a 69 6e 64 5f 61 | ages.=.active_images_save;.ind_a |
| 32f60 | 63 74 69 76 65 20 3d 20 69 6e 64 5f 61 63 74 69 76 65 5f 73 61 76 65 3b 0a 0a 67 6f 5f 63 61 6c | ctive.=.ind_active_save;..go_cal |
| 32f80 | 69 62 5f 6f 70 74 69 6d 3b 0a 20 20 20 0a 66 63 5f 6c 69 73 74 20 3d 20 5b 66 63 5f 6c 69 73 74 | ib_optim;.....fc_list.=.[fc_list |
| 32fa0 | 20 66 63 5d 3b 0a 63 63 5f 6c 69 73 74 20 3d 20 5b 63 63 5f 6c 69 73 74 20 63 63 5d 3b 0a 6b 63 | .fc];.cc_list.=.[cc_list.cc];.kc |
| 32fc0 | 5f 6c 69 73 74 20 3d 20 5b 6b 63 5f 6c 69 73 74 20 6b 63 5d 3b 0a 61 63 74 69 76 65 5f 69 6d 61 | _list.=.[kc_list.kc];.active_ima |
| 32fe0 | 67 65 73 5f 6c 69 73 74 20 3d 20 5b 61 63 74 69 76 65 5f 69 6d 61 67 65 73 5f 6c 69 73 74 20 61 | ges_list.=.[active_images_list.a |
| 33000 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 73 61 76 65 69 6e 72 2e 6d 00 00 00 00 00 00 00 00 00 | TOOLBOX_calib/saveinr.m......... |
| 33020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33060 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 33080 | 20 20 20 31 36 36 35 20 20 37 30 32 34 30 33 37 33 35 34 20 20 31 30 32 35 37 00 20 00 00 00 00 | ...1665..7024037354..10257...... |
| 330a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 330c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 330e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 331a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 331c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 331e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33200 | 25 53 41 56 45 49 4e 52 09 57 72 69 74 65 20 61 6e 20 49 4e 52 49 4d 41 47 45 20 66 6f 72 6d 61 | %SAVEINR.Write.an.INRIMAGE.forma |
| 33220 | 74 20 66 69 6c 65 0a 25 0a 25 09 53 41 56 45 49 4e 52 28 66 69 6c 65 6e 61 6d 65 2c 20 69 6d 29 | t.file.%.%.SAVEINR(filename,.im) |
| 33240 | 0a 25 0a 25 09 53 61 76 65 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 69 6d 61 67 65 20 61 | .%.%.Saves.the.specified.image.a |
| 33260 | 72 72 61 79 20 69 6e 20 61 20 49 4e 52 49 41 20 69 6d 61 67 65 20 66 6f 72 6d 61 74 20 66 69 6c | rray.in.a.INRIA.image.format.fil |
| 33280 | 65 2e 0a 25 0a 25 20 53 45 45 20 41 4c 53 4f 3a 09 6c 6f 61 64 69 6e 72 0a 25 0a 25 09 43 6f 70 | e..%.%.SEE.ALSO:.loadinr.%.%.Cop |
| 332a0 | 79 72 69 67 68 74 20 28 63 29 20 50 65 74 65 72 20 43 6f 72 6b 65 2c 20 31 39 39 39 20 20 4d 61 | yright.(c).Peter.Corke,.1999..Ma |
| 332c0 | 63 68 69 6e 65 20 56 69 73 69 6f 6e 20 54 6f 6f 6c 62 6f 78 20 66 6f 72 20 4d 61 74 6c 61 62 0a | chine.Vision.Toolbox.for.Matlab. |
| 332e0 | 0a 25 20 50 65 74 65 72 20 43 6f 72 6b 65 20 31 39 39 36 0a 0a 66 75 6e 63 74 69 6f 6e 20 73 61 | .%.Peter.Corke.1996..function.sa |
| 33300 | 76 65 69 6e 72 28 66 6e 61 6d 65 2c 20 69 6d 29 0a 0a 09 66 69 64 20 3d 20 66 6f 70 65 6e 28 66 | veinr(fname,.im)...fid.=.fopen(f |
| 33320 | 6e 61 6d 65 2c 20 27 77 27 29 3b 0a 09 5b 72 2c 63 5d 20 3d 20 73 69 7a 65 28 69 6d 27 29 3b 0a | name,.'w');..[r,c].=.size(im');. |
| 33340 | 0a 09 25 20 62 75 69 6c 64 20 74 68 65 20 68 65 61 64 65 72 0a 09 68 64 72 20 3d 20 5b 5d 3b 0a | ..%.build.the.header..hdr.=.[];. |
| 33360 | 09 73 20 3d 20 73 70 72 69 6e 74 66 28 27 23 49 4e 52 49 4d 41 47 45 2d 34 23 7b 5c 6e 27 29 3b | .s.=.sprintf('#INRIMAGE-4#{\n'); |
| 33380 | 0a 09 68 64 72 20 3d 20 5b 68 64 72 20 73 5d 3b 0a 09 73 20 3d 20 73 70 72 69 6e 74 66 28 27 58 | ..hdr.=.[hdr.s];..s.=.sprintf('X |
| 333a0 | 44 49 4d 3d 25 64 5c 6e 27 2c 63 29 3b 0a 09 68 64 72 20 3d 20 5b 68 64 72 20 73 5d 3b 0a 09 73 | DIM=%d\n',c);..hdr.=.[hdr.s];..s |
| 333c0 | 20 3d 20 73 70 72 69 6e 74 66 28 27 59 44 49 4d 3d 25 64 5c 6e 27 2c 72 29 3b 0a 09 68 64 72 20 | .=.sprintf('YDIM=%d\n',r);..hdr. |
| 333e0 | 3d 20 5b 68 64 72 20 73 5d 3b 0a 09 73 20 3d 20 73 70 72 69 6e 74 66 28 27 5a 44 49 4d 3d 31 5c | =.[hdr.s];..s.=.sprintf('ZDIM=1\ |
| 33400 | 6e 27 29 3b 0a 09 68 64 72 20 3d 20 5b 68 64 72 20 73 5d 3b 0a 09 73 20 3d 20 73 70 72 69 6e 74 | n');..hdr.=.[hdr.s];..s.=.sprint |
| 33420 | 66 28 27 56 44 49 4d 3d 31 5c 6e 27 29 3b 0a 09 68 64 72 20 3d 20 5b 68 64 72 20 73 5d 3b 0a 09 | f('VDIM=1\n');..hdr.=.[hdr.s];.. |
| 33440 | 73 20 3d 20 73 70 72 69 6e 74 66 28 27 54 59 50 45 3d 66 6c 6f 61 74 5c 6e 27 29 3b 0a 09 68 64 | s.=.sprintf('TYPE=float\n');..hd |
| 33460 | 72 20 3d 20 5b 68 64 72 20 73 5d 3b 0a 09 73 20 3d 20 73 70 72 69 6e 74 66 28 27 50 49 58 53 49 | r.=.[hdr.s];..s.=.sprintf('PIXSI |
| 33480 | 5a 45 3d 33 32 5c 6e 27 29 3b 0a 09 68 64 72 20 3d 20 5b 68 64 72 20 73 5d 3b 0a 09 73 20 3d 20 | ZE=32\n');..hdr.=.[hdr.s];..s.=. |
| 334a0 | 73 70 72 69 6e 74 66 28 27 53 43 41 4c 45 3d 32 2a 2a 30 5c 6e 27 29 3b 0a 09 68 64 72 20 3d 20 | sprintf('SCALE=2**0\n');..hdr.=. |
| 334c0 | 5b 68 64 72 20 73 5d 3b 0a 09 73 20 3d 20 73 70 72 69 6e 74 66 28 27 43 50 55 3d 73 75 6e 5c 6e | [hdr.s];..s.=.sprintf('CPU=sun\n |
| 334e0 | 23 27 29 3b 0a 09 68 64 72 20 3d 20 5b 68 64 72 20 73 5d 3b 0a 0a 09 25 20 6d 61 6b 65 20 69 74 | #');..hdr.=.[hdr.s];...%.make.it |
| 33500 | 20 32 35 36 20 62 79 74 65 73 20 6c 6f 6e 67 20 61 6e 64 20 77 72 69 74 65 20 69 74 0a 09 68 64 | .256.bytes.long.and.write.it..hd |
| 33520 | 72 32 35 36 20 3d 20 7a 65 72 6f 73 28 31 2c 32 35 36 29 3b 0a 09 68 64 72 32 35 36 28 31 3a 6c | r256.=.zeros(1,256);..hdr256(1:l |
| 33540 | 65 6e 67 74 68 28 68 64 72 29 29 20 3d 20 68 64 72 3b 0a 09 66 77 72 69 74 65 28 66 69 64 2c 20 | ength(hdr)).=.hdr;..fwrite(fid,. |
| 33560 | 68 64 72 32 35 36 2c 20 27 75 63 68 61 72 27 29 3b 0a 0a 09 25 20 6e 6f 77 20 74 68 65 20 62 69 | hdr256,.'uchar');...%.now.the.bi |
| 33580 | 6e 61 72 79 20 64 61 74 61 0a 09 66 77 72 69 74 65 28 66 69 64 2c 20 69 6d 27 2c 20 27 66 6c 6f | nary.data..fwrite(fid,.im',.'flo |
| 335a0 | 61 74 33 32 27 29 3b 0a 09 66 63 6c 6f 73 65 28 66 69 64 29 0a 63 68 61 72 27 29 3b 0a 09 09 69 | at32');..fclose(fid).char');...i |
| 335c0 | 66 20 63 20 3d 3d 20 27 23 27 2c 0a 09 09 09 66 67 65 74 6c 28 66 69 64 29 3b 0a 09 09 65 6c 73 | f.c.==.'#',....fgetl(fid);...els |
| 335e0 | 65 69 66 20 7e 61 6e 79 28 63 20 3d 3d 20 77 68 69 74 65 29 0a 09 09 09 66 73 65 65 6b 28 66 69 | eif.~any(c.==.white)....fseek(fi |
| 33600 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 73 61 76 65 70 67 6d 2e 6d 00 00 00 00 00 00 00 00 00 | TOOLBOX_calib/savepgm.m......... |
| 33620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33660 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 33680 | 20 20 20 20 36 37 36 20 20 37 30 32 34 30 33 37 33 35 35 20 20 31 30 32 33 34 00 20 00 00 00 00 | ....676..7024037355..10234...... |
| 336a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 336c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 336e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 337a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 337c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 337e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33800 | 25 53 41 56 45 50 47 4d 09 57 72 69 74 65 20 61 20 50 47 4d 20 66 6f 72 6d 61 74 20 66 69 6c 65 | %SAVEPGM.Write.a.PGM.format.file |
| 33820 | 0a 25 0a 25 09 53 41 56 45 50 47 4d 28 66 69 6c 65 6e 61 6d 65 2c 20 69 6d 29 0a 25 0a 25 09 53 | .%.%.SAVEPGM(filename,.im).%.%.S |
| 33840 | 61 76 65 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 69 6d 61 67 65 20 61 72 72 61 79 20 69 | aves.the.specified.image.array.i |
| 33860 | 6e 20 61 20 62 69 6e 61 72 79 20 28 50 35 29 20 66 6f 72 6d 61 74 20 50 47 4d 20 69 6d 61 67 65 | n.a.binary.(P5).format.PGM.image |
| 33880 | 20 66 69 6c 65 2e 0a 25 20 0a 25 20 53 45 45 20 41 4c 53 4f 3a 09 6c 6f 61 64 70 67 6d 0a 25 0a | .file..%..%.SEE.ALSO:.loadpgm.%. |
| 338a0 | 25 09 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 50 65 74 65 72 20 43 6f 72 6b 65 2c 20 31 39 39 | %.Copyright.(c).Peter.Corke,.199 |
| 338c0 | 39 20 20 4d 61 63 68 69 6e 65 20 56 69 73 69 6f 6e 20 54 6f 6f 6c 62 6f 78 20 66 6f 72 20 4d 61 | 9..Machine.Vision.Toolbox.for.Ma |
| 338e0 | 74 6c 61 62 0a 0a 0a 25 20 50 65 74 65 72 20 43 6f 72 6b 65 20 31 39 39 34 0a 0a 66 75 6e 63 74 | tlab...%.Peter.Corke.1994..funct |
| 33900 | 69 6f 6e 20 73 61 76 65 70 67 6d 28 66 6e 61 6d 65 2c 20 69 6d 29 0a 0a 09 66 69 64 20 3d 20 66 | ion.savepgm(fname,.im)...fid.=.f |
| 33920 | 6f 70 65 6e 28 66 6e 61 6d 65 2c 20 27 77 27 29 3b 0a 09 5b 72 2c 63 5d 20 3d 20 73 69 7a 65 28 | open(fname,.'w');..[r,c].=.size( |
| 33940 | 69 6d 27 29 3b 0a 09 66 70 72 69 6e 74 66 28 66 69 64 2c 20 27 50 35 5c 6e 27 29 3b 0a 09 66 70 | im');..fprintf(fid,.'P5\n');..fp |
| 33960 | 72 69 6e 74 66 28 66 69 64 2c 20 27 25 64 20 25 64 5c 6e 27 2c 20 72 2c 20 63 29 3b 0a 09 66 70 | rintf(fid,.'%d.%d\n',.r,.c);..fp |
| 33980 | 72 69 6e 74 66 28 66 69 64 2c 20 27 32 35 35 5c 6e 27 29 3b 0a 09 66 77 72 69 74 65 28 66 69 64 | rintf(fid,.'255\n');..fwrite(fid |
| 339a0 | 2c 20 69 6d 27 2c 20 27 75 63 68 61 72 27 29 3b 0a 09 66 63 6c 6f 73 65 28 66 69 64 29 0a 09 73 | ,.im',.'uchar');..fclose(fid)..s |
| 339c0 | 20 3d 20 73 70 72 69 6e 74 66 28 27 59 44 49 4d 3d 25 64 5c 6e 27 2c 72 29 3b 0a 09 68 64 72 20 | .=.sprintf('YDIM=%d\n',r);..hdr. |
| 339e0 | 3d 20 5b 68 64 72 20 73 5d 3b 0a 09 73 20 3d 20 73 70 72 69 6e 74 66 28 27 5a 44 49 4d 3d 31 5c | =.[hdr.s];..s.=.sprintf('ZDIM=1\ |
| 33a00 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 73 61 76 65 70 70 6d 2e 6d 00 00 00 00 00 00 00 00 00 | TOOLBOX_calib/saveppm.m......... |
| 33a20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33a40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33a60 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 33a80 | 20 20 20 31 30 30 32 20 20 37 30 32 34 30 33 37 33 35 35 20 20 31 30 32 34 35 00 20 00 00 00 00 | ...1002..7024037355..10245...... |
| 33aa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33ac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33ae0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33b00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33b20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33b40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33b60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33b80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33ba0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33bc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33be0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33c00 | 25 53 41 56 45 50 50 4d 09 57 72 69 74 65 20 61 20 50 50 4d 20 66 6f 72 6d 61 74 20 66 69 6c 65 | %SAVEPPM.Write.a.PPM.format.file |
| 33c20 | 0a 25 0a 25 09 53 41 56 45 50 50 4d 28 66 69 6c 65 6e 61 6d 65 2c 20 72 2c 20 67 2c 20 62 29 0a | .%.%.SAVEPPM(filename,.r,.g,.b). |
| 33c40 | 25 0a 25 09 53 61 76 65 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 72 65 64 2c 20 67 72 65 | %.%.Saves.the.specified.red,.gre |
| 33c60 | 65 6e 20 61 6e 64 20 62 6c 75 65 20 70 6c 61 6e 65 73 20 69 6e 20 61 20 62 69 6e 61 72 79 20 28 | en.and.blue.planes.in.a.binary.( |
| 33c80 | 50 36 29 0a 25 09 66 6f 72 6d 61 74 20 50 50 4d 20 69 6d 61 67 65 20 66 69 6c 65 2e 0a 25 0a 25 | P6).%.format.PPM.image.file..%.% |
| 33ca0 | 20 53 45 45 20 41 4c 53 4f 3a 09 6c 6f 61 64 70 70 6d 0a 25 0a 25 09 43 6f 70 79 72 69 67 68 74 | .SEE.ALSO:.loadppm.%.%.Copyright |
| 33cc0 | 20 28 63 29 20 50 65 74 65 72 20 43 6f 72 6b 65 2c 20 31 39 39 39 20 20 4d 61 63 68 69 6e 65 20 | .(c).Peter.Corke,.1999..Machine. |
| 33ce0 | 56 69 73 69 6f 6e 20 54 6f 6f 6c 62 6f 78 20 66 6f 72 20 4d 61 74 6c 61 62 0a 0a 0a 25 20 50 65 | Vision.Toolbox.for.Matlab...%.Pe |
| 33d00 | 74 65 72 20 43 6f 72 6b 65 20 31 39 39 34 0a 0a 66 75 6e 63 74 69 6f 6e 20 73 61 76 65 70 70 6d | ter.Corke.1994..function.saveppm |
| 33d20 | 28 66 6e 61 6d 65 2c 20 52 2c 20 47 2c 20 42 29 0a 0a 09 66 69 64 20 3d 20 66 6f 70 65 6e 28 66 | (fname,.R,.G,.B)...fid.=.fopen(f |
| 33d40 | 6e 61 6d 65 2c 20 27 77 27 29 3b 0a 09 5b 72 2c 63 5d 20 3d 20 73 69 7a 65 28 52 27 29 3b 0a 09 | name,.'w');..[r,c].=.size(R');.. |
| 33d60 | 66 70 72 69 6e 74 66 28 66 69 64 2c 20 27 50 36 5c 6e 27 29 3b 0a 09 66 70 72 69 6e 74 66 28 66 | fprintf(fid,.'P6\n');..fprintf(f |
| 33d80 | 69 64 2c 20 27 25 64 20 25 64 5c 6e 27 2c 20 72 2c 20 63 29 3b 0a 09 66 70 72 69 6e 74 66 28 66 | id,.'%d.%d\n',.r,.c);..fprintf(f |
| 33da0 | 69 64 2c 20 27 32 35 35 5c 6e 27 29 3b 0a 09 69 6d 20 3d 20 5b 52 28 3a 29 20 47 28 3a 29 20 42 | id,.'255\n');..im.=.[R(:).G(:).B |
| 33dc0 | 28 3a 29 5d 3b 0a 09 69 6d 20 3d 20 72 65 73 68 61 70 65 28 63 2c 72 29 3b 0a 09 66 77 72 69 74 | (:)];..im.=.reshape(c,r);..fwrit |
| 33de0 | 65 28 66 69 64 2c 20 69 6d 2c 20 27 75 63 68 61 72 27 29 3b 0a 09 66 63 6c 6f 73 65 28 66 69 64 | e(fid,.im,.'uchar');..fclose(fid |
| 33e00 | 29 0a 29 3b 0a 09 68 64 72 20 3d 20 5b 68 64 72 20 73 5d 3b 0a 09 73 20 3d 20 73 70 72 69 6e 74 | ).);..hdr.=.[hdr.s];..s.=.sprint |
| 33e20 | 66 28 27 56 44 49 4d 3d 31 5c 6e 27 29 3b 0a 09 68 64 72 20 3d 20 5b 68 64 72 20 73 5d 3b 0a 09 | f('VDIM=1\n');..hdr.=.[hdr.s];.. |
| 33e40 | 73 20 3d 20 73 70 72 69 6e 74 66 28 27 54 59 50 45 3d 66 6c 6f 61 74 5c 6e 27 29 3b 0a 09 68 64 | s.=.sprintf('TYPE=float\n');..hd |
| 33e60 | 72 20 3d 20 5b 68 64 72 20 73 5d 3b 0a 09 73 20 3d 20 73 70 72 69 6e 74 66 28 27 50 49 58 53 49 | r.=.[hdr.s];..s.=.sprintf('PIXSI |
| 33e80 | 5a 45 3d 33 32 5c 6e 27 29 3b 0a 09 68 64 72 20 3d 20 5b 68 64 72 20 73 5d 3b 0a 09 73 20 3d 20 | ZE=32\n');..hdr.=.[hdr.s];..s.=. |
| 33ea0 | 73 70 72 69 6e 74 66 28 27 53 43 41 4c 45 3d 32 2a 2a 30 5c 6e 27 29 3b 0a 09 68 64 72 20 3d 20 | sprintf('SCALE=2**0\n');..hdr.=. |
| 33ec0 | 5b 68 64 72 20 73 5d 3b 0a 09 73 20 3d 20 73 70 72 69 6e 74 66 28 27 43 50 55 3d 73 75 6e 5c 6e | [hdr.s];..s.=.sprintf('CPU=sun\n |
| 33ee0 | 23 27 29 3b 0a 09 68 64 72 20 3d 20 5b 68 64 72 20 73 5d 3b 0a 0a 09 25 20 6d 61 6b 65 20 69 74 | #');..hdr.=.[hdr.s];...%.make.it |
| 33f00 | 20 32 35 36 20 62 79 74 65 73 20 6c 6f 6e 67 20 61 6e 64 20 77 72 69 74 65 20 69 74 0a 09 68 64 | .256.bytes.long.and.write.it..hd |
| 33f20 | 72 32 35 36 20 3d 20 7a 65 72 6f 73 28 31 2c 32 35 36 29 3b 0a 09 68 64 72 32 35 36 28 31 3a 6c | r256.=.zeros(1,256);..hdr256(1:l |
| 33f40 | 65 6e 67 74 68 28 68 64 72 29 29 20 3d 20 68 64 72 3b 0a 09 66 77 72 69 74 65 28 66 69 64 2c 20 | ength(hdr)).=.hdr;..fwrite(fid,. |
| 33f60 | 68 64 72 32 35 36 2c 20 27 75 63 68 61 72 27 29 3b 0a 0a 09 25 20 6e 6f 77 20 74 68 65 20 62 69 | hdr256,.'uchar');...%.now.the.bi |
| 33f80 | 6e 61 72 79 20 64 61 74 61 0a 09 66 77 72 69 74 65 28 66 69 64 2c 20 69 6d 27 2c 20 27 66 6c 6f | nary.data..fwrite(fid,.im',.'flo |
| 33fa0 | 61 74 33 32 27 29 3b 0a 09 66 63 6c 6f 73 65 28 66 69 64 29 0a 63 68 61 72 27 29 3b 0a 09 09 69 | at32');..fclose(fid).char');...i |
| 33fc0 | 66 20 63 20 3d 3d 20 27 23 27 2c 0a 09 09 09 66 67 65 74 6c 28 66 69 64 29 3b 0a 09 09 65 6c 73 | f.c.==.'#',....fgetl(fid);...els |
| 33fe0 | 65 69 66 20 7e 61 6e 79 28 63 20 3d 3d 20 77 68 69 74 65 29 0a 09 09 09 66 73 65 65 6b 28 66 69 | eif.~any(c.==.white)....fseek(fi |
| 34000 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 69 6e 69 74 5f 69 6e 74 72 69 6e 73 69 63 5f 70 61 72 | TOOLBOX_calib/init_intrinsic_par |
| 34020 | 61 6d 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | am.m............................ |
| 34040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 34060 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 34080 | 20 20 31 30 30 30 32 20 20 37 30 32 34 30 33 37 33 33 34 20 20 31 33 30 31 34 00 20 00 00 00 00 | ..10002..7024037334..13014...... |
| 340a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 340c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 340e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 34100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 34120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 34140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 34160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 34180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 341a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 341c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 341e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 34200 | 25 69 6e 69 74 5f 69 6e 74 72 69 6e 73 69 63 5f 70 61 72 61 6d 0a 25 0a 25 49 6e 69 74 69 61 6c | %init_intrinsic_param.%.%Initial |
| 34220 | 69 7a 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 | ization.of.the.intrinsic.paramet |
| 34240 | 65 72 73 2e 0a 25 52 75 6e 73 20 61 73 20 61 20 73 63 72 69 70 74 2e 0a 25 0a 25 49 4e 50 55 54 | ers..%Runs.as.a.script..%.%INPUT |
| 34260 | 3a 20 78 5f 31 2c 78 5f 32 2c 78 5f 33 2c 2e 2e 2e 3a 20 46 65 61 74 75 72 65 20 6c 6f 63 61 74 | :.x_1,x_2,x_3,...:.Feature.locat |
| 34280 | 69 6f 6e 73 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 73 0a 25 20 20 20 20 20 20 20 58 5f 31 2c 58 | ions.on.the.images.%.......X_1,X |
| 342a0 | 5f 32 2c 58 5f 33 2c 2e 2e 2e 3a 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 67 72 69 64 20 63 | _2,X_3,...:.Corresponding.grid.c |
| 342c0 | 6f 6f 72 64 69 6e 61 74 65 73 0a 25 0a 25 4f 55 54 50 55 54 3a 20 66 63 3a 20 43 61 6d 65 72 61 | oordinates.%.%OUTPUT:.fc:.Camera |
| 342e0 | 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 0a 25 20 20 20 20 20 20 20 20 63 63 3a 20 50 72 69 6e 63 | .focal.length.%........cc:.Princ |
| 34300 | 69 70 61 6c 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 0a 25 09 20 20 20 20 20 20 6b | ipal.point.coordinates.%.......k |
| 34320 | 63 3a 20 44 69 73 74 6f 72 74 69 6f 6e 20 63 6f 65 66 66 69 63 69 65 6e 74 73 0a 25 20 20 20 20 | c:.Distortion.coefficients.%.... |
| 34340 | 20 20 20 20 4b 4b 3a 20 54 68 65 20 63 61 6d 65 72 61 20 6d 61 74 72 69 78 20 28 63 6f 6e 74 61 | ....KK:.The.camera.matrix.(conta |
| 34360 | 69 6e 69 6e 67 20 66 63 20 61 6e 64 20 63 63 29 0a 25 0a 25 4d 65 74 68 6f 64 3a 20 43 6f 6d 70 | ining.fc.and.cc).%.%Method:.Comp |
| 34380 | 75 74 65 73 20 74 68 65 20 70 6c 61 6e 61 72 20 68 6f 6d 6f 67 72 61 70 68 69 65 73 20 48 5f 31 | utes.the.planar.homographies.H_1 |
| 343a0 | 2c 20 48 5f 32 2c 20 48 5f 33 2c 20 2e 2e 2e 20 61 6e 64 20 63 6f 6d 70 75 74 65 73 0a 25 20 20 | ,.H_2,.H_3,.....and.computes.%.. |
| 343c0 | 20 20 20 20 20 20 74 68 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 20 66 63 20 66 72 6f 6d 20 6f | ......the.focal.length.fc.from.o |
| 343e0 | 72 74 68 6f 67 6f 6e 61 6c 20 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 73 20 63 6f 6e 73 74 | rthogonal.vanishing.points.const |
| 34400 | 72 61 69 6e 74 2e 0a 25 20 20 20 20 20 20 20 20 54 68 65 20 70 72 69 6e 63 69 70 61 6c 20 70 6f | raint..%........The.principal.po |
| 34420 | 69 6e 74 20 63 63 20 69 73 20 61 73 73 75 6d 65 64 20 61 74 20 74 68 65 20 63 65 6e 74 65 72 20 | int.cc.is.assumed.at.the.center. |
| 34440 | 6f 66 20 74 68 65 20 69 6d 61 67 65 2e 0a 25 20 20 20 20 20 20 20 20 41 73 73 75 6d 65 73 20 6e | of.the.image..%........Assumes.n |
| 34460 | 6f 20 69 6d 61 67 65 20 64 69 73 74 6f 72 74 69 6f 6e 20 28 6b 63 20 3d 20 5b 30 3b 30 3b 30 3b | o.image.distortion.(kc.=.[0;0;0; |
| 34480 | 30 5d 29 0a 25 0a 25 4e 6f 74 65 3a 20 54 68 65 20 72 6f 77 20 76 65 63 74 6f 72 20 61 63 74 69 | 0]).%.%Note:.The.row.vector.acti |
| 344a0 | 76 65 5f 69 6d 61 67 65 73 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 7a 65 72 6f 73 20 61 6e 64 20 | ve_images.consists.of.zeros.and. |
| 344c0 | 6f 6e 65 73 2e 20 54 6f 20 64 65 61 63 74 69 76 61 74 65 20 61 6e 20 69 6d 61 67 65 2c 20 73 65 | ones..To.deactivate.an.image,.se |
| 344e0 | 74 20 74 68 65 0a 25 20 20 20 20 20 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 65 6e 74 72 79 | t.the.%......corresponding.entry |
| 34500 | 20 69 6e 20 74 68 65 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 20 76 65 63 74 6f 72 20 74 6f 20 | .in.the.active_images.vector.to. |
| 34520 | 7a 65 72 6f 2e 0a 25 0a 25 0a 25 49 6d 70 6f 72 74 61 6e 74 20 66 75 6e 63 74 69 6f 6e 20 63 61 | zero..%.%.%Important.function.ca |
| 34540 | 6c 6c 65 64 20 77 69 74 68 69 6e 20 74 68 61 74 20 70 72 6f 67 72 61 6d 3a 0a 25 0a 25 63 6f 6d | lled.within.that.program:.%.%com |
| 34560 | 70 75 74 65 5f 68 6f 6d 6f 67 72 61 70 68 79 2e 6d 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 | pute_homography.m:.Computes.the. |
| 34580 | 70 6c 61 6e 61 72 20 68 6f 6d 6f 67 72 61 70 68 79 20 62 65 74 77 65 65 6e 20 70 6f 69 6e 74 73 | planar.homography.between.points |
| 345a0 | 20 6f 6e 20 74 68 65 20 67 72 69 64 20 69 6e 20 33 44 2c 20 61 6e 64 20 74 68 65 20 69 6d 61 67 | .on.the.grid.in.3D,.and.the.imag |
| 345c0 | 65 20 70 6c 61 6e 65 2e 0a 25 0a 25 0a 25 56 45 52 59 20 49 4d 50 4f 52 54 41 4e 54 3a 20 54 68 | e.plane..%.%.%VERY.IMPORTANT:.Th |
| 345e0 | 69 73 20 66 75 6e 63 74 69 6f 6e 20 77 6f 72 6b 73 20 6f 6e 79 6c 20 77 69 74 68 20 32 44 20 72 | is.function.works.onyl.with.2D.r |
| 34600 | 69 67 73 2e 0a 25 49 6e 20 74 68 65 20 66 75 74 75 72 65 2c 20 61 20 6d 6f 72 65 20 67 65 6e 65 | igs..%In.the.future,.a.more.gene |
| 34620 | 72 61 6c 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 74 68 65 72 65 20 28 77 6f 72 6b | ral.function.will.be.there.(work |
| 34640 | 69 6e 67 20 77 69 74 68 20 33 44 20 72 69 67 73 20 61 73 20 77 65 6c 6c 29 2e 0a 0a 0a 0a 63 68 | ing.with.3D.rigs.as.well).....ch |
| 34660 | 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 0a 69 66 20 7e 65 78 69 73 74 28 5b 27 | eck_active_images;..if.~exist([' |
| 34680 | 78 5f 27 20 6e 75 6d 32 73 74 72 28 69 6e 64 5f 61 63 74 69 76 65 28 31 29 29 20 5d 29 2c 0a 20 | x_'.num2str(ind_active(1)).]),.. |
| 346a0 | 20 20 63 6c 69 63 6b 5f 63 61 6c 69 62 3b 0a 65 6e 64 3b 0a 0a 0a 66 70 72 69 6e 74 66 28 31 2c | ..click_calib;.end;...fprintf(1, |
| 346c0 | 27 5c 6e 49 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e 74 72 69 6e 73 | '\nInitialization.of.the.intrins |
| 346e0 | 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 2d 20 4e 75 6d 62 65 72 20 6f 66 20 69 6d 61 67 65 73 | ic.parameters.-.Number.of.images |
| 34700 | 3a 20 25 64 5c 6e 27 2c 6c 65 6e 67 74 68 28 69 6e 64 5f 61 63 74 69 76 65 29 29 3b 0a 0a 0a 25 | :.%d\n',length(ind_active));...% |
| 34720 | 20 49 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20 68 6f 6d 6f 67 72 61 70 68 69 65 73 3a 0a 0a 66 | .Initialize.the.homographies:..f |
| 34740 | 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 65 76 61 6c 28 5b 27 78 5f 6b 6b 20 | or.kk.=.1:n_ima,....eval(['x_kk. |
| 34760 | 3d 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c | =.x_'.num2str(kk).';']);....eval |
| 34780 | 28 5b 27 58 5f 6b 6b 20 3d 20 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b | (['X_kk.=.X_'.num2str(kk).';']); |
| 347a0 | 0a 20 20 20 69 66 20 28 69 73 6e 61 6e 28 78 5f 6b 6b 28 31 2c 31 29 29 29 2c 0a 20 20 20 20 20 | ....if.(isnan(x_kk(1,1))),...... |
| 347c0 | 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 2c 0a 20 20 20 20 20 20 20 20 20 | .if.active_images(kk),.......... |
| 347e0 | 66 70 72 69 6e 74 66 28 31 2c 27 57 41 52 4e 49 4e 47 3a 20 43 61 6e 6e 6f 74 20 63 61 6c 69 62 | fprintf(1,'WARNING:.Cannot.calib |
| 34800 | 72 61 74 65 20 77 69 74 68 20 69 6d 61 67 65 20 25 64 2e 20 4e 65 65 64 20 74 6f 20 65 78 74 72 | rate.with.image.%d..Need.to.extr |
| 34820 | 61 63 74 20 67 72 69 64 20 63 6f 72 6e 65 72 73 20 66 69 72 73 74 2e 5c 6e 27 2c 6b 6b 29 0a 20 | act.grid.corners.first.\n',kk).. |
| 34840 | 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 53 65 74 20 | ........fprintf(1,'.........Set. |
| 34860 | 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 25 64 29 3d 31 3b 20 61 6e 64 20 72 75 6e 20 45 78 74 | active_images(%d)=1;.and.run.Ext |
| 34880 | 72 61 63 74 20 67 72 69 64 20 63 6f 72 6e 65 72 73 2e 5c 6e 27 2c 6b 6b 29 0a 20 20 20 20 20 20 | ract.grid.corners.\n',kk)....... |
| 348a0 | 65 6e 64 3b 0a 20 20 20 20 20 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 20 3d 20 30 | end;.......active_images(kk).=.0 |
| 348c0 | 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b | ;....end;....if.active_images(kk |
| 348e0 | 29 2c 0a 20 20 20 20 20 20 65 76 61 6c 28 5b 27 48 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 | ),.......eval(['H_'.num2str(kk). |
| 34900 | 27 20 3d 20 63 6f 6d 70 75 74 65 5f 68 6f 6d 6f 67 72 61 70 68 79 28 78 5f 6b 6b 2c 58 5f 6b 6b | '.=.compute_homography(x_kk,X_kk |
| 34920 | 28 31 3a 32 2c 3a 29 29 3b 27 5d 29 3b 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 65 76 61 6c | (1:2,:));']);....else.......eval |
| 34940 | 28 5b 27 48 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 | (['H_'.num2str(kk).'.=.NaN*ones( |
| 34960 | 33 2c 33 29 3b 27 5d 29 3b 0a 20 20 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 63 68 65 63 6b 5f 61 63 | 3,3);']);....end;.end;..check_ac |
| 34980 | 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 0a 25 20 69 6e 69 74 69 61 6c 20 67 75 65 73 73 20 66 6f | tive_images;..%.initial.guess.fo |
| 349a0 | 72 20 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 61 6e 64 20 64 69 73 74 6f 72 74 69 6f 6e | r.principal.point.and.distortion |
| 349c0 | 3a 0a 0a 69 66 20 7e 65 78 69 73 74 28 27 6e 78 27 29 2c 20 5b 6e 79 2c 6e 78 5d 20 3d 20 73 69 | :..if.~exist('nx'),.[ny,nx].=.si |
| 349e0 | 7a 65 28 49 29 3b 20 65 6e 64 3b 0a 0a 63 5f 69 6e 69 74 20 3d 20 5b 6e 78 3b 6e 79 5d 2f 32 20 | ze(I);.end;..c_init.=.[nx;ny]/2. |
| 34a00 | 2d 20 30 2e 35 3b 20 25 20 69 6e 69 74 69 61 6c 69 7a 65 20 61 74 20 74 68 65 20 63 65 6e 74 65 | -.0.5;.%.initialize.at.the.cente |
| 34a20 | 72 20 6f 66 20 74 68 65 20 69 6d 61 67 65 0a 6b 5f 69 6e 69 74 20 3d 20 5b 30 3b 30 3b 30 3b 30 | r.of.the.image.k_init.=.[0;0;0;0 |
| 34a40 | 5d 3b 20 25 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 6f 20 7a 65 72 6f 20 28 6e 6f 20 64 69 73 74 | ];.%.initialize.to.zero.(no.dist |
| 34a60 | 6f 72 74 69 6f 6e 29 0a 0a 0a 0a 25 20 43 6f 6d 70 75 74 65 20 65 78 70 6c 69 63 69 74 65 6c 79 | ortion)....%.Compute.explicitely |
| 34a80 | 20 74 68 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 20 75 73 69 6e 67 20 61 6c 6c 20 74 68 65 20 | .the.focal.length.using.all.the. |
| 34aa0 | 28 6d 75 74 75 61 6c 6c 79 20 6f 72 74 68 6f 67 6f 6e 61 6c 29 20 76 61 6e 69 73 68 69 6e 67 20 | (mutually.orthogonal).vanishing. |
| 34ac0 | 70 6f 69 6e 74 73 0a 25 20 6e 6f 74 65 3a 20 54 68 65 20 76 61 6e 69 68 69 6e 67 20 70 6f 69 6e | points.%.note:.The.vanihing.poin |
| 34ae0 | 74 73 20 61 72 65 20 68 69 64 64 65 6e 20 69 6e 20 74 68 65 20 70 6c 61 6e 61 72 20 63 6f 6c 6c | ts.are.hidden.in.the.planar.coll |
| 34b00 | 69 6e 65 61 74 69 6f 6e 73 20 48 5f 6b 6b 0a 0a 41 20 3d 20 5b 5d 3b 0a 62 20 3d 20 5b 5d 3b 0a | ineations.H_kk..A.=.[];.b.=.[];. |
| 34b20 | 0a 25 20 6d 61 74 72 69 78 20 74 68 61 74 20 73 75 62 74 72 61 63 74 20 74 68 65 20 70 72 69 6e | .%.matrix.that.subtract.the.prin |
| 34b40 | 63 69 70 61 6c 20 70 6f 69 6e 74 3a 0a 53 75 62 5f 63 63 20 3d 20 5b 31 20 30 20 2d 63 5f 69 6e | cipal.point:.Sub_cc.=.[1.0.-c_in |
| 34b60 | 69 74 28 31 29 3b 30 20 31 20 2d 63 5f 69 6e 69 74 28 32 29 3b 30 20 30 20 31 5d 3b 0a 0a 66 6f | it(1);0.1.-c_init(2);0.0.1];..fo |
| 34b80 | 72 20 6b 6b 3d 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 0a 20 20 20 69 66 20 61 63 74 69 76 65 5f 69 | r.kk=1:n_ima,........if.active_i |
| 34ba0 | 6d 61 67 65 73 28 6b 6b 29 2c 0a 20 20 20 20 20 20 0a 20 20 20 09 65 76 61 6c 28 5b 27 48 6b 6b | mages(kk),............eval(['Hkk |
| 34bc0 | 20 3d 20 48 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 | .=.H_'.num2str(kk).';']);....... |
| 34be0 | 20 09 48 6b 6b 20 3d 20 53 75 62 5f 63 63 20 2a 20 48 6b 6b 3b 20 20 20 0a 20 20 20 0a 20 20 20 | ..Hkk.=.Sub_cc.*.Hkk;........... |
| 34c00 | 09 25 20 45 78 74 72 61 63 74 20 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 73 20 28 64 69 72 | .%.Extract.vanishing.points.(dir |
| 34c20 | 65 63 74 20 61 6e 64 20 64 69 61 67 6f 6e 61 6c 73 29 3a 0a 20 20 20 0a 20 20 20 09 56 5f 68 6f | ect.and.diagonals):.........V_ho |
| 34c40 | 72 69 5f 70 69 78 20 3d 20 48 6b 6b 28 3a 2c 31 29 3b 0a 20 20 20 09 56 5f 76 65 72 74 5f 70 69 | ri_pix.=.Hkk(:,1);.....V_vert_pi |
| 34c60 | 78 20 3d 20 48 6b 6b 28 3a 2c 32 29 3b 0a 20 20 20 09 56 5f 64 69 61 67 31 5f 70 69 78 20 3d 20 | x.=.Hkk(:,2);.....V_diag1_pix.=. |
| 34c80 | 28 48 6b 6b 28 3a 2c 31 29 2b 48 6b 6b 28 3a 2c 32 29 29 2f 32 3b 0a 20 20 20 09 56 5f 64 69 61 | (Hkk(:,1)+Hkk(:,2))/2;.....V_dia |
| 34ca0 | 67 32 5f 70 69 78 20 3d 20 28 48 6b 6b 28 3a 2c 31 29 2d 48 6b 6b 28 3a 2c 32 29 29 2f 32 3b 0a | g2_pix.=.(Hkk(:,1)-Hkk(:,2))/2;. |
| 34cc0 | 20 20 20 0a 20 20 20 09 56 5f 68 6f 72 69 5f 70 69 78 20 3d 20 56 5f 68 6f 72 69 5f 70 69 78 2f | ........V_hori_pix.=.V_hori_pix/ |
| 34ce0 | 6e 6f 72 6d 28 56 5f 68 6f 72 69 5f 70 69 78 29 3b 0a 20 20 20 09 56 5f 76 65 72 74 5f 70 69 78 | norm(V_hori_pix);.....V_vert_pix |
| 34d00 | 20 3d 20 56 5f 76 65 72 74 5f 70 69 78 2f 6e 6f 72 6d 28 56 5f 76 65 72 74 5f 70 69 78 29 3b 0a | .=.V_vert_pix/norm(V_vert_pix);. |
| 34d20 | 20 20 20 09 56 5f 64 69 61 67 31 5f 70 69 78 20 3d 20 56 5f 64 69 61 67 31 5f 70 69 78 2f 6e 6f | ....V_diag1_pix.=.V_diag1_pix/no |
| 34d40 | 72 6d 28 56 5f 64 69 61 67 31 5f 70 69 78 29 3b 0a 20 20 20 09 56 5f 64 69 61 67 32 5f 70 69 78 | rm(V_diag1_pix);.....V_diag2_pix |
| 34d60 | 20 3d 20 56 5f 64 69 61 67 32 5f 70 69 78 2f 6e 6f 72 6d 28 56 5f 64 69 61 67 32 5f 70 69 78 29 | .=.V_diag2_pix/norm(V_diag2_pix) |
| 34d80 | 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 61 31 20 3d 20 56 5f 68 6f 72 69 5f 70 69 78 28 31 | ;..............a1.=.V_hori_pix(1 |
| 34da0 | 29 3b 0a 20 20 20 20 20 20 62 31 20 3d 20 56 5f 68 6f 72 69 5f 70 69 78 28 32 29 3b 0a 20 20 20 | );.......b1.=.V_hori_pix(2);.... |
| 34dc0 | 20 20 20 63 31 20 3d 20 56 5f 68 6f 72 69 5f 70 69 78 28 33 29 3b 0a 20 20 20 20 20 20 0a 20 20 | ...c1.=.V_hori_pix(3);.......... |
| 34de0 | 20 09 61 32 20 3d 20 56 5f 76 65 72 74 5f 70 69 78 28 31 29 3b 0a 20 20 20 09 62 32 20 3d 20 56 | ..a2.=.V_vert_pix(1);.....b2.=.V |
| 34e00 | 5f 76 65 72 74 5f 70 69 78 28 32 29 3b 0a 20 20 20 09 63 32 20 3d 20 56 5f 76 65 72 74 5f 70 69 | _vert_pix(2);.....c2.=.V_vert_pi |
| 34e20 | 78 28 33 29 3b 0a 20 20 20 09 0a 20 20 20 09 61 33 20 3d 20 56 5f 64 69 61 67 31 5f 70 69 78 28 | x(3);..........a3.=.V_diag1_pix( |
| 34e40 | 31 29 3b 0a 20 20 20 09 62 33 20 3d 20 56 5f 64 69 61 67 31 5f 70 69 78 28 32 29 3b 0a 20 20 20 | 1);.....b3.=.V_diag1_pix(2);.... |
| 34e60 | 09 63 33 20 3d 20 56 5f 64 69 61 67 31 5f 70 69 78 28 33 29 3b 0a 20 20 20 09 0a 20 20 20 09 61 | .c3.=.V_diag1_pix(3);..........a |
| 34e80 | 34 20 3d 20 56 5f 64 69 61 67 32 5f 70 69 78 28 31 29 3b 0a 20 20 20 09 62 34 20 3d 20 56 5f 64 | 4.=.V_diag2_pix(1);.....b4.=.V_d |
| 34ea0 | 69 61 67 32 5f 70 69 78 28 32 29 3b 0a 20 20 20 09 63 34 20 3d 20 56 5f 64 69 61 67 32 5f 70 69 | iag2_pix(2);.....c4.=.V_diag2_pi |
| 34ec0 | 78 28 33 29 3b 0a 20 09 0a 20 09 20 20 20 41 5f 6b 6b 20 3d 20 5b 61 31 2a 61 32 20 20 62 31 2a | x(3);.........A_kk.=.[a1*a2..b1* |
| 34ee0 | 62 32 3b 0a 09 20 20 20 20 09 20 20 20 20 61 33 2a 61 34 20 20 62 33 2a 62 34 5d 3b 0a 20 20 20 | b2;...........a3*a4..b3*b4];.... |
| 34f00 | 0a 20 20 20 09 62 5f 6b 6b 20 3d 20 2d 5b 63 31 2a 63 32 3b 63 33 2a 63 34 5d 3b 0a 20 20 20 09 | .....b_kk.=.-[c1*c2;c3*c4];..... |
| 34f20 | 0a 09 09 0a 20 20 20 09 41 20 3d 20 5b 41 3b 41 5f 6b 6b 5d 3b 0a 20 20 20 09 62 20 3d 20 5b 62 | ........A.=.[A;A_kk];.....b.=.[b |
| 34f40 | 3b 62 5f 6b 6b 5d 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a 65 6e 64 3b 0a | ;b_kk];...........end;.....end;. |
| 34f60 | 0a 0a 25 20 75 73 65 20 61 6c 6c 20 74 68 65 20 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 73 | ..%.use.all.the.vanishing.points |
| 34f80 | 20 74 6f 20 65 73 74 69 6d 61 74 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 3a 0a 0a 66 5f 69 6e | .to.estimate.focal.length:..f_in |
| 34fa0 | 69 74 20 3d 20 73 71 72 74 28 61 62 73 28 31 2e 2f 28 69 6e 76 28 41 27 2a 41 29 2a 41 27 2a 62 | it.=.sqrt(abs(1./(inv(A'*A)*A'*b |
| 34fc0 | 29 29 29 3b 20 25 20 69 66 20 75 73 69 6e 67 20 61 20 74 77 6f 2d 66 6f 63 61 6c 20 6d 6f 64 65 | )));.%.if.using.a.two-focal.mode |
| 34fe0 | 6c 20 66 6f 72 20 69 6e 69 74 69 61 6c 20 67 75 65 73 73 0a 0a 25 66 5f 69 6e 69 74 20 3d 20 73 | l.for.initial.guess..%f_init.=.s |
| 35000 | 71 72 74 28 62 27 2a 28 73 75 6d 28 41 27 29 27 29 20 2f 20 28 62 27 2a 62 29 29 20 2a 20 6f 6e | qrt(b'*(sum(A')')./.(b'*b)).*.on |
| 35020 | 65 73 28 32 2c 31 29 3b 20 25 20 69 66 20 73 69 6e 67 6c 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 | es(2,1);.%.if.single.focal.lengt |
| 35040 | 68 20 6d 6f 64 65 6c 20 69 73 20 75 73 65 64 0a 0a 0a 25 20 47 6c 6f 62 61 6c 20 63 61 6c 69 62 | h.model.is.used...%.Global.calib |
| 35060 | 72 61 74 69 6f 6e 20 6d 61 74 72 69 78 20 28 69 6e 69 74 69 61 6c 20 67 75 65 73 73 29 3a 0a 20 | ration.matrix.(initial.guess):.. |
| 35080 | 20 20 09 0a 4b 4b 20 3d 20 5b 66 5f 69 6e 69 74 28 31 29 20 30 20 63 5f 69 6e 69 74 28 31 29 3b | ....KK.=.[f_init(1).0.c_init(1); |
| 350a0 | 30 20 66 5f 69 6e 69 74 28 32 29 20 63 5f 69 6e 69 74 28 32 29 3b 20 30 20 30 20 31 5d 3b 0a 69 | 0.f_init(2).c_init(2);.0.0.1];.i |
| 350c0 | 6e 76 5f 4b 4b 20 3d 20 69 6e 76 28 4b 4b 29 3b 0a 0a 0a 63 63 20 3d 20 63 5f 69 6e 69 74 3b 0a | nv_KK.=.inv(KK);...cc.=.c_init;. |
| 350e0 | 66 63 20 3d 20 66 5f 69 6e 69 74 3b 0a 6b 63 20 3d 20 6b 5f 69 6e 69 74 3b 0a 0a 0a 66 70 72 69 | fc.=.f_init;.kc.=.k_init;...fpri |
| 35100 | 6e 74 66 28 31 2c 27 5c 6e 5c 6e 43 61 6c 69 62 72 61 74 69 6f 6e 20 70 61 72 61 6d 65 74 65 72 | ntf(1,'\n\nCalibration.parameter |
| 35120 | 73 20 61 66 74 65 72 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 3a 5c 6e 5c 6e 27 29 3b 0a 66 | s.after.initialization:\n\n');.f |
| 35140 | 70 72 69 6e 74 66 28 31 2c 27 46 6f 63 61 6c 20 4c 65 6e 67 74 68 3a 20 20 20 20 20 66 63 20 3d | printf(1,'Focal.Length:.....fc.= |
| 35160 | 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 66 63 29 3b 0a 66 70 72 69 6e 74 | .[.%3.5f...%3.5f]\n',fc);.fprint |
| 35180 | 66 28 31 2c 27 50 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 3a 20 20 63 63 20 3d 20 5b 20 25 33 | f(1,'Principal.point:..cc.=.[.%3 |
| 351a0 | 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 63 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 | .5f...%3.5f]\n',cc);.fprintf(1,' |
| 351c0 | 44 69 73 74 6f 72 74 69 6f 6e 3a 20 20 20 20 20 20 20 6b 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 | Distortion:.......kc.=.[.%3.5f.. |
| 351e0 | 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 5c 6e 27 2c 6b 63 29 | .%3.5f...%3.5f...%3.5f]\n\n',kc) |
| 35200 | 3b 0a 2a 6f 6e 65 73 28 31 2c 33 29 29 3b 0a 64 78 64 31 64 6f 6d 20 3d 20 64 78 64 31 64 6f 6d | ;.*ones(1,3));.dxd1dom.=.dxd1dom |
| 35220 | 20 2b 20 63 6f 65 66 66 2e 2a 20 64 78 64 6f 6d 3b 0a 0a 64 78 64 31 64 54 20 3d 20 7a 65 72 6f | .+.coeff.*.dxdom;..dxd1dT.=.zero |
| 35240 | 73 28 32 2a 6e 2c 33 29 3b 0a 64 78 64 31 64 54 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 28 78 | s(2*n,3);.dxd1dT(1:2:end,:).=.(x |
| 35260 | 28 31 2c 3a 29 27 2a 6f 6e 65 73 28 31 2c 33 29 29 20 2e 2a 20 64 63 64 69 73 74 64 54 3b 0a 64 | (1,:)'*ones(1,3))..*.dcdistdT;.d |
| 35280 | 78 64 31 64 54 28 32 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 28 78 28 32 2c 3a 29 27 2a 6f 6e 65 73 | xd1dT(2:2:end,:).=.(x(2,:)'*ones |
| 352a0 | 28 31 2c 33 29 29 20 2e 2a 20 64 63 64 69 73 74 64 54 3b 0a 64 78 64 31 64 54 20 3d 20 64 78 64 | (1,3))..*.dcdistdT;.dxd1dT.=.dxd |
| 352c0 | 31 64 54 20 2b 20 63 6f 65 66 66 2e 2a 20 64 78 64 54 3b 0a 0a 64 78 64 31 64 6b 20 3d 20 7a 65 | 1dT.+.coeff.*.dxdT;..dxd1dk.=.ze |
| 352e0 | 72 6f 73 28 32 2a 6e 2c 34 29 3b 0a 64 78 64 31 64 6b 28 31 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 | ros(2*n,4);.dxd1dk(1:2:end,:).=. |
| 35300 | 28 78 28 31 2c 3a 29 27 2a 6f 6e 65 73 28 31 2c 34 29 29 20 2e 2a 20 64 63 64 69 73 74 64 6b 3b | (x(1,:)'*ones(1,4))..*.dcdistdk; |
| 35320 | 0a 64 78 64 31 64 6b 28 32 3a 32 3a 65 6e 64 2c 3a 29 20 3d 20 28 78 28 32 2c 3a 29 27 2a 6f 6e | .dxd1dk(2:2:end,:).=.(x(2,:)'*on |
| 35340 | 65 73 28 31 2c 34 29 29 20 2e 2a 20 64 63 64 69 73 74 64 6b 3b 0a 0a 0a 0a 25 20 74 61 6e 67 65 | es(1,4))..*.dcdistdk;....%.tange |
| 35360 | 6e 74 69 61 6c 20 64 69 73 74 6f 72 74 69 6f 6e 3a 0a 0a 61 31 20 3d 20 32 2e 2a 78 28 31 2c 3a | ntial.distortion:..a1.=.2.*x(1,: |
| 35380 | 29 2e 2a 78 28 32 2c 3a 29 3b 0a 61 32 20 3d 20 72 32 20 2b 20 32 2a 78 28 31 2c 3a 29 2e 5e 32 | ).*x(2,:);.a2.=.r2.+.2*x(1,:).^2 |
| 353a0 | 3b 0a 61 33 20 3d 20 72 32 20 2b 20 32 2a 78 28 32 2c 3a 29 2e 5e 32 3b 0a 0a 64 65 6c 74 61 5f | ;.a3.=.r2.+.2*x(2,:).^2;..delta_ |
| 353c0 | 78 20 3d 20 5b 6b 28 33 29 2a 61 31 20 2b 20 6b 28 34 29 2a 61 32 20 3b 0a 20 20 20 6b 28 33 29 | x.=.[k(3)*a1.+.k(4)*a2.;....k(3) |
| 353e0 | 20 2a 20 61 33 20 2b 20 6b 28 34 29 2a 61 31 5d 3b 0a 0a 0a 64 64 65 6c 74 61 5f 78 64 78 20 3d | .*.a3.+.k(4)*a1];...ddelta_xdx.= |
| 35400 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 2e 6d 00 | TOOLBOX_calib/mean_std_robust.m. |
| 35420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 35440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 35460 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 35480 | 20 20 20 20 31 34 30 20 20 37 30 32 34 30 33 37 33 33 37 20 20 31 31 37 34 34 00 20 00 00 00 00 | ....140..7024037337..11744...... |
| 354a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 354c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 354e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 35500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 35520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 35540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 35560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 35580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 355a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 355c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 355e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 35600 | 66 75 6e 63 74 69 6f 6e 20 5b 6d 2c 73 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 | function.[m,s].=.mean_std_robust |
| 35620 | 28 78 29 3b 0a 0a 78 20 3d 20 78 28 3a 29 3b 0a 0a 6d 20 3d 20 6d 65 64 69 61 6e 28 78 29 3b 0a | (x);..x.=.x(:);..m.=.median(x);. |
| 35640 | 0a 73 20 3d 20 6d 65 64 69 61 6e 28 61 62 73 28 78 20 2d 20 6d 29 29 2a 31 2e 34 38 33 36 3b 0a | .s.=.median(abs(x.-.m))*1.4836;. |
| 35660 | 65 2e 6d 00 00 00 07 70 00 02 36 b5 00 20 00 11 63 68 65 63 6b 5f 70 6c 61 6e 61 72 69 74 79 2e | e.m....p..6.....check_planarity. |
| 35680 | 6d 00 6e 63 00 00 07 88 00 02 36 b6 00 1c 00 0e 63 6f 6e 76 65 72 74 5f 6f 75 6c 75 2e 6d 00 72 | m.nc......6.....convert_oulu.m.r |
| 356a0 | 00 00 07 9c 00 02 36 b7 00 18 00 0b 6e 6f 72 6d 61 6c 69 7a 65 2e 6d 00 00 00 07 b4 00 02 36 b8 | ......6.....normalize.m.......6. |
| 356c0 | 00 1c 00 0e 72 69 67 69 64 5f 6d 6f 74 69 6f 6e 2e 6d 00 6d 00 00 07 d8 00 02 36 b9 00 28 00 18 | ....rigid_motion.m.m......6..(.. |
| 356e0 | 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 69 6e 69 74 2e 6d 00 00 07 d8 00 00 08 00 | compute_extrinsic_init.m........ |
| 35700 | 00 02 36 ba 00 28 00 1a 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 72 65 66 69 6e 65 | ..6..(..compute_extrinsic_refine |
| 35720 | 2e 6d 00 00 00 00 0a 00 00 02 36 bb 00 24 00 15 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 | .m........6..$..go_calib_optim_i |
| 35740 | 74 65 72 2e 6d 00 00 70 54 68 65 20 63 61 6d 65 72 61 20 6d 61 74 72 69 78 20 28 63 6f 6e 74 61 | ter.m..pThe.camera.matrix.(conta |
| 35760 | 69 6e 69 6e 67 20 66 63 20 61 6e 64 20 63 63 29 0a 25 0a 25 4d 65 74 68 6f 64 3a 20 43 6f 6d 70 | ining.fc.and.cc).%.%Method:.Comp |
| 35780 | 75 74 65 73 20 74 68 65 20 70 6c 61 6e 61 72 20 68 6f 6d 6f 67 72 61 70 68 69 65 73 20 48 5f 31 | utes.the.planar.homographies.H_1 |
| 357a0 | 2c 20 48 5f 32 2c 20 48 5f 33 2c 20 2e 2e 2e 20 61 6e 64 20 63 6f 6d 70 75 74 65 73 0a 25 20 20 | ,.H_2,.H_3,.....and.computes.%.. |
| 357c0 | 20 20 20 20 20 20 74 68 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 20 66 63 20 66 72 6f 6d 20 6f | ......the.focal.length.fc.from.o |
| 357e0 | 72 74 68 6f 67 6f 6e 61 6c 20 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 73 20 63 6f 6e 73 74 | rthogonal.vanishing.points.const |
| 35800 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 72 75 6e 5f 65 72 72 6f 72 5f 61 6e 61 6c 79 73 69 73 | TOOLBOX_calib/run_error_analysis |
| 35820 | 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .m.............................. |
| 35840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 35860 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 35880 | 20 20 20 32 30 30 32 20 20 37 30 32 34 30 33 37 33 35 33 20 20 31 32 35 31 31 00 20 00 00 00 00 | ...2002..7024037353..12511...... |
| 358a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 358c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 358e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 35900 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 35920 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 35940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 35960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 35980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 359a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 359c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 359e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 35a00 | 25 25 25 20 50 72 6f 67 72 61 6d 20 74 68 61 74 20 6c 61 75 6e 63 68 73 20 74 68 65 20 63 6f 6d | %%%.Program.that.launchs.the.com |
| 35a20 | 70 6c 65 74 65 20 0a 0a 66 6f 72 20 4e 5f 69 6d 61 5f 61 63 74 69 76 65 20 3d 20 31 3a 33 30 2c | plete...for.N_ima_active.=.1:30, |
| 35a40 | 0a 20 20 20 0a 20 20 20 65 72 72 6f 72 5f 61 6e 61 6c 79 73 69 73 3b 0a 20 20 20 0a 65 6e 64 3b | ........error_analysis;.....end; |
| 35a60 | 0a 0a 0a 0a 72 65 74 75 72 6e 3b 0a 0a 0a 66 20 3d 20 5b 5d 3b 0a 66 5f 73 74 64 20 3d 20 5b 5d | ....return;...f.=.[];.f_std.=.[] |
| 35a80 | 3b 0a 0a 63 20 3d 20 5b 5d 3b 0a 63 5f 73 74 64 20 3d 20 5b 5d 3b 0a 0a 6b 20 3d 20 5b 5d 3b 0a | ;..c.=.[];.c_std.=.[];..k.=.[];. |
| 35aa0 | 6b 5f 73 74 64 20 3d 20 5b 5d 3b 0a 0a 4e 4e 20 3d 20 33 30 3b 0a 0a 66 6f 72 20 72 72 20 3d 20 | k_std.=.[];..NN.=.30;..for.rr.=. |
| 35ac0 | 31 3a 4e 4e 2c 0a 20 20 20 0a 20 20 20 6c 6f 61 64 28 5b 27 43 61 6c 69 62 5f 41 63 63 75 72 61 | 1:NN,........load(['Calib_Accura |
| 35ae0 | 63 69 65 73 5f 27 20 6e 75 6d 32 73 74 72 28 72 72 29 5d 29 3b 0a 20 20 20 0a 20 20 20 5b 6d 31 | cies_'.num2str(rr)]);........[m1 |
| 35b00 | 2c 73 31 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 28 66 63 5f 6c 69 73 74 28 31 | ,s1].=.mean_std_robust(fc_list(1 |
| 35b20 | 2c 3a 29 29 3b 0a 20 20 20 5b 6d 32 2c 73 32 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 | ,:));....[m2,s2].=.mean_std_robu |
| 35b40 | 73 74 28 66 63 5f 6c 69 73 74 28 32 2c 3a 29 29 3b 0a 20 20 20 0a 20 20 20 66 20 3d 20 5b 66 20 | st(fc_list(2,:));........f.=.[f. |
| 35b60 | 5b 6d 31 3b 6d 32 5d 5d 3b 0a 20 20 20 66 5f 73 74 64 20 3d 20 5b 66 5f 73 74 64 20 5b 73 31 3b | [m1;m2]];....f_std.=.[f_std.[s1; |
| 35b80 | 73 32 5d 5d 3b 0a 20 20 20 0a 20 20 20 5b 6d 31 2c 73 31 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f | s2]];........[m1,s1].=.mean_std_ |
| 35ba0 | 72 6f 62 75 73 74 28 63 63 5f 6c 69 73 74 28 31 2c 3a 29 29 3b 0a 20 20 20 5b 6d 32 2c 73 32 5d | robust(cc_list(1,:));....[m2,s2] |
| 35bc0 | 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 28 63 63 5f 6c 69 73 74 28 32 2c 3a 29 29 | .=.mean_std_robust(cc_list(2,:)) |
| 35be0 | 3b 0a 20 20 20 0a 20 20 20 63 20 3d 20 5b 63 20 5b 6d 31 3b 6d 32 5d 5d 3b 0a 20 20 20 63 5f 73 | ;........c.=.[c.[m1;m2]];....c_s |
| 35c00 | 74 64 20 3d 20 5b 63 5f 73 74 64 20 5b 73 31 3b 73 32 5d 5d 3b 0a 20 20 20 20 20 20 0a 20 20 20 | td.=.[c_std.[s1;s2]];........... |
| 35c20 | 5b 6d 31 2c 73 31 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 28 6b 63 5f 6c 69 73 | [m1,s1].=.mean_std_robust(kc_lis |
| 35c40 | 74 28 31 2c 3a 29 29 3b 0a 20 20 20 5b 6d 32 2c 73 32 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 | t(1,:));....[m2,s2].=.mean_std_r |
| 35c60 | 6f 62 75 73 74 28 6b 63 5f 6c 69 73 74 28 32 2c 3a 29 29 3b 0a 20 20 20 5b 6d 33 2c 73 33 5d 20 | obust(kc_list(2,:));....[m3,s3]. |
| 35c80 | 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 28 6b 63 5f 6c 69 73 74 28 33 2c 3a 29 29 3b | =.mean_std_robust(kc_list(3,:)); |
| 35ca0 | 0a 20 20 20 5b 6d 34 2c 73 34 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 28 6b 63 | ....[m4,s4].=.mean_std_robust(kc |
| 35cc0 | 5f 6c 69 73 74 28 34 2c 3a 29 29 3b 0a 20 20 20 0a 20 20 20 6b 20 3d 20 5b 6b 20 5b 6d 31 3b 6d | _list(4,:));........k.=.[k.[m1;m |
| 35ce0 | 32 3b 6d 33 3b 6d 34 5d 5d 3b 0a 20 20 20 6b 5f 73 74 64 20 3d 20 5b 6b 5f 73 74 64 20 5b 73 31 | 2;m3;m4]];....k_std.=.[k_std.[s1 |
| 35d00 | 3b 73 32 3b 73 33 3b 73 34 5d 5d 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 66 69 67 75 72 65 28 31 29 | ;s2;s3;s4]];.....end;..figure(1) |
| 35d20 | 3b 0a 65 72 72 6f 72 62 61 72 28 5b 31 3a 4e 4e 3b 31 3a 4e 4e 5d 27 2c 66 27 2c 66 5f 73 74 64 | ;.errorbar([1:NN;1:NN]',f',f_std |
| 35d40 | 27 29 3b 0a 66 69 67 75 72 65 28 32 29 3b 0a 65 72 72 6f 72 62 61 72 28 5b 31 3a 4e 4e 3b 31 3a | ');.figure(2);.errorbar([1:NN;1: |
| 35d60 | 4e 4e 5d 27 2c 63 27 2c 63 5f 73 74 64 27 29 3b 0a 66 69 67 75 72 65 28 33 29 3b 0a 65 72 72 6f | NN]',c',c_std');.figure(3);.erro |
| 35d80 | 72 62 61 72 28 5b 31 3a 4e 4e 3b 31 3a 4e 4e 3b 31 3a 4e 4e 3b 31 3a 4e 4e 5d 27 2c 6b 27 2c 6b | rbar([1:NN;1:NN;1:NN;1:NN]',k',k |
| 35da0 | 5f 73 74 64 27 29 3b 0a 0a 66 69 67 75 72 65 28 34 29 3b 0a 73 65 6d 69 6c 6f 67 79 28 66 5f 73 | _std');..figure(4);.semilogy(f_s |
| 35dc0 | 74 64 27 29 3b 0a 0a 66 69 67 75 72 65 28 35 29 3b 0a 73 65 6d 69 6c 6f 67 79 28 63 5f 73 74 64 | td');..figure(5);.semilogy(c_std |
| 35de0 | 27 29 3b 0a 0a 66 69 67 75 72 65 28 36 29 3b 0a 73 65 6d 69 6c 6f 67 79 28 6b 5f 73 74 64 27 29 | ');..figure(6);.semilogy(k_std') |
| 35e00 | 3b 0a 73 2e 0a 25 49 6e 20 74 68 65 20 66 75 74 75 72 65 2c 20 61 20 6d 6f 72 65 20 67 65 6e 65 | ;.s..%In.the.future,.a.more.gene |
| 35e20 | 72 61 6c 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 74 68 65 72 65 20 28 77 6f 72 6b | ral.function.will.be.there.(work |
| 35e40 | 69 6e 67 20 77 69 74 68 20 33 44 20 72 69 67 73 20 61 73 20 77 65 6c 6c 29 2e 0a 0a 0a 0a 63 68 | ing.with.3D.rigs.as.well).....ch |
| 35e60 | 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 0a 69 66 20 7e 65 78 69 73 74 28 5b 27 | eck_active_images;..if.~exist([' |
| 35e80 | 78 5f 27 20 6e 75 6d 32 73 74 72 28 69 6e 64 5f 61 63 74 69 76 65 28 31 29 29 20 5d 29 2c 0a 20 | x_'.num2str(ind_active(1)).]),.. |
| 35ea0 | 20 20 63 6c 69 63 6b 5f 63 61 6c 69 62 3b 0a 65 6e 64 3b 0a 0a 0a 66 70 72 69 6e 74 66 28 31 2c | ..click_calib;.end;...fprintf(1, |
| 35ec0 | 27 5c 6e 49 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e 74 72 69 6e 73 | '\nInitialization.of.the.intrins |
| 35ee0 | 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 2d 20 4e 75 6d 62 65 72 20 6f 66 20 69 6d 61 67 65 73 | ic.parameters.-.Number.of.images |
| 35f00 | 3a 20 25 64 5c 6e 27 2c 6c 65 6e 67 74 68 28 69 6e 64 5f 61 63 74 69 76 65 29 29 3b 0a 0a 0a 25 | :.%d\n',length(ind_active));...% |
| 35f20 | 20 49 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20 68 6f 6d 6f 67 72 61 70 68 69 65 73 3a 0a 0a 66 | .Initialize.the.homographies:..f |
| 35f40 | 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 65 76 61 6c 28 5b 27 78 5f 6b 6b 20 | or.kk.=.1:n_ima,....eval(['x_kk. |
| 35f60 | 3d 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c | =.x_'.num2str(kk).';']);....eval |
| 35f80 | 28 5b 27 58 5f 6b 6b 20 3d 20 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b | (['X_kk.=.X_'.num2str(kk).';']); |
| 35fa0 | 0a 20 20 20 69 66 20 28 69 73 6e 61 6e 28 78 5f 6b 6b 28 31 2c 31 29 29 29 2c 0a 20 20 20 20 20 | ....if.(isnan(x_kk(1,1))),...... |
| 35fc0 | 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 2c 0a 20 20 20 20 20 20 20 20 20 | .if.active_images(kk),.......... |
| 35fe0 | 66 70 72 69 6e 74 66 28 31 2c 27 57 41 52 4e 49 4e 47 3a 20 43 61 6e 6e 6f 74 20 63 61 6c 69 62 | fprintf(1,'WARNING:.Cannot.calib |
| 36000 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 68 65 63 6b 5f 63 6f 6e 76 65 72 67 65 6e 63 65 2e | TOOLBOX_calib/check_convergence. |
| 36020 | 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | m............................... |
| 36040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36060 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 36080 | 20 20 20 20 33 33 35 20 20 37 30 32 34 30 33 37 33 30 34 20 20 31 32 32 30 37 00 20 00 00 00 00 | ....335..7024037304..12207...... |
| 360a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 360c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 360e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 361a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 361c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 361e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36200 | 25 25 25 20 52 65 70 6c 61 79 20 74 68 65 20 73 65 74 20 6f 66 20 73 6f 6c 75 74 69 6f 6e 20 76 | %%%.Replay.the.set.of.solution.v |
| 36220 | 65 63 74 6f 72 73 3a 0a 0a 4e 5f 69 74 65 72 20 3d 20 73 69 7a 65 28 70 61 72 61 6d 5f 6c 69 73 | ectors:..N_iter.=.size(param_lis |
| 36240 | 74 2c 32 29 3b 0a 0a 66 6f 72 20 6e 6e 20 3d 20 31 3a 4e 5f 69 74 65 72 2c 0a 20 20 20 0a 20 20 | t,2);..for.nn.=.1:N_iter,....... |
| 36260 | 20 73 6f 6c 75 74 69 6f 6e 20 3d 20 70 61 72 61 6d 5f 6c 69 73 74 28 3a 2c 6e 6e 29 3b 0a 20 20 | .solution.=.param_list(:,nn);... |
| 36280 | 20 0a 20 20 20 65 78 74 72 61 63 74 5f 70 61 72 61 6d 65 74 65 72 73 3b 0a 20 20 20 63 6f 6d 70 | .....extract_parameters;....comp |
| 362a0 | 5f 65 72 72 6f 72 5f 63 61 6c 69 62 3b 0a 20 20 20 0a 20 20 20 65 78 74 5f 63 61 6c 69 62 3b 0a | _error_calib;........ext_calib;. |
| 362c0 | 20 20 20 0a 20 20 20 64 72 61 77 6e 6f 77 3b 0a 20 20 20 0a 20 20 20 0a 65 6e 64 3b 0a 6d 00 00 | .......drawnow;.........end;.m.. |
| 362e0 | 00 00 0a 00 00 02 36 bb 00 24 00 15 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 74 65 72 2e | ......6..$..go_calib_optim_iter. |
| 36300 | 6d 00 00 ba 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 28 66 63 5f 6c 69 73 74 28 31 | m....=.mean_std_robust(fc_list(1 |
| 36320 | 2c 3a 29 29 3b 0a 20 20 20 5b 6d 32 2c 73 32 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 | ,:));....[m2,s2].=.mean_std_robu |
| 36340 | 73 74 28 66 63 5f 6c 69 73 74 28 32 2c 3a 29 29 3b 0a 20 20 20 0a 20 20 20 66 20 3d 20 5b 66 20 | st(fc_list(2,:));........f.=.[f. |
| 36360 | 5b 6d 31 3b 6d 32 5d 5d 3b 0a 20 20 20 66 5f 73 74 64 20 3d 20 5b 66 5f 73 74 64 20 5b 73 31 3b | [m1;m2]];....f_std.=.[f_std.[s1; |
| 36380 | 73 32 5d 5d 3b 0a 20 20 20 0a 20 20 20 5b 6d 31 2c 73 31 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f | s2]];........[m1,s1].=.mean_std_ |
| 363a0 | 72 6f 62 75 73 74 28 63 63 5f 6c 69 73 74 28 31 2c 3a 29 29 3b 0a 20 20 20 5b 6d 32 2c 73 32 5d | robust(cc_list(1,:));....[m2,s2] |
| 363c0 | 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 28 63 63 5f 6c 69 73 74 28 32 2c 3a 29 29 | .=.mean_std_robust(cc_list(2,:)) |
| 363e0 | 3b 0a 20 20 20 0a 20 20 20 63 20 3d 20 5b 63 20 5b 6d 31 3b 6d 32 5d 5d 3b 0a 20 20 20 63 5f 73 | ;........c.=.[c.[m1;m2]];....c_s |
| 36400 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 68 65 63 6b 5f 70 6c 61 6e 61 72 69 74 79 2e 6d 00 | TOOLBOX_calib/check_planarity.m. |
| 36420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36460 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 36480 | 20 20 20 31 30 30 35 20 20 37 30 32 34 30 33 37 33 30 35 20 20 31 31 37 33 30 00 20 00 00 00 00 | ...1005..7024037305..11730...... |
| 364a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 364c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 364e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 365a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 365c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 365e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36600 | 25 20 43 68 65 63 6b 20 74 68 65 20 70 6c 61 6e 61 72 69 74 79 20 6f 66 20 61 20 73 74 72 75 63 | %.Check.the.planarity.of.a.struc |
| 36620 | 74 75 72 65 3a 0a 0a 58 20 3d 20 58 5f 31 3b 0a 4e 20 3d 20 73 69 7a 65 28 58 2c 32 29 3b 0a 0a | ture:..X.=.X_1;.N.=.size(X,2);.. |
| 36640 | 25 58 28 33 2c 3a 29 20 3d 20 30 2e 31 2a 72 61 6e 64 6e 28 31 2c 4e 29 3b 0a 0a 6f 6d 20 3d 20 | %X(3,:).=.0.1*randn(1,N);..om.=. |
| 36660 | 72 61 6e 64 28 33 2c 31 29 3b 0a 54 20 3d 20 31 30 2a 72 61 6e 64 28 33 2c 31 29 3b 0a 52 20 3d | rand(3,1);.T.=.10*rand(3,1);.R.= |
| 36680 | 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 29 3b 0a 0a 58 20 3d 20 52 20 2a 20 58 20 20 2b 20 54 2a | .rodrigues(om);..X.=.R.*.X..+.T* |
| 366a0 | 6f 6e 65 73 28 31 2c 4e 29 3b 0a 0a 0a 0a 0a 0a 0a 4e 20 3d 20 73 69 7a 65 28 58 2c 32 29 3b 0a | ones(1,N);.......N.=.size(X,2);. |
| 366c0 | 58 5f 6d 65 61 6e 20 3d 20 6d 65 61 6e 28 58 27 29 27 3b 0a 0a 59 20 3d 20 58 20 2d 20 28 58 5f | X_mean.=.mean(X')';..Y.=.X.-.(X_ |
| 366e0 | 6d 65 61 6e 2a 6f 6e 65 73 28 31 2c 4e 29 29 3b 0a 0a 59 59 20 3d 20 59 2a 59 27 3b 0a 0a 5b 55 | mean*ones(1,N));..YY.=.Y*Y';..[U |
| 36700 | 2c 53 2c 56 5d 20 3d 20 73 76 64 28 59 59 29 3b 0a 0a 72 20 3d 20 53 28 33 2c 33 29 2f 53 28 32 | ,S,V].=.svd(YY);..r.=.S(3,3)/S(2 |
| 36720 | 2c 32 29 3b 0a 0a 25 20 69 66 20 72 20 69 73 20 6c 65 73 73 20 74 68 61 6e 20 31 65 2d 34 3a 0a | ,2);..%.if.r.is.less.than.1e-4:. |
| 36740 | 0a 52 5f 74 72 61 6e 73 66 6f 72 6d 20 3d 20 56 27 3b 0a 54 5f 74 72 61 6e 73 66 6f 72 6d 20 3d | .R_transform.=.V';.T_transform.= |
| 36760 | 20 2d 28 56 27 29 2a 58 5f 6d 65 61 6e 3b 0a 0a 0a 25 20 54 68 72 65 73 68 20 66 6f 72 20 72 3a | .-(V')*X_mean;...%.Thresh.for.r: |
| 36780 | 20 31 65 2d 34 0a 0a 58 5f 6e 65 77 20 3d 20 52 5f 74 72 61 6e 73 66 6f 72 6d 2a 58 20 2b 20 54 | .1e-4..X_new.=.R_transform*X.+.T |
| 367a0 | 5f 74 72 61 6e 73 66 6f 72 6d 2a 6f 6e 65 73 28 31 2c 4e 29 3b 0a 0a 0a 25 20 49 66 20 58 63 20 | _transform*ones(1,N);...%.If.Xc. |
| 367c0 | 3d 20 52 63 20 2a 20 58 5f 6e 65 77 20 2b 20 54 63 2c 20 74 68 65 6e 20 58 63 20 3d 20 52 63 20 | =.Rc.*.X_new.+.Tc,.then.Xc.=.Rc. |
| 367e0 | 2a 20 52 5f 74 72 61 6e 73 66 6f 72 6d 20 2a 20 58 20 2b 20 54 63 20 2b 20 54 5f 74 72 61 6e 73 | *.R_transform.*.X.+.Tc.+.T_trans |
| 36800 | 66 6f 72 6d 0a 5b 63 5f 73 74 64 20 5b 73 31 3b 73 32 5d 5d 3b 0a 20 20 20 20 20 20 0a 20 20 20 | form.[c_std.[s1;s2]];........... |
| 36820 | 5b 6d 31 2c 73 31 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 28 6b 63 5f 6c 69 73 | [m1,s1].=.mean_std_robust(kc_lis |
| 36840 | 74 28 31 2c 3a 29 29 3b 0a 20 20 20 5b 6d 32 2c 73 32 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 | t(1,:));....[m2,s2].=.mean_std_r |
| 36860 | 6f 62 75 73 74 28 6b 63 5f 6c 69 73 74 28 32 2c 3a 29 29 3b 0a 20 20 20 5b 6d 33 2c 73 33 5d 20 | obust(kc_list(2,:));....[m3,s3]. |
| 36880 | 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 28 6b 63 5f 6c 69 73 74 28 33 2c 3a 29 29 3b | =.mean_std_robust(kc_list(3,:)); |
| 368a0 | 0a 20 20 20 5b 6d 34 2c 73 34 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 28 6b 63 | ....[m4,s4].=.mean_std_robust(kc |
| 368c0 | 5f 6c 69 73 74 28 34 2c 3a 29 29 3b 0a 20 20 20 0a 20 20 20 6b 20 3d 20 5b 6b 20 5b 6d 31 3b 6d | _list(4,:));........k.=.[k.[m1;m |
| 368e0 | 32 3b 6d 33 3b 6d 34 5d 5d 3b 0a 20 20 20 6b 5f 73 74 64 20 3d 20 5b 6b 5f 73 74 64 20 5b 73 31 | 2;m3;m4]];....k_std.=.[k_std.[s1 |
| 36900 | 3b 73 32 3b 73 33 3b 73 34 5d 5d 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 66 69 67 75 72 65 28 31 29 | ;s2;s3;s4]];.....end;..figure(1) |
| 36920 | 3b 0a 65 72 72 6f 72 62 61 72 28 5b 31 3a 4e 4e 3b 31 3a 4e 4e 5d 27 2c 66 27 2c 66 5f 73 74 64 | ;.errorbar([1:NN;1:NN]',f',f_std |
| 36940 | 27 29 3b 0a 66 69 67 75 72 65 28 32 29 3b 0a 65 72 72 6f 72 62 61 72 28 5b 31 3a 4e 4e 3b 31 3a | ');.figure(2);.errorbar([1:NN;1: |
| 36960 | 4e 4e 5d 27 2c 63 27 2c 63 5f 73 74 64 27 29 3b 0a 66 69 67 75 72 65 28 33 29 3b 0a 65 72 72 6f | NN]',c',c_std');.figure(3);.erro |
| 36980 | 72 62 61 72 28 5b 31 3a 4e 4e 3b 31 3a 4e 4e 3b 31 3a 4e 4e 3b 31 3a 4e 4e 5d 27 2c 6b 27 2c 6b | rbar([1:NN;1:NN;1:NN;1:NN]',k',k |
| 369a0 | 5f 73 74 64 27 29 3b 0a 0a 66 69 67 75 72 65 28 34 29 3b 0a 73 65 6d 69 6c 6f 67 79 28 66 5f 73 | _std');..figure(4);.semilogy(f_s |
| 369c0 | 74 64 27 29 3b 0a 0a 66 69 67 75 72 65 28 35 29 3b 0a 73 65 6d 69 6c 6f 67 79 28 63 5f 73 74 64 | td');..figure(5);.semilogy(c_std |
| 369e0 | 27 29 3b 0a 0a 66 69 67 75 72 65 28 36 29 3b 0a 73 65 6d 69 6c 6f 67 79 28 6b 5f 73 74 64 27 29 | ');..figure(6);.semilogy(k_std') |
| 36a00 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6f 6e 76 65 72 74 5f 6f 75 6c 75 2e 6d 00 00 00 00 | TOOLBOX_calib/convert_oulu.m.... |
| 36a20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36a40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36a60 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 36a80 | 20 20 20 31 30 30 32 20 20 37 30 32 34 30 33 37 33 31 35 20 20 31 31 33 31 32 00 20 00 00 00 00 | ...1002..7024037315..11312...... |
| 36aa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36ac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36ae0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36b00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36b20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36b40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36b60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36b80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36ba0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36bc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36be0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36c00 | 25 25 20 43 6f 6e 76 65 72 74 73 20 64 61 74 61 20 66 69 6c 65 20 66 72 6f 6d 20 6f 75 6c 75 20 | %%.Converts.data.file.from.oulu. |
| 36c20 | 74 6f 20 6d 69 6e 65 3a 0a 0a 6c 6f 61 64 20 63 61 64 65 6d 6f 2c 0a 6e 5f 69 6d 61 20 3d 20 30 | to.mine:..load.cademo,.n_ima.=.0 |
| 36c40 | 3b 0a 0a 6e 6f 5f 65 72 72 6f 72 20 3d 20 31 3b 0a 0a 69 69 20 3d 20 31 3b 0a 0a 77 68 69 6c 65 | ;..no_error.=.1;..ii.=.1;..while |
| 36c60 | 20 6e 6f 5f 65 72 72 6f 72 2c 0a 20 20 20 0a 20 20 20 64 61 74 61 6e 61 6d 65 20 3d 20 5b 27 64 | .no_error,........dataname.=.['d |
| 36c80 | 61 74 61 27 20 6e 75 6d 32 73 74 72 28 69 69 29 5d 3b 0a 20 20 20 0a 20 20 20 69 66 20 65 78 69 | ata'.num2str(ii)];........if.exi |
| 36ca0 | 73 74 28 64 61 74 61 6e 61 6d 65 29 2c 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 6e 5f 69 6d 61 | st(dataname),..............n_ima |
| 36cc0 | 20 3d 20 6e 5f 69 6d 61 20 2b 31 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 65 76 61 6c 28 5b | .=.n_ima.+1;..............eval([ |
| 36ce0 | 27 78 5f 27 20 6e 75 6d 32 73 74 72 28 69 69 29 20 27 3d 20 27 20 64 61 74 61 6e 61 6d 65 20 27 | 'x_'.num2str(ii).'=.'.dataname.' |
| 36d00 | 28 3a 2c 34 3a 35 29 27 27 3b 27 5d 29 0a 20 20 20 20 20 20 65 76 61 6c 28 5b 27 58 5f 27 20 6e | (:,4:5)'';']).......eval(['X_'.n |
| 36d20 | 75 6d 32 73 74 72 28 69 69 29 20 27 3d 20 27 20 64 61 74 61 6e 61 6d 65 20 27 28 3a 2c 31 3a 33 | um2str(ii).'=.'.dataname.'(:,1:3 |
| 36d40 | 29 27 27 3b 27 5d 29 0a 20 20 20 20 20 20 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 6e 6f 5f | )'';'])...........else.......no_ |
| 36d60 | 65 72 72 6f 72 20 3d 20 30 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 69 69 20 3d 20 69 | error.=.0;....end;........ii.=.i |
| 36d80 | 69 20 2b 20 31 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 6e 78 20 3d 20 35 30 30 3b 0a 6e 79 20 3d 20 | i.+.1;.....end;..nx.=.500;.ny.=. |
| 36da0 | 35 30 30 3b 0a 0a 6e 6f 5f 69 6d 61 67 65 20 3d 20 31 3b 0a 6e 6f 5f 67 72 69 64 20 3d 20 31 3b | 500;..no_image.=.1;.no_grid.=.1; |
| 36dc0 | 0a 0a 73 61 76 65 20 64 61 74 61 20 20 6e 5f 69 6d 61 20 78 5f 31 20 58 5f 31 20 78 5f 32 20 58 | ..save.data..n_ima.x_1.X_1.x_2.X |
| 36de0 | 5f 32 20 78 5f 33 20 58 5f 33 20 6e 78 20 6e 79 20 6e 6f 5f 69 6d 61 67 65 20 6e 6f 5f 67 72 69 | _2.x_3.X_3.nx.ny.no_image.no_gri |
| 36e00 | 64 0a 72 6d 0a 5b 63 5f 73 74 64 20 5b 73 31 3b 73 32 5d 5d 3b 0a 20 20 20 20 20 20 0a 20 20 20 | d.rm.[c_std.[s1;s2]];........... |
| 36e20 | 5b 6d 31 2c 73 31 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 28 6b 63 5f 6c 69 73 | [m1,s1].=.mean_std_robust(kc_lis |
| 36e40 | 74 28 31 2c 3a 29 29 3b 0a 20 20 20 5b 6d 32 2c 73 32 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 | t(1,:));....[m2,s2].=.mean_std_r |
| 36e60 | 6f 62 75 73 74 28 6b 63 5f 6c 69 73 74 28 32 2c 3a 29 29 3b 0a 20 20 20 5b 6d 33 2c 73 33 5d 20 | obust(kc_list(2,:));....[m3,s3]. |
| 36e80 | 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 28 6b 63 5f 6c 69 73 74 28 33 2c 3a 29 29 3b | =.mean_std_robust(kc_list(3,:)); |
| 36ea0 | 0a 20 20 20 5b 6d 34 2c 73 34 5d 20 3d 20 6d 65 61 6e 5f 73 74 64 5f 72 6f 62 75 73 74 28 6b 63 | ....[m4,s4].=.mean_std_robust(kc |
| 36ec0 | 5f 6c 69 73 74 28 34 2c 3a 29 29 3b 0a 20 20 20 0a 20 20 20 6b 20 3d 20 5b 6b 20 5b 6d 31 3b 6d | _list(4,:));........k.=.[k.[m1;m |
| 36ee0 | 32 3b 6d 33 3b 6d 34 5d 5d 3b 0a 20 20 20 6b 5f 73 74 64 20 3d 20 5b 6b 5f 73 74 64 20 5b 73 31 | 2;m3;m4]];....k_std.=.[k_std.[s1 |
| 36f00 | 3b 73 32 3b 73 33 3b 73 34 5d 5d 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 66 69 67 75 72 65 28 31 29 | ;s2;s3;s4]];.....end;..figure(1) |
| 36f20 | 3b 0a 65 72 72 6f 72 62 61 72 28 5b 31 3a 4e 4e 3b 31 3a 4e 4e 5d 27 2c 66 27 2c 66 5f 73 74 64 | ;.errorbar([1:NN;1:NN]',f',f_std |
| 36f40 | 27 29 3b 0a 66 69 67 75 72 65 28 32 29 3b 0a 65 72 72 6f 72 62 61 72 28 5b 31 3a 4e 4e 3b 31 3a | ');.figure(2);.errorbar([1:NN;1: |
| 36f60 | 4e 4e 5d 27 2c 63 27 2c 63 5f 73 74 64 27 29 3b 0a 66 69 67 75 72 65 28 33 29 3b 0a 65 72 72 6f | NN]',c',c_std');.figure(3);.erro |
| 36f80 | 72 62 61 72 28 5b 31 3a 4e 4e 3b 31 3a 4e 4e 3b 31 3a 4e 4e 3b 31 3a 4e 4e 5d 27 2c 6b 27 2c 6b | rbar([1:NN;1:NN;1:NN;1:NN]',k',k |
| 36fa0 | 5f 73 74 64 27 29 3b 0a 0a 66 69 67 75 72 65 28 34 29 3b 0a 73 65 6d 69 6c 6f 67 79 28 66 5f 73 | _std');..figure(4);.semilogy(f_s |
| 36fc0 | 74 64 27 29 3b 0a 0a 66 69 67 75 72 65 28 35 29 3b 0a 73 65 6d 69 6c 6f 67 79 28 63 5f 73 74 64 | td');..figure(5);.semilogy(c_std |
| 36fe0 | 27 29 3b 0a 0a 66 69 67 75 72 65 28 36 29 3b 0a 73 65 6d 69 6c 6f 67 79 28 6b 5f 73 74 64 27 29 | ');..figure(6);.semilogy(k_std') |
| 37000 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 6e 6f 72 6d 61 6c 69 7a 65 2e 6d 00 00 00 00 00 00 00 | TOOLBOX_calib/normalize.m....... |
| 37020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 37040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 37060 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 37080 | 20 20 20 31 34 30 33 20 20 37 30 32 34 30 33 37 33 34 31 20 20 31 30 35 37 32 00 20 00 00 00 00 | ...1403..7024037341..10572...... |
| 370a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 370c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 370e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 37100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 37120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 37140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 37160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 37180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 371a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 371c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 371e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 37200 | 66 75 6e 63 74 69 6f 6e 20 5b 78 6e 5d 20 3d 20 6e 6f 72 6d 61 6c 69 7a 65 28 78 5f 6b 6b 2c 66 | function.[xn].=.normalize(x_kk,f |
| 37220 | 63 2c 63 63 2c 6b 63 29 2c 0a 0a 25 6e 6f 72 6d 61 6c 69 7a 65 0a 25 0a 25 5b 78 6e 5d 20 3d 20 | c,cc,kc),..%normalize.%.%[xn].=. |
| 37240 | 6e 6f 72 6d 61 6c 69 7a 65 28 78 5f 6b 6b 2c 66 63 2c 63 63 2c 6b 63 29 0a 25 0a 25 43 6f 6d 70 | normalize(x_kk,fc,cc,kc).%.%Comp |
| 37260 | 75 74 65 73 20 74 68 65 20 6e 6f 72 6d 61 6c 69 7a 65 64 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 | utes.the.normalized.coordinates. |
| 37280 | 78 6e 20 67 69 76 65 6e 20 74 68 65 20 70 69 78 65 6c 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 78 | xn.given.the.pixel.coordinates.x |
| 372a0 | 5f 6b 6b 0a 25 61 6e 64 20 74 68 65 20 69 6e 74 72 69 6e 73 69 63 20 63 61 6d 65 72 61 20 70 61 | _kk.%and.the.intrinsic.camera.pa |
| 372c0 | 72 61 6d 65 74 65 72 73 20 66 63 2c 20 63 63 20 61 6e 64 20 6b 63 2e 0a 25 0a 25 49 4e 50 55 54 | rameters.fc,.cc.and.kc..%.%INPUT |
| 372e0 | 3a 20 78 5f 6b 6b 3a 20 46 65 61 74 75 72 65 20 6c 6f 63 61 74 69 6f 6e 73 20 6f 6e 20 74 68 65 | :.x_kk:.Feature.locations.on.the |
| 37300 | 20 69 6d 61 67 65 73 0a 25 20 20 20 20 20 20 20 66 63 3a 20 43 61 6d 65 72 61 20 66 6f 63 61 6c | .images.%.......fc:.Camera.focal |
| 37320 | 20 6c 65 6e 67 74 68 0a 25 20 20 20 20 20 20 20 63 63 3a 20 50 72 69 6e 63 69 70 61 6c 20 70 6f | .length.%.......cc:.Principal.po |
| 37340 | 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 0a 25 20 20 20 20 20 20 20 6b 63 3a 20 44 69 73 74 | int.coordinates.%.......kc:.Dist |
| 37360 | 6f 72 74 69 6f 6e 20 63 6f 65 66 66 69 63 69 65 6e 74 73 0a 25 0a 25 4f 55 54 50 55 54 3a 20 78 | ortion.coefficients.%.%OUTPUT:.x |
| 37380 | 6e 3a 20 4e 6f 72 6d 61 6c 69 7a 65 64 20 66 65 61 74 75 72 65 20 6c 6f 63 61 74 69 6f 6e 73 20 | n:.Normalized.feature.locations. |
| 373a0 | 6f 6e 20 74 68 65 20 69 6d 61 67 65 20 70 6c 61 6e 65 20 28 61 20 32 58 4e 20 6d 61 74 72 69 78 | on.the.image.plane.(a.2XN.matrix |
| 373c0 | 29 0a 25 0a 25 49 6d 70 6f 72 74 61 6e 74 20 66 75 6e 63 74 69 6f 6e 73 20 63 61 6c 6c 65 64 20 | ).%.%Important.functions.called. |
| 373e0 | 77 69 74 68 69 6e 20 74 68 61 74 20 70 72 6f 67 72 61 6d 3a 0a 25 0a 25 63 6f 6d 70 5f 64 69 73 | within.that.program:.%.%comp_dis |
| 37400 | 74 6f 72 74 69 6f 6e 5f 6f 75 6c 75 3a 20 75 6e 64 69 73 74 6f 72 74 20 70 69 78 65 6c 20 63 6f | tortion_oulu:.undistort.pixel.co |
| 37420 | 6f 72 64 69 6e 61 74 65 73 2e 0a 0a 0a 0a 25 20 46 69 72 73 74 20 73 75 62 74 72 61 63 74 20 70 | ordinates.....%.First.subtract.p |
| 37440 | 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 2c 20 61 6e 64 20 64 69 76 69 64 65 20 62 79 20 74 68 | rincipal.point,.and.divide.by.th |
| 37460 | 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 3a 0a 0a 78 5f 64 69 73 74 6f 72 74 20 3d 20 5b 28 78 | e.focal.length:..x_distort.=.[(x |
| 37480 | 5f 6b 6b 28 31 2c 3a 29 20 2d 20 63 63 28 31 29 29 2f 66 63 28 31 29 3b 28 78 5f 6b 6b 28 32 2c | _kk(1,:).-.cc(1))/fc(1);(x_kk(2, |
| 374a0 | 3a 29 20 2d 20 63 63 28 32 29 29 2f 66 63 28 32 29 5d 3b 0a 0a 0a 25 43 6f 6d 70 65 6e 73 61 74 | :).-.cc(2))/fc(2)];...%Compensat |
| 374c0 | 65 20 66 6f 72 20 6c 65 6e 73 20 64 69 73 74 6f 72 74 69 6f 6e 3a 0a 0a 78 6e 20 3d 20 63 6f 6d | e.for.lens.distortion:..xn.=.com |
| 374e0 | 70 5f 64 69 73 74 6f 72 74 69 6f 6e 5f 6f 75 6c 75 28 78 5f 64 69 73 74 6f 72 74 2c 6b 63 29 3b | p_distortion_oulu(x_distort,kc); |
| 37500 | 0a 0a 0a 3b 73 33 3b 73 34 5d 5d 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 66 69 67 75 72 65 28 31 29 | ...;s3;s4]];.....end;..figure(1) |
| 37520 | 3b 0a 65 72 72 6f 72 62 61 72 28 5b 31 3a 4e 4e 3b 31 3a 4e 4e 5d 27 2c 66 27 2c 66 5f 73 74 64 | ;.errorbar([1:NN;1:NN]',f',f_std |
| 37540 | 27 29 3b 0a 66 69 67 75 72 65 28 32 29 3b 0a 65 72 72 6f 72 62 61 72 28 5b 31 3a 4e 4e 3b 31 3a | ');.figure(2);.errorbar([1:NN;1: |
| 37560 | 4e 4e 5d 27 2c 63 27 2c 63 5f 73 74 64 27 29 3b 0a 66 69 67 75 72 65 28 33 29 3b 0a 65 72 72 6f | NN]',c',c_std');.figure(3);.erro |
| 37580 | 72 62 61 72 28 5b 31 3a 4e 4e 3b 31 3a 4e 4e 3b 31 3a 4e 4e 3b 31 3a 4e 4e 5d 27 2c 6b 27 2c 6b | rbar([1:NN;1:NN;1:NN;1:NN]',k',k |
| 375a0 | 5f 73 74 64 27 29 3b 0a 0a 66 69 67 75 72 65 28 34 29 3b 0a 73 65 6d 69 6c 6f 67 79 28 66 5f 73 | _std');..figure(4);.semilogy(f_s |
| 375c0 | 74 64 27 29 3b 0a 0a 66 69 67 75 72 65 28 35 29 3b 0a 73 65 6d 69 6c 6f 67 79 28 63 5f 73 74 64 | td');..figure(5);.semilogy(c_std |
| 375e0 | 27 29 3b 0a 0a 66 69 67 75 72 65 28 36 29 3b 0a 73 65 6d 69 6c 6f 67 79 28 6b 5f 73 74 64 27 29 | ');..figure(6);.semilogy(k_std') |
| 37600 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 72 69 67 69 64 5f 6d 6f 74 69 6f 6e 2e 6d 00 00 00 00 | TOOLBOX_calib/rigid_motion.m.... |
| 37620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 37640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 37660 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 37680 | 20 20 20 33 31 37 37 20 20 37 30 32 34 30 33 37 33 35 30 20 20 31 31 32 36 37 00 20 00 00 00 00 | ...3177..7024037350..11267...... |
| 376a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 376c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 376e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 37700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 37720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 37740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 37760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 37780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 377a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 377c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 377e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 37800 | 66 75 6e 63 74 69 6f 6e 20 5b 59 2c 64 59 64 6f 6d 2c 64 59 64 54 5d 20 3d 20 72 69 67 69 64 5f | function.[Y,dYdom,dYdT].=.rigid_ |
| 37820 | 6d 6f 74 69 6f 6e 28 58 2c 6f 6d 2c 54 29 3b 0a 0a 25 72 69 67 69 64 5f 6d 6f 74 69 6f 6e 2e 6d | motion(X,om,T);..%rigid_motion.m |
| 37840 | 0a 25 0a 25 5b 59 2c 64 59 64 6f 6d 2c 64 59 64 54 5d 20 3d 20 72 69 67 69 64 5f 6d 6f 74 69 6f | .%.%[Y,dYdom,dYdT].=.rigid_motio |
| 37860 | 6e 28 58 2c 6f 6d 2c 54 29 0a 25 0a 25 43 6f 6d 70 75 74 65 73 20 74 68 65 20 72 69 67 69 64 20 | n(X,om,T).%.%Computes.the.rigid. |
| 37880 | 6d 6f 74 69 6f 6e 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 59 20 3d 20 52 2a 58 2b 54 2c | motion.transformation.Y.=.R*X+T, |
| 378a0 | 20 77 68 65 72 65 20 52 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 29 2e 0a 25 0a 25 49 4e 50 | .where.R.=.rodrigues(om)..%.%INP |
| 378c0 | 55 54 3a 20 58 3a 20 33 44 20 73 74 72 75 63 74 75 72 65 20 69 6e 20 74 68 65 20 77 6f 72 6c 64 | UT:.X:.3D.structure.in.the.world |
| 378e0 | 20 63 6f 6f 72 64 69 6e 61 74 65 20 66 72 61 6d 65 20 28 33 78 4e 20 6d 61 74 72 69 78 20 66 6f | .coordinate.frame.(3xN.matrix.fo |
| 37900 | 72 20 4e 20 70 6f 69 6e 74 73 29 0a 25 20 20 20 20 20 20 20 28 6f 6d 2c 54 29 3a 20 52 69 67 69 | r.N.points).%.......(om,T):.Rigi |
| 37920 | 64 20 6d 6f 74 69 6f 6e 20 70 61 72 61 6d 65 74 65 72 73 20 62 65 74 77 65 65 6e 20 77 6f 72 6c | d.motion.parameters.between.worl |
| 37940 | 64 20 63 6f 6f 72 64 69 6e 61 74 65 20 66 72 61 6d 65 20 61 6e 64 20 63 61 6d 65 72 61 20 72 65 | d.coordinate.frame.and.camera.re |
| 37960 | 66 65 72 65 6e 63 65 20 66 72 61 6d 65 0a 25 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 6d | ference.frame.%...............om |
| 37980 | 3a 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 28 33 78 31 20 76 65 63 74 6f 72 29 3b 20 | :.rotation.vector.(3x1.vector);. |
| 379a0 | 54 3a 20 74 72 61 6e 73 6c 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 28 33 78 31 20 76 65 63 74 6f | T:.translation.vector.(3x1.vecto |
| 379c0 | 72 29 0a 25 0a 25 4f 55 54 50 55 54 3a 20 59 3a 20 33 44 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 | r).%.%OUTPUT:.Y:.3D.coordinates. |
| 379e0 | 6f 66 20 74 68 65 20 73 74 72 75 63 74 75 72 65 20 70 6f 69 6e 74 73 20 69 6e 20 74 68 65 20 63 | of.the.structure.points.in.the.c |
| 37a00 | 61 6d 65 72 61 20 72 65 66 65 72 65 6e 63 65 20 66 72 61 6d 65 20 28 33 78 4e 20 6d 61 74 72 69 | amera.reference.frame.(3xN.matri |
| 37a20 | 78 20 66 6f 72 20 4e 20 70 6f 69 6e 74 73 29 0a 25 20 20 20 20 20 20 20 20 64 59 64 6f 6d 3a 20 | x.for.N.points).%........dYdom:. |
| 37a40 | 44 65 72 69 76 61 74 69 76 65 20 6f 66 20 59 20 77 69 74 68 20 72 65 73 70 65 63 74 20 74 6f 20 | Derivative.of.Y.with.respect.to. |
| 37a60 | 6f 6d 20 28 28 33 4e 29 78 33 20 6d 61 74 72 69 78 29 0a 25 20 20 20 20 20 20 20 20 64 59 64 54 | om.((3N)x3.matrix).%........dYdT |
| 37a80 | 3a 20 44 65 72 69 76 61 74 69 76 65 20 6f 66 20 59 20 77 69 74 68 20 72 65 73 70 65 63 74 20 74 | :.Derivative.of.Y.with.respect.t |
| 37aa0 | 6f 20 54 20 28 28 33 4e 29 78 33 20 6d 61 74 72 69 78 29 0a 25 0a 25 44 65 66 69 6e 69 74 69 6f | o.T.((3N)x3.matrix).%.%Definitio |
| 37ac0 | 6e 73 3a 0a 25 4c 65 74 20 50 20 62 65 20 61 20 70 6f 69 6e 74 20 69 6e 20 33 44 20 6f 66 20 63 | ns:.%Let.P.be.a.point.in.3D.of.c |
| 37ae0 | 6f 6f 72 64 69 6e 61 74 65 73 20 58 20 69 6e 20 74 68 65 20 77 6f 72 6c 64 20 72 65 66 65 72 65 | oordinates.X.in.the.world.refere |
| 37b00 | 6e 63 65 20 66 72 61 6d 65 20 28 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 6d 61 74 72 69 78 20 | nce.frame.(stored.in.the.matrix. |
| 37b20 | 58 29 0a 25 54 68 65 20 63 6f 6f 72 64 69 6e 61 74 65 20 76 65 63 74 6f 72 20 6f 66 20 50 20 69 | X).%The.coordinate.vector.of.P.i |
| 37b40 | 6e 20 74 68 65 20 63 61 6d 65 72 61 20 72 65 66 65 72 65 6e 63 65 20 66 72 61 6d 65 20 69 73 3a | n.the.camera.reference.frame.is: |
| 37b60 | 20 59 20 3d 20 52 2a 58 20 2b 20 54 0a 25 77 68 65 72 65 20 52 20 69 73 20 74 68 65 20 72 6f 74 | .Y.=.R*X.+.T.%where.R.is.the.rot |
| 37b80 | 61 74 69 6f 6e 20 6d 61 74 72 69 78 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 | ation.matrix.corresponding.to.th |
| 37ba0 | 65 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 6f 6d 3a 20 52 20 3d 20 72 6f 64 72 69 67 | e.rotation.vector.om:.R.=.rodrig |
| 37bc0 | 75 65 73 28 6f 6d 29 3b 0a 25 0a 25 49 6d 70 6f 72 74 61 6e 74 20 66 75 6e 63 74 69 6f 6e 20 63 | ues(om);.%.%Important.function.c |
| 37be0 | 61 6c 6c 65 64 20 77 69 74 68 69 6e 20 74 68 61 74 20 70 72 6f 67 72 61 6d 3a 0a 25 0a 25 72 6f | alled.within.that.program:.%.%ro |
| 37c00 | 64 72 69 67 75 65 73 2e 6d 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 72 6f 74 61 74 69 6f 6e | drigues.m:.Computes.the.rotation |
| 37c20 | 20 6d 61 74 72 69 78 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 61 20 72 6f 74 61 74 | .matrix.corresponding.to.a.rotat |
| 37c40 | 69 6f 6e 20 76 65 63 74 6f 72 0a 0a 0a 0a 69 66 20 6e 61 72 67 69 6e 20 3c 20 33 2c 0a 20 20 20 | ion.vector....if.nargin.<.3,.... |
| 37c60 | 54 20 3d 20 7a 65 72 6f 73 28 33 2c 31 29 3b 0a 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3c 20 32 | T.=.zeros(3,1);....if.nargin.<.2 |
| 37c80 | 2c 0a 20 20 20 20 20 20 6f 6d 20 3d 20 7a 65 72 6f 73 28 33 2c 31 29 3b 0a 20 20 20 20 20 20 69 | ,.......om.=.zeros(3,1);.......i |
| 37ca0 | 66 20 6e 61 72 67 69 6e 20 3c 20 31 2c 0a 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 28 27 4e 65 | f.nargin.<.1,..........error('Ne |
| 37cc0 | 65 64 20 61 74 20 6c 65 61 73 74 20 61 20 33 44 20 73 74 72 75 63 74 75 72 65 20 61 73 20 69 6e | ed.at.least.a.3D.structure.as.in |
| 37ce0 | 70 75 74 20 28 69 6e 20 72 69 67 69 64 5f 6d 6f 74 69 6f 6e 2e 6d 29 27 29 3b 0a 20 20 20 20 20 | put.(in.rigid_motion.m)');...... |
| 37d00 | 20 20 20 20 72 65 74 75 72 6e 3b 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 65 6e 64 3b 0a 65 | ....return;.......end;....end;.e |
| 37d20 | 6e 64 3b 0a 0a 0a 5b 52 2c 64 52 64 6f 6d 5d 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 29 3b | nd;...[R,dRdom].=.rodrigues(om); |
| 37d40 | 0a 0a 5b 6d 2c 6e 5d 20 3d 20 73 69 7a 65 28 58 29 3b 0a 0a 59 20 3d 20 52 2a 58 20 2b 20 54 2a | ..[m,n].=.size(X);..Y.=.R*X.+.T* |
| 37d60 | 6f 6e 65 73 28 31 2c 6e 29 3b 0a 0a 69 66 20 6e 61 72 67 6f 75 74 20 3e 20 31 2c 0a 20 20 20 0a | ones(1,n);..if.nargout.>.1,..... |
| 37d80 | 0a 64 59 64 52 20 3d 20 7a 65 72 6f 73 28 33 2a 6e 2c 39 29 3b 0a 64 59 64 54 20 3d 20 7a 65 72 | .dYdR.=.zeros(3*n,9);.dYdT.=.zer |
| 37da0 | 6f 73 28 33 2a 6e 2c 33 29 3b 0a 0a 64 59 64 52 28 31 3a 33 3a 65 6e 64 2c 31 3a 33 3a 65 6e 64 | os(3*n,3);..dYdR(1:3:end,1:3:end |
| 37dc0 | 29 20 3d 20 20 58 27 3b 0a 64 59 64 52 28 32 3a 33 3a 65 6e 64 2c 32 3a 33 3a 65 6e 64 29 20 3d | ).=..X';.dYdR(2:3:end,2:3:end).= |
| 37de0 | 20 20 58 27 3b 0a 64 59 64 52 28 33 3a 33 3a 65 6e 64 2c 33 3a 33 3a 65 6e 64 29 20 3d 20 20 58 | ..X';.dYdR(3:3:end,3:3:end).=..X |
| 37e00 | 27 3b 0a 0a 64 59 64 54 28 31 3a 33 3a 65 6e 64 2c 31 29 20 3d 20 20 6f 6e 65 73 28 6e 2c 31 29 | ';..dYdT(1:3:end,1).=..ones(n,1) |
| 37e20 | 3b 0a 64 59 64 54 28 32 3a 33 3a 65 6e 64 2c 32 29 20 3d 20 20 6f 6e 65 73 28 6e 2c 31 29 3b 0a | ;.dYdT(2:3:end,2).=..ones(n,1);. |
| 37e40 | 64 59 64 54 28 33 3a 33 3a 65 6e 64 2c 33 29 20 3d 20 20 6f 6e 65 73 28 6e 2c 31 29 3b 0a 0a 64 | dYdT(3:3:end,3).=..ones(n,1);..d |
| 37e60 | 59 64 6f 6d 20 3d 20 64 59 64 52 20 2a 20 64 52 64 6f 6d 3b 0a 0a 65 6e 64 3b 0a 0a 0a 0a 0a 74 | Ydom.=.dYdR.*.dRdom;..end;.....t |
| 37e80 | 72 61 63 74 20 67 72 69 64 20 63 6f 72 6e 65 72 73 2e 5c 6e 27 2c 6b 6b 29 0a 20 20 20 20 20 20 | ract.grid.corners.\n',kk)....... |
| 37ea0 | 65 6e 64 3b 0a 20 20 20 20 20 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 20 3d 20 30 | end;.......active_images(kk).=.0 |
| 37ec0 | 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b | ;....end;....if.active_images(kk |
| 37ee0 | 29 2c 0a 20 20 20 20 20 20 65 76 61 6c 28 5b 27 48 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 | ),.......eval(['H_'.num2str(kk). |
| 37f00 | 27 20 3d 20 63 6f 6d 70 75 74 65 5f 68 6f 6d 6f 67 72 61 70 68 79 28 78 5f 6b 6b 2c 58 5f 6b 6b | '.=.compute_homography(x_kk,X_kk |
| 37f20 | 28 31 3a 32 2c 3a 29 29 3b 27 5d 29 3b 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 65 76 61 6c | (1:2,:));']);....else.......eval |
| 37f40 | 28 5b 27 48 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 | (['H_'.num2str(kk).'.=.NaN*ones( |
| 37f60 | 33 2c 33 29 3b 27 5d 29 3b 0a 20 20 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 63 68 65 63 6b 5f 61 63 | 3,3);']);....end;.end;..check_ac |
| 37f80 | 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 0a 25 20 69 6e 69 74 69 61 6c 20 67 75 65 73 73 20 66 6f | tive_images;..%.initial.guess.fo |
| 37fa0 | 72 20 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 61 6e 64 20 64 69 73 74 6f 72 74 69 6f 6e | r.principal.point.and.distortion |
| 37fc0 | 3a 0a 0a 69 66 20 7e 65 78 69 73 74 28 27 6e 78 27 29 2c 20 5b 6e 79 2c 6e 78 5d 20 3d 20 73 69 | :..if.~exist('nx'),.[ny,nx].=.si |
| 37fe0 | 7a 65 28 49 29 3b 20 65 6e 64 3b 0a 0a 63 5f 69 6e 69 74 20 3d 20 5b 6e 78 3b 6e 79 5d 2f 32 20 | ze(I);.end;..c_init.=.[nx;ny]/2. |
| 38000 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f | TOOLBOX_calib/compute_extrinsic_ |
| 38020 | 69 6e 69 74 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | init.m.......................... |
| 38040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 38060 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 38080 | 20 20 20 36 36 34 30 20 20 37 30 32 34 30 33 37 33 31 31 20 20 31 33 33 36 36 00 20 00 00 00 00 | ...6640..7024037311..13366...... |
| 380a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 380c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 380e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 38100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 38120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 38140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 38160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 38180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 381a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 381c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 381e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 38200 | 66 75 6e 63 74 69 6f 6e 20 5b 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 52 63 6b 6b 5d 20 3d 20 63 6f 6d | function.[omckk,Tckk,Rckk].=.com |
| 38220 | 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 69 6e 69 74 28 78 5f 6b 6b 2c 58 5f 6b 6b 2c 66 63 | pute_extrinsic_init(x_kk,X_kk,fc |
| 38240 | 2c 63 63 2c 6b 63 29 2c 0a 0a 25 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 0a 25 0a 25 | ,cc,kc),..%compute_extrinsic.%.% |
| 38260 | 5b 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 52 63 6b 6b 5d 20 3d 20 63 6f 6d 70 75 74 65 5f 65 78 74 72 | [omckk,Tckk,Rckk].=.compute_extr |
| 38280 | 69 6e 73 69 63 5f 69 6e 69 74 28 78 5f 6b 6b 2c 58 5f 6b 6b 2c 66 63 2c 63 63 2c 6b 63 29 0a 25 | insic_init(x_kk,X_kk,fc,cc,kc).% |
| 382a0 | 0a 25 43 6f 6d 70 75 74 65 73 20 74 68 65 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 | .%Computes.the.extrinsic.paramet |
| 382c0 | 65 72 73 20 61 74 74 61 63 68 65 64 20 74 6f 20 61 20 33 44 20 73 74 72 75 63 74 75 72 65 20 58 | ers.attached.to.a.3D.structure.X |
| 382e0 | 5f 6b 6b 20 67 69 76 65 6e 20 69 74 73 20 70 72 6f 6a 65 63 74 69 6f 6e 0a 25 6f 6e 20 74 68 65 | _kk.given.its.projection.%on.the |
| 38300 | 20 69 6d 61 67 65 20 70 6c 61 6e 65 20 78 5f 6b 6b 20 61 6e 64 20 74 68 65 20 69 6e 74 72 69 6e | .image.plane.x_kk.and.the.intrin |
| 38320 | 73 69 63 20 63 61 6d 65 72 61 20 70 61 72 61 6d 65 74 65 72 73 20 66 63 2c 20 63 63 20 61 6e 64 | sic.camera.parameters.fc,.cc.and |
| 38340 | 20 6b 63 2e 0a 25 57 6f 72 6b 73 20 77 69 74 68 20 70 6c 61 6e 61 72 20 61 6e 64 20 6e 6f 6e 2d | .kc..%Works.with.planar.and.non- |
| 38360 | 70 6c 61 6e 61 72 20 73 74 72 75 63 74 75 72 65 73 2e 0a 25 0a 25 49 4e 50 55 54 3a 20 78 5f 6b | planar.structures..%.%INPUT:.x_k |
| 38380 | 6b 3a 20 46 65 61 74 75 72 65 20 6c 6f 63 61 74 69 6f 6e 73 20 6f 6e 20 74 68 65 20 69 6d 61 67 | k:.Feature.locations.on.the.imag |
| 383a0 | 65 73 0a 25 20 20 20 20 20 20 20 58 5f 6b 6b 3a 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 67 | es.%.......X_kk:.Corresponding.g |
| 383c0 | 72 69 64 20 63 6f 6f 72 64 69 6e 61 74 65 73 0a 25 20 20 20 20 20 20 20 66 63 3a 20 43 61 6d 65 | rid.coordinates.%.......fc:.Came |
| 383e0 | 72 61 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 0a 25 20 20 20 20 20 20 20 63 63 3a 20 50 72 69 6e | ra.focal.length.%.......cc:.Prin |
| 38400 | 63 69 70 61 6c 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 0a 25 20 20 20 20 20 20 20 | cipal.point.coordinates.%....... |
| 38420 | 6b 63 3a 20 44 69 73 74 6f 72 74 69 6f 6e 20 63 6f 65 66 66 69 63 69 65 6e 74 73 0a 25 0a 25 4f | kc:.Distortion.coefficients.%.%O |
| 38440 | 55 54 50 55 54 3a 20 6f 6d 63 6b 6b 3a 20 33 44 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 6f 72 | UTPUT:.omckk:.3D.rotation.vector |
| 38460 | 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 67 72 69 64 20 70 6f 73 69 74 69 6f 6e 73 20 | .attached.to.the.grid.positions. |
| 38480 | 69 6e 20 73 70 61 63 65 0a 25 20 20 20 20 20 20 20 20 54 63 6b 6b 3a 20 33 44 20 74 72 61 6e 73 | in.space.%........Tckk:.3D.trans |
| 384a0 | 6c 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 67 72 | lation.vector.attached.to.the.gr |
| 384c0 | 69 64 20 70 6f 73 69 74 69 6f 6e 73 20 69 6e 20 73 70 61 63 65 0a 25 20 20 20 20 20 20 20 20 52 | id.positions.in.space.%........R |
| 384e0 | 63 6b 6b 3a 20 33 44 20 72 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 63 65 73 20 63 6f 72 72 65 73 | ckk:.3D.rotation.matrices.corres |
| 38500 | 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 6f 6d 63 20 76 65 63 74 6f 72 73 0a 25 0a 25 4d 65 | ponding.to.the.omc.vectors.%.%Me |
| 38520 | 74 68 6f 64 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 6e 6f 72 6d 61 6c 69 7a 65 64 20 70 6f | thod:.Computes.the.normalized.po |
| 38540 | 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 2c 20 74 68 65 6e 20 63 6f 6d 70 75 74 65 73 20 74 | int.coordinates,.then.computes.t |
| 38560 | 68 65 20 33 44 20 70 6f 73 65 0a 25 0a 25 49 6d 70 6f 72 74 61 6e 74 20 66 75 6e 63 74 69 6f 6e | he.3D.pose.%.%Important.function |
| 38580 | 73 20 63 61 6c 6c 65 64 20 77 69 74 68 69 6e 20 74 68 61 74 20 70 72 6f 67 72 61 6d 3a 0a 25 0a | s.called.within.that.program:.%. |
| 385a0 | 25 6e 6f 72 6d 61 6c 69 7a 65 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 6e 6f 72 6d 61 6c 69 | %normalize:.Computes.the.normali |
| 385c0 | 7a 65 20 69 6d 61 67 65 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 2e 0a 25 0a 25 70 | ze.image.point.coordinates..%.%p |
| 385e0 | 6f 73 65 33 44 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 33 44 20 70 6f 73 65 20 6f 66 20 74 | ose3D:.Computes.the.3D.pose.of.t |
| 38600 | 68 65 20 73 74 72 75 63 74 75 72 65 20 67 69 76 65 6e 20 74 68 65 20 6e 6f 72 6d 61 6c 69 7a 65 | he.structure.given.the.normalize |
| 38620 | 64 20 69 6d 61 67 65 20 70 72 6f 6a 65 63 74 69 6f 6e 2e 0a 25 0a 25 70 72 6f 6a 65 63 74 5f 70 | d.image.projection..%.%project_p |
| 38640 | 6f 69 6e 74 73 2e 6d 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 32 44 20 69 6d 61 67 65 20 70 | oints.m:.Computes.the.2D.image.p |
| 38660 | 72 6f 6a 65 63 74 69 6f 6e 73 20 6f 66 20 61 20 73 65 74 20 6f 66 20 33 44 20 70 6f 69 6e 74 73 | rojections.of.a.set.of.3D.points |
| 38680 | 0a 0a 0a 0a 0a 69 66 20 6e 61 72 67 69 6e 20 3c 20 35 2c 0a 20 20 20 6b 63 20 3d 20 7a 65 72 6f | .....if.nargin.<.5,....kc.=.zero |
| 386a0 | 73 28 34 2c 31 29 3b 0a 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3c 20 34 2c 0a 20 20 20 20 20 20 | s(4,1);....if.nargin.<.4,....... |
| 386c0 | 63 63 20 3d 20 7a 65 72 6f 73 28 32 2c 31 29 3b 0a 20 20 20 20 20 20 69 66 20 6e 61 72 67 69 6e | cc.=.zeros(2,1);.......if.nargin |
| 386e0 | 20 3c 20 33 2c 0a 20 20 20 20 20 20 20 20 20 66 63 20 3d 20 6f 6e 65 73 28 32 2c 31 29 3b 0a 20 | .<.3,..........fc.=.ones(2,1);.. |
| 38700 | 20 20 20 20 20 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3c 20 32 2c 0a 20 20 20 20 20 20 20 20 20 | ........if.nargin.<.2,.......... |
| 38720 | 20 20 20 65 72 72 6f 72 28 27 4e 65 65 64 20 32 44 20 70 72 6f 6a 65 63 74 69 6f 6e 73 20 61 6e | ...error('Need.2D.projections.an |
| 38740 | 64 20 33 44 20 70 6f 69 6e 74 73 20 28 69 6e 20 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 | d.3D.points.(in.compute_extrinsi |
| 38760 | 63 2e 6d 29 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0a 20 20 20 20 | c.m)');.............return;..... |
| 38780 | 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 65 6e 64 3b 0a 65 6e 64 | .....end;.......end;....end;.end |
| 387a0 | 3b 0a 0a 0a 0a 25 20 43 6f 6d 70 75 74 65 20 74 68 65 20 6e 6f 72 6d 61 6c 69 7a 65 64 20 63 6f | ;....%.Compute.the.normalized.co |
| 387c0 | 6f 72 64 69 6e 61 74 65 73 3a 0a 0a 78 6e 20 3d 20 6e 6f 72 6d 61 6c 69 7a 65 28 78 5f 6b 6b 2c | ordinates:..xn.=.normalize(x_kk, |
| 387e0 | 66 63 2c 63 63 2c 6b 63 29 3b 0a 0a 0a 0a 4e 70 20 3d 20 73 69 7a 65 28 78 6e 2c 32 29 3b 0a 0a | fc,cc,kc);....Np.=.size(xn,2);.. |
| 38800 | 25 25 20 43 68 65 63 6b 20 66 6f 72 20 70 6c 61 6e 61 72 69 74 79 20 6f 66 20 74 68 65 20 73 74 | %%.Check.for.planarity.of.the.st |
| 38820 | 72 75 63 74 75 72 65 3a 0a 0a 58 5f 6d 65 61 6e 20 3d 20 6d 65 61 6e 28 58 5f 6b 6b 27 29 27 3b | ructure:..X_mean.=.mean(X_kk')'; |
| 38840 | 0a 0a 59 20 3d 20 58 5f 6b 6b 20 2d 20 28 58 5f 6d 65 61 6e 2a 6f 6e 65 73 28 31 2c 4e 70 29 29 | ..Y.=.X_kk.-.(X_mean*ones(1,Np)) |
| 38860 | 3b 0a 0a 59 59 20 3d 20 59 2a 59 27 3b 0a 0a 5b 55 2c 53 2c 56 5d 20 3d 20 73 76 64 28 59 59 29 | ;..YY.=.Y*Y';..[U,S,V].=.svd(YY) |
| 38880 | 3b 0a 0a 72 20 3d 20 53 28 33 2c 33 29 2f 53 28 32 2c 32 29 3b 0a 0a 69 66 20 28 72 20 3c 20 31 | ;..r.=.S(3,3)/S(2,2);..if.(r.<.1 |
| 388a0 | 65 2d 33 29 7c 28 4e 70 20 3c 20 36 29 2c 20 25 31 65 2d 33 2c 20 25 31 65 2d 34 2c 20 25 6e 6f | e-3)|(Np.<.6),.%1e-3,.%1e-4,.%no |
| 388c0 | 72 6d 28 58 5f 6b 6b 28 33 2c 3a 29 29 20 3c 20 65 70 73 2c 20 25 20 54 65 73 74 20 6f 66 20 70 | rm(X_kk(3,:)).<.eps,.%.Test.of.p |
| 388e0 | 6c 61 6e 61 72 69 74 79 0a 20 20 20 0a 20 20 20 25 66 70 72 69 6e 74 66 28 31 2c 27 50 6c 61 6e | lanarity........%fprintf(1,'Plan |
| 38900 | 61 72 20 73 74 72 75 63 74 75 72 65 20 64 65 74 65 63 74 65 64 3a 20 72 3d 25 66 5c 6e 27 2c 72 | ar.structure.detected:.r=%f\n',r |
| 38920 | 29 3b 0a 0a 20 20 20 25 20 54 72 61 6e 73 66 6f 72 6d 20 74 68 65 20 70 6c 61 6e 65 20 74 6f 20 | );.....%.Transform.the.plane.to. |
| 38940 | 62 72 69 6e 67 20 69 74 20 69 6e 20 74 68 65 20 5a 3d 30 20 70 6c 61 6e 65 3a 0a 20 20 20 0a 20 | bring.it.in.the.Z=0.plane:...... |
| 38960 | 20 20 52 5f 74 72 61 6e 73 66 6f 72 6d 20 3d 20 56 27 3b 0a 20 20 20 0a 20 20 20 69 66 20 64 65 | ..R_transform.=.V';........if.de |
| 38980 | 74 28 52 5f 74 72 61 6e 73 66 6f 72 6d 29 20 3c 20 30 2c 20 52 5f 74 72 61 6e 73 66 6f 72 6d 20 | t(R_transform).<.0,.R_transform. |
| 389a0 | 3d 20 2d 52 5f 74 72 61 6e 73 66 6f 72 6d 3b 20 65 6e 64 3b 0a 20 20 20 0a 09 54 5f 74 72 61 6e | =.-R_transform;.end;......T_tran |
| 389c0 | 73 66 6f 72 6d 20 3d 20 2d 28 52 5f 74 72 61 6e 73 66 6f 72 6d 29 2a 58 5f 6d 65 61 6e 3b 0a 0a | sform.=.-(R_transform)*X_mean;.. |
| 389e0 | 09 58 5f 6e 65 77 20 3d 20 52 5f 74 72 61 6e 73 66 6f 72 6d 2a 58 5f 6b 6b 20 2b 20 54 5f 74 72 | .X_new.=.R_transform*X_kk.+.T_tr |
| 38a00 | 61 6e 73 66 6f 72 6d 2a 6f 6e 65 73 28 31 2c 4e 70 29 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 | ansform*ones(1,Np);............% |
| 38a20 | 20 43 6f 6d 70 75 74 65 20 74 68 65 20 70 6c 61 6e 61 72 20 68 6f 6d 6f 67 72 61 70 68 79 3a 0a | .Compute.the.planar.homography:. |
| 38a40 | 20 20 20 0a 20 20 20 48 20 3d 20 63 6f 6d 70 75 74 65 5f 68 6f 6d 6f 67 72 61 70 68 79 20 28 78 | .......H.=.compute_homography.(x |
| 38a60 | 6e 2c 58 5f 6e 65 77 28 31 3a 32 2c 3a 29 29 3b 0a 20 20 20 0a 20 20 20 25 20 44 65 2d 65 6d 62 | n,X_new(1:2,:));........%.De-emb |
| 38a80 | 65 64 20 74 68 65 20 6d 6f 74 69 6f 6e 20 70 61 72 61 6d 65 74 65 72 73 20 66 72 6f 6d 20 74 68 | ed.the.motion.parameters.from.th |
| 38aa0 | 65 20 68 6f 6d 6f 67 72 61 70 68 79 3a 0a 20 20 20 0a 20 20 20 73 63 20 3d 20 6d 65 61 6e 28 5b | e.homography:........sc.=.mean([ |
| 38ac0 | 6e 6f 72 6d 28 48 28 3a 2c 31 29 29 3b 6e 6f 72 6d 28 48 28 3a 2c 32 29 29 5d 29 3b 0a 20 20 20 | norm(H(:,1));norm(H(:,2))]);.... |
| 38ae0 | 0a 20 20 20 48 20 3d 20 48 2f 73 63 3b 0a 20 20 20 0a 20 20 20 6f 6d 63 6b 6b 20 3d 20 72 6f 64 | ....H.=.H/sc;........omckk.=.rod |
| 38b00 | 72 69 67 75 65 73 28 5b 48 28 3a 2c 31 3a 32 29 20 63 72 6f 73 73 28 48 28 3a 2c 31 29 2c 48 28 | rigues([H(:,1:2).cross(H(:,1),H( |
| 38b20 | 3a 2c 32 29 29 5d 29 3b 0a 20 20 20 52 63 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 | :,2))]);....Rckk.=.rodrigues(omc |
| 38b40 | 6b 6b 29 3b 0a 20 20 20 54 63 6b 6b 20 3d 20 48 28 3a 2c 33 29 3b 0a 20 20 20 0a 20 20 20 25 49 | kk);....Tckk.=.H(:,3);........%I |
| 38b60 | 66 20 58 63 20 3d 20 52 63 6b 6b 20 2a 20 58 5f 6e 65 77 20 2b 20 54 63 6b 6b 2c 20 74 68 65 6e | f.Xc.=.Rckk.*.X_new.+.Tckk,.then |
| 38b80 | 20 58 63 20 3d 20 52 63 6b 6b 20 2a 20 52 5f 74 72 61 6e 73 66 6f 72 6d 20 2a 20 58 5f 6b 6b 20 | .Xc.=.Rckk.*.R_transform.*.X_kk. |
| 38ba0 | 2b 20 54 63 6b 6b 20 2b 20 54 5f 74 72 61 6e 73 66 6f 72 6d 0a 20 20 20 0a 20 20 20 54 63 6b 6b | +.Tckk.+.T_transform........Tckk |
| 38bc0 | 20 3d 20 54 63 6b 6b 20 2b 20 52 63 6b 6b 2a 20 54 5f 74 72 61 6e 73 66 6f 72 6d 3b 0a 20 20 20 | .=.Tckk.+.Rckk*.T_transform;.... |
| 38be0 | 52 63 6b 6b 20 3d 20 52 63 6b 6b 20 2a 20 52 5f 74 72 61 6e 73 66 6f 72 6d 3b 0a 0a 20 20 20 6f | Rckk.=.Rckk.*.R_transform;.....o |
| 38c00 | 6d 63 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 28 52 63 6b 6b 29 3b 0a 20 20 20 52 63 6b 6b 20 | mckk.=.rodrigues(Rckk);....Rckk. |
| 38c20 | 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 6b 6b 29 3b 0a 20 20 20 0a 20 20 20 0a 65 6c 73 65 | =.rodrigues(omckk);.........else |
| 38c40 | 0a 20 20 20 0a 20 20 20 25 66 70 72 69 6e 74 66 28 31 2c 27 4e 6f 6e 20 70 6c 61 6e 61 72 20 73 | ........%fprintf(1,'Non.planar.s |
| 38c60 | 74 72 75 63 74 75 72 65 20 64 65 74 65 63 74 65 64 3a 20 72 3d 25 66 5c 6e 27 2c 72 29 3b 0a 0a | tructure.detected:.r=%f\n',r);.. |
| 38c80 | 20 20 20 25 20 43 6f 6d 70 75 74 65 73 20 61 6e 20 69 6e 69 74 69 61 6c 20 67 75 65 73 73 20 66 | ...%.Computes.an.initial.guess.f |
| 38ca0 | 6f 72 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 28 77 6f 72 6b 73 20 66 | or.extrinsic.parameters.(works.f |
| 38cc0 | 6f 72 20 67 65 6e 65 72 61 6c 20 33 64 20 73 74 72 75 63 74 75 72 65 2c 20 6e 6f 74 20 70 6c 61 | or.general.3d.structure,.not.pla |
| 38ce0 | 6e 61 72 21 21 21 29 3a 0a 20 20 20 25 20 54 68 65 20 44 4c 54 20 6d 65 74 68 6f 64 20 69 73 20 | nar!!!):....%.The.DLT.method.is. |
| 38d00 | 61 70 70 6c 69 65 64 20 68 65 72 65 21 21 0a 20 20 20 0a 20 20 20 4a 20 3d 20 7a 65 72 6f 73 28 | applied.here!!........J.=.zeros( |
| 38d20 | 32 2a 4e 70 2c 31 32 29 3b 0a 09 0a 09 78 58 20 3d 20 28 6f 6e 65 73 28 33 2c 31 29 2a 78 6e 28 | 2*Np,12);....xX.=.(ones(3,1)*xn( |
| 38d40 | 31 2c 3a 29 29 2e 2a 58 5f 6b 6b 3b 0a 09 79 58 20 3d 20 28 6f 6e 65 73 28 33 2c 31 29 2a 78 6e | 1,:)).*X_kk;..yX.=.(ones(3,1)*xn |
| 38d60 | 28 32 2c 3a 29 29 2e 2a 58 5f 6b 6b 3b 0a 09 0a 09 4a 28 31 3a 32 3a 65 6e 64 2c 5b 31 20 34 20 | (2,:)).*X_kk;....J(1:2:end,[1.4. |
| 38d80 | 37 5d 29 20 3d 20 2d 58 5f 6b 6b 27 3b 0a 09 4a 28 32 3a 32 3a 65 6e 64 2c 5b 32 20 35 20 38 5d | 7]).=.-X_kk';..J(2:2:end,[2.5.8] |
| 38da0 | 29 20 3d 20 58 5f 6b 6b 27 3b 0a 09 4a 28 31 3a 32 3a 65 6e 64 2c 5b 33 20 36 20 39 5d 29 20 3d | ).=.X_kk';..J(1:2:end,[3.6.9]).= |
| 38dc0 | 20 78 58 27 3b 0a 09 4a 28 32 3a 32 3a 65 6e 64 2c 5b 33 20 36 20 39 5d 29 20 3d 20 2d 79 58 27 | .xX';..J(2:2:end,[3.6.9]).=.-yX' |
| 38de0 | 3b 0a 09 4a 28 31 3a 32 3a 65 6e 64 2c 31 32 29 20 3d 20 78 6e 28 31 2c 3a 29 27 3b 0a 09 4a 28 | ;..J(1:2:end,12).=.xn(1,:)';..J( |
| 38e00 | 32 3a 32 3a 65 6e 64 2c 31 32 29 20 3d 20 2d 78 6e 28 32 2c 3a 29 27 3b 0a 09 4a 28 31 3a 32 3a | 2:2:end,12).=.-xn(2,:)';..J(1:2: |
| 38e20 | 65 6e 64 2c 31 30 29 20 3d 20 2d 6f 6e 65 73 28 4e 70 2c 31 29 3b 0a 09 4a 28 32 3a 32 3a 65 6e | end,10).=.-ones(Np,1);..J(2:2:en |
| 38e40 | 64 2c 31 31 29 20 3d 20 6f 6e 65 73 28 4e 70 2c 31 29 3b 0a 09 0a 09 4a 4a 20 3d 20 4a 27 2a 4a | d,11).=.ones(Np,1);....JJ.=.J'*J |
| 38e60 | 3b 0a 09 5b 55 2c 53 2c 56 5d 20 3d 20 73 76 64 28 4a 4a 29 3b 0a 20 20 20 0a 20 20 20 52 52 20 | ;..[U,S,V].=.svd(JJ);........RR. |
| 38e80 | 3d 20 72 65 73 68 61 70 65 28 56 28 31 3a 39 2c 31 32 29 2c 33 2c 33 29 3b 0a 20 20 20 0a 20 20 | =.reshape(V(1:9,12),3,3);....... |
| 38ea0 | 20 69 66 20 64 65 74 28 52 52 29 20 3c 20 30 2c 0a 20 20 20 20 20 20 56 28 3a 2c 31 32 29 20 3d | .if.det(RR).<.0,.......V(:,12).= |
| 38ec0 | 20 2d 56 28 3a 2c 31 32 29 3b 0a 20 20 20 20 20 20 52 52 20 3d 20 2d 52 52 3b 0a 20 20 20 65 6e | .-V(:,12);.......RR.=.-RR;....en |
| 38ee0 | 64 3b 0a 20 20 20 0a 20 20 20 5b 55 72 2c 53 72 2c 56 72 5d 20 3d 20 73 76 64 28 52 52 29 3b 0a | d;........[Ur,Sr,Vr].=.svd(RR);. |
| 38f00 | 20 20 20 0a 20 20 20 52 63 6b 6b 20 3d 20 55 72 2a 56 72 27 3b 0a 20 20 20 0a 20 20 20 73 63 20 | .......Rckk.=.Ur*Vr';........sc. |
| 38f20 | 3d 20 6e 6f 72 6d 28 56 28 31 3a 39 2c 31 32 29 29 20 2f 20 6e 6f 72 6d 28 52 63 6b 6b 28 3a 29 | =.norm(V(1:9,12))./.norm(Rckk(:) |
| 38f40 | 29 3b 0a 20 20 20 54 63 6b 6b 20 3d 20 56 28 31 30 3a 31 32 2c 31 32 29 2f 73 63 3b 0a 20 20 20 | );....Tckk.=.V(10:12,12)/sc;.... |
| 38f60 | 0a 09 6f 6d 63 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 28 52 63 6b 6b 29 3b 0a 20 20 20 52 63 | ..omckk.=.rodrigues(Rckk);....Rc |
| 38f80 | 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 6b 6b 29 3b 0a 20 20 20 0a 65 6e 64 3b 0a | kk.=.rodrigues(omckk);.....end;. |
| 38fa0 | 69 74 20 3d 20 73 71 72 74 28 61 62 73 28 31 2e 2f 28 69 6e 76 28 41 27 2a 41 29 2a 41 27 2a 62 | it.=.sqrt(abs(1./(inv(A'*A)*A'*b |
| 38fc0 | 29 29 29 3b 20 25 20 69 66 20 75 73 69 6e 67 20 61 20 74 77 6f 2d 66 6f 63 61 6c 20 6d 6f 64 65 | )));.%.if.using.a.two-focal.mode |
| 38fe0 | 6c 20 66 6f 72 20 69 6e 69 74 69 61 6c 20 67 75 65 73 73 0a 0a 25 66 5f 69 6e 69 74 20 3d 20 73 | l.for.initial.guess..%f_init.=.s |
| 39000 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f | TOOLBOX_calib/compute_extrinsic_ |
| 39020 | 72 65 66 69 6e 65 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | refine.m........................ |
| 39040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 39060 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 39080 | 20 20 20 34 36 32 33 20 20 37 30 32 34 30 33 37 33 31 31 20 20 31 33 36 37 32 00 20 00 00 00 00 | ...4623..7024037311..13672...... |
| 390a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 390c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 390e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 39100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 39120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 39140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 39160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 39180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 391a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 391c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 391e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 39200 | 66 75 6e 63 74 69 6f 6e 20 5b 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 52 63 6b 6b 2c 4a 4a 5d 20 3d 20 | function.[omckk,Tckk,Rckk,JJ].=. |
| 39220 | 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 72 65 66 69 6e 65 28 6f 6d 63 5f 69 6e 69 | compute_extrinsic_refine(omc_ini |
| 39240 | 74 2c 54 63 5f 69 6e 69 74 2c 78 5f 6b 6b 2c 58 5f 6b 6b 2c 66 63 2c 63 63 2c 6b 63 2c 4d 61 78 | t,Tc_init,x_kk,X_kk,fc,cc,kc,Max |
| 39260 | 49 74 65 72 2c 74 68 72 65 73 68 5f 63 6f 6e 64 29 2c 0a 0a 25 63 6f 6d 70 75 74 65 5f 65 78 74 | Iter,thresh_cond),..%compute_ext |
| 39280 | 72 69 6e 73 69 63 0a 25 0a 25 5b 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 52 63 6b 6b 5d 20 3d 20 63 6f | rinsic.%.%[omckk,Tckk,Rckk].=.co |
| 392a0 | 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 72 65 66 69 6e 65 28 78 5f 6b 6b 2c 58 5f 6b 6b | mpute_extrinsic_refine(x_kk,X_kk |
| 392c0 | 2c 66 63 2c 63 63 2c 6b 63 2c 4d 61 78 49 74 65 72 29 0a 25 0a 25 43 6f 6d 70 75 74 65 73 20 74 | ,fc,cc,kc,MaxIter).%.%Computes.t |
| 392e0 | 68 65 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 61 74 74 61 63 68 65 64 | he.extrinsic.parameters.attached |
| 39300 | 20 74 6f 20 61 20 33 44 20 73 74 72 75 63 74 75 72 65 20 58 5f 6b 6b 20 67 69 76 65 6e 20 69 74 | .to.a.3D.structure.X_kk.given.it |
| 39320 | 73 20 70 72 6f 6a 65 63 74 69 6f 6e 0a 25 6f 6e 20 74 68 65 20 69 6d 61 67 65 20 70 6c 61 6e 65 | s.projection.%on.the.image.plane |
| 39340 | 20 78 5f 6b 6b 20 61 6e 64 20 74 68 65 20 69 6e 74 72 69 6e 73 69 63 20 63 61 6d 65 72 61 20 70 | .x_kk.and.the.intrinsic.camera.p |
| 39360 | 61 72 61 6d 65 74 65 72 73 20 66 63 2c 20 63 63 20 61 6e 64 20 6b 63 2e 0a 25 57 6f 72 6b 73 20 | arameters.fc,.cc.and.kc..%Works. |
| 39380 | 77 69 74 68 20 70 6c 61 6e 61 72 20 61 6e 64 20 6e 6f 6e 2d 70 6c 61 6e 61 72 20 73 74 72 75 63 | with.planar.and.non-planar.struc |
| 393a0 | 74 75 72 65 73 2e 0a 25 0a 25 49 4e 50 55 54 3a 20 78 5f 6b 6b 3a 20 46 65 61 74 75 72 65 20 6c | tures..%.%INPUT:.x_kk:.Feature.l |
| 393c0 | 6f 63 61 74 69 6f 6e 73 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 73 0a 25 20 20 20 20 20 20 20 58 | ocations.on.the.images.%.......X |
| 393e0 | 5f 6b 6b 3a 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 67 72 69 64 20 63 6f 6f 72 64 69 6e 61 | _kk:.Corresponding.grid.coordina |
| 39400 | 74 65 73 0a 25 20 20 20 20 20 20 20 66 63 3a 20 43 61 6d 65 72 61 20 66 6f 63 61 6c 20 6c 65 6e | tes.%.......fc:.Camera.focal.len |
| 39420 | 67 74 68 0a 25 20 20 20 20 20 20 20 63 63 3a 20 50 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 | gth.%.......cc:.Principal.point. |
| 39440 | 63 6f 6f 72 64 69 6e 61 74 65 73 0a 25 20 20 20 20 20 20 20 6b 63 3a 20 44 69 73 74 6f 72 74 69 | coordinates.%.......kc:.Distorti |
| 39460 | 6f 6e 20 63 6f 65 66 66 69 63 69 65 6e 74 73 0a 25 20 20 20 20 20 20 20 4d 61 78 49 74 65 72 3a | on.coefficients.%.......MaxIter: |
| 39480 | 20 4d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 69 74 65 72 61 74 69 6f 6e 73 0a 25 0a | .Maximum.number.of.iterations.%. |
| 394a0 | 25 4f 55 54 50 55 54 3a 20 6f 6d 63 6b 6b 3a 20 33 44 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 | %OUTPUT:.omckk:.3D.rotation.vect |
| 394c0 | 6f 72 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 67 72 69 64 20 70 6f 73 69 74 69 6f 6e | or.attached.to.the.grid.position |
| 394e0 | 73 20 69 6e 20 73 70 61 63 65 0a 25 20 20 20 20 20 20 20 20 54 63 6b 6b 3a 20 33 44 20 74 72 61 | s.in.space.%........Tckk:.3D.tra |
| 39500 | 6e 73 6c 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 | nslation.vector.attached.to.the. |
| 39520 | 67 72 69 64 20 70 6f 73 69 74 69 6f 6e 73 20 69 6e 20 73 70 61 63 65 0a 25 20 20 20 20 20 20 20 | grid.positions.in.space.%....... |
| 39540 | 20 52 63 6b 6b 3a 20 33 44 20 72 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 63 65 73 20 63 6f 72 72 | .Rckk:.3D.rotation.matrices.corr |
| 39560 | 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 6f 6d 63 20 76 65 63 74 6f 72 73 0a 0a 25 0a | esponding.to.the.omc.vectors..%. |
| 39580 | 25 4d 65 74 68 6f 64 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 6e 6f 72 6d 61 6c 69 7a 65 64 | %Method:.Computes.the.normalized |
| 395a0 | 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 2c 20 74 68 65 6e 20 63 6f 6d 70 75 74 65 | .point.coordinates,.then.compute |
| 395c0 | 73 20 74 68 65 20 33 44 20 70 6f 73 65 0a 25 0a 25 49 6d 70 6f 72 74 61 6e 74 20 66 75 6e 63 74 | s.the.3D.pose.%.%Important.funct |
| 395e0 | 69 6f 6e 73 20 63 61 6c 6c 65 64 20 77 69 74 68 69 6e 20 74 68 61 74 20 70 72 6f 67 72 61 6d 3a | ions.called.within.that.program: |
| 39600 | 0a 25 0a 25 6e 6f 72 6d 61 6c 69 7a 65 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 6e 6f 72 6d | .%.%normalize:.Computes.the.norm |
| 39620 | 61 6c 69 7a 65 20 69 6d 61 67 65 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 2e 0a 25 | alize.image.point.coordinates..% |
| 39640 | 0a 25 70 6f 73 65 33 44 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 33 44 20 70 6f 73 65 20 6f | .%pose3D:.Computes.the.3D.pose.o |
| 39660 | 66 20 74 68 65 20 73 74 72 75 63 74 75 72 65 20 67 69 76 65 6e 20 74 68 65 20 6e 6f 72 6d 61 6c | f.the.structure.given.the.normal |
| 39680 | 69 7a 65 64 20 69 6d 61 67 65 20 70 72 6f 6a 65 63 74 69 6f 6e 2e 0a 25 0a 25 70 72 6f 6a 65 63 | ized.image.projection..%.%projec |
| 396a0 | 74 5f 70 6f 69 6e 74 73 2e 6d 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 32 44 20 69 6d 61 67 | t_points.m:.Computes.the.2D.imag |
| 396c0 | 65 20 70 72 6f 6a 65 63 74 69 6f 6e 73 20 6f 66 20 61 20 73 65 74 20 6f 66 20 33 44 20 70 6f 69 | e.projections.of.a.set.of.3D.poi |
| 396e0 | 6e 74 73 0a 0a 0a 69 66 20 6e 61 72 67 69 6e 20 3c 20 39 2c 0a 20 20 20 74 68 72 65 73 68 5f 63 | nts...if.nargin.<.9,....thresh_c |
| 39700 | 6f 6e 64 20 3d 20 69 6e 66 3b 0a 65 6e 64 3b 0a 0a 0a 69 66 20 6e 61 72 67 69 6e 20 3c 20 38 2c | ond.=.inf;.end;...if.nargin.<.8, |
| 39720 | 0a 20 20 20 4d 61 78 49 74 65 72 20 3d 20 32 30 3b 0a 65 6e 64 3b 0a 0a 0a 69 66 20 6e 61 72 67 | ....MaxIter.=.20;.end;...if.narg |
| 39740 | 69 6e 20 3c 20 37 2c 0a 20 20 20 6b 63 20 3d 20 7a 65 72 6f 73 28 34 2c 31 29 3b 0a 20 20 20 69 | in.<.7,....kc.=.zeros(4,1);....i |
| 39760 | 66 20 6e 61 72 67 69 6e 20 3c 20 36 2c 0a 20 20 20 20 20 20 63 63 20 3d 20 7a 65 72 6f 73 28 32 | f.nargin.<.6,.......cc.=.zeros(2 |
| 39780 | 2c 31 29 3b 0a 20 20 20 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3c 20 35 2c 0a 20 20 20 20 20 20 | ,1);.......if.nargin.<.5,....... |
| 397a0 | 20 20 20 66 63 20 3d 20 6f 6e 65 73 28 32 2c 31 29 3b 0a 20 20 20 20 20 20 20 20 20 69 66 20 6e | ...fc.=.ones(2,1);..........if.n |
| 397c0 | 61 72 67 69 6e 20 3c 20 34 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 28 27 4e 65 | argin.<.4,.............error('Ne |
| 397e0 | 65 64 20 32 44 20 70 72 6f 6a 65 63 74 69 6f 6e 73 20 61 6e 64 20 33 44 20 70 6f 69 6e 74 73 20 | ed.2D.projections.and.3D.points. |
| 39800 | 28 69 6e 20 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 72 65 66 69 6e 65 2e 6d 29 27 | (in.compute_extrinsic_refine.m)' |
| 39820 | 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0a 20 20 20 20 20 20 20 20 20 | );.............return;.......... |
| 39840 | 65 6e 64 3b 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 0a 25 | end;.......end;....end;.end;...% |
| 39860 | 20 49 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 3a 0a 0a 6f 6d 63 6b 6b 20 3d 20 6f 6d 63 5f 69 6e | .Initialization:..omckk.=.omc_in |
| 39880 | 69 74 3b 0a 54 63 6b 6b 20 3d 20 54 63 5f 69 6e 69 74 3b 0a 0a 0a 25 20 46 69 6e 61 6c 20 6f 70 | it;.Tckk.=.Tc_init;...%.Final.op |
| 398a0 | 74 69 6d 69 7a 61 74 69 6f 6e 20 28 6d 69 6e 69 6d 69 7a 65 20 74 68 65 20 72 65 70 72 6f 6a 65 | timization.(minimize.the.reproje |
| 398c0 | 63 74 69 6f 6e 20 65 72 72 6f 72 20 69 6e 20 70 69 78 65 6c 29 3a 0a 25 20 74 68 72 6f 75 67 68 | ction.error.in.pixel):.%.through |
| 398e0 | 20 47 72 61 64 69 65 6e 74 20 44 65 73 63 65 6e 74 3a 0a 0a 70 61 72 61 6d 20 3d 20 5b 6f 6d 63 | .Gradient.Descent:..param.=.[omc |
| 39900 | 6b 6b 3b 54 63 6b 6b 5d 3b 0a 0a 63 68 61 6e 67 65 20 3d 20 31 3b 0a 0a 69 74 65 72 20 3d 20 30 | kk;Tckk];..change.=.1;..iter.=.0 |
| 39920 | 3b 0a 0a 25 6b 65 79 62 6f 61 72 64 3b 0a 0a 25 66 70 72 69 6e 74 66 28 31 2c 27 47 72 61 64 69 | ;..%keyboard;..%fprintf(1,'Gradi |
| 39940 | 65 6e 74 20 64 65 73 63 65 6e 74 20 69 74 65 72 61 74 69 6f 6e 73 3a 20 27 29 3b 0a 0a 77 68 69 | ent.descent.iterations:.');..whi |
| 39960 | 6c 65 20 28 63 68 61 6e 67 65 20 3e 20 31 65 2d 31 30 29 26 28 69 74 65 72 20 3c 20 4d 61 78 49 | le.(change.>.1e-10)&(iter.<.MaxI |
| 39980 | 74 65 72 29 2c 0a 20 20 20 0a 20 20 20 25 66 70 72 69 6e 74 66 28 31 2c 27 25 64 2e 2e 2e 27 2c | ter),........%fprintf(1,'%d...', |
| 399a0 | 69 74 65 72 2b 31 29 3b 0a 0a 20 20 20 5b 78 2c 64 78 64 6f 6d 2c 64 78 64 54 5d 20 3d 20 70 72 | iter+1);.....[x,dxdom,dxdT].=.pr |
| 399c0 | 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 28 58 5f 6b 6b 2c 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 66 63 2c | oject_points(X_kk,omckk,Tckk,fc, |
| 399e0 | 63 63 2c 6b 63 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 78 20 3d 20 78 5f 6b 6b 20 2d 20 78 3b | cc,kc);...........ex.=.x_kk.-.x; |
| 39a00 | 0a 20 20 20 0a 20 20 20 25 6b 65 79 62 6f 61 72 64 3b 0a 20 20 20 0a 20 20 20 4a 4a 20 3d 20 5b | ........%keyboard;........JJ.=.[ |
| 39a20 | 64 78 64 6f 6d 20 64 78 64 54 5d 3b 0a 20 20 20 0a 20 20 20 69 66 20 63 6f 6e 64 28 4a 4a 29 20 | dxdom.dxdT];........if.cond(JJ). |
| 39a40 | 3e 20 74 68 72 65 73 68 5f 63 6f 6e 64 2c 0a 20 20 20 20 20 20 63 68 61 6e 67 65 20 3d 20 30 3b | >.thresh_cond,.......change.=.0; |
| 39a60 | 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 0a 20 20 20 09 4a 4a 32 20 3d 20 4a 4a 27 2a 4a 4a | ....else............JJ2.=.JJ'*JJ |
| 39a80 | 3b 0a 20 20 20 0a 09 09 70 61 72 61 6d 5f 69 6e 6e 6f 76 20 3d 20 69 6e 76 28 4a 4a 32 29 2a 28 | ;.......param_innov.=.inv(JJ2)*( |
| 39aa0 | 4a 4a 27 29 2a 65 78 28 3a 29 3b 0a 09 09 70 61 72 61 6d 5f 75 70 20 3d 20 70 61 72 61 6d 20 2b | JJ')*ex(:);...param_up.=.param.+ |
| 39ac0 | 20 70 61 72 61 6d 5f 69 6e 6e 6f 76 3b 0a 09 09 63 68 61 6e 67 65 20 3d 20 6e 6f 72 6d 28 70 61 | .param_innov;...change.=.norm(pa |
| 39ae0 | 72 61 6d 5f 69 6e 6e 6f 76 29 2f 6e 6f 72 6d 28 70 61 72 61 6d 5f 75 70 29 3b 0a 09 09 70 61 72 | ram_innov)/norm(param_up);...par |
| 39b00 | 61 6d 20 3d 20 70 61 72 61 6d 5f 75 70 3b 0a 09 09 69 74 65 72 20 3d 20 69 74 65 72 20 2b 20 31 | am.=.param_up;...iter.=.iter.+.1 |
| 39b20 | 3b 0a 20 20 20 0a 20 20 20 09 6f 6d 63 6b 6b 20 3d 20 70 61 72 61 6d 28 31 3a 33 29 3b 0a 20 20 | ;.........omckk.=.param(1:3);... |
| 39b40 | 20 09 54 63 6b 6b 20 3d 20 70 61 72 61 6d 28 34 3a 36 29 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 | ..Tckk.=.param(4:6);....end;.... |
| 39b60 | 0a 65 6e 64 3b 0a 0a 25 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 27 29 3b 0a 0a 52 63 6b 6b 20 3d | .end;..%fprintf(1,'\n');..Rckk.= |
| 39b80 | 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 6b 6b 29 3b 0a 73 66 6f 72 6d 20 2a 20 58 5f 6b 6b 20 | .rodrigues(omckk);.sform.*.X_kk. |
| 39ba0 | 2b 20 54 63 6b 6b 20 2b 20 54 5f 74 72 61 6e 73 66 6f 72 6d 0a 20 20 20 0a 20 20 20 54 63 6b 6b | +.Tckk.+.T_transform........Tckk |
| 39bc0 | 20 3d 20 54 63 6b 6b 20 2b 20 52 63 6b 6b 2a 20 54 5f 74 72 61 6e 73 66 6f 72 6d 3b 0a 20 20 20 | .=.Tckk.+.Rckk*.T_transform;.... |
| 39be0 | 52 63 6b 6b 20 3d 20 52 63 6b 6b 20 2a 20 52 5f 74 72 61 6e 73 66 6f 72 6d 3b 0a 0a 20 20 20 6f | Rckk.=.Rckk.*.R_transform;.....o |
| 39c00 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 74 65 | TOOLBOX_calib/go_calib_optim_ite |
| 39c20 | 72 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | r.m............................. |
| 39c40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 39c60 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 39c80 | 20 20 32 33 30 37 35 20 20 37 30 32 34 30 33 37 33 33 30 20 20 31 32 36 31 33 00 20 00 00 00 00 | ..23075..7024037330..12613...... |
| 39ca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 39cc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 39ce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 39d00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 39d20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 39d40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 39d60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 39d80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 39da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 39dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 39de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 39e00 | 25 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 74 65 72 0a 25 0a 25 4d 61 69 6e 20 63 61 6c | %go_calib_optim_iter.%.%Main.cal |
| 39e20 | 69 62 72 61 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 2e 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 | ibration.function..Computes.the. |
| 39e40 | 69 6e 74 72 69 6e 73 69 63 20 61 6e 64 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 | intrinsic.andextrinsic.parameter |
| 39e60 | 73 2e 0a 25 52 75 6e 73 20 61 73 20 61 20 73 63 72 69 70 74 2e 0a 25 0a 25 49 4e 50 55 54 3a 20 | s..%Runs.as.a.script..%.%INPUT:. |
| 39e80 | 78 5f 31 2c 78 5f 32 2c 78 5f 33 2c 2e 2e 2e 3a 20 46 65 61 74 75 72 65 20 6c 6f 63 61 74 69 6f | x_1,x_2,x_3,...:.Feature.locatio |
| 39ea0 | 6e 73 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 73 0a 25 20 20 20 20 20 20 20 58 5f 31 2c 58 5f 32 | ns.on.the.images.%.......X_1,X_2 |
| 39ec0 | 2c 58 5f 33 2c 2e 2e 2e 3a 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 67 72 69 64 20 63 6f 6f | ,X_3,...:.Corresponding.grid.coo |
| 39ee0 | 72 64 69 6e 61 74 65 73 0a 25 0a 25 4f 55 54 50 55 54 3a 20 66 63 3a 20 43 61 6d 65 72 61 20 66 | rdinates.%.%OUTPUT:.fc:.Camera.f |
| 39f00 | 6f 63 61 6c 20 6c 65 6e 67 74 68 0a 25 20 20 20 20 20 20 20 20 63 63 3a 20 50 72 69 6e 63 69 70 | ocal.length.%........cc:.Princip |
| 39f20 | 61 6c 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 0a 25 20 20 20 20 20 20 20 20 6b 63 | al.point.coordinates.%........kc |
| 39f40 | 3a 20 44 69 73 74 6f 72 74 69 6f 6e 20 63 6f 65 66 66 69 63 69 65 6e 74 73 0a 25 20 20 20 20 20 | :.Distortion.coefficients.%..... |
| 39f60 | 20 20 20 4b 4b 3a 20 54 68 65 20 63 61 6d 65 72 61 20 6d 61 74 72 69 78 20 28 63 6f 6e 74 61 69 | ...KK:.The.camera.matrix.(contai |
| 39f80 | 6e 69 6e 67 20 66 63 20 61 6e 64 20 63 63 29 0a 25 20 20 20 20 20 20 20 20 6f 6d 63 5f 31 2c 6f | ning.fc.and.cc).%........omc_1,o |
| 39fa0 | 6d 63 5f 32 2c 6f 6d 63 5f 33 2c 2e 2e 2e 3a 20 33 44 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 | mc_2,omc_3,...:.3D.rotation.vect |
| 39fc0 | 6f 72 73 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 67 72 69 64 20 70 6f 73 69 74 69 6f | ors.attached.to.the.grid.positio |
| 39fe0 | 6e 73 20 69 6e 20 73 70 61 63 65 0a 25 20 20 20 20 20 20 20 20 54 63 5f 31 2c 54 63 5f 32 2c 54 | ns.in.space.%........Tc_1,Tc_2,T |
| 3a000 | 63 5f 33 2c 2e 2e 2e 3a 20 33 44 20 74 72 61 6e 73 6c 61 74 69 6f 6e 20 76 65 63 74 6f 72 73 20 | c_3,...:.3D.translation.vectors. |
| 3a020 | 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 67 72 69 64 20 70 6f 73 69 74 69 6f 6e 73 20 69 | attached.to.the.grid.positions.i |
| 3a040 | 6e 20 73 70 61 63 65 0a 25 20 20 20 20 20 20 20 20 52 63 5f 31 2c 52 63 5f 32 2c 52 63 5f 33 2c | n.space.%........Rc_1,Rc_2,Rc_3, |
| 3a060 | 2e 2e 2e 3a 20 33 44 20 72 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 63 65 73 20 63 6f 72 72 65 73 | ...:.3D.rotation.matrices.corres |
| 3a080 | 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 6f 6d 63 20 76 65 63 74 6f 72 73 0a 25 0a 25 4d 65 | ponding.to.the.omc.vectors.%.%Me |
| 3a0a0 | 74 68 6f 64 3a 20 4d 69 6e 69 6d 69 7a 65 73 20 74 68 65 20 70 69 78 65 6c 20 72 65 70 72 6f 6a | thod:.Minimizes.the.pixel.reproj |
| 3a0c0 | 65 63 74 69 6f 6e 20 65 72 72 6f 72 20 69 6e 20 74 68 65 20 6c 65 61 73 74 20 73 71 75 61 72 65 | ection.error.in.the.least.square |
| 3a0e0 | 73 20 73 65 6e 73 65 20 6f 76 65 72 20 74 68 65 20 69 6e 74 72 69 6e 73 69 63 0a 25 20 20 20 20 | s.sense.over.the.intrinsic.%.... |
| 3a100 | 20 20 20 20 63 61 6d 65 72 61 20 70 61 72 61 6d 65 74 65 72 73 2c 20 61 6e 64 20 74 68 65 20 65 | ....camera.parameters,.and.the.e |
| 3a120 | 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 28 33 44 20 6c 6f 63 61 74 69 6f 6e | xtrinsic.parameters.(3D.location |
| 3a140 | 73 20 6f 66 20 74 68 65 20 67 72 69 64 73 20 69 6e 20 73 70 61 63 65 29 0a 25 0a 25 4e 6f 74 65 | s.of.the.grids.in.space).%.%Note |
| 3a160 | 3a 20 49 66 20 74 68 65 20 69 6e 74 72 69 6e 73 69 63 20 63 61 6d 65 72 61 20 70 61 72 61 6d 65 | :.If.the.intrinsic.camera.parame |
| 3a180 | 74 65 72 73 20 28 66 63 2c 20 63 63 2c 20 6b 63 29 20 64 6f 20 6e 6f 74 20 65 78 69 73 74 20 62 | ters.(fc,.cc,.kc).do.not.exist.b |
| 3a1a0 | 65 66 6f 72 65 2c 20 74 68 65 79 20 61 72 65 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 74 68 72 6f | efore,.they.are.initialized.thro |
| 3a1c0 | 75 67 68 0a 25 20 20 20 20 20 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 69 6e 69 74 5f 69 6e 74 | ugh.%......the.function.init_int |
| 3a1e0 | 72 69 6e 73 69 63 5f 70 61 72 61 6d 2e 6d 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 74 68 65 20 76 | rinsic_param.m..Otherwise,.the.v |
| 3a200 | 61 72 69 61 62 6c 65 73 20 69 6e 20 6d 65 6d 6f 72 79 20 61 72 65 20 75 73 65 64 20 61 73 20 69 | ariables.in.memory.are.used.as.i |
| 3a220 | 6e 69 74 69 61 6c 20 67 75 65 73 73 65 73 2e 0a 25 0a 25 4e 6f 74 65 3a 20 54 68 65 20 72 6f 77 | nitial.guesses..%.%Note:.The.row |
| 3a240 | 20 76 65 63 74 6f 72 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 20 63 6f 6e 73 69 73 74 73 20 6f | .vector.active_images.consists.o |
| 3a260 | 66 20 7a 65 72 6f 73 20 61 6e 64 20 6f 6e 65 73 2e 20 54 6f 20 64 65 61 63 74 69 76 61 74 65 20 | f.zeros.and.ones..To.deactivate. |
| 3a280 | 61 6e 20 69 6d 61 67 65 2c 20 73 65 74 20 74 68 65 0a 25 20 20 20 20 20 20 63 6f 72 72 65 73 70 | an.image,.set.the.%......corresp |
| 3a2a0 | 6f 6e 64 69 6e 67 20 65 6e 74 72 79 20 69 6e 20 74 68 65 20 61 63 74 69 76 65 5f 69 6d 61 67 65 | onding.entry.in.the.active_image |
| 3a2c0 | 73 20 76 65 63 74 6f 72 20 74 6f 20 7a 65 72 6f 2e 0a 25 0a 25 56 45 52 59 20 49 4d 50 4f 52 54 | s.vector.to.zero..%.%VERY.IMPORT |
| 3a2e0 | 41 4e 54 3a 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 77 6f 72 6b 73 20 66 6f 72 20 32 44 20 | ANT:.This.function.works.for.2D. |
| 3a300 | 61 6e 64 20 33 44 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 72 69 67 73 2c 20 65 78 63 65 70 74 20 | and.3D.calibration.rigs,.except. |
| 3a320 | 66 6f 72 20 69 6e 69 74 5f 69 6e 74 72 69 6e 73 69 63 5f 70 61 72 61 6d 2e 6d 0a 25 74 68 61 74 | for.init_intrinsic_param.m.%that |
| 3a340 | 20 69 73 20 73 6f 20 66 61 72 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 74 6f 20 77 6f 72 6b 20 6f | .is.so.far.implemented.to.work.o |
| 3a360 | 6e 6c 79 20 77 69 74 68 20 32 44 20 72 69 67 73 2e 0a 25 49 6e 20 74 68 65 20 66 75 74 75 72 65 | nly.with.2D.rigs..%In.the.future |
| 3a380 | 2c 20 61 20 6d 6f 72 65 20 67 65 6e 65 72 61 6c 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62 | ,.a.more.general.function.will.b |
| 3a3a0 | 65 20 74 68 65 72 65 2e 0a 25 46 6f 72 20 6e 6f 77 2c 20 69 66 20 75 73 69 6e 67 20 61 20 33 44 | e.there..%For.now,.if.using.a.3D |
| 3a3c0 | 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 72 69 67 2c 20 71 75 69 63 6b 5f 69 6e 69 74 20 69 73 20 | .calibration.rig,.quick_init.is. |
| 3a3e0 | 73 65 74 20 74 6f 20 31 20 66 6f 72 20 61 6e 20 65 61 73 79 20 69 6e 69 74 69 61 6c 69 7a 61 74 | set.to.1.for.an.easy.initializat |
| 3a400 | 69 6f 6e 20 6f 66 20 74 68 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 0a 0a 0a 63 68 65 63 6b 5f | ion.of.the.focal.length...check_ |
| 3a420 | 61 63 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 0a 0a 0a 71 75 69 63 6b 5f 69 6e 69 74 20 3d 20 30 | active_images;....quick_init.=.0 |
| 3a440 | 3b 20 25 20 53 65 74 20 74 6f 20 31 20 66 6f 72 20 75 73 69 6e 67 20 61 20 71 75 69 63 6b 20 69 | ;.%.Set.to.1.for.using.a.quick.i |
| 3a460 | 6e 69 74 20 28 6e 65 63 65 73 73 61 72 79 20 77 68 65 6e 20 75 73 69 6e 67 20 33 44 20 72 69 67 | nit.(necessary.when.using.3D.rig |
| 3a480 | 73 29 0a 0a 0a 0a 25 20 43 68 65 63 6b 20 33 44 2d 6e 65 73 73 20 6f 66 20 74 68 65 20 63 61 6c | s)....%.Check.3D-ness.of.the.cal |
| 3a4a0 | 69 62 72 61 74 69 6f 6e 20 72 69 67 3a 0a 72 69 67 33 44 20 3d 20 30 3b 0a 66 6f 72 20 6b 6b 20 | ibration.rig:.rig3D.=.0;.for.kk. |
| 3a4c0 | 3d 20 69 6e 64 5f 61 63 74 69 76 65 2c 0a 20 20 20 65 76 61 6c 28 5b 27 58 5f 6b 6b 20 3d 20 58 | =.ind_active,....eval(['X_kk.=.X |
| 3a4e0 | 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 69 66 20 69 73 33 44 | _'.num2str(kk).';']);....if.is3D |
| 3a500 | 28 58 5f 6b 6b 29 2c 0a 20 20 20 20 20 20 72 69 67 33 44 20 3d 20 31 3b 0a 20 20 20 65 6e 64 3b | (X_kk),.......rig3D.=.1;....end; |
| 3a520 | 0a 65 6e 64 3b 0a 0a 0a 0a 25 20 49 66 20 74 68 65 20 72 69 67 20 69 73 20 33 44 2c 20 74 68 65 | .end;....%.If.the.rig.is.3D,.the |
| 3a540 | 6e 20 6e 6f 20 63 68 6f 69 63 65 3a 20 74 68 65 20 6f 6e 6c 79 20 76 61 6c 69 64 20 69 6e 69 74 | n.no.choice:.the.only.valid.init |
| 3a560 | 69 61 6c 69 7a 61 74 69 6f 6e 20 69 73 20 6d 61 6e 75 61 6c 21 0a 69 66 20 72 69 67 33 44 2c 0a | ialization.is.manual!.if.rig3D,. |
| 3a580 | 20 20 20 71 75 69 63 6b 5f 69 6e 69 74 20 3d 20 31 3b 0a 65 6e 64 3b 0a 0a 0a 0a 0a 61 6c 70 68 | ...quick_init.=.1;.end;.....alph |
| 3a5a0 | 61 20 3d 20 30 2e 34 3b 20 25 20 73 65 74 20 61 6c 70 68 61 20 3d 20 31 3b 20 66 6f 72 20 73 74 | a.=.0.4;.%.set.alpha.=.1;.for.st |
| 3a5c0 | 65 65 70 65 73 74 20 67 72 61 64 69 65 6e 74 20 64 65 73 63 65 6e 74 0a 0a 0a 25 20 43 6f 6e 64 | eepest.gradient.descent...%.Cond |
| 3a5e0 | 69 74 69 6f 6e 69 6e 67 20 74 68 72 65 73 68 6f 6c 64 20 66 6f 72 20 76 69 65 77 20 72 65 6a 65 | itioning.threshold.for.view.reje |
| 3a600 | 63 74 69 6f 6e 0a 74 68 72 65 73 68 5f 63 6f 6e 64 20 3d 20 31 65 36 3b 0a 0a 0a 0a 0a 25 25 20 | ction.thresh_cond.=.1e6;.....%%. |
| 3a620 | 49 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e 74 72 69 6e 73 69 63 20 | Initialization.of.the.intrinsic. |
| 3a640 | 70 61 72 61 6d 65 74 65 72 73 20 28 69 66 20 6e 65 63 65 73 73 61 72 79 29 0a 0a 69 66 20 7e 65 | parameters.(if.necessary)..if.~e |
| 3a660 | 78 69 73 74 28 27 63 63 27 29 2c 0a 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 49 6e 69 74 69 61 | xist('cc'),....fprintf(1,'Initia |
| 3a680 | 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 70 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 | lization.of.the.principal.point. |
| 3a6a0 | 61 74 20 74 68 65 20 63 65 6e 74 65 72 20 6f 66 20 74 68 65 20 69 6d 61 67 65 2e 5c 6e 27 29 3b | at.the.center.of.the.image.\n'); |
| 3a6c0 | 0a 20 20 20 63 63 20 3d 20 5b 28 6e 78 2d 31 29 2f 32 3b 28 6e 79 2d 31 29 2f 32 5d 3b 0a 65 6e | ....cc.=.[(nx-1)/2;(ny-1)/2];.en |
| 3a6e0 | 64 3b 0a 0a 0a 69 66 20 7e 65 78 69 73 74 28 27 6b 63 27 29 2c 0a 20 20 20 66 70 72 69 6e 74 66 | d;...if.~exist('kc'),....fprintf |
| 3a700 | 28 31 2c 27 49 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 69 6d 61 67 65 20 | (1,'Initialization.of.the.image. |
| 3a720 | 64 69 73 74 6f 72 74 69 6f 6e 20 74 6f 20 7a 65 72 6f 2e 5c 6e 27 29 3b 0a 20 20 20 6b 63 20 3d | distortion.to.zero.\n');....kc.= |
| 3a740 | 20 7a 65 72 6f 73 28 34 2c 31 29 3b 0a 65 6e 64 3b 0a 0a 0a 69 66 20 7e 65 78 69 73 74 28 27 66 | .zeros(4,1);.end;...if.~exist('f |
| 3a760 | 63 27 29 26 20 71 75 69 63 6b 5f 69 6e 69 74 2c 0a 20 20 20 46 4f 56 5f 61 6e 67 6c 65 20 3d 20 | c')&.quick_init,....FOV_angle.=. |
| 3a780 | 33 35 3b 20 25 20 49 6e 69 74 69 61 6c 20 63 61 6d 65 72 61 20 66 69 65 6c 64 20 6f 66 20 76 69 | 35;.%.Initial.camera.field.of.vi |
| 3a7a0 | 65 77 20 69 6e 20 64 65 67 72 65 65 73 0a 20 20 20 66 70 72 69 6e 74 66 28 31 2c 5b 27 49 6e 69 | ew.in.degrees....fprintf(1,['Ini |
| 3a7c0 | 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 66 6f 63 61 6c 20 6c 65 6e 67 74 68 20 | tialization.of.the.focal.length. |
| 3a7e0 | 74 6f 20 61 20 46 4f 56 20 6f 66 20 27 20 6e 75 6d 32 73 74 72 28 46 4f 56 5f 61 6e 67 6c 65 29 | to.a.FOV.of.'.num2str(FOV_angle) |
| 3a800 | 20 27 20 64 65 67 72 65 65 73 2e 5c 6e 27 5d 29 3b 0a 20 20 20 66 63 20 3d 20 28 6e 78 2f 32 29 | .'.degrees.\n']);....fc.=.(nx/2) |
| 3a820 | 2f 74 61 6e 28 70 69 2a 46 4f 56 5f 61 6e 67 6c 65 2f 33 36 30 29 20 2a 20 6f 6e 65 73 28 32 2c | /tan(pi*FOV_angle/360).*.ones(2, |
| 3a840 | 31 29 3b 0a 65 6e 64 3b 0a 0a 0a 69 66 20 7e 65 78 69 73 74 28 27 66 63 27 29 2c 0a 20 20 20 25 | 1);.end;...if.~exist('fc'),....% |
| 3a860 | 20 49 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e 74 72 69 6e 73 69 63 | .Initialization.of.the.intrinsic |
| 3a880 | 20 70 61 72 61 6d 65 74 65 72 73 3a 0a 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 49 6e 69 74 69 | .parameters:....fprintf(1,'Initi |
| 3a8a0 | 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e 74 72 69 6e 73 69 63 20 70 61 72 61 6d | alization.of.the.intrinsic.param |
| 3a8c0 | 65 74 65 72 73 20 75 73 69 6e 67 20 74 68 65 20 76 61 6e 69 73 68 69 6e 67 20 70 6f 69 6e 74 73 | eters.using.the.vanishing.points |
| 3a8e0 | 20 6f 66 20 70 6c 61 6e 61 72 20 70 61 74 74 65 72 6e 73 2e 5c 6e 27 29 0a 20 20 20 69 6e 69 74 | .of.planar.patterns.\n')....init |
| 3a900 | 5f 69 6e 74 72 69 6e 73 69 63 5f 70 61 72 61 6d 3b 20 25 20 54 68 65 20 72 69 67 68 74 20 77 61 | _intrinsic_param;.%.The.right.wa |
| 3a920 | 79 20 74 6f 20 67 6f 20 28 69 66 20 71 75 69 63 6b 5f 69 6e 69 74 20 69 73 20 6e 6f 74 20 61 63 | y.to.go.(if.quick_init.is.not.ac |
| 3a940 | 74 69 76 65 29 21 0a 65 6e 64 3b 0a 0a 0a 0a 25 25 20 49 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e | tive)!.end;....%%.Initialization |
| 3a960 | 20 6f 66 20 74 68 65 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 66 6f 72 | .of.the.extrinsic.parameters.for |
| 3a980 | 20 67 6c 6f 62 61 6c 20 6d 69 6e 69 6d 69 7a 61 74 69 6f 6e 3a 0a 0a 69 6e 69 74 5f 70 61 72 61 | .global.minimization:..init_para |
| 3a9a0 | 6d 20 3d 20 5b 66 63 3b 6b 63 5d 3b 0a 0a 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a | m.=.[fc;kc];..for.kk.=.1:n_ima,. |
| 3a9c0 | 0a 09 69 66 20 65 78 69 73 74 28 5b 27 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 5d 29 2c 0a | ..if.exist(['x_'.num2str(kk)]),. |
| 3a9e0 | 20 20 20 0a 20 20 20 09 65 76 61 6c 28 5b 27 78 5f 6b 6b 20 3d 20 78 5f 27 20 6e 75 6d 32 73 74 | ........eval(['x_kk.=.x_'.num2st |
| 3aa00 | 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 20 20 20 65 76 61 6c 28 5b 27 58 5f 6b 6b 20 3d | r(kk).';']);.......eval(['X_kk.= |
| 3aa20 | 20 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 20 20 20 0a 20 | .X_'.num2str(kk).';']);......... |
| 3aa40 | 20 20 09 69 66 20 28 69 73 6e 61 6e 28 78 5f 6b 6b 28 31 2c 31 29 29 29 2c 0a 20 20 20 20 20 20 | ...if.(isnan(x_kk(1,1))),....... |
| 3aa60 | 09 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 2c 0a 20 20 20 20 20 20 20 20 20 | .if.active_images(kk),.......... |
| 3aa80 | 09 66 70 72 69 6e 74 66 28 31 2c 27 57 61 72 6e 69 6e 67 3a 20 43 61 6e 6e 6f 74 20 63 61 6c 69 | .fprintf(1,'Warning:.Cannot.cali |
| 3aaa0 | 62 72 61 74 65 20 77 69 74 68 20 69 6d 61 67 65 20 25 64 2e 20 4e 65 65 64 20 74 6f 20 65 78 74 | brate.with.image.%d..Need.to.ext |
| 3aac0 | 72 61 63 74 20 67 72 69 64 20 63 6f 72 6e 65 72 73 20 66 69 72 73 74 2e 5c 6e 27 2c 6b 6b 29 0a | ract.grid.corners.first.\n',kk). |
| 3aae0 | 20 20 20 20 20 20 20 20 20 09 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 20 20 20 20 20 20 53 65 | ..........fprintf(1,'.........Se |
| 3ab00 | 74 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 25 64 29 3d 31 3b 20 61 6e 64 20 72 75 6e 20 45 | t.active_images(%d)=1;.and.run.E |
| 3ab20 | 78 74 72 61 63 74 20 67 72 69 64 20 63 6f 72 6e 65 72 73 2e 5c 6e 27 2c 6b 6b 29 0a 20 20 20 20 | xtract.grid.corners.\n',kk)..... |
| 3ab40 | 20 20 09 65 6e 64 3b 0a 20 20 20 20 20 20 09 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 | ...end;........active_images(kk) |
| 3ab60 | 20 3d 20 30 3b 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 69 66 20 61 63 74 69 76 65 | .=.0;.......end;.......if.active |
| 3ab80 | 5f 69 6d 61 67 65 73 28 6b 6b 29 2c 0a 20 20 20 20 20 20 20 20 20 5b 6f 6d 63 6b 6b 2c 54 63 6b | _images(kk),..........[omckk,Tck |
| 3aba0 | 6b 5d 20 3d 20 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 69 6e 69 74 28 78 5f 6b 6b | k].=.compute_extrinsic_init(x_kk |
| 3abc0 | 2c 58 5f 6b 6b 2c 66 63 2c 63 63 2c 6b 63 29 3b 0a 20 20 20 20 20 20 20 20 20 5b 6f 6d 63 6b 6b | ,X_kk,fc,cc,kc);..........[omckk |
| 3abe0 | 2c 54 63 6b 6b 2c 52 63 6b 6b 2c 4a 4a 5f 6b 6b 5d 20 3d 20 63 6f 6d 70 75 74 65 5f 65 78 74 72 | ,Tckk,Rckk,JJ_kk].=.compute_extr |
| 3ac00 | 69 6e 73 69 63 5f 72 65 66 69 6e 65 28 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 78 5f 6b 6b 2c 58 5f 6b | insic_refine(omckk,Tckk,x_kk,X_k |
| 3ac20 | 6b 2c 66 63 2c 63 63 2c 6b 63 2c 32 30 2c 74 68 72 65 73 68 5f 63 6f 6e 64 29 3b 0a 20 20 20 20 | k,fc,cc,kc,20,thresh_cond);..... |
| 3ac40 | 20 20 20 20 20 69 66 20 63 6f 6e 64 28 4a 4a 5f 6b 6b 29 3e 20 74 68 72 65 73 68 5f 63 6f 6e 64 | .....if.cond(JJ_kk)>.thresh_cond |
| 3ac60 | 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 20 | ,.............active_images(kk). |
| 3ac80 | 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 6d 63 6b 6b 20 3d 20 4e 61 4e 2a 6f 6e 65 | =.0;.............omckk.=.NaN*one |
| 3aca0 | 73 28 33 2c 31 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 63 6b 6b 20 3d 20 4e 61 4e 2a 6f | s(3,1);.............Tckk.=.NaN*o |
| 3acc0 | 6e 65 73 28 33 2c 31 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 31 2c | nes(3,1);.............fprintf(1, |
| 3ace0 | 27 5c 6e 57 61 72 6e 69 6e 67 3a 20 56 69 65 77 20 23 25 64 20 69 6c 6c 2d 63 6f 6e 64 69 74 69 | '\nWarning:.View.#%d.ill-conditi |
| 3ad00 | 6f 6e 65 64 2e 20 54 68 69 73 20 69 6d 61 67 65 20 69 73 20 6e 6f 77 20 73 65 74 20 69 6e 61 63 | oned..This.image.is.now.set.inac |
| 3ad20 | 74 69 76 65 2e 5c 6e 27 2c 6b 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 73 61 63 74 69 | tive.\n',kk).............desacti |
| 3ad40 | 76 61 74 65 64 5f 69 6d 61 67 65 73 20 3d 20 5b 64 65 73 61 63 74 69 76 61 74 65 64 5f 69 6d 61 | vated_images.=.[desactivated_ima |
| 3ad60 | 67 65 73 20 6b 6b 5d 3b 0a 20 20 20 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 20 20 20 | ges.kk];..........end;.......... |
| 3ad80 | 69 66 20 69 73 6e 61 6e 28 6f 6d 63 6b 6b 28 31 2c 31 29 29 2c 0a 20 20 20 20 20 20 20 20 20 20 | if.isnan(omckk(1,1)),........... |
| 3ada0 | 20 20 25 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 57 61 72 6e 69 6e 67 3a 20 44 65 73 61 63 74 69 | ..%fprintf(1,'\nWarning:.Desacti |
| 3adc0 | 76 61 74 69 6e 67 20 69 6d 61 67 65 20 25 64 2e 20 52 65 2d 61 63 74 69 76 61 74 65 20 69 74 20 | vating.image.%d..Re-activate.it. |
| 3ade0 | 6c 61 74 65 72 20 62 79 20 74 79 70 69 6e 67 3a 5c 6e 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 | later.by.typing:\nactive_images( |
| 3ae00 | 25 64 29 3d 31 3b 5c 6e 61 6e 64 20 72 65 2d 72 75 6e 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 5c | %d)=1;\nand.re-run.optimization\ |
| 3ae20 | 6e 27 2c 5b 6b 6b 20 6b 6b 5d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 69 76 65 5f 69 | n',[kk.kk]).............active_i |
| 3ae40 | 6d 61 67 65 73 28 6b 6b 29 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 | mages(kk).=.0;..........end;.... |
| 3ae60 | 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 6f 6d 63 6b 6b 20 3d 20 4e 61 4e 2a 6f 6e 65 | ...else..........omckk.=.NaN*one |
| 3ae80 | 73 28 33 2c 31 29 3b 0a 20 20 20 20 20 20 20 20 20 54 63 6b 6b 20 3d 20 4e 61 4e 2a 6f 6e 65 73 | s(3,1);..........Tckk.=.NaN*ones |
| 3aea0 | 28 33 2c 31 29 3b 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 65 6c 73 65 0a 20 20 | (3,1);.......end;........else... |
| 3aec0 | 20 20 20 20 0a 20 20 20 20 20 20 6f 6d 63 6b 6b 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 33 2c 31 29 | ...........omckk.=.NaN*ones(3,1) |
| 3aee0 | 3b 0a 20 20 20 20 20 20 54 63 6b 6b 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 33 2c 31 29 3b 0a 20 20 | ;.......Tckk.=.NaN*ones(3,1);... |
| 3af00 | 20 20 20 20 0a 20 20 20 20 20 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 2c | ...........if.active_images(kk), |
| 3af20 | 0a 20 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 57 61 72 6e 69 6e 67 3a 20 43 61 | ..........fprintf(1,'Warning:.Ca |
| 3af40 | 6e 6e 6f 74 20 63 61 6c 69 62 72 61 74 65 20 77 69 74 68 20 69 6d 61 67 65 20 25 64 2e 20 4e 65 | nnot.calibrate.with.image.%d..Ne |
| 3af60 | 65 64 20 74 6f 20 65 78 74 72 61 63 74 20 67 72 69 64 20 63 6f 72 6e 65 72 73 20 66 69 72 73 74 | ed.to.extract.grid.corners.first |
| 3af80 | 2e 5c 6e 27 2c 6b 6b 29 0a 20 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 20 20 20 | .\n',kk)..........fprintf(1,'... |
| 3afa0 | 20 20 20 20 20 20 53 65 74 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 25 64 29 3d 31 3b 20 61 | ......Set.active_images(%d)=1;.a |
| 3afc0 | 6e 64 20 72 75 6e 20 45 78 74 72 61 63 74 20 67 72 69 64 20 63 6f 72 6e 65 72 73 2e 5c 6e 27 2c | nd.run.Extract.grid.corners.\n', |
| 3afe0 | 6b 6b 29 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 61 63 74 69 | kk).......end;..............acti |
| 3b000 | 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 20 3d 20 30 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 6e 64 | ve_images(kk).=.0;...........end |
| 3b020 | 3b 0a 20 20 20 0a 20 20 20 65 76 61 6c 28 5b 27 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b | ;........eval(['omc_'.num2str(kk |
| 3b040 | 29 20 27 20 3d 20 6f 6d 63 6b 6b 3b 27 5d 29 3b 0a 20 20 20 65 76 61 6c 28 5b 27 54 63 5f 27 20 | ).'.=.omckk;']);....eval(['Tc_'. |
| 3b060 | 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 20 3d 20 54 63 6b 6b 3b 27 5d 29 3b 0a 20 20 20 0a 20 20 | num2str(kk).'.=.Tckk;']);....... |
| 3b080 | 20 65 76 61 6c 28 5b 27 69 6e 69 74 5f 70 61 72 61 6d 20 3d 20 5b 69 6e 69 74 5f 70 61 72 61 6d | .eval(['init_param.=.[init_param |
| 3b0a0 | 3b 20 6f 6d 63 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 20 54 63 5f 27 20 6e 75 6d 32 | ;.omc_'.num2str(kk).';.Tc_'.num2 |
| 3b0c0 | 73 74 72 28 6b 6b 29 20 27 5d 3b 27 5d 29 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 0a 63 68 65 63 6b | str(kk).'];']);.....end;...check |
| 3b0e0 | 5f 61 63 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 0a 69 6e 69 74 5f 70 61 72 61 6d 20 3d 20 5b 69 | _active_images;..init_param.=.[i |
| 3b100 | 6e 69 74 5f 70 61 72 61 6d 3b 63 63 5d 3b 0a 0a 25 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | nit_param;cc];..%--------------- |
| 3b120 | 2d 2d 2d 2d 2d 20 4d 61 69 6e 20 4f 70 74 69 6d 69 7a 61 74 69 6f 6e 3a 0a 0a 66 70 72 69 6e 74 | -----.Main.Optimization:..fprint |
| 3b140 | 66 28 31 2c 27 5c 6e 4d 61 69 6e 20 63 61 6c 69 62 72 61 74 69 6f 6e 20 6f 70 74 69 6d 69 7a 61 | f(1,'\nMain.calibration.optimiza |
| 3b160 | 74 69 6f 6e 20 70 72 6f 63 65 64 75 72 65 20 2d 20 4e 75 6d 62 65 72 20 6f 66 20 69 6d 61 67 65 | tion.procedure.-.Number.of.image |
| 3b180 | 73 3a 20 25 64 5c 6e 27 2c 6c 65 6e 67 74 68 28 69 6e 64 5f 61 63 74 69 76 65 29 29 3b 0a 0a 0a | s:.%d\n',length(ind_active));... |
| 3b1a0 | 25 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 76 65 63 74 6f 72 20 68 65 6c 70 73 20 74 6f 20 | %.The.following.vector.helps.to. |
| 3b1c0 | 73 65 6c 65 63 74 20 74 68 65 20 76 61 72 69 61 62 6c 65 73 20 74 6f 20 75 70 64 61 74 65 3a 0a | select.the.variables.to.update:. |
| 3b1e0 | 69 6e 64 5f 4a 61 63 20 3d 20 66 69 6e 64 28 5b 6f 6e 65 73 28 36 2c 31 29 3b 72 65 73 68 61 70 | ind_Jac.=.find([ones(6,1);reshap |
| 3b200 | 65 28 6f 6e 65 73 28 36 2c 31 29 2a 61 63 74 69 76 65 5f 69 6d 61 67 65 73 2c 36 2a 6e 5f 69 6d | e(ones(6,1)*active_images,6*n_im |
| 3b220 | 61 2c 31 29 3b 6f 6e 65 73 28 32 2c 31 29 5d 29 27 3b 0a 0a 70 61 72 61 6d 20 3d 20 69 6e 69 74 | a,1);ones(2,1)])';..param.=.init |
| 3b240 | 5f 70 61 72 61 6d 3b 0a 63 68 61 6e 67 65 20 3d 20 31 3b 0a 0a 69 74 65 72 20 3d 20 30 3b 0a 0a | _param;.change.=.1;..iter.=.0;.. |
| 3b260 | 66 70 72 69 6e 74 66 28 31 2c 27 47 72 61 64 69 65 6e 74 20 64 65 73 63 65 6e 74 20 69 74 65 72 | fprintf(1,'Gradient.descent.iter |
| 3b280 | 61 74 69 6f 6e 73 3a 20 27 29 3b 0a 0a 70 61 72 61 6d 5f 6c 69 73 74 20 3d 20 70 61 72 61 6d 3b | ations:.');..param_list.=.param; |
| 3b2a0 | 0a 0a 4d 61 78 49 74 65 72 20 3d 20 33 30 3b 0a 0a 0a 77 68 69 6c 65 20 28 63 68 61 6e 67 65 20 | ..MaxIter.=.30;...while.(change. |
| 3b2c0 | 3e 20 31 65 2d 36 29 26 28 69 74 65 72 20 3c 20 4d 61 78 49 74 65 72 29 2c 0a 20 20 20 0a 20 20 | >.1e-6)&(iter.<.MaxIter),....... |
| 3b2e0 | 20 66 70 72 69 6e 74 66 28 31 2c 27 25 64 2e 2e 2e 27 2c 69 74 65 72 2b 31 29 3b 0a 20 20 20 0a | .fprintf(1,'%d...',iter+1);..... |
| 3b300 | 20 20 20 0a 20 20 20 25 25 20 54 68 65 20 66 69 72 73 74 20 73 74 65 70 20 63 6f 6e 73 69 73 74 | .......%%.The.first.step.consist |
| 3b320 | 73 20 6f 66 20 75 70 64 61 74 69 6e 67 20 74 68 65 20 77 68 6f 6c 65 20 76 65 63 74 6f 72 20 6f | s.of.updating.the.whole.vector.o |
| 3b340 | 66 20 6b 6e 6f 77 6e 73 20 28 69 6e 74 72 69 6e 73 69 63 20 2b 20 65 78 74 72 69 6e 73 69 63 20 | f.knowns.(intrinsic.+.extrinsic. |
| 3b360 | 6f 66 20 61 63 74 69 76 65 0a 20 20 20 25 25 20 69 6d 61 67 65 73 29 20 74 68 72 6f 75 67 68 20 | of.active....%%.images).through. |
| 3b380 | 61 20 6f 6e 65 20 73 74 65 70 20 73 74 65 65 70 65 73 74 20 67 72 61 64 69 65 6e 74 20 64 65 73 | a.one.step.steepest.gradient.des |
| 3b3a0 | 63 65 6e 74 2e 0a 20 20 20 0a 09 4a 4a 20 3d 20 5b 5d 3b 0a 09 65 78 20 3d 20 5b 5d 3b 0a 09 0a | cent.......JJ.=.[];..ex.=.[];... |
| 3b3c0 | 09 63 20 3d 20 70 61 72 61 6d 28 36 2a 6e 5f 69 6d 61 20 2b 20 34 20 2b 20 33 3a 36 2a 6e 5f 69 | .c.=.param(6*n_ima.+.4.+.3:6*n_i |
| 3b3e0 | 6d 61 20 2b 20 35 20 2b 20 33 29 3b 0a 09 66 20 3d 20 70 61 72 61 6d 28 31 3a 32 29 3b 0a 09 6b | ma.+.5.+.3);..f.=.param(1:2);..k |
| 3b400 | 20 3d 20 70 61 72 61 6d 28 33 3a 36 29 3b 0a 09 0a 20 20 20 66 6f 72 20 6b 6b 20 3d 20 31 3a 6e | .=.param(3:6);......for.kk.=.1:n |
| 3b420 | 5f 69 6d 61 2c 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 | _ima,..............if.active_ima |
| 3b440 | 67 65 73 28 6b 6b 29 2c 0a 20 20 09 20 0a 20 20 20 09 09 6f 6d 63 6b 6b 20 3d 20 70 61 72 61 6d | ges(kk),...........omckk.=.param |
| 3b460 | 28 34 2b 36 2a 28 6b 6b 2d 31 29 20 2b 20 33 3a 36 2a 6b 6b 20 2b 20 33 29 3b 0a 20 20 20 09 0a | (4+6*(kk-1).+.3:6*kk.+.3);...... |
| 3b480 | 20 20 20 20 20 20 20 20 20 54 63 6b 6b 20 3d 20 70 61 72 61 6d 28 36 2a 6b 6b 2b 31 20 2b 20 33 | .........Tckk.=.param(6*kk+1.+.3 |
| 3b4a0 | 3a 36 2a 6b 6b 2b 33 20 2b 20 33 29 3b 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 | :6*kk+3.+.3);................... |
| 3b4c0 | 20 69 66 20 69 73 6e 61 6e 28 6f 6d 63 6b 6b 28 31 29 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 | .if.isnan(omckk(1)),............ |
| 3b4e0 | 20 66 70 72 69 6e 74 66 28 31 2c 27 49 6e 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 | .fprintf(1,'Intrinsic.parameters |
| 3b500 | 20 61 74 20 66 72 61 6d 65 20 25 64 20 64 6f 20 6e 6f 74 20 65 78 69 73 74 5c 6e 27 2c 6b 6b 29 | .at.frame.%d.do.not.exist\n',kk) |
| 3b520 | 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0a 20 20 20 20 20 20 20 20 20 65 | ;.............return;..........e |
| 3b540 | 6e 64 3b 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 09 09 65 76 61 6c 28 5b 27 58 5f 6b 6b 20 3d | nd;................eval(['X_kk.= |
| 3b560 | 20 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 09 09 65 76 61 | .X_'.num2str(kk).';']);......eva |
| 3b580 | 6c 28 5b 27 78 5f 6b 6b 20 3d 20 78 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 | l(['x_kk.=.x_'.num2str(kk).';']) |
| 3b5a0 | 3b 0a 20 20 20 09 0a 20 20 20 09 09 4e 70 20 3d 20 73 69 7a 65 28 58 5f 6b 6b 2c 32 29 3b 0a 20 | ;...........Np.=.size(X_kk,2);.. |
| 3b5c0 | 20 20 09 0a 20 20 20 09 09 4a 4a 6b 6b 20 3d 20 7a 65 72 6f 73 28 32 2a 4e 70 2c 6e 5f 69 6d 61 | .........JJkk.=.zeros(2*Np,n_ima |
| 3b5e0 | 20 2a 20 36 20 2b 20 38 29 3b 0a 20 20 20 09 0a 20 20 20 09 09 5b 78 2c 64 78 64 6f 6d 2c 64 78 | .*.6.+.8);...........[x,dxdom,dx |
| 3b600 | 64 54 2c 64 78 64 66 2c 64 78 64 63 2c 64 78 64 6b 5d 20 3d 20 70 72 6f 6a 65 63 74 5f 70 6f 69 | dT,dxdf,dxdc,dxdk].=.project_poi |
| 3b620 | 6e 74 73 28 58 5f 6b 6b 2c 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 66 2c 63 2c 6b 29 3b 0a 20 20 20 20 | nts(X_kk,omckk,Tckk,f,c,k);..... |
| 3b640 | 20 20 0a 20 20 20 09 09 65 78 6b 6b 20 3d 20 78 5f 6b 6b 20 2d 20 78 3b 0a 20 20 20 0a 20 20 20 | ........exkk.=.x_kk.-.x;........ |
| 3b660 | 09 09 65 78 20 3d 20 5b 65 78 3b 65 78 6b 6b 28 3a 29 5d 3b 0a 20 20 20 0a 20 20 20 09 09 4a 4a | ..ex.=.[ex;exkk(:)];..........JJ |
| 3b680 | 6b 6b 28 3a 2c 31 3a 32 29 20 3d 20 64 78 64 66 3b 0a 20 20 20 09 09 4a 4a 6b 6b 28 3a 2c 33 3a | kk(:,1:2).=.dxdf;......JJkk(:,3: |
| 3b6a0 | 36 29 20 3d 20 64 78 64 6b 3b 0a 20 20 20 09 09 4a 4a 6b 6b 28 3a 2c 34 2b 36 2a 28 6b 6b 2d 31 | 6).=.dxdk;......JJkk(:,4+6*(kk-1 |
| 3b6c0 | 29 20 2b 20 33 3a 36 2a 6b 6b 20 2b 20 33 29 20 3d 20 64 78 64 6f 6d 3b 0a 20 20 20 09 09 4a 4a | ).+.3:6*kk.+.3).=.dxdom;......JJ |
| 3b6e0 | 6b 6b 28 3a 2c 36 2a 6b 6b 2b 31 20 2b 20 33 3a 36 2a 6b 6b 2b 33 20 2b 20 33 29 20 3d 20 64 78 | kk(:,6*kk+1.+.3:6*kk+3.+.3).=.dx |
| 3b700 | 64 54 3b 0a 20 20 20 09 09 4a 4a 6b 6b 28 3a 2c 36 2a 6e 5f 69 6d 61 20 2b 20 34 20 2b 20 33 3a | dT;......JJkk(:,6*n_ima.+.4.+.3: |
| 3b720 | 36 2a 6e 5f 69 6d 61 20 2b 20 35 20 2b 20 33 29 20 3d 20 64 78 64 63 3b 0a 20 20 20 09 09 09 0a | 6*n_ima.+.5.+.3).=.dxdc;........ |
| 3b740 | 20 20 20 20 20 20 20 20 20 4a 4a 20 3d 20 5b 4a 4a 3b 4a 4a 6b 6b 5d 3b 0a 20 20 20 20 20 20 20 | .........JJ.=.[JJ;JJkk];........ |
| 3b760 | 20 20 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 25 20 43 68 65 63 6b 20 69 66 | ......................%.Check.if |
| 3b780 | 20 74 68 69 73 20 76 69 65 77 20 69 73 20 69 6c 6c 2d 63 6f 6e 64 69 74 69 6f 6e 65 64 3a 0a 20 | .this.view.is.ill-conditioned:.. |
| 3b7a0 | 20 20 20 20 20 20 20 20 4a 4a 5f 6b 6b 20 3d 20 5b 64 78 64 6f 6d 20 64 78 64 54 5d 3b 0a 20 20 | ........JJ_kk.=.[dxdom.dxdT];... |
| 3b7c0 | 20 20 20 20 20 20 20 69 66 20 63 6f 6e 64 28 4a 4a 5f 6b 6b 29 3e 20 74 68 72 65 73 68 5f 63 6f | .......if.cond(JJ_kk)>.thresh_co |
| 3b7e0 | 6e 64 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 69 76 65 5f 69 6d 61 67 65 73 28 6b 6b | nd,.............active_images(kk |
| 3b800 | 29 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e | ).=.0;.............fprintf(1,'\n |
| 3b820 | 57 61 72 6e 69 6e 67 3a 20 56 69 65 77 20 23 25 64 20 69 6c 6c 2d 63 6f 6e 64 69 74 69 6f 6e 65 | Warning:.View.#%d.ill-conditione |
| 3b840 | 64 2e 20 54 68 69 73 20 69 6d 61 67 65 20 69 73 20 6e 6f 77 20 73 65 74 20 69 6e 61 63 74 69 76 | d..This.image.is.now.set.inactiv |
| 3b860 | 65 2e 5c 6e 27 2c 6b 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 73 61 63 74 69 76 61 74 | e.\n',kk).............desactivat |
| 3b880 | 65 64 5f 69 6d 61 67 65 73 20 3d 20 5b 64 65 73 61 63 74 69 76 61 74 65 64 5f 69 6d 61 67 65 73 | ed_images.=.[desactivated_images |
| 3b8a0 | 20 6b 6b 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 61 6d 28 34 2b 36 2a 28 6b 6b 2d | .kk];.............param(4+6*(kk- |
| 3b8c0 | 31 29 20 2b 20 33 3a 36 2a 6b 6b 2b 33 20 2b 20 33 29 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 36 2c | 1).+.3:6*kk+3.+.3).=.NaN*ones(6, |
| 3b8e0 | 31 29 3b 0a 20 20 20 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 | 1);..........end;............... |
| 3b900 | 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 09 0a 20 20 20 65 6e 64 3b | ...............end;.........end; |
| 3b920 | 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 20 4c 69 73 74 20 6f 66 20 61 63 74 69 76 65 20 69 6d 61 | ............%.List.of.active.ima |
| 3b940 | 67 65 73 20 28 6e 65 63 65 73 73 61 72 79 20 69 66 20 63 68 61 6e 67 65 64 29 3a 0a 20 20 20 63 | ges.(necessary.if.changed):....c |
| 3b960 | 68 65 63 6b 5f 61 63 74 69 76 65 5f 69 6d 61 67 65 73 3b 0a 20 20 20 69 6e 64 5f 4a 61 63 20 3d | heck_active_images;....ind_Jac.= |
| 3b980 | 20 66 69 6e 64 28 5b 6f 6e 65 73 28 36 2c 31 29 3b 72 65 73 68 61 70 65 28 6f 6e 65 73 28 36 2c | .find([ones(6,1);reshape(ones(6, |
| 3b9a0 | 31 29 2a 61 63 74 69 76 65 5f 69 6d 61 67 65 73 2c 36 2a 6e 5f 69 6d 61 2c 31 29 3b 6f 6e 65 73 | 1)*active_images,6*n_ima,1);ones |
| 3b9c0 | 28 32 2c 31 29 5d 29 27 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 4a 4a 20 3d 20 4a 4a 28 3a 2c 69 | (2,1)])';............JJ.=.JJ(:,i |
| 3b9e0 | 6e 64 5f 4a 61 63 29 3b 0a 20 20 20 0a 20 20 20 4a 4a 32 20 3d 20 4a 4a 27 2a 4a 4a 3b 0a 20 20 | nd_Jac);........JJ2.=.JJ'*JJ;... |
| 3ba00 | 20 0a 20 20 20 0a 20 20 20 25 20 53 6d 6f 6f 74 68 69 6e 67 20 63 6f 65 66 66 69 63 69 65 6e 74 | .........%.Smoothing.coefficient |
| 3ba20 | 3a 0a 20 20 20 0a 20 20 20 61 6c 70 68 61 32 20 3d 20 31 2d 28 31 2d 61 6c 70 68 61 29 5e 28 69 | :........alpha2.=.1-(1-alpha)^(i |
| 3ba40 | 74 65 72 2b 31 29 3b 20 25 73 65 74 20 74 6f 20 31 20 74 6f 20 75 6e 64 6f 20 61 6e 79 20 73 6d | ter+1);.%set.to.1.to.undo.any.sm |
| 3ba60 | 6f 6f 74 68 69 6e 67 21 0a 20 20 20 0a 20 20 20 0a 20 20 20 70 61 72 61 6d 5f 69 6e 6e 6f 76 20 | oothing!............param_innov. |
| 3ba80 | 3d 20 61 6c 70 68 61 32 2a 69 6e 76 28 4a 4a 32 29 2a 28 4a 4a 27 29 2a 65 78 3b 0a 20 20 20 70 | =.alpha2*inv(JJ2)*(JJ')*ex;....p |
| 3baa0 | 61 72 61 6d 5f 75 70 20 3d 20 70 61 72 61 6d 28 69 6e 64 5f 4a 61 63 29 20 2b 20 70 61 72 61 6d | aram_up.=.param(ind_Jac).+.param |
| 3bac0 | 5f 69 6e 6e 6f 76 3b 0a 20 20 20 70 61 72 61 6d 28 69 6e 64 5f 4a 61 63 29 20 3d 20 70 61 72 61 | _innov;....param(ind_Jac).=.para |
| 3bae0 | 6d 5f 75 70 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 20 4e 65 77 20 69 6e 74 72 69 6e 73 69 63 | m_up;............%.New.intrinsic |
| 3bb00 | 20 70 61 72 61 6d 65 74 65 72 73 3a 0a 20 20 20 0a 20 20 20 66 63 5f 63 75 72 72 65 6e 74 20 3d | .parameters:........fc_current.= |
| 3bb20 | 20 70 61 72 61 6d 28 31 3a 32 29 3b 0a 20 20 20 63 63 5f 63 75 72 72 65 6e 74 20 3d 20 70 61 72 | .param(1:2);....cc_current.=.par |
| 3bb40 | 61 6d 28 36 2a 6e 5f 69 6d 61 20 2b 20 34 20 2b 20 33 3a 36 2a 6e 5f 69 6d 61 20 2b 20 35 20 2b | am(6*n_ima.+.4.+.3:6*n_ima.+.5.+ |
| 3bb60 | 20 33 29 3b 0a 20 20 20 6b 63 5f 63 75 72 72 65 6e 74 20 3d 20 70 61 72 61 6d 28 33 3a 36 29 3b | .3);....kc_current.=.param(3:6); |
| 3bb80 | 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 20 43 68 61 6e 67 65 20 6f 6e 20 74 68 65 20 69 6e 74 72 | ............%.Change.on.the.intr |
| 3bba0 | 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 3a 0a 20 20 20 63 68 61 6e 67 65 20 3d 20 6e 6f | insic.parameters:....change.=.no |
| 3bbc0 | 72 6d 28 5b 66 63 5f 63 75 72 72 65 6e 74 3b 63 63 5f 63 75 72 72 65 6e 74 5d 20 2d 20 5b 66 3b | rm([fc_current;cc_current].-.[f; |
| 3bbe0 | 63 5d 29 2f 6e 6f 72 6d 28 5b 66 63 5f 63 75 72 72 65 6e 74 3b 63 63 5f 63 75 72 72 65 6e 74 5d | c])/norm([fc_current;cc_current] |
| 3bc00 | 29 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 25 20 53 65 63 6f 6e 64 20 73 74 65 70 3a 20 28 6f | );............%%.Second.step:.(o |
| 3bc20 | 70 74 69 6f 6e 61 6c 29 20 2d 20 49 74 20 6d 61 6b 65 73 20 63 6f 6e 76 65 72 67 65 6e 63 65 20 | ptional).-.It.makes.convergence. |
| 3bc40 | 66 61 73 74 65 72 2c 20 61 6e 64 20 74 68 65 20 72 65 67 69 6f 6e 20 6f 66 20 63 6f 6e 76 65 72 | faster,.and.the.region.of.conver |
| 3bc60 | 67 65 6e 63 65 20 4c 41 52 47 45 52 21 21 21 0a 20 20 20 25 25 20 52 65 63 6f 6d 70 75 74 65 20 | gence.LARGER!!!....%%.Recompute. |
| 3bc80 | 74 68 65 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 6f 6e 6c 79 20 75 73 | the.extrinsic.parameters.only.us |
| 3bca0 | 69 6e 67 20 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 2e 6d 20 28 74 68 69 73 20 6d 61 | ing.compute_extrinsic.m.(this.ma |
| 3bcc0 | 79 20 62 65 20 75 73 65 66 75 6c 20 73 6f 6d 65 74 69 6d 65 73 29 0a 20 20 20 25 25 20 54 68 65 | y.be.useful.sometimes)....%%.The |
| 3bce0 | 20 63 6f 6d 70 6c 65 74 65 20 67 72 61 64 69 65 6e 74 20 64 65 73 63 65 6e 74 20 6d 65 74 68 6f | .complete.gradient.descent.metho |
| 3bd00 | 64 20 69 73 20 75 73 65 66 75 6c 20 74 6f 20 70 72 65 63 69 73 65 6c 79 20 75 70 64 61 74 65 20 | d.is.useful.to.precisely.update. |
| 3bd20 | 74 68 65 20 69 6e 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 2e 0a 20 20 20 20 20 20 | the.intrinsic.parameters........ |
| 3bd40 | 0a 20 20 20 4d 61 78 49 74 65 72 32 20 3d 20 32 30 3b 0a 20 20 20 0a 20 20 20 66 6f 72 20 6b 6b | ....MaxIter2.=.20;........for.kk |
| 3bd60 | 20 3d 20 31 3a 6e 5f 69 6d 61 2c 0a 20 20 20 20 20 20 69 66 20 61 63 74 69 76 65 5f 69 6d 61 67 | .=.1:n_ima,.......if.active_imag |
| 3bd80 | 65 73 28 6b 6b 29 2c 0a 20 20 20 20 20 20 20 20 20 6f 6d 63 5f 63 75 72 72 65 6e 74 20 3d 20 70 | es(kk),..........omc_current.=.p |
| 3bda0 | 61 72 61 6d 28 34 2b 36 2a 28 6b 6b 2d 31 29 20 2b 20 33 3a 36 2a 6b 6b 20 2b 20 33 29 3b 0a 20 | aram(4+6*(kk-1).+.3:6*kk.+.3);.. |
| 3bdc0 | 20 20 20 20 20 20 20 20 54 63 5f 63 75 72 72 65 6e 74 20 3d 20 70 61 72 61 6d 28 36 2a 6b 6b 2b | ........Tc_current.=.param(6*kk+ |
| 3bde0 | 31 20 2b 20 33 3a 36 2a 6b 6b 2b 33 20 2b 20 33 29 3b 0a 20 20 20 20 20 20 09 65 76 61 6c 28 5b | 1.+.3:6*kk+3.+.3);........eval([ |
| 3be00 | 27 58 5f 6b 6b 20 3d 20 58 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 | 'X_kk.=.X_'.num2str(kk).';']);.. |
| 3be20 | 20 20 20 20 20 20 20 20 65 76 61 6c 28 5b 27 78 5f 6b 6b 20 3d 20 78 5f 27 20 6e 75 6d 32 73 74 | ........eval(['x_kk.=.x_'.num2st |
| 3be40 | 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 5b 6f 6d 63 5f 63 75 72 72 65 | r(kk).';']);..........[omc_curre |
| 3be60 | 6e 74 2c 54 63 5f 63 75 72 72 65 6e 74 5d 20 3d 20 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 | nt,Tc_current].=.compute_extrins |
| 3be80 | 69 63 5f 69 6e 69 74 28 78 5f 6b 6b 2c 58 5f 6b 6b 2c 66 63 5f 63 75 72 72 65 6e 74 2c 63 63 5f | ic_init(x_kk,X_kk,fc_current,cc_ |
| 3bea0 | 63 75 72 72 65 6e 74 2c 6b 63 5f 63 75 72 72 65 6e 74 29 3b 0a 20 20 20 20 20 20 20 20 20 5b 6f | current,kc_current);..........[o |
| 3bec0 | 6d 63 6b 6b 2c 54 63 6b 6b 2c 52 63 6b 6b 2c 4a 4a 5f 6b 6b 5d 20 3d 20 63 6f 6d 70 75 74 65 5f | mckk,Tckk,Rckk,JJ_kk].=.compute_ |
| 3bee0 | 65 78 74 72 69 6e 73 69 63 5f 72 65 66 69 6e 65 28 6f 6d 63 5f 63 75 72 72 65 6e 74 2c 54 63 5f | extrinsic_refine(omc_current,Tc_ |
| 3bf00 | 63 75 72 72 65 6e 74 2c 78 5f 6b 6b 2c 58 5f 6b 6b 2c 66 63 5f 63 75 72 72 65 6e 74 2c 63 63 5f | current,x_kk,X_kk,fc_current,cc_ |
| 3bf20 | 63 75 72 72 65 6e 74 2c 6b 63 5f 63 75 72 72 65 6e 74 2c 4d 61 78 49 74 65 72 32 2c 74 68 72 65 | current,kc_current,MaxIter2,thre |
| 3bf40 | 73 68 5f 63 6f 6e 64 29 3b 0a 20 20 20 20 20 20 20 20 20 69 66 20 63 6f 6e 64 28 4a 4a 5f 6b 6b | sh_cond);..........if.cond(JJ_kk |
| 3bf60 | 29 3e 20 74 68 72 65 73 68 5f 63 6f 6e 64 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 69 | )>.thresh_cond,.............acti |
| 3bf80 | 76 65 5f 69 6d 61 67 65 73 28 6b 6b 29 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 | ve_images(kk).=.0;.............f |
| 3bfa0 | 70 72 69 6e 74 66 28 31 2c 27 5c 6e 57 61 72 6e 69 6e 67 3a 20 56 69 65 77 20 23 25 64 20 69 6c | printf(1,'\nWarning:.View.#%d.il |
| 3bfc0 | 6c 2d 63 6f 6e 64 69 74 69 6f 6e 65 64 2e 20 54 68 69 73 20 69 6d 61 67 65 20 69 73 20 6e 6f 77 | l-conditioned..This.image.is.now |
| 3bfe0 | 20 73 65 74 20 69 6e 61 63 74 69 76 65 2e 5c 6e 27 2c 6b 6b 29 0a 20 20 20 20 20 20 20 20 20 20 | .set.inactive.\n',kk)........... |
| 3c000 | 20 20 64 65 73 61 63 74 69 76 61 74 65 64 5f 69 6d 61 67 65 73 20 3d 20 5b 64 65 73 61 63 74 69 | ..desactivated_images.=.[desacti |
| 3c020 | 76 61 74 65 64 5f 69 6d 61 67 65 73 20 6b 6b 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 6d | vated_images.kk];.............om |
| 3c040 | 63 6b 6b 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 33 2c 31 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 | ckk.=.NaN*ones(3,1);............ |
| 3c060 | 20 54 63 6b 6b 20 3d 20 4e 61 4e 2a 6f 6e 65 73 28 33 2c 31 29 3b 0a 20 20 20 20 20 20 20 20 20 | .Tckk.=.NaN*ones(3,1);.......... |
| 3c080 | 65 6e 64 3b 0a 09 09 09 70 61 72 61 6d 28 34 2b 36 2a 28 6b 6b 2d 31 29 20 2b 20 33 3a 36 2a 6b | end;....param(4+6*(kk-1).+.3:6*k |
| 3c0a0 | 6b 20 2b 20 33 29 20 3d 20 6f 6d 63 6b 6b 3b 0a 20 20 20 20 20 20 20 20 20 70 61 72 61 6d 28 36 | k.+.3).=.omckk;..........param(6 |
| 3c0c0 | 2a 6b 6b 2b 31 20 2b 20 33 3a 36 2a 6b 6b 2b 33 20 2b 20 33 29 20 3d 20 54 63 6b 6b 3b 0a 20 20 | *kk+1.+.3:6*kk+3.+.3).=.Tckk;... |
| 3c0e0 | 20 20 20 20 65 6e 64 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 0a 20 20 20 25 66 70 72 69 6e 74 66 | ....end;....end;........%fprintf |
| 3c100 | 28 31 2c 27 5c 6e 5c 6e 43 61 6c 69 62 72 61 74 69 6f 6e 20 72 65 73 75 6c 74 73 20 61 66 74 65 | (1,'\n\nCalibration.results.afte |
| 3c120 | 72 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 3a 5c 6e 5c 6e 27 29 3b 0a 20 20 20 25 66 70 72 69 6e | r.optimization:\n\n');....%fprin |
| 3c140 | 74 66 28 31 2c 27 66 6f 63 61 6c 20 20 20 20 20 20 3d 20 5b 25 33 2e 35 66 20 20 20 25 33 2e 35 | tf(1,'focal......=.[%3.5f...%3.5 |
| 3c160 | 66 5d 5c 6e 27 2c 66 63 5f 63 75 72 72 65 6e 74 29 3b 0a 20 20 20 25 66 70 72 69 6e 74 66 28 31 | f]\n',fc_current);....%fprintf(1 |
| 3c180 | 2c 27 63 65 6e 74 65 72 20 20 20 20 20 3d 20 5b 25 33 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e | ,'center.....=.[%3.5f...%3.5f]\n |
| 3c1a0 | 27 2c 63 63 5f 63 75 72 72 65 6e 74 29 3b 0a 20 20 20 25 66 70 72 69 6e 74 66 28 31 2c 27 64 69 | ',cc_current);....%fprintf(1,'di |
| 3c1c0 | 73 74 6f 72 74 69 6f 6e 20 3d 20 5b 25 33 2e 35 66 20 20 20 25 33 2e 35 66 20 20 25 33 2e 35 66 | stortion.=.[%3.5f...%3.5f..%3.5f |
| 3c1e0 | 20 20 20 25 33 2e 35 66 5d 5c 6e 5c 6e 27 2c 6b 63 5f 63 75 72 72 65 6e 74 29 3b 20 20 20 0a 20 | ...%3.5f]\n\n',kc_current);..... |
| 3c200 | 20 20 0a 20 20 20 0a 20 20 20 70 61 72 61 6d 5f 6c 69 73 74 20 3d 20 5b 70 61 72 61 6d 5f 6c 69 | ..........param_list.=.[param_li |
| 3c220 | 73 74 20 70 61 72 61 6d 5d 3b 0a 20 20 20 0a 20 20 20 69 74 65 72 20 3d 20 69 74 65 72 20 2b 20 | st.param];........iter.=.iter.+. |
| 3c240 | 31 3b 0a 20 20 20 0a 65 6e 64 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 27 29 3b 0a 0a 0a | 1;.....end;..fprintf(1,'\n');... |
| 3c260 | 73 6f 6c 5f 77 69 74 68 5f 63 65 6e 74 65 72 20 3d 20 70 61 72 61 6d 3b 0a 0a 73 6f 6c 75 74 69 | sol_with_center.=.param;..soluti |
| 3c280 | 6f 6e 20 3d 20 70 61 72 61 6d 3b 0a 0a 0a 25 25 25 20 45 78 74 72 61 63 74 69 6f 6e 20 6f 66 20 | on.=.param;...%%%.Extraction.of. |
| 3c2a0 | 74 68 65 20 66 69 6e 61 6c 20 69 6e 74 72 69 6e 73 69 63 20 61 6e 64 20 65 78 74 72 69 6e 73 69 | the.final.intrinsic.and.extrinsi |
| 3c2c0 | 63 20 70 61 72 61 6d 61 74 65 72 73 3a 0a 0a 65 78 74 72 61 63 74 5f 70 61 72 61 6d 65 74 65 72 | c.paramaters:..extract_parameter |
| 3c2e0 | 73 3b 0a 63 6f 6d 70 5f 65 72 72 6f 72 5f 63 61 6c 69 62 3b 0a 0a 66 70 72 69 6e 74 66 28 31 2c | s;.comp_error_calib;..fprintf(1, |
| 3c300 | 27 5c 6e 5c 6e 43 61 6c 69 62 72 61 74 69 6f 6e 20 72 65 73 75 6c 74 73 20 61 66 74 65 72 20 6f | '\n\nCalibration.results.after.o |
| 3c320 | 70 74 69 6d 69 7a 61 74 69 6f 6e 3a 5c 6e 5c 6e 27 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 46 | ptimization:\n\n');.fprintf(1,'F |
| 3c340 | 6f 63 61 6c 20 4c 65 6e 67 74 68 3a 20 20 20 20 20 66 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 | ocal.Length:.....fc.=.[.%3.5f... |
| 3c360 | 25 33 2e 35 66 5d 5c 6e 27 2c 66 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 50 72 69 6e 63 69 | %3.5f]\n',fc);.fprintf(1,'Princi |
| 3c380 | 70 61 6c 20 70 6f 69 6e 74 3a 20 20 63 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 | pal.point:..cc.=.[.%3.5f...%3.5f |
| 3c3a0 | 5d 5c 6e 27 2c 63 63 29 3b 0a 66 70 72 69 6e 74 66 28 31 2c 27 44 69 73 74 6f 72 74 69 6f 6e 3a | ]\n',cc);.fprintf(1,'Distortion: |
| 3c3c0 | 20 20 20 20 20 20 20 6b 63 20 3d 20 5b 20 25 33 2e 35 66 20 20 20 25 33 2e 35 66 20 20 20 25 33 | .......kc.=.[.%3.5f...%3.5f...%3 |
| 3c3e0 | 2e 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 27 2c 6b 63 29 3b 20 20 20 0a 66 70 72 69 6e 74 66 28 | .5f...%3.5f]\n',kc);....fprintf( |
| 3c400 | 31 2c 27 50 69 78 65 6c 20 65 72 72 6f 72 3a 20 20 20 20 20 20 65 72 72 20 3d 20 5b 20 25 33 2e | 1,'Pixel.error:......err.=.[.%3. |
| 3c420 | 35 66 20 20 20 25 33 2e 35 66 5d 5c 6e 5c 6e 27 2c 65 72 72 5f 73 74 64 29 3b 20 0a 0a 3d 20 30 | 5f...%3.5f]\n\n',err_std);...=.0 |
| 3c440 | 3b 20 25 20 53 65 74 20 74 6f 20 31 20 66 6f 72 20 75 73 69 6e 67 20 61 20 71 75 69 63 6b 20 69 | ;.%.Set.to.1.for.using.a.quick.i |
| 3c460 | 6e 69 74 20 28 6e 65 63 65 73 73 61 72 79 20 77 68 65 6e 20 75 73 69 6e 67 20 33 44 20 72 69 67 | nit.(necessary.when.using.3D.rig |
| 3c480 | 73 29 0a 0a 0a 0a 25 20 43 68 65 63 6b 20 33 44 2d 6e 65 73 73 20 6f 66 20 74 68 65 20 63 61 6c | s)....%.Check.3D-ness.of.the.cal |
| 3c4a0 | 69 62 72 61 74 69 6f 6e 20 72 69 67 3a 0a 72 69 67 33 44 20 3d 20 30 3b 0a 66 6f 72 20 6b 6b 20 | ibration.rig:.rig3D.=.0;.for.kk. |
| 3c4c0 | 3d 20 69 6e 64 5f 61 63 74 69 76 65 2c 0a 20 20 20 65 76 61 6c 28 5b 27 58 5f 6b 6b 20 3d 20 58 | =.ind_active,....eval(['X_kk.=.X |
| 3c4e0 | 5f 27 20 6e 75 6d 32 73 74 72 28 6b 6b 29 20 27 3b 27 5d 29 3b 0a 20 20 20 69 66 20 69 73 33 44 | _'.num2str(kk).';']);....if.is3D |
| 3c500 | 28 58 5f 6b 6b 29 2c 0a 20 20 20 20 20 20 72 69 67 33 44 20 3d 20 31 3b 0a 20 20 20 65 6e 64 3b | (X_kk),.......rig3D.=.1;....end; |
| 3c520 | 0a 65 6e 64 3b 0a 0a 0a 0a 25 20 49 66 20 74 68 65 20 72 69 67 20 69 73 20 33 44 2c 20 74 68 65 | .end;....%.If.the.rig.is.3D,.the |
| 3c540 | 6e 20 6e 6f 20 63 68 6f 69 63 65 3a 20 74 68 65 20 6f 6e 6c 79 20 76 61 6c 69 64 20 69 6e 69 74 | n.no.choice:.the.only.valid.init |
| 3c560 | 69 61 6c 69 7a 61 74 69 6f 6e 20 69 73 20 6d 61 6e 75 61 6c 21 0a 69 66 20 72 69 67 33 44 2c 0a | ialization.is.manual!.if.rig3D,. |
| 3c580 | 20 20 20 71 75 69 63 6b 5f 69 6e 69 74 20 3d 20 31 3b 0a 65 6e 64 3b 0a 0a 0a 0a 0a 61 6c 70 68 | ...quick_init.=.1;.end;.....alph |
| 3c5a0 | 61 20 3d 20 30 2e 34 3b 20 25 20 73 65 74 20 61 6c 70 68 61 20 3d 20 31 3b 20 66 6f 72 20 73 74 | a.=.0.4;.%.set.alpha.=.1;.for.st |
| 3c5c0 | 65 65 70 65 73 74 20 67 72 61 64 69 65 6e 74 20 64 65 73 63 65 6e 74 0a 0a 0a 25 20 43 6f 6e 64 | eepest.gradient.descent...%.Cond |
| 3c5e0 | 69 74 69 6f 6e 69 6e 67 20 74 68 72 65 73 68 6f 6c 64 20 66 6f 72 20 76 69 65 77 20 72 65 6a 65 | itioning.threshold.for.view.reje |
| 3c600 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c660 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c680 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c6a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c6c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c6e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c7a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c7c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c7e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c800 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c820 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c860 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c880 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c8a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c8c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c8e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c900 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c920 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c9a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c9c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c9e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3ca00 | 61 6e 73 66 6f 72 6d 2a 6f 6e 65 73 28 31 2c 4e 70 29 3b 0a 20 20 20 0a 20 20 20 0a 20 20 20 25 | ansform*ones(1,Np);............% |
| 3ca20 | 20 43 6f 6d 70 75 74 65 20 74 68 65 20 70 6c 61 6e 61 72 20 68 6f 6d 6f 67 72 61 70 68 79 3a 0a | .Compute.the.planar.homography:. |
| 3ca40 | 20 20 20 0a 20 20 20 48 20 3d 20 63 6f 6d 70 75 74 65 5f 68 6f 6d 6f 67 72 61 70 68 79 20 28 78 | .......H.=.compute_homography.(x |
| 3ca60 | 6e 2c 58 5f 6e 65 77 28 31 3a 32 2c 3a 29 29 3b 0a 20 20 20 0a 20 20 20 25 20 44 65 2d 65 6d 62 | n,X_new(1:2,:));........%.De-emb |
| 3ca80 | 65 64 20 74 68 65 20 6d 6f 74 69 6f 6e 20 70 61 72 61 6d 65 74 65 72 73 20 66 72 6f 6d 20 74 68 | ed.the.motion.parameters.from.th |
| 3caa0 | 65 20 68 6f 6d 6f 67 72 61 70 68 79 3a 0a 20 20 20 0a 20 20 20 73 63 20 3d 20 6d 65 61 6e 28 5b | e.homography:........sc.=.mean([ |
| 3cac0 | 6e 6f 72 6d 28 48 28 3a 2c 31 29 29 3b 6e 6f 72 6d 28 48 28 3a 2c 32 29 29 5d 29 3b 0a 20 20 20 | norm(H(:,1));norm(H(:,2))]);.... |
| 3cae0 | 0a 20 20 20 48 20 3d 20 48 2f 73 63 3b 0a 20 20 20 0a 20 20 20 6f 6d 63 6b 6b 20 3d 20 72 6f 64 | ....H.=.H/sc;........omckk.=.rod |
| 3cb00 | 72 69 67 75 65 73 28 5b 48 28 3a 2c 31 3a 32 29 20 63 72 6f 73 73 28 48 28 3a 2c 31 29 2c 48 28 | rigues([H(:,1:2).cross(H(:,1),H( |
| 3cb20 | 3a 2c 32 29 29 5d 29 3b 0a 20 20 20 52 63 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 | :,2))]);....Rckk.=.rodrigues(omc |
| 3cb40 | 6b 6b 29 3b 0a 20 20 20 54 63 6b 6b 20 3d 20 48 28 3a 2c 33 29 3b 0a 20 20 20 0a 20 20 20 25 49 | kk);....Tckk.=.H(:,3);........%I |
| 3cb60 | 66 20 58 63 20 3d 20 52 63 6b 6b 20 2a 20 58 5f 6e 65 77 20 2b 20 54 63 6b 6b 2c 20 74 68 65 6e | f.Xc.=.Rckk.*.X_new.+.Tckk,.then |
| 3cb80 | 20 58 63 20 3d 20 52 63 6b 6b 20 2a 20 52 5f 74 72 61 6e 73 66 6f 72 6d 20 2a 20 58 5f 6b 6b 20 | .Xc.=.Rckk.*.R_transform.*.X_kk. |
| 3cba0 | 2b 20 54 63 6b 6b 20 2b 20 54 5f 74 72 61 6e 73 66 6f 72 6d 0a 20 20 20 0a 20 20 20 54 63 6b 6b | +.Tckk.+.T_transform........Tckk |
| 3cbc0 | 20 3d 20 54 63 6b 6b 20 2b 20 52 63 6b 6b 2a 20 54 5f 74 72 61 6e 73 66 6f 72 6d 3b 0a 20 20 20 | .=.Tckk.+.Rckk*.T_transform;.... |
| 3cbe0 | 52 63 6b 6b 20 3d 20 52 63 6b 6b 20 2a 20 52 5f 74 72 61 6e 73 66 6f 72 6d 3b 0a 0a 20 20 20 6f | Rckk.=.Rckk.*.R_transform;.....o |
| 3cc00 | 6d 63 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 28 52 63 6b 6b 29 3b 0a 20 20 20 52 63 6b 6b 20 | mckk.=.rodrigues(Rckk);....Rckk. |
| 3cc20 | 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 6b 6b 29 3b 0a 20 20 20 0a 20 20 20 0a 65 6c 73 65 | =.rodrigues(omckk);.........else |
| 3cc40 | 0a 20 20 20 0a 20 20 20 25 66 70 72 69 6e 74 66 28 31 2c 27 4e 6f 6e 20 70 6c 61 6e 61 72 20 73 | ........%fprintf(1,'Non.planar.s |
| 3cc60 | 74 72 75 63 74 75 72 65 20 64 65 74 65 63 74 65 64 3a 20 72 3d 25 66 5c 6e 27 2c 72 29 3b 0a 0a | tructure.detected:.r=%f\n',r);.. |
| 3cc80 | 20 20 20 25 20 43 6f 6d 70 75 74 65 73 20 61 6e 20 69 6e 69 74 69 61 6c 20 67 75 65 73 73 20 66 | ...%.Computes.an.initial.guess.f |
| 3cca0 | 6f 72 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 28 77 6f 72 6b 73 20 66 | or.extrinsic.parameters.(works.f |
| 3ccc0 | 6f 72 20 67 65 6e 65 72 61 6c 20 33 64 20 73 74 72 75 63 74 75 72 65 2c 20 6e 6f 74 20 70 6c 61 | or.general.3d.structure,.not.pla |
| 3cce0 | 6e 61 72 21 21 21 29 3a 0a 20 20 20 25 20 54 68 65 20 44 4c 54 20 6d 65 74 68 6f 64 20 69 73 20 | nar!!!):....%.The.DLT.method.is. |
| 3cd00 | 61 70 70 6c 69 65 64 20 68 65 72 65 21 21 0a 20 20 20 0a 20 20 20 4a 20 3d 20 7a 65 72 6f 73 28 | applied.here!!........J.=.zeros( |
| 3cd20 | 32 2a 4e 70 2c 31 32 29 3b 0a 09 0a 09 78 58 20 3d 20 28 6f 6e 65 73 28 33 2c 31 29 2a 78 6e 28 | 2*Np,12);....xX.=.(ones(3,1)*xn( |
| 3cd40 | 31 2c 3a 29 29 2e 2a 58 5f 6b 6b 3b 0a 09 79 58 20 3d 20 28 6f 6e 65 73 28 33 2c 31 29 2a 78 6e | 1,:)).*X_kk;..yX.=.(ones(3,1)*xn |
| 3cd60 | 28 32 2c 3a 29 29 2e 2a 58 5f 6b 6b 3b 0a 09 0a 09 4a 28 31 3a 32 3a 65 6e 64 2c 5b 31 20 34 20 | (2,:)).*X_kk;....J(1:2:end,[1.4. |
| 3cd80 | 37 5d 29 20 3d 20 2d 58 5f 6b 6b 27 3b 0a 09 4a 28 32 3a 32 3a 65 6e 64 2c 5b 32 20 35 20 38 5d | 7]).=.-X_kk';..J(2:2:end,[2.5.8] |
| 3cda0 | 29 20 3d 20 58 5f 6b 6b 27 3b 0a 09 4a 28 31 3a 32 3a 65 6e 64 2c 5b 33 20 36 20 39 5d 29 20 3d | ).=.X_kk';..J(1:2:end,[3.6.9]).= |
| 3cdc0 | 20 78 58 27 3b 0a 09 4a 28 32 3a 32 3a 65 6e 64 2c 5b 33 20 36 20 39 5d 29 20 3d 20 2d 79 58 27 | .xX';..J(2:2:end,[3.6.9]).=.-yX' |
| 3cde0 | 3b 0a 09 4a 28 31 3a 32 3a 65 6e 64 2c 31 32 29 20 3d 20 78 6e 28 31 2c 3a 29 27 3b 0a 09 4a 28 | ;..J(1:2:end,12).=.xn(1,:)';..J( |
| 3ce00 | 32 3a 32 3a 65 6e 64 2c 31 32 29 20 3d 20 2d 78 6e 28 32 2c 3a 29 27 3b 0a 09 4a 28 31 3a 32 3a | 2:2:end,12).=.-xn(2,:)';..J(1:2: |
| 3ce20 | 65 6e 64 2c 31 30 29 20 3d 20 2d 6f 6e 65 73 28 4e 70 2c 31 29 3b 0a 09 4a 28 32 3a 32 3a 65 6e | end,10).=.-ones(Np,1);..J(2:2:en |
| 3ce40 | 64 2c 31 31 29 20 3d 20 6f 6e 65 73 28 4e 70 2c 31 29 3b 0a 09 0a 09 4a 4a 20 3d 20 4a 27 2a 4a | d,11).=.ones(Np,1);....JJ.=.J'*J |
| 3ce60 | 3b 0a 09 5b 55 2c 53 2c 56 5d 20 3d 20 73 76 64 28 4a 4a 29 3b 0a 20 20 20 0a 20 20 20 52 52 20 | ;..[U,S,V].=.svd(JJ);........RR. |
| 3ce80 | 3d 20 72 65 73 68 61 70 65 28 56 28 31 3a 39 2c 31 32 29 2c 33 2c 33 29 3b 0a 20 20 20 0a 20 20 | =.reshape(V(1:9,12),3,3);....... |
| 3cea0 | 20 69 66 20 64 65 74 28 52 52 29 20 3c 20 30 2c 0a 20 20 20 20 20 20 56 28 3a 2c 31 32 29 20 3d | .if.det(RR).<.0,.......V(:,12).= |
| 3cec0 | 20 2d 56 28 3a 2c 31 32 29 3b 0a 20 20 20 20 20 20 52 52 20 3d 20 2d 52 52 3b 0a 20 20 20 65 6e | .-V(:,12);.......RR.=.-RR;....en |
| 3cee0 | 64 3b 0a 20 20 20 0a 20 20 20 5b 55 72 2c 53 72 2c 56 72 5d 20 3d 20 73 76 64 28 52 52 29 3b 0a | d;........[Ur,Sr,Vr].=.svd(RR);. |
| 3cf00 | 20 20 20 0a 20 20 20 52 63 6b 6b 20 3d 20 55 72 2a 56 72 27 3b 0a 20 20 20 0a 20 20 20 73 63 20 | .......Rckk.=.Ur*Vr';........sc. |
| 3cf20 | 3d 20 6e 6f 72 6d 28 56 28 31 3a 39 2c 31 32 29 29 20 2f 20 6e 6f 72 6d 28 52 63 6b 6b 28 3a 29 | =.norm(V(1:9,12))./.norm(Rckk(:) |
| 3cf40 | 29 3b 0a 20 20 20 54 63 6b 6b 20 3d 20 56 28 31 30 3a 31 32 2c 31 32 29 2f 73 63 3b 0a 20 20 20 | );....Tckk.=.V(10:12,12)/sc;.... |
| 3cf60 | 0a 09 6f 6d 63 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 28 52 63 6b 6b 29 3b 0a 20 20 20 52 63 | ..omckk.=.rodrigues(Rckk);....Rc |
| 3cf80 | 6b 6b 20 3d 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 6b 6b 29 3b 0a 20 20 20 0a 65 6e 64 3b 0a | kk.=.rodrigues(omckk);.....end;. |
| 3cfa0 | 69 74 20 3d 20 73 71 72 74 28 61 62 73 28 31 2e 2f 28 69 6e 76 28 41 27 2a 41 29 2a 41 27 2a 62 | it.=.sqrt(abs(1./(inv(A'*A)*A'*b |
| 3cfc0 | 29 29 29 3b 20 25 20 69 66 20 75 73 69 6e 67 20 61 20 74 77 6f 2d 66 6f 63 61 6c 20 6d 6f 64 65 | )));.%.if.using.a.two-focal.mode |
| 3cfe0 | 6c 20 66 6f 72 20 69 6e 69 74 69 61 6c 20 67 75 65 73 73 0a 0a 25 66 5f 69 6e 69 74 20 3d 20 73 | l.for.initial.guess..%f_init.=.s |
| 3d000 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f | TOOLBOX_calib/compute_extrinsic_ |
| 3d020 | 72 65 66 69 6e 65 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | refine.m........................ |
| 3d040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3d060 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 3d080 | 20 20 20 34 36 32 33 20 20 37 30 32 34 30 33 37 33 31 31 20 20 31 33 36 37 32 00 20 00 00 00 00 | ...4623..7024037311..13672...... |
| 3d0a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3d0c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3d0e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3d100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3d120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3d140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3d160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3d180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3d1a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3d1c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3d1e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3d200 | 66 75 6e 63 74 69 6f 6e 20 5b 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 52 63 6b 6b 2c 4a 4a 5d 20 3d 20 | function.[omckk,Tckk,Rckk,JJ].=. |
| 3d220 | 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 72 65 66 69 6e 65 28 6f 6d 63 5f 69 6e 69 | compute_extrinsic_refine(omc_ini |
| 3d240 | 74 2c 54 63 5f 69 6e 69 74 2c 78 5f 6b 6b 2c 58 5f 6b 6b 2c 66 63 2c 63 63 2c 6b 63 2c 4d 61 78 | t,Tc_init,x_kk,X_kk,fc,cc,kc,Max |
| 3d260 | 49 74 65 72 2c 74 68 72 65 73 68 5f 63 6f 6e 64 29 2c 0a 0a 25 63 6f 6d 70 75 74 65 5f 65 78 74 | Iter,thresh_cond),..%compute_ext |
| 3d280 | 72 69 6e 73 69 63 0a 25 0a 25 5b 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 52 63 6b 6b 5d 20 3d 20 63 6f | rinsic.%.%[omckk,Tckk,Rckk].=.co |
| 3d2a0 | 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 72 65 66 69 6e 65 28 78 5f 6b 6b 2c 58 5f 6b 6b | mpute_extrinsic_refine(x_kk,X_kk |
| 3d2c0 | 2c 66 63 2c 63 63 2c 6b 63 2c 4d 61 78 49 74 65 72 29 0a 25 0a 25 43 6f 6d 70 75 74 65 73 20 74 | ,fc,cc,kc,MaxIter).%.%Computes.t |
| 3d2e0 | 68 65 20 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 73 20 61 74 74 61 63 68 65 64 | he.extrinsic.parameters.attached |
| 3d300 | 20 74 6f 20 61 20 33 44 20 73 74 72 75 63 74 75 72 65 20 58 5f 6b 6b 20 67 69 76 65 6e 20 69 74 | .to.a.3D.structure.X_kk.given.it |
| 3d320 | 73 20 70 72 6f 6a 65 63 74 69 6f 6e 0a 25 6f 6e 20 74 68 65 20 69 6d 61 67 65 20 70 6c 61 6e 65 | s.projection.%on.the.image.plane |
| 3d340 | 20 78 5f 6b 6b 20 61 6e 64 20 74 68 65 20 69 6e 74 72 69 6e 73 69 63 20 63 61 6d 65 72 61 20 70 | .x_kk.and.the.intrinsic.camera.p |
| 3d360 | 61 72 61 6d 65 74 65 72 73 20 66 63 2c 20 63 63 20 61 6e 64 20 6b 63 2e 0a 25 57 6f 72 6b 73 20 | arameters.fc,.cc.and.kc..%Works. |
| 3d380 | 77 69 74 68 20 70 6c 61 6e 61 72 20 61 6e 64 20 6e 6f 6e 2d 70 6c 61 6e 61 72 20 73 74 72 75 63 | with.planar.and.non-planar.struc |
| 3d3a0 | 74 75 72 65 73 2e 0a 25 0a 25 49 4e 50 55 54 3a 20 78 5f 6b 6b 3a 20 46 65 61 74 75 72 65 20 6c | tures..%.%INPUT:.x_kk:.Feature.l |
| 3d3c0 | 6f 63 61 74 69 6f 6e 73 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 73 0a 25 20 20 20 20 20 20 20 58 | ocations.on.the.images.%.......X |
| 3d3e0 | 5f 6b 6b 3a 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 67 72 69 64 20 63 6f 6f 72 64 69 6e 61 | _kk:.Corresponding.grid.coordina |
| 3d400 | 74 65 73 0a 25 20 20 20 20 20 20 20 66 63 3a 20 43 61 6d 65 72 61 20 66 6f 63 61 6c 20 6c 65 6e | tes.%.......fc:.Camera.focal.len |
| 3d420 | 67 74 68 0a 25 20 20 20 20 20 20 20 63 63 3a 20 50 72 69 6e 63 69 70 61 6c 20 70 6f 69 6e 74 20 | gth.%.......cc:.Principal.point. |
| 3d440 | 63 6f 6f 72 64 69 6e 61 74 65 73 0a 25 20 20 20 20 20 20 20 6b 63 3a 20 44 69 73 74 6f 72 74 69 | coordinates.%.......kc:.Distorti |
| 3d460 | 6f 6e 20 63 6f 65 66 66 69 63 69 65 6e 74 73 0a 25 20 20 20 20 20 20 20 4d 61 78 49 74 65 72 3a | on.coefficients.%.......MaxIter: |
| 3d480 | 20 4d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 69 74 65 72 61 74 69 6f 6e 73 0a 25 0a | .Maximum.number.of.iterations.%. |
| 3d4a0 | 25 4f 55 54 50 55 54 3a 20 6f 6d 63 6b 6b 3a 20 33 44 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 | %OUTPUT:.omckk:.3D.rotation.vect |
| 3d4c0 | 6f 72 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 67 72 69 64 20 70 6f 73 69 74 69 6f 6e | or.attached.to.the.grid.position |
| 3d4e0 | 73 20 69 6e 20 73 70 61 63 65 0a 25 20 20 20 20 20 20 20 20 54 63 6b 6b 3a 20 33 44 20 74 72 61 | s.in.space.%........Tckk:.3D.tra |
| 3d500 | 6e 73 6c 61 74 69 6f 6e 20 76 65 63 74 6f 72 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 | nslation.vector.attached.to.the. |
| 3d520 | 67 72 69 64 20 70 6f 73 69 74 69 6f 6e 73 20 69 6e 20 73 70 61 63 65 0a 25 20 20 20 20 20 20 20 | grid.positions.in.space.%....... |
| 3d540 | 20 52 63 6b 6b 3a 20 33 44 20 72 6f 74 61 74 69 6f 6e 20 6d 61 74 72 69 63 65 73 20 63 6f 72 72 | .Rckk:.3D.rotation.matrices.corr |
| 3d560 | 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 6f 6d 63 20 76 65 63 74 6f 72 73 0a 0a 25 0a | esponding.to.the.omc.vectors..%. |
| 3d580 | 25 4d 65 74 68 6f 64 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 6e 6f 72 6d 61 6c 69 7a 65 64 | %Method:.Computes.the.normalized |
| 3d5a0 | 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 2c 20 74 68 65 6e 20 63 6f 6d 70 75 74 65 | .point.coordinates,.then.compute |
| 3d5c0 | 73 20 74 68 65 20 33 44 20 70 6f 73 65 0a 25 0a 25 49 6d 70 6f 72 74 61 6e 74 20 66 75 6e 63 74 | s.the.3D.pose.%.%Important.funct |
| 3d5e0 | 69 6f 6e 73 20 63 61 6c 6c 65 64 20 77 69 74 68 69 6e 20 74 68 61 74 20 70 72 6f 67 72 61 6d 3a | ions.called.within.that.program: |
| 3d600 | 0a 25 0a 25 6e 6f 72 6d 61 6c 69 7a 65 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 6e 6f 72 6d | .%.%normalize:.Computes.the.norm |
| 3d620 | 61 6c 69 7a 65 20 69 6d 61 67 65 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 2e 0a 25 | alize.image.point.coordinates..% |
| 3d640 | 0a 25 70 6f 73 65 33 44 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 33 44 20 70 6f 73 65 20 6f | .%pose3D:.Computes.the.3D.pose.o |
| 3d660 | 66 20 74 68 65 20 73 74 72 75 63 74 75 72 65 20 67 69 76 65 6e 20 74 68 65 20 6e 6f 72 6d 61 6c | f.the.structure.given.the.normal |
| 3d680 | 69 7a 65 64 20 69 6d 61 67 65 20 70 72 6f 6a 65 63 74 69 6f 6e 2e 0a 25 0a 25 70 72 6f 6a 65 63 | ized.image.projection..%.%projec |
| 3d6a0 | 74 5f 70 6f 69 6e 74 73 2e 6d 3a 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 32 44 20 69 6d 61 67 | t_points.m:.Computes.the.2D.imag |
| 3d6c0 | 65 20 70 72 6f 6a 65 63 74 69 6f 6e 73 20 6f 66 20 61 20 73 65 74 20 6f 66 20 33 44 20 70 6f 69 | e.projections.of.a.set.of.3D.poi |
| 3d6e0 | 6e 74 73 0a 0a 0a 69 66 20 6e 61 72 67 69 6e 20 3c 20 39 2c 0a 20 20 20 74 68 72 65 73 68 5f 63 | nts...if.nargin.<.9,....thresh_c |
| 3d700 | 6f 6e 64 20 3d 20 69 6e 66 3b 0a 65 6e 64 3b 0a 0a 0a 69 66 20 6e 61 72 67 69 6e 20 3c 20 38 2c | ond.=.inf;.end;...if.nargin.<.8, |
| 3d720 | 0a 20 20 20 4d 61 78 49 74 65 72 20 3d 20 32 30 3b 0a 65 6e 64 3b 0a 0a 0a 69 66 20 6e 61 72 67 | ....MaxIter.=.20;.end;...if.narg |
| 3d740 | 69 6e 20 3c 20 37 2c 0a 20 20 20 6b 63 20 3d 20 7a 65 72 6f 73 28 34 2c 31 29 3b 0a 20 20 20 69 | in.<.7,....kc.=.zeros(4,1);....i |
| 3d760 | 66 20 6e 61 72 67 69 6e 20 3c 20 36 2c 0a 20 20 20 20 20 20 63 63 20 3d 20 7a 65 72 6f 73 28 32 | f.nargin.<.6,.......cc.=.zeros(2 |
| 3d780 | 2c 31 29 3b 0a 20 20 20 20 20 20 69 66 20 6e 61 72 67 69 6e 20 3c 20 35 2c 0a 20 20 20 20 20 20 | ,1);.......if.nargin.<.5,....... |
| 3d7a0 | 20 20 20 66 63 20 3d 20 6f 6e 65 73 28 32 2c 31 29 3b 0a 20 20 20 20 20 20 20 20 20 69 66 20 6e | ...fc.=.ones(2,1);..........if.n |
| 3d7c0 | 61 72 67 69 6e 20 3c 20 34 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 28 27 4e 65 | argin.<.4,.............error('Ne |
| 3d7e0 | 65 64 20 32 44 20 70 72 6f 6a 65 63 74 69 6f 6e 73 20 61 6e 64 20 33 44 20 70 6f 69 6e 74 73 20 | ed.2D.projections.and.3D.points. |
| 3d800 | 28 69 6e 20 63 6f 6d 70 75 74 65 5f 65 78 74 72 69 6e 73 69 63 5f 72 65 66 69 6e 65 2e 6d 29 27 | (in.compute_extrinsic_refine.m)' |
| 3d820 | 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0a 20 20 20 20 20 20 20 20 20 | );.............return;.......... |
| 3d840 | 65 6e 64 3b 0a 20 20 20 20 20 20 65 6e 64 3b 0a 20 20 20 65 6e 64 3b 0a 65 6e 64 3b 0a 0a 0a 25 | end;.......end;....end;.end;...% |
| 3d860 | 20 49 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 3a 0a 0a 6f 6d 63 6b 6b 20 3d 20 6f 6d 63 5f 69 6e | .Initialization:..omckk.=.omc_in |
| 3d880 | 69 74 3b 0a 54 63 6b 6b 20 3d 20 54 63 5f 69 6e 69 74 3b 0a 0a 0a 25 20 46 69 6e 61 6c 20 6f 70 | it;.Tckk.=.Tc_init;...%.Final.op |
| 3d8a0 | 74 69 6d 69 7a 61 74 69 6f 6e 20 28 6d 69 6e 69 6d 69 7a 65 20 74 68 65 20 72 65 70 72 6f 6a 65 | timization.(minimize.the.reproje |
| 3d8c0 | 63 74 69 6f 6e 20 65 72 72 6f 72 20 69 6e 20 70 69 78 65 6c 29 3a 0a 25 20 74 68 72 6f 75 67 68 | ction.error.in.pixel):.%.through |
| 3d8e0 | 20 47 72 61 64 69 65 6e 74 20 44 65 73 63 65 6e 74 3a 0a 0a 70 61 72 61 6d 20 3d 20 5b 6f 6d 63 | .Gradient.Descent:..param.=.[omc |
| 3d900 | 6b 6b 3b 54 63 6b 6b 5d 3b 0a 0a 63 68 61 6e 67 65 20 3d 20 31 3b 0a 0a 69 74 65 72 20 3d 20 30 | kk;Tckk];..change.=.1;..iter.=.0 |
| 3d920 | 3b 0a 0a 25 6b 65 79 62 6f 61 72 64 3b 0a 0a 25 66 70 72 69 6e 74 66 28 31 2c 27 47 72 61 64 69 | ;..%keyboard;..%fprintf(1,'Gradi |
| 3d940 | 65 6e 74 20 64 65 73 63 65 6e 74 20 69 74 65 72 61 74 69 6f 6e 73 3a 20 27 29 3b 0a 0a 77 68 69 | ent.descent.iterations:.');..whi |
| 3d960 | 6c 65 20 28 63 68 61 6e 67 65 20 3e 20 31 65 2d 31 30 29 26 28 69 74 65 72 20 3c 20 4d 61 78 49 | le.(change.>.1e-10)&(iter.<.MaxI |
| 3d980 | 74 65 72 29 2c 0a 20 20 20 0a 20 20 20 25 66 70 72 69 6e 74 66 28 31 2c 27 25 64 2e 2e 2e 27 2c | ter),........%fprintf(1,'%d...', |
| 3d9a0 | 69 74 65 72 2b 31 29 3b 0a 0a 20 20 20 5b 78 2c 64 78 64 6f 6d 2c 64 78 64 54 5d 20 3d 20 70 72 | iter+1);.....[x,dxdom,dxdT].=.pr |
| 3d9c0 | 6f 6a 65 63 74 5f 70 6f 69 6e 74 73 28 58 5f 6b 6b 2c 6f 6d 63 6b 6b 2c 54 63 6b 6b 2c 66 63 2c | oject_points(X_kk,omckk,Tckk,fc, |
| 3d9e0 | 63 63 2c 6b 63 29 3b 0a 20 20 20 20 20 20 0a 20 20 20 65 78 20 3d 20 78 5f 6b 6b 20 2d 20 78 3b | cc,kc);...........ex.=.x_kk.-.x; |
| 3da00 | 0a 20 20 20 0a 20 20 20 25 6b 65 79 62 6f 61 72 64 3b 0a 20 20 20 0a 20 20 20 4a 4a 20 3d 20 5b | ........%keyboard;........JJ.=.[ |
| 3da20 | 64 78 64 6f 6d 20 64 78 64 54 5d 3b 0a 20 20 20 0a 20 20 20 69 66 20 63 6f 6e 64 28 4a 4a 29 20 | dxdom.dxdT];........if.cond(JJ). |
| 3da40 | 3e 20 74 68 72 65 73 68 5f 63 6f 6e 64 2c 0a 20 20 20 20 20 20 63 68 61 6e 67 65 20 3d 20 30 3b | >.thresh_cond,.......change.=.0; |
| 3da60 | 0a 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 0a 20 20 20 09 4a 4a 32 20 3d 20 4a 4a 27 2a 4a 4a | ....else............JJ2.=.JJ'*JJ |
| 3da80 | 3b 0a 20 20 20 0a 09 09 70 61 72 61 6d 5f 69 6e 6e 6f 76 20 3d 20 69 6e 76 28 4a 4a 32 29 2a 28 | ;.......param_innov.=.inv(JJ2)*( |
| 3daa0 | 4a 4a 27 29 2a 65 78 28 3a 29 3b 0a 09 09 70 61 72 61 6d 5f 75 70 20 3d 20 70 61 72 61 6d 20 2b | JJ')*ex(:);...param_up.=.param.+ |
| 3dac0 | 20 70 61 72 61 6d 5f 69 6e 6e 6f 76 3b 0a 09 09 63 68 61 6e 67 65 20 3d 20 6e 6f 72 6d 28 70 61 | .param_innov;...change.=.norm(pa |
| 3dae0 | 72 61 6d 5f 69 6e 6e 6f 76 29 2f 6e 6f 72 6d 28 70 61 72 61 6d 5f 75 70 29 3b 0a 09 09 70 61 72 | ram_innov)/norm(param_up);...par |
| 3db00 | 61 6d 20 3d 20 70 61 72 61 6d 5f 75 70 3b 0a 09 09 69 74 65 72 20 3d 20 69 74 65 72 20 2b 20 31 | am.=.param_up;...iter.=.iter.+.1 |
| 3db20 | 3b 0a 20 20 20 0a 20 20 20 09 6f 6d 63 6b 6b 20 3d 20 70 61 72 61 6d 28 31 3a 33 29 3b 0a 20 20 | ;.........omckk.=.param(1:3);... |
| 3db40 | 20 09 54 63 6b 6b 20 3d 20 70 61 72 61 6d 28 34 3a 36 29 3b 0a 20 20 20 65 6e 64 3b 0a 20 20 20 | ..Tckk.=.param(4:6);....end;.... |
| 3db60 | 0a 65 6e 64 3b 0a 0a 25 66 70 72 69 6e 74 66 28 31 2c 27 5c 6e 27 29 3b 0a 0a 52 63 6b 6b 20 3d | .end;..%fprintf(1,'\n');..Rckk.= |
| 3db80 | 20 72 6f 64 72 69 67 75 65 73 28 6f 6d 63 6b 6b 29 3b 0a 73 66 6f 72 6d 20 2a 20 58 5f 6b 6b 20 | .rodrigues(omckk);.sform.*.X_kk. |
| 3dba0 | 2b 20 54 63 6b 6b 20 2b 20 54 5f 74 72 61 6e 73 66 6f 72 6d 0a 20 20 20 0a 20 20 20 54 63 6b 6b | +.Tckk.+.T_transform........Tckk |
| 3dbc0 | 20 3d 20 54 63 6b 6b 20 2b 20 52 63 6b 6b 2a 20 54 5f 74 72 61 6e 73 66 6f 72 6d 3b 0a 20 20 20 | .=.Tckk.+.Rckk*.T_transform;.... |
| 3dbe0 | 52 63 6b 6b 20 3d 20 52 63 6b 6b 20 2a 20 52 5f 74 72 61 6e 73 66 6f 72 6d 3b 0a 0a 20 20 20 6f | Rckk.=.Rckk.*.R_transform;.....o |
| 3dc00 | 54 4f 4f 4c 42 4f 58 5f 63 61 6c 69 62 2f 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 74 65 | TOOLBOX_calib/go_calib_optim_ite |
| 3dc20 | 72 2e 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | r.m............................. |
| 3dc40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3dc60 | 00 00 00 00 20 20 20 36 34 34 20 00 20 20 20 34 37 31 20 00 20 20 20 34 35 34 20 00 20 20 20 20 | .......644.....471.....454...... |
| 3dc80 | 20 20 32 33 30 37 35 20 20 37 30 32 34 30 33 37 33 33 30 20 20 31 32 36 31 33 00 20 00 00 00 00 | ..23075..7024037330..12613...... |
| 3dca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3dcc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3dce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3dd00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3dd20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3dd40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3dd60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3dd80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3dda0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3ddc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3dde0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3de00 | 25 67 6f 5f 63 61 6c 69 62 5f 6f 70 74 69 6d 5f 69 74 65 72 0a 25 0a 25 4d 61 69 6e 20 63 61 6c | %go_calib_optim_iter.%.%Main.cal |
| 3de20 | 69 62 72 61 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 2e 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 | ibration.function..Computes.the. |
| 3de40 | 69 6e 74 72 69 6e 73 69 63 20 61 6e 64 65 78 74 72 69 6e 73 69 63 20 70 61 72 61 6d 65 74 65 72 | intrinsic.andextrinsic.parameter |
| 3de60 | 73 2e 0a 25 52 75 6e 73 20 61 73 20 61 20 73 63 72 69 70 74 2e 0a 25 0a 25 49 4e 50 55 54 3a 20 | s..%Runs.as.a.script..%.%INPUT:. |
| 3de80 | 78 5f 31 2c 78 5f 32 2c 78 5f 33 2c 2e 2e 2e 3a 20 46 65 61 74 75 72 65 20 6c 6f 63 61 74 69 6f | x_1,x_2,x_3,...:.Feature.locatio |
| 3dea0 | 6e 73 20 6f 6e 20 74 68 65 20 69 6d 61 67 65 73 0a 25 20 20 20 20 20 20 20 58 5f 31 2c 58 5f 32 | ns.on.the.images.%.......X_1,X_2 |
| 3dec0 | 2c 58 5f 33 2c 2e 2e 2e 3a 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 67 72 69 64 20 63 6f 6f | ,X_3,...:.Corresponding.grid.coo |
| 3dee0 | 72 64 69 6e 61 74 65 73 0a 25 0a 25 4f 55 54 50 55 54 3a 20 66 63 3a 20 43 61 6d 65 72 61 20 66 | rdinates.%.%OUTPUT:.fc:.Camera.f |
| 3df00 | 6f 63 61 6c 20 6c 65 6e 67 74 68 0a 25 20 20 20 20 20 20 20 20 63 63 3a 20 50 72 69 6e 63 69 70 | ocal.length.%........cc:.Princip |
| 3df20 | 61 6c 20 70 6f 69 6e 74 20 63 6f 6f 72 64 69 6e 61 74 65 73 0a 25 20 20 20 20 20 20 20 20 6b 63 | al.point.coordinates.%........kc |
| 3df40 | 3a 20 44 69 73 74 6f 72 74 69 6f 6e 20 63 6f 65 66 66 69 63 69 65 6e 74 73 0a 25 20 20 20 20 20 | :.Distortion.coefficients.%..... |
| 3df60 | 20 20 20 4b 4b 3a 20 54 68 65 20 63 61 6d 65 72 61 20 6d 61 74 72 69 78 20 28 63 6f 6e 74 61 69 | ...KK:.The.camera.matrix.(contai |
| 3df80 | 6e 69 6e 67 20 66 63 20 61 6e 64 20 63 63 29 0a 25 20 20 20 20 20 20 20 20 6f 6d 63 5f 31 2c 6f | ning.fc.and.cc).%........omc_1,o |
| 3dfa0 | 6d 63 5f 32 2c 6f 6d 63 5f 33 2c 2e 2e 2e 3a 20 33 44 20 72 6f 74 61 74 69 6f 6e 20 76 65 63 74 | mc_2,omc_3,...:.3D.rotation.vect |
| 3dfc0 | 6f 72 73 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 67 72 69 64 20 70 6f 73 69 74 69 6f | ors.attached.to.the.grid.positio |
| 3dfe0 | 6e 73 20 69 6e 20 73 70 61 63 65 0a 25 20 20 20 20 20 20 20 20 54 63 5f 31 2c 54 63 5f 32 2c 54 | ns.in.space.%........Tc_1,Tc_2,T |