Basecurves

Let’s build our own basecurves

In this episode I work through each of the steps needed to build a custom basecurve. I also share some code I use to build a separate base curve for each camera body and ISO I use. In the end I show how to set up Darktable to automatically apply the appropriate basecurve to your RAW files.

Another in our faster format, but packed with information. It builds on knowledge from previous videos, running full-tilt through tools and methods to achieve the edit. For fuller explanations, return to the Home Page and scroll down to Topics Discussed or Modules Used on the right-hand bar. Click on any of these, and we assemble a complete playlist of every instance from a knowledge base of our first 27 videos for quick review right here on the site.

Build dt-curve-tool

cd
cp .config/darktable/data.db .config/darktable/data.db.bak
git clone git://github.com/darktable-org/darktable.git
cd darktable/tools/basecurve
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=$YOUR_INSTALL_PATH -DCMAKE_BUILD_TYPE=Release ..
sudo cmake --build . -- install

sample.jpg for creating basecurve

My script to build basecurves (make sure Darktable isn’t running when you run this)

#!/bin/zsh
rm iso_model_* basecurve.dat basecurve.fit.dat basecurve.sh dt-curve-tool.bin tonecurve.dat tonecurve.fit.dat
ls |grep -i jpg |head -n1 |cut -d'.' -f1 |read file
ls "$file".* |grep -iv jpg |grep -iv xmp |head -n1 |cut -d'.' -f2 |read ext
ls *.$ext |while read file; do
  exiftool "$file" |grep -i iso |head -n1 |awk -F': ' '{print $2}' |read iso
  exiftool "$file" |grep -i model |head -n1 |awk -F': ' '{print $2}' |read model
  echo $file $iso $model >>iso_model_db
done
cat iso_model_db |cut -d' ' -f2- |sort |uniq >iso_model_combinations
cat iso_model_combinations |while read combo; do
  echo $combo |cut -d' ' -f1 |read iso
  echo $combo |cut -d' ' -f2- |read model
  grep " $combo" iso_model_db |cut -d' ' -f1 |while read file; do
    dt-curve-tool-helper "$file"
    last="$file"
  done
  dt-curve-tool -z -e $last -n6 |sed -e "s/$model/$model ($iso)/g" >basecurve.sh
  sh ./basecurve.sh
  rm basecurve.dat basecurve.fit.dat basecurve.sh dt-curve-tool.bin tonecurve.dat tonecurve.fit.dat
done

Sunrise Bracket

Managing Dynamic Range: Focus Stacking Helps my HDR Shot

I used bracketing in this sunrise shot to manage wide dynamic range, but lost detail because of it.
For this week's edit, I create my ideal grayscale image using a focus stack, selective channel information and some other favorite tools. I then apply that grayscale version back to the original to add tonal contrast just where I want it. Lots of fun for me; I hope you enjoy it too.

This video builds on knowledge from previous videos, running full-tilt through tools and methods to achieve the edit. For fuller explanations, return to the Home Page and scroll down to Topics Discussed or Modules Used on the right-hand bar. Click on any of these, and we assemble a complete playlist of every instance from a knowledge base of our first 27 videos for quick review right here on the site.

Sunrise RAW 1
Sunrise RAW XMP 1
Sunrise RAW 2
Sunrise RAW XMP 2
Sunrise RAW 3
Sunrise RAW XMP 3
Sunrise Focus XMP
Sunrise HDR XMP 1
Sunrise HDR XMP 2

Advancetown Lake

Haze Makes a Tricky White Balance

There is a strong blue tint to the distant hillsides, so I break the image into four different regions for color correction. I work with a custom L channel, and use the lowpass module to create a reflective lake surface. All sorts of fun with this shot.

This video is the third in our faster-edit format. It builds on knowledge from previous videos, running full-tilt through tools and methods to achieve the edit. For fuller explanations, return to the Home Page and scroll down to Topics Discussed or Modules Used on the right-hand bar. Click on any of these, and we assemble a complete playlist of every instance from a knowledge base of our first 27 videos for quick review right here on the site.

Advancetown Lake RAW
Advancetown Lake RAW XMP
Advancetown Lake TIFF #1 XMP
Advancetown Lake TIFF #2 XMP