The GAUSS_SMOOTH function smooths using a Gaussian kernel. Also known as a Gaussian blur, it is typically used to reduce noise and detail in an image.
Examples
x = 200 & y = 200
img = FLTARR(x,y)
index = LINDGEN(LONG(x)*LONG(y))
img[WHERE(index MOD 20 LT 9)] += 125
img[WHERE(index/y MOD 10 LT 9)] += 125
im1 = IMAGE(img, LAYOUT=[3,1,1], MIN_VALUE=0)
img2 = GAUSS_SMOOTH(img ,2)
im2 = IMAGE(img2, /CURRENT, LAYOUT=[3,1,2], MIN_VALUE=0)
img3 = GAUSS_SMOOTH(IMG, 2, /EDGE_TRUNCATE)
im3 = IMAGE(img3, /CURRENT, LAYOUT=[3,1,3], MIN_VALUE=0)
Syntax
Result = GAUSS_SMOOTH (Data [, Sigma] [, /EDGE_MIRROR | /EDGE_TRUNCATE | /EDGE_WRAP | /EDGE_ZERO] [, KERNEL=value] [, /NAN[, MISSING=value]] [, WIDTH=value])
Return Value
Returns an array of smoothed data of the same size and type as the input data.
Arguments
Data
The input data. The data must be a 1- or 2-dimensional array.
Sigma
The standard deviation value to be used in calculating the Gaussian kernel. Sigma can either be a scalar or a two-element vector. If Sigma is a scalar, the same sigma value is applied for each dimension that has length greater than 1 (dimensions of length 1 are skipped). If Sigma is a vector, each element of Sigma is used to specify the sigma value for each dimension of Data. Unless the WIDTH keyword is set, the width of the kernel is determined by Sigma such that the kernel contains approximately three standard deviations in each dimension. If Sigma is not supplied, a default value of 1.0 is used.
Keywords
EDGE_MIRROR
Set this keyword to compute the values of elements at the edge of Data by mirroring the subscripts of Data at the edge. If none of the EDGE_* keywords are set, the values of Result will be set to zero where the kernel extends beyond the edge.
EDGE_TRUNCATE
Set this keyword to compute the values of elements at the edge of Data by repeating the subscripts of Data at the edge. If none of the EDGE_* keywords are set, the values of Result will be set to zero where the kernel extends beyond the edge.
EDGE_WRAP
Set this keyword to compute the values of elements at the edge of Data by wrapping the subscripts of Data at the edge. If none of the EDGE_* keywords are set, the values of Result will be set to zero where the kernel extends beyond the edge.
EDGE_ZERO
Set this keyword to compute the values of elements at the edge of Data by zeroing the subscripts of Data at the edge. If none of the EDGE_* keywords are set, the values of Result will be set to zero where the kernel extends beyond the edge.
KERNEL
If this keyword is set to a named variable, the Gaussian kernel used will be returned. By calling CONVOL with this kernel and by using the sum of the kernel as the scaling factor, you can obtain an equivalent result to calling GAUSS_SMOOTH.
MISSING
Set this keyword to the numeric value to return for elements that contain no valid points within the kernel. The default value is 0 for byte or integer input, and NaN for floating point input. This keyword is used only if the NAN keyword is set.
NAN
Set this keyword to check for occurrences of the IEEE floating point values NaN or Infinity in the input data. Elements with the value NaN or Infinity are treated as missing data. Missing data are ignored when computing neighboring elements. In Result, missing elements are replaced by the calculation of all other valid points within the kernel. If all points within the kernel are missing, the result at that point is given by the MISSING keyword.
WIDTH
The width of the smoothing window. This value can be used to override the value calculated from the Sigma. Width can either be a scalar or a two-element vector. If Width is a scalar, the same width is applied for each dimension that has length greater than 1 (dimensions of length 1 are skipped). If Width is a vector, each element of Width is used to specify the smoothing width for each dimension of Data. Values for Width must be smaller than the corresponding Data dimension. If a Width value is even, Width+1 will be used instead.
Note: A Width value of 0 or 1 implies no smoothing. However, if the NAN keyword is set, any NaN values within Data will be treated as missing data and will be replaced.
Tip: For a multi-dimensional array, set widths to 1 within the Width vector for dimensions that you do not want smoothed.
Version History
See Also
GAUSS2DFIT,GAUSSFIT, GAUSSINT,GAUSS_CVF,GAUSS_PDF