2
我有一个可能很简单的问题,但我仍然不确定!直方图平滑
其实我只想平滑一个直方图,我不确定以下哪个方法是正确的。我会做这样的:
vector<double> mask(3);
mask[0] = 0.25; mask[1] = 0.5; mask[2] = 0.25;
vector<double> tmpVect(histogram->size());
for (unsigned int i = 0; i < histogram->size(); i++)
tmpVect[i] = (*histogram)[i];
for (int bin = 1; bin < histogram->size()-1; bin++) {
double smoothedValue = 0;
for (int i = 0; i < mask.size(); i++) {
smoothedValue += tmpVect[bin-1+i]*mask[i];
}
(*histogram)[bin] = smoothedValue;
}
或者你平时做这样的?:
vector<double> mask(3);
mask[0] = 0.25; mask[1] = 0.5; mask[2] = 0.25;
for (int bin = 1; bin < histogram->size()-1; bin++) {
double smoothedValue = 0;
for (int i = 0; i < mask.size(); i++) {
smoothedValue += (*histogram)[bin-1+i]*mask[i];
}
(*histogram)[bin] = smoothedValue;
}
我Questin是:是否有合理的直方图在额外的载体先复制,这样,当我平滑在bin i
我可以使用原始的i-1
值,或者我会简单地做smoothedValue += (*histogram)[bin-1+i]*mask[i];
,以便我使用已经平滑的i-1
值代替原来的值。
Regards &感谢您的回复。
欢迎来到SO!下一次,请使用四个空格缩进代码来格式化您的代码,或者选择它并单击101010按钮。我这次为你做了。您可以使用反引号(\'\')来格式化文本段落中的代码。 – Thomas 2010-07-02 11:04:59