38
High Dynamic Range Images cs195g: Computational Photograph James Hays, Brown, Spring 201 lides from Alexei A. Efros and Paul Debevec

High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

Embed Size (px)

Citation preview

Page 1: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

High Dynamic Range ImagesHigh Dynamic Range Images

cs195g: Computational PhotographyJames Hays, Brown, Spring 2010

slides from Alexei A. Efrosand Paul Debevec

Page 2: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

Problem: Dynamic RangeProblem: Dynamic Range

15001500

11

25,00025,000

400,000400,000

2,000,000,0002,000,000,000

The real world ishigh dynamic

range.

The real world ishigh dynamic

range.

Page 3: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

Long ExposureLong Exposure

10-6 106

10-6 106

Real world

Picture

0 to 255

High dynamic range

Page 4: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

Short ExposureShort Exposure

10-6 106

10-6 106

Real world

Picture

High dynamic range

0 to 255

Page 5: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

pixel (312, 284) = 42pixel (312, 284) = 42

ImageImage

42 photons?42 photons?

Page 6: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

Camera CalibrationCamera Calibration

• Geometric– How pixel coordinates relate to directions in the

world

• Photometric– How pixel values relate to radiance amounts in

the world

• Geometric– How pixel coordinates relate to directions in the

world

• Photometric– How pixel values relate to radiance amounts in

the world

Page 7: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

Camera CalibrationCamera Calibration

• Geometric– How pixel coordinates relate to directions in the

world in other images.

• Photometric– How pixel values relate to radiance amounts in

the world in other images.

• Geometric– How pixel coordinates relate to directions in the

world in other images.

• Photometric– How pixel values relate to radiance amounts in

the world in other images.

Page 8: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

The ImageAcquisition Pipeline

The ImageAcquisition Pipeline

sceneradiance

(W/sr/m )

sceneradiance

(W/sr/m )

òsensorirradiance

sensorirradiance

sensorexposuresensor

exposure

LensLens ShutterShutter

22

Dt

analogvoltagesanalog

voltagesdigitalvaluesdigitalvalues

pixelvaluespixel

values

ADCADC RemappingRemappingCCDCCD

Raw Image

JPEGImage

Page 9: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

log Exposure = log (Radiance * Dt)

Imaging system response function

Pixelvalue

0

255

(CCD photon count)

Page 10: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

Varying ExposureVarying Exposure

Page 11: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

Camera is not a photometer!Camera is not a photometer!

• Limited dynamic rangeÞ Perhaps use multiple exposures?

• Unknown, nonlinear response Þ Not possible to convert pixel values to

radiance

• Solution:– Recover response curve from multiple

exposures, then reconstruct the radiance map

• Limited dynamic rangeÞ Perhaps use multiple exposures?

• Unknown, nonlinear response Þ Not possible to convert pixel values to

radiance

• Solution:– Recover response curve from multiple

exposures, then reconstruct the radiance map

Page 12: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

Recovering High Dynamic RangeRadiance Maps from PhotographsRecovering High Dynamic RangeRadiance Maps from Photographs

Paul DebevecJitendra MalikPaul DebevecJitendra Malik

August 1997August 1997

Computer Science DivisionUniversity of California at Berkeley

Computer Science DivisionUniversity of California at Berkeley

Page 13: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

Ways to vary exposureWays to vary exposure Shutter Speed (*)

F/stop (aperture, iris)

Neutral Density (ND) Filters

Shutter Speed (*)

F/stop (aperture, iris)

Neutral Density (ND) Filters

Page 14: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

Shutter SpeedShutter Speed

• Ranges: Canon D30: 30 to 1/4,000 sec.• Sony VX2000: ¼ to 1/10,000

sec.• Pros:• Directly varies the exposure• Usually accurate and repeatable• Issues:• Noise in long exposures

• Ranges: Canon D30: 30 to 1/4,000 sec.• Sony VX2000: ¼ to 1/10,000

sec.• Pros:• Directly varies the exposure• Usually accurate and repeatable• Issues:• Noise in long exposures

Page 15: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

Shutter SpeedShutter Speed

• Note: shutter times usually obey a power series – each “stop” is a factor of 2

• ¼, 1/8, 1/15, 1/30, 1/60, 1/125, 1/250, 1/500, 1/1000 sec

• Usually really is:

• ¼, 1/8, 1/16, 1/32, 1/64, 1/128, 1/256, 1/512, 1/1024 sec

• Note: shutter times usually obey a power series – each “stop” is a factor of 2

• ¼, 1/8, 1/15, 1/30, 1/60, 1/125, 1/250, 1/500, 1/1000 sec

• Usually really is:

• ¼, 1/8, 1/16, 1/32, 1/64, 1/128, 1/256, 1/512, 1/1024 sec

Page 16: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

• 3• 3

• 1• 1 •

2• 2

Dt =1 sec

• 3• 3

• 1• 1 •

2• 2

Dt =1/16 sec

• 3• 3

• 1• 1

• 2• 2

Dt =4 sec

• 3• 3

• 1• 1 •

2• 2

Dt =1/64 sec

The AlgorithmThe Algorithm

Image seriesImage series

• 3• 3

• 1• 1 •

2• 2

Dt =1/4 sec

Exposure = Radiance * DtExposure = Radiance * Dtlog Exposure = log Radiance + log Dtlog Exposure = log Radiance + log Dt

Pixel Value Z = f(Exposure)Pixel Value Z = f(Exposure)

