目次 — 知りたいところから読む

入力を変えて確かめる

実験パネルを開き、実行を押すとPythonを読み込みます。停止と初期値へのリセットができます。結果はこの端末内で計算します。Pythonのインストールは不要です。

下にあるローカル実行の手順は、配布ソースを再現するための任意の手順です。ブラウザ実験には不要です。

実験パネルを別タブで開く

再現用ソースをダウンロード

フレーム対を試す

平行移動を実行してAに保存し、回転や大きな移動をBとして比べます。再生は同じ2枚を500msごとに交互表示する機能です。一時停止とコマ送りでベクトルを確認してください。表示速度は設定したフレーム間隔とは独立です。共有URLに保存するのは入力条件で、保存済みのAは含みません。

モデルと限界

最初のフレームからShi–Tomasiで最大60点を検出します。単一スケールのLucas–Kanade法で、参照画像の固定勾配・双線形補間・初期移動ゼロから局所的な平行移動を推定します。既定の半径4は9×9画素の窓です。更新量0.001px以下または反復上限で終了します。ピラミッド・再検出・明るさ補正・密なフローは実装していません。低テクスチャや直線エッジでは移動が定まらず、特徴点がない場合は中央の診断用の点で失敗を示します。

明るさ一定の仮定は、同じ表面の画像値がフレーム間で変わらないという仮定です。次フレームの倍率変更や遮蔽はこれを破ります。明るさ調整でクリップされた情報は復元できません。明るさ・輝度を扱う別のLabは準備中です。ここでのグレー値は符号化された画像値で、校正された物理的な輝度ではありません。大きな移動・回転・繰り返し模様では、収束しても誤った推定になり得ます。

誤差と単位の読み方

終点誤差EPEは、推定した終点と既知の変換による点とのユークリッド距離で、単位はpxです。真値は推定器に渡しません。変換後の参照窓で双線形補間が使う全画素が可視であることを評価条件とし、余白と遮蔽を除外します。平均の対象は、可視かつ有限の推定値がある点です。反復上限に達した推定も含みます。可視点数と評価点数は別で、「—」は評価対象なしを表し、誤差ゼロではありません。移動量はpx/フレーム対、秒単位の間隔で割った画像速度はpx/sです。物理速度やカメラ姿勢ではありません。間隔を変えても画像対とEPEは変化しません。

計算済みの合成実験

表は配布コードの合成プリセットを実際に計算した結果で、カメラの測定値ではありません。青矢印が推定、破線が反復上限、橙の×が推定なし、フレーム1の紫の□が可視の真値です。残差が小さいことや収束だけでは追跡の正しさを判断できません。

図1 · ボタンで表示を切り替え
平行移動の計算例。元と次のフレームに推定した軌跡を重ねた図。
条件 検出 収束 可視 評価 平均EPE [px]
平行移動 22 22 22 22 0.00003115
回転 22 18 22 22 1.24375425
低テクスチャ 0 0 1 0 —
エッジ・開口問題 0 0 1 0 —
遮蔽 22 18 18 18 0.00003410
大きな移動 22 6 21 21 13.64755347
明るさの変化 22 0 22 22 13.52716816
繰り返し模様 60 44 52 42 15.83858223

関連する実験と出典

画像の明るさ・輝度 Lab — 露出、ガンマ、クリッピングを比較

次に読む

特徴点抽出 Lab特徴点抽出 Lab — Harris と Shi–Tomasi を比較する特徴点マッチング Lab特徴点マッチング Lab — 記述子・幾何内点・真値を分けて比較するVisual SLAMVisual-SLAM入門 — カメラで「自分がどこにいるか」を知る技術