Tone Equalizer proposal

I totally agree, but if my next version looked like this, I would immediately have 5 people complaining about the use of vertical space.

2 Likes

This is as or more compact than many other current modules so I think that’s a bit of a harsh assess and a little extra space to combine and avoided the tab switching would be more than worth it …again in my opinion I think maybe also the complaint about vertical space was more around having the individual sliders tacked on the bottom wasn’t it?? I’m not sure but your take on the module I found to work well…if combined in a similar fashion to the way AP merged his module I don’t think it forces too much change but might be a usability enhancement… at least for some :slight_smile:

6 Likes

Maybe you should listen to some.of the feedback being provided to you instead of immediately labeling it as ā€œcomplaining.ā€

If we are going to try and turn this into a ā€œtake it or leave itā€ instead of an iterative, community driven process of discovery and improvement, then I vote for ā€œleave it.ā€

3 Likes

I’ll probably regret wading into this mini spat, but as someone who has followed this thread from the outset, I’m thinking it didn’t get off to the best start because there was pushback before anyone really tried it. While I understand the reasons why there was pushback, I can also understand frustration from the OP because he’s clearly put quite a lot of work and thought into this, and was probably hoping for more excitement. I think that’s a natural human response, even if it’s more emotional than rational.

There’s obviously been some defensive and snarky remarks since then, which have not helped, so I hope we can get it back on a more constructive track by coming to some consensus whether there should be any changes, and if so, what. And if that still leaves a gap in what people want, should there be an alternative module developed or an old one resurrected/updated?

As someone who can’t really code, I’m always really appreciative of people who want to work on Darktable and add/improve features, so I really don’t want to scare anyone off when they show enthusiasm.

14 Likes

Sure. But all solutions require compromises. Maybe that was the best compromise he found at the time. AurƩlien is clever, and knows way more maths than I do (and likely ever have known or will ever know). That does not mean there is no other, better solution. That section in the manual lists two points where a compromise had to be made:

curve smoothing
Control how the curve is interpolated between control points. Move the slider to the right to make the transitions between the control points more gradual, but beware that going past about 0.6 can introduce some instability (oscillations) in the curve due to mathematical constraints. Move the slider to the left for a more well-behaved curve, but beware that this can result in harsher tonal transitions that may damage local contrast.

Maybe a few years later, other people, when they have a look at that problem, can find a ā€˜better’ solution (with different, more tolerable compromises).
color equalizer is another module, where relatively small changes already cause oscillations:

Those can then be corrected manually – I think more people would prefer a curve that automatically produced this ā€˜corrected result’:

3 Likes

Changing things in an established application is hard. And, if you’ve spent any time at all in this community, you’ll know there are opinions and lots of them. @JovianSettler asked for feedback and he got it. I, for one, and less than happy that I was asked for my opinion, took the time to share it, just to have it pushed aside and labeled as ā€œcomplaining.ā€

Of course, we hear from the people who don’t like this particular module or have some issue with it, while the people that are using it are off using it, we don’t really hear from them so much.

While I can appreciate @JovianSettler trying to improve things, they should understand that an improvement for them is not necessarily an improvement for everyone.

This is one of those times, and this is not an improvement to this module for me, and in fact it isn’t even really the same module with the fundamental changes to how it works.

Yes,

In fact I think it’d be a nice module if you autofit the mask to the entire range, get rid of the simple sliders, and make this a scene referred tone curve. You could simplify the UI a lot and give people an interface they know while still harnessing the underlying power of the scene ref’d part of the pixelpipe.

Note that even with these changes, the curve still oscillates here too. It seem to oscillate less, but it is still there.

I’d really like to have this feedback addressed before we move forward at all.

1 Like

I wrote up more but while typing I found the proposal from @paperdigits that this could be a quite useful direction to go:

The Tone Equalizer as-is seems very powerful, and if you know what you’re doing it can be used to solve a lot of different problems. But if you just want to use it as a simple tone curve, there’s quite a few clicks to get there. The UI could be changed to make it less clunky to use, but it’s still a lot of UI for simple use cases like a tone curve.

