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 |