I'd like to see a filter duplicating the functionality of Nuke's grade node in Krita. The URL attached is a screenshot of the tool in Nuke. Grade is the workhorse color correction tool in Nuke. Nuke's user guide gives a pretty extensive summary of what the settings do: http://help.thefoundry.co.uk/nuke/9.0/#reference_guide/color_nodes/grade.html TL;DR, it's a tool that lets you do fundamental color correction. Works well with float images. Very useful for matching different images to each other - for this the workflow would be: To match image ' A' to image 'B' 1.Pick blackpoint and whitepoint from image A. All values at or below the blackpoint picked will be set to 0 or less. Similarly, anything at or above the whitepoint will be set to 1 or more. Effectively this normalizes the image and removes most color casts. 2. pick 'lift' and 'gain' from image B's darkest and highest values. The black values set in the previous step will be now lifted up to the 'lift' value and the whitepoint picked will be set to the 'gain' value. Image 'A' is now in more or less the same dynamic and tonal range as image B. A big plus of this approach is that since it's explicitly mathematical, the tool works well with float images without need for special handling of values beyond the 0...1 range. Otherwise, colour adjustment filters are poorly suited to float images. Although 'levels' essentially duplicates blackpoint, whitepoint, lift, gain and gamma, it's hard to understand what happens to float values with it. Curves can be made to work but you need to allow the user to zoom out beyond the 0...1 range, potentially infinitely. You probably don't need everything from this - if you're not expecting negative values, 'gain' and 'multiply' are effectively the same thing. I'm not sure if you want to allow negative values at all, they lead to confusing results. Being able to toggle value clamping would be useful.
One more thing - you'd want to have colour pickers for each of the operators. This allows you to sample values from images. Also, you'd want to expose the rgb values for each setting, with the ability to lock the values together to adjust all channels by the same amount. I'm not sure how well this would gel with the current UI in krita.
Hi, Yes, this looks like an interesting filter. If I'm honest, though, I cannot promise we'll get down to implementing it soon unless we find sponsoring for it. It looks like it would be a week or two of work at least.
WISHGROUP: Larger Usability Fixes
Git commit b3f9a490011abb5c7c717789ba68c55f89897db8 by Wolthera van Hövell tot Westerflier. Committed on 11/10/2017 at 13:35. Pushed by woltherav into branch 'master'. [Feature] ASC-CDL color balance filter(Slope, Offset, Power) This is a simple color balance filter as decided by the American Society of Cinematographers. It's purpose is to make communicating color balance easier over different applications. It is also interesting in that it is so simple it does not clip high-bit depth values. There's still some issues with the filter, but they are mostly GUI issues, so I am pushing this to prevent bitrot. I have noted the possible list of improvements in the header of the widget class. Differential revision: https://phabricator.kde.org/D8184 CCMAIL:kimageshop@kde.org M +1 -0 plugins/filters/CMakeLists.txt A +11 -0 plugins/filters/asccdl/CMakeLists.txt A +127 -0 plugins/filters/asccdl/kis_asccdl_filter.cpp [License: GPL (v2+)] A +61 -0 plugins/filters/asccdl/kis_asccdl_filter.h [License: GPL (v2+)] A +103 -0 plugins/filters/asccdl/kis_wdg_asccdl.cpp [License: GPL (v2+)] A +62 -0 plugins/filters/asccdl/kis_wdg_asccdl.h [License: GPL (v2+)] A +9 -0 plugins/filters/asccdl/kritaasccdl.json A +105 -0 plugins/filters/asccdl/wdg_asccdl.ui https://commits.kde.org/krita/b3f9a490011abb5c7c717789ba68c55f89897db8
Git commit 3f81a96dc7d5b95ba4cc3c9b1eb647fb630a92dd by Boudewijn Rempt, on behalf of Wolthera van Hövell tot Westerflier. Committed on 14/10/2017 at 08:39. Pushed by rempt into branch 'krita/3.3'. [Feature] ASC-CDL color balance filter(Slope, Offset, Power) This is a simple color balance filter as decided by the American Society of Cinematographers. It's purpose is to make communicating color balance easier over different applications. It is also interesting in that it is so simple it does not clip high-bit depth values. There's still some issues with the filter, but they are mostly GUI issues, so I am pushing this to prevent bitrot. I have noted the possible list of improvements in the header of the widget class. Differential revision: https://phabricator.kde.org/D8184 CCMAIL:kimageshop@kde.org M +1 -0 plugins/filters/CMakeLists.txt A +11 -0 plugins/filters/asccdl/CMakeLists.txt A +127 -0 plugins/filters/asccdl/kis_asccdl_filter.cpp [License: GPL (v2+)] A +61 -0 plugins/filters/asccdl/kis_asccdl_filter.h [License: GPL (v2+)] A +103 -0 plugins/filters/asccdl/kis_wdg_asccdl.cpp [License: GPL (v2+)] A +62 -0 plugins/filters/asccdl/kis_wdg_asccdl.h [License: GPL (v2+)] A +9 -0 plugins/filters/asccdl/kritaasccdl.json A +105 -0 plugins/filters/asccdl/wdg_asccdl.ui https://commits.kde.org/krita/3f81a96dc7d5b95ba4cc3c9b1eb647fb630a92dd
Thank you, Wolthera, for taking the time to work on this! I'm looking at this filter now in 4.0 alpha, and it does seem to work on float images fine. I started thinking that since this is done, being able to clone the Grade node's functionality should be fairly close now. I've puzzled out the transforms for turning Blackpoint, Whitepoint, Gamma, into Slope,Offset, Power and got the following expression in Nuke for calculating RGB: S= 1 / (whitepoint - blackpoint) O= -1 * blackpoint *s P = 1 / gamma and getting RGB: R=pow( R * S + O ,P) G=pow( G * S + O ,P) B=pow( B * S + O ,P) So e.g. red = (R*S+O)^P The results from this match with the results from the Grade node in Nuke, so the math seems correct. However, when I set e.g blackpoint to 0.1, I get these values for SOP: S= 1.1111... O=-0.1111... P=0.65 So I'd expect that in Krita, to do this transform, I'd need to set S O P to approx. 72815, -7280, 42598. This can't be done, since the values available in the filter are clamped to 0..65535. Is this a hard limitation currently? Is there a way to use this tool to e.g. multiply the image by values over 1? It seems not at the moment, as that would require values over 65535 for the controls. Thanks again for the work, and sorry for pestering you here! I hope I'm not too unclear on what I'm going on about.