Sunday 27 May 2018

What algorithm can be used for deflickering timelapse shots?


What are deflicker algorithms used to deflicker stills that should be composed to a timelapse movie?


(Flickering caused by shutterspeed adjustments in sunset/sunrise shots...)



Answer




I have no idea what algorithms commercial software uses for this task, but I'll happily make one up for you:




  1. Find the luminance of frame 0 by summing pixel values.




  2. For each frame (i): subtract frame (i+1) from frame (i), take the mean of these delta values. To account for movement, remove any pixels with delta greater than some threshold (set based on the noise level) and recompute the mean delta. Add this delta to the luminance of image (i-1) and s




  3. Now we should have an array of absolute brightness levels of each image in the sequence. For each value compute the moving average, that is replace value (i), with (sum(k = i-w to k = i+w) luminance(k)) / 2w for some window size w. Choose w based on the amount of flickering. For the first and last w frames of the sequence you can just use a constant target luminance (there aren't enough frames available to calculate an average).





  4. Transform each image from it's original luminance to the new target luminance (the result of the moving average operation).




Do this independently for all colour channels and you'll also smooth any changes in colour.


No comments:

Post a Comment

Why is the front element of a telephoto lens larger than a wide angle lens?

A wide angle lens has a wide angle of view, therefore it would make sense that the front of the lens would also be wide. A telephoto lens ha...