two_view opimage2d × image2d → matriximport fullseye as fs; fs.ledger.fundamental_8point(pts1, pts2) (実装を直接呼ぶなら import twoview; twoview.fundamental_8point(pts1, pts2)、台帳から引くなら ops3d.get("fundamental_8point"))正規化 8 点法で基礎行列 F を推定(rank-2 強制)。→ F (3,3)。8 点以上必要。
Raises ValueError: 点が (N,2) でない/非有限/8 点未満/対応数不一致。
手順: 両画像の点を Hartley 正規化(重心を原点、平均距離 √2)→ 9 列の係数行列の最小特異ベクトルを F とする → 特異値の 3 番目を 0 にして rank-2 に強制 → T2ᵀ F T1 で逆正規化 → F[2,2] で割って正規化(それがほぼ 0 なら Frobenius ノルムで割る)。
x2ᵀ F x1 = 0(x1 が pts1、x2 が pts2)。sampson_distance で残差を見て選別してから再フィットする。recover_pose が入口で検出して拒否する。essential_8point / recover_pose / sampson_distance。py -3.11 examples_3d/two_view_pose.pymatrix を入力に取れる)two_view)essential_8point · recover_pose · triangulate · sampson_distance
Provenance: twoview.py — 3D operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.