I've taken thousands of photos on a long-term project and I'm doing a time-lapse film.

Due to the different weather and the different light conditions the pictures are partly very differently exposed. The colours are also different.

I already adapted the pictures a little bit with the following command:

convert -auto-gamma -unsharp 1x1+1.7+0.02

Unfortunately you can still see big differences in the time-lapse video. Is there a way to homogenize the images with ImageMagick or other software under Linux?

  • \$\begingroup\$ what are you ultimately trying to achieve / record / show? \$\endgroup\$
    – osullic
    Commented May 29, 2018 at 12:27
  • \$\begingroup\$ The pictures show a field on which plants grow. The recording runs for 6 months. You should see the plants grow. \$\endgroup\$
    – mrremo
    Commented May 29, 2018 at 12:34
  • 3
    \$\begingroup\$ The problem is that the conditions vary so much, from sunshine to haze, etc, that even the same nominal exposure and WB will probably not give enough similarity to prevent an impression of "flickering". You might consider creating trasitional frames to smooth things out. This answer using GIMP might also be worth a look. \$\endgroup\$ Commented May 29, 2018 at 19:23
  • 1
    \$\begingroup\$ You're expecting way too much from such a simple automation when the frames are shot under such widely varying conditions. The only way to even remotely get close to what you want is to shoot it with color checker and white/18% grey/black test targets on the edges of the frame and then use an automated routine that normalizes each frame to them. Of course there's also the issue that most test targets will fade over time when constantly exposed to sunlight. Even then, the effect of fog on brightness/contrast will be more pronounced at longer than at shorter distances from the camera. \$\endgroup\$
    – Michael C
    Commented May 29, 2018 at 21:30
  • \$\begingroup\$ A time lapse is a documentary record, each photo is showing the conditions of the environment in which the photos were taken. Viewers understand that the outside environment changes. If you want "Homogeneous" then control the environment, use a studio. For in the field work you can only do so much if you are relying on auto settings. Be present to adjust the settings on the camera for each photo to get more closely related exposure. ( The difference between bright sun shiny days and dark stormy days will limit your success ) As noted by others: software can only do so much. \$\endgroup\$
    – Alaska Man
    Commented May 25, 2019 at 16:54

1 Answer 1


There are some products that normalize exposures for timelapses over arbitrary frames or time duration. In other words, it will adjust each exposure so that the overall brightness will vary only over a minimum duration or frame count. (Which, depending on how rapidly lighting varies, might result in no perceptible change at all.)

There are a number of deflicker filters for the ancient open-source program AviSynth, at least one of which I've used before with satisfactory results. If your footage is 4k, the 32-bit version will probably "run out of memory" trying to process it though. (There are some more recent 64-bit builds, and possibly some 64-bit deflicker plugins, but development of AviSynth became so fragmented around the time of transition to 64-bit, that it may not be worth it to try to figure it all out.)

AviSynth aside, the google search keywords you want are "timelapse deflicker". There are myriad plugins for just about any editor you might be using, such as ReelSmart Motion Blur.

There's another option though. This is the one I use, mostly to achieve smoother timelapses, but also as a side-benefit reduces the strobing effect you describe and I've also struggled with: Rather than taking photos at some interval and then combining into, say, 24fps - I shoot the scene as a very long normal (e.g. 24 or 60 fps) video, up to 4 hours with my particular equipment. I then iteratively overlap frames in post, which compresses time in a very smooth and natural way. For example, the first pass overlaps frames 1 and 2, 3 and 4, etc. Then I take that output and do the same thing again, which has the effect of evenly overlapping frames 1-4, 5-8, etc. This way, the footage speeds up 2x, 4x, 8x, 16x, etc. The final playback speed can be different than the original, of course, resulting in a different final multiplier.

This can be done with AviSynth trivially easy (in memory without intermediate files and iterative encoding losses). That is, if it doesn't "run out of memory" as noted earlier. It can also be done with, say, Premiere. (Note that for the Premiere, simply speeding up the video with the "overlap frames" option, doesn't exactly do that and the results aren't nearly as good. It can be fairly easily tricked into doing that though, also without intermediate files, it just takes more manual intervention.)

Another tip, I also run an artificial motion-blur pass on the original footage first, before iteratively combining them. (With a simulated "360 degree" shutter blade for continuous motion blur.) This avoids the "splayed deck of cards" appearance that can result with this approach, when subjects and/or the camera moves rapidly. This can also produce smoother results for photo timelapses, but only if the motion is slow and/or subtle. (If too great, the artificial motion-blur looks bad and...artificial.) If you shoot in 60 fps originally, it significantly reduces motion-blur artifacting (technically by "250%" vs 24 fps). But is obviously more of a strain on equipment capability/capacity.

Good luck!


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.