prtools — Utility functions for image-based phase retrieval#
Version: 2.0.0
Useful links: Source Repository | Issue Tracker | Releases
Installation: install prtools with pip
pip install prtools
The prtools library provides functionality and tools that may be
useful when performing image-based phase retrieval including:
Image processing, reduction, and analysis
Creating, fitting, and removing Zernike polynomials
Drawing various shapes in arrays
Computing statistics and optical simulation parameters
Note
Many prtools functions support both matrix (ij) and Cartesian
(xy) indexing conventions via the indexing parameter. The default is
matrix (indexing='ij') for all functions.
Array API support#
prtools supports the Python array API standard. This means that
prtools functions should work seamlessly with any array API-compatible
ararys like those provided by NumPy, CuPy, PyTorch, and JAX.
Note
Only NumPy and JAX interoperability is currently tested. Additional backend libraries may be tested in the future.
Array manipulation#
Compute array centroid location. |
|
Zero-pad an array. |
|
Extract a contiguous subarray from a larger array. |
|
Find bounding row and column indices of data within an array. |
|
Rebin an array by an integer factor. |
|
Rescale an image by interpolation. |
|
Fix masked entries in a 2-dimensional array via median filtering. |
|
Normalizie the power in an array. |
|
Shift an array via FFT. |
|
Compute the subpixel image translation to register the input array |
Array metrics#
Compute the root-mean-square of the nonzero entries |
|
Compute the root-mean-square of the nonzero entries, ignoring any NaNs. |
|
Compute range of values (max - min) |
|
Compute range of values (max - min), ignoring any NaNs. |
|
Compute the average radial profile of the input |
|
Compute the encircled energy diameter for a given energy fraction. |
|
The Tenengrad function computes image sharpness as the mean squared Sobel gradient magnitude. |
Shapes#
Fourier transforms#
Convolution and filtering#
Convolve an array with a kernel using the FFT. |
|
Blur an image using a Gaussian filter using the FFT. |
|
Apply the aperture effects of an idealized square pixel using the FFT. |
|
2D Gaussian function |
|
2D sinc function |
|
2D Gaussian filter kernel |
|
2D pixel MTF filter kernel |
Morphology#
Binary dilation using the given structure element. |
|
Binary erosion using the given structure element. |
|
Binary opening using the given structure element. |
|
Binary closing using the given structure element. |
Sparse matrices#
Sparse coordinate list (COO) index |
|
Create a sparse array from a dense matrix |
|
Create a dense matrix from a sparse array |
|
Create a sparse coordinate list (COO) index object from a mask. |
|
Create a mask from a sparse coordinate list (COO) index. |
Zernike polynomials#
Compute the circular Zernike polynomial for a given mask. |
|
Fit a Zernike basis set to an OPD. |
|
Fit and remove a Zernike basis set from an OPD. |
|
Create an OPD based on the supplied Zernike coefficients. |
|
Compute a Zernike basis set for a given mask. |
|
Compute the Zernike coordinate system for a given mask. |
Cost functions#
Compute the normalized sum squared error between two arrays. |
Miscellaneous#
Calculate a point spread function using far-field diffraction. |
|
Compute the output plane sampling that is Nyquist sampled for intensity. |
|
Compute the minimum pupil plane sampling to satisfy given constraints. |
|
Compute FFT pad shape to satisfy sampling constraints |
|
Compute the peak-to-valley defocus imparted by a given translation along the optical axis |
|
Attempt to find phase wrapping using gradient edge detection while automatically ignoring large gradients at mask edges. |
prtools.jax#
Minimize a scalar function of one or more variables using the L-BFGS algorithm |
|
Represents the optimization result. |