2 つの次元を持つ 2 つのヒストグラムを比較したい。このために、私はカイ二乗 -メトリックを使用したいと考えています。私のコンパレータは、次の関数のようになります。
double Histogram::compareHistogram(Histogram *hist){
double result=0;
double a=0;
double b=0;
for (int y=0 ; y < bins_1 ; y++) {
for (int x=0 ; x < bins_2 ; x++) {
a=getHistogramValue(x,y)-hist->getHistogramValue(x,y);
b=getHistogramValue(x,y)+hist->getHistogramValue(x,y);
if(fabs(b)>0.0){
result+=a*a/b;
}
}
}
return result;
}
この結果を OpenCv の cv::compareHist()
関数の結果と比較しましたが、違います。どうしてか分かりません。
ヒストグラムを比較する前に、ヒストグラムを MINMAX-Norm で正規化します。正規化されたヒストグラムとopenCVの正規化されたヒストグラムを比較しましたが、それらは同じです。問題は私のcompareHist関数にあると思います。しかしここで?
よろしくお願いします、