NR Reduction washes out colour - some random experiments without conclusion ...

Hi All, I was using RT for some time,
The noise reduction algorithm in RT is pretty powerfull and I’m happy with it.
But I was wondering why sometimes it struct me that it is removing colours from my picture. I didn’t have no strong evidence, so I thought to perform some kind of experiment to prove it.

Sadly I still didn’t draw any actionable conclusions from the experiment, or maybe just proving something that is obvious to most of You. But still I will share with you hoping that maybe creating interesting and informing discussion.

So here we go …

The image is ISO 6400, 1inch camera. Saturation bumped up +26 (in colour toning).

Here is two pictures from the RT GUI.

  1. without noise reduction

  2. with noise reduction Luminance/Detail: 40/40

You can see, that the bricks in the picture have strong chroma noise, but removing that noise - we are removing also the intensity of the colour.

So the question is - does the picture after noise reduction follows some king of “conservation of colour energy” law :wink: ?? (sorry I’m not a colour scientist).

I asked how to measure it - so just resized both images to 600pix height with gimp (bicubic). And here are the results.

gimp - resized 600px - without NR

gimp - resized 600px - with NR 40/40

What can I see after this experiment:

  1. the NR image is clearly softer, even in 600px height - I was not expecting that after such intense shrinking it will be still visible
  2. the intensity of colour (bricks upper left, brown bushes in the bottom) is greater without NR.
  3. maybe in some applications when the final image is small - it is counterproductive to use NR - shrinking will be better.

I am curious what You think - please share.

What really I’m interested in - maybe some kind of global saturation / colour shift on larger areas is needed after RT NR to retain this “conservation of colour energy” law :slight_smile: ?? What I guess not knowing the NR algorithm is that - noise pixels provide information about colour and this pixels are removed - not contributing to area mean colour and this information is lost in final image. Maybe it is possible for noisy pixels to contribute and shift the final image in the direction of the mean.

Regards.

I’ve noticed this tendency of chroma NR to degrade details in some pictures. I usually don’t find it objectionable, except in pictures with very fine colour details like moss or lichen, where chroma NR can take a lot of the colour out of those details. Sometimes, I disable chroma NR if the picture isn’t very noisy (ISO 400 or below). Other times (higher ISO or badly exposed), I fiddle with the chroma NR curve to try to mitigate the effects of the chroma NR on colourful details, and with some pictures fiddling with the red-green or blue-yellow sliders seems to help too. For most pictures, I don’t find any of this necessary and can just use the automatic global setting (or disable chroma NR altogether at low ISOs), but when I do see details degraded I find its possible to get a bit better results than the automatic if you play around with the curves and sliders. I would love if the automatic results could be made better, but as it is now, I only find it necessary to tweak the settings in maybe 10% of the pictures I do.

Don’t know the answer, but did you try RGB colour space instead of Lab? In my experience tools working in Lab space have tendency to wash out colours, especially in this kind of extreme cases like iso 6400 and 1" sensor.

Luminance noise settings you played around take care of luminance noise. Colour noise is dealt with the Chrominance settings with 4 different method options and a curve to play around. See Rawpedia for details Noise Reduction - RawPedia

Different demosaicing methods can give different looking results. In my experience usually enabling CA correction in raw tab has detrimental effect to colours in this kind of very noise cases.

