How I Edit Whole Sets of Photos (TIPS)

Disclaimer: I mainly do couples, family, maternity, wedding, etc. photoshoots. I just completed my first “real” photoshoot since switching from lightroom to darktable, and thought it might be nice to share my workflow for editing a bunch of images in a consistent way.

My Priorities/Requirements

  1. To use an analogy, photos from the same shoot should look like they were shot on the same film stock.
  2. Minimize tweaking on individual photos (Utilize cntrl+shft+c/v as much as possible).
  3. Enjoy life.

The Method

Initial Cull

  1. Select all images and set star rating to 3 (“unrated”)
  2. Set rating filter to 3 or above
  3. Cull in dynamic culling mode: select images of the same/similar pose and remove all bad photos from view by setting their rating to < 3, and rate any really good photos as 5.

Edit “Hero” Image

  1. Pick the “hero” image or the image that you will probably use as the title image if you were to deliver a digital photoset or album.
  2. Edit the hero shot exactly how you want to. Once you are done, compress the history stack.
  3. Cntrl+Shft+c and select all non-image-specific modules. Ex: I often include color balance rgb and color equalizer, but usually not tone equalizer. It depends if the module was used to get a certain look, or if it was used to fix an issue specific to that image.

Apply Selective Copy to Other Images

  1. Navigate to the Lighttable, set the star filter to 5, and select all visible images (except the hero image). Cntrl+Shft+v and verify that all selected modules are correct. Apply selective copy.

Tweak Non-Hero Images

  1. Begin correcting exposure on other images. I do this by selecting images with a similar base exposure, modifying the exposure on one of those images, and then performing the same selective copy to the other images that need a similar exposure change.
  2. All images should now have roughly the correct exposure and similar look properties. Next comes the fine-tuning.
  3. Zoom out, if necessary, in the lighttable view, and check for any images that stick out as too flat, too contrasty, too dark, too bright, etc. Go one by one and fine tune: tone equalizer for issues with dynamics (too bright, too dark, etc.), exposure module tweaks for slight inconsistencies in exposure, etc.

Final Cull

  1. Go back to lighttable view, switch to dynamic culling mode, and cull again. At this point I usually have slightly too many photos, frequently because I couldn’t choose between two or three really good photos for some poses/scenes. I usually get my wife’s help with this final culling. During this final culling, I simply mark any photos that don’t make the final cut as star rating = 4, and they just magically disappear :slight_smile:

Export

  1. Select all 5 star images, and export as JPEG 8 bit, 100% quality.
  2. Deliver.

Notes on reducing per image tweaking

  1. I have started NOT using the autopickers in AgX. I use the module like a black box film stock. I adjust the exposure to hit the agx-film-stock properly, and it just usually works. If I need to tweak something I do some dodge/burning with tone equalizer, but that is not usually necessary.
  2. I copy a lot of modules over from my hero image: demosaic, exposure, white blance, color calibration, rgb primaries, color balance rgb, color equalizer, agx, grain, etc. In some instances, I need to adjust the white balance of images from later in the photoshoot (if an outside photoshoot) to adjust for change in light, but that is only if the lighting is objectively bad looking. Film has a static white balance, and I like to treat the digital realm similarly.
6 Likes

Overwrite or append mode?

How I am even lazier :smiley: :

  • default presets that automatically apply to RAW: demosaic, filmic, local contrast, color balance rgb, hot pixels.
  • no sharpening, no denoising in darktable as I mainly use the dt_nind_denoise.py script to run through all the RAWs on the command line. That would apply the same nind-denoise and RL-deblur to all photos during export

For indoor shots with low light, I usually lock down SS and aperture, thus, can copy WB and exposure across the whole set. For tricky shots/sets, just turn off filmic and color balance, then pick a Fuji LUT :sunglasses:

For events that I need two bodies/lenses, luckily my X-H1, X-T2, and X-T20 use the same sensor, it’s just more copying.

For culling: I shoot RAW+JPG and cull with Geeqie, it automatically groups RAW+JPG+XMP together as one entry for easy moving into a subfolder (e.g. “selected”), the full-size JPG allows pixel-peeping/focus-checking. (usually discard in the end)

Knowing bash loop is also helpful, e.g. moving matching RAF files:
ls *.jpg | while read f; do mv "../${f%.*}.RAF" ./ ; done

For panorama, I have a Python script to detect the sets and move them into a separate “pano” subfolder. The script can also apply color labels to the XMP files to group them together. I also have a Lua script to match “exposure” across a set in case I forgot to lock exposure.

1 Like

This looks like a very straightforward way to carry over different corrections to a set of images, but I am wondering what

usually involves for you.

Eg I could imagine that one would customize white balance and color corrections, which would carry over from one image to another, shot on the same set.

But as for some other modules, eg demosaic, noise reduction, lens correction, one could just turn them on in a default profile and leave it at that.

1 Like

Append!

1 Like

It usually involves the following:

  1. Select an AgX preset of mine (lately, I treat them like digital film stocks)
  2. Exposure
  3. Demosaic (just for additional sharpening)
  4. Rotating and crop
  5. Color calibration (white balance)
  6. Tone equalizer (for fixing lighting/dynamics issues)
  7. RGB primaries (for broad color changes to emulate film like color shifts, and even saturation)
  8. Color balance RGB (for additional color boost)
  9. Color balance RGB (for split toning)
  10. Color equalizer (for more specific color shifts)
  11. Contrast equalizer (for film-like softening or modern boost)
  12. Diffuse or sharpen (bloom)
  13. Color balance RGB (halation color)
  14. Grain
3 Likes

I find that tone equaliser doesn’t necessarily “travel well.” The mask and curve are rather picture specific. But if your sets are close enough, it might.

You can configure dt to give your chosen start-point rating

You might like to try

for i in *.jpg
do
blah blah blah
done

Just a wee bit simpler. No need to use ls: the shell can find those files without it.

e&oe. I’m quite capable of typos and syntax errors even in a couple of lines of code!

Yeah it is not usually one of the modules I past across the photo set. It is typically one of those modules I use for fixing/ninety in specific images

1 Like

Oh sweet!

1 Like

Sorry for the dense question, but how does eg copy-pasting rotation and crop to other images image sense in your context? Do you shoot still life from a tripod?

Same here, it is a very finicky module.

Even in the same picture, if exposure (earlier in the pipeline) is changed after using TE, one should rejig TE. Hence the suggestion of another instance of exposure after (above) TE if one feels the need to adjust overall brightness later in the edit. A good suggestion: I can’t remember whom to credit.

I do this a lot, when using a simple CTRL-C/CTRL-V between one hand-held pic and the next.

  1. Check the rotation and crop: one can be lucky but it usually needs at least refinement. Oh, and anything retouched
  2. Check modules with drawn masks. For me, that usually means eyes.
  3. Check graduated density positions.

Sounds like a lot of fuss? I’d say that it is less fuss than messing with selective copy/paste. something not needed or wrong? Just turn off or reset the module. Mask hopelessly wrong? Unless the module settings are also wrong, easier to just delete and redraw the mask.

Haha no problem. After I edit the hero image exactly how I want I compress the history stack and use selective copy (cntrl+shift+c) to select all modules that are NOT specific to that image (crop, rotate, etc.)

2 Likes

I think using while loop came from my habit back in early day where a for loop can run out of memory on a folder having too many files. Sometimes my loop works on a folder with dynamic content, too, the while loop is not as safe, but it can pick up new files added to the folder dynamically.

2 Likes