据我所知,我一直在使用Perlin Noise和FBM制作噪音,而且我似乎遇到了一些问题。
我生成的图像似乎太灰了,因为它们意味着灰度,但我看不到白色或黑色的变化。
此图像的一个示例是(这是使用8个八度音阶生成的)
我期待产生的图像;
我产生的噪音如下;
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;
}
其中噪音功能是Ken Perlin的改进噪音功能; http://mrl.nyu.edu/~perlin/noise/我正在使用默认排列表。
然后,当我生成图像时,我会执行以下操作来获取灰度图像;
ppm_image.pixel_colour[kk] = 255.0f * noise;
我只是想知道如何生成相同的高度图,颜色变化更大(更多的白色和黑色而不仅仅是窄灰色)。
答案 0 :(得分:1)
我通常发现我需要将某种方式histogram equalization作为后期处理应用于噪声数据。这通常对我有用:
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);
}