我正在尝试在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);
我完全不知道如何正确计算它。有什么帮助吗?