问题标签 [convolution]

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.

0 投票
1 回答
1089 浏览

python - n-fold FFT卷积和循环重叠

问题描述

我使用了卷积定理来有效地计算卷积。假设有两个实信号s1,每个信号s2的长度N。然后我可以从

但是,如果我有k单曲,则fft_size必须修改为阅读

为了避免圆形重叠。

不幸的是,我不知道k先验。一种选择是选择最大值k_max,但如果不是绝对必要,我宁愿不必使用大量内存,并且我宁愿在每次 k 变化时都不要再次评估 FT。

问题

是否可以执行以下操作之一

  • 根据需要对信号进行 FFTk=1和“傅立叶空间中的零填充”?
  • 防止 FFT 中的循环环绕?
0 投票
2 回答
446 浏览

c# - 图像渲染技术 - 为现有照片添加逼真的文本

好奇是否有通用工具可用于创建包含文本(或可能其他元素)的图像,这些文本会被扭曲以显示为图像的原始部分。这些“真实”的广告牌照片可以让您将自己的图像或文字放在广告牌上就是一个例子。另一个例子是 zazzle 如何让您预览您的 T 恤设计,方法是扭曲文本或图形,使其看起来好像略微变形到织物的曲线。

我是一个 .Net 人,但有兴趣查看此类项目的任何通用解决方案,或者甚至只是指向有关该主题的其他讨论的一些指针会有所帮助。

澄清-技术描述很好,但最终我很好奇是否有工具包可以帮助自动化其中的一些,并且可能在动态环境中用于按需图像生成。

0 投票
2 回答
869 浏览

python - 基于多个标准处理 numpy 数组的更有效方法是什么?

我已经编写了一些代码,用于在几年范围内(例如 15 年)ndimage.filters.convolve对数组(例如 array1)进行卷积,然后在生成的数组(例如 array2)高于随机生成的数字时,另一个数组(例如,array3) 被赋值为 1。一旦 array3 被赋值为 1,它每年都会向上计数,当它最终达到某个值(例如 5)时,array1 会在此位置更新。

对不起,如果这有点令人困惑。实际上,我已经通过 using 使脚本正常工作numpy.where(boolean expression, value, value),但是在我需要多个表达式(例如where array2 == 1 and array3 == 0)的地方,我使用了 for 循环来遍历数组中的每个值。这在此处的示例中效果很好,但是当我将数组替换为更大的数组时(完整的脚本会导入 GIS 网格并将它们转换为数组),这个 for 循环每年都需要几分钟的时间来处理。由于我们必须将模型运行 60 年 1000 次,因此我需要找到一种更有效的方法来处理这些数组。

我尝试在 numpy.where 中使用多个表达式,但无法弄清楚如何让它工作。我还尝试了 zip(array) 将数组压缩在一起,但我无法更新它们,我认为这是因为这创建了数组元素的元组。

我附上了脚本的副本,如前所述,它完全按照我的需要工作。但是,它需要更有效地执行此操作。如果有人有任何建议,那就太好了。这是我关于 python 的第一篇文章,所以我仍然认为自己是一个新手。

0 投票
1 回答
7722 浏览

python - 正弦信号与矩形脉冲的卷积

我想在 scipy 中执行正弦信号和矩形脉冲的卷积运算。我将正弦信号与余弦信号进行卷积并将其绘制在图表上,但我想知道如何使用矩形脉冲创建阵列,类似于这个 matlab 表达式

所以我可以对它们进行卷积。我用它来创建我的正弦和余弦信号

所以我尝试创建一个 nu.zeros(50),并手动将位置 15-25 的零从 0.0 更改。到 0.9 所以它看起来像矩形,但正弦阵列上的卷积和这个“矩形”阵列很奇怪,当没有交叉点但我得到正弦信号时,它应该为零,这是代码:

我提前道歉,我觉得这是最简单的事情,但我找不到任何关于如何创建矩形脉冲的参考。

0 投票
2 回答
1672 浏览

android - 过滤图像android?

我正在使用这个算法来过滤安卓中的图像。

http://xjaphx.wordpress.com/2011/06/22/image-processing-convolution-matrix/

但是图像并不像预期的那样,我可以找到其他方法来做到这一点。您会看到应用程序已经这样做了,让它变得更快,这个算法太慢了。

问候

0 投票
2 回答
836 浏览

python - 泛型编程:Log FFT OR 高精度卷积(python)

我有一个稍微不寻常的问题,但我试图避免重新编码 FFT。

一般来说,我想知道这一点:如果我有一个为 type 实现的算法float,但它可以在任何定义了一组操作的地方工作(例如,复数,也定义了+*...),什么是在支持这些操作的另一种类型上使用该算法的最佳方法是什么?在实践中,这很棘手,因为通常数字算法是为了速度而不是通用性而编写的。

具体来说:
我正在处理具有非常高动态范围的值,因此我想将它们存储在日志空间中(主要是为了避免下溢)。

我想要的是一些系列的 FFT 的日志:

即使这样也会导致严重的下溢。我想要的是存储日志值并使用+代替*logaddexp代替+等。

我对如何做到这一点的想法是实现一个简单的 LogFloat 类,它定义了这些原始操作(但在日志空间中操作)。然后我可以通过让它使用我记录的值来简单地运行 FFT 代码。

然后,想法是构造一个LogFloats 列表,然后在 FFT 中使用它:

