Auto Hand Held Bracketing Script

Started by garry23, February 11, 2018, 05:53:21 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.


Quote from: garry23 on February 23, 2018, 09:20:51 AM

Here is the updated code:

So, is this new script to be used now?

P.S. I 've got to install and run the  previous version of the script, but I had no chances to test it enough to report  you about it.. (I will)
600D - EFs18-55 ISII



Run either, but not both together.

That is have one or the other in your script folder.


As I indicated in a previous post, I changed the bracketing scheme in my Hand Held Bracketing script, in an attempt to maximise DR, ie grab the most photons.

Yesterday I had a chance to carry out some extreme tests at our local National Trust property: The Vyne.

The rooms are very dark and just lit with window light through diffuse screens and weak lamp light.

I thought I would share one of my images that shows, at least to me, in dark environments, where you can't use a tripod or a flash, you can still get some reason 'memory shots'.

Once again, this was taken with my 5D3, hand holding my Irix 11mm Blackstone (a great lens). Post processing was 'just' in LR. The six brackets were merged in LR with LR-HDR-Merge.

BTW for those that wish to use previous versions of my HHB script, simply do that from my github area that has the HHB script:


For those that are following my hand held bracketing experiments, the latest version of the script is, I think/hope, the final algorithm.

It can be downloaded here:

The main logic remains, ie time bracket from the highlights and ISO bracket from the slowest hand holding shutter. This basic logic should maximise DR, ie grab the maximum photons.

The latest version has a refinement that kicks in IF you can't time bracket, ie the highlight shutter is the same as the min hand holding shutter.

In this situation you can tell the script to carry out three additional brackets, 1/3 Ev, around the high ISO limit. This gives you three extra brackets in the high ISO region, hopefully to better manage noise. That is sqrt 4 less noise at the high ISO end: three extra brackets plus the ISO bracketed one at high ISO.

Note you should ensure that the Canon max ISO is higher than the scripts'.

As usual I look forward to others trying it out.

BTW as for post processing, I've tried Aurora HDR, Photomatix LR-HDR-Merge and LR/Enfuse. There seems to be some advantage in carrying out NR as soon as possible and before any 'tone mapping'.




Here is an example from the latest script. This scene generated three ISO and three time brackets. I then chose three to throw at LR-HDR-Merge


Hello Garry,

I finally found some time to test your Auto Hand Held Bracketing Script on my EOS 100D and I have to say, I love it!  It works quite well with wide angle lenses (I tested with the EOS 17-40/4L at 17 mm).  The coolest thing is that the script also works with the single lossless FRSP DNGs and keeps the image stabilizer of stabilized lenses active during shooting the bracketing sequence.  This increases the usability of the script at very low light where shutter speeds in the 1/3 to 1/15-th of a second are quite common.

I used the build that was available for download on Feb. 24-th.  Since I did not have much time to test different options thoroughly, I left everything on Auto and used AETTR before taking the sequence.  In this mode, the camera would take 3 bracketed pictures at 1/4-th of a second, F5 and ISOs 100, 400 and 1600.  Then, I draged and dropped the three pictures directly from the SD card onto the Photomatix icon and let it do the fusion aligning and HDR merging using either the Neutral or the Interior options for the in-door photos that I took.  The results were quite satisfactory in terms of dynamic range and noise which was monochromatic and easy to remove afterwards in Photoshop.  Here are a few things that I noticed and that need a fix:

1) The HHB.Lua file has to be renamed to hhb.lua, otherwise the 100D does not recognize it in the script folder.

2) The Audio User Feedback function does not work on the 100D although the beeper is active in the Canon menu.  There is no beep when the camera is ready to take the sequence.

3) The shutter and apperture settings that I see in the view finder (F4 and 1/30 s) does not correspond to reality.  The actual set of bracketed photos is taken at F5 and 1/4 s).  Thus, there is no feedback to the user on the actual shutter and aperture settings that the camera takes the pictures at.

4) It is impossible to take more than one picture set after camera is turned on.  Every attempt to take a second set results in one single picture.  I have to turn the camera OFF and ON again to take the next set.  This is not good for the mechanical camera switch.

5) Right now, the sweet aperture spot which provides the most balanced image seems to be F5.  There are wide angle situations, however, requiring the aperure to be closed to F11, F16 or even F22.  In this case, the dark areas in the photo get terribly underexposed.  Quite obviously, in situations like this, the camera cannot find a balance between the maximum ISO and the minimum shutter speed for proper exposure.  In my opinion, in situations like this, the camera should reduce shutter speed to a value allowing for proper exposure of the dark areas while warning the user that it will use a much lower shutter speed than the limit set by the user.


