= Assignment 5 - High Dynamic Range Photography = === Due Date: Thursday February 22nd, 11:59PM === ~+Questions? Check out the [wiki:self:Assignment5Discussion Assignment 5 FAQ and discussion page].+~ In this assignment you'll explore high dynamic range photography. You'll take your own photos, generate a high dynamic range image from them, and explore a couple of ways of displaying HDR images on low dynamic range displays. == Steps == === Download and build the starter code === 1. Begin by downloading the Assigment 5 starter code and latest version of the libST source [http://graphics.stanford.edu/courses/cs148-07/assignments/assignment5/assignment5.zip here]. '''Note that you must use the new version of libST, it has been updated since the previous assignment.''' 2. Build libST. Building libST should require the same steps on your development system as it did in previous assignments. A number of changes have been made to the code which are significant for this assignment. See the descriptions below for the full details of the changes, which you should look over and understand at a high level. 3. Build the assignment 5 starter code. The subdirectory {{{/assignment5}}} contains the starting code for your project. This directory should contain the C++ source file {{{hdr.cpp}}}. You will provide us your modified version of {{{hdr.cpp}}} as part of this assignment's handin. The directory also {{{response.h}}}, {{{response.cpp}}}, and some support code in the directory {{{/tnt}}}. You should understand the interface provided in {{{response.h}}} and {{{response.cpp}}} since you will use it in your code. You are not responsible for any of the {{{/tnt}}} code. Finally, we've provided {{{d40.cr}}}, a response curve file for the Nikon D40. If you use our cameras this file will work, but if you have your own camera you must generate your own camera response curve. See the instructions below for how to do that. 4. If you want to start working on the assignment before you get to take your own photos, download the sample photos and hdr images from [http://graphics.stanford.edu/courses/cs148-07/assignments/assignment5/assignment5_sampledata.zip here]. Note that part of the assignment, and your grade, is taking your own photos. We are only providing these so you can get started sooner. === Understanding Changes to libST === There have been a few changes to libST, but you are already familiar with much of the code. * STColor - This class has been updated with many overloaded operators and a couple of helper functions. Be familiar with what's available here. This is the representation we use for pixels in an HDR image, so most of your code will deal with this class. * STHDRImage - This class is analogous to the STImage class and has almost equivalent functionality. The main difference is that each pixel is an STColor. STColors are floating point and can take on any valid float value. However, when displayed, they will be clamped to [0, 1]. We've added an {{{operator()(int x, int y)}}} so accessing pixels uses the simple notation {{{hdrimage(x,y)}}} (which returns an {{{STColor&}}}. Note the same operator has been implemented for STImage. === Review of Camera Imaging and HDR === Input -> Output of camera, what is the response curve === Answer These Questions === '''(Please include answers to the following with your handin)''' 1. Describe your exploration of your device - how you did it and what you found - in detail. You should describe your joystick, what code you wrote to learn about it, how the inputs mapped to the STJoystick interface we provide, ranges of values returned, etc. === Taking Photographs === Two D40's, available 2 hours at a time, signup What to take pictures of, how to use the camera, # photos, range of shutter speeds === Creating an HDR Image === === Taking a Virtual Photograph === === Displaying an HDR Image: Linear Mapping === === Displaying an HDR Image: Tone Mapping === === Hints for Getting Started === == Grading == * 1 stars - * 2 stars - * 3 stars - * 4 stars - == Submission Instructions == We would like submission to be in the form of a single {{{.zip}}} archive. This archive should contain your modified version of {{{hdr.cpp}}}, a text file containing answers to assignment questions, and your photo stack. Please email this zip file to cs148-win0607-staff@lists.stanford.edu before the deadline. Please make the subject line of this email "CS148 Assignment 5 Handin".