OpenCV2马拉松第12圈——直方图比較

收入囊中

  • 使用4种不同的方法进行直方图比較

葵花宝典

要比較两个直方图,
首先必需要选择一个衡量直方图相似度的对照标准。也就是先说明要在哪个方面做对照。

我们能够想出非常多办法,OpenCV採用了下面4种

公式也都不难,我们自己就能实现。

d越小,表示差异越低,两幅图像越接近,越相似

初识API



C++: double compareHist(InputArray H1,
InputArray H2,
int method)





C++: double compareHist(const
SparseMat& H1, const
SparseMat& H2,
int method)







 
  • H1 –
    First compared histogram.

  • H2 –
    Second compared histogram of the same size as H1 .

  • method –

    Comparison method that
    could be one of the following:

    • CV_COMP_CORREL Correlation

    • CV_COMP_CHISQR Chi-Square

    • CV_COMP_INTERSECT Intersection

    • CV_COMP_BHATTACHARYYA Bhattacharyya
      distance

    • CV_COMP_HELLINGER Synonym
      for CV_COMP_BHATTACHARYYA

荷枪实弹

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>

using namespace std;
using namespace cv;

int main( int, char** argv )
{
Mat src1,src2,gray1,gray2;
src1 = imread(argv[1]);
src2 = imread(argv[2]);
cvtColor(src1, gray1, CV_BGR2GRAY);
cvtColor(src2, gray2, CV_BGR2GRAY);

int histSize = 256;
float range[] = { 0, 256 } ;
const float* histRange = { range };
int channels[] = {0};

Mat hist1,hist2;
calcHist( &gray1, 1, channels, Mat(), hist1, 1, &histSize, &histRange);
calcHist( &gray2, 1, channels, Mat(), hist2, 1, &histSize, &histRange);

//相关:CV_COMP_CORREL
//卡方:CV_COMP_CHISQR
//直方图相交:CV_COMP_INTERSECT
//Bhattacharyya距离:CV_COMP_BHATTACHARYYA
double diff = compareHist(hist1,hist2,CV_COMP_BHATTACHARYYA);
cout << diff << endl;
}

举一反三

这篇直方图比較很easy,没什么要说的了

计算机视觉讨论群:162501053

转载请注明:http://blog.csdn.net/abcd1992719g

OpenCV2马拉松第12圈——直方图比較,布布扣,bubuko.com

时间: 2024-10-12 11:25:25

OpenCV2马拉松第12圈——直方图比較的相关文章

OpenCV2马拉松第12圈——直方图比较

收入囊中 使用4种不同的方法进行直方图比较 葵花宝典 要比较两个直方图, 首先必须要选择一个衡量直方图相似度的对比标准.也就是先说明要在哪个方面做对比. 我们可以想出很多办法,OpenCV采用了以下4种 公式也都不难,我们自己就能实现. d越小,表示差异越低,两幅图像越接近,越相似 初识API C++: double compareHist(InputArray H1, InputArray H2, int method) C++: double compareHist(const Sparse

OpenCV2马拉松第10圈——直方图反向投影(back project)

收入囊中 灰度图像的反向投影 彩色图像的反向投影 利用反向投影做object detect 葵花宝典 什么是反向投影?事实上没有那么高大上! 在上一篇博文学到,图像能够获得自己的灰度直方图. 反向投影差点儿相同是逆过程,由直方图得到我们的投影图. 步骤例如以下: 依据模版图像,得到模版图像的灰度直方图. 对灰度直方图对归一化,归一化后是个概率分布,直方图的积分是1 依据概率分布的直方图,求输入图像的投影图,也就是对每个像素点,我们依据灰度值,能够得到其概率 得到的投影图是介于[0,1]之间的,为

OpenCV2马拉松第9圈——再谈对比度(对比度拉伸,直方图均衡化)

收入囊中 lookup table 对比度拉伸 直方图均衡化 葵花宝典 lookup table是什么东西呢? 举个例子,假设你想把图像颠倒一下,f[i] = 255-f[i],你会怎么做? for( int i = 0; i < I.rows; ++i) for( int j = 0; j < I.cols; ++j ) I.at<uchar>(i,j) = 255 - I.at<uchar>(i,j); 大部分人应该都会这么做.或者: for( i = 0; i &

OpenCV2马拉松第8圈——绘制直方图

收入囊中 灰度直方图 彩色直方图 葵花宝典 直方图的理论还是非常丰富的,应用也很多,诸如: 直方图均衡化 直方图匹配(meanshift,camshift) 在这里,我先介绍基础,如何绘制图像的直方图. 拿灰度图像来说,直方图就是不同的灰度对应的个数,横轴(x)就是[0,256), 纵轴(y)就是对应的个数 如下图,分别是灰度直方图和彩色直方图 初识API C++: void calcHist(const Mat* images, int nimages, const int* channels

OpenCV2马拉松第11圈——meanshift与直方图反向投影

收入囊中 meanshift图像聚类 meanshift object detect 葵花宝典 今天有点累,理论就讲少点吧T_T meanshift中文是均值飘逸,就是给定一个点,然后会移动到概率密度最大的地方. 对于图像,什么是概率密度最大? 我们可以定义很多要素: 距离 RGB HSV 下面我有个例子,就是用距离(x,y)和HSV(h,s,v)作图像聚类的. 于是我们有5个要素,当前点与其他点的距离,HSV越接近,则概率密度越高. 假定我们有一点(m,n),如何选择下一个点呢,如何在一个矩形

OpenCV2马拉松第26圈——FAST特征点检测

计算机视觉讨论群162501053 转载请注明:http://blog.csdn.net/abcd1992719g/article/details/28424579 关于角点检测,我写过两篇文章 openCV2马拉松第19圈--Harris角点检测(自己实现) OpenCV2马拉松第21圈--形态学操作实现角点检测 有兴趣的童鞋可以去看看--- 收入囊中 FAST角点检测原理 使用OpenCV  FAST API检测角点 葵花宝典 对于一个角点来说,应该与周围的大多数像素点有很大的差别 如上图,

OpenCV2马拉松第27圈——SIFT论文,原理及源码解读

计算机视觉讨论群162501053 转载请注明:http://blog.csdn.net/abcd1992719g/article/details/28913101 简介 SIFT特征描述子是David G. Lowe 在2004年的ijcv会议上发表的论文中提出来的,论文名为<<Distinctive Image Featuresfrom Scale-Invariant Keypoints>>.这是一个很强大的算法,主要用于图像配准和物体识别等领域,但是其计算量相比也比较大,性价

OpenCV2马拉松第13圈——模版匹配

收入囊中 在http://blog.csdn.net/abcd1992719g/article/details/25505315这里,我们已经学习了如何利用反向投影和meanshift算法来在图像中查找给定模版图片的位置.meanshift针对的是单张图像,在连续图像序列的跟踪中,camshift(Continuously Adaptive Mean-SHIFT)是一种著名的算法.但在这里,我们先不讨论camshift,而是先讨论最简单的模版匹配. 模版匹配算法 opencv normalize

OpenCV2马拉松第16圈——边缘检测(形态学梯度)

计算机视觉讨论群162501053 转载请注明:http://blog.csdn.net/abcd1992719g 收入囊中 利用OpenCV函数进行形态学梯度操作 自定义结构矩阵进行形态学梯度操作 葵花宝典 在此之前,如果你还没接触过灰度图像形态学膨胀与腐蚀,希望你能仔细阅读灰度图像形态学膨胀与腐蚀 本质上,灰度与二值并不差异,二值不过是0与255,膨胀与腐蚀的操作都是一样的 形态学梯度的定义如下: 形态梯度 dst=morph_grad(src,element)=dilate(src,ele