1

如何使用haskell对图像进行离散傅里叶变换。我相信这两个库repa-devilrepa-fftw可能会有所帮助,但我不知道如何整合它们。我之所以喜欢这个,是因为我可以尝试混合图像(我有一个绝妙的想法,即我可以简单地根据频率进行加权平均,而不是单独过滤图像然后对其进行平均。)

注意:此外,一旦完成此操作,人们将如何将其重新解释为图像。

注意:我实际上不确定如何准确地应用 dft 图像处理。我已经看过方程式并且知道如何评估它们,并且知道一维的“含义”和二维的粗略想法。我也知道如何使用它以某种方式过滤掉图像的高或低“频率”。我只是不确定使用 dft 生成的复杂频率图像到底有多复杂。

4

1 回答 1

1

您也可以通过 1D 变换来变换 2D 图像(矩阵)

  1. 首先将您的图像转换为矩阵

    • FFT需要复域
    • 所以对于 BW 图像将虚部设置为 0,将实部设置为像素强度
    • 如果您有彩色图像,则将每个色带作为单独的图像处理
  2. 应用 2D 变换 (DFT,DCT,...)

    • 这是C++ 中通过 1D DFT 变换的 2D DCT示例
    • 在那个答案的底部是这个的细节
    • 你只需转换矩阵的所有行
    • 然后是所有列
    • +/- 一些归一化常数缩放
  3. 现在在频域上做你的事情

  4. 转换回时域

    • 与第 2 条几乎相同。
    • 只需使用逆变换和逆归一化缩放常数
  5. 将矩阵转换回图像

[笔记]

  • FFT 具有复数输出
  • 所以你需要从中提取颜色,例如intensity = sqrt (re*re+im*im);
  • 我使用 DCT 进行光谱分析,它更直观
于 2014-10-12T07:52:45.867 回答