open cv直方图对比

本文探讨了为何需要进行图像直方图比较,介绍了如何通过比较两张图像的直方图来评估它们的相似性。OpenCV提供了四种比较方法:Correlation、Chi-Square、Intersection和Bhattacharyya Distance。还提到了颜色空间,如RGB、HSV在图像处理中的作用,以及在HSV空间中进行直方图比较的优势。文章详细讲解了从RGB到HSV的转换、直方图计算及归一化,以及compareHist函数的使用。
摘要由CSDN通过智能技术生成

为什么需要直方图比较?

如果你有两张图 就可以对两张直方图进行比较 衡量图像之间的相关性


二十四、直方图比较
利用两张图片的直方图判断两张图片的相似性,也可以判断两个图片是否为同一图片。
1、直方图比较方法
对输入的两张图象计算得到直方图H1与H2,归一化到相同的尺度空间然后可以通过
计算H1和H2之间的距离得到两个直方图的相似程度进而比较图像本身的相似程度。
opencv提供的比较方法有4种:

Correlation相关性比较 HISTCMP_CORREL
如果两个数组H1、H2一样的情况下,相关性最大,得到的值为1。

Chi-Square卡方比较HISTCMP_CHISQR
如果H1、H2完全相同,相关性最大,得到的值为0。

Intersection十字交叉性HISTCMP_INTERSECT(不准确,慎用)

Bhattacharyya distance巴氏距离HISTCMP_BHATTACHARYYA
如果H1、H2完全相同,相关性最大,得到的值为0。


关于 RGB、HSV和HSL颜色空间的说明

RGB颜色空间-三分量线性合成颜色 优点(可以合成所有颜色 面向硬件) 缺点(亮度变化时 三个分量会随之改变)
所以,RGB 颜色空间适合于显示系统,却并不适合于图像处理

HSV颜色空间-多用于图像处理 比RGB更接近人们对于色彩的认知
在 HSV 颜色空间下,比 BGR 更容易跟踪某种颜色的物体,常用于分割指定颜色的物体

HSV 表达彩色图像的方式由三个部分组成:

Hue(色调、色相)范围:0-180
Saturation(饱和度、色彩纯净度)范围:0-255
Value(明度)范围:0-255

https://zhuanlan.zhihu.com/p/67930839
相关API

首先把图像从RGB色彩空间转换到HSV色彩空间cvtColor(直方图基于灰度级别,HSV的HS对亮度很敏感)
计算图像的直方图,然后归一化到0-1之间calcHist和normalize
使用上述四种方法之一进行比较compareHist
compareHist(
InputArray h1,//直方图数据,下同
InputArray h2,
int method//比较方法,上述四种方法之一
)

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui_c.h>
#include <iostream>
#include <math.h>

using namespace cv;
using namespace std;

Mat src, dst,test1, test2;

void compareHist(int, void*);

string convertToString(double d);//将double型数据转为字符型

int main()
{
   
	src = imread("D:/实验台/机器视觉/测试图片/盖茨.jpg");
	test1 = imread("D:/实验台/机器视觉/测试图片/盖茨霍夫圆检测.jpg");
	test2 = imread("D:/实验台/机器视觉/测试图片/白人女.jpg");
	if (src.empty())//如果src这个数据库属性为空
	{
   
		cout << "无法打开" << endl;
		return -1;
	}
	imshow("原图未对比", src);
	imshow("第一张图 未对比", test1);
	imshow("第二张图 未对比", test2);
    compareHist(0, 0);
	waitKey(0);
	return 0;
}


void compareHist(int, void*)
{
   
	//转换bgr为hsv色彩空间(只取HSV中的HS两个色彩空间计算直方图 因为色彩和饱和度是直方图中最敏感的的表征量)
	//转换bgr为hsv色彩
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值