The purpose of this project is to control the exposure timings of a digital camera enabling the creation images with a High Dynamic Range (HDR) in various light conditions.
Our incredibly adaptive brain enables us to capture or see a broad range of reflected light. In contrast a camera is only cabable of caputring a small portion of that range of light in one shot.
An example: Imagine to be standing in bright sunlight looking at a forest in near distance. In such a situation we are able to easily recognize both poorly and higly illuminated structures inside and around the forest.
A camera is certainly able to caputre the same view and give us the impression of a great shot. But that same shot cannot ever reveil the details we are able to see with our naked eyes.
In photographic terms the range of light a camera is able to capture is measured in Exposure Values (EV). For a camera this range measures about 5-6 EVs while our brain is able to capture about 15-20 EVs. What a difference!
This gap of some 10-14 EVs can be narrowed by taking digital shots with various exposure times (named as the process of bracketing) and further image processing with specific imaging software. This process is known as HDRI (high dynamic range imaging) and receives a broad attention and use in the film industry.
The primary key to create a successful HDRI is that every shot in a series matches oneother perfectly and to achieve a maximum degree of image congruence, the cameras position must remain totally unchanged. Therefore the use if a tripod is an absolute necessity. The slightest touch would induce a minor movement and thus create unwanted fuzzyness.
The problem situations: Most cameras provide a built-in bracketing functionality for exposures less than 30 seconds. In other words the creation of HDRIs within the cameras exposure range of say 1/8000 - 30 secs. is principally possible without touching the camera. Depending on the camera model there is often a major disadvantage like the small width for bracketing of +/- 3EVs only. But +/- 3 EVs is not enough for a successfull HDRI. We need more than that as the gap to fill is 10-14EVs.
What if one creates an HDR image at dusk or dawn, where several shots are beyond the limit of a 30 seconds exposure?
One would need to touch the camera to change the setting into 'Bulb-mode'.
The Bulb-mode setting allows to expose an image for as long as the release-button is pushed. The shortest possible exposure in 'Bulb-mode' is limited to about 1/6 of second.
What about at night when all exposure-times exceed the 30 seconds limit? Same answer, shoot with the 'Bulb-mode' setting.
The examples above might be successfully managed with a proper planning and careful execution. But when capturing a panoramic-HDRI the full control of every exposure becomes a neccessity as the exposure-times of images taken in one series must match the exposures-times of the adjacent series and so on.
We are in need of the versatile control device similar to the electronic Remote-Shutter-Release-Timer (eRSRT) described on this project page.
With ARDUINO it is now possible to create a prototype in order to take control of some of the exposure situations mentioned above, those that require exposures taken in 'Bulb-mode'.
Nevertheless the perfect electronic Remote-Shutter-Release-Timer (to be completed) would additionally allow to take control over all exposure-time settings.
I started this project in March 2009, ....more content to follow soon.
(04/2009) Finally got my ARDUINO and the shield with a NOKIA LCD
The set-up on a breadboard with a dual opto-coupler, some LEDs and a FREEDUINO (click Image to see larger image).
A dual opto-coupler is keeping the Camera-circuit fully separated from the Arduino-circuit.
On Arduino I inserted the use of an additional digital Pin to initiate the sequence of actually taking the shot.
The original code is derived from Joergen Geerds 'Bracket-Meister 0.32' published at
'http://newyorkpanorama.com/2009/01/21/long-exposure-night-hdr-photography-with-arduino/' under a Creative Commons Open Source License.
I have used that code to start with and initially modified it only slightly to my personal 'gusto'.
Later I had to further adapt the original code by rewriting the 'fire()' function to accomodate a NIKON D300 with the mirror-up function enabled (d9=on).
...at least for now (May 12th, 2009), till I make some more improvements. Some images of my ARDUINO RSRT can be viewed at the images page.
Check back soon again. Thanks for visiting.
I intend to build a device that controls the exposure times of my SIGMA SD14 and the NIKON D300 Camera.
All digital cameras have a built in exposure control that limits the longest exposure to be 30 seconds (I keep wondering why that's so).
So when I want to shot a set of bracketed exposures of say 5 images at night, then the cameras internal bracketing process cannot take pictures that expect an exposure of more than 30 seconds. (For the purpose of creating bracketed images, the exposure time is the only value that changes.)
... that this exposure-controller triggers the cameras shutter release in a accuratly controlled fashion, provided the camera is set to 'Bulb'-mode (meaning the shutter remains open as long as the shutter release button is pressed).
So a set of 5 images could then have the following exposure values (in seconds): 8, 15, 30, 60, 120.
The key is to obtain 5 congruent exposures. This requires that the camera will not be touched while taking the sequence.
Congruent images are required for further HDR (HDR = High Dynamic Range) processing.
90% of all criteria is fullfilled.
- The most important limitation is that I was not able to achieve a faster shutter-speed than 1/6 second. I believe this is due to the Bulb-mode setting. Hints to obtain faster shutter speeds are highly appreciated.
1/3 EV steps could be achieved by stepping through the index of the 'exptime'-array. Though this would require some changes in the code and the array for the release timing.
Microseconds are easy to use in ARDUINO Code, but only with the 'delay'-function.
As the camera operates in Bulb-Mode, the fastest properly controlled exposure I achieved is 1/6th (167ms). Higher Exposure values match perfectly - after implementing some delays caused by the camera shutter-lag.
I learned a great deal programming in C++ and modified quite a bit of code according to my liking. Though the basic program structure remained unchanged. You may check out the latest page of code.
Now the code does what I want it to do, starting at the base exposure (center) the sequence simply follows up and down the index of 'exptime' by increments defined in the 'EV settings' for as many shots (uneven numbers) as selected in 'No. of shots'.
Joergen Geerds, the creator fo 'Bracket-Meister', applies a different brackeing approch that is also perfectly fine as well. Compare the code and select what suits you.
I am certain another prototype of this device can be built with the aid of something like the PANDORA or as mentioned already with an ARDUINO board.
Maybe we will soon be able to configure/use our latest mobile-phone or even a light-weight Netpad to obtain the same objective.
Meanwhile I prefer to build my own.
* AVR Study Board (English page.)
I am in contact with persons working on such great devices. The near future will bring us lots more. Stay tuned.