- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图了解函数fftfreq以及通过为图像中的一行添加实部和虚部生成的结果图。这是我所做的:
import numpy as np
import cv2
import matplotlib.pyplot as plt
image = cv2.imread("images/construction_150_200_background.png", 0)
image_fft = np.fft.fft(image)
real = image_fft.real
imag = image_fft.imag
real_row_bw = image_fft[np.ceil(image.shape[0]/2).astype(np.int),0:image.shape[1]]
imag_row_bw = image_fft[np.ceil(image.shape[0]/2).astype(np.int),0:image.shape[1]]
sum = real_row_bw + imag_row_bw
plt.plot(np.fft.fftfreq(image.shape[1]), sum)
plt.show()
sine
和
cosine
组件求和,并使用
pyplot
库进行绘图。
fftfreq
函数吗?另外,下图中的峰在图中代表什么:
最佳答案
我认为您确实不需要fftfreq
在图像中查找频域信息,但是无论如何我都会尽力进行解释。fftfreq
用于计算与您计算的FFT中的每个bin对应的频率。您正在使用fftfreq
在图形上定义x坐标。fftfreq
有两个参数:一个是必需参数,一个是可选参数。必选的第一个参数是整数,即您用于计算FFT的窗口长度。您在FFT中将拥有与窗口中相同数量的频点数量。可选的第二个参数是每个窗口的时间段。如果您未指定,则默认值为1。我不知道采样率是否对图像有意义,因此我可以理解您未指定它。也许您想以像素为单位指定周期?由你决定。
FFT的频率仓始于负奈奎斯特频率,该频率是采样率的一半(默认= -0.5)或更高。并以奈奎斯特正频率(+0.5)或稍低一点结束。fftfreq
函数以有趣的顺序返回频率。零频率始终是第零个元素。频率计数到最大正频率,然后翻转到最大负频率并向上计数到零。这种奇怪排序的原因是,如果对实值数据执行FFT(实际上,图像像素没有复数值),则负频率数据与相应的正频率数据完全相同,并且是多余的。这种排序方式可以很容易地消除负频率:只需取阵列的前半部分即可。由于您未这样做,因此您也在绘制负频率。如果您选择忽略阵列的后半部分,则负频率将被消除。
至于您在图像零频率处看到的强烈尖峰,这可能是因为图像数据是RGB值,范围从0到255。数据中存在很大的“DC偏移”。看来您正在使用Matplotlib。如果在交互式窗口中绘图,则可以使用缩放矩形查看该水平线。如果您将DC偏移推到刻度之外,将Y轴刻度设置为±500,我敢打赌,您将开始看到水平线毕竟不是完全水平。
一旦知道哪个容器包含您的DC偏移量,如果您不想看到它,就可以将那个容器中的fft的值分配为零。然后,图形将自动缩放。
顺便说一下,这两行代码执行相同的计算,因此您实际上并没有像文本中那样使用正弦和余弦分量:
real_row_bw = image_fft[np.ceil(image.shape[0]/2).astype(np.int),0:image.shape[1]]
imag_row_bw = image_fft[np.ceil(image.shape[0]/2).astype(np.int),0:image.shape[1]]
numpy.linalg.norm
。
关于python - 了解fftfreq函数的输出以及图像中单行的fft图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57942516/
FFT 库(例如 FFTW 或 numpy.fft)通常提供两个函数 fft() 和 ifft()(及其用于实值输入的特殊版本)。这些功能似乎被定义为 ifft(fft(X)) == X 和 fft(
如果我有一个特定大小 M(2 的幂)的 FFT 实现,我如何计算一组大小 P=k*M 的 FFT,其中 k 也是 2 的幂? #define M 256 #define P 1024 comple
下午好! 我正在尝试基于我已有的简单递归 FFT 实现来开发 NTT 算法。 考虑以下代码(coefficients'的长度,让它为m,是2的精确幂): /// /// Calculates the
我正在分析时间序列数据,并希望提取 5 个主要频率分量并将其用作训练机器学习模型的特征。我的数据集是 921 x 10080 。每行是一个时间序列,总共有 921 个。 在探索可能的方法时,我遇到了各
我找不到任何官方文档来证明 scipy.fft 实际上是 numpy.fft.fftpack.fft 的链接。这是显示链接的 iPython session : In [1]: import scip
文档说 np.fft.fft 这样做: Compute the one-dimensional discrete Fourier Transform. 和 np.fft.rfft 这样做: Compu
近一个月来,我一直在与一个非常奇怪的错误作斗争。问你们是我最后的希望。我用 C 编写了一个程序,它集成了 2d Cahn–Hilliard equation在傅里叶(或倒数)空间中使用隐式欧拉 (IE
我一直在制作一个例程,使用 NumPy/Scipy 测量两个光谱之间的相位差。 我已经有了Matlab写的例程,所以我基本上是用NumPy重新实现了函数和相应的单元测试。但是,我发现单元测试失败了,因
我正在研究使用 Renderscript 对大型复杂输入数组执行 FFT。 FFT 是相当标准的,因为它涉及三个循环,但内部循环执行 FFT 中的蝶形运算。因为每个蝴蝶使用数组的不同部分,所以没有明显
我需要通过修改 FFT 结果来均衡音乐样本。 我知道如何获得每个输出虚数的频率,问题是修改这个值以获得“均衡器效果”。 我需要知道如何缩放这个值。 条目大小为 4096 个样本,采样率为 44100
我将在 kiss-fft 之前制定几个计划同时(平行),我可以这样做吗,或者换句话说,kiss-fft 线程安全吗? 谢谢 最佳答案 自述文件: No static data is used. Th
要在频域中插入信号,可以在时域中填充零并执行 FFT。 假设给定向量 X 中的元素数为 N 并且 Y 与 X 相同但在一侧用 N 零填充。然后下面给出相同的结果。 $$\hat{x}(k)=\sum_
我通过相关了解了 DFT 的工作原理,并将其用作理解 FFT 结果的基础。如果我有一个以 44.1kHz 采样的离散信号,那么这意味着如果我要获取 1 秒的数据,我将有 44,100 个样本。为了对其
有人知道 Mayer FFT 的实现吗(我不必花很多时间研究代码)? 我正在尝试执行卷积,ifft 似乎产生了我称之为“镜像”的输出。换句话说,我的内核+信号长度被限制为 N/2 并且占据 n=0..
有人知道 Mayer FFT 的实现吗(我不必花很多时间研究代码)? 我正在尝试执行卷积,ifft 似乎产生了我称之为“镜像”的输出。换句话说,我的内核+信号长度被限制为 N/2 并且占据 n=0..
我有以下代码...请注意#生成正弦曲线下的两行。一个使用比另一个更高的 2pi 精度值,但它们仍然应该给出几乎相同的结果。 import numpy as np import matplotlib.p
我正在努力确保 FFTW 做我认为它应该做的事情,但我遇到了问题。我正在使用 OpenCV 的 cv::Mat。我制作了一个测试程序,给定一个 Mat f,计算 ifft(fft(f)) 并将结果与
我是从事电信项目的计算机程序员。 在我们的项目中,我必须将一系列复数更改为它们的傅立叶变换。因此我需要一个高效的 FFT 代码来满足 C89 标准。 我正在使用以下代码,它运行良好: shor
我目前正在尝试了解 numpy 的 fft 函数。为此,我测试了以下假设: 我有两个函数,f(x) = x^2 和 g(x) = f'(x) = 2*x。根据傅立叶变换定律和 wolfram alph
我一直在使用 FFT,目前正在尝试使用 FFT 从文件中获取声音波形(最终对其进行修改),然后将修改后的波形输出回文件。我得到了声波的 FFT,然后对其使用了反 FFT 函数,但输出文件听起来一点也不
我是一名优秀的程序员,十分优秀!