我一直在嘗試使用直方圖匹配從樣本圖像中找到匹配的圖像。對於大多數情況下我的代碼工作正常。使用方法Bhattacharyya的範圍爲0 < =方法< = 1. 通常使用Bhattacharyya方法,輸出結果將接近於0,以防匹配的情況。但我已經遇到過這樣一種情況,即兩幅圖像幾乎相似,但可能存在一些對比差異。 這就是爲什麼這個程序給予更高的結果...'compareHist'不能用於相似圖像
任何人都可以幫助我,爲什麼這個比較給了這麼大的價值?
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