mirror of
https://github.com/eddyem/eddys_snippets.git
synced 2025-12-06 02:35:12 +03:00
27 lines
934 B
Plaintext
27 lines
934 B
Plaintext
Here is my realisation of wavefront decomposition and restoration based on
|
|
Zernike polynomials (up to 100th order).
|
|
|
|
The base functions are:
|
|
|
|
double *zernfunR(int n, int m, int W, int H, double *norm);
|
|
calculates Zernike polynomial of order n and angular order m on
|
|
equidistance rectangular grid WxH (norm is NULL or value to store
|
|
sum(Z_i^2) for normalisation on decomposition.
|
|
|
|
double *zernfunNR(int p, int W, int H, double *norm);
|
|
the same but in Noll notation
|
|
|
|
double *Zdecompose(int Nmax, int W, int H, double *image, int *Zsz, int *lastIdx);
|
|
decompose image by Zernike polynomials with order <= Nmax,
|
|
Zsz is size of returned array (in Noll notation)
|
|
lastidx is last non-zero coefficient
|
|
|
|
double *Zcompose(int Zsz, double *Zidxs, int W, int H);
|
|
build image based on Zernike coeffs Zidxs
|
|
Zsz - size of array in Noll notation
|
|
W, H - size of future image
|
|
|
|
void set_prec(double val);
|
|
set precision of Zernike transforms
|
|
|