OpenCV统计应用-直方图比较

更新时间:2023-07-20 18:47:05 阅读: 评论:0

OpenCV统计应用-直方图比较
cvCompareHist(),是比较两个统计直方图的分布,总共有四个方法,被定义如下:

#define CV_COMP_CORREL 0
#define CV_COMP_CHISQR 1
#define CV_COMP_INTERSECT 2
#define CV_COMP_BHATTACHARYYA 3

而这些方法分别为相关系数,卡方,交集法以及在做常态分布比对的Bhattacharyya距离,这些方法都是用来做统计直方图的相似度比较的方法,而且,都是根据统计学的概念,这边就简单的拿来用灰阶统计直方图来比较,而这部份的比较方式,是由图形的色彩结构来着手,下面就简单的用三种情况来分析它们距离比较的方式

直方图比较实作
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
胡辣汤怎么做#include <stdlib.h>

int HistogramBins = 256;
脖子的英文float HistogramRange1[2]={0分开的理由,255};
float *HistogramRange[1]={&HistogramRange1[0]};

int main()
{
    IplImage *Image1=cvLoadImage("RiverBank.jpg",0);
    IplImage *Image2=cvLoadImage("DarkClouds.jpg",0六月雪盆景);

    CvHistogram *Histogram1=cvCreateHist(1,&HistogramBins,CV_HIST_ARRAY,HistogramRange);
    CvHistogram *Histogram2=cvCreateHist(1,&HistogramBins,CV_HIST_ARRAY,Histogr
amRange);

    cvCalcHist(&Image1,Histogram1);
    cvCalcHist(&仓库管理员职责Image2,Histogram2);

    cvNormalizeHist(Histogram1,1);
    cvNormalizeHist(Histogram2,1);

    printf("CV_COMP_CORREL : %.4f\n",cvCompareHist(Histogram1,Histogram2,CV_COMP_CORREL));
    printf("CV_COMP_CHISQR : %.4f\n",cvCompareHist(Histogram1,Histogram2,CV_COMP_CHISQR));
    printf("CV_COMP_INTERSECT : %.4f\n",cvCompareHist(Histogram1,Histogram2,CV_COMP_INTERSECT));
    printf("CV_COMP_BHATTACHARYYA : %.4f\n",cvCompareHist(Histogram1,Histogram
2,CV_COMP_BHATTACHARYYA));

    cvNamedWindow("Image1",1);
    cvNamedWindow("Image2",1);
    cvShowImage("Image1",Image1);
    cvShowImage("Image2",Image2);
    cvWaitKey(0);
}

原始图片应聘工作:

藤萝花



 

执行结果:

(1)RiverBank.jpg & DarkClouds.jpg

Output:
CV_COMP_CORREL : -0.1407
CV_COMP_CHISQR : 0.6690
CV_COMP_INTERSECT : 0.4757
CV_COMP_BHATTACHARYYA : 0.4490

(2)RiverBank.jpg & RiverBank.jpg

Output:
CV_COMP_CORREL : 1
CV_COMP_CHISQR : 0
CV_COMP_INTERSECT : 1
CV_COMP_BHATTACHARYYA : 0

(3)Black.jpg & White.jpg

Output:
CV_COMP_CORREL : 1
CV_COMP_CHISQR : 1
CV_COMP_INTERSECT : 0
CV_COMP_BHATTACHARYYA : 1

这边的直方图比较,则是将它们的统计直方图用cvNormalizeHist()正规化成1,在由正规化的统计分布来做直方图的比较,从上面的输出结果可以推测出,卡方法以及Bhattacharyya是数
值越小图形越相似,而相关系数则是看图形的分布程度,梦见鸡肉因此第三个Black.jpg&White.jpg所显示相关系数的结果才会是1,这边的图形比较用的是统计学的方法,而一般的比较方式还有欧几里德距离的方式,在这个cvCompareHist()的函式,也可以实作出多通道的多维度直方图比较,而且支持CV_HIST_ARRAYCV_HIST_SPARSE这两种直方图数据结构的格式,而这些比对方法的相关公式如下


相关系数法

而它的公式推导如下



再来是卡方的方式

这边的卡方法跟一般的卡方检定不太一样,下面是一般适合度检定(Goodness of fit test)的公式

o为观察者次数,e为期望值次数



交集的方式就比较简单了,两个直方图取最小的做累加



再来就是常态分配比对的Bhattacharyya距离

本文发布于:2023-07-20 18:47:05,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1089457.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:直方图   统计   方式   结果   距离   分布
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图