0

ファイル名から HSV カラー ヒストグラムへのマッピングを格納する構造を使用しmap<CString, vector<double>>ました。このマップには、画像 DB として 100 の要素があります。画像が来て、入力画像のヒストグラムを取得した場合、どうすればよいですか比較?

「二次距離」という方法は知っていますが、よくわかりません。

4

1 に答える 1

1

簡単な方法の 1 つは、次のような距離計算機を使用することです。

double dist(vector<double> *histogram1, vector<double> *histogram2) {
    double result = 0.0;
    for (vector<double>::iterator val1=histogram1->begin(), val2=histogram2->begin();
         val1<histogram1->end();
         val1++, val2++) {
        result += (*val1 - *val2) * (*val1 - *val2);
    }
    result = sqrt(result);
    return result;
}

次に、距離が最も小さいヒストグラムを特定します。これはデモンストレーションのみを目的としており、ベクトル サイズ チェックなどを追加する必要があることに注意してください。

于 2012-07-04T06:10:55.747 に答える