Yeah I forgot to mention that, trying different demosaicing algos can affect the way noise and noise reduction looks, I find this can help with high ISO pictures. I haven’t tried disabling the CA correction in the raw tab before, I’ll try that next time I have a picture where I find the chroma NR is robbing some colours. I haven’t noticed a huge difference switching between LAB and RGB, but I haven’t experimented with that very much either, I’ll have to play around some more. FWIW I find this most objectionable in low ISO pictures, my noisiest pictures often don’t have the level of fine details and nuanced colours to make the chroma NR a liability, and in the less noisy pictures I still find just disabling it can sometimes be the easiest option, although if you don’t mind spending a few minutes you can usually do a pretty good job if you’re willing to play with the curve and at least 2 of the 3 sliders for the chroma NR. Like if you’re seeing a problem in reds with the NR, play with the curve, the red-green slider, and the master slider, and between the three of them you can probably do better than the default. But if the picture doesn’t have strong chroma noise I’ll often just disable it instead, and if it has strong chroma noise, in a lot of cases I find the detail might just not be there in the picture to be recovered, like when I shoot macro photos at really high ISO because I’m too lazy to use a tripod, the results just can’t be made optimal because the input isn’t. In these cases, I’ll use the chroma NR and I don’t find its really doing any serious harm, its better than the noisy picture.
Its pretty rare that I run into a picture where I worry about this, but from time to time I do notice a bit of detrimental effect from the colour NR. Anyway like I said, I’ll either play with the sliders to my liking, or just not use it. Noise reduction is always a balancing act in my experience anyway, the best solution is to have little to no noise in your pictures, and failing that, you’re always going to have to decide on some balance of the positive and negative effects of NR and set it to your personal liking. It might be possible to improve the default, but I would be the last person to know how, I’m just a user of it. I suppose it also depends a lot on the camera and settings, I mostly have Canon files these days, and I find after a certain threshold of noise the positives of chroma NR outweigh the negatives, but with different files the same effect I see on colour only fairly rarely might show up more, I have no idea. Since I have Canons (and not the very best ones), underexposure can cause quite a bit of noise if I don’t get all my settings right, but when I don’t mess anything up in the capture, usually the processing is relatively easy.

To add on to this thread, also make sure to lower the NR gamma value, so it makes the NR target the shadow areas heavier (where the noise tends to be heavier), and less destructive of highlight detail. Also set the demosaicing to LMMSE, so you have to do less chroma noise reduction. I think you will notice this to improve results.

When I was updating my noise reduction filter for GMIC I deliberately chose to denoise in RGB space to reduce the wash out you describe. In LAB or Ycbcr often colour noise swamps details in the colour channels. However, colour details and Luna details are often correlated. Eg, colour edges and Luna edges are in the same place.

Something fuzzy from the back of my head: I read in some paper about denoising that treating channels not independent of each other, but a as a vector, should improve the local stability of the denoising. When it comes to denoising colors, that would mean treating a,b or cbcr as a two dimensional vector. It’s interesting that in your case, switching to RGB gave you better results. Did you treat all channels as one vector and denoised that, or each channel independently?
(of course treating channels independently is easier to implement I guess, you just need to denoise a b&w image per channel)

Yeah, this does sound promising. Using some information from the luma channel, such as edges, to put hard stops on chroma noise reduction to prevent color bleed does seem like the right direction.

Personally, when I denoise, I always do it before demosaicing, on the assumption that noise come from sensels (sensor elements) and that’s the time to remove it, before demosaicing spreads the noise to other pixels.

If demosaicing is done before denoising, then noise that was isolated to one sensel becomes spread to a number of pixels, and to all channels of each of those pixels. So it may make sense to treat two or three channels of each pixel as a vector, and denoise that.

A couple of points relating to the OP:

I can’t see any reduction in intensity of the colours, either in your screenshots or the resized 600px versions.

Using Gimp eyedropper on the 600px versions, I can’t find any general difference.

Noise is random, by definition, and any group of pixels might happen to have noise that shifts colours in the same direction. This is a variation of the random walk (Random walk - Wikipedia) process. So any noisy group of pixels might be lighter, or more saturated, or redder, than the non-noisy pixels.

There are two effects:

(a) We interpret noise as detail (humans are good at inventing pattern from noise), so removing noise will remove apparent detail.

(b) No algorithm can guarantee to remove noise without also removing valid detail.

This can be about personal preferences. I generally prefer somewhat noisy images to denoised images.

1 Like

Well, I can see it! And the point is that noisy regions are desaturated, not randomly more saturated and or sometimes lighter/darker/value-shifted. Sounds a bit nitpicky, but it relates to your second effect: the detail which is removed is specifically saturation. The algorithm used seems to desaturate noisy saturated patches. Whether or not this is real…it is at least perceived as such.

To find out I propose an image pair from a tripod. One low iso, one high iso with and without applied NR. After that define 3pxby3px patches in both pics with mean and sd values for Hue Saturation and Value. Or simpler take the difference of both pics’ ab/uv/cbcr planes. If the residual has a consistent negative value where it was saturated before…that should tell more than an eyedropper. Would that setup suffice? Did I miss something?

The comments are a bit long. :slight_smile:

