ファイル名から HSV カラー ヒストグラムへのマッピングを格納する構造を使用しmap<CString, vector<double>>
ました。このマップには、画像 DB として 100 の要素があります。画像が来て、入力画像のヒストグラムを取得した場合、どうすればよいですか比較?
「二次距離」という方法は知っていますが、よくわかりません。
簡単な方法の 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;
}
次に、距離が最も小さいヒストグラムを特定します。これはデモンストレーションのみを目的としており、ベクトル サイズ チェックなどを追加する必要があることに注意してください。