lentil.zernike#

lentil.zernike(mask, index, normalize=True, rho=None, theta=None)[source]#

Compute the circular Zernike polynomial for a given mask.

Parameters:
  • mask (array_like) – Mask defining the extent to compute the Zernike polynomial over. All nonzero entries are included in the result.

  • index (int) – Noll Zernike index as defined in [1]

  • normalize (bool, optional) – If True (default), the output is normalized according to [1]. If False, the output value ranges [-1, 1] over the mask.

  • rho (array_like, optional) – Radial coordinates of the mask array. rho should be 0 at the origin and 1 at the edge of the circle.

  • theta (array_like, optional) – Angular coordinates of the mask array in radians.

Returns:

Circular Zernike polynomial computed over the given mask.

Return type:

out

Warning

Zernike polynomials are defined to be orthogonal on the unit circle. If the supplied mask is non-circular, the Zernike polynomial is computed on an outscribing circle and then cropped by the mask. Note that this operation breaks the orthogonality of the Zernike polynomial. When working with a non-circular mask, care must be taken to understand any side-effects of using Zernike polynomials constructed in this manner. Any undesirable side-effects can be mitigated by using Zernike polynomials that have undergone Gram-Schmidt orthogonalization over the supplied mask.

References

[1] Noll, RJ. Zernike polynomials and atmospheric turbulence. J Opt Soc Am 66, 207-211 (1976).