Selective Gaussian Blur node for denoising?

Hi, I have battled noise like most here and largely found myself losing. I have never seen selective gaussian blur mentioned though and I wonder why. Is it in blender anywhere and I just can’t find it?

The reason I ask is because I put my

“1000 sample, no reflective caustics, no refractive caustics, filter glossy 10”

image into gimp, ran the blur and the effect is has on noise while maintaining detail is better than any compositing node setup I have ever seen, and I have tried quite a few. I also prefer the results to the experimental denoiser (no disrespect I know it’s not finished and I am nothing but optimistic/hopeful about it) since it is kinder to edges I want to keep and does not mess with the colours.

Here are some shots blown up 300% showing how even minor details like scratches in the floor are being maintained.

I once saw a very in depth tutorial about using the bilateral blur, and with other passes a pretty complicated node setup was created that helped, but this seems a hell of a lot easier for the same if not better results.

Looks nice but what happens when you have textures applied? Fine details that are low contrast tend to get smudged out of existence.

I have applied this to the floor and used the exact same effect

It is a 400 samples render this time, just to save time

Left is unblurred, right is blurred. The far part of the floor is largely unchanged, slight loss of intensity of the white parts.

The close floor is very good though, here is an even closer shot of the close floor so you can really see what effect it is having (all images scaled without any interpolation)

Even the parts where the UV mapping is messed up has been maintained nicely.

With a texture like this normally I wouldn’t really need de-noising since it’s harder to notice the noise. My noise problems are usually on smoother surfaces, which this blur is really good with.

It’s by no means the perfect end all solution but from my attempts this is the easiest and best I’ve found so far (always open to ideas though! I have some scenes using 320x240 resolution that even 100,000 samples won’t remove the noise from… :().

It has 2 settings, blur radius and max delta, which I’ve found I need to vary per scene. All of these images used the same values though, both the less textured in the first post and this textured one.

A close look at the images though highlights the weakness of selective blurring.

That being that various spots of noise will be seen as ‘detail’ and be left alone (so you might end up with smudges left over even though much of the noise is gone). You can also forget about using for more moderate levels of noise because then it will remove details.

Things like that is why we need something more advanced like Lukas Stockner’s denoising project (because there’s no algorithm which can successfully determine which is noise and which isn’t just from the raw image file).

The delta setting can be changed for more moderate levels of noise, I use a lower value when I render at 4000 samples for example. Also I’m curious to know what spots of noise in my images you saw that where not blurred.

You are right though it has weaknesses, but the alternative at present is what, exactly? Next to nothing? My point is that a simple node with this functionality in the compositor seems to me like a no-brainer.

It’s essentially like the bilateral blur approach, where you use normal render passes and so on to try and decide what bit gets blurred and what does not, except it does all that for you, and works with textures like the above. In fact if this blur was given options to filter, material ID and so on it would be even more powerful.