load.images
uses libraries jpeg
, png
, or tiff
to read image files of respective types.rescale
to rescale an image matrix is written in C++ using Armadillo's interp2
.wf_net
now does all of the post-processing of phase estimates from any of the fringe analysis routines. Function arguments have changed.sgs
and uselm
from fitzernikes
and return values from psfit_options()
.gpcapsi
.Rcout
instead of cout
in C++ routines that report progress. psifit
, vortexfit
, fftfit
and wf_net
have S3 class wf_zfit
with plot, summary, and print methods.
These were available previously but have been improved and are now more or less documented.report
for objects of class wf_zfit
. This produces an html report and displays in a browser.pcapsi
has an additional option pc3
for a new variant of the PCA based PSI analysis. Arguments have been changed.wf3d.pupil
to be compatible with recent versions of rgl
.
Also added an optional argument new.window
with default value TRUE
.anzern.pdf
rzernike_ann_direct
, zapm_direct
, zapm_iso_direct
to calculate radial and Zernike annular polynomials
directly from formulas published by Mahajan.zapmC
and zapm_cart
for approximate Zernike Annular polynomials.zapm
, zapm_iso
, zapm_128
, zapm_iso_128
for nominally exact Zernike Annular polynomials, and their R wrappers.
These return matrixes of annular Zernikes in extended Fringe or ISO/ANSI ordering. The functions *_128
use 128 bit floats
for somewhat higher numerical precision.rzernike_ann
and rzernike_ann_128
to calculate the radial annular Zernikes. Finally, function gol_welsch
calculates
nodes and weights for Gauss-Legendre quadrature in the interval (eps^2, 1). This would normally not be called by the user, but it
is in the namespace and documented. All of these are mostly for testing purposes.usecirc
to the list of options returned by psfit_options()
. If set to TRUE
functions that use Zernikes for
wavefront representations will use Zernike circle polynomials even for obstructed apertures. For the default value FALSE
functions like
wf_net()
and pupil
will toggle between Zernikes and annular Zernikes depending on whether the obstruction fraction is > 0.BH
is now linked to and therefore must be installed (?? IS THIS TRUE FOR USERS ??)crop
will return a square matrix with an even number of pixels per side. Side length is optionally specifiable. Interferograms should be completely contained within frames with some padding on all sides. This function does absolutely no error checking.lpbrcut
to list of available phase unwrapping routines set in psfit_options()$puw_alg
. This will result in lppuw::brcutpuw
being called as the phase unwrapper. Option brcut
will result in calling zernike::brcutpuw
.fftfit
and vortexfit
.New in this version: support for Zernike Annular polynomials approximated by orthogonalizing a matrix of Zernike polynomials:
zapmC
and zapm_cart
to create matrixes of Annular Zernikes in extended Fringe or ISO/ANSI sequence.wf_net
, fitzernikes
, and pupil
to use annular Zernikes for annular (or obstructed) wavefronts. This is done automatically and involves no user visible changes.wf_net
and zpm_cart
.A number of additions and changes have been made for this release, and some of the changes may break previously working code. This list may not be comprehensive:
gradzpm_cart
, zpm_cart
, and norm_zpm
to create matrixes of Zernike polynomials and their derivatives in ISO/ANSI sequence and Cartesian coordinates.
See the documentation for further details.isoseq
to the list in psfit_options()
to tell other routines when to use zpm_cart
instead of zpm
. This is checked in the function wf_net()
and if true zpm_cart
is used in the Zernike fitting.makezlist.iso
to make a list of Zernike polynomial indexes in ISO/ANSI sequence.psifit()
, vortexfit()
, and fftfit()
. These have been assigned the S3 class wf_fitted
.pupil
have changed: instead of passing zlist
as argument I now use maxorder
which is in turn passed to zpm
or zpm_cart
. If the first element of zcoef is the piston term the piston entry in the argument list should be left null, which is the default. If zcoef starts with tilts, which it will be if returned by wf_net
or one of the routines that call it, piston must be non-null (usually should be 0). The function pupil.arb()
continues to use zlist
to provide a list of Zernike indexes since the usual use case would be to create a synthetic wavefront with just a few aberrations.startest()
and synth.interferogram()
have modified arguments and the logic of the code has been improved (maybe).Several changes were made for the current release. Most of these are "behind the scenes" and mostly made for performance or maintainability reasons. These include:
nthreads
to psfit_options()
. This is set by default to half the number of cores detected because all of the PCs in my collection have multithreading CPUs that report double the number of physical cores actually present. In practice threading might or might not be beneficial. Speed gains are more likely if very large numbers of ZP values are needed.Some user visible changes:
vortexfit()
implementing the vortex aka spiral quadrature transform algorithm of Larkin et al. This is the same algorithm with possibly slightly different implementation as used in DFTFringe.circle.hough()
to detect circular interferogram edges using the Hough circle transform. This is experimental and is not curently used by any other routine.circle.pars()
for automated edge detection now uses the function nlsrob()
from package robustbase for circle parameter estimation. An optional but enabled by default refinement step used in previous versions of the algorithm has been removed.Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.