I'm working on a camera profiling article, still much work left, but here's a preview of an elaborate workflow to make a Dual-Illuminant DNG profile based on shots of a CC24 and a custom home-made inkjet printer target made on semi-glossy paper.
It also show a little how I work iteratively using plots as guides. I also use RawTherapee for visual evaluations when comparing the look of profiles.
# 1. Make a custom target to top of the CC24 with some super-saturated colors
dcamprof make-testchart -l 15 -d 14.46,12.26 -O -p 210 custom-target.ti1
printtarg -v -S -iCM -r -h -T300 -p A4 custom-target
# 2. Print custom target to a semi-glossy OBA-free paper
# 3. Scan the target with a spectrometer
chartread -v -H -T0.4 custom-target
# 4. Create reference file
spec2cie -v -i D50 custom-target.ti3 glossy.cie
# 5. Setup light and measure spectrum, save to light.sp for later use
spotread -a -H -x
# 6. Shoot CC24 target, glossy target, and white card.
# 7. Crop export and convert to cc24.tif, glossy.tif and ff.tif
# 8. Apply flatfield
dcamprof testchart-ff cc24.tif ff.tif cc24-ff.tif
dcamprof testchart-ff glossy.tif ff.tif glossy-ff.tif
# 9. Scan values
scanin -v -dipn cc24-ff.tif ColorChecker.cht cc24.cie
scanin -v -dipn glossy-ff.tif custom-target.cht glossy.cie
# 10. Merge targets into one, letting CC24 have priority
dcamprof make-target -p cc24-ff.ti3 -a cc24 -p glossy-ff.ti3 -a glossy -d 0.03 combo.ti3
# 11. Make a bunch of preliminary profiles to evaluate saturation
when used with a film curve. Possibly you will want to
desaturate the profile a little. Do the evaluation visually
and subjectively in a raw converter.
dcamprof make-profile -i light.sp combo.ti3 chroma.json ; dcamprof make-dcp -t acr chroma.json chroma-0.dcp
dcamprof make-profile -i light.sp -k -1 combo.ti3 chroma.json ; dcamprof make-dcp -t acr chroma.json chroma-1.dcp
dcamprof make-profile -i light.sp -k -2 combo.ti3 chroma.json ; dcamprof make-dcp -t acr chroma.json chroma-2.dcp
dcamprof make-profile -i light.sp -k -3 combo.ti3 chroma.json ; dcamprof make-dcp -t acr chroma.json chroma-3.dcp
dcamprof make-profile -i light.sp -k -4 combo.ti3 chroma.json ; dcamprof make-dcp -t acr chroma.json chroma-4.dcp
# 12. Using the found chroma adjustment make a preliminary
# profile, dumping plots. Exclude glossy from the matrix
# optimizer to get as good base match as possible for the
# important normal colors represented by cc24
dcamprof make-profile -r dump1 -w cc24 0,1 -w glossy 0,0 -i light.sp -k -1.5 combo.ti3 preliminary.json
# 13. Start gnuplot (cd dump1; gnuplot -background gray) and plot
# target and LUT, plus LUT stretch vectors and DE vectors.
# Use 'set view equal xyz' and 'set view equal xy' to turn
# on/off scaling of lightness axis, must be turned off if
# error vectors are viewed in 3D.
gnuplot> splot 'nve-lut.dat' w l lc "beige", 'gmt-locus.dat' w l lw 4 lc rgb var, \
'gmt-adobergb.dat' w l lc "red", 'gmt-pointer.dat' w l lw 2 lc rgb var, \
'target-nve-lutve2.dat' w vec lc "black", 'target-nve-lutvm.dat' w vec lw 2 lc "olive", \
'targetd50-xyz.dat' pt 4 lc rgb var, 'targetd50-xyz.dat' using 1:2:3:5 w labels offset 3
# 14. Look in the plot for patches that pull in opposite directions and cause a
# bad bend in the LUT. Add those (typically one or two) to an
# exclude.txt and render
dcamprof make-profile -r dump1 -x exclude.txt -w cc24 0,1 -w glossy 0,0 -i light.sp -k 1.5 combo.ti3 preliminary.json
# 15. Make matrix-only and full correction profiles for sanity
# check comparisons later
dcamprof make-dcp -n "Canon EOS 5D Mark II" -t acr preliminary.json no-relax.dcp
dcamprof make-dcp -n "Canon EOS 5D Mark II" -t acr -L preliminary.json matrix.dcp
# 16. Relax the LUT (primarily for the glossy class) to improve
# smoothness. Re-render and replot for each change.
# a) It may be worthwhile to lock the matrix before changing DE k
# weights: save profile to separate file matrix.json and
# provide -m and -f parameters.
# a) Try relaxing DE weight even for the important CC24, setting
# it to at least 1 leads often to some relax without much loss
# in accuracy.
# b) Try changing CIEDE2000 k weights, 4,1,1 good start (less
# weight on lightness)
# Example result after iterating:
dcamprof make-profile -r dump1 -x exclude.txt -f matrix.json -m matrix.json \
-w cc24 2,1,4,1,1 -w glossy 4,0,4,4,1 -i light.sp -k -1.5 combo.ti3 final-1.json
# 17. Make final DCP, sanity check it by comparing it with
# no-relax.dcp and matrix.dcp. It should have better high
# saturation correction than matrix.dcp, and not lose too much
# accuracy compared to no-relax.dcp
dcamprof make-dcp -n "Canon EOS 5D Mark II" final-1.json final-1.dcp
# 18. Repeat steps 5 - 17 for the second illuminant
# 19. Merge to a dual-illuminant profile, here using a default
# film curve
dcamprof make-dcp -n "Canon EOS 5D Mark II" -t acr final-1.json final-2.json final-dual.dcp