如果我重新实现 FFT 绝对可以做到这一点(并且只需使用我以前使用的LogFloat任何地方float,但我想我会征求意见。这是一个相当反复出现的问题:我有一个我想在日志空间中操作的股票算法(而且它只使用了一些操作,如“+”、“-”、“ ”、“/”等)。

这让我想起了用模板编写泛型函数,这样返回参数、参数等都是由同一类型构造的。例如,如果您可以对浮点数进行 FFT,那么您应该能够轻松地对复杂值执行一次(只需使用为复杂值提供必要操作的类)。

就目前而言,看起来所有 FFT 实现都是为前沿速度而编写的,因此不会很普遍。所以到目前为止,看起来我必须为泛型类型重新实现 FFT ......

我这样做的原因是因为我想要非常高精度的卷积(并且N^2运行时间非常慢)。任何建议将不胜感激。

*注意,我可能需要为 实现三角函数LogFloat,这很好。

编辑: 这确实有效,因为LogFloat它是一个交换环(并且它不需要实现三角函数LogFloat)。最简单的方法是重新实现 FFT,但@JFSebastian 还指出了一种使用Python通用卷积的方法,它可以避免对 FFT 进行编码(同样,使用 DSP 教科书或Wikipedia 伪代码非常容易)。

0 投票
1 回答
1980 浏览

java - 图像卷积代码无法正确显示图像?

所以这是交易:我尝试简化(对用户)如何执行卷积。我尝试使用它来运行 Sobel 过滤器,当我尝试显示图像(通过 jfram 和图像图标)时,图像图标不会弹出,它只是一个灰色的大方块。

jframe/imageicon 工作完美,直到我试图让它显示这个过滤器结果的输出。

代码已更新

如果我执行以下操作,我的 gui 将显示一个没有图像的平面灰色框架。如果我执行一个命令而不执行另一个命令,图像将完美显示。BufferedImage testImage = ImageIO.read(filepath);

如果我只是转换为灰度,我会得到正确的结果,如果我只是应用过滤器,我会得到正确的结果。如果我按原样完成此操作,我会弹出一个空白 GUI 屏幕。如果我交换它们的执行顺序(先过滤然后转换为灰度),我会得到结果。

我认为灰度转换过程的某些东西搞砸了卷积

toGrayscale 应该将图像转换为灰度

convolutionFilter 应该采用 2D 图像过滤器,将其展开为 1D 数组,然后对处理后的图像进行卷积并返回结果。

0 投票
4 回答
15603 浏览

python - Richardson-Lucy 算法是如何工作的?代码示例?

我试图弄清楚反卷积是如何工作的。我理解它背后的想法,但我想了解一些实现它的实际算法 - 将模糊图像及其点采样函数(模糊内核)作为输入并产生潜在图像作为输出的算法。

到目前为止,我发现Richardson-Lucy算法的数学似乎并不那么困难,但我无法弄清楚实际算法是如何工作的。在维基百科它说:

这导致了一个方程,可以根据...迭代求解

但是它没有显示实际的循环。谁能指出我解释实际算法的资源。在谷歌上,我只能找到使用 Richardson-Lucy 作为其步骤之一的方法,而不是实际的 Richardson-Lucy 算法。

任何语言或伪代码的算法都会很好,但是如果在 Python 中可用,那就太棒了。

提前谢谢。

编辑

基本上我想弄清楚的是给定模糊图像(nxm):

以及用于获得模糊图像的内核(ixj):

为了找出原始图像,Richardson-Lucy 算法的确切步骤是什么。

0 投票
3 回答
1385 浏览

python - Python/NumPy:实现运行总和(但不完全)

给定两个长度相等的数组,一个保存数据,一个保存结果但最初设置为零,例如:

我想计算 a 中三个相邻元素的所有可能子集的总和。如果和为0或1,则b中对应的三个元素保持不变;只有当总和超过 1 时,b 中对应的三个元素才设为 1,这样计算后 b 变为

一个简单的循环将完成此操作:

在此之后, b 具有所需的形式。

我必须为大量数据执行此操作,因此速度是一个问题。NumPy 中是否有更快的方法来执行上述操作?

(我知道这类似于卷积,但不完全相同)。

0 投票
4 回答
5495 浏览

c++ - 具有 FFT 卷积的低通 FIR 滤波器 - 重叠相加,为什么以及如何

首先,很抱歉没有在这里发布代码。由于某种原因,当我尝试在此页面上输入我拥有的代码时,所有代码都搞砸了,无论如何发布可能太多了,无法接受。这是我的代码: http: //pastebin.com/bmMRehbd

现在从我被告知的情况来看,我无法从这段代码中获得好的结果的原因是因为我没有使用重叠添加。我试图阅读互联网上的几个来源,了解为什么我需要使用重叠添加,但我无法理解。似乎实际过滤器有效,导致任何高于给定截止值的东西,确实被截止。

我应该提到这是为 vst2-sdk 工作的代码。

有人可以告诉我为什么需要添加它以及如何在给定的代码中实现重叠添加代码吗?

我还应该提到,在算法和数学方面我很愚蠢。我是那些需要在视觉上掌握我正在做的事情的人之一。那或得到代码解释的东西:),然后我的意思是实际的重叠。

Overlad 添加理论:http ://en.wikipedia.org/wiki/Overlap%E2%80%93add_method

感谢您提供的所有帮助!