register_nonrigid — 3D deform op

資料種類:points × pointspoints

呼叫: import fullseye as fs; fs.ledger.register_nonrigid(src, dst, iters=20, lam=1.0, k_smooth=None)(要直接呼叫實作,import deform3d; deform3d.register_nonrigid(src, dst, iters=20, lam=1.0, k_smooth=None);從台帳取用則 ops3d.get("register_nonrigid"))

經台帳呼叫的回傳值: fullseye.ledger.register_nonrigid(...) 只回傳**宣告的 out 型別 points 的值**(底層函式還會回傳輔助資訊)。需要被捨棄的部分時,請用 fullseye.ledger.register_nonrigid.raw(...),或直接呼叫 deform3d.register_nonrigid

• 底層回傳: (warped, info, info)

用法

用非剛體 ICP 把 `src 靠向 dst`。

> 以下的詳細說明為原文 —— 摘要與標題已翻譯。

各反復で「現在の変形後 src」から `dst` への最近傍対応を張り直し、その対応を

制御点対応(制御中心 = 元の src)として TPS を正則化つきで再当てはめし、src を

変形する。対応が既知でなくとも滑らかな非線形変形を回復できる。

実装上の要点(頑健性):

スケール不変: λ は dst の重心まわり RMS 半径に対する相対値として扱う

(内部で λ_eff = λ·scale)。座標が 100 倍でも同じ λ が同じ挙動を与える。

発散ガード: 対応が曖昧だと単純な NN 反復は正のフィードバックで発散し得る。

反復ごとの対応 RMS を監視し、最良反復(最小 RMS)の変形とモデルを返す。

これにより悪い λ でも「初期より悪い」結果を返さない。

• λ が大きいほど剛(変形が小さい)。既定 λ=1.0 は保守的(ほぼ剛)なので、

大きな非線形変形を回復させたい場合は λ を小さく(例 0.01〜0.05)する。

引数:

src: (N,3) 移動側点群。

dst: (M,3) 固定側(参照)点群。

iters: 最大反復回数。

lam: TPS 正則化 λ(スケール相対)。大きいほど変形が滑らか(外れ対応に頑健、

当てはめは緩い)。小さいほど密着(細かい変形を回復)。

k_smooth: None なら最近傍1点を目標にする(ハード対応)。整数を与えると

`dst` 側の k 近傍の平均を目標にして対応を平滑化する(ノイズに頑健)。

返り値:

warped_src: (N,3) 最良反復での変形後 src。

model: 対応する TPS モデル(制御中心 = 元 src、原座標系でそのまま

`tps_warp` に渡せる)。1回も当てはめできなければ None。

info: dict。"rms"(最良の対応 RMS)、"rms_init"(初期=恒等時の対応 RMS)、

"rms_history"(list)、"iters"(実反復数)、"best_iter"、"converged"(bool)。

例外:

ValueError: 形状不正、点数不足、k_smooth 不正。

參考(範例資料・文獻)

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

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

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

nonrigid_deformpy -3.11 examples_3d/nonrigid_deform.py

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

points_to_voxel · gaussians_to_voxel · estimate_point_normals · to_points · match_points_ncc · match_pca · moment_axes · icp_point2point_3d

同類別(deform)

tps_fit · tps_warp · register_cpd_rigid


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

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