CS 766 Computer Vision Assignment 1: High Dynamic Range (HDR)

Saikat R. Gomes (saikat@cs.wisc.edu) & Stephen Lazzaro (slazzaro@cs.wisc.edu)


Contents

  1. Home
  2. Introduction
  3. Implementation
    1. Image Acquisition
    2. Simple Pixel Averaging
    3. Response Curves
    4. Tone Mapping (Matlab)
    5. Reinhard's Local Tone Mapping
    6. Reinhard's Global Tone Mapping
    7. Ward's Algorithm
  4. Results Comparison 1
  5. Results Comparison 2
  6. Results of Ward's Algo
  7. Datasets
  8. Code
  9. Git Logs
  10. References

Introduction

In simple terms, HDR imaging consists of taking a series of images of a static scene at varying exposures, and merging the best portions of each image in order to maximize the dynamic range for a photo of the scene. In order to construct HDR images, we implemented the algorithm that Debevec and Malik (1997) introduced along with the tone mapping algorithm described by Reinhard et. al. We also implemented Ward's alignment algorithm in order to handle the common problem of misaligned photos.

Some Of Findings
  1. We compared HDR images that we produced with those standard methods to what we call naive pixel averaging images, which are constructed by taking the average value of each pixel from all of the images used for HDR. As expected we found that the naive method did not contain a high range of colors even though most of the times they were more visually appealing to the eye that the input images.

  2. We also experiment with different tone mapping algorithms. We compared images between Matlab's tone mapping algorithm, and our implementations of Reinhard et al.'s local algorithm, and Reinhard et al.'s global algorithm. We found that Matlab's tone mapping generally gave better results than the Reinhard tone mapping algorithms. However, at times, Reinhard's tone mapping algorithm gave a much more realistic looking image than that of Matlab.

  3. We discovered that using Ward's algorithm gave much better results when we put the images through an edge filter beforehand (we used the Prewitt edge filter). Without using the edge filter, there was much more noise and the algorithm would return much larger faulty shifts for images.


Our Image (*.jpg and *.hdr) for submission can be found here