Digital High-Dynamic Range Photography
Nikolas Coukouma
What does "Dynamic Range" mean?
- How big a range, of brightness and color, can be represented
- It's a term that applies to graphics in general
- Recording/Capture
- Storage
- Editing
- Display
- It's also used in audio
- Related measurements
- Contrast ratio
- Bit-depth
- (F-)Stops
Ballpark figures
- Optimal contrast ratio
- Low
- 300:1
- High
- 50,000+:1
- Realistic contrast ratio
- Low
- 10:1
- High
- 100:1
- Bit depth
- Low
- 8 bit integers per color, per pixel
- High
- 32 bit floating-point per color, per pixel
Why do you want high dynamic range?
- Real life doesn't always accomodate low-dynamic range
- Humans eyes support high dynamic range
- More likely to get a get a usable image from one shot
- Bigger numbers are cooler!
HDR is not new
- Analog
- In 1915, Prokudin Gorskii used three black and white shots, with
filters, to increase range in color images
- Dodging and burning to cope with paper prints having less range than
original negatives. See W. Eugene Smith's "A Man of Mercy" from 1954
- Digital
- Jourlin and Pinoli's work in 1988. Mostly processing, but high
luminence values were stored
- RGBE format was created in 1989 for the Radiance lighting simulation
system
- Tone mappings have been done since the 1990s. See Tumblin and
Rushmeier 1993, Ward 1994, Larson et. al. 1997
- Improving dynamic range using multiple exposures dates back to Mann
1993
Why is there more interest now?
- Digital devices have finally caught up
- Cameras
- Are small
- Have a lot of pixels - 6 to 13 million!
- Can capture almost as much light as film
- Hard drives and flash memory have gotten bigger
- 512MB card costs $30 and holds 150 6MP JPEG images
- Same card holds about 35 HDR images
- Displays
- Went down in size with LCDs
- Also went down in image quality
- Have gotten big again (19" common, 30" not unheard of)
HDR now available
- Cameras
- Fuji's "Super CCD SR" (used in their S3 Pro)
- Storage
- OpenEXR
- TIFF LogLuv
- Floating point TIFF
- RGBE
- Portable Float Maps
- Editing
- HDRShop
- Idruna Photogenics
- Display
But what can I do today?
- HDR input and output are rare and expensive
- So, let's work with what we have
- Exposure blending
- Recovering HDR from multiple LDR
- Mapping HDR into LDR
- Backwards compatible format - JPEG/JFIF
Exposure blending
- At no point is there an HDR image
- Just blend parts of multiple LDR exposures
- Usually done by hand
- Simple in concept, but hard to do well
Recovering an HDR image
- The general process:
- Take multiple LDR photos, at different shutter speeds
- Figure out and adjust for problems with the images
- Images not aligned
- Cameras aren't perfect
- Combine them into one image, weighting by exposure
Imperfect cameras
- Cameras don't record extremely bright or dark images well
- Should be a nice power/gamma curve
- To adjust, apply a weighting function
Multiple LDR images
|
|
|
| 1/3 |
1/8 |
1/20 |
|
|
|
| 1/60 |
1/180 |
1/500 |
Luma frequencies
|
|
|
| 1/3 |
1/8 |
1/20 |
|
|
|
| 1/60 |
1/180 |
1/500 |
The resulting HDR image
- room.exr - OpenEXR format
- View using exrdisplay, Photosphere, pfsview
- This one was actually made from 18 exposures, from 1/750 to 1/2
- 6 exposures is more common than 18, but it depends on the scene
Mapping HDR into LDR
- Basic goal: make an image that 'fits' in an LDR format/display
- Aim to make it natural, as if you were there
- Called tone mapping
- Algorithms are called operators
- Many tone mapping operators exist with different motivations
Characteristics to consider
- Brightness
- Contrast
- Color reproduction
- Reproduction of details
- Simulation of glare
- Reproduction of detail
- Visual acuity
- Artifacts
Side by side
|
|
| Middle exposure |
Slice from HDR |
|
|
| Drago mapping |
Fattal mapping |
Side by side: luma
|
|
| Middle exposure |
Slice from HDR |
|
|
| Drago mapping |
Fattal mapping |
Backwards compatible JPEG/JFIF
- Apply a tone mapping to create regular 8-bit part
- Apply normal JPEG compression to tone mapped image
- Calculate the ratio image
- Divide luma of HDR by luma of LDR
- Wavelet compress ratio image
- Store in application data markers
- 16 available, 2 already reserved
- Each limited to 64KB
- 14 * 64KB = 896KB
Details get messy
That's all!
Questions?