特徴点の検出に続き、特徴量の計算をするプログラムが完成しました。
理解するのが大変でしたが、理解しないと書けないのでなんとかやっつけました。
いろいろ計算結果を見たり、デバッグしているうちにSIFTの概念がわかってきました。
まとめるとこんな感じです。
1.画像中で変化に富んだ「特徴点」をうまく検出し、その点近傍の値から代表方向(オリエンテーション:重み付き加算による多数決みたいなもの)を決める。
2.特徴点近傍の地形(輝度傾き強さ+方向)をオリエンテーションを起点とした128個の配列に詰め込む。
3.地形パターンがもっとも似ている点どうしを対応点とする。
実際の計算例を紹介します
最初の画像
各特徴点近傍で128次元のSIFT特徴量を計算します。
最初の画像は19個のキーポイント検出
90度回転75%縮小の画像は21個のキーポイント検出
星取表。約60%しか正解しませんでした。90度回転だけならはほぼ100%対応を見つけます。縮小が入ることによって外れが出てきます。
特徴点の対応。対応が取れたもの同士を線で結んだもの。
そしてやってみてわかったこと。
星の写真はSIFTに向かない!(TωT)
特徴点の検出は精度よくいきますが、特徴点近傍での地形がほぼ円のため特徴に乏しく、かつオリエンテーションの決定が流動的となるからです。
またひとつツールは増えたけれど興味ある活用が思いつきません。
ひとまずプロジェクトクローズということで、キーポイント出力座標をテトラに食わせるほうに進みたいと思います。
理解するのが大変でしたが、理解しないと書けないのでなんとかやっつけました。
いろいろ計算結果を見たり、デバッグしているうちにSIFTの概念がわかってきました。
まとめるとこんな感じです。
1.画像中で変化に富んだ「特徴点」をうまく検出し、その点近傍の値から代表方向(オリエンテーション:重み付き加算による多数決みたいなもの)を決める。
2.特徴点近傍の地形(輝度傾き強さ+方向)をオリエンテーションを起点とした128個の配列に詰め込む。
3.地形パターンがもっとも似ている点どうしを対応点とする。
実際の計算例を紹介します
最初の画像
各特徴点近傍で128次元のSIFT特徴量を計算します。
最初の画像は19個のキーポイント検出
90度回転75%縮小の画像は21個のキーポイント検出
星取表。約60%しか正解しませんでした。90度回転だけならはほぼ100%対応を見つけます。縮小が入ることによって外れが出てきます。
×[0][0][1]239,284,238.607921,283.923704 - [2][0][0]216,86,215.608319,85.738967
○[1][0][1]511,57,511.127042,57.457367 - [0][0][0]340,383,340.066364,383.245903
○[2][0][2]96,345,95.932779,344.543357 - [3][0][1]125,72,124.608409,71.743806
○[3][0][2]89,326,89.010902,326.318084 - [5][0][2]140,67,140.321803,67.161088
○[4][1][0]14,403,14.188247,403.250999 - [6][0][2]80,11,80.488484,11.284424
×[5][1][0]100,333,100.524841,332.483434 - [12][2][2]192,127,194.719446,127.056755
×[6][1][0]4,309,4.305762,308.403008 - [1][0][0]170,179,170.271075,178.550447
○[7][1][1]78,367,78.610949,366.534548 - [8][1][0]108,59,107.782811,59.244432
×[8][1][1]378,233,378.630120,231.578158 - [0][0][0]340,383,340.066364,383.245903
○[9][1][2]6,415,6.352352,414.022923 - [9][1][0]72,5,73.194128,4.289589
×[10][2][0]124,227,125.928474,226.739705 - [2][0][0]216,86,215.608319,85.738967
×[11][2][1]56,275,57.211031,272.810587 - [8][1][0]108,59,107.782811,59.244432
○[12][3][0]40,383,47.348070,380.443193 - [13][2][2]96,39,95.798778,36.384763
○[13][3][0]168,255,168.347141,252.796484 - [12][2][2]192,127,194.719446,127.056755
○[14][3][1]248,271,249.757714,265.145889 - [16][3][0]184,191,184.450100,187.701948
×[15][3][1]264,207,267.447011,206.697352 - [3][0][1]125,72,124.608409,71.743806
○[16][3][1]296,159,300.891475,153.173508 - [14][3][0]264,231,267.508984,224.859684
○[17][3][2]136,303,135.852360,301.298896 - [17][3][1]152,111,153.783787,103.701831
×[18][5][0]192,191,198.216108,169.195049 - [0][0][0]340,383,340.066364,383.245903
%
○[0][0][0]340,383,340.066364,383.245903 - [1][0][1]511,57,511.127042,57.457367
×[1][0][0]170,179,170.271075,178.550447 - [10][2][0]124,227,125.928474,226.739705
×[2][0][0]216,86,215.608319,85.738967 - [10][2][0]124,227,125.928474,226.739705
○[3][0][1]125,72,124.608409,71.743806 - [2][0][2]96,345,95.932779,344.543357
×[4][0][2]134,75,133.822921,75.280733 - [13][3][0]168,255,168.347141,252.796484
○[5][0][2]140,67,140.321803,67.161088 - [3][0][2]89,326,89.010902,326.318084
○[6][0][2]80,11,80.488484,11.284424 - [4][1][0]14,403,14.188247,403.250999
○[7][1][0]210,285,209.619708,284.185748 - [8][1][1]378,233,378.630120,231.578158
○[8][1][0]108,59,107.782811,59.244432 - [7][1][1]78,367,78.610949,366.534548
○[9][1][0]72,5,73.194128,4.289589 - [9][1][2]6,415,6.352352,414.022923
×[10][1][2]164,143,164.346308,142.947995 - [3][0][2]89,326,89.010902,326.318084
○[11][1][2]212,95,213.088101,95.126605 - [13][3][0]168,255,168.347141,252.796484
○[12][2][2]192,127,194.719446,127.056755 - [13][3][0]168,255,168.347141,252.796484
○[13][2][2]96,39,95.798778,36.384763 - [12][3][0]40,383,47.348070,380.443193
○[14][3][0]264,231,267.508984,224.859684 - [16][3][1]296,159,300.891475,153.173508
×[15][3][0]224,207,228.524327,200.260858 - [2][0][2]96,345,95.932779,344.543357
○[16][3][0]184,191,184.450100,187.701948 - [14][3][1]248,271,249.757714,265.145889
○[17][3][1]152,111,153.783787,103.701831 - [17][3][2]136,303,135.852360,301.298896
×[18][3][1]192,71,193.563240,66.052753 - [7][1][1]78,367,78.610949,366.534548
×[19][3][1]136,39,143.082457,35.020531 - [8][1][1]378,233,378.630120,231.578158
×[20][4][2]240,159,254.684356,149.081198 - [8][1][1]378,233,378.630120,231.578158
%
特徴点の対応。対応が取れたもの同士を線で結んだもの。
そしてやってみてわかったこと。
星の写真はSIFTに向かない!(TωT)
特徴点の検出は精度よくいきますが、特徴点近傍での地形がほぼ円のため特徴に乏しく、かつオリエンテーションの決定が流動的となるからです。
またひとつツールは増えたけれど興味ある活用が思いつきません。
ひとまずプロジェクトクローズということで、キーポイント出力座標をテトラに食わせるほうに進みたいと思います。




