Viewing sample resized to 177% of original (view original) Loading...
Title

Automatic Projector Calibration with Embedded Light Sensors

Post Tags
Blacklisted
    Artists
    Meta
    Description

    A demonstration video of a technique used to automatically discover the locations of surfaces in the projection area using embedded light sensors. Project by Johnny Chung Lee - Carnegie Mellon University, 2003.

    Transcript

    WEBVTT
    Kind: captions
    Language: en

    00:00:10.840 --> 00:00:12.629 align:start position:0%

    hello<00:00:11.480><c> I'm</c><00:00:11.679><c> here</c><00:00:11.799><c> to</c><00:00:11.960><c> talk</c><00:00:12.120><c> to</c><00:00:12.240><c> you</c><00:00:12.360><c> a</c><00:00:12.480><c> little</c>

    00:00:12.629 --> 00:00:12.639 align:start position:0%
    hello I'm here to talk to you a little

    00:00:12.639 --> 00:00:14.190 align:start position:0%
    hello I'm here to talk to you a little
    bit<00:00:12.799><c> about</c><00:00:13.000><c> our</c><00:00:13.160><c> system</c><00:00:13.440><c> for</c><00:00:13.719><c> automatic</c>

    00:00:14.190 --> 00:00:14.200 align:start position:0%
    bit about our system for automatic

    00:00:14.200 --> 00:00:16.470 align:start position:0%
    bit about our system for automatic
    projector<00:00:14.719><c> calibration</c><00:00:15.719><c> the</c><00:00:15.839><c> basic</c><00:00:16.279><c> problem</c>

    00:00:16.470 --> 00:00:16.480 align:start position:0%
    projector calibration the basic problem

    00:00:16.480 --> 00:00:17.950 align:start position:0%
    projector calibration the basic problem
    we're<00:00:16.640><c> trying</c><00:00:16.840><c> to</c><00:00:17.000><c> solve</c><00:00:17.279><c> is</c><00:00:17.359><c> a</c><00:00:17.600><c> task</c><00:00:17.800><c> of</c>

    00:00:17.950 --> 00:00:17.960 align:start position:0%
    we're trying to solve is a task of

    00:00:17.960 --> 00:00:19.950 align:start position:0%
    we're trying to solve is a task of
    trying<00:00:18.160><c> to</c><00:00:18.320><c> fit</c><00:00:18.760><c> a</c><00:00:18.920><c> projected</c><00:00:19.359><c> image</c>

    00:00:19.950 --> 00:00:19.960 align:start position:0%
    trying to fit a projected image

    00:00:19.960 --> 00:00:21.830 align:start position:0%
    trying to fit a projected image
    perfectly<00:00:20.359><c> onto</c><00:00:20.640><c> a</c><00:00:20.760><c> Target</c><00:00:21.119><c> surface</c><00:00:21.480><c> such</c><00:00:21.640><c> as</c>

    00:00:21.830 --> 00:00:21.840 align:start position:0%
    perfectly onto a Target surface such as

    00:00:21.840 --> 00:00:24.310 align:start position:0%
    perfectly onto a Target surface such as
    this<00:00:22.560><c> typically</c><00:00:23.080><c> that</c><00:00:23.240><c> requires</c><00:00:23.599><c> the</c><00:00:23.760><c> screen</c>

    00:00:24.310 --> 00:00:24.320 align:start position:0%
    this typically that requires the screen

    00:00:24.320 --> 00:00:26.109 align:start position:0%
    this typically that requires the screen
    to<00:00:24.480><c> be</c><00:00:24.680><c> directly</c><00:00:25.000><c> in</c><00:00:25.119><c> front</c><00:00:25.279><c> of</c><00:00:25.400><c> the</c><00:00:25.519><c> projector</c>

    00:00:26.109 --> 00:00:26.119 align:start position:0%
    to be directly in front of the projector

    00:00:26.119 --> 00:00:28.109 align:start position:0%
    to be directly in front of the projector
    and<00:00:26.279><c> at</c><00:00:26.400><c> a</c><00:00:26.560><c> very</c><00:00:26.800><c> specific</c><00:00:27.160><c> orientation</c><00:00:28.000><c> to</c>

    00:00:28.109 --> 00:00:28.119 align:start position:0%
    and at a very specific orientation to

    00:00:28.119 --> 00:00:30.669 align:start position:0%
    and at a very specific orientation to
    get<00:00:28.240><c> an</c><00:00:28.359><c> unded</c><00:00:29.000><c> image</c><00:00:29.800><c> but</c><00:00:30.039><c> but</c><00:00:30.279><c> what</c><00:00:30.400><c> we</c><00:00:30.519><c> would</c>

    00:00:30.669 --> 00:00:30.679 align:start position:0%
    get an unded image but but what we would

    00:00:30.679 --> 00:00:32.269 align:start position:0%
    get an unded image but but what we would
    like<00:00:30.840><c> to</c><00:00:31.000><c> do</c><00:00:31.359><c> is</c><00:00:31.519><c> be</c><00:00:31.640><c> able</c><00:00:31.800><c> to</c><00:00:31.960><c> place</c><00:00:32.119><c> the</c>

    00:00:32.269 --> 00:00:32.279 align:start position:0%
    like to do is be able to place the

    00:00:32.279 --> 00:00:34.350 align:start position:0%
    like to do is be able to place the
    screen<00:00:32.520><c> in</c><00:00:32.719><c> any</c><00:00:32.960><c> location</c><00:00:33.360><c> that's</c><00:00:33.600><c> convenient</c>

    00:00:34.350 --> 00:00:34.360 align:start position:0%
    screen in any location that's convenient

    00:00:34.360 --> 00:00:36.310 align:start position:0%
    screen in any location that's convenient
    and<00:00:34.520><c> then</c><00:00:34.800><c> calibrate</c><00:00:35.239><c> the</c><00:00:35.399><c> projector</c><00:00:36.040><c> onto</c>

    00:00:36.310 --> 00:00:36.320 align:start position:0%
    and then calibrate the projector onto

    00:00:36.320 --> 00:00:38.750 align:start position:0%
    and then calibrate the projector onto
    the<00:00:36.480><c> target</c><00:00:37.000><c> surface</c><00:00:38.000><c> to</c><00:00:38.120><c> demonstrate</c><00:00:38.600><c> our</c>

    00:00:38.750 --> 00:00:38.760 align:start position:0%
    the target surface to demonstrate our

    00:00:38.760 --> 00:00:41.510 align:start position:0%
    the target surface to demonstrate our
    system<00:00:39.360><c> I</c><00:00:39.520><c> have</c><00:00:39.680><c> an</c><00:00:39.920><c> unmodified</c><00:00:40.600><c> projector</c><00:00:41.399><c> a</c>

    00:00:41.510 --> 00:00:41.520 align:start position:0%
    system I have an unmodified projector a

    00:00:41.520 --> 00:00:43.510 align:start position:0%
    system I have an unmodified projector a
    computer<00:00:41.879><c> beneath</c><00:00:42.160><c> the</c><00:00:42.320><c> table</c><00:00:43.039><c> and</c><00:00:43.360><c> this</c>

    00:00:43.510 --> 00:00:43.520 align:start position:0%
    computer beneath the table and this

    00:00:43.520 --> 00:00:46.029 align:start position:0%
    computer beneath the table and this
    target<00:00:44.039><c> surface</c><00:00:45.039><c> if</c><00:00:45.120><c> I</c><00:00:45.239><c> turn</c><00:00:45.520><c> this</c><00:00:45.640><c> surface</c>

    00:00:46.029 --> 00:00:46.039 align:start position:0%
    target surface if I turn this surface

    00:00:46.039 --> 00:00:47.790 align:start position:0%
    target surface if I turn this surface
    over<00:00:46.520><c> you</c><00:00:46.640><c> can</c><00:00:46.760><c> see</c><00:00:46.960><c> that</c><00:00:47.079><c> we've</c><00:00:47.320><c> implemented</c>

    00:00:47.790 --> 00:00:47.800 align:start position:0%
    over you can see that we've implemented

    00:00:47.800 --> 00:00:48.709 align:start position:0%
    over you can see that we've implemented
    it<00:00:47.920><c> with</c><00:00:48.039><c> some</c>

    00:00:48.709 --> 00:00:48.719 align:start position:0%
    it with some

    00:00:48.719 --> 00:00:50.709 align:start position:0%
    it with some
    Electronics<00:00:49.719><c> what</c><00:00:49.879><c> we</c><00:00:50.039><c> have</c><00:00:50.280><c> here</c><00:00:50.480><c> are</c>

    00:00:50.709 --> 00:00:50.719 align:start position:0%
    Electronics what we have here are

    00:00:50.719 --> 00:00:52.670 align:start position:0%
    Electronics what we have here are
    Optical<00:00:51.120><c> fibers</c><00:00:51.480><c> that</c><00:00:51.600><c> channel</c><00:00:52.000><c> light</c><00:00:52.199><c> energy</c>

    00:00:52.670 --> 00:00:52.680 align:start position:0%
    Optical fibers that channel light energy

    00:00:52.680 --> 00:00:54.709 align:start position:0%
    Optical fibers that channel light energy
    from<00:00:52.920><c> each</c><00:00:53.120><c> corner</c><00:00:53.399><c> of</c><00:00:53.520><c> the</c><00:00:53.640><c> screen</c><00:00:54.399><c> to</c><00:00:54.559><c> an</c>

    00:00:54.709 --> 00:00:54.719 align:start position:0%
    from each corner of the screen to an

    00:00:54.719 --> 00:00:56.470 align:start position:0%
    from each corner of the screen to an
    Electronics<00:00:55.280><c> package</c><00:00:55.640><c> containing</c><00:00:56.079><c> four</c>

    00:00:56.470 --> 00:00:56.480 align:start position:0%
    Electronics package containing four

    00:00:56.480 --> 00:00:58.670 align:start position:0%
    Electronics package containing four
    Optical<00:00:56.879><c> sensors</c><00:00:57.480><c> and</c><00:00:57.600><c> a</c><00:00:57.719><c> USB</c><00:00:58.160><c> connection</c><00:00:58.519><c> to</c>

    00:00:58.670 --> 00:00:58.680 align:start position:0%
    Optical sensors and a USB connection to

    00:00:58.680 --> 00:01:01.549 align:start position:0%
    Optical sensors and a USB connection to
    the<00:00:58.920><c> PC</c><00:01:00.000><c> when</c><00:01:00.079><c> I</c><00:01:00.199><c> turn</c><00:01:00.399><c> the</c><00:01:00.480><c> screen</c><00:01:00.840><c> back</c><00:01:01.039><c> over</c>

    00:01:01.549 --> 00:01:01.559 align:start position:0%
    the PC when I turn the screen back over

    00:01:01.559 --> 00:01:03.069 align:start position:0%
    the PC when I turn the screen back over
    you<00:01:01.680><c> can</c><00:01:01.800><c> see</c><00:01:02.039><c> that</c><00:01:02.160><c> there</c><00:01:02.280><c> is</c><00:01:02.480><c> no</c><00:01:02.719><c> Visual</c>

    00:01:03.069 --> 00:01:03.079 align:start position:0%
    you can see that there is no Visual

    00:01:03.079 --> 00:01:05.509 align:start position:0%
    you can see that there is no Visual
    Evidence<00:01:03.399><c> of</c><00:01:03.559><c> the</c><00:01:03.719><c> fibers</c><00:01:04.680><c> the</c><00:01:04.839><c> White</c><00:01:05.080><c> surface</c>

    00:01:05.509 --> 00:01:05.519 align:start position:0%
    Evidence of the fibers the White surface

    00:01:05.519 --> 00:01:07.510 align:start position:0%
    Evidence of the fibers the White surface
    acts<00:01:05.799><c> to</c><00:01:06.000><c> hide</c><00:01:06.240><c> the</c><00:01:06.400><c> fibers</c><00:01:07.000><c> and</c><00:01:07.200><c> also</c>

    00:01:07.510 --> 00:01:07.520 align:start position:0%
    acts to hide the fibers and also

    00:01:07.520 --> 00:01:09.749 align:start position:0%
    acts to hide the fibers and also
    provides<00:01:07.960><c> a</c><00:01:08.080><c> light</c><00:01:08.280><c> diffuser</c><00:01:09.080><c> which</c><00:01:09.240><c> improves</c>

    00:01:09.749 --> 00:01:09.759 align:start position:0%
    provides a light diffuser which improves

    00:01:09.759 --> 00:01:10.950 align:start position:0%
    provides a light diffuser which improves
    calibration

    00:01:10.950 --> 00:01:10.960 align:start position:0%
    calibration

    00:01:10.960 --> 00:01:13.350 align:start position:0%
    calibration
    reliability<00:01:11.960><c> to</c><00:01:12.159><c> calibrate</c><00:01:12.560><c> onto</c><00:01:12.799><c> the</c><00:01:12.960><c> target</c>

    00:01:13.350 --> 00:01:13.360 align:start position:0%
    reliability to calibrate onto the target

    00:01:13.360 --> 00:01:15.109 align:start position:0%
    reliability to calibrate onto the target
    I<00:01:13.439><c> can</c><00:01:13.600><c> simply</c><00:01:14.000><c> place</c><00:01:14.200><c> it</c><00:01:14.360><c> in</c><00:01:14.479><c> the</c><00:01:14.640><c> projection</c>

    00:01:15.109 --> 00:01:15.119 align:start position:0%
    I can simply place it in the projection

    00:01:15.119 --> 00:01:17.429 align:start position:0%
    I can simply place it in the projection
    area<00:01:15.960><c> and</c><00:01:16.080><c> then</c><00:01:16.280><c> project</c><00:01:16.560><c> a</c><00:01:16.720><c> series</c><00:01:16.960><c> of</c><00:01:17.119><c> grade</c>

    00:01:17.429 --> 00:01:17.439 align:start position:0%
    area and then project a series of grade

    00:01:17.439 --> 00:01:19.990 align:start position:0%
    area and then project a series of grade
    coded<00:01:17.880><c> binary</c><00:01:18.360><c> patterns</c><00:01:19.360><c> these</c><00:01:19.600><c> patterns</c>

    00:01:19.990 --> 00:01:20.000 align:start position:0%
    coded binary patterns these patterns

    00:01:20.000 --> 00:01:21.990 align:start position:0%
    coded binary patterns these patterns
    uniquely<00:01:20.520><c> identify</c><00:01:21.119><c> every</c><00:01:21.400><c> pixel</c><00:01:21.759><c> in</c><00:01:21.840><c> the</c>

    00:01:21.990 --> 00:01:22.000 align:start position:0%
    uniquely identify every pixel in the

    00:01:22.000 --> 00:01:24.109 align:start position:0%
    uniquely identify every pixel in the
    projection<00:01:22.439><c> screen</c><00:01:23.200><c> allowing</c><00:01:23.560><c> us</c><00:01:23.680><c> to</c>

    00:01:24.109 --> 00:01:24.119 align:start position:0%
    projection screen allowing us to

    00:01:24.119 --> 00:01:26.270 align:start position:0%
    projection screen allowing us to
    discover<00:01:24.360><c> the</c><00:01:24.560><c> location</c><00:01:24.960><c> of</c><00:01:25.119><c> each</c><00:01:25.360><c> fiber</c><00:01:26.200><c> we</c>

    00:01:26.270 --> 00:01:26.280 align:start position:0%
    discover the location of each fiber we

    00:01:26.280 --> 00:01:28.350 align:start position:0%
    discover the location of each fiber we
    can<00:01:26.439><c> then</c><00:01:26.600><c> use</c><00:01:26.799><c> this</c><00:01:27.000><c> information</c><00:01:27.759><c> to</c><00:01:28.000><c> project</c>

    00:01:28.350 --> 00:01:28.360 align:start position:0%
    can then use this information to project

    00:01:28.360 --> 00:01:30.870 align:start position:0%
    can then use this information to project
    a<00:01:28.520><c> corrected</c><00:01:28.960><c> image</c><00:01:30.000><c> here</c><00:01:30.159><c> in</c><00:01:30.280><c> this</c><00:01:30.439><c> close-up</c>

    00:01:30.870 --> 00:01:30.880 align:start position:0%
    a corrected image here in this close-up

    00:01:30.880 --> 00:01:32.190 align:start position:0%
    a corrected image here in this close-up
    you<00:01:30.960><c> can</c><00:01:31.119><c> see</c><00:01:31.360><c> that</c><00:01:31.520><c> the</c><00:01:31.680><c> quality</c><00:01:32.040><c> of</c>

    00:01:32.190 --> 00:01:32.200 align:start position:0%
    you can see that the quality of

    00:01:32.200 --> 00:01:34.830 align:start position:0%
    you can see that the quality of
    calibration<00:01:32.799><c> is</c><00:01:33.040><c> very</c><00:01:33.360><c> high</c><00:01:34.240><c> the</c><00:01:34.560><c> discovered</c>

    00:01:34.830 --> 00:01:34.840 align:start position:0%
    calibration is very high the discovered

    00:01:34.840 --> 00:01:36.429 align:start position:0%
    calibration is very high the discovered
    location<00:01:35.240><c> of</c><00:01:35.399><c> each</c><00:01:35.600><c> fiber</c><00:01:35.960><c> is</c><00:01:36.119><c> actually</c>

    00:01:36.429 --> 00:01:36.439 align:start position:0%
    location of each fiber is actually

    00:01:36.439 --> 00:01:39.030 align:start position:0%
    location of each fiber is actually
    closest<00:01:36.840><c> to</c><00:01:37.000><c> the</c><00:01:37.079><c> nearest</c><00:01:37.880><c> pixel</c><00:01:38.880><c> the</c>

    00:01:39.030 --> 00:01:39.040 align:start position:0%
    closest to the nearest pixel the

    00:01:39.040 --> 00:01:40.950 align:start position:0%
    closest to the nearest pixel the
    Prototype<00:01:39.560><c> shown</c><00:01:39.960><c> here</c><00:01:40.200><c> is</c><00:01:40.439><c> capable</c><00:01:40.799><c> of</c>

    00:01:40.950 --> 00:01:40.960 align:start position:0%
    Prototype shown here is capable of

    00:01:40.960 --> 00:01:43.429 align:start position:0%
    Prototype shown here is capable of
    performing<00:01:41.600><c> a</c><00:01:41.799><c> calibration</c><00:01:42.360><c> in</c><00:01:42.600><c> just</c><00:01:42.840><c> over</c><00:01:43.119><c> 1</c>

    00:01:43.429 --> 00:01:43.439 align:start position:0%
    performing a calibration in just over 1

    00:01:43.439 --> 00:01:45.310 align:start position:0%
    performing a calibration in just over 1
    second<00:01:44.240><c> we're</c><00:01:44.439><c> currently</c><00:01:44.840><c> working</c><00:01:45.079><c> on</c>

    00:01:45.310 --> 00:01:45.320 align:start position:0%
    second we're currently working on

    00:01:45.320 --> 00:01:46.910 align:start position:0%
    second we're currently working on
    techniques<00:01:45.759><c> that</c><00:01:45.920><c> will</c><00:01:46.079><c> hopefully</c><00:01:46.520><c> allow</c><00:01:46.759><c> us</c>

    00:01:46.910 --> 00:01:46.920 align:start position:0%
    techniques that will hopefully allow us

    00:01:46.920 --> 00:01:51.870 align:start position:0%
    techniques that will hopefully allow us
    to<00:01:47.159><c> achieve</c><00:01:47.680><c> interactive</c>

    00:01:51.870 --> 00:01:51.880 align:start position:0%

    00:01:51.880 --> 00:01:54.069 align:start position:0%

    rates<00:01:52.880><c> here's</c><00:01:53.159><c> what</c><00:01:53.320><c> the</c><00:01:53.439><c> calibration</c>

    00:01:54.069 --> 00:01:54.079 align:start position:0%
    rates here's what the calibration

    00:01:54.079 --> 00:01:55.630 align:start position:0%
    rates here's what the calibration
    process<00:01:54.520><c> looks</c><00:01:54.759><c> like</c><00:01:54.960><c> from</c><00:01:55.079><c> the</c><00:01:55.240><c> perspective</c>

    00:01:55.630 --> 00:01:55.640 align:start position:0%
    process looks like from the perspective

    00:01:55.640 --> 00:01:57.789 align:start position:0%
    process looks like from the perspective
    of<00:01:55.759><c> the</c><00:01:55.920><c> target</c><00:01:56.719><c> you</c><00:01:56.840><c> can</c><00:01:56.960><c> see</c><00:01:57.119><c> the</c><00:01:57.280><c> irregular</c>

    00:01:57.789 --> 00:01:57.799 align:start position:0%
    of the target you can see the irregular

    00:01:57.799 --> 00:02:00.109 align:start position:0%
    of the target you can see the irregular
    flashing<00:01:58.320><c> from</c><00:01:58.479><c> the</c><00:01:58.640><c> projector</c><00:01:59.479><c> this</c><00:01:59.880><c> pattern</c>

    00:02:00.109 --> 00:02:00.119 align:start position:0%
    flashing from the projector this pattern

    00:02:00.119 --> 00:02:01.910 align:start position:0%
    flashing from the projector this pattern
    or<00:02:00.240><c> flashes</c><00:02:00.640><c> indicates</c><00:02:01.039><c> the</c><00:02:01.240><c> location</c><00:02:01.640><c> of</c><00:02:01.759><c> the</c>

    00:02:01.910 --> 00:02:01.920 align:start position:0%
    or flashes indicates the location of the

    00:02:01.920 --> 00:02:05.950 align:start position:0%
    or flashes indicates the location of the
    camera<00:02:02.200><c> in</c><00:02:02.280><c> the</c><00:02:02.439><c> projector</c><00:02:02.840><c> screen</c>

    00:02:05.950 --> 00:02:05.960 align:start position:0%

    00:02:05.960 --> 00:02:08.389 align:start position:0%

    space<00:02:06.960><c> to</c><00:02:07.119><c> illustrate</c><00:02:07.560><c> the</c><00:02:07.680><c> robustness</c><00:02:08.239><c> of</c>

    00:02:08.389 --> 00:02:08.399 align:start position:0%
    space to illustrate the robustness of

    00:02:08.399 --> 00:02:09.830 align:start position:0%
    space to illustrate the robustness of
    this<00:02:08.560><c> technique</c><00:02:09.039><c> we</c><00:02:09.160><c> will</c><00:02:09.360><c> gradually</c>

    00:02:09.830 --> 00:02:09.840 align:start position:0%
    this technique we will gradually

    00:02:09.840 --> 00:02:11.390 align:start position:0%
    this technique we will gradually
    decrease<00:02:10.280><c> the</c><00:02:10.399><c> projection</c><00:02:10.800><c> angle</c><00:02:11.080><c> of</c><00:02:11.200><c> the</c>

    00:02:11.390 --> 00:02:11.400 align:start position:0%
    decrease the projection angle of the

    00:02:11.400 --> 00:02:13.190 align:start position:0%
    decrease the projection angle of the
    calibration<00:02:12.400><c> we</c><00:02:12.520><c> have</c><00:02:12.640><c> found</c><00:02:12.879><c> that</c><00:02:13.040><c> the</c>

    00:02:13.190 --> 00:02:13.200 align:start position:0%
    calibration we have found that the

    00:02:13.200 --> 00:02:15.390 align:start position:0%
    calibration we have found that the
    calibration<00:02:13.760><c> continues</c><00:02:14.200><c> to</c><00:02:14.360><c> work</c><00:02:14.599><c> reliably</c>

    00:02:15.390 --> 00:02:15.400 align:start position:0%
    calibration continues to work reliably

    00:02:15.400 --> 00:02:17.110 align:start position:0%
    calibration continues to work reliably
    even<00:02:15.599><c> when</c><00:02:15.800><c> the</c><00:02:16.040><c> projection</c><00:02:16.440><c> angle</c><00:02:16.760><c> is</c><00:02:16.959><c> less</c>

    00:02:17.110 --> 00:02:17.120 align:start position:0%
    even when the projection angle is less

    00:02:17.120 --> 00:02:20.229 align:start position:0%
    even when the projection angle is less
    than<00:02:17.560><c> 2°</c><00:02:18.560><c> in</c><00:02:18.720><c> this</c><00:02:19.000><c> last</c><00:02:19.319><c> calibration</c><00:02:20.120><c> the</c>

    00:02:20.229 --> 00:02:20.239 align:start position:0%
    than 2° in this last calibration the

    00:02:20.239 --> 00:02:22.229 align:start position:0%
    than 2° in this last calibration the
    screen<00:02:20.560><c> is</c><00:02:20.760><c> actually</c><00:02:21.000><c> facing</c><00:02:21.400><c> slightly</c><00:02:21.920><c> away</c>

    00:02:22.229 --> 00:02:22.239 align:start position:0%
    screen is actually facing slightly away

    00:02:22.239 --> 00:02:24.350 align:start position:0%
    screen is actually facing slightly away
    from<00:02:22.400><c> the</c><00:02:22.599><c> projector</c><00:02:23.440><c> the</c><00:02:23.599><c> expansion</c><00:02:24.080><c> of</c><00:02:24.200><c> the</c>

    00:02:24.350 --> 00:02:24.360 align:start position:0%
    from the projector the expansion of the

    00:02:24.360 --> 00:02:26.150 align:start position:0%
    from the projector the expansion of the
    projection<00:02:24.720><c> frustrum</c><00:02:25.360><c> is</c><00:02:25.560><c> sufficient</c><00:02:25.959><c> for</c>

    00:02:26.150 --> 00:02:26.160 align:start position:0%
    projection frustrum is sufficient for

    00:02:26.160 --> 00:02:29.949 align:start position:0%
    projection frustrum is sufficient for
    this<00:02:26.360><c> technique</c><00:02:26.720><c> to</c><00:02:26.879><c> work</c>

    00:02:29.949 --> 00:02:29.959 align:start position:0%

    00:02:29.959 --> 00:02:32.110 align:start position:0%

    we<00:02:30.080><c> can</c><00:02:30.280><c> also</c><00:02:30.519><c> fold</c><00:02:31.000><c> the</c><00:02:31.120><c> optical</c><00:02:31.599><c> path</c><00:02:31.840><c> using</c>

    00:02:32.110 --> 00:02:32.120 align:start position:0%
    we can also fold the optical path using

    00:02:32.120 --> 00:02:33.630 align:start position:0%
    we can also fold the optical path using
    a<00:02:32.239><c> mirror</c><00:02:32.680><c> with</c><00:02:32.840><c> no</c><00:02:33.120><c> effect</c><00:02:33.319><c> on</c><00:02:33.480><c> the</c>

    00:02:33.630 --> 00:02:33.640 align:start position:0%
    a mirror with no effect on the

    00:02:33.640 --> 00:02:35.830 align:start position:0%
    a mirror with no effect on the
    calibration<00:02:34.239><c> process</c><00:02:35.080><c> the</c><00:02:35.239><c> image</c><00:02:35.519><c> will</c><00:02:35.640><c> be</c>

    00:02:35.830 --> 00:02:35.840 align:start position:0%
    calibration process the image will be

    00:02:35.840 --> 00:02:37.270 align:start position:0%
    calibration process the image will be
    automatically<00:02:36.440><c> reversed</c><00:02:36.920><c> since</c><00:02:37.160><c> the</c>

    00:02:37.270 --> 00:02:37.280 align:start position:0%
    automatically reversed since the

    00:02:37.280 --> 00:02:39.070 align:start position:0%
    automatically reversed since the
    orientation<00:02:37.879><c> of</c><00:02:38.000><c> the</c><00:02:38.120><c> image</c><00:02:38.440><c> is</c><00:02:38.560><c> determined</c>

    00:02:39.070 --> 00:02:39.080 align:start position:0%
    orientation of the image is determined

    00:02:39.080 --> 00:02:42.070 align:start position:0%
    orientation of the image is determined
    by<00:02:39.200><c> the</c><00:02:39.319><c> screen</c><00:02:39.800><c> and</c><00:02:39.959><c> not</c><00:02:40.159><c> the</c>

    00:02:42.070 --> 00:02:42.080 align:start position:0%
    by the screen and not the

    00:02:42.080 --> 00:02:44.390 align:start position:0%
    by the screen and not the
    projector<00:02:43.080><c> this</c><00:02:43.280><c> wireframe</c><00:02:43.840><c> test</c><00:02:44.120><c> pattern</c>

    00:02:44.390 --> 00:02:44.400 align:start position:0%
    projector this wireframe test pattern

    00:02:44.400 --> 00:02:46.270 align:start position:0%
    projector this wireframe test pattern
    that<00:02:44.519><c> I've</c><00:02:44.680><c> been</c><00:02:44.800><c> using</c><00:02:45.480><c> is</c><00:02:45.640><c> mainly</c><00:02:46.000><c> to</c><00:02:46.159><c> make</c>

    00:02:46.270 --> 00:02:46.280 align:start position:0%
    that I've been using is mainly to make

    00:02:46.280 --> 00:02:47.830 align:start position:0%
    that I've been using is mainly to make
    it<00:02:46.440><c> easy</c><00:02:46.720><c> to</c><00:02:46.840><c> see</c><00:02:47.120><c> the</c><00:02:47.280><c> quality</c><00:02:47.599><c> of</c>

    00:02:47.830 --> 00:02:47.840 align:start position:0%
    it easy to see the quality of

    00:02:47.840 --> 00:02:50.990 align:start position:0%
    it easy to see the quality of
    calibration<00:02:48.840><c> but</c><00:02:49.000><c> using</c><00:02:49.280><c> openg</c><00:02:49.920><c> or</c><00:02:50.080><c> direct</c><00:02:50.400><c> X</c>

    00:02:50.990 --> 00:02:51.000 align:start position:0%
    calibration but using openg or direct X

    00:02:51.000 --> 00:02:52.949 align:start position:0%
    calibration but using openg or direct X
    we<00:02:51.120><c> can</c><00:02:51.280><c> warp</c><00:02:51.560><c> real-time</c><00:02:52.000><c> video</c><00:02:52.280><c> on</c><00:02:52.440><c> lowcost</c>

    00:02:52.949 --> 00:02:52.959 align:start position:0%
    we can warp real-time video on lowcost

    00:02:52.959 --> 00:02:54.670 align:start position:0%
    we can warp real-time video on lowcost
    commodity

    00:02:54.670 --> 00:02:54.680 align:start position:0%
    commodity

    00:02:54.680 --> 00:02:57.270 align:start position:0%
    commodity
    Hardware<00:02:55.680><c> we</c><00:02:55.840><c> also</c><00:02:56.120><c> have</c><00:02:56.319><c> an</c><00:02:56.519><c> implementation</c>

    00:02:57.270 --> 00:02:57.280 align:start position:0%
    Hardware we also have an implementation

    00:02:57.280 --> 00:02:58.670 align:start position:0%
    Hardware we also have an implementation
    that<00:02:57.400><c> allows</c><00:02:57.720><c> us</c><00:02:57.840><c> to</c><00:02:58.000><c> warp</c><00:02:58.280><c> the</c><00:02:58.440><c> active</c>

    00:02:58.670 --> 00:02:58.680 align:start position:0%
    that allows us to warp the active

    00:02:58.680 --> 00:03:01.030 align:start position:0%
    that allows us to warp the active
    Windows<00:02:59.080><c> desktop</c><00:02:59.840><c> creating</c><00:03:00.120><c> a</c><00:03:00.239><c> fully</c><00:03:00.560><c> usable</c>

    00:03:01.030 --> 00:03:01.040 align:start position:0%
    Windows desktop creating a fully usable

    00:03:01.040 --> 00:03:03.390 align:start position:0%
    Windows desktop creating a fully usable
    calibrated

    00:03:03.390 --> 00:03:03.400 align:start position:0%
    calibrated

    00:03:03.400 --> 00:03:05.830 align:start position:0%
    calibrated
    display<00:03:04.400><c> in</c><00:03:04.599><c> this</c><00:03:04.760><c> board</c><00:03:05.159><c> we</c><00:03:05.280><c> have</c><00:03:05.400><c> added</c><00:03:05.680><c> a</c>

    00:03:05.830 --> 00:03:05.840 align:start position:0%
    display in this board we have added a

    00:03:05.840 --> 00:03:08.229 align:start position:0%
    display in this board we have added a
    total<00:03:06.159><c> of</c><00:03:06.360><c> six</c><00:03:06.599><c> sensors</c><00:03:07.239><c> one</c><00:03:07.400><c> in</c><00:03:07.560><c> each</c><00:03:07.799><c> corner</c>

    00:03:08.229 --> 00:03:08.239 align:start position:0%
    total of six sensors one in each corner

    00:03:08.239 --> 00:03:10.470 align:start position:0%
    total of six sensors one in each corner
    and<00:03:08.360><c> two</c><00:03:08.640><c> across</c><00:03:08.959><c> the</c><00:03:09.080><c> middle</c><00:03:09.879><c> this</c><00:03:10.040><c> allows</c><00:03:10.360><c> us</c>

    00:03:10.470 --> 00:03:10.480 align:start position:0%
    and two across the middle this allows us

    00:03:10.480 --> 00:03:12.110 align:start position:0%
    and two across the middle this allows us
    to<00:03:10.680><c> calibrate</c><00:03:11.200><c> two</c><00:03:11.400><c> projectors</c><00:03:11.840><c> that</c><00:03:11.959><c> are</c>

    00:03:12.110 --> 00:03:12.120 align:start position:0%
    to calibrate two projectors that are

    00:03:12.120 --> 00:03:14.309 align:start position:0%
    to calibrate two projectors that are
    placed<00:03:12.480><c> side</c><00:03:12.720><c> by</c><00:03:13.080><c> side</c><00:03:13.560><c> creating</c><00:03:13.879><c> a</c><00:03:14.040><c> method</c>

    00:03:14.309 --> 00:03:14.319 align:start position:0%
    placed side by side creating a method

    00:03:14.319 --> 00:03:15.990 align:start position:0%
    placed side by side creating a method
    for<00:03:14.519><c> automatically</c><00:03:15.080><c> stitching</c><00:03:15.480><c> multiple</c>

    00:03:15.990 --> 00:03:16.000 align:start position:0%
    for automatically stitching multiple

    00:03:16.000 --> 00:03:18.350 align:start position:0%
    for automatically stitching multiple
    projectors<00:03:17.000><c> we</c><00:03:17.200><c> calibrate</c><00:03:17.720><c> each</c><00:03:17.920><c> projector</c>

    00:03:18.350 --> 00:03:18.360 align:start position:0%
    projectors we calibrate each projector

    00:03:18.360 --> 00:03:20.030 align:start position:0%
    projectors we calibrate each projector
    individually<00:03:19.159><c> and</c><00:03:19.319><c> then</c><00:03:19.440><c> blend</c><00:03:19.760><c> the</c><00:03:19.840><c> two</c>

    00:03:20.030 --> 00:03:20.040 align:start position:0%
    individually and then blend the two

    00:03:20.040 --> 00:03:28.390 align:start position:0%
    individually and then blend the two
    images

    00:03:28.390 --> 00:03:28.400 align:start position:0%

    00:03:28.400 --> 00:03:30.710 align:start position:0%

    together<00:03:29.400><c> here</c><00:03:29.519><c> we</c><00:03:29.840><c> have</c><00:03:30.000><c> two</c><00:03:30.239><c> projectors</c>

    00:03:30.710 --> 00:03:30.720 align:start position:0%
    together here we have two projectors

    00:03:30.720 --> 00:03:32.670 align:start position:0%
    together here we have two projectors
    displaying<00:03:31.200><c> synchronized</c><00:03:31.799><c> video</c><00:03:32.439><c> which</c><00:03:32.560><c> have</c>

    00:03:32.670 --> 00:03:32.680 align:start position:0%
    displaying synchronized video which have

    00:03:32.680 --> 00:03:34.910 align:start position:0%
    displaying synchronized video which have
    been<00:03:32.879><c> calibrated</c><00:03:33.360><c> onto</c><00:03:33.640><c> the</c><00:03:33.760><c> same</c><00:03:34.000><c> Target</c>

    00:03:34.910 --> 00:03:34.920 align:start position:0%
    been calibrated onto the same Target

    00:03:34.920 --> 00:03:36.630 align:start position:0%
    been calibrated onto the same Target
    this<00:03:35.040><c> is</c><00:03:35.200><c> useful</c><00:03:35.519><c> for</c><00:03:35.720><c> touch</c><00:03:35.959><c> screens</c><00:03:36.480><c> by</c>

    00:03:36.630 --> 00:03:36.640 align:start position:0%
    this is useful for touch screens by

    00:03:36.640 --> 00:03:38.949 align:start position:0%
    this is useful for touch screens by
    reducing<00:03:37.040><c> the</c><00:03:37.159><c> visual</c><00:03:37.480><c> impact</c><00:03:37.840><c> of</c><00:03:38.040><c> shadows</c>

    00:03:38.949 --> 00:03:38.959 align:start position:0%
    reducing the visual impact of shadows

    00:03:38.959 --> 00:03:40.910 align:start position:0%
    reducing the visual impact of shadows
    two<00:03:39.239><c> lesser</c><00:03:39.560><c> Shadows</c><00:03:39.959><c> are</c><00:03:40.120><c> created</c><00:03:40.760><c> but</c>

    00:03:40.910 --> 00:03:40.920 align:start position:0%
    two lesser Shadows are created but

    00:03:40.920 --> 00:03:42.869 align:start position:0%
    two lesser Shadows are created but
    neither<00:03:41.280><c> entirely</c><00:03:41.720><c> include</c><00:03:42.120><c> the</c><00:03:42.239><c> projected</c>

    00:03:42.869 --> 00:03:42.879 align:start position:0%
    neither entirely include the projected

    00:03:42.879 --> 00:03:45.350 align:start position:0%
    neither entirely include the projected
    content<00:03:43.879><c> this</c><00:03:44.000><c> is</c><00:03:44.239><c> also</c><00:03:44.519><c> useful</c><00:03:44.840><c> for</c><00:03:45.000><c> aligning</c>

    00:03:45.350 --> 00:03:45.360 align:start position:0%
    content this is also useful for aligning

    00:03:45.360 --> 00:03:47.670 align:start position:0%
    content this is also useful for aligning
    steroscopic<00:03:45.920><c> projection</c>

    00:03:47.670 --> 00:03:47.680 align:start position:0%
    steroscopic projection

    00:03:47.680 --> 00:03:50.309 align:start position:0%
    steroscopic projection
    systems<00:03:48.680><c> our</c><00:03:48.959><c> last</c><00:03:49.200><c> demonstration</c><00:03:49.799><c> uses</c><00:03:50.159><c> this</c>

    00:03:50.309 --> 00:03:50.319 align:start position:0%
    systems our last demonstration uses this

    00:03:50.319 --> 00:03:52.149 align:start position:0%
    systems our last demonstration uses this
    toy<00:03:50.599><c> car</c><00:03:50.959><c> that</c><00:03:51.080><c> has</c><00:03:51.200><c> been</c><00:03:51.360><c> implemented</c><00:03:51.920><c> with</c>

    00:03:52.149 --> 00:03:52.159 align:start position:0%
    toy car that has been implemented with

    00:03:52.159 --> 00:03:54.589 align:start position:0%
    toy car that has been implemented with
    eight<00:03:52.400><c> Optical</c><00:03:52.799><c> fibers</c><00:03:53.799><c> these</c><00:03:54.000><c> registration</c>

    00:03:54.589 --> 00:03:54.599 align:start position:0%
    eight Optical fibers these registration

    00:03:54.599 --> 00:03:56.229 align:start position:0%
    eight Optical fibers these registration
    points<00:03:55.000><c> allow</c><00:03:55.280><c> us</c><00:03:55.400><c> to</c><00:03:55.599><c> use</c><00:03:55.799><c> the</c><00:03:55.920><c> known</c>

    00:03:56.229 --> 00:03:56.239 align:start position:0%
    points allow us to use the known

    00:03:56.239 --> 00:03:58.350 align:start position:0%
    points allow us to use the known
    geometry<00:03:56.720><c> of</c><00:03:56.840><c> the</c><00:03:56.959><c> model</c><00:03:57.560><c> to</c><00:03:57.760><c> dynamically</c>

    00:03:58.350 --> 00:03:58.360 align:start position:0%
    geometry of the model to dynamically

    00:03:58.360 --> 00:04:00.350 align:start position:0%
    geometry of the model to dynamically
    give<00:03:58.480><c> the</c><00:03:58.640><c> car</c><00:03:58.879><c> a</c><00:03:59.079><c> custom</c><00:03:59.360><c> paint</c><00:03:59.840><c> job</c><00:04:00.159><c> and</c>

    00:04:00.350 --> 00:04:00.360 align:start position:0%
    give the car a custom paint job and

    00:04:00.360 --> 00:04:02.949 align:start position:0%
    give the car a custom paint job and
    hubcap<00:04:00.840><c> details</c><00:04:01.840><c> if</c><00:04:01.959><c> the</c><00:04:02.079><c> car</c><00:04:02.239><c> is</c><00:04:02.400><c> moved</c><00:04:02.840><c> we</c>

    00:04:02.949 --> 00:04:02.959 align:start position:0%
    hubcap details if the car is moved we

    00:04:02.959 --> 00:04:04.670 align:start position:0%
    hubcap details if the car is moved we
    can<00:04:03.159><c> realign</c><00:04:03.640><c> the</c><00:04:03.720><c> model</c><00:04:03.959><c> to</c><00:04:04.120><c> fit</c><00:04:04.280><c> the</c><00:04:04.439><c> New</c>

    00:04:04.670 --> 00:04:04.680 align:start position:0%
    can realign the model to fit the New

    00:04:04.680 --> 00:04:07.110 align:start position:0%
    can realign the model to fit the New
    Perspective<00:04:05.400><c> in</c><00:04:05.599><c> just</c><00:04:05.720><c> a</c><00:04:05.840><c> few</c><00:04:06.079><c> seconds</c><00:04:06.920><c> this</c>

    00:04:07.110 --> 00:04:07.120 align:start position:0%
    Perspective in just a few seconds this

    00:04:07.120 --> 00:04:09.350 align:start position:0%
    Perspective in just a few seconds this
    previously<00:04:07.640><c> required</c><00:04:08.120><c> a</c><00:04:08.280><c> 15</c><00:04:08.599><c> to</c><00:04:08.760><c> 20</c><00:04:09.040><c> minute</c>

    00:04:09.350 --> 00:04:09.360 align:start position:0%
    previously required a 15 to 20 minute

    00:04:09.360 --> 00:04:11.830 align:start position:0%
    previously required a 15 to 20 minute
    manual<00:04:09.720><c> realignment</c><00:04:10.400><c> process</c><00:04:11.159><c> this</c><00:04:11.360><c> close-up</c>

    00:04:11.830 --> 00:04:11.840 align:start position:0%
    manual realignment process this close-up

    00:04:11.840 --> 00:04:13.589 align:start position:0%
    manual realignment process this close-up
    view<00:04:12.040><c> of</c><00:04:12.120><c> the</c><00:04:12.280><c> car</c><00:04:12.560><c> shows</c><00:04:12.840><c> the</c><00:04:13.040><c> accuracy</c><00:04:13.439><c> of</c>

    00:04:13.589 --> 00:04:13.599 align:start position:0%
    view of the car shows the accuracy of

    00:04:13.599 --> 00:04:15.589 align:start position:0%
    view of the car shows the accuracy of
    registration<00:04:14.200><c> between</c><00:04:14.480><c> the</c><00:04:14.640><c> projected</c><00:04:15.079><c> image</c>

    00:04:15.589 --> 00:04:15.599 align:start position:0%
    registration between the projected image

    00:04:15.599 --> 00:04:17.749 align:start position:0%
    registration between the projected image
    and<00:04:15.760><c> the</c><00:04:15.879><c> physical</c><00:04:16.239><c> features</c><00:04:16.560><c> of</c><00:04:16.680><c> the</c><00:04:16.799><c> model</c>

    00:04:17.749 --> 00:04:17.759 align:start position:0%
    and the physical features of the model

    00:04:17.759 --> 00:04:19.590 align:start position:0%
    and the physical features of the model
    our<00:04:18.000><c> calibration</c><00:04:18.560><c> system</c><00:04:18.880><c> brings</c><00:04:19.280><c> these</c>

    00:04:19.590 --> 00:04:19.600 align:start position:0%
    our calibration system brings these

    00:04:19.600 --> 00:04:21.949 align:start position:0%
    our calibration system brings these
    ideas<00:04:20.000><c> of</c><00:04:20.199><c> appearance</c><00:04:20.680><c> customization</c><00:04:21.639><c> to</c><00:04:21.799><c> a</c>

    00:04:21.949 --> 00:04:21.959 align:start position:0%
    ideas of appearance customization to a

    00:04:21.959 --> 00:04:23.710 align:start position:0%
    ideas of appearance customization to a
    closer<00:04:22.440><c> practical</c>

    00:04:23.710 --> 00:04:23.720 align:start position:0%
    closer practical

    00:04:23.720 --> 00:04:26.590 align:start position:0%
    closer practical
    reality<00:04:24.720><c> this</c><00:04:24.919><c> simple</c><00:04:25.520><c> robust</c><00:04:25.960><c> technique</c><00:04:26.360><c> for</c>

    00:04:26.590 --> 00:04:26.600 align:start position:0%
    reality this simple robust technique for

    00:04:26.600 --> 00:04:28.749 align:start position:0%
    reality this simple robust technique for
    automatically<00:04:27.240><c> calibrating</c><00:04:27.800><c> projectors</c>

    00:04:28.749 --> 00:04:28.759 align:start position:0%
    automatically calibrating projectors

    00:04:28.759 --> 00:04:30.189 align:start position:0%
    automatically calibrating projectors
    allows<00:04:29.039><c> us</c><00:04:29.160><c> to</c><00:04:29.320><c> rethink</c><00:04:29.720><c> think</c><00:04:29.880><c> the</c><00:04:29.960><c> way</c><00:04:30.080><c> we</c>

    00:04:30.189 --> 00:04:30.199 align:start position:0%
    allows us to rethink think the way we

    00:04:30.199 --> 00:04:32.350 align:start position:0%
    allows us to rethink think the way we
    use<00:04:30.440><c> projection</c><00:04:30.919><c> technology</c><00:04:31.680><c> and</c><00:04:31.880><c> explore</c>

    00:04:32.350 --> 00:04:32.360 align:start position:0%
    use projection technology and explore

    00:04:32.360 --> 00:04:33.950 align:start position:0%
    use projection technology and explore
    applications<00:04:33.360><c> that</c><00:04:33.520><c> may</c><00:04:33.639><c> have</c><00:04:33.759><c> been</c>

    00:04:33.950 --> 00:04:33.960 align:start position:0%
    applications that may have been

    00:04:33.960 --> 00:04:38.600 align:start position:0%
    applications that may have been
    previously<00:04:34.520><c> impossible</c><00:04:35.320><c> or</c><00:04:35.600><c> impractical</c>

    Post Information, History and Related
    Information

    History

    Related
    Blacklisted
      There are no comments.