fit_zernike — 3D curvilinear op

Data kinds: image2dtable

Call: import fullseye as fs; fs.ledger.fit_zernike(disk_image, n_max=6, device='cpu', nr=48, nt=72) (to call the implementation directly, import match3d; match3d.fit_zernike(disk_image, n_max=6, device='cpu', nr=48, nt=72); from the registry, ops3d.get("fit_zernike"))

GPU: this op has a GPU path (device="cuda")

Usage

A disc image → Zernike coefficients (the polar-coordinate surface fit of optics and wavefront metrology). Returns {(n,m): coef}.

> The detailed description below is the original text — the summary and the headings are translated.

直交多項式で円板上の曲面(波面収差、レンズ形状)を少数係数に。tilt/defocus/astigmatism/

coma/spherical 等が特定の (n,m) に対応し、回転で m が混ざる(帯域=回転不変)。

honest 開示(2026-08-30 レビュー実測): 離散サンプリング(既定 nr=48, nt=72)では

理論上直交のモード間に最大 ~10% のクロストークが残る(例: 純 (2,0) defocus 入力で

係数回収 0.95、リーク先は (4,0))。支配モードの特定には十分だが、係数の定量比較が

要るときは nr/nt を上げる(誤差は解像度に対し単調減少)。

Raises ValueError: 入力が 2-D でない・2x2 未満・NaN/Inf/float32 桁あふれ。

References (sample data, literature)

• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).

• Operator provenance and references — the sources of the research/methods this op family came from.

Runnable examples (verified samples that actually call this op)

curvilinear_projpy -3.11 examples_3d/curvilinear_proj.py

Ops the type connects to (they accept table as input)

fuse_to_voxel · mesh_select_lod

Same category (curvilinear)

polar_unwrap · cylinder_unwrap


*Provenance: match3d.py — 3D operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.