如果图像如何着色傅里叶变换

时间:2012-08-16 15:39:58

标签: c++ image fft

我已经编写了一个计算FFT的应用程序,我想知道一种可视化颜色光谱的好方法。

不幸的是,我的naiive尝试没有取得好成绩。我想实现这样的目标:

image

我目前正在使用它进行着色

float r = std::log( std::abs(source[u][v]) + 1 ) * 0.2f;
float g = std::log( std::max(std::abs(source[u][v]) - 10.0f, 0.0f) + 1 ) * 0.2f;
float b = std::log( std::max(std::abs(source[u][v]) - 100.0f, 0.0f) + 1 ) * 0.2f;

1 个答案:

答案 0 :(得分:0)

我建议采用以下方法。首先,选择一个最大值(表示“红色”的值)并缩放[0,1]间隔中的所有值。接下来,将此值用于色调并使用HSL到RGB转换。 Python代码看起来像这样:

import colorsys
from PIL import Image, ImageDraw

w = 400
h = 20
im = Image.new("RGB", (w, h))
draw = ImageDraw.Draw(im)

for x in range(0, 100):
    value = float(x)/100

    r, g, b = colorsys.hsv_to_rgb(1-value*3/4-0.33, 1, 1)
    color = int(r*255), int(g*255), int(b*255)
    draw.rectangle((x * 4, 0, (x + 1) * 4, h), color, color)

im.save('example.png' , 'png')

结果:

Mapping a value in [0,1] to a color