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.