Image denoising is the process of removing noise from a digital image. Noise in images can occur due to various factors such as low light conditions, high ISO settings, and image compression. There are various methods for denoising an image, including statistical methods, filter-based methods, and deep learning-based methods. Here I explore a few popular methods.


Gaussian kernel method

A Gaussian kernel is a low-pass filter that smoothens the image by blurring out high frequency noise while preserving low frequency details. A denoised image is obtained by convolving the gaussian kernel across each pixel in the input image. The size and standard deviation of the Gaussian kernel can be adjusted to balance smoothing and detail preservation.

Gaussian Kernel of Size 10 and Sigma 1


Reference 1 SPP Size: 5 Sigma: 1
Size: 5 Sigma: 2 Size: 10 Sigma: 2

Advantages

  • Simple and relatively fast on modern hardware

Disadvantages

  • Non-edge perserving
  • Does not account for local image statistics


Bilateral filter

A blast from the past: the Bilateral Filter proposed by C. Tomasi and R. Manduchi in 1998 is a non-linear, edge-preserving filter. The main idea is illustrated below: Size: 10 Sigma: 2 Unlike other filters such as the Gaussian filter that only consider the spatial proximity of pixels, the bilateral filter takes into account both the spatial proximity and the color similarity of pixels. It calculates the weight of each pixel in the filter window based on a Gaussian function of its distance ( g(.) ) from the center pixel and a Gaussian function of the difference in color intensity ( f(.) ) between the center pixel and the other pixels. This way, it can preserve edges and fine details in the image while smoothing out noise. The standard deviation of the two Gaussian functions can be adjusted to control the strength of the smoothing and the preservation of edges.

Reference 1 SPP sigma_color: 25 sigma_space: 20 sigma_color: 1 sigma_space: 1 sigma_color: 20 sigma_space: 20

Some fine tuning is necessary with this filter. The filter works well on regions with uniform color, low noise, and near boundaries (e.g. top of spheres). However, like shown on the bottom of the spheres, it is unable to deal with very high noisy regions without overly smoothing with the distance gaussian.

Neural Network Based Denoising

The simple test scene I have used to evaluate denoising algorithms has revealed the challenge of the task. The classical denoising methods given above assume that noise in an image is Gaussian and can be removed using Gaussian-based approaches. However, the results on the simple Cornell Box rendering indicate that noise is rarely purely Gaussian. This motivates one to tackle to denoising task with a neural network approach that makes little assumptions about the underlying noise distribution in the image. Training a neural network architecture on real images with corresponding noisy and denoised pairs would learn the desired mapping without explicitly defining the type of global noise in an image.