Semi-offtopic (but related to other methods of changing tone curves) - Is it only certain modules that operate in lab, or most of them?
I’ve been fiddling with the exposure fusion module in basecurve as it’s strongly implied that it’s based on the approach used by enfuse, HOWEVER does not ever in any way deliver results similar to enfuse.
My conclusion so far is that, as far as I can tell - basecurve operates in linear RGB. As a result, exposure fusion creates a horrendously overexposed image. This is a result of:
- It’s not explicitly stated by Mertens et all that their exposure fusion algorithm was designed to work on sRGB data (or at least something that is gamma-encoded in some way) by the fact that they define “well exposed” as a value of 0.5 - but 0.5 in linear RGB is NOT middle grey but well up in the highlights.
- Enfuse works VERY well when fed sRGB images, and does not perform any colorspace conversion I can see on the input before doing its work.
- When I implemented a patch (I’m planning on submitting it as a WIP pull request for discussion this weekend) to convert the entire exposure fusion pipeline to operate on a gamma of 2.4 as an experiment, I got results VERY similar to enfuse (better, in fact, in highlights because of tracking pixels with channel values greater than 1.0 and hence de-weighting the highlights of pushed exposure contributors farther than if their values got clipped at 1.0 - as they would be if exported to an sRGB JPEG and then fed to enfuse)
However if basecurve is operating in Lab then all of my assumptions are wrong and I’m scratching my head as to how in the world I got the results I did.
Side note, as far as comments on development process:
opencl: blacklist Intel NEO. · darktable-org/darktable@4788b38 · GitHub - Really? A commit with no comments whatsoever? No link to an issue on redmine or the github issues list, or a description of what failure was occurring that was bad enough to blacklist ALL versions of the Neo driver on ALL hardware variations including any future Intel CPUs such as Ice Lake?
OK, something went wrong on someone’s machine with OpenCL and Intel’s new Neo driver. What was the failure scenario? Which Intel graphics variants were affected? All or just a subset? What version of the NEO driver? After all - there’s at least one post on these forums from someone who apparently had NO issues whatsoever with OpenCL on an Intel GPU until it was blacklisted with no documentation whatsoever on exactly why. If Intel fixes the issue in the driver - now all anyone except for one person knows is that the driver was blacklisted at some point for some reason and there’s no way to determine what the failure scenario was so someone can say, “hey the driver is fixed, let’s un-blacklist it”.
Even going back to the original commit that created the blacklist:
Fixes issue 11358 - which is https://redmine.darktable.org/issues/11358
Again - all Intel graphics hardware variants and all driver versions blacklisted, because one person had an issue on one of Intel’s lowest-end CPU/GPU combinations? (or did no one notice that the CPU/GPU in question was an Atom? The bug reporter never specified this but it can be inferred from some of their debug information submitted.) Was this issue verified on any other GEN8 variants? Did the bug reporter have a 12EU or 16EU GPU?