Main Content

imguidedfilter

Guided filtering of images

Description

B= imguidedfilter(A,G)filters binary, grayscale, or RGB imageAusing a filter guided by imageG.

example

B= imguidedfilter(A)filters input imageAunder self-guidance, usingAitself as the guidance image. This syntax can be used for edge-preserving smoothing of imageA.

B= imguidedfilter(___,Name,Value)filters the imageAusing name-value pairs to control aspects of guided filtering.

Examples

collapse all

Read and display an image.

A = imread('pout.tif'); imshow(A)

Figure contains an axes object. The axes object contains an object of type image.

Smooth the image usingimguidedfilter. In this syntax,imguidedfilteruses the image itself as the guidance image.

Iguided = imguidedfilter(A);

For comparison, smooth the original image using a Gaussian filter defined byimgaussfilt. Set the standard deviation of the filter to 2.5 so that the degree of smoothing approximately matches that of the guided filter.

Igaussian = imgaussfilt (2);

Display the result of guided filtering and the result of Gaussian filtering. Observe that the flat regions of the two filtered images, such as the jacket and the face, have similar amounts of smoothing. However, the guided filtered image better preserves the sharpness of edges, such as around the trellis and the collar of the white shirt.

montage({Iguided,Igaussian})

Figure contains an axes object. The axes object contains an object of type image.

Input Arguments

collapse all

Image to be filtered, specified as a binary, grayscale, or RGB image.

Data Types:single|double|int8|int16|int32|uint8|uint16|uint32|logical

Image to use as a guide during filtering, specified as a binary, grayscale, or RGB image of the same height and width as imageA.

Data Types:single|double|int8|int16|int32|uint8|uint16|uint32|logical

Name-Value Arguments

Specify optional comma-separated pairs ofName,Valuearguments.Nameis the argument name andValueis the corresponding value.Namemust appear inside quotes. You can specify several name and value pair arguments in any order asName1,Value1,...,NameN,ValueN.

Example:Ismooth = imguidedfilter(A,'NeighborhoodSize',[4 4]);

Size of the rectangular neighborhood around each pixel used in guided filtering, specified as a positive integer or a 2-element vector of positive integers. If you specify a scalar value, such asQ, then the neighborhood is a square of size[Q Q]. Do not specify a value greater than the size of the image.

Example:'NeighborhoodSize',[7 7]

Data Types:single|double|int8|int16|int32|int64|uint8|uint16|uint32|uint64

Amount of smoothing in the output image, specified as a positive number. If you specify a small value, only neighborhoods with small variance (uniform areas) will get smoothed and neighborhoods with larger variance (such as around edges) will not be smoothed. If you specify a larger value, high variance neighborhoods, such as stronger edges, will get smoothed in addition to the relatively uniform neighborhoods. Start with the default value, check the results, and adjust the default up or down to achieve the effect you desire.

If you specify a guide imageG, then the default value ofDegreeOfSmoothingdepends on the data type ofG, and is calculated as0.01*diff(getrangefromclass(G)).^2. For example, the default degree of smoothing is650.25for images of data typeuint8, and the default is0.01for images of data typedoublewith pixel values in the range [0, 1]. If you do not specify a guide image, then the default value depends on the data type of imageA.

Data Types:single|double|int8|int16|int32|int64|uint8|uint16|uint32|uint64

Output Arguments

collapse all

Filtered image, returned as a numeric array of the same size and data type asA

Tips

  • TheDegreeOfSmoothing参数指定了一个软阈值方差for the given neighborhood. If a pixel's neighborhood has variance much lower than the threshold, it will see some amount of smoothing. If a pixel's neighborhood has variance much higher than the threshold it will have little to no smoothing.

  • Input imagesAandGcan be of different classes. If eitherAorGis of class integer or logical, thenimguidedfilterconverts them to floating-point precision for internal computation.

  • Input imagesAandGcan have different number of channels.

    • If bothAandGare RGB images, thenimguidedfilterfilters each channel ofAindependently using the corresponding channel ofG.

    • IfAis an RGB image andGis a single-channel image, thenimguidedfilterfilters each channel ofAindependently using the same guidance image,G.

    • IfAis a single-channel image andGis an RGB image, thenimguidedfilterfiltersAusing the combined color statistics of all the three channels ofG.

References

[1] Kaiming He, Jian Sun, Xiaoou Tang.Guided Image Filtering. IEEE®Transactions on Pattern Analysis and Machine Intelligence, Volume 35, Issue 6, pp. 1397-1409, June 2013.

Introduced in R2014a