Feb 112014

Thanks to Miguel Tremblay

Exposure Values in photography change significantly and fairly quickly during twilight’s transition. In timelapse photography, bulb ramping techniques are applied through the use of an intervalometer. The intervalometer directs the camera’s exposure up / down, and moreover, the planned rate of those changes rather that allowing the camera’s automatic exposure metering to flicker its way through. As it turns out, determining the planned rate is a bit of art and science.

Published times from an almanac for a given date, geographic position and elevation for Nautical Twilight Start, Sunrise, Sunset and Nautical Twilight End are helpful in providing a starting point for planning. Best app I’ve found for this information is The Photographer’s Ephemeris (free for the PC desktop, quite reasonably priced for your mobile device). The graph above shows the impacts of both latitude and season as determining factors in twilight’s length. Many thanks to Miguel Tremblay and ptaff.ca for this graph and the marvelous bit of code that produced it.

Having a good idea of the beginning EV plateau is pretty straight forward – just meter the current light condition. Having a good idea of the ending EV plateau is also essential and a EV / lighting chart is good for starters. After several wild stabs at bRamping and watching the histogram show me the errors of my way, I did some experiments to better understand these EV values and their relation to the almanac times for use in programming the intervalometer and when necessary, the placement of an ND filter. Basically, I just did a bunch of time lapse sessions with the camera in Av mode (no bRamping) to simply document the EV curve during twilight’s transitional light.

EV Sessions 1-7 Click on the link / image for a printable version in PDF.

Getting the data extracted and into a form that allowed it to be mapped was possible using an absolutely wonderful tool called ExifTool by Phil Harvey while the actual mapping was done in AutoCAD from DXF’s produced by Ray Hintz’s Cadastral Measurement Management program! Admittedly this is a pretty strange use of this survey program, but it worked great and even created the line work 🙂 Of course you don’t need to use a survey program to graph the results out. Any spreadsheet program should be able to produce some type of a graph once you’ve gotten the x and y values nailed down.


These initial results help to illustrate the impact of clouds, both during the day and night and how they retard an EV range at both ends; blocking light in day, reflecting light at night. They also help to illustrate that the bRamp will never be a straight linear change and that further study is necessary in order to better understand the mathematically defined baseline EV curve, clouds notwithstanding.


If you try doing this for yourself, you may find this little hack to the [.ExifTool_config] helpful – insert it about half way down in the script under the section on composite tags.

    # Composite tags are added to the Composite table:
    'Image::ExifTool::Composite' => {
        # Composite tags are unique:  The Require/Desire elements specify
        # tags that must/may exist, and the keys of these hashes are used as
        # indices in the @val array of the ValueConv expression to access
        # the numerical (-n) values of these tags.  All Require'd tags must
        # exist for the Composite tag to be evaluated.  If no Require'd tags
        # are specified, then at least one of the Desire'd tags must exist.
        # See the Composite table in Image::ExifTool::Exif for more examples,
        # and lib/Image/ExifTool/README for all of the details.
        BaseName => {
            Require => {
                0 => 'FileName',
            # remove the extension from FileName
            ValueConv => '$val[0] =~ /(.*)\./ ? $1 : $val[0]',
        # With many thanks to Phil Harvey
	# Wednesday, January 22, 2014, 7:36 PM, VKB
	# breakup date and time
	# see thread: http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,5560.0.html
	# return the date from a date/time string
	Date => {
		    Require => {
	                0 => 'DateTimeOriginal',
		    ValueConv => '$val =~ s/ .*//; $val',
	        # return the time from a date/time string
		Time => {
		    Require => {
	                0 => 'DateTimeOriginal',
		    ValueConv => '$val =~ s/.* //; $val',
	# Finding our value for x
	# Getting the time of day into a value for x
		Time_into_x => {
		   Require => {
		   	0 => 'Time',
		  # determine Time's fractional part of day and multiply by 10000
		      ValueConv => 'my ($h,$m,$s) = split ":", $val; ((((($s/60)+$m)/60)+$h))/24*10000',
        # Finding our value for y
        # Now we can heighten or flatten the mapped LightValue (EV) curve for any given set of images as much as
	# you like with a multiplier of 10x, shown here by a factor of 100 for the y coordinate which will make EV values
	# easy to read, but graphically may end up looking too tall until the y aspect gets rescaled in your graphics program
		LightValue_into_y => {
		   Require => {
		   	0 => 'LightValue',
		  ValueConv => '$val*100',
        # It's all Phil's code from here and below 🙂

These threads may also be helpful:

 Posted by on February 11, 2014 at 7:23 pm