fullseye

triangulate — 3D two_view op

使い方

DLT 三角測量: 2 視点の対応点 + 射影行列 → 3D 点。→ (N,3)。

無限遠点は NaN で返す(±inf にはしない)。同次座標の第 4 成分が 0 = 2 本の視線が平行で、その対応は有限の 3-D 点を決めない。以前はそのまま割って ±inf を出していたが、それだと下流の cheirality 判定 depth > 0inf を「カメラ前方」として数える(inf > 0True)。 :func:recover_pose は 4 つの (R, t) 候補のうち前方点が最多のものを選ぶので、 無限遠点が票を持つと候補選択が静かに歪む。NaN なら比較が False になり、 数えられずに済む(2026-09-02、chain_fuzz が到達して発覚)。

ほぼ平行だが厳密には平行でない対応は、大きな有限値として返る。これは NaN では拾えないので、呼び手側で距離の妥当性を見る必要がある。

Raises ValueError: 点が (N,2) でない/非有限/対応数不一致。

補足:

背景知識ガイド(この op の手前にある物理・規約)

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

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

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

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

同カテゴリ(two_view)

fundamental_8point · essential_8point · recover_pose · 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.