【发布时间】:2014-10-10 23:48:28
【问题描述】:
如何使用 haskell 对图像进行离散傅立叶变换。我相信repa-devil 和repa-fftw 这两个库可能会有所帮助,但我不知道如何整合它们。我之所以喜欢这个,是因为我可以尝试混合图像(我有一个绝妙的想法,即我可以简单地根据频率进行加权平均,而不是单独过滤图像然后对其进行平均。)
注意:一旦完成此操作,如何将其重新解释为图像。
注意:我实际上不确定如何准确地应用 dft 图像处理。我已经看过方程式并且知道如何评估它们,并且知道一维的“含义”和二维的粗略想法。我也知道如何使用它以某种方式过滤掉图像的高或低“频率”。我只是不确定使用 dft 生成的复杂频率图像到底有多复杂。
【问题讨论】:
-
到目前为止你尝试过什么?为什么它不起作用?什么时候你不能将你的 Repa
Arrays 来自 repa-devil 与 repa-fftw 的fft2d结合起来? -
如果您有灰度图像 (
Array F DIM2 Word8),请将 Word8 转换为 Complex 并直接使用fft2d- 这应该很明显。如果您有彩色图像,通常的程序是分别对每个颜色通道执行 FFT。您需要将Array F DIM3 Word8转换为Array F DIM2 Word8,为此,请查看Data.Array.Repa.Slice,即slice函数。 -
@user2407038 所以它们只是被解释为虚部为 0 的复数?喜欢
(:+ 0) . fromIntegral :: Word8 -> Complex Float?
标签: haskell image-processing fft fftw repa