Page 1 of 1

Automatic Time Stacking for Bursts

Posted: Wed Mar 01, 2017 6:50 am
by m.Th.
There is a common feature in many DAMs called stacking.

(Ok, there are two which are related: Stacking and Versioning - but let's keep the things simple.)

Stacking means the possibility to group several photos together - thing which is widely used for similar photos, especially for photos shot in bursts.

Look here to see how it looks in Lightroom a stack of 3 photos folded:
Xn Lr Stack folded.png
Xn Lr Stack folded.png (41 KiB) Viewed 507 times
And unfolded (expanded):
Xn Lr Stack UNfolded.png
Xn Lr Stack UNfolded.png (57.61 KiB) Viewed 507 times
There are a LOT of programs which provide this feature in a form or in another.

...and now look here: How many actual scenes do you see?
Xn Sequences.png
There are only three.

This is a big problem nowadays: in any photo journal which implies some sort of action, the photographer is forced to shoot bursts of photos in order to cover the moment and after that to choose the best one. There is a very common scenario - one of the biggest selling points of cameras nowadays being how many frames per second (fps) a camera is capable. (Hint: a medium camera is around 7-8 fps but it can reach till 30 fps!)

The problem with classical stacking is that it is a tedious, manual process.

However, in this case there is a simple solution: a On/Off filter called Hide Bursts... which will show all files if it is Off and show only the 1st file from a Burst if it is On.

The files from a burst are hidden if the difference between the DateTimeTaken EXIF value of two consecutive files is smaller than "n" seconds where "n" is an user-entered value stored in Tools | Settings and persisted between sessions.

The code is very simple: (very un-optimized & bad pseudo-code to show the idea)

Code: Select all

PrevDateTimeTaken = -1; //init to an impossible value

for i = 1 to myFiles.Count
  if myFiles[i].DateTimeTaken-PrevDateTimeTaken>n then //the difference is greater than the threshold = no burst
    Show
  else
    Hide //actually the 'else' part will be empty - included here just for clarity
  end if
  PrevDateTimeTaken = myFiles[i].DateTimeTaken+myFiles[i].ExposureTime  (we need to add this too)
end for
This feature will be greatly appreciated by all action, sport, events, weddings (etc.) photogs.