Three-Dimensional Noise Calculation

Overview

This module provides a set of functions to aid in the calculation of 3D noise parameters from noise images. The functions are based on the work done by John D’Agostino and Curtis Webb. For details see “3-D Analysis Framwork and Measurement Methodology for Imaging System Nioise” p110-121 in “Infrared Imaging Systems: Design, Analysis, Modelling, and Testing II”, Holst, G. C., ed., Volume 1488, SPIE (1991).

See the __main__ function for examples of use.

This package was partly developed to provide additional material in support of students and readers of the book Electro-Optical System Analysis and Design: A Radiometry Perspective, Cornelius J. Willers, ISBN 9780819495693, SPIE Monograph Volume PM236, SPIE Press, 2013. http://spie.org/x648.html?product_id=2021423&origin_id=x646

Module functions

pyradi.ry3dnoise.oprDT(imgSeq)

Operator DT averages over frames for each pixel.

Args:
imgSeq (np.ndarray): numpy array of dimensions (frames,rows,cols)
Returns:
numpy array of dimensions (1,rows,cols)
Raises:
No exception is raised.
pyradi.ry3dnoise.oprDV(imgSeq)

Operator DV averages over rows for each pixel.

Args:
imgSeq (np.ndarray): numpy array of dimensions (frames,rows,cols)
Returns:
numpy array of dimensions (frames,1,cols)
Raises:
No exception is raised.
pyradi.ry3dnoise.oprDH(imgSeq)

Operator DH averages over columns for each pixel.

Args:
imgSeq (np.ndarray): numpy array of dimensions (frames,rows,cols)
Returns:
numpy array of dimensions (frames,rows,1)
Raises:
No exception is raised.
pyradi.ry3dnoise.oprSDT(imgSeq)

Operator SDT first averages over frames for each pixel. The result is subtracted from all images.

Args:
imgSeq (np.ndarray): numpy array of dimensions (frames,rows,cols)
Returns:
numpy array of dimensions (frames,rows,cols)
Raises:
No exception is raised.
pyradi.ry3dnoise.oprSDV(imgSeq)

Operator SDV first averages over rows for each pixel. The result is subtracted from all images.

Args:
imgSeq (np.ndarray): numpy array of dimensions (frames,rows,cols)
Returns:
numpy array of dimensions (frames,rows,cols)
Raises:
No exception is raised.
pyradi.ry3dnoise.oprSDH(imgSeq)

Operator SDH first averages over columns for each pixel. The result is subtracted from all images.

Args:
imgSeq (np.ndarray): numpy array of dimensions (frames,rows,cols)
Returns:
numpy array of dimensions (frames,rows,cols)
Raises:
No exception is raised.
pyradi.ry3dnoise.getS(imgSeq)

Average over all pixels.

Args:
imgSeq (np.ndarray): numpy array of dimensions (frames,rows,cols)
Returns:
noise (double): average of all pixels
Raises:
No exception is raised.
pyradi.ry3dnoise.getNT(imgSeq)

Average for all pixels as a function of time/frames. Represents noise which consists of fluctuations in the temporal direction affecting the mean of each frame.

Args:
imgSeq (np.ndarray): numpy array of dimensions (frames,rows,cols)
Returns:
noise (double): frame-to-frame intensity variation
Raises:
No exception is raised.
pyradi.ry3dnoise.getNH(imgSeq)

Average for each row over all frames and cols. Represents variations in column averages that are fixed in time.

Args:
imgSeq (np.ndarray): numpy array of dimensions (frames,rows,cols)
Returns:
noise (double): fixed column noise
Raises:
No exception is raised.
pyradi.ry3dnoise.getNV(imgSeq)

Average for each column over all frames and rows. Represents variations in row averages that are fixed in time.

Args:
imgSeq (np.ndarray): numpy array of dimensions (frames,rows,cols)
Returns:
noise (double): fixed row noise
Raises:
No exception is raised.
pyradi.ry3dnoise.getNVH(imgSeq)

Average over all frames, for each pixel. Represents non-uniformity spatial noise that does not change from frame-to-frame.

Args:
imgSeq (np.ndarray): numpy array of dimensions (frames,rows,cols)
Returns:
noise (double): fixed spatial noise
Raises:
No exception is raised.
pyradi.ry3dnoise.getNTV(imgSeq)

Average for each row and frame over all columns. Represents variations in row averages that change from frame-to-frame.

Args:
imgSeq (np.ndarray): numpy array of dimensions (frames,rows,cols)
Returns:
noise (double): row temporal noise
Raises:
No exception is raised.
pyradi.ry3dnoise.getNTH(imgSeq)

Average for each column and frame over all rows. Represents variations in column averages that change from frame-to-frame.

Args:
imgSeq (np.ndarray): numpy array of dimensions (frames,rows,cols)
Returns:
noise (double): column temporal noise
Raises:
No exception is raised.
pyradi.ry3dnoise.getNTVH(imgSeq)

Noise for each row, frame & column. Represents random noise in the detector and electronics.

Args:
imgSeq (np.ndarray): numpy array of dimensions (frames,rows,cols)
Returns:
noise (double): temporal pixel noise
Raises:
No exception is raised.
pyradi.ry3dnoise.getTotal(imgSeq)

Total system noise.

Args:
imgSeq (np.ndarray): numpy array of dimensions (frames,rows,cols)
Returns:
noise (double): total system noise
Raises:
No exception is raised.