darktable-org / darktable

darktable is an open source photography workflow application and raw developer
https://www.darktable.org
GNU General Public License v3.0
9.77k stars 1.14k forks source link

Color Look Up Table: interface for manually editing more than 49 colors #11330

Closed AlexeyKhramtsov closed 2 years ago

AlexeyKhramtsov commented 2 years ago

Having 49 colors available for manual control is a major limitation of the Color Look Up Table module's true potential in my opinion.

The problem that I encountered is that for high quality color profiling (camera jpg/film emulation or calibrating by eye) each color needs to be controlled across multiple exposures and multiple light source temperatures which dramatically increases demand for control point amount. Stringing of multiple CLUT's with key color carry-over is possible but creates many issues with interpolated colors, performance and is a major inconvenience.

The proposition would be to add an option of choosing custom amount of color control points. An interface in case of choosing an option of more than 49 control points could be implemented as vertical extension of the current grid interface or as a list for instance.

The benefit of this feature would be that control over color would be limited by the skill of the user and not by the software.

MStraeten commented 2 years ago

Why not use the 3dLUT module instead? Whats the benefit of a proprietary solution? How should a Color Lookup table with more then 49 colors be defined? I doubt, this can be done manually... There seems to be a demand, for which the whole set of requirements needs to be taken into account - not just the UI. If you want to control multiple exposure or light sources then i doubt it's just adding a few more color patches - it's more important to understand the requirements dealing with the math behind it...

AlexeyKhramtsov commented 2 years ago

Let me describe the problem I was having. This is probably the most useful way I can answer. For context, I'm a technical artist in game dev and only have experience with Python, C# and HLSL so forgive me please if I'm suggesting something unreasonable - I couldn't work out if 49 colors is the UI limitation of the CLUT module just by reading the code on github. Also I have approximately 20 years of experience in realistic painting so my demands to color may be a bit excessive.

I have 2 projects to which having full manual control over ~196-512 color patches would be useful:

  1. Creating a color profile that corresponds to the way I see color and pleases my eye.
  2. Accurately copying the color profile of Fuji S5 Pro STD DR400% jpg which mostly covers point 1.

I started with copying S5 Pro to learn the ropes. I used 5 exposures of a custom scene in controlled lighting conditions ranging from very underexposed to near overexposed. Handling wide dynamic range and extracting the curve were straight forward. Handling color proved to be a problem.

I had to string 10 CLUTs with key color carry-over and value masks to control the whole spectrum. Vast majority of color patches is wasted on anchoring colors in such an approach.

In my estimation one 512 color patch CLUT would be enough to define a color profile that would satisfy the highest possible demands such as camera manufacturer's. 196 color patches would be enough for a very demanding user.

The key advantage to the CLUT module over lut 3D is real time assessment, the "what you see is what you get", inside one integrated package. Not as relevant for copying color profiles but essential for creating new ones.

I'm a huge fan of Darktable, it's as close as it gets to ultimate RAW developer thanks to it's powerful, flexible pixel pipe. For me personally what I described above is the only thing left to be desired. Unfortunately I can't assess how reasonable my wish is without digging in and making sense of the code.