vkdt dev diary, pt2

Oh I’m not specifically looking to buy the Zephyrus G14 but a Ryzen 6000 device in general (more specifically a 13-14" convertible with a U series processor, a good 90-120Hz 16:10 screen and decent connectivity). But I’ll report as soon as I have bought something (which could take a while given the current very limited options)

OK ! :slight_smile:

today’s updates are mostly in the colour module. it now supports profiles created from spectral sensitivity curves (ssf) created as colour lookup table (clut) textures by a special profiling tool.

it now supports optional input routed from the colour picker module which can be used for spot whitebalancing or deflickering of timelapse videos.

whitebalancing uses CAT16 to match the source colour (D65 white or picked input) to the destination colour (manual rgb sliders or use a skin tone preset).

as a reminder, the i-raw module supports the input of sequences of raw files. the picker can be used to normalise the exposure of these. the exposure parameter of the colour module can still be used to apply keyframes after the deflickering step, to fade in/out your sunset timelapse video for instance.

i had to do a fairly ugly thing to support float atomic add on amd hardware… and i’m not sure i succeeded (because i don’t have access to amd gpus). so if you have such a device and want to give it a spin i’d be curious to hear whether or not it works. in particular the pick module (colour picking) would do odd things and/or crash if it doesn’t work.

3 Likes

Oooh, mkssf looks REALLY interesting. It would be interesting to see that compared to known SSFs for a camera where available, and it would also be interesting to compare ColorChecker-derived DCP profiles to @ggbutcher 's SSF data that he’s collected using his setup.

I don’t yet have a comparison, but I have mkssf-divined data @hanatos gave me for the Fuji X-T30 and I’ve used it in a few PlayRaws. Here’s the profile patch report based on the ColorChecker reference:

  D02 DE 0.00 DE LCh +0.00 +0.00 +0.00 (gray 80%)
  D03 DE 0.20 DE LCh -0.02 +0.18 -0.09 (gray 70%)
  D04 DE 0.28 DE LCh -0.03 +0.26 +0.09 (gray 50%)
  D05 DE 0.28 DE LCh -0.03 +0.27 +0.07 (gray 40%)
  D06 DE 0.36 DE LCh -0.00 +0.35 -0.05 (gray 20%)
  B04 DE 0.66 DE LCh +0.13 -0.14 +0.63 (dark purple)
  D01 DE 0.66 DE LCh -0.19 -0.59 -0.23 (white)
  A05 DE 0.77 DE LCh +0.17 -0.25 +0.60 (purple-blue)
  B02 DE 0.78 DE LCh -0.30 -1.00 -1.27 (purple-blue)
  A03 DE 0.90 DE LCh +0.07 -0.46 +0.61 (purple-blue)
  A01 DE 1.15 DE LCh +0.08 -0.18 +1.14 (dark brown)
  A06 DE 1.15 DE LCh +0.33 -0.72 +0.83 (light cyan)
  C01 DE 1.22 DE LCh -0.43 -0.47 -1.46 (dark purple-blue)
  A04 DE 1.24 DE LCh -0.12 -0.61 -1.07 (yellow-green)
  A02 DE 1.42 DE LCh +0.54 +0.15 -1.30 (red)
  B03 DE 1.71 DE LCh +0.81 +0.63 -1.36 (red)
  C06 DE 1.71 DE LCh +0.99 -0.28 +1.35 (blue)
  C05 DE 2.14 DE LCh +1.34 +0.84 +1.44 (purple-red)
  B01 DE 2.25 DE LCh +0.41 -2.19 +0.35 (strong orange)
  C02 DE 2.46 DE LCh +0.39 -2.41 +0.32 (yellow-green)
  B06 DE 2.80 DE LCh +0.23 -2.58 +1.06 (light strong orange)
  C03 DE 2.89 DE LCh +2.02 +0.14 -2.06 (strong red)
  B05 DE 2.99 DE LCh -0.10 -2.89 +0.77 (light strong yellow-green)
  C04 DE 3.68 DE LCh +0.26 -3.67 +0.02 (light vivid yellow)

max dE of 3.68 isn’t quite as good as a profile based on measured data, but it’s better than most matrix profiles…

I have a Nikon D7000 and multple SSF datasets for it; sometime soon (?) I hope to make a couple of target shots and crank out its mkssf-dataset.

@hanatos might find some of Jim’s analysis useful here - Dimensionality of some patch sets: Photographic Science and Technology Forum: Digital Photography Review

yeah… that was the old version. now i’m making use of a bit more information and am hoping to have improved matters… we’ll see. still need to verify the photograph-of-chart data flow.

heh very nice. isn’t it great that it’s > 3 (tristumulus colour)? but we kinda knew that spectral considerations do improve our results. but good to put a number (7) on even the most complex charts (190 patch ampas).

Hi, today I tried to set up display color management in vkdt. It failed with this error message:

$ ./read-icc.py /usr/share/color/icc/colord/fujitsu.icc
Traceback (most recent call last):
File “…/vkdt/bin/./read-icc.py”, line 27, in
float(tokens[5]),
ValueError: could not convert string to float: ‘0:’

My display profiles work well with other applications, eg. darktable. Does vkdt have any special requirements on parameters to be used in profile generation (using argyllcms)?

The profile type is probably wrong, you need to create a single gamma + matrix profile with Displaycal resp. argyllcms. vkdt likes simple profiles.

1 Like

On a crappy intel onboard gpu this program still runs fast for me, nice!

I was having a look at the highlight recovery since I’ve also tested pyramid inpaint method for that. Something which might help: add a dark threshold setting as well (i.e. inpaint dark areas as well as clipped). It can improve sky inpainting quite a lot in some cases. Often I have it at 65% of the input.

Edit: to add, the dark areas are not actually replaced in the output - it’s only to improve the recovered colour at things like building edges etc. This may require more pyramid levels too.

Thanks for this tip! I will try to make a new profile with simple parameters tomorrow.

Made a new profile from existing calibration data according to your tip, installed it, and yes, it worked as expected. Very happy, thank you so much.

1 Like

nice, good to hear!

right. thanks for jumping in here. i updated the documentation with a paragraph about this now.

3 Likes

btw recent changelog:

  • added skin retouch wavelet module + preset (retouch.pst)
  • load presets from local directory .config/vkdt/presets as well as the shipped ones when pressing ctrl-p in darkroom mode
  • clamp the hell out of dt ucs to avoid artifacts
  • document that mkssf works with dcp profiles directly (not just dng images)
  • duplicate image in lighttable mode via shift-d
  • darkroom history (toggle with ctrl-h)
  • files view (mount/umount/copy from usb in background jobs)
  • ability to store IDT colour matrix in params (to make history robust to rawspeed changes and to allow custom presets for esoteric input colour spaces)
  • random fixes (preset creation, maker model, default params in draw, broken graphs don’t crash, validation layer stuff, fix dark tones in zone module)

and future plans include

  • automatic a/b view creation by merging graphs of certain points in processing history for better comparison
  • port job scheduler widget from usb copy to export and maybe copy/paste history and the likes
  • abstract the presets selection dialog and use it for tagging and blocks selection
  • i have some fixes for increased saturation in the colour module in the pipeline
4 Likes

This was the command I used to get a simple working display profile:
colprof -v -qm -ag -nc fujitsu
(quality=medium, gamma+matrix)
The profiles I had earlier, that did not work with vkdt were made with:
colprof -v -qh -as -nc fujitsu
(quality=high, shaper+matrix)

oh, i hadn’t thought about that. thanks for the pointer. yeah i don’t support general/sampled shaper curves at this point, just gamma.

Impressive list…

changelog:

i think i should make a release soon. there’s always still stuff i think should go into such a release, but at this point i’m thinking some minimal features and a lot of testing would be needed.

5 Likes

With a 9 page tutorial now also in the June edition (issue 259) of Linux Magazine (English), I guess the pressure is building up … :slight_smile: