OpenCV直方图的使用
主要涉及两个函数:
CvHistogram结构归一化标识。如果不为0,则ranges[i]
(0<=i<cDims
,译者注:cDims
为直方图的维数,对于灰度图为1,彩色图为3)是包含两个元素的范围数组,包括直方图第i
维的上界和下界。在第i
维上的整个区域[lower,upper]被分割成dims[i]
个相等的块(译者注:dims[i]
表示直方图第i维的块数),这些块用来确定输入象素的第i
个值(译者注:对于彩色图像,i
确定R,G,或者B)的对应的块;如果为0,则ranges[i]
是包含dims[i]+1
个元素的范围数组,包括lower
0
,upper
0
,lower
1
,upper
1
==lower
2
,..., upper
dims[i]-1
,其中lower
j
和upper
j
分别是直方图第i
维上第j
个方块的上下界(针对输入象素的第i
个值)。任何情况下,输入值如果超出了一个直方块所指定的范围外,都不会被 cvCalcHist 计数,而且会被函数cvCalcBackProject 置零。void cvCalcHist( IplImage** image, CvHistogram* hist, int accumulate=0, const CvArr* mask=NULL );
void cvCalcHist( IplImage** image, CvHistogram* hist, int accumulate=0, const CvArr* mask=NULL );
操作mask,确定输入图像的哪个象素被计数
void cvGetMinMaxHistValue( const CvHistogram* hist, float* min_value, float* max_value, int* min_idx=NULL, int* max_idx=NULL );
函数 cvGetMinMaxHistValue 发现最大和最小直方块以及它们的位置。任何输出变量都是可选的。在具有同样值几个极值中,返回具有最小下标索引(以字母排列顺序定)的那一个。