smooth_image ( Image : ImageSmooth : Filter, Alpha : )

Smooth an image using recursive filters.

smooth_image smooths gray images using recursive filters originally developed by Deriche and Shen and using the non-recursive Gaussian filter. The following filters can be choosen via the parameter Filter:

             'deriche1', 'deriche2', 'shen' und 'gauss'.
The ``filter width'' (i.e., the range of the filter and thereby result of the filter) can be of any size. In the case that the Deriche or Shen is choosen it decreases by increasing the filter parameter Alpha and increases in the case of the Gauss filter (and Alpha corresponds to the standard deviation of the Gaussian function). An approximation of the appropiate size of the filterwidth Alpha is performed by the operator info_smooth.

Non-recursive filters like the Gaussian filter are often implemented using filter-masks. In this case the runtime of the operator increases with increasing size of the filter mask. The runtime of the recursive filters remains constant; except the border treatment becomes a little bit more time consuming. The Gaussian filter becomes slow in comparison to the recursive ones but is in contrast to them isotropic (the filter 'deriche2' is only weakly direction sensitive). A comparable result of the smoothing is achieved by choosing the following values for the parameter:

            Alpha(deriche2) = Alpha(deriche1) / 2,
            Alpha(shen)     = Alpha(deriche1) / 2,
            Alpha(gauss)    = 1.77 / Alpha(deriche1).


Parameters

Image (input_object)
(multichannel-)image(-array) -> object : byte / uint2
Image to be smoothed.

ImageSmooth (output_object)
(multichannel-)image(-array) -> object : byte / uint2
Smoothed image.

Filter (input_control)
string -> string
Filter.
Default value: 'deriche2'
List of values: 'deriche1', 'deriche2', 'shen', 'gauss'

Alpha (input_control)
real -> real
Filterparameter: small values cause strong smoothing (vice versa by using bei 'gauss').
Default value: 0.5
Suggested values: 0.1, 0.2, 0.3, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 4.0, 5.0, 7.0, 10.0
Typical range of values: 0.01 <= Alpha <= 50.0
Minimum increment: 0.01
Recommended increment: 0.1
Restriction: Alpha > 0


Example
info_smooth('deriche2',0.5,Size,Coeffs) 
smooth_image(Input,Smooth,'deriche2',7) 

Result

If the parameter values are correct the operator smooth_image returns the value 2 (H_MSG_TRUE). The behavior in case of empty input (no input images available) is set via the operator set_system('no_object_result',<Result>). If necessary an exception handling is raised.


Parallelization Information

smooth_image is reentrant and automatically parallelized (on tuple level, channel level).


Possible Predecessors

read_image


Possible Successors

threshold, dyn_threshold, regiongrowing


Alternatives

gauss_image, mean_image, derivate_gauss, isotropic_diffusion


See also

info_smooth, median_image, sigma_image, anisotropic_diffusion


References

R.Deriche: ``Fast Algorithms for Low-Level Vision''; IEEE Transactions on Pattern Analysis and Machine Intelligence; PAMI-12, no. 1; S. 78-87; 1990.


Module

Foundation



Copyright © 1996-2008 MVTec Software GmbH