with darktable 2.60IMG_3129.CR2.xmp (15,9 Ko)
Photoflow (Hue preserved but some banding on the left)
IMG_3129.pfi (47.2 KB)
Darktable with no preserving chrominance v5 (very smooth gradients but yellow hue-shift)
Darktable with no preserving chrominance v6
IMG_3129.CR2.xmp (9.4 KB)
wow seems to be hard to get colour right on this one. tried vkdt
:
using a spectral input profile and set white balance to around 4000K such that it wouldn’t only be red.
thanks for posting
darktable 4.0
IMG_3129_02.CR2.xmp (19.5 KB)
Add a new one
IMG_3129_08.CR2.xmp (29.0 KB)
Thanks for sharing!
dt 3.9.0 + sigmoid
IMG_3129_02.CR2.xmp (11.0 KB)
a slightly warmer version by tweaking color calibration:
IMG_3129.CR2.xmp (10.6 KB)
I really like the soft tones and the colours in this one.
Thank you @age for bring this nice image up after 3 years
Hier is my edit:
Darktable 4.0.0 IMG_3129.CR2.xmp (21.3 KB)
Little improvement on my tonemapping using the power-norm for smoother gradients (no more banding on the wall on the left)
IMG_3129.pfi (49.8 KB)
i=[r,g,b]
max=max(r,g,b)
min=min(r,g,b)
lum=(r^3+g^3+b^3)/(r^2+g^2+b^2)
rtm=(1-(pivot/((r/gray)^power+pivot))) // tone mapping or simple tone curve on the red channel
gtm=(1-(pivot/((g/gray)^power+pivot)))// tone mapped or simple tone curve on the green channel
btm=(1-(pivot/((b/gray)^power+pivot)))// tone mapped or simple tone curve on the blu channel
crgbtm=[rtm,gtm,btm]
maxtm=max(rtm,gtm,btm)
mintm=min(rtm,gtm,btm)
lumtm=(rtm^3+gtm^3+btm^3)/(rtm^2+gtm^2+btm^2)
chromatm=1-(mintm/lumtm)
chroma2=1-(min((r-lum+lumtm),(g-lum+lumtm),(b-lum+lumtm))/lumtm)
chromamult=if(chromatm==0||chroma2==0,0,chromatm/chroma2)
i=[r,g,b]
final_image=((i-lum)*chromamult+lumtm)*0.60+crgbtm*0.40;
That’s very nice! It’s your tool open source? Do you have a link?
Right now it is a G’mic script that I use in Photoflow from the G’mic interpreter
-fill power=1.40;gray=0.18;pivot=(1-gray)/gray;max=max(i0,i1,i2);min=min(i0,i1,i2);lum=(i0^3+i1^3+i2^3)/(i0^2+i1^2+i2^2);i0tm=(1-(pivot/((i0/255/gray)^power+pivot)))*255;i1tm=(1-(pivot/((i1/255/gray)^power+pivot)))*255;i2tm=(1-(pivot/((i2/255/gray)^power+pivot)))*255;crgbtm=[i0tm,i1tm,i2tm];maxtm=max(i0tm,i1tm,i2tm);mintm=min(i0tm,i1tm,i2tm);lumtm=(i0tm^3+i1tm^3+i2tm^3)/(i0tm^2+i1tm^2+i2tm^2);chromatm=1-(mintm/lumtm);chroma2=1-(min((i0-lum+lumtm),(i1-lum+lumtm),(i2-lum+lumtm))/lumtm);chromamult=if(chromatm==0||chroma2==0,0,chromatm/chroma2);chromamult=if(chromamult<0,0,chromamult);i=[i0,i1,i2];i=((i-lum)*chromamult+lumtm)*0.60+crgbtm*0.40;
Color profile turned off.
White point picked on grey deck in foreground.
Black point reset to 0
Enhanced Edges and Residual contrast in Wavelets
L*a*b* color stretch, shift cyan sky to blue.
HSV Hue channel bumped pink sunset color to more natural yellow-orange gradient.
IMG_3129.jpg.out.pp3 (16.3 KB) ← RT
dev
Another , and sadly I will not continue to try something new, is to copy the hue from CIE xyY to the rgb tonemmaped image
(Edit: It seems the copying the hue from xyy is better for noisy images)
in this case I blended the hue from xyY at only 60% strength
IMG_3129xyy.pfi (47.7 KB)
CIE xyY is not a perceptual color space so if we blend the hue at 100% strength we could get pinkish colors, for example the fire test image turn to this
Blended at 60%
Hi @age, it’s been nice to follow your experiments. The results look quite nice. I would like to ask for a couple of clarifications:
- Is your tone-mapping followed by some hue-preserving gamut-mapping (or chroma clipping) operation (in a perceptual colorspace)? Pardon my ignorance here, I’m not very familiar with Photoflow.
- I’m curious about the way you handle chroma here - you seem to use the difference between the norm and individual channels as the representation of chromaticity. Is there a particular reason you chose to do this rather than just multiply the original RGB ratios (i.e.
(r / norm, g / norm, b / norm)
by the tonemapped norm? I.e.final RGB (color preserving) = tonemapped norm / original norm * (r, g, b)
. This is the way it’s done in filmic. If I understand correctly, your approach is to rather adjust the amount of white in the pixel. - Blending in the individually processed RGB channels with the color-preserving tone-mapping results seems to be a nice way to achieve bit of that desaturation of highlights that is often desired or even required for some images and restoring the original hue (partially), even if done in xyY which is not a hue-linear color space, allows to avoid the color shifts caused by individual RGB processing
- Are there any research papers / other resources you’ve found useful or followed in developing the tone-mapping operation?
- Have you experimented with tone-mapping (or just the hue preservation) in perceptual color spaces such as Oklab?
The reason I’m curious because there have ideas thrown around in IRC about a possible filmic v7 which would allow the user to mix between the individual RGB processing result and the norm-preserving result, and additionally a control for the degree of hue preservation. This shares some similarity with your approach and would certainly allow for some flexibility over a strict chromaticity preserving approach.
P.S. moderators, if you see this spinning totally off-topic for this thread, please feel free to split it. However I wanted to ask here because @age has posted nice results from their tone-mapping and also code in this thread so the context is here.
No, I just let rgb channels hard clipping
Yes, sadly when used with a sigmoid shaped tonemapper shadows looks too much desaturated and highlights have too much or too low saturation.
My approach is simply copy the hue channel from the image before tonemapping to the rgb per channel tonemapped image
I don’t think, however the film-like curves used in Rawtherappe (developed by Adobe) are just the equivalent of blending the hue from the HSV color space to the rgb tonemapped image
Yes
https://discuss.pixls.us/t/oklab-cielab-linear-cielab-tonemapping/28767
The main issue with this method is that it removes way too much saturation from red,orange,yellows hues
However copying only the hue from oklab to the rgb tonemapped image it would be better , I haven’t test it, yet