Page 17: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

Response CurveResponse Curve

ln Exposureln Exposure

Assuming unit radiancefor each pixel

Assuming unit radiancefor each pixel

After adjusting radiances to obtain a smooth response

curve

After adjusting radiances to obtain a smooth response

curve

Pix

el v

alue

Pix

el v

alue

33

11

22

ln Exposureln Exposure

Pix

el v

alue

Pix

el v

alue

Page 18: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

The MathThe Math• Let g(z) be the discrete inverse response function• For each pixel site i in each image j, want:

• Solve the overdetermined linear system:

• Let g(z) be the discrete inverse response function• For each pixel site i in each image j, want:

• Solve the overdetermined linear system:

fitting term smoothness term

ln Radiance i lnt j g(Zij ) 2j1

P

i1

N

g (z)2

zZ min

Zmax

ln Radiance i ln t j g(Zij )

Page 19: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

MatlabCode

MatlabCode

function [g,lE]=gsolve(Z,B,l,w)

n = 256;A = zeros(size(Z,1)*size(Z,2)+n+1,n+size(Z,1));b = zeros(size(A,1),1);

k = 1; %% Include the data-fitting equationsfor i=1:size(Z,1) for j=1:size(Z,2) wij = w(Z(i,j)+1); A(k,Z(i,j)+1) = wij; A(k,n+i) = -wij; b(k,1) = wij * B(i,j); k=k+1; endend

A(k,129) = 1; %% Fix the curve by setting its middle value to 0k=k+1;

for i=1:n-2 %% Include the smoothness equations A(k,i)=l*w(i+1); A(k,i+1)=-2*l*w(i+1); A(k,i+2)=l*w(i+1); k=k+1;end

x = A\b; %% Solve the system using SVD

g = x(1:n);lE = x(n+1:size(x,1));

Page 20: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

Results: Digital CameraResults: Digital Camera

Recovered response curve

log Exposure

Pix

el v

alue

Kodak DCS4601/30 to 30 sec

Page 21: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

Reconstructed radiance map

Page 22: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

Results: Color FilmResults: Color Film• Kodak Gold ASA 100, PhotoCD• Kodak Gold ASA 100, PhotoCD

Page 23: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

Recovered Response CurvesRecovered Response Curves

Red Green

RGBBlue

Page 24: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

The Radiance

Map

The Radiance

Map

Page 25: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

How do we store this?How do we store this?

Page 26: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

Portable FloatMap (.pfm)Portable FloatMap (.pfm)• 12 bytes per pixel, 4 for each channel

sign exponent mantissa

PF768 5121<binary image data>

Floating Point TIFF similarFloating Point TIFF similar

Text header similar to Jeff Poskanzer’s .ppmimage format:

Page 27: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

(145, 215, 87, 149) =

(145, 215, 87) * 2^(149-128) =

(1190000, 1760000, 713000)

(145, 215, 87, 149) =

(145, 215, 87) * 2^(149-128) =

(1190000, 1760000, 713000)

Red Green Blue ExponentRed Green Blue Exponent

32 bits / pixel32 bits / pixel

(145, 215, 87, 103) =

(145, 215, 87) * 2^(103-128) =

(0.00000432, 0.00000641, 0.00000259)

(145, 215, 87, 103) =

(145, 215, 87) * 2^(103-128) =

(0.00000432, 0.00000641, 0.00000259)

Ward, Greg. "Real Pixels," in Graphics Gems IV, edited by James Arvo, Academic Press, 1994

Radiance Format(.pic, .hdr)

Radiance Format(.pic, .hdr)

Page 28: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

ILM’s OpenEXR (.exr)ILM’s OpenEXR (.exr)• 6 bytes per pixel, 2 for each channel, compressed

sign exponent mantissa

• Several lossless compression options, 2:1 typical• Compatible with the “half” datatype in NVidia's

Cg• Supported natively on GeForce FX and Quadro FX

• Available at http://www.openexr.net/

Page 29: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

Now What?Now

What?

Page 30: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

Tone MappingTone Mapping

10-6 106

10-6 106

Real WorldRay Traced World (Radiance)

Display/Printer

0 to 255

High dynamic range

• How can we do this?Linear scaling?, thresholding? Suggestions?

• How can we do this?Linear scaling?, thresholding? Suggestions?

Page 31: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

TheRadiance

Map

TheRadiance

Map

Linearly scaled todisplay device

Page 32: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

Simple Global OperatorSimple Global Operator

• Compression curve needs to

– Bring everything within range– Leave dark areas alone

• In other words

– Asymptote at 255– Derivative of 1 at 0

• Compression curve needs to

– Bring everything within range– Leave dark areas alone

• In other words

– Asymptote at 255– Derivative of 1 at 0

Page 33: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

Global Operator (Reinhart et al)Global Operator (Reinhart et al)

world

worlddisplay L

LL

1

Page 34: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

Global Operator ResultsGlobal Operator Results

Page 35: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

Darkest 0.1% scaledto display device

Reinhart Operator

Page 36: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

What do we see?What do we see?

Vs.

Page 37: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

Issues with multi-exposure HDRIssues with multi-exposure HDR

• Scene and camera need to be static• Camera sensors are getting better and better• Display devices are fairly limited anyway

(although getting better).

Page 38: High Dynamic Range Images cs195g: Computational Photography James Hays, Brown, Spring 2010 slides from Alexei A. Efros and Paul Debevec

What about local tone mapping?What about local tone mapping?