guided_filterπ
Short descriptionπ
guided_filter β Guided filtering of an image.
Signatureπ
guided_filter( image Image, image ImageGuide, out image ImageGuided, integer Radius, real Amplitude )
Descriptionπ
guided_filter filters the input Image using the
guidance image ImageGuide and returns the result in
ImageGuided. Image and ImageGuide must be of the
same size and type.
The Radius is the size of the filter mask. Bigger values increase
the area of influence of the filter and less detail is preserved.
The value of Radius does not influence the runtime of the operator.
Amplitude is used to decide what is an edge and what is a
homogeneous area.
Bigger values of Amplitude lead to stronger edges being smoothed.
As a rule of thumb, Amplitude should be lower than the contrast of
the edges that should be preserved.
Please note that the contrast in uint2 or real images may differ
significantly from the default values of Amplitude and adjust the
parameter accordingly.
Influence of the Guidance Imageπ
If Image and ImageGuide are identical,
guided_filter behaves like an edge-preserving smoothing with
a filter mask with Radius.
Pixels at edges that have a contrast significantly greater than
Amplitude are preserved, while pixels in homogeneous
areas are smoothed. Hence, guided_filter is a fast
alternative to anisotropic_diffusion or bilateral_filter.
| Β | ||
|---|---|---|
![]() |
![]() |
![]() |
| (1) | (2) | (3) |
(1) Image and (2) ImageGuide are identical.
That leads to edge-preserving smoothing in (3) ImageGuided.
If Image and ImageGuide are different, Image is
smoothed with a filter mask with Radius, except in areas
where ImageGuide has edges with a contrast significantly greater
than Amplitude.
| Β | ||
|---|---|---|
![]() |
![]() |
![]() |
| (1) | (2) | (3) |
(1) Image and (2) ImageGuide are different.
(3) ImageGuided: Only edges are preserved where
ImageGuide has edges.
If ImageGuide is constant, guided_filter is equivalent to
2 consecutive calls of mean_image with mask size
2*Radius+1.
| Β | ||
|---|---|---|
![]() |
![]() |
![]() |
| (1) | (2) | (3) |
(2) ImageGuide is constant. This is equivalent to a double
smoothing of (1) Image with mean_image.
(3) ImageGuided
Influence of the smoothing parametersπ
The following examples show the influence of Amplitude on an
artificial image. In this image, the noise level is
10 gray values, the left edge has a contrast of 50 gray values,
the right edge has a contrast of 100 gray values.
The yellow line shows a gray-value profile of a horizontal cross section.

Original image with overlaid gray profile, used as Image and
ImageGuide.

Filter result with Amplitude = 1:
No effect because Amplitude is below noise level.
Therefore noise is treated as edge and preserved.

Filter result with Amplitude = 25:
Noise is smoothed, edges are preserved.

Filter result with Amplitude = 50:
The weaker edge is smoothed, the stronger edge is preserved.

Filter result with Amplitude = 100: Both edges are smoothed.
Rolling Guided Filterπ
guided_filter can be applied iteratively. In this case, the result
of one iteration is used as guidance image for the next iteration.
This can be useful, e.g., to remove
small structures from the original image even if they have a high contrast.
In the following example, the rolling guided filter is used to separate the texture from the original image.
| Β | ||
|---|---|---|
![]() |
![]() |
![]() |
| (1) | (2) | (3) |
Texture removal with the rolling guided filter: (1) Original, (2) separated structure, (3) separated texture.
| Β |
|---|
* Apply the rolling guided filter |
* (use a constant guide for the first iteration). |
gen_image_proto(Image, ImageStructure, 0) |
for I := 1 to 4 by 1 |
\(\qquad\)guided_filter(Image, ImageStructure, ImageStructure, 1.5, 10) |
endfor |
* Separate texture by subtracting large structures from the original. |
sub_image(Image, ImageStructure, ImageTexture, 1, 128) |
Since guided_filter with a constant ImageGuide is similar to
mean_image, the first iteration could be replaced by a call of
mean_image (or a similar smoothing filter), which is faster.
Mathematical Backgroundπ
The calculation of the filtered gray value \(I'_{i}\) at the position \(i\) is done according to the following formula:
where
and
where \(I_{i}\) and \(G_{i}\) are the gray values of
Image and ImageGuide at the pixel position \(i\),
\(\omega_{i}\) is the neighborhood with radius Radius around
the pixel \(i\),
\(\overline{a_{i}}\), \(\overline{b_{i}}\),
\(\overline{I_{i}}\),
and \(\overline{G_{i}}\) are the mean of all \(a\),
\(b\), \(I\), or \(G\) in
\(\omega_{i}\), \(\sigma_{G_{i}}\) is the standard
deviation of all gray values of \(G\) in \(\omega_{i}\), and
\(|\omega_{i}|\) is the number of pixels in \(\omega_{i}\).
For an explanation of the concept of smoothing filters see the introduction of chapter Filters / Smoothing.
Execution informationπ
Execution information
-
Multithreading type: reentrant (runs in parallel with non-exclusive operators).
-
Multithreading scope: global (may be called from any thread).
-
Automatically parallelized on tuple level.
-
Automatically parallelized on channel level.
-
Automatically parallelized on domain level.
Parametersπ
Image (input_object) (multichannel-)image(-array) β object (byte / uint2 / real)
Input image.
ImageGuide (input_object) (multichannel-)image(-array) β object (byte / uint2 / real)
Guidance image.
ImageGuided (output_object) (multichannel-)image(-array) β object (byte / uint2 / real)
Output image.
Radius (input_control) integer β (integer)
Radius of the filtering operation.
Default: 3
Suggested values: 1, 2, 3, 5, 10
Restriction: Radius > 0
Amplitude (input_control) real β (real)
Controls the influence of edges on the smoothing.
Default: 20.0
Suggested values: 3.0, 10.0, 20.0, 50.0, 100.0
Restriction: Amplitude > 0
Exampleπ
(HDevelop)
read_image (Image, 'mreut')
* Edge-preserving smoothing
guided_filter (Image, Image, ImageGuided, 5, 20)
* Rolling filter (5 iterations)
gen_image_proto (Image, ImageGuide, 0)
for I := 1 to 5 by 1
guided_filter (Image, ImageGuide, ImageGuide, 5, 20)
endfor
Combinations with other operatorsπ
Combinations
Possible predecessors
Possible successors
threshold, dyn_threshold, regiongrowing
Alternatives
Referencesπ
Kaiming He, Jian Sun, Xiaoou Tang: βGuided Image Filteringβ; IEEE Transactions on Pattern Analysis and Machine Intelligence; PAMI-35, no. 6; S. 1397-1409; 2013.
Moduleπ
Foundation











