Digital Visual Effects, Spring 2011
project #1: High Dynamic Range ImagingAssigned: 2011/3/10
Due: 11:59pm 2011/3/29
voting, artifacts, winning artifacts
Project descriptionHigh dynamic range (HDR) images have much larger dynamic ranges than traditional images' 256 levels. In addition, they correspond linearly to physical irradiance values of the scene. Hence, they are useful for many graphics and vision applications. In this assignment, you are asked to finish the following tasks to assemble an HDR image in a group of two.
1. Taking photographs. Take a series of photographs for a scene under different exposures. (As discussed in the class, changing shutter speeds is probably the best way to change exposures for this application.) For that, you need a digital camera that allows you to set exposures. You can use your own camera or borrow a Canon PowerShot G7 from us. If you need to borrow G7, please sign up here. It is suggested that you use a tripod when you take pictures. Again, you can use your own or borrow one from TAs.
One thing to note is that you should avoid touching your camera during this process so that all pictures are well registered. For Canon cameras, there are programs allowing you to set exposures and release shutter remotely, for example, Breeze system's PSRemote. Another solution would be to use AHDRIA for some models from Canon, but it is obsolete and not maintained since 2007. Cameras of other brands might have a similar solution for remote capturing, but you have to discover on your own. You are welcome to write down your findings for that matter in your report. When you borrow G7 from us, you can borrow a laptop with PSRemote installed from us as well.
If you decide to manually change exposures, it would help if you align your images before proceeding to the next step. You can probably try to use Photomatix. Otherwise, you are also welcome to write a program for alignment as bonuses. A good candidate is the median threshold bitmap we discussed in the class.
2. Write a program to assemble an HDR image. Write a program to take these captured images as inputs and output an HDR image and, optionally, the response curve of the camera. We provide a C++ image class called cmlib which supports I/O for many image formats for both unsigned-char images and float-point images. We recommend that you output your radiance map as a Radiance RGBE image (.hdr) or OpenEXR format (.exr). As discussed in the class, there are several ways for assembling a radiance map.
Here are several other options for tone mapping: Photomatix (algorithm unknown), logview and tmo (24 algorithms implemented). The following two tone mapping programs are for Linux only: Fast Bilateral Filtering and PFStmo (seven algorithms implemented).
Bells and whistlesStudents will get extra points if they implement any of the following extensions. Please note that bonus only apply after you have finished required part. For example, if you decide to implement another HDR reconstruction algorithm as bonus, you still need to finish the one mentioend above. In addition, the basic requirement for this project is pretty simple. It is strongly recommended that you implement at least one of these extensions.
SubmissionYou have to turn in your complete source, the executable, the original pictures you have taken, a recovered HDR image, a tone-mapped image, instruction to run your program and a report in an html/pdf format (including all resources). The report could contain a description of this project, what you have learned from this project, description of the algorithm you implemented, implementation details, results (either good or bad), and what extensions you have implemented.
You also have to submit your favorite artifact generated by the program you have implemented (not the reference software). For the artifacts for this project, submit the tone-mapped image. All class participates will vote for the top three artifacts. The creators for these artifacts will get extra bonus points. Look at others' HDR images for inspiration.
Please check out this file for details about how to submit your homework. If you have any questions, please contact your TA.