Make Gaussians
DigitalMicrograph Script
Generate a 1D and 2D Gaussian distribution (demonstrate function overload).
Preview
/////////////////////////////////////////////////////////////////////
// (c) Gatan Inc.
/////////////////////////////////////////////////////////////////////
// This simple script generates a one dimensional and a two dimensional Gaussian,
// and provides an example of overloaded functions in use; i.e. the methods
// have the same name, but are distinguished by their argument lits
/////////////////////////////////////////////////////////////////////
// last modified 08-July-2014 BS (Comments only)
/* This method creates a one dimensional Gaussian image of specified imagewidth,
peak position and width. It is called with image width, peak position and Gaussian width
arguments. It returns a 1d image (strictly speaking, 2d but with a height of unity )*/
image MakeGaussian( number imageWidth, number position, number gaussianWidth )
{
// Create a 4-byte image of the specified width, and reate a Gaussian form,
// making use of the icol intrinsic variable
image img := RealImage("1D Gaussian", 4, imageWidth, 1 )
img = exp( -((icol-position)/gaussianWidth) ** 2 )
// Return the Gaussian image
return img
}
/* This method creates the two dimensional variant of the above. Note the extra dimension size argument*/
image MakeGaussian( number imgWidth, number imgHeight, number position, number gaussianWidth )
{
// Create a 4-byte image of the specified width and height, and create a 2dGaussian form,
// using the icol and irow intrinsic variables
image img := RealImage("2D Gaussian", 4, imgWidth, imgHeight )
img = exp( -1 *( ((icol-position)/gaussianWidth) ** 2 +\
((irow-position)/gaussianWidth) ** 2 ) )
// Return the image
return img
}
// Call the 2d MakeGaussian method, displaying the results
// Likewise, call the 1d MakeGaussian method, displaying the results
showimage( MakeGaussian( 512, 512, 256, 300 ) )
showimage( MakeGaussian( 1024, 512, 300 ) )