Main Content

Bilateral filtering of images with Gaussian kernels

specifies the amount of smoothing. When `J`

= imbilatfilt(`I`

,`degreeOfSmoothing`

)`degreeOfSmoothing`

is a
small value, `imbilatfilt`

smooths neighborhoods with small
variance (uniform areas) but does not smooth neighborhoods with large variance, such
as strong edges. When the value of `degreeOfSmoothing`

increases,
`imbilatfilt`

smooths both uniform areas and neighborhoods with
larger variance.

also specifies the standard deviation, `J`

= imbilatfilt(`I`

,`degreeOfSmoothing`

,`spatialSigma`

)`spatialSigma`

, of the
spatial Gaussian smoothing kernel. Larger values of
`spatialSigma`

increase the contribution of more distant
neighboring pixels, effectively increasing the neighborhood size.

uses name-value pairs to change the behavior of the bilateral filter.`J`

= imbilatfilt(___,`Name,Value`

)

The value of

`degreeOfSmoothing`

corresponds to the variance of the Range Gaussian kernel of the bilateral filter [1]. The Range Gaussian is applied on the Euclidean distance of a pixel value from the values of its neighbors.To smooth perceptually close colors of an RGB image, convert the image to the CIE L*a*b space using

`rgb2lab`

before applying the bilateral filter. To view the results, convert the filtered image to RGB using`lab2rgb`

.Increasing

`spatialSigma`

increases`NeighborhoodSize`

, which increases the filter execution time. You can specify a smaller`NeighborhoodSize`

to trade accuracy for faster execution time.

[1] Tomasi, C., and R. Manduchi.
"Bilateral Filtering for Gray and Color Images". *Proceedings of the 1998
IEEE ^{®} International Conference on Computer Vision*. Bombay, India.
Jan 1998, pp. 836–846.

`imdiffusefilt`

| `imgaussfilt`

| `imguidedfilter`

| `imfilter`

| `nlfilter`

| `locallapfilt`

| `imnlmfilt`