fullseye

refine_translation_lk — 3D refine op

使い方

Gauss-Newton 逆合成 Lucas-Kanade による 3D 並進サブボクセル精緻化。

粗マッチ(整数 NCC / Fourier-Mellin / Hough)が与えた整数初期位置 init_pos を 出発点に、SSD Σ|I(x+p) − T(x)|² を最小化してサブボクセル並進 p へ収束させる。

逆合成(inverse-compositional, Baker–Matthews)方式のため steepest-descent 画像 SD = ∇T と Hessian H = Σ SDᵀSD反復前に一度だけ前計算し、各反復は 「scene の trilinear ワープ + 残差 + 3×3 線形解 Δp = H⁻¹ Σ SDᵀ(I(x+p)−T)」のみ。 並進の合成は p ← p − Δp。純並進ワープでは ∂W/∂p=I なので SD=∇T がそのまま使える。

座標系: init_pos と戻り値はいずれも テンプレート原点(corner, index 0,0,0) が scene のどの (dz,dy,dx) に載るか。sobel3d / grid_sample の corner 規約に一致 (NCC(ncc_locate_3d)の中心規約とは T//2 だけ異なる点に注意)。

Parameters

scene : (D,H,W) array_like 探索対象ボリューム。 template : (Td,Th,Tw) array_like 位置合わせするテンプレート(scene より小)。 init_pos : (3,) sequence 整数初期位置 (dz,dy,dx) = テンプレート原点の scene 座標。 device : str “cpu” / “cuda” 等。device 非依存。 iters : int 最大反復数。 tol : float ‖Δp‖ がこの値を下回ったら収束打ち切り。

Returns

pos : (3,) np.ndarray(float64) 精緻化されたサブボクセル位置 (dz,dy,dx)。

Notes

参考(サンプルデータ・文献)

実行できる例(この op を実際に呼ぶ検証済みサンプル)

型が繋がる次の op(position を入力に取れる)

refine_peak_newton · refine_lm · fuse_to_voxel

同カテゴリ(refine)

refine_peak_newton · refine_lm · refine_rotation_z · icp_point2point_3d · icp_point2plane


Provenance: match3d.py — 3D operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。

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