c - FFT 和卷积

标签 c image-processing cuda fft

我正在为使用图像过滤的学校 2dFFT 写作。 我对过滤矩阵有疑问。 我制作了我的 fft,因此它接受 2^n 个输入,并且所有滤波器矩阵都是奇数。

所以我需要解决方案以某种方式将过滤器矩阵转换为我的函数可接受的输入。

我有下一个想法,但我不确定它会如何运作。 如果我有过滤矩阵:

1 2 3
4 5 6
7 8 9

将其转换为:

0 0 0 0
1 2 3 0
4 5 6 0
7 8 9 0

当我将矩阵的“中心”与我的像素匹配时,匹配“子矩阵”的中心,然后提取我需要的值。 这可能吗?

还有人能告诉我我能得到的过滤器的最大尺寸是多少吗?它比 32x32 大吗?

最佳答案

过滤器掩码用于表达具有紧凑支持的过滤器。紧凑支持意味着信号仅在有限范围内具有非零值。通过使用零值扩展过滤器掩码,您实际上是在做一件自然而然的事情。零是原始过滤器的一部分。

然而,真正的问题是另一回事。我假设您根据 convolution theorem 使用 FFT .为此,您需要逐元素乘法。当您的过滤器和信号具有相同数量的元素时,您只能进行逐元素乘法。因此,您需要将滤波器扩展到信号大小(使用零)。

过滤掩码大小没有限制。对于卷积,唯一的限制是紧凑支持(如上所述)。

关于c - FFT 和卷积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14015001/

相关文章:

windows - 在 Windows 中安装 CUDA 8 和 CUDA 9

cuda - 如何选择非繁忙的CUDA设备?

c - C 中带有 char* 的内存访问错误问题

c - 空终止错误在哪里?

java - 如何获取一组像素并将它们组合成一个

matlab - 在循环期间将数字保存在 matlab 中

c - 如何打印像网格一样的数组?

c - 这个同步算法是如何工作的?

image - 使用平均滤波器部分模糊图像

compiler-errors - 推力集差异无法通过不允许从__host__ __device__函数调用__host__函数进行编译