我有一张图片,想要使用FFT将其转换为频域。对于Java来说,似乎缺乏此类库,但我找到了两个:JTransforms和另一个不太知名的库。与后者相比,2D只能具有2的幂次方长度,但它具有易于使用的方法,例如
我认为相关的类应该是
抱歉解释冗长而差劲,如果需要任何其他信息,我很乐意提供。
JTransforms库和文档可以在此处找到:https://sites.google.com/site/piotrwendykier/software/jtransforms
FastFourierTransform.fastFT(real, imaginary, true);
,其中real是由每个像素值填充的double类型的2D数组,而imaginary是相同大小的填充零的2D数组。布尔值取决于正向或反向变换。这对我很有意义,也有效果,除了必须为2的幂次方的要求之外(最初我在图像周围添加黑色空间以适应最接近的2的幂次方),我遇到的问题是如何使用JTransforms的等效方法,并且希望得到任何指导。我会陈述我目前正在做什么。我认为相关的类应该是
DoubleFFT_2D
,它的构造函数需要行数和列数,我认为这应该是我的图像的宽度和高度。因为我的图像没有虚部,所以我认为可以使用doubleFFT.realForwardFull(real);
,它将虚部视为零并传递实际的2D数组。不幸的是,这根本不起作用。JavaDoc说明了输入数组的大小必须为rows*2*columns,只有前rows*columns个元素填充了实际数据
,但我不知道这与我的图像有什么关系,以及我需要做什么来满足这个要求。抱歉解释冗长而差劲,如果需要任何其他信息,我很乐意提供。
JTransforms库和文档可以在此处找到:https://sites.google.com/site/piotrwendykier/software/jtransforms