3

可変サイズの機能をクラスタリングするために、opencv で BOW を使用しています。ただし、opencv のドキュメントから明確でないことが 1 つあります。また、この質問の理由を見つけることができません。

仮定: 辞書サイズ = 100。

私は surf を使用して特徴を計算し、各画像には可変サイズの記述子 (128 x 34、128 x 63 など) があります。BOW では、それぞれがクラスター化され、画像の固定記述子サイズ 128 x 100 が得られます。100 が kmeans クラスタリングを使用して作成されたクラスターの中心であることはわかっています。

しかし、画像に128 x 63の記述子がある場合、記述子マトリックスを1Dに変換しない限り、kmeansを使用して不可能な100個のクラスターにクラスター化する方法よりも混乱しています。1D に変換すると、単一のキー ポイントの有効な 128 次元情報が失われませんか?

わずか 63 個のフィーチャから 100 個のクラスター センターを取得するために記述子マトリックスをどのように操作するかを知る必要があります。

4

1 に答える 1

11

このように考えてください。

現在の画像には合計 10 個のクラスター平均と 6 個の特徴があります。これらの特徴の最初の 3 つは 5 番目の平均に最も近く、残りの 3 つはそれぞれ 7 番目、8 番目、9 番目の平均に最も近いです。次に、機能はこれのようなもの[0, 0, 0, 0, 3, 0, 1, 1, 1, 0]または正規化されたバージョンになります。これは 10 次元であり、クラスター平均の数に等しくなります。したがって、必要に応じて、63 個のフィーチャから 100000 次元のベクトルを作成できます。

しかし、BOW を適用した後、フィーチャは 128x100 ではなく 1x100 になるはずなので、何か問題があると思います。クラスターの平均は 128x1 で、128x1 サイズの機能 (最初の画像には 34 128x1 機能、2 番目の画像には 63 128x1 機能など) をそれらの手段に割り当てています。したがって、基本的に 34 または 63 の機能を 100 の手段に割り当てると、結果は 1x100 になるはずです。

于 2013-10-24T11:11:52.977 に答える