Я нашел эту функцию где-то, совсем недавно. Я точно не знаю, что он делает. Я использую его для управления выходом симплексного шума (со значениями шкалы серого от 0 до 255), но хотелось бы лучше понять его.
int ExponentFilter(int value, int cover, double sharpness)
{
int c = value - (255 - cover);
if(c < 0)
c = 0;
return 255 - ((std::pow(sharpness,c)) * 255);
}
Я использую его как:
ExponentFilter(n,140,0.98f)
Где n - мое значение от 0 до 255.
cover
- это то, как "экранированный" сигнал полностью отключается. cover
140 означает, что 140 наивысших (самых ярких) значений (116-255) могут привести к выходу> 0.
sharpness
описывает, как быстро свет исчезает. 0,98
означает, что свет затухает примерно в два раза быстрее, но эффект замирания не является линейным, он уменьшен для более темных областей.
Я ожидаю, что этот фильтр будет темнее и резче переэкспонированных изображений.
Exponentfilter - это подходящее имя, так как функция резкости использует экспоненты (pow - функция экспоненты).