Last week Gretta and I drove down to Torrey Pines Beach in San Diego. There we took pictures of the beautiful 300 foot sandstone cliff that stretches for miles along the beach.
The purpose of these pictures is to serve as reference for the creation of a 3D environment. The 3D environment will, in turn, become a reference for the physical cliff set that will be built. Ultimately, the physical cliff set will be seamlessly integrated with the 3D environment.
To make the modeling of the 3D environment easier and photorealistic, photogrammetry will be used. That is, landmark points will be manually placed in several images of the cliff taken from different camera positions. Then the positions of the landmark points and the positions of the camera will be automatically solved in 3D. Low resolution geometry will be constructed using the landmark points as guides. Finally, the textures will be projected onto the low resolution geometry directly from the cameras.
Because the same landmark points must be visible in more than one image, I decided to find one picturesque area of the cliff and stick with it throughout the whole shoot. I walked around this one area of the cliff and took handheld pictures of it from different camera positions. I took pictures every half hour starting at 5:30PM and ending after sunset at 7:30PM. I readjusted my white balance and exposure after every half hour shoot.
Because the pictures will ultimately be converted into highres texture maps, it was important to get the highest quality images possible. Therefore, I bracketed all my shots by 1 stop. That is, each picture was 3 pictures: underexposed, properly exposed, and overexposed. At the end of the day I had over 500 pictures of mostly the same thing.
When we got home it was time to process all these pictures. The first step of processing was to align all my handheld bracketed triples. I found a command line program called align_image_stack.exe, part of the Hugin panorama stitching package. This program automatically warps the images so that they are perfectly registered. I wrote a Python script to run all 500 images through this alignment step.
The second thing I did was generate tone mapped images from my aligned bracketed triples. That is, each bracketed triple was converted into a single tone mapped image. Tone mapping is the process of squishing down the dynamic range of an High Dynamic Range image so that it can be viewed on a Low Dynamic Range device, such as a computer monitor or photo paper. Typically, to create a tone mapped image, the bracketed pictures would first be converted into an HDR image, and then the HDR image would be tone mapped to a LDR image. I tried this but was not satisfied with the results of the HDR tone mapping. I tried several different algorithms and played with the settings, but the resulting images were just not looking natural to me.
Just when I was about to give up on tone mapping all together, I found another command line program called Enfuse.exe, also part of Hugin. Enfuse generates a tone mapped image directly from the bracketed pictures, bypassing the HDR conversion step. The algorithm is based on a paper called Exposure Fusion. I tried Enfuse on my images and loved the results! I wrote another Python script to run all my aligned bracketed triples through Enfuse. I gained the following benefits from using Enfuse:
- Grain was significantly reduced. Especially in the images I took during sunset, when I was shooting at 1600 ISO! This is actually not so much a credit to Enfuse, but simply a result of averaging 3 images together.
- Expanded dynamic range. In my opinion, the Enfuse tone mapping looks more natural than HDR tone mapping.
Had I known about Enfuse in the first place I would have bracketed my shots 2 stops apart instead of 1 stop apart! If you are into photography, I highly suggest you try Enfuse on your own images. If you’re not into command line programs, try the EnfuseGUI.
I now have 165 Enfused images sorted by time of day. Here are some of my favorite shots: