おそらく非常に簡単な質問がありますが、まだわかりません!
実際には、ヒストグラムを滑らかにしたいだけで、次の方法のどれが正しいかわかりません。私はこのようにしますか:
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は次のとおりです。最初にヒストグラムを追加のベクトルにコピーして、ビンで平滑化するときにi
元の値を使用できるようにするi-1
か、元の値の代わりにsmoothedValue += (*histogram)[bin-1+i]*mask[i];
すでに平滑化された値を使用するか.i-1
よろしく&お返事ありがとうございます。