Re: Annular Zernike polynomials [message #83540] |
Mon, 11 March 2013 12:49  |
Mats Löfdahl
Messages: 263 Registered: January 2012
|
Senior Member |
|
|
Den måndagen den 11:e mars 2013 kl. 20:04:28 UTC+1 skrev rr...@stsci.edu:
> On Sunday, March 10, 2013 5:02:41 PM UTC-4, Mats Löfdahl wrote:
>
>> Does anybody know where I can find a publicly available IDL implementation of annular Zernike polynomials? When googling for it, I find what appears to be articles that mention IDL but no pointers to actual code.
>
> Is this what you were looking for?
>
> http://solar.njit.edu/~cdenker/idl/zernike.pro
Thanks, but no. This routine implements the ordinary Zernike polynomials, that are defined and orthonormal over a circle, like a circular telescope pupil. I'm looking for annular Zernike polynomials, useful for telescope pupils that are shaped like an annulus, i.e., with a central obscuration.
|
|
|
|
Re: Annular Zernike polynomials [message #83634 is a reply to message #83540] |
Fri, 15 March 2013 09:56  |
kagoldberg
Messages: 26 Registered: November 2012
|
Junior Member |
|
|
I have a lot of experience with this issue: Zernike polynomials on all types of pupils.
If you use textbook definitions of the polynomials, you quickly find that they are not orthogonal on a discrete domain. That means if you care about accuracy, *any time* you pixellate a circle, you should perform a Gram-Schmidt operation to produce a new basis that is very much like the analytic Zernike basis, but contains subtle differences that make it orthogonal. Here is a reference for a *stable* Gram-Schmidt routine
http://en.wikipedia.org/wiki/GramSchmidt_process#Algorithm
Fortunately, the domain you choose is entirely arbitrary. So this process allows you to insert your discrete, annular domain, instead of a discrete circular pupil, and it works in the same way.
The coefficients you find during the Gram-Schmidt process are the elements of the transformation matrix between the analytic Zernike polynomials, and the ones that are orthogonal on your discrete domain, whatever domain you chose. That transformation matrix can be stored and reused, for example, and it's good for the domain you specified.
I have used this approach for fitting on domains with central obscurations, spiders, contamination: basically any pupil 'mask' array. Just be careful that your pupil mask does not refer to points outside of the unit circle, where it's not appropriate to use the Zernike basis.
If you do use textbook analytic Zernikes (Mahajan, etc.) you'll find that your functions won't be orthogonal, and they won't be balanced.
On Monday, March 11, 2013 12:49:28 PM UTC-7, Mats Löfdahl wrote:
> Den måndagen den 11:e mars 2013 kl. 20:04:28 UTC+1 skrev rr...@stsci.edu:
>
>> On Sunday, March 10, 2013 5:02:41 PM UTC-4, Mats Löfdahl wrote:
>
>>
>
>>> Does anybody know where I can find a publicly available IDL implementation of annular Zernike polynomials? When googling for it, I find what appears to be articles that mention IDL but no pointers to actual code.
>
>>
>
>> Is this what you were looking for?
>
>>
>
>> http://solar.njit.edu/~cdenker/idl/zernike.pro
>
>
>
> Thanks, but no. This routine implements the ordinary Zernike polynomials, that are defined and orthonormal over a circle, like a circular telescope pupil. I'm looking for annular Zernike polynomials, useful for telescope pupils that are shaped like an annulus, i.e., with a central obscuration.
|
|
|