I guess the problem is the local contrast.
It completely ruins the smoothness of the image tone. As if the image would break up, and it loses its - how shall I put it - its luminous character
If you want to make black dark tones, you increase the contrast near the dark tones.
The curve I suggested has 3 zones. Just to make it more clear, let me fix some numbers:
- the first zone (the flat one) ending point is at x=16
- the second zone (the curve to go from the y=0 segment to the y=x segment) ending point is at x=32
- the third zone (the y=x segment) starts from x=32 and goes uo to x=255
What is the effect of this curve on the image luminosity ?
- (first zone) if the luminosity of a pixel is less or equal to 16, the luminosity is setted to 0
- (second zone) if the luminosity of a pixel is in (16,32) range the luminosity is decreased following the curve
- (third zone) if the luminosity of a pixel is greater than 32 it is untouched
Suppose in your image you have a pixel with luminosity = 15 and a near pixel with luminosity = 35.
In this case the gradient is (35-15)=20.
Whe you apply the curve the resulting gradient will be (35-0)=35.
You have more contrast, but this is exactly what you want.
Changing the values, you can get a different effect.
The smoothness of the image tone may be more or less preserved increasing the second zone going gently from y=0 segment to y=x segment.
If you extend the second zone, you have a smoother increase of the contrast, but more tones are affected. Of course.
You have to tweak the values depending on image.
Remember that a curve is a tonal adjustment that works for all the image, unless you apply it selectively.
Jacopo