Page MenuHome

Color correction is non-reversable on JPGs and PNGs
Closed, ResolvedPublic

Description

When using the curves panel in the U/V image editor to modify the C channel for a jpg or png image, moving the control point all the way to the top, then all the way to the bottom, and then back to the middle results in an image that is very different from the original image, even though the curve has been 'reset' to it's original position. Even clicking the Reset button does not fix the problem. However, applying the same process to an EXR image works fine, and the resulting image is the same as the original.

I suggest you unpack the three images in the blend file before testing it, so that you can use Reload to reset them.

Event Timeline

I can confirm here. In fact with non float images, just selecting one of the 2 points in the curve changes the image. This seems color management related.

What is the purpose of those curves anyway? Is that a replacement for image viewer LUT/gamma/exposure?

In 2.4x this feature was only enabled for float images, for byte images this doesn't work as it writes to the same buffer. This feature was added at the same time as EXR support, probably to show of high dynamic range, though simple gamma/exposure controls may be more practical I guess. The easy fix here is to disable the feature again for byte images.

Yep, those curves really don't do anything very practical IMO, it was mainly added like you say to test/show off high dynamic range.

Having said that, something that I think would simplify the image editor / viewer pipeline a lot (at the expense of more memory though), would be to give the image editor its own buffer for display. The current situation of having duplicated byte buffers for every float image (and vice versa) makes things quite complicated, making sure they're in sync and converting back and forth, especially when considering image viewer gamma correction, dithering, and in the future supporting custom LUTs for colour correction in an image viewer. Then you could also have extra display-time options like curves (or probably better just a simple exposure slider) just working off the the image viewer's own display buffer.

What do you think? Maybe there's things I haven't thought about, but the current code is a bit of a mess too...

I think as an _output_ tool, those curves are obviously inappropriate.

As a _testing_ tool for your current image, I could attest to their value. It is easy to use them to check your low levels or high levels by bending the curve accordingly and seeing how your values slot into the range.

That said, perhaps it would be better to mark them as a testing / viewer tool as opposed to the more output-implied "Curves" label?

Disabled curves for non-float images for now.

Brecht Van Lommel (brecht) changed the task status from Unknown Status to Resolved.Oct 2 2010, 9:32 PM