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

入力を変えて確かめる

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

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

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

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

一つずつ条件を変える

基準の図形で実行し、結果をAに保存します。回転プリセットを選んで再実行すると、AとBの元画像・変換後の画像が同じ表示倍率で並びます。青い丸は検出点、橙の十字は既知の変換から求めた参照位置です。同じ画像条件でHarrisとShi–Tomasiを比べてください。リセットで初期値に戻り、共有では現在の入力条件を再現します。保存したAの結果は共有URLに含みません。

検出器が計算するもの

どちらも局所的な画像勾配の行列Mを使います。Harrisはdet(M) − 0.04 trace(M)²、Shi–Tomasiは小さい方の固有値をスコアにします。窓幅は3・5・7画素。相対しきい値、局所最大値、点の最小間隔、点数上限で選別します。しきい値は画像の最大スコアに追従するので、クリップしない範囲で暗くしても点数が減るとは限りません。単一スケールの検出器であり、記述子ではありません。位置を選びますが、対応点の特定やカメラ運動の計算は行いません。

画像の変換

160×120画素の図形・繰り返し模様・低テクスチャの勾配・直線エッジを使います。座標は右と下が正、正の回転は画像中心を軸に時計回りです。双線形補間、正方形の平均ぼかし、輝度値の倍率、固定シードの一様ノイズ、[0,1]へのクリップの順に処理します。ぼかしは半径、ノイズは振幅です。符号化されたグレー値であり、物理的な輝度ではありません。縮小前のアンチエイリアス処理はありません。変換の境界やフィルタの影響で角点を数えないよう、薄く表示した領域を検出対象から除外します。

近傍検出率の読み方

元画像の検出点を変換し、変換後の有効な検出領域に入るものを比較可能な参照点とします。その3画素以内に検出点がある参照点数を、比較可能な参照点数で割った値が近傍検出率です。分母が空なら未定義(—)です。同じ検出点を複数の参照点に使えるため、方向付きの近傍判定であり、対応付けの正解率や標準的な対称再検出率ではありません。繰り返し模様では正しい対象を特定せずに高い値になり得ます。JSONには実際の画素、マスク、点、変換行列を含みます。

保存した計算例

既定のShi–Tomasi設定から、表に示したプリセットだけを変えて計算した値です。低テクスチャの例では、未定義の比率を成功率0%に置き換えていません。

図1 · ボタンで表示を切り替え
計算した元画像と回転後の画像。丸は検出点、十字は変換から求めた参照位置。
プリセット 元画像の点数 変換後の点数 近傍あり/比較可能 近傍検出率
基準 22 22 22 / 22 100.0%
30°回転 22 21 16 / 20 80.0%
低テクスチャ 0 0 0 / 0 —

関連する学習

特徴点マッチングLabで、記述子・絞り込み・幾何的な合意を既知の対応と比較できます。

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

次に読む

特徴点検出の理論Feature Detection(特徴点抽出)入門Visual SLAMの全体像Visual-SLAM入門 — カメラで「自分がどこにいるか」を知る技術前提を確認する画像の明るさ・輝度 Lab — 露出、ガンマ、クリッピングを比較