Rahbar, K. and Pourreza, H. R. 2008. Inside looking out camera pose
estimation for virtual studio. Graph. Models 70, 4 (Jul. 2008),
57-75. DOI= http://dx.doi.org/10.1016/j.gmod.2008.01.001
DSVideoLib
A DirectShow wrapper supporting concurrent access to framebuffers from
multiple threads. Useful for developing applications that require live
video input from a variety of capture devices (frame grabbers,
IEEE-1394 DV camcorders, USB webcams).
galaxy:~ lym$ port search openvrml
openvrml @0.17.12 (graphics, x11)
a cross-platform VRML and X3D browser and C++ runtime library
galaxy:~ lym$ port info openvrml
openvrml @0.17.12 (graphics, x11)
Variants: js_mozilla, mozilla_plugin, no_opengl, no_x11, player, universal,
xembed
OpenVRML is a free cross-platform runtime for VRML and X3D available under the
GNU Lesser General Public License. The OpenVRML distribution includes libraries
you can use to add VRML/X3D support to an application. On platforms where GTK+
is available, OpenVRML also provides a plug-in to render VRML/X3D worlds in Web
browsers.
Homepage: http://www.openvrml.org/
Build Dependencies: pkgconfig
Library Dependencies: boost, libpng, jpeg, fontconfig, mesa, libsdl
Platforms: darwin
Maintainers: raphael@ira.uka.de openmaintainer@macports.org
galaxy:~ lym$ port deps openvrml
openvrml has build dependencies on:
pkgconfig
openvrml has library dependencies on:
boost
libpng
jpeg
fontconfig
mesa
libsdl
galaxy:~ lym$ port variants openvrml
openvrml has the variants:
js_mozilla: Enable support for JavaScript in the Script node with Mozilla
no_opengl: Do not build the GL renderer
xembed: Build the XEmbed control
player: Build the GNOME openvrml-player
mozilla_plugin: Build the Mozilla plug-in
no_x11: Disable support for X11
universal: Build for multiple architectures
openvrml 설치
galaxy:~ lym$ sudo port install openvrml
Password:
---> Fetching boost-jam
---> Attempting to fetch boost-jam-3.1.17.tgz from http://nchc.dl.sourceforge.net/boost
---> Verifying checksum(s) for boost-jam
---> Extracting boost-jam
---> Applying patches to boost-jam
---> Configuring boost-jam
---> Building boost-jam
---> Staging boost-jam into destroot
---> Installing boost-jam @3.1.17_0
---> Activating boost-jam @3.1.17_0
---> Cleaning boost-jam
---> Fetching boost
---> Attempting to fetch boost_1_39_0.tar.bz2 from http://nchc.dl.sourceforge.net/boost
---> Verifying checksum(s) for boost
---> Extracting boost
---> Applying patches to boost
---> Configuring boost
---> Building boost
---> Staging boost into destroot
---> Installing boost @1.39.0_2
---> Activating boost @1.39.0_2
---> Cleaning boost
---> Fetching libsdl
---> Attempting to fetch SDL-1.2.13.tar.gz from http://distfiles.macports.org/libsdl
---> Verifying checksum(s) for libsdl
---> Extracting libsdl
---> Applying patches to libsdl
---> Configuring libsdl
---> Building libsdl
---> Staging libsdl into destroot
---> Installing libsdl @1.2.13_6
---> Activating libsdl @1.2.13_6
---> Cleaning libsdl
---> Fetching glut
---> Verifying checksum(s) for glut
---> Extracting glut
---> Configuring glut
---> Building glut
---> Staging glut into destroot
---> Installing glut @3.7_3
---> Activating glut @3.7_3
---> Cleaning glut
---> Fetching xorg-dri2proto
---> Attempting to fetch dri2proto-2.1.tar.bz2 from http://distfiles.macports.org/xorg-dri2proto
---> Verifying checksum(s) for xorg-dri2proto
---> Extracting xorg-dri2proto
---> Configuring xorg-dri2proto
---> Building xorg-dri2proto
---> Staging xorg-dri2proto into destroot
---> Installing xorg-dri2proto @2.1_0
---> Activating xorg-dri2proto @2.1_0
---> Cleaning xorg-dri2proto
---> Fetching xorg-glproto
---> Attempting to fetch glproto-1.4.10.tar.bz2 from http://distfiles.macports.org/xorg-glproto
---> Verifying checksum(s) for xorg-glproto
---> Extracting xorg-glproto
---> Configuring xorg-glproto
---> Building xorg-glproto
---> Staging xorg-glproto into destroot
---> Installing xorg-glproto @1.4.10_0
---> Activating xorg-glproto @1.4.10_0
---> Cleaning xorg-glproto
---> Fetching mesa
---> Attempting to fetch MesaLib-7.4.3.tar.bz2 from http://nchc.dl.sourceforge.net/mesa3d
---> Attempting to fetch MesaGLUT-7.4.3.tar.bz2 from http://nchc.dl.sourceforge.net/mesa3d
---> Attempting to fetch AppleSGLX-57.tar.bz2 from http://xquartz.macosforge.org/downloads/src/
---> Verifying checksum(s) for mesa
---> Extracting mesa
---> Applying patches to mesa
---> Configuring mesa
---> Building mesa
---> Staging mesa into destroot
---> Installing mesa @7.4.3_0+hw_render
---> Activating mesa @7.4.3_0+hw_render
---> Cleaning mesa
---> Fetching openvrml
---> Attempting to fetch openvrml-0.17.12.tar.gz from http://nchc.dl.sourceforge.net/openvrml
---> Verifying checksum(s) for openvrml
---> Extracting openvrml
---> Configuring openvrml
---> Building openvrml
---> Staging openvrml into destroot
---> Installing openvrml @0.17.12_0
---> Activating openvrml @0.17.12_0
---> Cleaning openvrml
cd ~/Desktop/ARToolKit/lib/SRC/ARvrml
make
cd ~/Desktop/ARToolKit/examples/simpleVRML
make
cd ~/Desktop/ARToolKit/bin
./simpleVRML
ARToolKit-2.72.1 설치 후 테스트
graphicsTest on the bin directory
-> This test confirms that your camera support ARToolKit graphics module with OpenGL.
videoTest on the bin directory
-> This test confirms that your camera supports ARToolKit video module and ARToolKit graphics module.
simpleTest on the bin directory
-> You need to notice that better the format is similar to ARToolKit tracking format, faster is the
acquisition (RGB more efficient).
/Users/lym/ARToolKit/build/ARToolKit.build/Development/simpleTest.build/Objects-normal/i386/simpleTest ; exit;
galaxy:~ lym$ /Users/lym/ARToolKit/build/ARToolKit.build/Development/simpleTest.build/Objects-normal/i386/simpleTest ; exit;
Using default video config.
Opening sequence grabber 1 of 1.
vid->milliSecPerFrame: 200 forcing timer period to 100ms
Video cType is raw , size is 320x240.
Image size (x,y) = (320,240)
Camera parameter load error !!
logout
Using default video config.
Opening sequence grabber 1 of 1.
vid->milliSecPerFrame: 200 forcing timer period to 100ms
Video cType is raw , size is 320x240.
Image size (x,y) = (320,240)
*** Camera Parameter ***
--------------------------------------
SIZE = 320, 240
Distortion factor = 159.250000 131.750000 104.800000 1.012757
350.47574 0.00000 158.25000 0.00000
0.00000 363.04709 120.75000 0.00000
0.00000 0.00000 1.00000 0.00000
--------------------------------------
Opening Data File Data/object_data2
About to load 2 Models
Read in No.1
Read in No.2
Objectfile num = 2
arGetTransMat() 안에서 다음과 같이 pattern의 transformation 값을 출력해 보면,
camera transformation: 134.438993 63.934746 582.012800
camera transformation: 134.445606 63.981777 582.120969
camera transformation: 134.474482 63.995219 582.242088
camera transformation: 134.599202 63.998890 582.630168
camera transformation: 134.501440 63.963350 582.269908
camera transformation: 134.464995 64.013854 582.242347
camera transformation: 134.490045 63.956372 582.209032
camera transformation: 134.375223 63.789206 581.551681
camera transformation: 133.561691 63.159733 577.815148
camera transformation: 133.063396 62.927971 575.690113
camera transformation: 133.355195 63.043104 577.132167
camera transformation: 134.613795 63.954793 582.183804
camera transformation: 132.159546 64.070513 574.724387
camera transformation: 132.448489 64.937645 575.654565
camera transformation: 130.686699 65.617613 570.876666
camera transformation: 130.650742 65.840462 571.732330
camera transformation: 130.636143 65.874965 573.631585
camera transformation: 129.504212 56.174073 571.607662
camera transformation: 125.830031 48.411508 566.542108
camera transformation: 121.581157 45.285999 569.393613
camera transformation: 123.683377 47.387303 571.546352
camera transformation: 127.458933 44.409366 568.928211
camera transformation: 127.303034 44.345058 568.159484
camera transformation: 127.320462 44.350160 568.224561
camera transformation: 127.317729 44.349189 568.212422
camera transformation: 127.317729 44.349189 568.212422
camera transformation: 125.300218 43.641056 559.530004
camera transformation: 127.269746 44.332084 568.002352
camera transformation: 127.314772 44.348305 568.201544
camera transformation: 127.328986 44.353467 568.264290
camera transformation: 127.328986 44.353467 568.264290
camera transformation: 134.859914 41.818072 563.541940
camera transformation: 135.040310 41.877534 564.294626
camera transformation: 135.043507 41.878547 564.307919
camera transformation: 135.043507 41.878547 564.307919
camera transformation: 135.043507 41.878547 564.307919
camera transformation: 130.805179 40.514050 546.854285
camera transformation: 134.889481 41.829859 563.688319
camera transformation: 135.047962 41.880133 564.327580
camera transformation: 135.047962 41.880133 564.327580
camera transformation: 135.047962 41.880133 564.327580
camera transformation: 145.248889 34.185486 561.683418
camera transformation: 145.056709 34.137696 560.948388
camera transformation: 145.056709 34.137696 560.948388
camera transformation: 145.056709 34.137696 560.948388
camera transformation: 145.056709 34.137696 560.948388
camera transformation: 141.044529 33.130566 545.431075
camera transformation: 144.985976 34.118918 560.662976
camera transformation: 145.057722 34.137896 560.951561
camera transformation: 145.057722 34.137896 560.951561
camera transformation: 145.057722 34.137896 560.951561
camera transformation: 153.656796 18.847826 551.173961
camera transformation: 153.459454 18.820515 550.460694
camera transformation: 153.463400 18.821020 550.474774
camera transformation: 153.463400 18.821020 550.474774
camera transformation: 153.463400 18.821020 550.474774
camera transformation: 150.756045 18.471968 541.053654
camera transformation: 153.457933 18.819963 550.450362
camera transformation: 153.471652 18.822038 550.502303
camera transformation: 153.471652 18.822038 550.502303
camera transformation: 153.471652 18.822038 550.502303
camera transformation: 165.753777 10.789852 542.625784
camera transformation: 165.872430 10.798618 543.003766
camera transformation: 165.861243 10.797709 542.967712
camera transformation: 165.861243 10.797709 542.967712
camera transformation: 165.861243 10.797709 542.967712
camera transformation: 159.707526 10.325843 522.933657
camera transformation: 165.749957 10.789214 542.611588
camera transformation: 165.878724 10.799263 543.027862
camera transformation: 165.858931 10.797578 542.960740
camera transformation: 165.858931 10.797578 542.960740
camera transformation: 172.080657 1.469299 534.761847
camera transformation: 172.099660 1.470041 534.825697
camera transformation: 172.105059 1.470117 534.842380
camera transformation: 172.105059 1.470117 534.842380
camera transformation: 172.105059 1.470117 534.842380
camera transformation: 166.665623 1.366321 518.259388
camera transformation: 171.958367 1.467311 534.398567
camera transformation: 172.100170 1.470062 534.827885
camera transformation: 172.101379 1.469965 534.828683
camera transformation: 172.101379 1.469965 534.828683
camera transformation: 181.319872 -6.361278 526.585438
camera transformation: 181.274748 -6.360755 526.433490
camera transformation: 181.253058 -6.360225 526.371230
camera transformation: 181.253058 -6.360225 526.371230
camera transformation: 181.253058 -6.360225 526.371230
camera transformation: 178.239568 -6.285195 517.597418
camera transformation: 181.243052 -6.360170 526.334529
camera transformation: 181.262355 -6.360482 526.395503
camera transformation: 181.262355 -6.360482 526.395503
camera transformation: 181.262355 -6.360482 526.395503
camera transformation: 187.108940 -10.223686 510.799056
camera transformation: 187.181645 -10.227215 510.978572
camera transformation: 187.181645 -10.227215 510.978572
camera transformation: 187.181645 -10.227215 510.978572
camera transformation: 187.181645 -10.227215 510.978572
camera transformation: 183.952885 -10.095289 502.048962
camera transformation: 187.138129 -10.225454 510.860204
camera transformation: 187.186616 -10.227454 510.990564
camera transformation: 187.186616 -10.227454 510.990564
camera transformation: 187.186616 -10.227454 510.990564
camera transformation: 174.882900 -17.728211 507.700497
camera transformation: 175.151320 -17.750571 508.526338
camera transformation: 175.156303 -17.750970 508.543547
camera transformation: 175.156303 -17.750970 508.543547
camera transformation: 175.156303 -17.750970 508.543547
camera transformation: 173.093356 -17.563969 502.840939
camera transformation: 175.132943 -17.749048 508.472818
camera transformation: 175.147617 -17.750226 508.517538
camera transformation: 175.147617 -17.750226 508.517538
camera transformation: 175.147617 -17.750226 508.517538
camera transformation: 153.570679 -27.610874 523.025575
camera transformation: 154.835853 -27.811536 527.263384
camera transformation: 154.855814 -27.814620 527.336320
camera transformation: 154.855814 -27.814620 527.336320
camera transformation: 154.855814 -27.814620 527.336320
camera transformation: 152.299460 -27.392362 519.749682
camera transformation: 154.752070 -27.798192 526.972641
camera transformation: 154.827218 -27.810047 527.230484
camera transformation: 154.858447 -27.815063 527.341550
camera transformation: 154.840860 -27.812225 527.285658
camera transformation: 135.840483 -41.072535 553.345517
camera transformation: 136.128073 -41.152366 554.504789
camera transformation: 136.136155 -41.154777 554.540872
camera transformation: 136.136155 -41.154777 554.540872
camera transformation: 136.136155 -41.154777 554.540872
camera transformation: 130.527637 -39.583364 532.044687
camera transformation: 135.988306 -41.113532 553.943304
camera transformation: 136.142041 -41.156307 554.559791
camera transformation: 136.142041 -41.156307 554.559791
camera transformation: 136.142041 -41.156307 554.559791
camera transformation: 114.644838 -45.377904 573.264490
camera transformation: 115.199061 -45.580086 576.005279
camera transformation: 115.229438 -45.591515 576.169804
camera transformation: 115.246340 -45.597695 576.252987
camera transformation: 115.246340 -45.597695 576.252987
camera transformation: 113.754556 -45.048098 568.589400
camera transformation: 115.200177 -45.581112 576.034506
camera transformation: 115.235757 -45.593964 576.202107
camera transformation: 115.245920 -45.597558 576.251805
camera transformation: 115.245920 -45.597558 576.251805
camera transformation: 99.671642 -40.181365 582.198352
camera transformation: 100.462758 -40.471438 586.962569
camera transformation: 100.537384 -40.500194 587.472050
camera transformation: 100.549497 -40.504513 587.541289
camera transformation: 100.549497 -40.504513 587.541289
camera transformation: 97.303318 -39.355658 570.579586
camera transformation: 100.336305 -40.427915 586.316769
camera transformation: 100.547949 -40.504219 587.544305
camera transformation: 100.548709 -40.504451 587.544697
camera transformation: 100.548709 -40.504451 587.544697
camera transformation: 89.621585 -31.117271 596.138707
camera transformation: 90.219712 -31.290746 599.985966
camera transformation: 90.329912 -31.322731 600.684517
camera transformation: 90.328693 -31.322303 600.672256
camera transformation: 90.327473 -31.321874 600.659986
camera transformation: 87.759503 -30.579438 586.130418
camera transformation: 90.158155 -31.275121 599.754395
camera transformation: 90.313555 -31.317626 600.555676
camera transformation: 90.312882 -31.317428 600.555444
camera transformation: 90.312882 -31.317428 600.555444
camera transformation: 71.029270 -24.465717 602.374578
camera transformation: 70.940132 -24.442041 601.728877
camera transformation: 70.905596 -24.432504 601.444114
camera transformation: 70.905596 -24.432504 601.444114
camera transformation: 70.905596 -24.432504 601.444114
camera transformation: 68.768061 -23.836713 585.531494
camera transformation: 70.761778 -24.392775 600.274063
camera transformation: 70.901723 -24.431512 601.417396
camera transformation: 70.899923 -24.430914 601.396803
camera transformation: 70.899923 -24.430914 601.396803
camera transformation: 48.950365 -26.084962 601.595042
camera transformation: 48.933292 -26.081172 601.647515
camera transformation: 48.907404 -26.070042 601.356804
camera transformation: 48.907438 -26.070153 601.365086
camera transformation: 48.908143 -26.070507 601.373649
camera transformation: 47.153553 -25.289153 579.698461
camera transformation: 48.752213 -26.003037 599.555228
camera transformation: 48.887848 -26.061948 601.158725
camera transformation: 48.906954 -26.070190 601.376902
camera transformation: 48.906954 -26.070190 601.376902
camera transformation: 36.527862 -27.859885 601.451937
camera transformation: 36.678154 -27.949073 603.625633
camera transformation: 36.699226 -27.961495 603.914756
camera transformation: 36.699226 -27.961495 603.914756
camera transformation: 36.699226 -27.961495 603.914756
camera transformation: 34.828000 -26.821094 576.608529
camera transformation: 36.532837 -27.864475 601.649382
camera transformation: 36.672854 -27.945472 603.510826
camera transformation: 36.696060 -27.959637 603.870801
camera transformation: 36.696060 -27.959637 603.870801
camera transformation: 35.748520 -26.890392 599.448608
camera transformation: 35.952229 -27.020554 603.539403
camera transformation: 35.983429 -27.041974 604.319312
camera transformation: 35.983462 -27.043056 604.402832
camera transformation: 35.983320 -27.043073 604.409701
camera transformation: 33.960297 -25.864785 576.135985
camera transformation: 35.748413 -26.917867 602.033525
camera transformation: 35.951659 -27.027518 604.189188
camera transformation: 35.971207 -27.037715 604.385121
camera transformation: 35.972959 -27.037579 604.303563
camera transformation: 38.696380 -24.720939 614.161095
camera transformation: 38.183800 -24.450617 606.346543
camera transformation: 38.134450 -24.424857 605.615128
camera transformation: 38.135159 -24.425102 605.615481
camera transformation: 38.135159 -24.425102 605.615481
camera transformation: 36.853820 -23.745396 586.509814
camera transformation: 38.056856 -24.382855 604.374995
camera transformation: 38.136416 -24.425786 605.632439
camera transformation: 38.135450 -24.425204 605.617310
camera transformation: 38.135450 -24.425204 605.617310
camera transformation: 38.135450 -24.425204 605.617310
camera transformation: 38.135450 -24.425204 605.617310
camera transformation: 38.135450 -24.425204 605.617310
camera transformation: 38.135450 -24.425204 605.617310
camera transformation: 38.135450 -24.425204 605.617310
camera transformation: 36.853820 -23.745396 586.509814
camera transformation: 38.056856 -24.382855 604.374995
camera transformation: 38.136416 -24.425786 605.632439
camera transformation: 38.135450 -24.425204 605.617310
camera transformation: 38.135450 -24.425204 605.617310
camera transformation: 38.135450 -24.425204 605.617310
camera transformation: 38.135450 -24.425204 605.617310
camera transformation: 38.135450 -24.425204 605.617310
camera transformation: 38.135450 -24.425204 605.617310
camera transformation: 38.135450 -24.425204 605.617310
camera transformation: 36.853820 -23.745396 586.509814
camera transformation: 38.056856 -24.382855 604.374995
camera transformation: 38.136416 -24.425786 605.632439
camera transformation: 38.135450 -24.425204 605.617310
camera transformation: 38.135450 -24.425204 605.617310
camera transformation: 7.229969 -28.426098 487.494944
camera transformation: 1.061351 -37.746923 490.163596
camera transformation: 1.039532 -38.012456 494.388390
camera transformation: -1.890196 -40.741575 489.196950
camera transformation: -1.905179 -40.851093 490.795875
camera transformation: -1.913698 -40.848960 490.823090
camera transformation: -1.913698 -40.848960 490.823090
camera transformation: -1.913698 -40.848960 490.823090
camera transformation: -1.275810 -46.033944 570.939355
camera transformation: -1.360000 -46.027133 571.481545
camera transformation: -1.360001 -46.027141 571.481641
camera transformation: -1.360001 -46.027141 571.481641
camera transformation: -1.360001 -46.027141 571.481641
camera transformation: -4.856311 -45.941600 492.994856
camera transformation: -3.554997 -42.126784 489.440430
camera transformation: -5.463370 -44.468718 490.659087
camera transformation: -9.441343 -43.715187 491.482322
camera transformation: -9.587181 -44.110448 496.792789
camera transformation: -9.609268 -44.160040 497.482136
camera transformation: -9.608472 -44.160158 497.478898
camera transformation: -9.608472 -44.160158 497.478898
camera transformation: -10.481053 -50.965780 590.361852
camera transformation: -10.621224 -50.926162 590.569728
camera transformation: -10.629070 -50.921812 590.551891
camera transformation: -10.629097 -50.921897 590.546394
camera transformation: -10.636885 -50.917353 590.524294
camera transformation: -6.014300 -46.196831 498.526090
camera transformation: -6.009832 -46.082883 497.231266
camera transformation: -6.010114 -46.077167 497.168853
camera transformation: -6.010114 -46.077167 497.168853
camera transformation: -6.010114 -46.077167 497.168853
camera transformation: -3.463019 -44.233782 493.963337
camera transformation: -4.785040 -43.402498 496.156243
camera transformation: -4.783746 -43.479250 496.922893
camera transformation: -4.785978 -43.496124 497.102079
camera transformation: -4.785978 -43.496124 497.102079
camera transformation: -2.223724 -40.852272 492.668115
camera transformation: -2.255911 -40.924862 493.830850
camera transformation: -2.271698 -40.922372 493.898586
camera transformation: -2.272499 -40.926932 493.964230
camera transformation: -2.273289 -40.926828 493.967891
camera transformation: -0.843473 -38.095411 491.335923
camera transformation: -0.931192 -38.413990 495.584437
camera transformation: -0.934646 -38.412155 495.581977
camera transformation: -0.936060 -38.406104 495.520218
camera transformation: -0.936060 -38.406104 495.520218
camera transformation: 1.160322 -40.264248 495.616755
camera transformation: 1.161880 -40.256411 495.494743
camera transformation: 1.161880 -40.256411 495.494743
camera transformation: 1.161880 -40.256411 495.494743
camera transformation: 1.161880 -40.256411 495.494743
camera transformation: 3.723426 -39.508401 504.989547
camera transformation: 2.678958 -37.770843 496.488485
camera transformation: 2.410065 -37.547308 495.340346
camera transformation: 2.410310 -37.557735 495.465695
camera transformation: 2.412940 -37.558864 495.465748
camera transformation: 4.203019 -39.053885 496.367027
camera transformation: 4.204413 -39.092548 496.951603
camera transformation: 4.204475 -39.096509 497.013231
camera transformation: 4.203762 -39.096434 497.017567
camera transformation: 4.203762 -39.096434 497.017567
camera transformation: 5.836132 -34.680737 472.145396
camera transformation: 5.595480 -36.378936 496.482830
camera transformation: 5.600604 -36.497013 497.981744
camera transformation: 5.599892 -36.506204 498.105048
camera transformation: 5.599892 -36.506204 498.105048
camera transformation: 8.653772 -36.053810 496.365853
camera transformation: 8.656689 -36.070246 496.641526
camera transformation: 8.655321 -36.066243 496.579657
camera transformation: 8.655321 -36.066243 496.579657
camera transformation: 8.655321 -36.066243 496.579657
camera transformation: 11.681594 -37.460802 533.449922
camera transformation: 8.750170 -37.668607 528.373758
camera transformation: 8.706002 -36.202737 498.655489
camera transformation: 8.659246 -36.073637 496.682038
camera transformation: 8.656511 -36.065632 496.558303
camera transformation: 10.115806 -34.679194 497.429046
camera transformation: 10.106989 -34.657666 497.079133
camera transformation: 10.103787 -34.649678 496.950432
camera transformation: 10.103787 -34.649678 496.950432
camera transformation: 10.103787 -34.649678 496.950432
camera transformation: 13.357781 -37.088943 550.459166
camera transformation: 10.836519 -37.433833 555.303929
camera transformation: 10.101605 -35.371871 512.485432
camera transformation: 10.113543 -34.698273 497.824009
camera transformation: 10.102475 -34.651602 497.000985
camera transformation: 18.350948 -27.329877 502.107301
camera transformation: 18.321398 -27.294670 501.341088
camera transformation: 18.322018 -27.294771 501.336240
camera transformation: 18.321814 -27.294491 501.330843
camera transformation: 18.321814 -27.294491 501.330843
camera transformation: 22.829063 -30.847622 591.172408
camera transformation: 22.590924 -30.974564 597.758595
camera transformation: 22.590913 -30.974577 597.758539
camera transformation: 22.590902 -30.974590 597.758482
camera transformation: 22.590891 -30.974603 597.758426
camera transformation: 37.103910 -10.551708 515.807167
camera transformation: 47.377631 9.966732 526.726739
camera transformation: 49.596898 16.198552 526.553013
camera transformation: 56.476216 22.342972 528.741435
Feature List
* A simple framework for creating real-time augmented reality applications
* A multiplatform library (Windows, Linux, Mac OS X, SGI)
* Overlays 3D virtual objects on real markers ( based on computer vision algorithm)
* A multi platform video library with:
o multiple input sources (USB, Firewire, capture card) supported
o multiple format (RGB/YUV420P, YUV) supported
o multiple camera tracking supported
o GUI initializing interface
* A fast and cheap 6D marker tracking (real-time planar detection)
* An extensible markers patterns approach (number of markers fct of efficency)
* An easy calibration routine
* A simple graphic library (based on GLUT)
* A fast rendering based on OpenGL
* A 3D VRML support
* A simple and modular API (in C)
* Other language supported (JAVA, Matlab)
* A complete set of samples and utilities
* A good solution for tangible interaction metaphor
* OpenSource with GPL license for non-commercial usage
"ARToolKit is able to perform this camera tracking in real
time, ensuring that the virtual objects always appear overlaid on the tracking markers."
how to
1. 매 비디오 프레임 마다 사각형 모양을 찾기
2. 검은색 사각형에 대한 카메라의 상대적 위치를 계산
3. 그 위치로부터 컴퓨터 그래픽 모델이 어떻게 그려질지를 계산
4. 실제 영상의 마커 위에 모델을 그림
limitations
1. 추적하는 마커가 영상 안에 보일 때에만 가상 물체를 합성할 수 있음
2. 이 때문에 가상 물체들의 크기나 이동이 제한됨
3. 마커의 패턴의 일부가 가려지는 경우 가상 물체를 합성할 수 없음
4. range(거리)의 제한: 마커의 모양이 클수록 멀리 떨어진 패턴까지 감지할 수 있으므로 추적할 수 있는 volume(범위)이 더 커짐
(이때 거리는 pattern complexity (패턴의 복잡도)에 따라 달라짐: 패턴이 단순할수록 한계 거리가 길어짐)
5. 추적 성능이 카메라에 대한 마커의 상대적인 orientation(방향)에 따라 달라짐
: 마커가 많이 기울어 수평에 가까워질수록 보이는 패턴의 부분이 줄어들기 때문에 recognition(인식)이 잘 되지 않음(신뢰도가 떨어짐)
6. 추적 성능이 lighting conditions (조명 상태)에 따라 달라짐
: 조명에 의해 종이 마커 위에 reflection and glare spots (반사)가 생기면 마커의 사각형을 찾기가 어려워짐
: 종이 대신 반사도가 적은 재료를 쓸 수 있음
Development
Initialization
1. Initialize the video capture and read in the marker pattern files and camera parameters. -> init()
Main Loop
2. Grab a video input frame. -> arVideoGetImage()
3. Detect the markers and recognized patterns in the video input frame. -> arDetectMarker()
4. Calculate the camera transformation relative to the detected patterns. -> arGetTransMat)
5. Draw the virtual objects on the detected patterns. -> draw()
Shutdown
6. Close the video capture down. -> cleanup()
Default camera properties are contained in the camera parameter file
camera_para.dat, that is read in each time an application is started.
The program calib_dist is used to measure
the image center point and lens distortion, while calib_param produces the other
camera properties. (Both of these programs can be found in the bin directory and
their source is in the utils/calib_dist and utils/calib_cparam
directories.)
ARToolKit gives the position of the marker in the camera coordinate system, and uses OpenGL matrix system for the
position of the virtual object.
/**
* \brief get the video image.
*
* This function returns a buffer with a captured video image.
* The returned data consists of a tightly-packed array of
* pixels, beginning with the first component of the leftmost
* pixel of the topmost row, and continuing with the remaining
* components of that pixel, followed by the remaining pixels
* in the topmost row, followed by the leftmost pixel of the
* second row, and so on.
* The arrangement of components of the pixels in the buffer is
* determined by the configuration string passed in to the driver
* at the time the video stream was opened. If no pixel format
* was specified in the configuration string, then an operating-
* system dependent default, defined in <AR/config.h> is used.
* The memory occupied by the pixel data is owned by the video
* driver and should not be freed by your program.
* The pixels in the buffer remain valid until the next call to
* arVideoCapNext, or the next call to arVideoGetImage which
* returns a non-NULL pointer, or any call to arVideoCapStop or
* arVideoClose.
* \return A pointer to the pixel data of the captured video frame,
* or NULL if no new pixel data was available at the time of calling.
*/
AR_DLL_API ARUint8* arVideoGetImage(void);
ARParam
param.h
/** \struct ARParam
* \brief camera intrinsic parameters.
*
* This structure contains the main parameters for
* the intrinsic parameters of the camera
* representation. The camera used is a pinhole
* camera with standard parameters. User should
* consult a computer vision reference for more
* information. (e.g. Three-Dimensional Computer Vision
* (Artificial Intelligence) by Olivier Faugeras).
* \param xsize length of the image (in pixels).
* \param ysize height of the image (in pixels).
* \param mat perspective matrix (K).
* \param dist_factor radial distortions factor
* dist_factor[0]=x center of distortion
* dist_factor[1]=y center of distortion
* dist_factor[2]=distortion factor
* dist_factor[3]=scale factor
*/
typedef struct {
int xsize, ysize;
double mat[3][4];
double dist_factor[4];
} ARParam;
/**
* \brief main function to detect the square markers in the video input frame.
*
* This function proceeds to thresholding, labeling, contour extraction and line corner estimation
* (and maintains an history).
* It's one of the main function of the detection routine with arGetTransMat.
* \param dataPtr a pointer to the color image which is to be searched for square markers.
* The pixel format depend of your architecture. Generally ABGR, but the images
* are treated as a gray scale, so the order of BGR components does not matter.
* However the ordering of the alpha comp, A, is important.
* \param thresh specifies the threshold value (between 0-255) to be used to convert
* the input image into a binary image.
* \param marker_info a pointer to an array of ARMarkerInfo structures returned
* which contain all the information about the detected squares in the image
* \param marker_num the number of detected markers in the image.
* \return 0 when the function completes normally, -1 otherwise
*/
int arDetectMarker( ARUint8 *dataPtr, int thresh,
ARMarkerInfo **marker_info, int *marker_num );
You need to notice that arGetTransMat give the position
of the marker in the camera coordinate
system (not the reverse). If you want the position of the
camera in the marker coordinate system you
need to inverse this transformation (arMatrixInverse()).
XXXBK: not be sure of this function: this function must just convert 3x4
matrix to classical perspective openGL matrix. But in the code, you
used arParamDecompMat that seem decomposed K and R,t, aren't it ? why do
this decomposition since we want just intrinsic parameters ? and if not
what is arDecomp ?
/**
* \brief compute camera position in function of detected markers.
*
* calculate the transformation between a detected marker and the real camera,
* i.e. the position and orientation of the camera relative to the tracking mark.
* \param marker_info the structure containing the parameters for the marker for
* which the camera position and orientation is to be found relative to.
* This structure is found using arDetectMarker.
* \param center the physical center of the marker. arGetTransMat assumes that the marker
* is in x-y plane, and z axis is pointing downwards from marker plane.
* So vertex positions can be represented in 2D coordinates by ignoring the
* z axis information. The marker vertices are specified in order of clockwise.
* \param width the size of the marker (in mm).
* \param conv the transformation matrix from the marker coordinates to camera coordinate frame,
* that is the relative position of real camera to the real marker
* \return always 0.
*/
double arGetTransMat( ARMarkerInfo *marker_info,
double center[2], double width, double conv[3][4] )
/**
* \brief Inverse a non-square matrix.
*
* Inverse a matrix in a non homogeneous format. The matrix
* need to be euclidian.
* \param s matrix input
* \param d resulted inverse matrix.
* \return 0 if the inversion success, -1 otherwise
* \remark input matrix can be also output matrix
*/
int arUtilMatInv( double s[3][4], double d[3][4] );
Seong-Woo Park, Yongduek Seo, Ki-Sang Hong: Real-Time Camera Calibration for Virtual Studio. Real-Time Imaging 6(6): 433-448 (2000) doi:10.1006/rtim.1999.0199
Dept. of E.E. POSTECH, San 31, Hyojadong, Namku, Pohang, Kyungbuk, 790-784, Korea
Abstract
In this paper, we present an overall algorithm for real-time camera parameter extraction, which is one of the key elements in implementing virtual studio, and we also present a new method for calculating the lens distortion parameter in real time. In a virtual studio, the motion of a virtual camera generating a graphic studio must follow the motion of the real camera in order to generate a realistic video product. This requires the calculation of camera parameters in real-time by analyzing the positions of feature points in the input video. Towards this goal, we first design a special calibration pattern utilizing the concept of cross-ratio, which makes it easy to extract and identify feature points, so that we can calculate the camera parameters from the visible portion of the pattern in real-time. It is important to consider the lens distortion when zoom lenses are used because it causes nonnegligible errors in the computation of the camera parameters. However, the Tsai algorithm, adopted for camera calibration, calculates the lens distortion through nonlinear optimization in triple parameter space, which is inappropriate for our real-time system. Thus, we propose a new linear method by calculating the lens distortion parameter independently, which can be computed fast enough for our real-time application. We implement the whole algorithm using a Pentium PC and Matrox Genesis boards with five processing nodes in order to obtain the processing rate of 30 frames per second, which is the minimum requirement for TV broadcasting. Experimental results show this system can be used practically for realizing a virtual studio.
전자공학회논문지 제36권 S편 제7호, 1999. 7
가상스튜디오 구현을 위한 실시간 카메라 추적 ( Real-Time Camera Tracking for Virtual Studio )
박성우 · 서용덕 · 홍기상 저 pp. 90~103 (14 pages) http://uci.or.kr/G300-j12265837.v36n07p90
서지링크 한국과학기술정보연구원
가상스튜디오의 구현을 위해서 카메라의 움직임을 실시간으로 알아내는 것이 필수적이다. 기존의 가상스튜디어 구현에 사용되는 기계적인 방법을 이용한 카메라의 움직임 추적하는 방법에서 나타나는 단점들을 해결하기 위해 본 논문에서는 카메라로부터 얻어진 영상을 이용해 컴퓨터비전 기술을 응용하여 실시간으로 카메라변수들을 알아내기 위한 전체적인 알고리듬을 제안하고 실제 구현을 위한 시스템의 구성 방법에 대해 다룬다. 본 연구에서는 실시간 카메라변수 추출을 위해 영상에서 특징점을 자동으로 추출하고 인식하기 위한 방법과, 카메라 캘리브레이션 과정에서 렌즈의 왜곡특성 계산에 따른 계산량 문제를 해결하기 위한 방법을 제안한다.
camera tracking system : electromechanical / optical
pattern recognition
2D-3D pattern matches
planar pattern
feature extraction -> image-model matching & identification -> camera calibration
: to design the pattern by applying the concept of cross-ratio and to identify the pattern automatically
영상에서 찾아진 특징점을 자동으로 인식하기 위해서는 공간 상의 점들과 영상에 나타난 그것들의 대응점에 대해서 같은 값을 갖는 성질이 필요한데 이것을 기하적 불변량 (Geometric Invariant)이라고 한다. 본 연구에서는 여러 불변량 가운데 cross-ratio를 이용하여 패턴을 제작하고, 영상에서 불변량의 성질을 이용하여 패턴을 자동으로 찾고 인식할 수 있게 하는 방법을 제안한다.
radial alignment constraint
"If we presume that the lens has only radial distortion, the direction of a distorted point is the same as the direction of an undistorted point."
카메라의 움직임을 알아내기 위해서는 공간상에 인식이 가능한 물체가 있어야 한다. 즉, 어느 위치에서 보더라도 영상에 나타난 특징점을 찾을 수 있고, 공간상의 어느 점에 대응되는 점인지를 알 수 있어야 한다.
패턴이 인식 가능하기 위해서는 카메라가 어느 위치, 어느 자세로 보던지 항상 같은 값을 갖는 기하적 불변량 (Geometric Invariant)이 필요하다.
Coelho, C., Heller, A., Mundy, J. L., Forsyth, D. A., and Zisserman, A.1992. An experimental evaluation of projective invariants. In Geometric invariance in Computer Vision, J. L. Mundy and A. Zisserman, Eds. Mit Press Series Of Artificial Intelligence Series. MIT Press, Cambridge, MA, 87-104.
> initial identification process
extracting the pattern in an image: chromakeying -> gradient filtering: a first-order derivative of Gaussian (DoG) -> line fitting: deriving a distorted line (that is actually a curve) equation -> feature point tracking (using intersection filter)
이상적인 렌즈의 optical axis가 영상면에 수직이고 변하지 않는다고 할 때, 영상 중심은 카메라의 줌 동작 동안 고정된 값으로 계산된다. (그러나 실제 렌즈의 불완전한 특성 때문에 카메라의 줌 동작 동안 영상 중심 역시 변하게 되는데, 이 변화량은 적용 범위 이내에서 2픽셀 이하이다. 따라서 본 연구에서는 이러한 변화를 무시하고 이상적인 렌즈를 가정하여 줌동작에 의한 영상 중심을 구하게 된다.)
For zoom lenses, the image centers vary as the camera zooms because the
zooming operation is executed by a composite combination of several
lenses. However, when we examined the location of the image centers,
its standard deviation was about 2 pixels; thus we ignored the effect
of the image center change.
calculating lens distortion coefficient
Zoom lenses are zoomed by a complicated combination of several lenses so that the effective focal length and distortion coefficient vary during zooming operations.
When using the coplanar pattern with small depth variation, it turns out that focal length and z-translation cannot be separated exactly and reliably even with small noise.
카메라 변수 추출에 있어서 공간상의 특징점들이 모두 하나의 평면상에 존재할 때는 초점거리와 z 방향으로의 이동이 상호 연관 (coupling)되어 계산값의 안정성이 결여되기 쉽다.
collinearity
Collinearity represents a property when the line in the world coordinate is also shown as a line in the image. This property is not preserved when the lens has a distortion.
Once the lens distortion is calculated, we can execute camera calibration using linear methods.
filtering
가상 스튜디오 구현에 있어서는 시간 지연이 항상 같은 값을 가지게 하는 것이 필수적이므로, 실제 적용에서는 예측 (prediction)이 들어가는 필터링 방법(예를 들면, Kalman filter)은 사용할 수가 없었다.