The proposals by @JovianSettler for auto-fit of the mask and moving the mask controls out of the Advanced tab would be welcome by me, as I find the UI currently to be really annoying to use.

Either way, I win :slight_smile:

8 Likes

the color equalizer curve isn’t a curve but represents a somehow circular path that has been cut open and unrolled since the left and right end end represents the same hue value - so even quite more complex …

unsless someone provides the math for it, automagic won’t happen …

if you want a simple tone curve the theres rgb curve :wink:

1 Like

But it doesn’t have the guided filter in its current form. If that’s added, it would be a really nice feature enhancement, I think. Especially if its interface was more like Color Zones, but that’s just my preference :slight_smile: But I see something like this and keeping Tone Equalizer to be the ideal way forward.

And I know it won’t happen unless someone provides the math for it. Wish I could help out there but I can’t.

1 Like

Some maths was proposed in this other topic.

1 Like

It there never was an attempt to implement it - it’s like your agx module: unless someone bites the bullet and starts coding it and prof the benefits there’re just endless fruitless discussions.
Furthermore changing an existing module is a quite harder job since backward compatibility must be taken into account.
So instead of reasoning on changing internal stuff of tone equalizer it might be easier to start coding a scene referred zone system module with guided filters …
but some one must do it instead of just asking for it …

I am late to the party and I will also keep silent again for private reasons IRL.

From my perspective, I do not have many issues with ToneEQ.

There is only one thing bothered me from day-one of this module:

  • mask exposure/contrast compensation sliders are on masking tab
  • histogram is on the advanced tab
  • For precise attenuation one needs to forward/backward jump between those two tabs.

I pretty much dislike and had long argues with the author AurtƩlien Pierre by its time. He kept trying to convince me that it is not doable differently for this and that reason (as he usually behaves). That bar-indicator on masking tab did not guide me as precise as he always pretended it would be.

Nowadays I have mapped those two sliders to two rotaries on my midi-board (X-touch mini) and I can attenuate while looking at the advanced tab.

The luminance estimator / preserve details is another thing slightly above my head but from time to time I use it.

All the rest, I barely touch

After setting the mask, I hover the mouse on my image and scroll the wheel (for this I sometimes need to off/on the module as the rotaries seem to mess with the module-focus).

For me the ā€œsimpleā€ tab can just be hidden totally. Besides, please do not clutter the advanced tab.

I hope my workflow (above) will not be destroyed and nor the old edits.

In other words: Never change a running system
Thank you!

6 Likes

Post deleted by author

AFAICT, it’ll be a frosty day in hell the next time AP contributes to dt.

Sure, but what does that have to do with anything?

ā€œthus farā€ might be ā€œneverā€. That’s all.

1 Like

I think he was referring to the OP of this thread, not the module’s author.

1 Like

OK, everyone.

I might look into building a new module. There have been enough arguments for it in this thread, coding something from scratch is probably more fun anyway and hopefully this would avoid most of the fights happening here.

Summary: Nothing too fancy or innovative, but a module that does the same thing as the TE, with the guided filter histogram always force-aligned, but still having controls for blur amounts and details threshold to manually avoid artifacts like halos.

It would have multiple sets of user controls, with each using different internal curves. Those would also mostly be taken from other places in DT.

But first I need to finish my current project. If we actually merge it or not is a different question, but I need it as a proof of concept to be sure that the single new part (auto-aligning the mask) does work. I have two open unanswered questions on the discussion to the github pull request and a 3rd one has arisen, which I will post there soon. These need to be answered first.

Would everyone be on board with this and support me doing it?

21 Likes

Great to see that you are not despairing on this discussion! As I have already written above, I can’t offer much input on the mathematics. But offering a simple tool like you described sounds great to me, as I’m not a big fan of the TE module and would be happy having something new.

Anyway I’m a simple user, who has nothing to say. But you have my vote.

1 Like

It is a long time ago, and I wouldn’t presume to think that I was an expert.

However, this kind of interpolation was something I was involved with in another field. My recollection was that we used Hermite polynomials. You can use the derivatives of these to preserve the properties of the polynomial.

It was too many jobs ago, and I no longer have any documentation or code, but I am willing to try and find details if there is any interest.