Smaller EV steps in shutter speed

Issue #139 resolved
Poul Jensen created an issue

The # 1 issue that timelapse shooters are facing is flicker. Using automatic settings is discouraged because the camera adjusts exposure in big steps (1/8 EV to be exact) that result in quite disturbing flicker when images are stitched together to a video. Interestingly, Canon compacts adjust exposure in much smaller steps (~1/32 EV), producing close to flicker-free footage.

Would it be possible to find out where this step size is defined and perhaps redefine it to something much smaller, e.g. 1/32 or maybe even 1/64 EV? Of course, lens diaphragms are not able to adjust in smaller steps, but the shutter ought to be capable. I'd assume normal video would benefit from this as well (e.g. virtually stepless exposure adjustment in aperture priority).

If it turns out to be impossible (or too complicated) I would be very grateful for any insight you can provide as to why.

Comments (50)

  1. Former user Account Deleted

    I wholeheartedly support this request. The timelapse community NEEDs more granularity in exposure time and complete control over that shutter speed. Even if you could take the limiter off the bulb shortest exposure we'd rejoice! As far as we know right now: 1/30" is the fastest bulb we can get and we're stuck with 1/3-1/8 eV steps. Thanks!

  2. Former user Account Deleted

    Making the shutter speeds (and ISO) quasi-continuous parameters would be fantastic, utterly revolutionizing dSLR time-lapse technique.

    Regards, Thomas Bethell

  3. Former user Account Deleted

    Making the shutter speeds (and ISO) quasi-continuous parameters would be fantastic, utterly revolutionizing dSLR time-lapse technique.

    Regards, Thomas Bethell

  4. Former user Account Deleted

    I support the request. The addition of small step changes in shutter and iso would position the 5d2 as the standout camera in the world of DSLR timelapse.



  5. Former user Account Deleted

    It is mostly your lens that is causing the flicker, not the mechanical shutter. I have a L24-70mm and L16-35mm and you get flicker on both if you use an F-Stop higher than F5.6.

    What you need to do is lock the lens at the F-Stop you want. What you do is set the F-Stop to what you want, press the DOF preview button, and also press the lens release button and rotate the lens about 1cm, it will still be secured safely, but the lens will stay at that F-Stop untill you screw it on fully again.

    No amount of camera software is going to fix the mechanical iris in Canon lenses, it is simly not designed to be a repeatable as people think.

  6. Former user Account Deleted

    @anonymous re:lens causing flicker

    Your not getting what we're talking about here... Yes the mechanical aperture blade variations can be a source of SLIGHT flicker (I'll call it 'flutter'). BUT when shooting Av (for changes in light over time) your subject to a 'wandering' meter that's making 1/8-1/3 ev steps 'all over the place' . It's extremely unpredictable trying to get a smooth transition from say day to night.

  7. Former user Account Deleted

    I'm also a time lapse photographer who would like to request this! It would be a breakthrough for us timelapse photographers and seems like it would be a very simple modification.

    Aperture flicker from the aperture blades can be avoided completely by locking off the lens contacts. We can't avoid the major flicker when shooting in Av mode without smaller ev steps being used (preferably as small as possible by the camera). This modification would allow us to do incredible seemless/flickerless day to night transitions that currently aren't really possible with the current methods. I guarantee you with this modification, you would see all of us time lapsers switching over the magic lantern.

    Best Regards, Ben Wiggins

  8. Former user Account Deleted

    I just took a picture with 51 000 iso and it's still recording image for past 5 minutes, camera wont shut down.

  9. Former user Account Deleted

    Going over 25 600 iso gives camera failure. I wonder if it can really fry sensor, as it is very similar to the 1D IV witch goes up to 102 000 iso.

  10. Alex

    Since it's winter, it probably won't fry it :)

    I said that out of precaution, since I don't know the cause of those artifacts.

    Were you able to shoot with any iso greater than 12800 without failure? Which ISO value?

  11. Former user Account Deleted

    Yes I was, at 20 000 and 25 600 in raw. Higher makes a weird thing, shutter opens longer then it should, then gives camera failure. I tried even with small jpeg. Before when I tried it at 56 000 it took picture then for more then 10 minutes it was saying it's busy recording image. But it never did, so I thought maybe buffer is too small to handle the size of the image, so I tried with small jpeg and that's when it did not work at all. Do you think this can work in movie mode ? Even if it does I think it's very dangerous to make sensor overwork like this for long time. But that's just my personal thinking. And yeah it's winter, damn cold haha :p It was value 133 and 136 which worked.

    After more test done now I discover only specific values fail. Values who fail are: 141,148. After just trying all values, I confirm they all work besides 141 and 148. Do you want picture samples ? Tests where done with small jpeg.

  12. Raffi

    I made an account now here. Will be easyer for you to know with who you are talking. Feel free to ask me any tests you want me to make on 550D.


  13. Raffi

    Yeah for me too. Limit for decent is 25 600 iso :) With CS5 noise reductions I'm sure you get good result, I'll post a 100% crop in few secs.

  14. Raffi

    Because using sensor for long time at higher iso then it should normally be may cause it to malfunction and/or give bad image. The "high" iso setting is like overclocking a processor, on short term it can be ok but on long term it may not work properly depending on time, power (iso), ect. And using over 400 iso while filming will give you bad quality movies.

  15. trho

    Just tried the feature. Its working great! Interesting to see that ISO 25600 works, too.

    Two suggestions - from my parallel implementation. ;-)

    1. When displaying and altering the iso value read the value from the PROP_ISO instead of the iso_index variable. In this case altering the value from the normal ISO menu will be reflected here. Otherwise you change the value to 400 in the normal dialog and when opening the ml shoot menu its still e.g. 125.

    Patch agains changeset 687 is attached.

    2. Minor improvement: When the iso button is pressed you could increment the "normal" 550d steps (100,200,..) so you can quickly step up the range.

    I tried to implement this and was able to intercept the button, but the event is also send to the internal event handler showing the iso dialog in the background. Maybe you can solve this.

    Here is what I did - no real surprises here:

    I added

    PRESS_ISO_BUTTON = 0x100000b5,

    to gui.h,

    and declared a new iso button handler in the menu_handler function for the PRESS_ISO_BUTTON events - similar to what I have done in the patch for issue 198. This is not included in the patch attached to this comment.


  16. Former user Account Deleted

    PRESS_ISO_BUTTON = 0x100000b5,

    0x100000b5 is used for LOTS of stuff, and should be decoded. The event dump from debug menu (commented out in the last release) might help a bit. I wasn't able to understand it yet.

  17. Poul Jensen reporter

    As for the original request, unfortunately the 50 ISO steps between 100 and 8000 corresponds to the same 1/8 EV steps that the camera uses for shutter speed and aperture - and which are too big for timelapse use, causing considerable flicker. What is really needed to overcome the problem is to find out where/how that step size is defined (for shutter speed in particular, aperture can't do smaller steps because it is limited by lens mechanics, ISO may or may not be able to do smaller steps).

    That said, I appreciate every bit of progress you guys make on improving the firmware. :-)

  18. Poul Jensen reporter

    Yes, but not without issues. Besides adding steps to the workflow, deflicker filters can produce other artifacts (ghosting, loss of contrast, introducing new flicker in areas with saturation in any of the RGB channels), and sometimes they simply cannot remove the flicker. There is no foolproof method for differentiating changes in exposure from changes in frame content (exif isn't accurate, so adjustments must be based on image analysis). In other words, when using automatic settings there's always a risk (and not an insignificant one) that the footage may be damaged beyond repair. :-|

  19. Alex

    I have an idea. What if you would shoot, for each frame, a "floor" and a "ceil" exposure? (something like HDR). For example, let's say that you have constant shutter/aperture, and you vary ISO. Optimal ISO (according to some formumla, or script) is 163, and you take a pic at iso 160 and another one at 175.

    Then, in post, you do a linear interpolation and get the required ISO with a very good approximation.

    Or shutter (math is the same).

    ML can create scripts for that (probably for imagemagick, which runs on all platforms).

    If you shoot RAW, you can do this adjustment from ufraw-batch (there you can say the exposure compensation in EV), so you don't need two images per frame.

  20. Poul Jensen reporter

    Calculating the exposure (or a measure for it) in post and doing exposure compensation to fit to a smooth curve is what deflicker filters do; they just aren't perfect. In the end it would be by far the simplest and best method to avoid having the camera do the coarse exposure steps in the first place.

  21. Alex

    What I'm suggesting is not to calculate the exposure from the image (as deflicker filters do), but to specify it before taking the picture (and to obtain it from linear interpolation between two images). It means I'm doing a fine exposure step by merging two coarse ones.

  22. Poul Jensen reporter

    Merging frames to lessen the steps does help and decrease odds of ending up with a "damaged" end product, but there is a price to be paid in terms of processing time, storage space and wear on the shutter. For some shots the longer interval between frames is an issue too. It's a valid suggestion and a technique that some people occasionally use, but having the camera use smaller steps is still the preferable solution by far.

  23. Poul Jensen reporter

    Yes, and we need 1/32 EV steps or smaller to avoid visible flicker (and hence all the workarounds).

  24. Poul Jensen reporter

    Aperture can only be changed in 1/8 EV steps - there's a stepper motor controlling the diaphragm in the lens, and 1 step = 1/8 EV. Nothing to be done about that. However, the shutter is capable of arbitrary exposure times (or at least very small steps). One of the workarounds used in the timelapse community is a device that ramps the shutter speed smoothly via the camera's bulb function, and it works (on Canons, interestingly not on Nikons). In other words, the 1/8 EV steps in shutter speed are not a mechanical restriction, but a firmware restriction.

    Given that the camera cannot possibly adjust the aperture in 1/3 EV steps I find it highly likely that it operates solely in 1/8 EV increments, meaning that all 1/3 EV steps are actually 3/8 EV steps (2 out of every 3) or 2/8 EV steps (1 out of every 3).

  25. Alex

    In this case, the problem will be solved after finding out how to trigger bulb mode.

    A set of test pictures at 1/3, 2/8 and 3/8 will tell us exactly how Canon does the 1/3 steps.

  26. Former user Account Deleted

    I agree with Poul, we cannot go beyond 1/8 EV, in practice I think not beyond 1/3 resolution in aperture exposure, because of mechanical constraints, but shutter ...

    Controlling automagically bulb exposure will be a very important funcionality, not only for timelapses, also for take series of long exposure brackets needed for astronomical purposes,


  27. Poul Jensen reporter

    For the purpose of timelapse there may be an issue with metering. We would want to use the in-camera metering value to determine the shutter speed, and whereas the metering sensor is certainly capable of fine resolution measurements, it may only give the camera rounded off values. The metering values in exif only changes in the same 1/8 EV steps that everything else does. :-| If the accurate metering values are not accessible, an algorithm calculating a bulb exposure time from metering would not be able to resolve the 1/8 EV steps. The only way to ensure smaller steps would then be to use the *previous* exposure time and adjusting only in, say, 1/32 EV steps from that. So questions are, can we access accurate metering values? And if not, is it possible to save parameters from a previous exposure in the camera's memory? Or maybe in a log file on the memory card?

  28. Former user Account Deleted

    Poul, yes it seems an issue. The metering of the cam (550D) is in 1/8 EV steps. We have a raw value for shutter , a raw value for aperture and a raw value for iso. A measure of exposure based on these raws (a sort of APEX) is exposure = raw_shutter + raw_aperture - raw_iso. It's possible that the cam stores more internaly a more precise measurement, but as far as I know it's all I can reach now with ML developpment. The EXIF data (exposure bias) is rounded and do not resolve less than 1/3 EV. But we have information to a 1/8 EV level, and it's possible to store it from previous shots.

    If we can control the BULB exposure time at smaller time steps. For example 16 time steps between 1" and 2 " (1 stop), and it will be possible depending on the reliability of a SW timer, the way would be open. would be?

    We have to deal with a codification of a new raw_shutter (at 1/16EV) that would be additive to ISO and aperture to calculate the value of exposure, ... it's no problem (some algorithmics), and we get an exposure in 1/16 EV units

    But the measured exposure that we can obtain from the cam is in 1/8 EV units ¿how we know what is the precise time to stop the BULB exposure?.


  29. Alex

    To get finer resolution data from the measurement sensor, you can use a (strong) moving average filter, under assumption that lighting changes very slowly. Not sure if a Kalman filter would work better in this case.

  30. Poul Jensen reporter

    Either method - smoothing metering values or setting a max step size from previous exposure - should work. I'd guess the max step size would be the simpler to implement of the two.

    About the inner workings of Magic Lantern: Would it be possible to have an intervalometer script, similar to those for CHDK where the user can define parameters (# frames, interval between shots etc.) beforehand and the script then controls the camera from there? If so, ideally such a script could calculate a preferred aperture, shutter speed and ISO for each shot using current metering value and the exposure value for the previous photo as input. What combination of settings would be preferred for timelapse is a little involved, but if this idea is something that can be implemented (it would be a big leap forward for timelapse photography) I could try to write the function to calculate exposure parameters. It would have to be written in ARM assembly code?

  31. Alex

    The code of Magic Lantern is 95% C code. Here's the source for Shoot and Expo menus:

    Moving average is not difficult to compute. Example (IIR filter):

    current_exposure = current_metering * 0.01 + previous_exposure * 0.99

    And a possible setting for this would be the "time constant". Zero disables the auto-adjust, then you could choose 0.001, 0.01 and 0.1.

    Main problem is how to get metering info in manual mode. In LV it's easy. Outside LV... it's not solved yet. See code for ML auto ISO for details.

  32. Log in to comment