Title
Automatic Projector Calibration with Embedded Light Sensors
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>
Login to respond »