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