ヒストグラムマッチングを使用してサンプル画像から一致する画像を検索しようとしています。ほとんどの場合、私のコードは正常に動作しています。使用されるメソッドBhattacharyyaの範囲は0 < =メソッド< = 1 です。通常、Bhattacharyyaメソッドを使用すると、一致する場合に出力結果は0に近づきます。しかし、私は両方の画像がほぼ同じですが、コントラストの違いがあるかもしれません。 これは、この手順がより高い結果をもたらす理由です...類似の画像では 'compareHist'が機能しません
誰にでも私はなぜこの比較が非常に大きな価値を与えてくれますか? JPEGは、情報が削除されたヒストグラムは、基本的に濾過し、平滑化されたことを意味している圧縮されているので、
int main(){
src_base = imread("images/src.jpg",-1);
src_test1 = imread("images/test.png",-1);
double base_test1 = hsvToHist(src_base, src_test1,3);
cout<< " Bhattacharyya template Base-Test(1) : "<< base_test1<<endl;
return 0;
}
double hsvToHist(Mat src_base, Mat src_test1, int method){
Mat hsv_base, hsv_test1;
cvtColor(src_base, hsv_base, COLOR_BGR2HSV);
cvtColor(src_test1, hsv_test1, COLOR_BGR2HSV);
/// initialization to calculate histograms (Using 50 bins for hue, 60 for saturation)
int h_bins = 50; int s_bins = 60;
int histSize[] = { h_bins, s_bins };
float h_ranges[] = { 0, 180 };
float s_ranges[] = { 0, 256 };
const float* ranges[] = { h_ranges, s_ranges };
int channels[] = { 0, 1 };
/// Histograms
Mat hist_base, hist_test1;
/// Calculate the histograms for the HSV images
calcHist(&hsv_base, 1, channels, Mat(), hist_base, 2, histSize, ranges, true, false);
normalize(hist_base, hist_base, 0, 1, NORM_MINMAX, -1, Mat());
calcHist(&hsv_test1, 1, channels, Mat(), hist_test1, 2, histSize, ranges, true, false);
normalize(hist_test1, hist_test1, 0, 1, NORM_MINMAX, -1, Mat());
///'3' for Bhattacharyya
double base_test1 = compareHist(hist_base, hist_test1, method);
return base_test1;
}
私はそれが下部のテキストと関係があると思われます。テキストを切り抜いて比較してみてください。 – noel
いいえ、私はこの場合にのみイメージを使用しました。ここで私はあなたが混乱させた理由であるスクリーンショットを添付しました。 – reza5630
私はちょうど彼らが異なったイメージフォーマットであることに気づいた。それが理由です。 – noel