Perlin Noise и FBM сгенерировали изображение слишком серым

Я работал над генерацией шума с использованием Perlin Noise и FBM, насколько я понимаю, и у меня возникла небольшая проблема.

Изображения, которые я создаю, кажутся слишком серыми, когда они предназначены для оттенков серого, но я не вижу изменений белого или черного.

Пример этого изображения (это генерируется с использованием 8 октав)

Пример Perlin Noise

Образ того, что я ожидаю получить;

введите описание изображения здесь

Я создаю шум следующим образом;

float result = 0.0f;
float amp = 1.0f;
float frequency = 2.0f;

float maxAmplitude = 0.0f;
int i = _octaves;
while (i--){
result += noise(x * frequency, y * frequency, z * frequency) * amp;
frequency *= 2.0f;
maxAmplitude += amp;
amp *= 0.5f;
}
return result / maxAmplitude;
}

где функция шума — функция улучшенного шума Кена Перлина, найденная здесь; http://mrl.nyu.edu/~perlin/noise/ и я использую таблицу перестановок по умолчанию.

Затем, когда я генерирую изображения, я делаю следующее, чтобы получить изображение в оттенках серого;

ppm_image.pixel_colour[kk] = 255.0f  * noise;

Мне было просто интересно, как я могу создать ту же карту высот с более широким разбросом цветов (больше белого и черного, чем просто узких серых).

2

Решение

Я обычно нахожу, что мне нужно применить какой-то способ выравнивание гистограммы как пост-процесс, чтобы шуметь данные. Это обычно работает для меня:

float min = data[0];
float max = data[0];
for (float& f : data){
if(min > f)
min = f;
if(max < f)
max = f;
}
for (float& f : data){
f = (f-min) / (max-min);
}
1

Другие решения


По вопросам рекламы [email protected]