opencv笔记二十六(比较两幅图的【直方图的】相似度)compareHist(InputArray h1, InputArray H2,  int methodCV

xiaoxiao2021-02-28  17

 

直方图比较方法-相关性计算(CV_COMP_CORREL)

d=1:两幅图完全一致

d越接近1两幅图越相似

 

直方图比较方法-卡方计算(CV_COMP_CHISQR)

d=0:两幅图完全相同

d越小两幅图越相同

 

直方图比较方法-十字计算(CV_COMP_INTERSECT)【不常用,很不准】

 

直方图比较方法-巴氏距离计算(CV_COMP_BHATTACHARYYA )【比较精确】

d=0:完全相等

d越接近0两幅图越相似

 

实验步骤:

1,首先把图像从RGB色彩空间转换到HSV色彩空间cvtColor

2,计算图像的直方图,然后归一化到[0~1]之间calcHist和normalize;

3,使用上述四种比较方法之一进行比较compareHist

 

API:

compareHist(//比较直方图相似度

InputArray h1, // 直方图数据,下同

InputArray H2, 

int method// 比较方法,上述四种方法之一 )

 

代码如下:

#include <opencv2/opencv.hpp> #include <iostream> #include <math.h> using namespace std; using namespace cv; int main(int argc, char** argv) { Mat t1,t2,t3,t1h,t2h,t3h; t1 = imread("1.bmp"); if (!t1.data) { printf("could not load image...\n"); return -1; } t2 = imread("2.bmp"); t3 = imread("5.bmp"); pyrUp(t1, t1, Size(t1.cols * 2, t1.rows * 2)); pyrUp(t1, t1, Size(t1.cols * 2, t1.rows * 2)); pyrUp(t2, t2, Size(t2.cols * 2, t2.rows * 2)); pyrUp(t2, t2, Size(t2.cols * 2, t2.rows * 2)); pyrUp(t3, t3, Size(t3.cols * 2, t3.rows * 2)); pyrUp(t3, t3, Size(t3.cols * 2, t3.rows * 2)); cvtColor(t1, t1h, CV_BGR2HSV); cvtColor(t2, t2h, CV_BGR2HSV); cvtColor(t3, t3h, CV_BGR2HSV); int t10 = 32, t20 = 64; int t11[] = { t10,t20 }; int channel[] = { 0,1 }; float f1[] = { 0,180 }; float f2[] = { 0,256 }; const float *f3[] = { f1,f2 }; Mat t1c, t2c, t3c; calcHist(&t1h,1, channel, Mat(), t1c, 2, t11, f3, true, false); normalize(t1c, t1c, 0, 1,NORM_MINMAX, -1); calcHist(&t2h, 1, channel, Mat(), t2c, 2, t11, f3, true, false); normalize(t2c, t2c, 0, 1, NORM_MINMAX, -1); calcHist(&t3h, 1, channel, Mat(), t3c, 2, t11, f3, true, false); normalize(t3c, t3c, 0, 1, NORM_MINMAX, -1); double t12 = compareHist(t1c, t2c,CV_COMP_BHATTACHARYYA); double t13 = compareHist(t1c, t3c, CV_COMP_BHATTACHARYYA); double t110 = compareHist(t1c, t1c, CV_COMP_BHATTACHARYYA); cout << "t12=" << t12 << " t13=" << t13 << " t11=" << t110; namedWindow("M", 0); waitKey(0); return 0; }

 

 

 

转载请注明原文地址: https://www.6miu.com/read-2629533.html

最新回复(0)