tps_fit — 3D deform op

• 資料種類:points × points → deformation

• 呼叫: import fullseye as fs; fs.ledger.tps_fit(src_ctrl, dst_ctrl, lam=0.0)(要直接呼叫實作,import deform3d; deform3d.tps_fit(src_ctrl, dst_ctrl, lam=0.0);從台帳取用則 ops3d.get("tps_fit"))

用法

由控制點對應擬合 3D Thin-Plate-Spline。

將移動端的控制點 src_ctrl 映射到固定端 dst_ctrl 的 TPS 係數,透過對鞍點系統做最小平方(numpy.linalg.lstsq)求解得到。λ=0 時在控制點上嚴格內插(tps_warp(model, src_ctrl) == dst_ctrl),λ>0 時進行平滑。

參數:

src_ctrl: (K,3) 控制點(變形的起點,TPS 的核中心 p_i)。

dst_ctrl: (K,3) 對應的目標點(變形的終點 v_i)。

lam: 正則化係數 λ≥0。將 λ 加到核矩陣 K 的對角線上。越大

變形越平滑(對控制點的擬合越寬鬆)。

回傳值:

model: dict。鍵為

"ctrl" (K,3) 核中心 p_i,

"w" (K,3) 非線性(彎曲)係數,

"a" (4,3) 仿射係數([平移; 線性部分],a[0]=c, a[1:4]=Aᵀ),

"lam" 所用的 λ。

例外:

ValueError: 形狀不一致、控制點數不足、非有限值,或控制點數

超過 TPS_MAX_CTRL(10,000)(稠密的 (K+4)² 系統為 O(K³)。

請先對對應點抽稀再傳入 — TPS 本來的用法是以稀疏控制點

表示平滑的變形)。

參考(範例資料、文獻)

• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。

• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。

可執行的範例(實際呼叫該運算子並已驗證的樣例)

• nonrigid_deform — py -3.11 examples_3d/nonrigid_deform.py

型別可銜接的下一個運算子(可接受 deformation 作為輸入)

fuse_to_voxel · tps_warp

同類別(deform)

tps_warp · register_nonrigid · register_cpd_rigid


*Provenance: deform3d.py — 3D 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*

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