OpenCV 直方图

OpenCV中有灰度直方图均衡化的函数equalizeHist ( InputArray src, OutputArray dst )

只能处理单通道的灰色图像,对于彩色图像,需要把每个信道分别均衡化,再Merge为彩色图像。

OpenCV函数 compareHist ()产生一个表达两个直方图的相似度的数值

要比较两个直方图(H1 and H2), 首先必须要选择一个衡量直方图相似度的对比标准 

该函数提供了4种对比标准来计算相似度

1Correlation ( CV_COMP_CORREL ) 相关系数

  

2、Chi-Square ( CV_COMP_CHISQR ) 卡方

  

3、Intersection ( CV_COMP_INTERSECT ) 相交

  

4、Bhattacharyya ( CV_COMP_BHATTACHARYYA ) 巴氏距离

  

对于 Correlation 和 Intersection 标准,值越大相似度越大。

对于Chi-square 和 Bhattacharyya 标准,值越小相似度越大。

更过可参见:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/histograms/histogram_comparison/histogram_comparison.html

时间: 2024-08-10 06:26:52

OpenCV 直方图的相关文章

OpenCV —— 直方图与匹配

直方图就是对数据进行统计,将统计值组织到一系列事先定义好的bin中.bin中的数值是从数据中计算出来的特征的统计量,这些数据可以是诸如梯度,方向,色彩或任何其他特征. 直方图获得是是数据分布的统计图 直方图的基本数据结构 CvHistogram 创建一个新的直方图 cvCreateHist dims   直方图维数的数目 sizes  直方图维数尺寸的数组 type  直方图的表示格式: CV_HIST_ARRAY 意味着直方图数据表示为多维密集数组 CvMatND; CV_HIST_TREE

《OpenCV:直方图应用:直方图均衡化,直方图匹配,对比直方图》

直方图均衡化 直方图均衡化(Histogram Equalization)是直方图最典型的应用,是图像点运算的一种.对于一幅输入图像,通过运算产生一幅输出图像,点运算是指输出图像的每个像素点的灰度值由输入像素点决定,即: 直方图均衡化是通过灰度变换将一幅图像转换为另一幅具有均衡直方图,即在每个灰度级上都具有相同的象素点数过程.从分布图上的理解就是希望原始图像中y轴的值在新的分布中尽可能的展开.变换过程是利用累积分布函数对原始分布进行映射,生成新的均匀拉伸的分布.因此对应每个点的操作是寻找原始分布

Opencv直方图计算是否需要Gpu加速?

众所周知,Gpu加速技术对图像处理具有很大的影响,在前面的博客中通过对比验证了Gpu加速技术对图像滤波的高效率.但是Gpu技术并不是万能的,本文通过比较发现Gpu计算直方图的效率并没有传统计算方法效率高.下面表格是对比结果,时间是通过运行20次求平均值而得,后面给出相应的比较代码.由结果可以看出Cpu计算直方图是运行效率更高,当对图片数据库进行训练时,如果有5000幅图片需要处理,采用Cpu计算方式可以节省75分钟左右的时间,节省的时间还是相当可观的. Gpu与Cpu计算直方图效率对比 方式 C

OpenCV——直方图均衡化(用于图像增强)

1 #include <opencv2/opencv.hpp> 2 #include <iostream> 3 #include <math.h> 4 5 using namespace cv; 6 using namespace std; 7 8 9 int main(int argc, char** argv) 10 { 11 Mat src,src_gray,dst; 12 //src = imread("3 input.bmp"); 13 s

opencv直方图均衡化

#include <iostream> #include "highgui.h" #include "cv.h" #include "cxcore.h" #include "math.h" using namespace std; using namespace cv; //绘制1维直方图 Mat draw1DHistogram(Mat histogramMat) { double maxVal = 0, minV

opencv直方图拉伸

1.首先计算出一幅图像的直方图 //计算直方图 cv::MatND ImageHist::getHist(const cv::Mat &image){ cv::Mat im; if(image.channels() == 3) cv::cvtColor(image,im,CV_RGB2GRAY,0); else im = image; float r[2]; r[0] = 0; r[1] = 255; const float *ranges[1]; ranges[0] = r; cv::calc

opencv 直方图均衡化

将代码中的图片路径换成实际路径即可. #include "stdafx.h" #include "cv.h" #include "highgui.h" #include <highgui.h> #include <cv.h> using namespace std; int main(int argc, char** argv) { int k; IplImage* src = cvLoadImage("..\\

opencv直方图加刻度

声明:本文参考链接 //////////////////////////画 坐 标 值////////////// double bin_w = (double)dstImage.cols / 256; // hdims: 条的个数,则 bin_w 为条的宽度 double bin_u = (double)dstImage.rows / maxValue; //// max: 最高条的像素个数,则 bin_u 为单个像素的高度 //画纵坐标刻度(像素个数) char string[10]; in

OpenCV——直方图计算、绘制和对比匹配

原文地址:https://www.cnblogs.com/long5683/p/9692885.html