最近利用五一的假期时间,把OpenCV中的直方图及其匹配方面看了下,下面就用这篇博文给简单的总结下。
直方图广泛应用于图像处理和计算机视觉中。通过标记帧与帧之间显著的边缘和颜色的统计变化,直方图可以用来检测视频中场景的变换。通过为每个兴趣点设置一个有相近特征的直方图所构成的标签,用以确定图像中的兴趣点。边缘、色彩和角等直方图构成了可以被传递给目标识别分类器的一个通用特征类型。可以说,直方图是进行图像分析和计算机视觉最有利的工具之一。
简单的说,直方图是对数据进行统计,将统计值组织到一系列事先定义好的bin中,bin中的数值是从数据中计算出的特征的统计量,这些数据可以是诸如梯度、方向等其它特征。直方图获得的是数据分布的统计图。
在OpenCV中有各类关于直方图处理的函数,也有表征直方图的数据类型。
(1)类似于图片数据结构IplImage,在创建一个图片时,先cvCreateImage(),类似的,在获得一个直方图的前提是先创建一个新的直方图cvCreateHist();
CvHistogram* cvCreateHist(
int dims,//直方图包含的维数
int* sizes,//必须为整数数组
int type,//CV_HIST_ARRAY或者是CV_HIST_SPARSE
float** ranges=NULL,
int uniform=1//非0表示直方图均匀
)
(2)下面给出一个比较实用的函数,那就是从图像中计算得到直方图
void cvCalcHist(
//image一个指向数组的IplImage*类型指针,多通道图像,调用此函数前,要将图像分为单通道的