Two more 100D issues that have nothing to do with the script:

6) The camera does not report the shutter speed properly in Adobe Camera RAW or any other editor.  A lens dependent value of 1/4, 1/3 or 1/2 s is reported, regardless of the actual shutter speed at which the silent DNG was taken.  With CR2 files, everything is fine.

7) There are no previews of the single DNGs in Explorer or any of the editors.  The thumb nails look like black squares.  This makes it extremely difficult to select the bracketed photos.  The only way to do that is to import all of them into Lightroom where the thumbnails are visible.  This process is very slow and takes for ever, actually much longer than the import of regular CR2 files.  The solution would be to fix the DNG thumb nail previews in Windows Explorer.


Excellent job, Garry and very useful!  Congratulations and thanks a lot for your efforts!



First of all thanks for testing. As you can appreciate, with 'only' a 5D3 and EOSMs I can't account for all cameras.

Having said that, the script is fairly simple and shouldn't be too camera specific: so I'm surprised your 100D is exhibiting 'strangeness'. For example the audio beep works on my 5D3. Have you tried the LED option? I don't understand the HHB.lua vs hhb.lua sensitivity, HHB.lua works on my 5D3  - but maybe someone else does ;-)

BTW I've tweaked the algorithm again ;-)

You can now tell the script to not do a second pass, ie only take the ISO brackets, or just do a second pass time bracket pass if you can, or do a 2nd time bracket pass and if you can't then do a high ISO bracket, or only do a high ISO bracket.

When doing the high ISO brackets you can choose 0Ev or 1/3Ev deltas. The 0Ev gives you brackets to do sqrt(n) noise reduction in post, ie before merging with the other brackets.

Let me be clear what the script does. It simply takes a set of brackets between your hand holding limit and your ISO max limit. The only thing the script knows about your scene is the input shutter and ISO settings that it assumes are set for the highlights. It also resets to these at the end.

I can't think what the problem is regarding not being able to reuse the script. Do you have other scripts running, eg conflicting key events?

For ultra WA lenses, ie less that 30mm on a FF, I would explicitly set the lowest shutter for hand holding, eg 1/30 or 1/60.

Finally, why would you wish to use F/16 or F/22 on a WA lens? The diffraction will be high. But it's your choice ;-)




Thanks, Garry23,

My comments were not meant as a criticism to your script, which is really great and perfect for interior photography.  I have just shared some feedback from my observations as you requested.

I have no explanation why the beep warning does not work with the 100D.  It does work with Canon's functions though.  But I think, I can live with that.  Much more annoying is the necessity to turn the camera off and on again after each bracketing set to allow me to take the next one. Since Life View stays on after the first set is complete, this creates noise (undesirable in churches, museums, etc.) and wares out the mechanical switch.

When I find some time, I will also test your latest version and I will also try the LED option.  As far as your question about why one would wish to use such closed apertures with WA lenses, the answer is very simple.  Most of them have soft corners at apertures up to F8 or higher, especially the cheaper ones.  If you want to avoid the corner softness, you need to close the lens to F11 or even more.  One example is the Sigma 12-24 which requires this.  Only very expensive WA lenses are sharp edge to edge wide open.  In other situations, where some objects of the scene are very close to you and others are far away, but you want them all perfectly sharp, you also have to close the aperture, accordingly.  If you consider my comment #5 and include this option to the script, then the users will receive a warning (maybe three short beeps) and will know that in rare situations like these they will have to use a tripod to avoid camera shake.  In my opinion, there is nothing wrong about using a tripod when the script decides to use longer exposure times than the hand hold limits. The script will still provide its advantages also in such situations.



Didn't think you were criticising  :)

I wrote the script for my use but published it in case others wish to use/adapt it.

It's use case is hand holding, ie not tripod use.

If I'm on a tripod or similar, I'll use a different workflow, eg ML advanced bracketing, with or without ETTR first.





Just tried the latest version on my 5D3 in LV and with LV off.

Both work as expected, after bracketing I can bracket again.

I personally use the script in non LV mode as I'm looking through the optical view finder and using my face as a stabiser. Also the script runs faster in non LV mode.




 >:( sorry,

unexpected impediments prevent me from using the camera for weeks now ..(bad focusing, unreliable color balancing, dim display(!?), slow pc  and so forth and I 'm so bored of all that.

600D - EFs18-55 ISII