curvilinear op• Data kinds: image2d → image2d
• Call: import fullseye as fs; fs.ledger.polar_unwrap(image, center=None, r_in=0.0, r_out=None, ntheta=360, nr=64, device='cpu') (to call the implementation directly, import match3d; match3d.polar_unwrap(image, center=None, r_in=0.0, r_out=None, ntheta=360, nr=64, device='cpu'); from the registry, ops3d.get("polar_unwrap"))
• GPU: this op has a GPU path (device="cuda")
Unwrap an image's annulus or disc into a (θ × r) rectangle (industrial: inspecting labels, rings and bodies of revolution).
> The detailed description below is the original text — the summary and the headings are translated.
円周方向に並ぶ特徴を「縦」に伸ばして通常の 2D 手法(直線探索/相関)を適用できる。grid_sample。
θ 軸は endpoint 無し(行 k の角度 = k·2π/ntheta)= 0° と 360° を重複サンプルしない
周期グリッド(θ 方向 FFT/循環相関の前提を満たす。2026-08-30 修正、旧版は先頭行=末尾行)。
Raises ValueError: 入力が 2-D でない・2x2 未満・NaN/Inf/float32 桁あふれ。
引数: `center=(cy, cx) は **(行, 列)** の順(既定は画像中心 ((H−1)/2, (W−1)/2)`)。
`r_in〜r_out(画素、既定 min(H,W)/2 − 1)を nr 等分、角度を ntheta` 等分。
出力 `(ntheta, nr) float32: 行 k の角度 θ = k·2π/ntheta`、列 j の半径
`r = r_in + j·(r_out − r_in)/(nr−1)、サンプル点は (cy + r sinθ, cx + r cosθ)`(θ=0 が
+列方向、θ が増えると +行方向へ回る)。画像外は 0 で埋まる(bilinear)。
後段: 行方向(θ)の直線探索・`ncc_locate`、θ 方向の 1-D 相関で回転角。
• 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.
• curvilinear_proj — py -3.11 examples_3d/curvilinear_proj.py
image2d as input)fuse_to_voxel · fit_poly_surface · eval_poly_surface · surface_form_error · background_flatten · fit_zernike · matcap_shade · antialias
curvilinear)*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.