A bilateral filter is a non-linear, edge-preserving, and noise-reducing smoothing filter for images. It replaces the intensity of each pixel with a weighted average of intensity values from nearby pixels. This weight can be based on a Gaussian distribution. Crucially, the weights depend not only on Euclidean distance of pixels, but also on the radiometric differences (e.g., range differences, such as color intensity, depth distance, etc.). This preserves sharp edges.

Definition
The bilateral filter is defined as

and normalization term, , is defined as

where

  is the filtered image;
  is the original input image to be filtered;
  are the coordinates of the current pixel to be filtered;
  is the window centered in , so  is another pixel;
  is the range kernel for smoothing differences in intensities (this function can be a Gaussian function);
  is the spatial (or domain) kernel for smoothing differences in coordinates (this function can be a Gaussian function).

The weight  is assigned using the spatial closeness (using the spatial kernel ) and the intensity difference (using the range kernel ). Consider a pixel located at  that needs to be denoised in image using its neighbouring pixels and one of its neighbouring pixels is located at . Then, assuming the range and spatial kernels to be Gaussian kernels, the weight assigned for pixel  to denoise the pixel  is given by

where σd and σr are smoothing parameters, and I(i, j) and I(k, l) are the intensity of pixels  and  respectively.

After calculating the weights, normalize them:

where  is the denoised intensity of pixel .

Parameters
 As the range parameter σr increases, the bilateral filter gradually approaches Gaussian convolution more closely because the range Gaussian widens and flattens, which means that it becomes nearly constant over the intensity interval of the image.
 As the spatial parameter σd increases, the larger features get smoothened.

Limitations 
The bilateral filter in its direct form can introduce several types of image artifacts:
 Staircase effect – intensity plateaus that lead to images appearing like cartoons 
 Gradient reversal – introduction of false edges in the image.

There exist several extensions to the filter that deal with these artifacts, like the scaled bilateral filter that uses downscaled image for computing the weights. Alternative filters, like the guided filter, have also been proposed as an efficient alternative without these limitations.

Implementations 
Adobe Photoshop implements a bilateral filter in its surface blur tool. GIMP implements a bilateral filter in its Filters → Blur tools; and it is called Selective Gaussian Blur. The free G'MIC plugin Repair → Smooth [bilateral] for GIMP adds more control.
A simple trick to efficiently implement a bilateral filter is to exploit Poisson-disk subsampling.

Related models
The bilateral filter has been shown to be an application of the short time kernel of the Beltrami flow

  that was introduced as an edge preserving selective smoothing mechanism before the bilateral filter.

Other edge-preserving smoothing filters include: anisotropic diffusion, weighted least squares, edge-avoiding wavelets, geodesic editing, guided filtering, iterative guided filtering  and domain transforms.

See also 
 Gaussian filter
 Gaussian function
 Gaussian blur
 Convolution

External links 

 Kaiming He: Guided image filtering (faster than bilateral filter and avoids staircasing and gradient reversal artifacts)
 Haarith Devarajan, Harold Nyikal, Bilateral Filters, in: Image Scaling and Bilateral Filtering 2006 course
 Sylvain Paris, Pierre Kornprobst, Jack Tumblin, Frédo Durand, Bilateral Filtering: Theory and Applications, preprint
 Sylvain Paris, Pierre Kornprobst, Jack Tumblin, Frédo Durand, A Gentle Introduction to Bilateral Filtering and its Applications, SIGGRAPH 2008 class
 Ben Weiss, Fast Median and Bilateral Filtering, SIGGRAPH 2006 preprint
 Carlo Tomasi, Roberto Manduchi, Bilateral Filtering for Gray and Color Images (shorter HTML version), proceedings of the ICCV 1998
 Qingxiong Yang, Kar-Han Tan, Narendra Ahuja, Real-Time O(1) Bilateral Filtering

References 

Image noise reduction techniques