polar_unwrap — 3D curvilinear op

• 数据种类:image2d → image2d

• 调用: import fullseye as fs; fs.ledger.polar_unwrap(image, center=None, r_in=0.0, r_out=None, ntheta=360, nr=64, device='cpu')(要直接调用实现,import match3d; match3d.polar_unwrap(image, center=None, r_in=0.0, r_out=None, ntheta=360, nr=64, device='cpu');从台账取用则 ops3d.get("polar_unwrap"))

• GPU:该算子有 GPU 路径(device="cuda")

用法

把图像的圆环/圆盘展开为 (θ×r) 矩形(工业:标签/环/回转体检测)。

将沿圆周方向排列的特征拉伸为"纵向",从而可以应用常规的 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 相关求旋转角。

参考(示例数据、文献)

• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。

• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。

可运行的示例(实际调用该算子并已验证的样例)

• curvilinear_proj — py -3.11 examples_3d/curvilinear_proj.py

类型可衔接的下一个算子(可接受 image2d 作为输入)

fuse_to_voxel · fit_poly_surface · eval_poly_surface · surface_form_error · background_flatten · fit_zernike · matcap_shade · antialias

同类别(curvilinear)

cylinder_unwrap · fit_zernike


*Provenance: match3d.py — 3D 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*

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