如何使用haskell对图像进行傅里叶变换
如何使用haskell对图像进行离散傅里叶变换。我相信这两个库可能会有所帮助,但我不知道如何将它们整合起来。我之所以想这样做,是因为我可以用混合图像进行实验(我有一个奇妙的想法,那就是不必单独过滤图像,然后对它们进行平均,我可以简单地根据频率进行加权平均。) 注:同样,一旦你做到了这一点,你会如何重新解释它作为一个形象如何使用haskell对图像进行傅里叶变换,haskell,image-processing,fft,fftw,repa,Haskell,Image Processing,Fft,Fftw,Repa,如何使用haskell对图像进行离散傅里叶变换。我相信这两个库可能会有所帮助,但我不知道如何将它们整合起来。我之所以想这样做,是因为我可以用混合图像进行实验(我有一个奇妙的想法,那就是不必单独过滤图像,然后对它们进行平均,我可以简单地根据频率进行加权平均。) 注:同样,一旦你做到了这一点,你会如何重新解释它作为一个形象 注:我不确定如何将dft应用于图像处理。我看过这些方程式,知道如何计算它们,知道1D的“意义”和2D的大致概念。我也知道如何用它过滤掉图像的高或低“频率”。我只是不确定使用dft
注:我不确定如何将dft应用于图像处理。我看过这些方程式,知道如何计算它们,知道1D的“意义”和2D的大致概念。我也知道如何用它过滤掉图像的高或低“频率”。我只是不确定使用dft生成的频率图像到底有多复杂。您也可以通过1D变换变换2D图像(矩阵)
- FFT需要复域
- 所以对于BW图像,将虚部设置为0,将实部设置为像素强度
- 如果有彩色图像,则将每个色带作为单独的图像处理
- 下面是一个C语言的例子++
- 答案的底部是这方面的细节
- 您只需转换矩阵的所有行
- 然后是所有列
- +/-一些归一化常数标度
- 几乎和子弹2一样
- 只需使用逆变换和逆归一化缩放常数
- FFT具有复数输出
- 因此,您需要从中提取颜色,例如,
intensity=sqrt(re*re+im*im)代码>
- 我使用DCT进行频谱分析,它更直观
数组
s从Repa devil与Repa fftw的fft2d
?如果你有一个灰度图像(Array F DIM2 Word8
),将单词8转换为复数,并直接使用fft2d
),这一点应该是显而易见的。如果您有彩色图像,通常的程序是对每个彩色通道分别执行FFT。您需要将数组F DIM3 Word8
转换为数组F DIM2 Word8
,为此,请查看Data.Array.Repa.Slice
,即Slice
函数。@user2407038所以它们被解释为虚数部分为0的复数?比如(:+0)。fromIntegral::Word8->复数浮点
?