-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Negadoctor module order #18302
Comments
I agree with this suggestion. From the perspective of a frequent negadoctor user and not a Darktable developer, I think negadoctor could actually benefit from a functionality split. The settings in the "film properties" module should be applied early in the pixel pipeline. To me, it would make sense to ditch the color correction tab entirely, and let us control this with The "print properties" tab, in my view, is a less-powerful version of I guess I wish we had some way to invert the negative very early in the pipeline, setting D min and D max and perhaps entering a color temperature for the light source, staying in scene-referred space, and then from there use normal Darktable tools as if we're working with a positive digital image. I recognize there may be many technical reasons I don't understand that make this non-feasible. Ultimately, to solve any of these issues, it will take someone who has a lot of time and energy to rethink this part of the pipeline. I am a programmer but with limited C knowledge, and I've spent a bit of time trying to decipher the negadoctor code, but it would be a massive effort for me. Maybe in the fall when I'm unemployed I could take a look at it. |
Negadoctor's place is good.
Yes it's counter-intuitive, but it's working as intended : Negadoctor inverts the image so the result is inverted. See the pipeline as a pile that have to be read from bottom to top.
This will not be the same, the color correction tab works in film's log space. You can neutralize tones with that panel, then color grade using an other module.
You can do in Negadoctor what you are talking about. :D boost exposure for mid-tones and use the specular highlights tool to pull back highlights, while adjusting the grade (which is a power operation) to get correct contrast.
No it's not operating in display-referred space at all. Negadoctor's code is based on Kodak's Cineon which takes linear data of film. The goal is to have your image in the 0-1 range and the specular highlights tool helps compressing the highlight tones to not loose them. |
Negadoctor does work in display-reffered space, though -- you can see this information when you hover over the module -- its input and output are linear display-referred and non-linear display-referred, respectively.
The negadoctor tools to handle this are much less powerful than tools that already exist in Darktable, though. There's no way to define the highlight masking, no way to actually shape the curves. The
Consider this use case: I am photographing a shoot in some lighting conditions, and on the first image of my roll I take a photograph of my physical Calibrite Color Checker. In a negadoctor-based workflow, how can I use the photo of that Color Checker to calibrate colors for the rest of my film roll? I simply can't. There's no way to do it. I think that's bizarre and points to an issue with the philosophy of negadoctor. I make these comments as someone who loves Darktable and negadoctor. I think they're great tools that help me produce some beautiful images. But I think negadoctor's design philosophy fundamentally conflicts with Darktable's design philosophy. |
Is your feature request related to a problem? Please describe.
Currentl module order V5.0 puts negadoctor very late in the pipeline. This is causing many modules like exposure, tone equalizer and color calibration to behave in a counter-intuitive way.
Describe the solution you'd like
By moving negadoctor before the exposure module, the inversion of the image would happen sooner in the pipeline and the subsequent modules would behave as with a regular positive image.
Alternatives
Additional context
The text was updated successfully, but these errors were encountered: