参考自opencv手册
图像直方图:用于统计图像的信息。
作用:利用反投影映射检测图像信息。meanshift和camshift利用了直方图的信息进行物体跟踪。利用图像均衡化可调整图像的对比度,使图像更清晰。等等
函数介绍:
统计直方图函数:
cv::(&image,
1, // histogram of 1 image only
channels, // the channel used
cv::Mat(), // no mask is used
hist, // the resulting histogram
3, // it is a 3D histogram
histSize, // number of bins
ranges // pixel value range
uniform,
accumulate);
求取最小值和最大值:
参数:直方图,最小值,最大值,最小值位置,最大值位置,掩码
minMaxIdx(hist, &minVal, &maxVal, imin, imax, noArray());
画线:
参数:输出图像,起点,终点,颜色
line(histImage, Point(h, histSize[0]), Point(h, histSize[0] - intensity), Scalar::all(255));
查找表:
参数:图像,查找表,结果
可用以图像像素作为下标,从查找表查找对应的值替换图像的像素,结果存到result数组中
LUT(image.getMat(), lookup.getMat(), result);
颜色空间转换:
BGR转换成hsv
cvtColor(image, hue, COLOR_BGR2HSV);
BGR转换成Lab
cvtColor(image, lab, COLOR_BGR2Lab);
反投影映射:
calcBackProject(&image, //输入图像
1, //通道数
channels, //哪些通道
shistogram, //直方图,归一化了的
result, //结果图像
ranges, //像素的取值范围
255.0); //缩放因子,放大255倍
阈值化:
可实现二值化:
参数一输入图像,输出图像,阈值,最大值,阈值化方式
threshold(result, result, 255.0*thresholdVal, 255.0, THRESH_BINARY);
归一化函数:
参数:输入矩阵,输出矩阵,归一化的alpha值,归一化方式
这个函数意思:矩阵归一化为0.0-1.0
normalize(shistogram, shistogram, 1.0, NORM_L2);
直方图距离:
参数:直方图1,直方图2,求距离方式
compareHist(this->refHist, this->inputHist, HISTCMP_INTERSECT);
直方图均衡化:
输入图像,输出图像
equalizeHist(image, result);
实验: