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个元素的范围数组,包括lower0,upper0,lower1,upper1==lower2,..., upperdims[i]-1,其中lowerj和upperj分别是直方图第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 发现最大和最小直方块以及它们的位置。任何输出变量都是可选的。在具有同样值几个极值中,返回具有最小下标索引(以字母排列顺序定)的那一个。