Я тут додумался до вычисления текущего СА (ср. арифметич) из предыдущего: An = [(n-1)*An-1 + an] / n
Кстати, здесь я так же могу хранить одно значение n - усреднений для всех пикселей и массив предыдущих СА. И мне кажется эта шутка чуть чуть быстрее чем весовая формула...
Это та же самая весовая формула. А если нужна скорость, то можно распараллелить (здесь без проблем) или (здесь еще лучше) задействовать SSE
Если Вы планируете осредненные значения больше 1.0 то надо подумать как их отображать
Где я ошибся в ваших формулах?:
C++ (Qt)
float accum = 1.0;
int count = 1;
float An = 1.0;
float pixelred;
for (int k=1; k<100; k++) {
count++;
float newValue = 1;
accum += newValue;
An = ((static_cast<float>(count)-1)*An-1+newValue)/static_cast<float>(count);
float temp = (pixelred * static_cast<float>(count) + newValue) / (static_cast<float>(count+1));
pixelred = temp + 0.5;
}
float out = accum/static_cast<float>(count);
qDebug() << "V1KT0P:" << out << "once_again_abc:" << An << "Igors:" << pixelred;
Выводит:
V1KT0P: 1 once_again_abc: 0.01 Igors: 26.4653
Вроде же правильно сделал...