cylinder_unwrap — 3D curvilinear op

• Data kinds: voxel → voxel

• Call: import fullseye as fs; fs.ledger.cylinder_unwrap(vol, center=None, r_in=0.0, r_out=None, ntheta=180, nr=32, device='cpu') (to call the implementation directly, import match3d; match3d.cylinder_unwrap(vol, center=None, r_in=0.0, r_out=None, ntheta=180, nr=32, device='cpu'); from the registry, ops3d.get("cylinder_unwrap"))

• GPU: none (CPU reference implementation only)

Usage

Unwrap the cylindrical surface of a voxel volume into (height × θ × r) — for inspecting the inner and outer walls of cylindrical parts and pipes. The axis is z (the D axis).

The θ axis is a periodic grid without endpoint (same as polar_unwrap, modified 2026-08-30).

Raises ValueError: If the input has NaN/Inf/float32 overflow.

Arguments: vol is (D,H,W), center=(cy, cx) is (row, column) (default is slice center). r_in ~ r_out (voxel, default min(H,W)/2 − 1) is divided into nr equal parts, and the angle is ntheta Equal parts. Output (D, ntheta, nr) float32: axis 0 is z (height, same as input), angle in row k θ = k·2π/ntheta, radius of column j. The sample point is (z, cy + r sinθ, cx + r cosθ), and 0 outside the volume. The axes where D, H, and W are 1 are also interpolated as pixel coordinates, and division by 0 does not occur. Second part: If you take [:, :, j], the cylindrical surface with radius j becomes a 2-D image of (D×θ), and 2-D flaw inspection/ ncc_locate can be used.

Empty input (vol with 0 elements) results in a ValueError.

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_proj — py -3.11 examples_3d/curvilinear_proj.py

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

voxel_to_mips · voxel_to_mesh · signed_distance_field · to_points · sobel3d · hessian3d · curvature_maps · edt_jfa

Same category (curvilinear)

polar_unwrap · fit_zernike


*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.