2017-10-04 9 views
1

ヒストグラムマッチングを使用してサンプル画像から一致する画像を検索しようとしています。ほとんどの場合、私のコードは正常に動作しています。使用されるメソッドBhattacharyyaの範囲は0 < =メソッド< = 1 です。通常、Bhattacharyyaメソッドを使用すると、一致する場合に出力結果は0に近づきます。しかし、私は両方の画像がほぼ同じですが、コントラストの違いがあるかもしれません。 これは、この手順がより高い結果をもたらす理由です...類似の画像では 'compareHist'が機能しません

誰にでも私はなぜこの比較が非常に大きな価値を与えてくれますか? JPEGは、情報が削除されたヒストグラムは、基本的に濾過し、平滑化されたことを意味している圧縮されているので、

src image and test image

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; 
} 
+0

私はそれが下部のテキストと関係があると思われます。テキストを切り抜いて比較してみてください。 – noel

+0

いいえ、私はこの場合にのみイメージを使用しました。ここで私はあなたが混乱させた理由であるスクリーンショットを添付しました。 – reza5630

+0

私はちょうど彼らが異なったイメージフォーマットであることに気づいた。それが理由です。 – noel

答えて

0

PNGとJPEG画像は、彼らが同じように表示されますにもかかわらず、別のヒストグラムを持つことになります。また、PNGはJPEGよりも大きな範囲の値を持ちます。さまざまなビンサイズでより良い結果が得られるかもしれませんが、テストなしでは伝えにくいです。

+0

私はすでにそれを試みました...しかし、私は同じフォーマットのサンプルを撮っていますが、それでも値は高いです(0.64)... はっきりとはるかに高い結果(0.84)で異なるフォーマットの結果を使用しています。 – reza5630

関連する問題