What I would say is that when you are removing noise there will always be a softening effect because you are essentially smoothing the image. This will reduce features and flatten contrast and hues locally and globally. The goal is to find ways to recover from this. Of course, finding a suitable algorithm and optimal parameters would help. The key is to be careful not to remove too much signal while removing noise. If you nuke the image, you won’t have anything left to recover.

PS Upload your image. I am sure plenty of people can provide you with a *.pp3 that will perfectly address the issue. :wink:

1 Like

I had some nr brick issues a while ago. See this thread

1 Like

Hi, sorry for not responding, I hope tommorow I will have the time to react for all great response, especially I would like to try some provided hints,

here is my original raw photo, sorry for not uploading it the first post - generally I have no problem uploading the files,

regards!

DSC09955.ARW (20.2 MB)

Ah, so by “intensity” perhaps @nullnull meant “saturation”? I can’t see it (dodgy eyes or screen or whatever) but I agree it is there.

f:\web\im>%IMG7%magick e04c1c4c7b9d934f5a9f68516abe48a6c6df1384.jpeg
 -crop 37x18+38+78 +repage -colorspace HCL -channel 1 -separate -format %[fx:mean] info:

0.0970853

f:\web\im>%IMG7%magick 3904708ea9fe41d2b6712dc5ed20b0631c8b0fcc.jpeg
 -crop 37x18+38+78 +repage -colorspace HCL -channel 1 -separate -format %[fx:mean] info:

0.0752635

The denoising has reduced saturation, the chroma channel of HCL. Well, that’s not surprising. Consider a photo of a neutral gray card, so the chroma is zero. In any pixel, the chroma cannot be decreased. Noise will either increase it, or leave it unchanged. So any noise will increase the average chroma.

Your photo isn’t of a neutral gray card but, like any normal photo, the chroma is low: about 0.1 on a scale of 0.0 to 1.0. So adding noise will increase chroma, and denoising will lower chroma.

EDIT: My misattribution of a quote. Sorry.

I am using one of GMIC’s inbuilt filters as a base, so I am not entirely sure what is going on inside. However, it is a patch-based noise reduction, so I assume that it is using a full RGB vector to compare the difference between patches. In fact, I use an RGB guide image that I desaturate somewhat to improve chroma noise reduction, so I guess that confirms my assumption.
I’m definitely not denoising the channels independently.
One downside to this approach is that it does not remove as much chroma noise as other approaches.

1 Like

I never talked about intensity, that was @nullnull . Some mixup there.

Every actual photo has noise. Every actual color photo thus has chroma-noise (greycard chroma noise is not zero). Adding noise will leave the mean of a group of pixels unchanged. Any objections against this reasoning?

The decrease in saturation is a factor 0,0752635/0,0970853=0,77. It’s fair to call this an artifact. And yes artifacts will happen, during NR, no question.

Thank you for the answer! I guess if it’s patch based it should be the full RGB vector, it would make less sense to do a channelwise patch-aggregation as this has the highest computational cost.

Have you tried different guide images? I mean different methods for generating the guide?

Cheers!

@PhotoPhysicsGuy and @nullnull: Sorry for my misattribution above, now corrected.

I agree with your reasoning. Adding noise to any channel will leave the mean of that channel unchanged, more or less. (But almost certainly not exactly.)

In my fairly limited experience of photographic noise, it isn’t an addition to a chroma (or saturation) channel. Rather, it is an addition to each of the camera RGB channels. If the chroma was low, this noise increases chroma. If chroma was high, this noise decreases it.

Late to the thread, but this quote resonates with something I do: most of my final images are downsized. To that end, I generally don’t denoise until I’ve had a chance to view the image at its final resolution, as the reduction interpolation really does mitigate a lot of noise expressed in the higher resolution. And, if I do decide to insert a denoise step after that, it is mostly less than if i’d have done it straightaway.

One thing I haven’t played with much is the introduction of a gaussian blur just prior to resize. That is supposed to tame the resizing artifacts from noise, but it might not mitigate the color changes being discussed.

FFT… (food for thought)

You can probably take a look at
CImg/plugins/nlmeans.h at master · GreycLab/CImg · GitHub
CImg/plugins/chlpca.h at master · GreycLab/CImg · GitHub