deform op• 데이터 종류: points × points → points
• 호출: 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 不正。
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• nonrigid_deform — py -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 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.