问题标签 [dft]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 由 gpu::dft 在 C++ 中使用 OpenCV 执行的缩放
我想使用 GPU 加速算法来执行快速且节省内存的 dft。但是,当我执行 时gpu::dft
,目标矩阵会按照文档中的说明进行缩放。如何通过将宽度缩放到 来避免这个问题dft_size.width / 2 + 1
?另外,为什么会这样缩放?我的 DFT 代码是这样的:
其中in
是一个CV_32FC1
矩阵,即 512x512。
最好的解决方案是具有 sized_in.size
和 type的目标矩阵CV_32FC2
。
java - 来自正弦样本的离散傅立叶频谱分析的意外结果
http://jvalentino2.tripod.com/dft/index.html
我的代码实际上只是上面的一个副本:
当我在这个样本上运行它时:http: //vigtig.it/sin440.wav
我得到这个结果:
我预计 440 赫兹的最高响应,但事实并非如此。有人可以看到错误或启发我如何误解结果吗?
编辑
在查看了字节/整数转换后,我将脚本改为使用 ByteBuffer。它现在似乎按预期工作。这是工作副本:
c++ - C++中DFT的实现
我想用C++语言实现DFT(离散傅里叶变换)来处理图像。
当我学习理论时,我知道,我可以将 2D DFT 分成两个 1D DFT部分。首先,我对每一行执行 1D DFT,然后对每一列执行此操作。当然,我应该对复数进行运算。
这里会出现一些问题,因为我不确定在哪里使用实数,以及在哪里使用复数的虚部。我在某处发现,我应该将输入图像像素的值视为实部,虚部设置为 0。
我做了一个实现,但我认为结果图像不正确。
如果有人能帮我解决这个问题,我将不胜感激。
对于读取和保存图像,我使用CImg library。
c++ - 具有频率范围的 DFT
我们需要更改/重新实现 GSL 中的标准 DFT 实现,即
在这个实现中,GSL 对输入向量迭代两次以获得样本/输入大小。但是,我们需要为不同的频率仓构建。例如,我们有 4096 个样本,但我们需要计算 128 个不同频率的 DFT。你能帮我定义或实现所需的 DFT 行为吗?提前致谢。
编辑:我们不搜索第一个m
频率。
实际上,以下方法对于查找具有给定频点编号的 DFT 结果是否正确?N = 样本大小 B = 频率区间大小
编辑:我可能没有详细解释 DFT 的问题,但是,我很高兴在下面提供答案:
image - 如何找出jpeg编码图像的块大小
我想用 dft 找出 jpeg 编码图像的块大小。我已经实现了 dft 算法。dft 在不同的位置有尖峰。在算法中,据说块大小将是那些尖峰位置的倍数。谁能告诉我如何找到图像的块大小或这些尖峰的位置。
python - 实施 3D DFT 时无法匹配结果
我正在尝试实现 3D DFT,但遇到了一些麻烦。我认为我应该做的是只做 3 个连续的 1D DFT,每个方向一个。假设 1D DFT 是正确的,你能看出这段代码有什么问题吗:
我知道在 python 中有内置版本,但我不能使用那些。我只是在 python 中测试我的算法,所以我可以比较我的算法和内置算法的结果。据我所知,它适用于 1D 和 2D 变换,但一旦我将其扩展到 3D,结果就不再匹配。有谁知道出了什么问题?
c - 如何使用 OpenCV 和 FFTW3 库显示图像的离散傅里叶谱 (DFT)?
我正在尝试生成简单图像的傅立叶光谱。但我得到的只是噪音。我尝试关注许多链接,这些链接建议缩小两者之间的值,[0, 255]
但即使在缩放之后我也只能得到黑色图像,我这样做是这样的:
缩放代码:
请注意,我没有采用dft
数组的第一个值,因为它太大(因为它是 DC 值)。也就是说,我是从k=1
上forloop
图开始的。
后来我这样做是为了缩放
没有缩放的代码:
输出:
但是如果我像这样引入缩放: 缩放后的代码
缩放后的输出
请告诉我我做错了什么?我应该如何进行缩放以获得正确的图像光谱。
image - 如何将高斯滤波器应用于 OpenCV 中的 DFT 输出
我想在确定正确的填充大小后创建一个高斯高通滤波器(例如,如果图像宽度和高度是 10X10,那么应该是 20X20)。
我有我试图在 OpenCV 中移植的 Matlab 代码,但我很难正确移植它。我的 Matlab 代码如下所示:
我知道如何在 OpenCV 中使用 DFT,并且能够生成它的图像,但我不确定如何创建高斯滤波器。请指导我如何创建如上所示的高通高斯滤波器?
c++ - OpenCV中空间域的DFT不起作用
我已经创建了图像的 dft,在使用过滤器进行一些调整后,我想将其转换回真实图像,但是每次我这样做时它都会给我错误的结果..似乎它没有将其转换回来。
ForierTransform
并且createGaussianHighPassFilter
是我自己的函数,我使用的其余代码如下所示,用于反转回真实图像。
即使我不应用过滤器,我也无法反转 dft 结果......这是我的 dft 代码,我找不到任何样本将 dft 反转回正常图像..
好心的帮助
[编辑:在 mevatron 的帮助下找到解决方案后](下面是正确的代码)
它现在可以显示手指的脊谷,并且可以在阈值方面进行更多优化。
c# - 为什么来自 AForge.Math 的 DFT 不起作用?
我尝试获取 fft,然后使用以下代码获取波的 dft:
SourceToDouble(s)
:
ToPowerOfTwo(ref source)
:
DoubleToComplex(source)
:
DoPlaySound(sou)
:
问题是这样的:当我将 wav 文件提供给通用代码时,经过很长时间该方法试图播放最终的 wav(tmp.wav),但它不像通用文件。
更新1:
我也试过FourierTransform.DFT(sou, FourierTransform.Direction.Backward);
,但也没有用!