OpenCV - 像素的图像直方图值

时间:2013-10-04 20:31:57

标签: opencv histogram skin

我正在尝试在OpenCV中实现皮肤检测的皮肤概率图算法。

我已经陷入了根据http://www.cse.unsw.edu.au/~icml2002/workshops/MLCV02/MLCV02-Morales.pdf和本教程http://www.morethantechnical.com/2013/03/05/skin-detection-with-probability-maps-and-elliptical-boundaries-opencv-wcode/

将每个像素的SkinHistValue / NonSkinHistValue概率与Theta阈值进行比较的地方

我的问题在于计算组合值的坐标:

从教程:

calcHist(&nRGB_frame,1,channels,mask,skin_Histogram,2,histSize,ranges,uniform,accumulate);
calcHist(&nRGB_frame,1,channels,~mask,non_skin_Histogram,2,histSize,ranges,uniform,accumulate);

计算直方图。比我正常化他们。 之后:

for (int i=0; i<nrgb.rows; i++) {
        int gbin = cvRound((nrgb(i)[1] - 0)/range_dist[0] * hist_bins[0]);
        int rbin = cvRound((nrgb(i)[2] - low_range[1])/range_dist[1] * hist_bins[1]);
        float skin_hist_val = skin_Histogram.at<float>(gbin,rbin);
}; 

nrgb是我的形象,我试图获得skin_hist_value。但是gbin和rbin可能计算错误并且它引发了异常(我在数组之外运行?)

skin_Histogram.at<float>(gbin,rbin);

我完全不知道如何正确计算它。有什么帮助吗?

0 个答案:

没有答案