>> Simon Baker: So I'd like to introduce Srinivasa... Srinivasa has been there now five years, five and a...

advertisement
>> Simon Baker: So I'd like to introduce Srinivasa Narasimhan who is visiting from CMU.
Srinivasa has been there now five years, five and a half years. And he's going to be
talking about light transport both vision and graphics applications.
>> Srinivasa Narasimhan: Thanks. Thanks for inviting me. It's great to be here. Okay.
So when you say light transport, this term is used to mean collectively all the propagation
of light trace within a scene, okay? So traditionally and historically in computer vision, we
are focused on a very specific kind of light transport, and that's in a light ray from the light
source straight goes to a scene point and then that gets reflected back to the viewer.
Moreover, you assume that the scene radiants does not change with distance as it
travels from the surface to the viewer. But this is not the end of the story for light
transport, right? So there's many, many mechanisms by which you have transfer of light
from a source to the surface to the viewer.
For example, it could be interreflections, right, so you have light rays bouncing between C
points or it could be subsurface scattering where you have light rays penetrating through
the surface, scattering around and coming out of a different scene point. Or finally you
could have a volumetric medium. So surfaces are not emersed in vacuum, you always
have a medium around it so you're not going to trade the problem as 2 and a half D but a
full 3D problem. Right? So it could be the atmosphere, it could be underwater, it could
be any kind of medium.
So these three different, you know, mechanisms of light transport are what we can call
global component, right? And they can result in very interesting and rich effects on the
scene itself. Right? So -- and it's not as uncommon as vision researchers would want to
believe it is, right? So it's everywhere. So if you are emersed in water, for example, or
bad weather, your skin, it appears translucent, right? So marble, flowers, leaves and
you'll kinds of florids and so on.
So it's all around us, right? So we want to somehow try and understand the different
kinds of light transport mechanisms, try to model, measure, and interpret them for vision
and graphics applications. Okay?
So what I'm going to do in this talk is talk about a few different applications. I'll start by
looking at how to simulate the effects of the atmosphere as light is propagating through
the atmosphere on imagery, right? So for example if you look at images such as these,
you see effects visual manifestations of loss of contrast, dimming and blurring and the
glows around the light sources, right? So at night if you go outside and it's misty, you see
these beautiful glows around the light sources, right?
So here what we want to do is try to simulate these effects for maybe video games or
movies. So once you go and shoot the movie and then you want to add these effects of
fog and haze in real-time. So let's try to understand the computational complexity here.
So in order to simulate these effects, you not only have to look at the direct rays from the
source and the surface but also because you have a medium which has particles, right,
you have light rays getting scattered from different directions and then reaching the
[inaudible]. And this gives the feel of the glow around the light source, right, so the light
raze go somewhere else and then get scattered toward here.
So the same kind of mechanism can happen to a surface as well, so the surface doesn't
get light from just one point in this area but you have this entire volume that is lighting up
the surface. Right? And in this case, it sort of makes the surface look like an overcast
day surface rather than a sunny day surface. Okay? So you have highlights that are
diffused out shadows that are much brighter than usual and so on.
And the final sort of light transport mechanism is this slight blurring of the surface itself.
Okay? So let's try and figure out how to simulate this very simple setup for graphics
applications. So just to understand the computational complexity it looks very simple, but
computationally speaking, let's say this is your virtual screen or the image that you want
to generate and the viewer is looking at a single pixel, and you shoot out a ray out into
the real world, and this is standard retracing, right?
So this ray you can divide it up into small chunks, let's say 50 or so chunks, and then at
each of those you want to find the contributions of the light sources at that point. Okay?
So then what you need to do is just march along these voxels and then compute an
integral along the line of site. So this is what you want to do for finding the scattering
from these light sources. For this viewing ray. Okay?
So then after this integral, you also imagine yourself sitting on the surface and you want
to do the same integration over a 2D set of directions, right? So there's a whole lot of
integrals that you need to compute here. Okay? So if you just do a back of the envelope
calculations if you have a 644 AD image, can we dim the light a little bit? Thanks. That's
good.
So if you have a 644 AD image and you have let's say four light sources and you divide
up your ray into 50 voxels, just an arbitrary number, you get a total of 1.9 trillion
calculations, which is quite a lot because you know, adding fog and haze is sort of
blurring and dimming lighting, but it's -- you know, you're doing this very complex
integrals and as a result you're getting this many computations, right? So our goal is to
somehow make it more tractable in the sense that we want to get exactly the same
solution as before. We don't want to create a trade-off space.
So usual solution would be if you approximate the integral you get lower accuracy but
faster speed, right? Here we won't actually beat that trade-off. And say we want to get
exactly the same solution but at a much faster rate. Okay?
So for this we need to understand the structure of this integral itself. Okay? So let's look
at that integral. And I'm going to just sort of breeze through it quickly. So this is known
as the air light integral and Karl Snider [phonetic] who defined this term because this is
very common, right, this is when you see out doors you see this sort of blueish haze on
mountains and things like that, that's known at air light, okay?
So you have this kind of an integral where let's say you have a ray coming down from the
source to a particle, okay, at a distance D and you write its equation as I node by D
squared which is the falloff from the point light source and you have another falloff that is
due to scattering itself. So most of the light gets scattered away and what reaches is an
exponentially decaying function that depends on distance. Okay? So at this point
something interesting happens, so you have light rays that turn, that scatter, and the
intensity gets multiplied by some kind of a factor, okay? Just like BRDF does for surfaces
here you have what is known as a phase function for particles, okay?
So once that happens, then you have right rays sort of going from that particle towards
the viewer and that again results in another falloff. Okay? So this is sort of the basic
principle of light propagation due to scattering, okay? Now, this is not the only ray that
we need to consider. You need to consider all the other rays that are falling on this line
of sight. Right? So that means then you need to compute this integral over a range of
distances that is from the viewer to the surface. Okay? So this is the final irradiance that
falls on the camera, right?
So now this looks like a simple equation. Now let's try and write these parameters in
terms of the parameters of the problem. What are the parameters of the problem? So
you need to look at how far this scene is -- the viewer is with respect to the point light
source. You need to look at how far the surface is with respect to the viewer. You need
to see this angle. And you need to also have the parameters of scattering that is this
beta which denotes the density of particles. Okay?
So you have these four different quantities on when this integral is written.
>>: [inaudible].
>> Srinivasa Narasimhan: Yes?
>>: Is K one predictor function or it's a family of functions?
>> Srinivasa Narasimhan: So K is -- can be a family of functions like a BRDF.
>>: Okay.
>> Srinivasa Narasimhan: So but you can expand it, for example, using Legendre
polynomials.
>>: Okay.
>> Srinivasa Narasimhan: And you could have any number of coefficients.
>>: Okay.
>> Srinivasa Narasimhan: Okay? So one example versus you know [inaudible] would
be lighting going in all directions equally, you have an isotropic phase function that might
be constant with respect to [inaudible].
>>: Okay. And what are typical things like mist and so on?
>> Srinivasa Narasimhan: So they are predominantly forward scattering, so they are
ellipticals around the point, and then most of it is forward scattering.
>>: Okay.
>> Srinivasa Narasimhan: So you can sort of parameterize that ellipse, the stretch of that
ellipse using one parameter.
>>: Okay.
>> Srinivasa Narasimhan: Okay. So if you write down this equation with the parameters
of the problem, you get really an ugly looking thing. And there is no known analytic
solution to this and that's why in graphics you're trying to numerically integrate this
equation, okay?
So what we did in this work, this was way back in 2005, we tried to sort of factorize this
integral, we studied this integral a little bit more and tried to substitute different kinds of
variables, played tricks with it, and we came up with a nice factorization that said this
integral that depends on four programs can be factored exactly equally so it's no
approximation into a 3D analytic function so that you can extract out some of the
functions out of the integral, and what you are left with is an integral that depends on two
parameters. Okay? So in this integral is precisely the complexity in scattering. Okay?
So once you have that, this looks like this, okay? It looks like, you know, sort of harmless
looking function, so I have a [inaudible] the two parameters, it's an integral of an
exponent of U and something. Okay? So if you just, you know, simulate this, it looks like
a very smooth function in the parameters, okay? So what you can do is you can
precompute this once for all so it didn't depend on the scene. So you just computed once
and stored it in your graphics hardware. Okay? And then what you need to do when you
are rendering is just pick values out of this. Okay? Yeah.
>>: [inaudible] I mean, is there some physical explanation?
>> Srinivasa Narasimhan: So there is a -- and so it's a little bit of weird explanation in
some ways. So it -- it depends on a particular transformation of these kinds of variables
together so one axis depends on the angle with respect to the viewing ray. Okay? And
the other axis depends on what is known as optical thickness, which multiples the density
and the distance together. Okay? So both axes are physical quantities. But what you
need is for any particular scene you just pick the right, you know, pixel from this texture.
So it's purely mathematical that if you substitute, you know, variables here you can sort of
separate it out into things that change outside the integral and things that change within
the integral. So once you have that, then your computation becomes extremely simple.
So this 8-0 is this analytic function that I talked about which can be computed very quickly
and you have to have two lookups of this texture, and you subtract these two things you
get your integral of that line of site. Okay?
So this makes it extremely fast. So you can store this, it's compact so you can store this
in graphics hardware. It's realtime cheap evaluation, right? And you can arbitrarily
change physical parameters, so you can make it interactive, you can change any
parameter you want, right? So all of this districtwise and new lookup like that. Okay?
So I should mention that this is now implemented in NVIDIA graphics card so if you
actually buy a PC with an NVIDIA graphics card you can download their STK and you
can say add fog and haze and it will do it in realtime, for any of your movies and video
games and so on.
So let me show you some of the videos here. Okay. So what I'm going to do is show a
few different videos. The first one is just sort of a special case where you have just a set
of point light sources like lamp posts and you want to see the glows around light sources
as you are changing the amount of fog. Okay?
>>: We start by showing a simple scene with three street lamps. Under clear day
conditions, these are simply point light sources. The legend on the bottom left of the
image indicates the frames per second while that on the bottom right indicates the
density of fog or scattering coefficient data ->> Srinivasa Narasimhan: You'll see these numbers better as the [inaudible].
>>: [inaudible] zero. As we increase the density of fog, glows appear. Artifacts in the
glows in this and subsequent clips are due to video compression.
As we decrease beta, the glows become smaller and as we increase beta they become
larger.
>> Srinivasa Narasimhan: Beta is just the density of fog.
>>: Because of the attenuation of light from further sources the glows become smaller as
we move farther away.
>> Srinivasa Narasimhan: So ->>: Why does [inaudible] blurry [inaudible].
>> Srinivasa Narasimhan: Yeah. This is just a CG scene where there's no depth of field
of fact or anything. So this ->>: I thought the fog would see some blurry effects.
>> Srinivasa Narasimhan: Right. So in this case what we are showing is just from the
light source. We are not changing anything with the scene yet. So that's a good point.
The next step is to try and understand the effect of surface shading, okay? So we looked
at how light rays goes from the source to the viewer, now we need to look at how they go
from the source to the surface. Right? So here again you have this sort of 2D set of
integrals, right? And what we can do for example is you can take a BRDF and
decompose it into let's say diffuse and specular that is always done in vision and then
you can compute precompute tables the texture maps for each of these components.
Okay? So if you have a measured BRDF that has, you know, different components and
spherical harmonics, you can do one for each, right?
So again, you will of a set of tables that you precompute, could be two in this case, and
then you start rerendering again. Okay? So I'll just show you that video.
>>: Our model can also be used to interactively calculate the change in surface shading
due to scattering for the first time. Here we show a vase with both diffuse and specular
components under clear day conditions. First we see a brightening of dark regions at the
bottom as we increase the scattering. Note that our method is fully interactive allowing
light sources, viewpoint and geometry to all be moved arbitrarily. Here we move the light
source seeing the changes in shading.
We now decrease beta to return to clear day conditions. As we increase beta again note
the diffusing of specular highlights due to scattering, followed by the dimming of the
overall intensity due to attenuation.
>> Srinivasa Narasimhan: So that's sort of just showing what happens locally on a
surface, the highlights get wider, they get dimmer, and the shadows become brighter.
Okay? Yeah?
>>: The first video that you showed of a lamp post for the light source. Like one of the
lamb post would include the light source for a certain pixel essentially.
>> Srinivasa Narasimhan: Are you saying ->>: [inaudible] when you have a foggy situation you have these like lines in the fog
where a --
>> Srinivasa Narasimhan: Right. Right. So if you had just a small field of view for
example for the point light source. Right. So that's a much harder problem to deal with.
So here we are assuming it's a blind light source.
>>: Okay. Invisible everywhere.
>> Srinivasa Narasimhan: Yes. So we did some experiments, for example you have -you can come up with simpler approximations to create those shadow lines in fog. But
the traditionally you start with a point light source and then you cut off the angles that
way. So, okay, so the full model looks like this. So you have the first model that looked
at the glows around light sources and you have the surface shading. Okay? So you
have three lookups basically, just in terms of computations for one for -- two for the
BRDF, one for the air light, okay? So if you can back to our original setting where you
had a 644 AD image and four light sources, you have this many lookups and this many
analytic computations where you had this as a number of pixels, number of light sources,
and this is the number of terms that approximates the face function. Okay. So it could
be one or two in general.
So bottom line, this becomes 15 million instead of 1.9 trillion. The nice thing is there is no
reduction in accuracy. It's exactly the same integral solution. Okay? But arrived at much
faster. Okay? So let me show you a video which includes all of this.
>>: We have seen the types of effects our model can produce. We now show how these
effects can be combined in a scene with complex geometry and four light sources.
Again, we start with clear day conditions. Now we increase the scattering coefficient beta
of the medium. As we decrease and increase beta, we clearly see effects like the glows
around light sources and the change in shading on the vase and pillars. We can also see
how the appearance changes as we modify the intensity of individual light sources. Now
we show a comparison to the open GL fog model. That model does not capture effects
like the glows around light sources or the effects of scattering on surface appearance.
We can change our viewpoint and move around the scene interactively. Here we walk
through the corridor in realtime.
>> Srinivasa Narasimhan: So that was sort of an example where you have a complex
scene about a hundred thousand triangles and most of the computations ask for
rendering the scene itself and not for the fog, okay?
So and also we showed several different applications where if you want to do a
precomputered radiance transfer how would you include fog in it? If you had a [inaudible]
map of lighting how would you change the convolution that is there for lighting between
lighting and surface radiance you have fog in between, right? So you could write it as a
convolution between the lighting fog and the surface. Right? So there's several
applications that we showed by just, you know, using this kind of an integral. So this
point let me sort of -- oh, this is one thing that I always like to show that this is the entire
code that is required to do this. And so that makes it very easy to include it in your
shaded code or fragment shader for example and add fog and haze to videos and
realtime. Okay?
Yeah, okay. So basically this was just -- you know, this was done in 2005, and I just like
to show this because this gives you a way of how to computationally efficiently render
things. But there's been a lot of work in trying to render volumetric scattering for example
by Hendrick [phonetic], you know, subsurface scattering and so on. Where
computational complexity may not be the issue but you want to create beautiful looking
pictures. Okay?
So there's been significant progress in that domain, which could be smoke rendering,
wine, and things like that. But the next topic that I'm going to discuss is this issue of how
to get the parameters for these renderings. So for example, what are the optical
properties of wine or smoke, for instance, right? What are the numbers that you need to
input to your algorithm to get those nice pictures?
So typically the accuracy nowadays is limited by the input parameters itself. Just like in
vision, there's been a lot of work in measuring BRDFs, for instance, right? So you want
to get as realistic as possible to the real world surface you want to measure the BRDFs.
So here unfortunately in volumetric scattering there's not much work, okay? So there's
no table that I can go to in physics literature and plug out numbers from there for the stuff
that we are interested in. Okay? So what we did was we tried to come up with a
technique to measure the optical properties of liquids. Very simple setup. So you have a
camera that's looking at a glass tank. So the glass is all antireflection coated so it doesn't
have stray reflections. You have a bulb in this tank that is precalibrated so we know the
radiance of the bulb in all different directions. What you do is you fill this thing with the
liquid that you want, okay?
So we did experiments with lots and lots of things. We went to the local supermarket and
we got, you know, wines, beers, Cokes, everything. Okay. So my student was working
on this, really loved this project because it was 23 liters of four different kinds of wine or
something. So this things hold about 23 liters of the liquid.
Now, one thing to note is that if you fill this thing entirely with let's say milk, you would see
anything. So light transport at a basic level you can think of it as blurring the incident light
field, right? If you blurred it significantly you can't recover the property as well. Okay?
So that's one of the major problems in light transport analysis and it's -- you know, it's
been studied in physics for a long time, so if you look at milk here and you have the light
source there, you don't see the shape of the light source at all. And you were talking
about the blurring. Just completely blurs out. Okay? So estimating things from such an
image is ill-conditioned, and it doesn't have to be unique as well. Okay? So it's a much
harder problem to try to invert this.
So what we tried to do is we wanted to side step this problem completely. And measure
the liquids in a state where light transport is simpler. Okay? And one way to do that is to
actually dilute the liquid. So if you dilute the liquid significantly or enough, you would be
able to still see sort of the shape of the light source. It's not enough blurring there. But
you have enough signals so that you can estimate the properties. Okay? So let me
show you a video here of milk in this tank as I'm increasing the concentration. Okay? So
we have filled this tank with water and we add little by little milk to it. Okay?
So that's -- sorry. That's the video. And you can see as the concentration is increasing
you can see the light source shape even now, but then it becomes more and more
blurred. Okay? So until the point where you can't see anything and everything is
washed out. Okay?
So the idea is to dilute media sufficiently, okay? Now, of course this word sufficiently is
the catch phrase in some ways, right? How much do you dilute? How much do you, you
know, milk you require a lot to dilute. For example, wine doesn't scatter much, so you
don't have to dilute much. Okay? So we came up with the technique to do this. I'm not
going to go into the detail here, but let's for now assume that, you know, you can find out
how much to dilute and then we have this kind of an apparatus, so focus your attention
on this ray diagram that I'm going to show here. And this is a typical image that you
capture, okay?
So if you look at a single scan line, this corresponds to a plane in the 3D box, right? And
if you look at this single point, the brightness of this point is a result of an integral which is
similar to the integral that I talked about in the first part. Okay?
>>: Are you [inaudible].
>> Srinivasa Narasimhan: No. Doesn't have to be point light source. So here we are
just going to try and find the integral due to the rays that are going out from the source.
So it could be done purely numerically. We don't have to use the exact same model that
we used before. So a single intensity is a result of that integral. And if you scan this line,
you're measuring all these different kinds of rays. Okay? You're measuring different ray
lens and the angles of turn. So a single image, now if you scan from top to bottom would
be all these angles, right? So a single image contains a lot of information, contains a
whole range of scattering angles, it contains a large range of [inaudible] of light rays,
right? And you have combinations of these.
So every pixel is giving you that information. Okay? So a single image has redundant
information, okay? And what we showed in this work is that you could -- if sufficiently
diluted, you could recover the parameters of the problem uniquely. Okay? So that was
sort of the contribution of this work, that you could invert single scattering expressions.
So then we went out and we got lots of different kinds of media. So alcoholic beverages,
different kinds of coffees, fancy coffees, simple coffees, different kinds of milks, juices,
soft drinks. We also got detergent and shampoo, anything that we could lay our hands
on. And more seriously, we wanted to study ocean water itself. So this experiment I did
when we went to San Diego during CVPR 2005, I think, and we got in -- we carried this
class tank to the hotel room and we got water there and we tried to measure ->>: Do you have any problems with the water being too clear or any [inaudible] being too
clear?
>> Srinivasa Narasimhan: So I'll show you a space, the full space of the liquids and you
have very clear and where you have murky and really murky and so on, right?
So ->>: But if [inaudible] pretty clear, would it need a really big tank to get kind of that subtly?
>> Srinivasa Narasimhan: Right. Right. Absolutely. But the thing is that -- yeah of
course. The image that you capture is not a single image, right? So you capture a series
of photographs for different exposures, linear lies it, get the best possible intensity
resolution and so on.
So we typically work with 20 bits, effectively 20 bits of resolution. So, you know, these
are some of the images that you get for different kind of media. And you can see the
different amounts of glows. You can see some of them don't have any glow, it's an
attenuation, different colorings and so on. Okay. So here's the set of images for just
scattering media. So, you know, expresso, cappuccino, orange powder, that's Tang,
milk, we know that it scatters.
But I don't know why one would want to find this out, but pink lemonade power also
scatters quite a lot. Okay? So on the other hand, you have images like these where you
don't have much glow, there's not much scattering but just attenuation. Okay? So this
could be the chardonnay wine, the Merlot, the Cokes or the grape juice and things like
that. And ocean water doesn't scatter that much, unless you have a lot of impurities in it.
Okay.
>>: [inaudible] brown sugar or [inaudible].
>> Srinivasa Narasimhan: Right. So there's an alignment problem and you capture a lot
of images. So it's just a issue of high dynamic range alignment.
>>: And you can't compensate for that?
>> Srinivasa Narasimhan: We try to do as much as possible to do it. But you know, that
doesn't turn out to be that much of a problem. So for this one you don't really care about
the exact boundary. If you have pixels here, you are fine.
So if you want to plot all the liquids in this single plot where on one axis you have the
scattering power, on the other axis you have the absorption power. Okay. So we know
that milk's scattered quite a lot, absorb less, right, so you could have -- on the other end,
you could have wines and Cokes that absorb quite a lot but scatter less. You could have
obviously the chardonnay Coors light would not do anything. Sprite would not do
anything. So it's very less absorption, very less scattering. And there's this middle class,
if you will, that has modern amount of both scattering and absorption.
>>: [inaudible].
>> Srinivasa Narasimhan: Yes. So it depends on how many of these spoons you put in
this.
>>: Right. So [inaudible].
>> Srinivasa Narasimhan: Right. So that's normalized for the concentration. So
everything is normalized for the concentration. So the concentrations you can basically
get the parameters out and then you can extend it to whatever concentration you want.
That will be more scattering or less scattering.
>>: Does the orange juice really have that much of a -- it's clearer here than [inaudible]
orange juice actually looking like -- is that just because ->> Srinivasa Narasimhan: So this is an orange powder. We have just put a couple of
spoons in it. So it's not as much as orange juice for example.
So you know, the sort of idea here show the table of numbers that we had in SIGGRAPH
paper where we have the parameters see, the way to read is this you have the
coefficients that are related to extinction or absorption, the coefficients that are released
to scattering and these are parameters of this phase function, okay? And each one is for
R, G and B. Okay? So you have 9 numbers that you need to input to any algorithm.
Okay? And then you can render with any favorite, you know, volumetric rendering
algorithm.
>>: [inaudible] roughly speaking yet it's the [inaudible].
>> Srinivasa Narasimhan: Yes. Yes. So it's just like the BRDF but it's one parameter.
Okay. So most of the phase functions for example, if you see most of them are point 9 or
point 8 or something, so that means that mostly forward scattering and elongated.
>>: [inaudible].
>> Srinivasa Narasimhan: What is that?
>>: [inaudible].
>> Srinivasa Narasimhan: Oh, yeah, I mean it's -- so either it was totally unreliable that
way, the scattering coefficient is zero there. So the scattering coefficient is giving you the
integral of the phase function. It's like the [inaudible] of the surface, okay?
So if the scattering coefficient is very low, that's meaningless in blue.
>>: So Coke and Pepsi pretty much absorb all the [inaudible].
>> Srinivasa Narasimhan: Right. Right.
>> Srinivasa Narasimhan: So, anyway, just to say that the measurements were actually
very accurate in terms of you get most of them with one or two percent error with respect
to the measurement that we have made. So let me show you a few renderings. So the
renderings I'll show you are with cognac glass with the liquid in them and illuminated with
this kind of a kitchen and one [inaudible] map. Okay? So the first couple of them are the
wines. We have the Merlot and the chardonnay, so you have the deep red color, and you
have this sort of see through chardonnay, and you also have to look at the caustics, for
example. So this doesn't have that much of a caustic, although there's this faint red thing
because most of it is absorbed. Okay? So here the caustic is much brighter because
you can see through it. Okay?
So you can do different kinds of liquids. So this is England here, which is brewed in Ohio
and I was for the longest time I thought it was Chinese beer because it was one of my
Chinese under grad students would do this experiment. But of course this doesn't have
the fizz and so on that usually comes from beer or Coke, for example. But you can see
the color of Coke is different from the color of wine for instance. Right? So and this one
is skim milk. Okay? So you can see sort of the soft appears of milk.
Now, just to show you these colors a little bit better, I'm going to render them in sort of an
artificial environment where you have a single light source, very strong light source. And
just focus your attention on the caustics. So here you have the beer, can see this sort of
bright orangeish caustic and you have a very kind of a caustic for Coca-Cola. So
depending on the absorption properties. So the fact that we need to get these absorption
and scattering properties very accurate is that if you actually get them wrong in the
second decimal place milk would appear pink. Because remember what we are doing is
we are sending out a million photons through the volume and scattering them individually.
If you get those scattering things wrong, eventually you'll get everything in a different
color. Okay? So getting those parameters was very crucial and that's sort of the
contribution in this work in that, you know, people could have input some random
parameters but you couldn't tweak them, you have to wait for a day or so to get an image
back. So you can't just do this heuristically. So here's wine and orange powder. So this
is some random concentration of the orange powder. And we did, you know, diluted
strawberry shampoo, and this is detergent and [inaudible] so you can see all of these
nice red and blue caustics.
And finally since you have the parameters you can play games like you can add 75
percent espresso and 25 percent milk to make it light brown coffee, right? So the idea is
to not blend the images but to actually blend the parameters. So that is the physically
correct thing to do. So you're mixing the media. All right. So -- and I don't know why one
would want to do this, but so in this case we are averaging wine and milk, but we are not
assimilating any other chemical processes for curdling and things like that, but just as a
fun thing.
So here I wanted to show smoother transitions. We didn't want to go from water to wine
but the opposite direction. So let's -- so you should see in this video it starts with wine
and it slowly dilutes. So you can see as it dilutes the caustic comes up and it becomes
pure water in this case. So all we are doing is just decreasing the concentration in
parameters.
And then it becomes sort of murky and then it turns towards being milk. So again the
caustic disappears. And then finally it goes from milk to being light brown coffee and
then after all the milk goes away it will become espresso. Now, you can see some of the,
you know, noise and the rendering. So that's because you have to allow it enough time
to get to that level. So, you know, you render these things for two days and then you lose
patience and you show that thing. But you it's a really computationally challenging
problem to do this in realtime. Okay. So just to sort of summarize this idea, we
measured the parameters at these concentrations, so this is diluted wine, this is sort of
murky water looking, this is milk. So that's beer and that's Merlot. And these are the real
concentrations. So once you measure them, then you can increase them. So you can
see the really soft appearance. And this is I think hundred percent fat milk. So we can
see they really take soft appearance of milk. Okay. So here we looked at, you know,
modeling and then measurement. Now I'm sort of switching gears on to try and do
interpretation for vision applications. So during my PhD I worked on this notion of vision
in bad weather, taking images passively and then trying to remove the effects of weather.
So the nice thing to note that is that simple image processing techniques will not work
because the effects of weather depends on the distances. Right. So as a bi-product you
also get 3D measurements from fog. Okay?
So assuming that the fog is uniform. Okay. So here what I'm going to be talking about is
going underwater. So you have active illumination. So either it's at night or underwater
where you don't have natural illumination where you can control your own lying. Okay?
The previous case of passive imaging was that, you know, you're stuck with whatever
you have. The image is completely blurred out due to fog, you cannot do anything about
it, right? So if you have control over the lighting, you should be able to illuminate the
scene in a more intelligent manner so that you can see far ahead. Okay?
So one of the things that you should know is that you can't just use a very bright light
source underwater where it's flood lighting the scene. So you have light rays going
everywhere and everything comes back at you. Okay? So flood lighting is a bad idea.
You can't really see anything there. So this is the reason for that is that you have the
sensor viewing volume and you have the lighting viewing volume that is intersecting here
and that's lighting up, right? So if this becomes larger, your contrast goes down. Okay?
So a recent technique by [inaudible] there was a very nice paper where I'm sure you guys
have all heard about it, this is using high frequency illumination to remove global effects.
To get direct. But that doesn't really work that -- theoretically it's fine, but it didn't do that
well a job, you know, in this case because if you think of spatially varying this lighting, still
the common volume is big okay. So for example I'm going to show you an image where
this is flood lit and just placing, you know, contrast chart and you have some dilute milk in
between and you're capturing the image, everything is just really bad and there's no
contrast, and if you do this direct global separation, the direct image looks like this. It's
really noisy because what you're trying to do is you're changing the on and off pixels,
right, but nothing much has changed in the image. So it's like subtracting two large
numbers. You get noise. Okay? So and the final -- the image we're just -- you know, the
global component would just look like the original image itself, like a flood lit image.
Okay? So what we want to do is to not actually spatially throw out light in all directions
but a better idea is to actually focus light in one sheet and then scan it. Okay?
So in that sense, your viewing volume intersection decreases. Now of course this
increases the time of acquisition for sure. And it also says that if you have noise in your
sensor, you need to have more integration time, right, so that you just have a small piece
of light, right, if you don't have enough power.
So it's a trade-off between how much acquisition time you are willing to sacrifice for
accuracy. So what you can do is so this brings us to the point of using light stripe range
finding underwater, okay? And this is for a long time in underwater imaging people have
been trying to use light striping but have not been successful because of the scattering
effects, right? So if you look at light striping and in clear air, right, so you have a sheet of
light hitting the object, and a then you have this sheet scanned across, right, and you find
the intersection typically it's very easy, you threshold and you find this intersection, you
can reconstruct the surface.
But if you look at what happens in a scattering medium, so the light plane itself lights up
beautifully, okay. So this is the scene that you would -- you know, if you go to a movie
theater and you see the projector beam itself, right? So that is what is happening. So
you have a light plane that is lighting up and then you sort of scan it along, and one of
those light planes look like this. If we try and model the brightnesses along this light
plane using the scattering and then try to find this intersection, you can create a template
to detect the intersections more reliably. Okay. So this is much better, for example, in
comparison to a floodlet image like that, right?
So what you can do is so you can write the equations exactly as in the first couple of
parts, so you look at a single light ray that is going through the medium and you have
attenuation along X and Y and you have the same alpha, right so. In the first part it was
K of alpha, here it's P of alpha. But it doesn't matter. It's exactly the same equation.
And then you have -- so in the phase function you could write it as a one-parameter
function, so P of alpha could be replaced by something like that, where G is your
parameter. Okay. So another thing you need to think about is that this light goes and
hits the surface and you see this bump. And then that radiance gets attenuated by this
distance. Okay?
So these are simple equations for the scattering. And you combine the two. So you have
something that is going like this and then you have a bump. That's what it is. So if you
look at it in terms of a plot, so when there's no scattering, you don't see the light plane
itself, you see a delta function, right? And then as you increase the scattering, you get
those things, right? Now, of course you can use this falloff to find the medium parameter,
exactly like we did in the previous part, okay? So you can do that and 3D by triangulation
or temporal analysis is similar to what you do in clear air, once you detect those
intersections. Okay?
So the medium parameters -- yeah?
>>: I have a question. The image where it says no scattering, why are we seeing
something that looks like flowers to the right of the screen?
>> Srinivasa Narasimhan: Right. So there's some kind of an interreflection, and you
know, it's water, but it's -- it has a little bit of scattering. So ideally, you should see a
black image.
>>: Okay.
>> Srinivasa Narasimhan: So you have let's say this stripe is very bright and it's actually
sending light rays out to another object and there's some interreflection as well. So once
you get these parameters, then you can sort of, you know, create a [inaudible]
appearance of the scene, so you can undo what has been decorated, okay.
So let me show you a video for that.
>>: When you have scattering [inaudible] won't that be more of an issue?
>> Srinivasa Narasimhan: Yes. Interreflections will be an issue. And in this case, we
are sort of ignoring interreflections. We are only looking at scattering in the volume,
okay. Interreflections across the scene points will be an issue and that's my last part of
the talk. Okay.
So here let me just show you a video.
>>: Our light stripe range finding experiments were done using a glass tank filled with
scattering media such as dilute milk, a projector and a video camera. The desired
objects are placed within the medium. The calibration ->> Srinivasa Narasimhan: So I think calibration is quite straightforward, but ->>: When the tank is filled with dilute milk, the adverse effects of scattering are clearly
seen in the floodlet image of the scene. Now we show light stripe scanning in dilute milk.
Notice the light plane itself becomes brightly visible [inaudible] ->> Srinivasa Narasimhan: This video didn't do justice to how beautiful it looks in the real
world and [inaudible].
>>: -- the intersection of the light plane ->> Srinivasa Narasimhan: [inaudible].
>>: -- thresholding. Our algorithm detects the intersections reliably despite this
rescattering and reconstructs the 3D shape of the scene.
>> Srinivasa Narasimhan: And this is, so the idea is not to create 3D reconstruction that
much as it is to remove the effects of scattering. Okay? So as long as you get sort of
approximate depth, you're fine.
>>: In addition it computes the appearance of the scene without any scattering effects as
if seen through clear air. Here we show a harder example with higher milk concentration.
Notice the significant back scattering and loss of contrast in the floodlet image. We now
show the light striped scan. Notice that the intersections of the stripes with the objects
are very dim and are almost invisible towards the end. Even in this case our methods
performed very well due to strong attenuation of the light planes and the dull reflectants
of the green cup the handle of the cup is virtually invisible in the input video and hence is
not detected.
>> Srinivasa Narasimhan: So basically this is trying to show what the limitation is. If you
increase the concentration significantly you don't have any light going to the scene, right?
So that's sort of the limitation. But at least compared to flood lighting it increases the
visibility by at least three times. Okay?
>>: We now show our results for a second scene consisting of a doll ->> Srinivasa Narasimhan: So here's a scene where there's lots of blooming and
[inaudible].
>>: The light striping video of the scene shows complex blooming or blurring effects
[inaudible].
>> Srinivasa Narasimhan: So as long as you can detect this better, then you're fine. So
these are white -- sort of whitish objects so you have a lot of [inaudible].
>>: Again, our algorithm successfully removes the effects of scattering as shown on the
right side. We now show the 3D reconstruction of this scene.
>> Srinivasa Narasimhan: And there's no smoothing or anything done here. So every
pixel is just reported just like that. Okay. So, you know, that was one particular
application. And we showed it as part of the same paper also how to do photometric
stereo, and it turns out instead of using three light sources you need five light source
positions to do photometric stereo of land version surfaces underwater. So that was the
result there.
Okay. And that's that. Yeah. That's the video is done. Okay. So this is just to show an
example of a floodlet image versus what you can get if you're willing to wait until you can
scan. But these scanning things can be done pretty fast, okay.
>>: And when you said photometric stereo that, was with the scanning light or you
actually ->> Srinivasa Narasimhan: Yes. Just distant lighting. Exactly the same situation as
before.
>>: And the flood lighting wasn't disturbing things?
>> Srinivasa Narasimhan: So it goes very far away. So it wasn't really close by and, you
know, shooting out rays in all the directions. We made it a columnated source. Yes.
Yeah, that is much of a toy example. This is actually being used underwater now. So
they use the model and they try to do the mapping of ocean floors and reconstruction and
so on. But photometric stereo is much more of a toy example, more of just a vision
theorist that instead of three you need five, because you have more information through
the medium. And it also depends on the depth.
>>: I'm curious [inaudible] like the laser or anything similar instead of [inaudible].
>> Srinivasa Narasimhan: Again, this could be a laser sheet, so you could have a laser
beam with a cylindrical lens and its [inaudible] sheet. So the light source, in this case we
used the projector, but it could be any other.
>>: [inaudible].
>> Srinivasa Narasimhan: Point would just make it, you know, you have to scan it in 2D
and of course the brightness of a single point would be much lower. The power required
much lower -- would be much lower.
Okay. So final -- just one side note as to how to place the light source and is sensor.
And this is a recent thing that we found out that, you know, it's not just that scanning
sheet of light is important but where to place it. Okay? So if you look at the same old
diagram where you have a common [inaudible] volume, you could place the light source
close by. That increases the volume, right? Now, typically in underwater imaging what
they said was place it as far as possible. But there's also the issue of noise. Right? So
if you place it very far you have attenuation and you have noise. So it turns out that there
is a an optimal solution to where you need to place the light source for a given visible
constraint.
So tell me that you want 20 meter visibility, I'll tell you exactly where to place the camera
and the light source. Okay? So you're just trying to optimize for the best image contrast,
which is contrast times the signal to noise. All right. So this would be, for example, just
an example here you have a glass tank with the dilute milk in it and you have a camera
and the light source, you see pretty much noise, okay. So if you place it in the right
position, without having to do any processing, you get a much better image. Right? So
to try and control light transport before image formation is a very important thing in
underwater imaging. Okay?
So this was with a point light source. But you could do this with a -- you know, a lasering
striping for example. And you could get some kind of a strategy for striping. So it could
involve both translation and rotation. Okay? And you get a much, much better image -this is the acquired image. So it's not processed or anything. So of course you can see
some of the vignetting effects and so on, but this image you can see all of the characters
and the -- you now, the contrast gradings much better. Okay?
>>: [inaudible] in the right place?
>> Srinivasa Narasimhan: No. Turns out not. So depends -- the answer -- the short
answer is it depends on the amount of fog. So this is what I'm talking to Honda, and they
want to actually move the fog light around adaptively. So given ->>: [inaudible].
>> Srinivasa Narasimhan: Huh?
>>: [inaudible].
>> Srinivasa Narasimhan: What is that?
>>: It would actually move on the car, like dynamically.
>> Srinivasa Narasimhan: Yeah. So the lights are just placed statically, right?
>>: Uh-huh.
>> Srinivasa Narasimhan: So the driver is here and depending on the fog, you can
actually move it around to see much better. So there's no imaging involved here. So if
you just tell the -- you know system how much farther you need to look at. Now, of
course you can't do this for all situations because some solutions may turn out to be that
the light source would be outside the car, right? And that you can't do. But it's interesting
to note that, you know, if you can just play around with the positions of the fog lamps you
can see much better.
>>: So is there an explanation about why certain angles are better than others?
>> Srinivasa Narasimhan: So it's not in terms of this actual scattering property, it is
because the fog sort of back scatters quite a bit. So it's better to have an angle, for
example.
>>: Okay.
>> Srinivasa Narasimhan: Right. So instead of having the light source right in front of
you. So most of the light actually comes back to you of the.
>>: So it's better to have an angle?
>> Srinivasa Narasimhan: It's better to have an angle.
>>: [inaudible].
>> Srinivasa Narasimhan: Yes. That's the reason fog lights are actually -- well, the
reason fog lights are lower is because there's not much fog on the ground. So you have
fog layer that is sort of hanging in the air and the light sources are actually below the fog
layers. That's the reason they're placed so low. But the angle, the separation angle, just
like in stereo you have the two angles and you have a smaller value.
>>: Right.
>> Srinivasa Narasimhan: Right. It's exactly that principle. Now, with that assumption
you could place it very far away.
>>: Right.
>> Srinivasa Narasimhan: But that's not going to work because you have attenuation of
light.
>>: But right now the headlights were placed on the outside, right?
>> Srinivasa Narasimhan: Right.
>>: So you're saying further is better, why would you ever want to have them moved
closer.
>> Srinivasa Narasimhan: That's because if you had lighter fog, for example. So the
denser fog you might have to place it slightly away a little bit. Lighter fog. So it depends
on the density of fog.
>>: So under lighter fog you'd have less back scattering?
>> Srinivasa Narasimhan: Right.
>>: But what advantage do you get by moving the light closer the to the viewer?
>> Srinivasa Narasimhan: Because you have more sort of direct illumination of the
scene. Right? So if you had just one lighting that is going this way, you want it straight
ahead, right?
>>: Is it because of shadows or back ->> Srinivasa Narasimhan: So you want to -- so what you want to do is you want to get
most of the light to the scene.
>>: Yes.
>> Srinivasa Narasimhan: Right? So as the ray is going, it's attenuating. Remember.
So you want the shortest possible path to the scene that is closest to you to get the
maximum ->>: This is [inaudible] one over R squared ->> Srinivasa Narasimhan: One over R squared times E to the power minus something.
>>: Okay.
>> Srinivasa Narasimhan: So one over R squared is just without fog.
>>: Right.
>> Srinivasa Narasimhan: The E to the power minus something is with fog.
>>: Okay. So it's moderate for light amounts of scattering you're better off being closer.
>> Srinivasa Narasimhan: Correct.
>>: Okay.
>>: You might actually want to turn off the fog light that's closer to the ->> Srinivasa Narasimhan: Yes, absolutely, absolutely. Or even some vehicles have fog
lamps on top.
>>: [inaudible].
>> Srinivasa Narasimhan: Whether that's such a great idea, I'm not sure. But it's -- it
might be more of a style rather than ->>: [inaudible].
>> Srinivasa Narasimhan: So all of this is about just trying to optimize that expression for
a particular visibility. So if you tell me it is 20 meters, we'll try to place it so that you get
the maximum contrast out of it.
Okay. The final part I'm going to talk about is this is going to the previous parts where
sort of data two or three years ago. This is much more new. Here we are trying to think
about what kind of lighting that you want to use. So previously we looked at a point light
source or just a bulb, for instance, or just a laser sheet, right? So in this case, there's a
lots of applications in vision where you want to use a projector, a programmable light
source for, you know, there's been eight pro cam's workshops already for different
applications and so on.
So one of the issues with using programmable lighting, it's great because you can
program every pixel over space and time, but you have defocus, right, you have shallow
depth of field of projectors. Okay? So this is the first time we sort of studied the interplay
between the defocussed illumination and any global illumination present. Okay?
So you can enable algorithms such as depth from defocus, projector defocus or you can
enable algorithms that just direct global separation in the presence of defocus. Okay?
So let me show you what I'm talking about here. So if you look at this scene, right, so
this is, you know, a very bland looking scene. So you have -- but the materials are
complex. So this is a candle. This is a polyresin bust. This is impure marble. And this is
a V groove that is made of stretched cloth, okay? And this thing is sort of a clay pot.
Okay? That's the only simple material there, okay? So what you do is if you want to
explore defocus of the projector, let's look at just a point here. And you shine a pattern.
Let's say a -- you know, a pattern of stripes across. And the projector sends it -- sends it
out in a defocused manner on to that point, right, depending on the depth of the point.
Yes? So if you shift that pattern across, okay, so you can see that this pattern may be
better focused here than it is here. Okay?
So if you shift that pattern across the final brightness would be a convolution of the input
pattern times the defocus kernel. So this is well known. Right? But if you look at a point
on the candle which has subsurface scattering in it, right, so let's look at a point B, and in
that case you have not only defocus but you have subsurface scattering, so you have
light rays going into the surface and coming out, okay. So you have this additional
complication, if you will.
So in that sense, we showed in this paper that the scene radiance can be written
theoretically as the input light pattern can [inaudible] the defocus blur convolve with this
new global illumination blur kernel. That depends on the intrinsic properties of the scene,
the full 3D the shape, the material properties and so on. Okay? So if you just did that
from defocus by ignoring any of these interreflections or subsurface scattering and so on,
you would not have this stuff, right, you would just have a convolution of two things.
Now you think about for your transform of this you have a product of the coefficients.
And if you know the impact pattern, you can divide it out to get the depth kernel. And
that's how you do depth from defocus using active lighting. Okay? So if you do that, you
get an image like that. Clearly this is wrong because the candle is actually inside the part
and this is the depth of this part is the only thing that is accurate. So everything else is
wrong. Right? On so if you look at inter reflections, their subsurface scattering,
everything else is wrong. Okay?
So what we did was, you know, you have these two things acting together, subsurface,
interreflection with defocus, okay. So at first glance you would think that, you know,
adding another kernel is going to be -- is going to make the problem harder, right,
because there's two kernels, you want to convolve the, how do you separate them out
and so on. But what we found was that if you change, let's say, the focus plane of the
projector, then the defocus blur kernel changes much faster than the global illumination
blur kernel. Because the global illumination depends on the intrinsic properties of the
scene, doesn't depend on where the projector is, right?
So instead of doing this on one plane by shifting a pattern, you shift the pattern, move the
projector plane, do it in another. So what happens then is that this blur kernel remains
the same or nearly constrained. These things change and you can still get the depth out.
Okay?
So the two focal plane positions would be one let's say behind the surface. One would
be in front of the surface. And you compute DFD as you're moving the pattern. At every
pixel. So this doesn't require the scene to have texture or anything. This is pixel by pixel.
Okay? And you get DFD that looks like that. If you compute the photo transform of those
convolutions it's basically a product of three things. And the third thing remains constant
as you're moving the focal plane. Okay?
So you can sort of divide that out, and you get a depth measure that does not depend on
interreflections, subsurface scattering, volumetric scattering, nothing. Okay?
So here's an example. This is the example without to go this processing. So you get a
wrong result. And you can now see sort of the dramatic change. Because now you can
say that this depth is pretty close to this depth. Irrespective of the fact that the
subsurface scattering here is much larger than this.
>>: Darker is closer?
>> Srinivasa Narasimhan: Darker is closer, yes. I forgot to mention -- yes, so darker is
closer. So this is the back wall. You have the statue behind.
Now, of course here we're not trying to improve on the accuracy of depth from defocus.
So there is a particular accuracy associated with depth from defocus and that depends
on the aperture. Right. So what we are saying is that given that limit of accuracy you
can do much better in terms of subsurface scattering.
Here's another example. And what we want to do with this is to try and understand
translucency of materials, okay? So my student went out and got all different kinds of
candles and soaps. They're pretty much aligned at the same depth. But their subsurface
scattering properties are totally different. So you have different kinds of wax, different
kinds of pigments with wax and so on. Okay. Different soaps.
So here's what you get if you do the regular depth estimation, right. So this, for example,
is classified as the back wall, which is wrong, right? In fact, what you can think of this is
that it's not a depth map, but it's a translucency map. It's actually showing translucency
effects. Okay? But in our case you get that, which is much more uniform across the
different the materials.
So what we want to do is collect a lot of the materials and build a database and come up
with translucency factors, just like people did in the BRDFs where they came up with
surface roughness factors. Here you can think of translucency factors. Okay?
>>: Isn't that using just a -- like a [inaudible] aperture [inaudible] solution rather than
doing two different takes, rather than changing the focus?
>> Srinivasa Narasimhan: If you just change your aperture plane, you will not get that. If
you just change your pattern on the aperture plane, that's what you are saying.
>>: [inaudible].
>> Srinivasa Narasimhan: You will not get it. Because you have to change something
that depends on the depth of every scene point.
>>: So you can't make the blur [inaudible]. Okay.
>> Srinivasa Narasimhan: I mean, the only way to dramatically change one kernel or the
other is to move the focal plane.
>>: Okay.
>> Srinivasa Narasimhan: So here's another scene. So you have leaves and flowers,
you know, fruits and milk and so on. So I won't tell you how we get this sort of direct and
global component, so if you look at the global component, you can still, you know, by
factoring out global, you got the defocus, you can factor out the defocus to get the global.
Okay?
So here's an example of how to get the global component, irrespective of defocussing
effects. Okay? So this would not be possible by just applying freeze method. Okay. So
you can see that you know, the global component of milk is very high, the fruits, the
leaves, and so on.
So if you look at maybe a depth map obtained without assuming anything about light
transport you get this. So pretty much everywhere it looks wrong, actually. And whereas
this looks much better. So you have this, the milk at the same depth. This is much
behind and these are much closer to the point. Okay? So here's the final example. So
this is an example where you have something made of [inaudible]. This for example
interreflections here, very strange BRDFs, complex BRDFs. So just focus your attention
on the interreflections here.
So this is the incorrect depth map. So you can clearly see that this is wrong because of
interreflections. So you can see that there. And we're not doing any special processing,
it's just a pixel by pixel, it's just dividing two numbers. And you get that. So in this case,
there's no effect of interreflections either on that or this. Okay? So it's applicable to any
BRDF or BSSRDF. Okay? So at the end maybe -- how much time do I have? Have I
overshot?
>>: [inaudible].
>> Srinivasa Narasimhan: Maybe? One minute?
>>: Yes.
>> Srinivasa Narasimhan: Okay. Fine. Just switched on the light. Okay. So the last
thing I just want to very briefly mention, and this is work with Alusha [phonetic] and
Jean-Francois who recently received a Microsoft fellowship. Here we are trying to
analyze the appearance of the sky, okay? So envision we are interested in looking at,
you know, the scene for the right reason you want the right detectors and segmentation
and all of that. But nobody has really focussed on the sky, which in many cases could be
a big part of the image itself.
So if you look at just this part, you have an idea that the sun is coming from maybe the
right. Okay? So it turns out that if you try and analyze the appearance of the sky, which
is basically because of scattering of sunlight, okay, so you write the model for the
scattering of sunlight that is one already presented in the physics literature so you borrow
it, that depends on the view direction and the sun direction. And just like the
measurement part that I talked about, here you have lots of pixels with different directions
and so on. So you can estimate the parameters of the camera, right, with respect to the
sun.
So you can -- by looking at a sequence of images of the sky, let's say from a web cam,
and the sizes we all sort of done something with a single image, so if you look at a
sequence of images, you can find the [inaudible] elevation and the zoom of the camera
with respect to the lighting. Okay?
So just to show an example, here's a web cam. So you can see that the sun is
somewhere here. And it's going to move as I'm going to play this sequence. Where's the
sequence? Okay. So it's moving like that. So this is a camera looking east. Okay? So
you can see there's lots of clouds and everything, so you still can take advantage of the
blue part of the sky. And here's the estimated illumination with respect to the camera.
So for this, you need to know the timestamps, so you need to know when it was taken. If
you know the GPS, you get absolute orientation of the camera. If you don't know the
GPS, get relative orientation. So the sky is acting like a calibration target here. So here's
another example where the camera's looking west. And so the sun comes from behind
you and then sets in the evening. So you can see that it's set there. And here's the
actual geometry.
We initially when we did this, we thought this is not going to be that accurate. But we find
that it's surprisingly accurate, so it's about, you know, two percent or three percent error
with respect to ground true-up. Ground true-up we defined by doing another kind of
calibration where you're just looking at the sun positions in the field of view. So that
would be a straightforward calibration problem for a 3D to 2D match, you know,
projection. So we compared with that and we got very good results in that sense. And
so we -- we applied this for hundreds of the cams now. And we can do this very well with
single images if the image has enough information. The sky is big and the sun is not
totally behind you, you can do it better.
Okay. With this let me just quickly summarize that, you know, volumetric light transport is
a thing that has been ignored in vision for a long time for historical reasons. But I hope
that I convinced you that this can have implications for a variety of things, vision graphics,
you know, Shanick Engineering, and we did some, you know, research in medical
imaging of endoscopy, as well. And it's always used in astronomy and monumental
monitoring and so on. Thanks a lot.
[applause].
Download