Test a new noise reduction filter

Here’s a new noise reduction filter for the plugin to test. You can find it in Testing>Iain Fergusson>Iain nr 2019

I think it gives good results and is quite quick compared to some other GMIC denoising filters.
Still a work in progress and I have a much slower version I am working on.

Short description of controls:

HF recover: The plugin runs a 5x5 median filter and the recovers the details from the noise it has removed. This controls the amount of recovery

MF and LF Smooth: For coarser details, a bilateral filter is used for the smoothing before the detail recovery, these control the bilateral strength

Chroma: This controls how much additional smoothing the bilateral filter does on the chroma noise.

Recovery Amount: This control the recovery amount for the coarser details.

Gamma: This allows you to adjust the noise reduction in the shadows or highlights

Long Description:

The filter does spatial filtering (median or bilateral) and then applies a frequency domain filter on the difference between the filtered and original image. This is applied at 3 scales.

The frequency domain filtering is interesting. Once the difference between the spatial filtering and original is obtained, the filter does a local normalisation so that the noise level is consistent across the image. From there the filter split the normalised difference image into tiles, and tiles an FFT is applied to each tile. The filter takes the median of all the tiles to find the average level of noise at each frequency.
The noise level tile is then multiplied by the ‘recovery amount’ set by the user. This level is then subtracted from each tile. In addition, the recovery amount sets a threshold at which allows high levels to pass through untouched.
Once the tiles have been processed in this manner and converted back to a full spatial domain image, the local normalisation is reversed and the details are added back into the spatial filter image.
The advanced of this method is that it requires very little input from the user. When the spatial filter is a median filter there is no threshold needed to be set by the user for the spatial filtering, the only threshold is for the detail recovery. This does have the drawback of losing some small impulsive details, but I think the speed and simplicity make up for that.
A median filter is not appropriate for the coarser levels because the impulsive details that are lost are much more noticeable. This is why I have used a bilateral filter for the coarser levels. At coarser levels, the processing is done on a smaller version of the image so the speed penalty for using a bilateral filter is minimised.

Edit: Forgot to mention that the output layer name is the processing time in seconds.

I tested it with this picture - https://farm1.staticflickr.com/275/31333770463_6425de9162_b.jpg

Some areas are still quite noisy regardless of playing, but the smooth-noise kind.

One of the things I want nice looking noise reduction. One of the things I used to do in the frequency domain is have a hard threshold, but the artifacts are really obvious, so with this one there’s a softer approach which gives you more noise, but fewer artefacts.
The slower version I am working on has an additional spatial domain filter after the frequency domain one which reduces the noise further but is a test of patience.