HDR experiment in javascript

Image set:
Show:
Range:
Reinhard a:
Fattal α:
Fattal β:

Background

The HDR image is essentially a single idealized interpretation over a set of imperfect shots. The process begins by finding regions in all images in the set which are not overexposed. Overexposure is defined as having high values in any of the R, G, or B components. The not overexposed areas are then rolled into a single normalizing factor which should adjust the not-overexposed regions of all images to uniform brightness. As the final step, the images are averaged where not overexposed.

Once the HDR result has been established, it is necessary to display it. Displaying wide dynamic range images requires a compression algorithm, which is called tone mapper. Tone mappers can be split to two kinds: local and global tone mappings. I have implemented global Reinhard tone mapper and local Fattal tone mapper for this demo.

I must acknowledge the good work done for qtpfsgui as it served as my reference implementation of Fattal tone mapping. My implementation is quite similar multigrid approach but I am using Gauss over-relaxation, which seems to work just fine for solving the Poisson equation. Also, my prolongation and restrict steps are simple averages and pixel doublings.

Debug log