|
|||
NRAO Home > CASA > CASA Toolkit Reference Manual |
|
image.imagecalc - Function
1.1.1 Perform mathematical calculations on an image or images.
Description
This method is used to evaluate a mathematical expression involving existing
images. It fully supports both float and complex valued images. The syntax of
the expression supplied via the pixels parameter (in what is called the Lattice
Expression Language, or LEL) is explained in detail in note 223. This is a rich
mathematical language with allows all manner of mathematical operations to
be applied to images.
Any image files embedded in the expression may be native CASA or FITS (but not yet Miriad) images.
If successful, this method always returns an image analysis tool that references the image resulting from the calculation. This returned tool should always be captured and closed as soon as the user is done with it to free up system resources (eg, memory). The image analysis tool on which the method is called (eg the ia tool when one runs ia.imagecalc()) remains unaltered, eg it still refers to the same image it did prior to the imagecalc() call.
Values of the returned tool are evaluated ”on demand”. That is, only when a method is run on the returned tool are the necessary values computed. And in fact, the values have to be reevaluated for each operation (method call). This means that there is a small performance hit for using the returned tool rather than the image written to disk and that none of the images which were used in the expression should be deleted while the returned tool is in use because they must be accessed for calculating the expression each time an operation of the returned tool is performed. These limitations do not apply to the ouput image if one is specified with the outfile parameter; it is a genuine CASA image with numerical values. If outfile is blank, no ouput image is written (although the resulting image can still be accessed via the returned image analysis tool as described below).
Normally you should just write the image, close the returned tool, and open the results image with the default ia tool and operate on it. If you are interested in conserving disk space, you don’t need to keep the result of the calculation around for very long, and/or you are only going to do a small number of operations on the result image, should you set outfile=””.
Note that when multiple image are used in the expression, there is no garauntee about which of those images will be used to create the metadata of the output image, unless imagemd is specified. If imagemd is specified, the following rules of metadata copying will be followed:
1. The pixel data type of the image specified by imagemd and the output image must be the same. 2. The metadata copied include the coordinate system (and so of course the dimensionality of the output image must correspond to the coordinate system to be copied), the image_info record (which contains things like the beam(s)), the misc_info record (should one exist in the image specified by imagemd), and the units. 3. If the output image is a spectral image, the brightness units are set to the empty string. 4. If the ouptut image is a polarization angle image, the brightness unit is set to ”deg” and the stokes coordinate is set to have a single plane of type of Pangle.
Arguments
Inputs |
| ||
outfile |
| Output image file name. If blank the resulting image is
not written, but it can still be accessed via the returned
image analysis tool.
| |
| allowed: | string |
|
| Default: |
| |
pixels |
| LEL expression. Must be specified. For example
”myimage1.im + myimage2.im”.
| |
| allowed: | string |
|
| Default: |
|
|
overwrite |
| Overwrite (unprompted) pre-existing output file?
| |
| allowed: | bool |
|
| Default: | false |
|
imagemd |
| The image from which metadata should be copied.
Default means no gaurantee from which image is used.
| |
| allowed: | string |
|
| Default: |
|
|
image
Example
"""
# Suppose aF and bF are images with single precision and we want
# to determine the result of the following expression:
# aF + min(float($\pi$, mean(bF))
#
# In this case, the images aF and bF do not need to have the same shapes and
# coordinates, because only the mean(bF) results in the mean of all pixel
# values in bF. If aF has single precision pixel values, the resulting image
# will as well. This expression first computes the scalar value of the minimum
# of $\pi$ and the mean of the pixel values of bF. That scalar is then
# added to the value of each pixel in aF. In the code below, the
# result is written to image cF which can be accessed immediately
# via the returned image analysis tool captured in the variable myim.
# If the expression is masked, that mask will be copied to the new image.
# create images of different sizes to operate on
ia.fromshape(’aF’,[10,10],overwrite=true)
ia.fromshape(’bF’,[10,20,30],overwrite=true)
# close the ia tool to free up resources
ia.done()
# at each pixel in bF, take the minimum of that pixel value and pi and add
# the resulting value to the corresponding pixel in af
# note that only the subset of pixels in bF that correspond to those in aF
# are used; the resulting image has the same size as the smaller image, aF,
# used in the input
myim = ia.imagecalc(outfile=’cF’, pixels=’aF + min(float(pi()), mean(bF))’,
overwrite=true)
# confirm the resulting image has the same size as aF, should be [10, 10]
myim.shape()
# close the myim tool to free up system resources
myim.done()
"""
Example
"""
# The following example shows the use of the two min() LEL functions. One takes a
# single argument and will return a scalar representing the minimum pixel value
# of that entire image. The other takes two arguments (either an image and a
# scalar or two images of conforming shapes) and returns an image for which
# the minimum has been calculated on a pixel by pixel basis for the input
# image(s).
# create an image to operate on
ia.fromshape(’aF’,[10,10],overwrite=true)
# give it interesting values
ia.addnoise()
# free up system resources
ia.done()
# do the calculation and write results to image cF
myim=ia.imagecalc(’cF’, ’min(aF, (min(aF)+max(aF))/2)’, overwrite=true)
# do whatever stuff you want with myim and the close it to free
# up system resources
myim.done()
"""
Example
"""
# Here’s an example of a more complicated function. Currently
# ia.fromshape() only creates real-valued images so the real()
# function is not particularly exciting in this case but illustrates
# possibilities. Trigonometric functions such as sin() assume the
# pixel values are in radians.
ia.fromshape(’aD’,[10,10],overwrite=true)
ia.addnoise()
ia.fromshape(’aF’,[10,10],overwrite=true)
ia.addnoise()
ia.fromshape(’bF’,[10,10],overwrite=true)
ia.addnoise()
ia.fromshape(’aC’,[10,10],overwrite=true)
ia.addnoise()
ia.done()
myim = ia.imagecalc(’eF’, ’sin(aD)+(aF*2)+min(bF)+real(aC)’, overwrite=true)
myim.done()
"""
__________________________________________________________________
More information about CASA may be found at the
CASA web page
Copyright © 2016 Associated Universities Inc., Washington, D.C.
This code is available under the terms of the GNU General Public Lincense
Home |
Contact Us |
Directories |
Site Map |
Help |
Privacy Policy |
Search