mimstatistics: Do image statistics through a mask
Package: proto
Usage
imstatistics images
Parameters
- images
- The input images or image sections for which pixel statistics are to be computed. Image sections are automatically applied to the input masks imasks if input masks are not mask sections.
- imasks = ""
- The list of input masks or input mask sections associated with images. Good and bad data values are assumed to be presented by mask values of 0 and 1 respectively. The number of input masks must be 0, 1, or equal to the number of input images. Input mask sections if present override the input image sections.
- omasks = ""
- The list of output masks which are a combination of the input mask if any and pixels rejected using the good data limits and / or iterative clipping. Data used to compute the statistics are represented by 0 in the output mask, rejected data by zero. The number of output masks must be 0 or equal to the number of input images.
- fields = "image,npix,mean,stddev,min,max"
- The statistical quantities to be computed and printed.
- lower = INDEF
- The minimum good data limit. All pixels are above the default value of INDEF.
- upper = INDEF
- The maximum good data limit. All pixels are above the default value of INDEF.
- nclip = 0
- The maximum number of iterative clipping cycles. By default no clipping is performed.
- lsigma = 3.0
- The low side clipping factor in sigma.
- usigma = 3.0
- The high side clipping factor in sigma.
- binwidth = 0.1
- The width of the histogram bins in sigma used for computing the midpoint (estimate of the median) and the mode.
- format = yes
- Label the output columns and print the results in fixed format ? If format is "no" no column labels are printed and the output is in free format.
- cache = no
- Cache the image data in memory ? This can increase the efficiency of the task if nclip > 0 or if either of the midpt or mode statistics is computed.
Description
The statistical quantities specified by the parameter fields are computed and printed for each image in the list specified by images. The results are printed in tabular form with the fields listed in the order they are specified in the fields parameter. The available fields are the following:
image - the image name
mask - the mask name
npix - the number of pixels used to do the statistics
mean - the mean of the pixel distribution
midpt - estimate of the median of the pixel distribution
mode - the mode of the pixel distribution
stddev - the standard deviation of the pixel distribution
skew - the skew of the pixel distribution
kurtosis - the kurtosis of the pixel distribution
min - the minimum pixel value
max - the maximum pixel value
The mean, standard deviation, skew, kurtosis, min and max are computed in a single pass through the image using the expressions listed below. Only the quantities selected by the fields parameter are actually computed.
mean = sum (x1,...,xN) / N
y = x - mean
variance = sum (y1 ** 2,...,yN ** 2) / (N-1)
stddev = sqrt (variance)
skew = sum ((y1 / stddev) ** 3,...,(yN / stddev) ** 3) / (N-1)
kurtosis = sum ((y1 / stddev) ** 4,...,(yN / stddev) ** 4) / (N-1) - 3
The midpoint and mode are computed in two passes through the image. In the first pass the standard deviation of the pixels is calculated and used with the binwidth parameter to compute the resolution of the data histogram. The midpoint is estimated by integrating the histogram and computing by interpolation the data value at which exactly half the pixels are below that data value and half are above it. The mode is computed by locating the maximum of the data histogram and fitting the peak by parabolic interpolation.
Pixels are rejected from the initial statistics computation by specifying an input mask imasks or by setting the good data limits lower and upper. Iterative rejection can be performed by setting the clipping parameters nclip, lsigma, and usigma.
The input masks imasks can be specified in a variety of ways as shown below.
"" - empty mask, use all the pixels
EMPTY - empty mask, use all the pixels
!KEYWORD - use mask specified by header keyword KEYWORD
!^KEYWORD - use inverse of mask specified by header keyword KEYWORD
mask - use specified mask
^mask - use inverse of specified mask
In all cases the mask values are assumed to be 0 in good data regions and non-zero in rejected data regions. The input masks may in pixel list, e.g. ".pl" format, or integer images format, e.g. ".imh", ".fits", etc.
Examples
1. Find the number of pixels, mean, standard deviation and the minimum and maximum pixel value of a bias region in an image.
cl> mimstat flat*[*,1] ""
# IMAGE NPIX MEAN STDDEV MIN MAX
flat1[*,1] 800 999.5 14.09 941. 1062.
flat2[*,1] 800 999.4 28.87 918. 1413.
The string "flat*" uses a wildcard to select all images beginning with the word flat. The string "[*,1]" is an image section selecting row 1.
2. Compute the mean, midpoint, mode and standard deviation of a pixel distribution.
cl> mimstat m51 "" fields="image,mean,midpt,mode,stddev"
# IMAGE PIXELS MEAN MIDPT MODE STDDEV
M51 262144 108.3 88.75 49.4 131.3
3. Compute the image statistics in an image section using a mask.
cl> mimstat m51[200:400,200:400] imasks=M51.bpm.pl
cl> mimstat m51[200:400,200:400] imasks=M51.bpm.pl[200:400,200:400]
cl> mimstat m51[200:400,200:400] imasks=M51.crm.pl[1:201,1:201]
Note that the first two examples are equivalent so there is no need to specify the input mask section in the second case.
4. Compute the image statistics using interactive rejection and save the rejected pixel mask.
cl> mimstat m51 omasks=m51.rej.pl nclip=3
Bugs
When using a very large number of pixels the accumulation of the sums of the pixel values to the various powers may encounter roundoff error. This is significant when the true standard deviation is small compared to the mean.