将3D直方图归一化为1

时间:2014-02-03 11:49:40

标签: opencv histogram normalize

我已经从(CV_8UC3)图像的H-S-V样本中在OpenCV中构建了一个3D直方图。

我需要对此直方图进行标准化,以便所有值总和为1.0(最好是浮点表示),因为它将用作查找表的概率质量函数(pmf)。

我尝试了内置OpenCV函数的各种排列,但似乎都没有给出所需的结果。

int histSize[] = {hBins, sBins, vBins};
float hRange[] = {0.0f, (float)H_RANGE};
float sRange[] = {0.0f, (float)S_RANGE};
float vRange[] = {0.0f, (float)V_RANGE};
const float* ranges[] = {hRange, sRange, vRange};
const int channels[]  = {0, 1, 2}; // we compute the 3D histogram on all 2 channels (H-S-V)

    cv::calcHist(&newBGSamples, 1, channels, cv::Mat(), currentBGColourHist, 3, histSize, ranges, true, false);
//  currentBGColourHist /= cv::sum(bgHistoricalColourHist)(0);
    cv::normalize(currentBGColourHist, currentBGColourHist, 1.0, 1.0, cv::NORM_L1, CV_32FC3);
//  cv::normalize(currentBGColourHist, currentBGColourHist, 1.0, 0, cv::NORM_L2, -1, cv::Mat());
//  cv::norm(currentBGColourHist, )
//  cv::divide((double)1.0/cv::sum(bgHistoricalColourHist)(0), currentBGColourHist, currentBGColourHist, CV_32FC3);

评论的行显示了我对标准化的粗略想法。

0 个答案:

没有答案