问题标签 [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 投票
4 回答
9926 浏览

php - 卷积矩阵是如何工作的?

我知道这与编程不太相关,但我需要知道卷积矩阵如何用于 PHP GD 函数。我在谷歌上搜索了很多,但找不到任何能很好解释的东西。

0 投票
8 回答
74102 浏览

python - 使用 python 和 numpy 进行二维卷积

我正在尝试使用 numpy 在 python 中执行二维卷积

我有一个二维数组,如下所示,行的内核为 H_r,列的为 H_c

它没有产生我期望的输出,这段代码看起来还可以吗,我认为问题在于从 float32 转换为 8bit。什么是最好的方法来做到这一点

谢谢

0 投票
2 回答
1613 浏览

openmp - OpenMP + SSE 没有加速

我的教授发现了这个使用 SSE 和 OpenMP 进行 3D 线性可分内核卷积的有趣实验,并将任务交给我对我们系统的统计数据进行基准测试。作者声称串行方法的速度提高了 18 倍!可能并非总是如此,但我们预计在双核 Intel 上运行它至少会加速 2-4 倍。

http://software.intel.com/en-us/articles/16bit-3d-convolution-sse4openmp-implementation-on-penryn-cpu/#comment-41994

唉,我们完全找不到加速。无论有没有 OpenMP,串行代码的性能总是更好。

我正在使用 Linux,并观察到某种趋势......当系统上没有其他进程正在运行时,一段时间后 loadavg 开始增加,并且 %CPU 利用率下降。

我意外遇到的另一个可能的误报......我启动了程序,然后立即暂停了它。然后我用 bg 在后台运行它,发现加速比超过 2。这种情况一直都在发生!

任何建议都会很棒。

谢谢,萨扬

0 投票
3 回答
1274 浏览

signals - 卷积两个信号

计算以下信号的卷积(您的答案将采用方程式的形式):
h[n] = δ[n-1] + δ[n+1], x[n] = δ[n-a] + δ[n+b]

我不知道我对 h 和 x 做了什么。我只是将它们相乘吗?h[n]*x[n]?我用几种类型的模糊和边缘检测器对卷积进行了编程,但我不知道如何将这些知识转化为这个问题。请帮忙!

0 投票
2 回答
1923 浏览

c - 多维数组边缘/边界条件

我正在迭代一个 3 维数组(这是一个每个像素有 3 个值的图像),以将 3x3 过滤器应用于每个像素,如下所示:

我正在使用指针算术,因为如果我使用数组表示法,我将有 4 个循环,并且我试图尽可能少地循环。我的问题是我notOutsideEdgesCondition已经完全失控了,因为我必须考虑 8 个边境案件。我有以下处理条件

  • 左栏:((i%width)==0) && (j%3==0)
  • 右栏:((i-1)%width ==0) && (i>1) && (j%3==2)
  • 上排:(i<width) && (j<2)
  • 下排: (i>(width*height-width)) && (j>5)

并且仍然必须考虑具有更长表达式的 4 个极端情况。在这一点上,我停下来问自己这是否是最好的方法,因为如果我有一个 5 行长的条件评估,它不仅调试起来真的很痛苦,而且会减慢内部循环。这就是为什么我来问你是否有已知的算法来处理这种情况,或者是否有更好的方法来解决我的问题。非常感谢。

0 投票
5 回答
1099 浏览

functional-programming - Clojure 中惰性卷积 fn 的问题

我正在编写一些信号处理软件,并从写出离散卷积函数开始。

这适用于前一万左右的值列表,但是随着它们变大(例如,100k),我当然开始遇到 StackOverflow 错误。

不幸的是,我在将命令式卷积算法转换为递归和惰性版本时遇到了很多麻烦,该版本实际上足够快,可以使用(至少有一点优雅也会很好)。

我也不是 100% 确定我有这个功能完全正确,但是 - 如果我遗漏了什么/做错了什么,请告诉我。我认为这是正确的。

我将非常感谢任何形式的帮助:我仍在了解 Clojure 的方位,并且使这个优雅、懒惰和/或递归会很棒。

我有点惊讶在 Lisp 中用命令式语言表达一个容易表达的算法是多么困难。但也许我做错了!

编辑: 只是为了展示用命令式语言表达是多么容易,并为人们提供运行良好且易于阅读的算法,这里是 Python 版本。除了更短、更简洁和更容易推理之外,它的执行速度比 Clojure 代码快几个数量级:甚至我使用 Java 数组的命令式 Clojure 代码也是如此。

另一方面,这里是命令式 Clojure 代码。它还从卷积中删除最后一个非完全沉浸的值。所以除了缓慢和丑陋之外,它并不是 100% 的功能。也不实用。

这太令人沮丧了。拜托,有人告诉我我刚刚错过了一些明显的东西。

编辑 3:

这是我昨天想到的另一个版本,展示了我希望如何表达它(尽管其他解决方案非常优雅;我只是把另一个解决方案放在那里!)

它使用这个实用功能vec-add

0 投票
3 回答
23326 浏览

image-processing - 高斯模糊和卷积核

我不明白什么是卷积核以及如何将卷积矩阵应用于图像中的像素(我说的是对图像进行高斯模糊操作)。

我还可以获得有关如何为高斯模糊操作创建内核的解释吗?

我正在阅读这篇文章,但我似乎无法理解事情是如何完成的......

感谢任何花时间向我解释这一点的人:),

极限编码器

0 投票
3 回答
2532 浏览

opencv - OpenCV:检测区域中的黑白渐变

我上传了一个示例图片以便更好地理解:http ://www.imagebanana.com/view/kaja46ko/test.jpg

在图像中,您可以看到一些扫描线和一个标记(带有圆圈的白色矩形)。我希望 OpenCV 沿着应该在 5x5 左右的指定区域(在通过扫描线概述的示例中)进行。如果该区域包含从黑色到白色的渐变,我希望 OpenCV 保存该区域的位置,以便以后可以使用它。

最终结果将是区分标记和其他通过黑色和白色线分隔的矩形。

这样的事情可能吗?我用谷歌搜索了很多,但我只找到了边缘检测器,但这不是我想要的,我真的只需要检测黑白渐变。

提前致谢。

0 投票
2 回答
4134 浏览

matlab - matlab中的Writen卷积函数给麻烦

嘿,我一直难以编写该conv(x,y)函数的 matlab 等效项。我无法弄清楚为什么这会给出不正确的输出。对于数组 x1 = [1 2 1]x2 = [3 1 1].

这就是我所拥有的

matlab conv(x1,x2)给出3 7 6 3 1了输出,但这给了我3 5 6 6 6答案。我哪里出错了?

另外,对于我在歌剧迷你上的格式感到抱歉。

0 投票
2 回答
960 浏览

php - PHP 锐度卷积矩阵

我在PHP GD中使用卷积矩阵来表示锐度,我想改变锐度“级别”

如果我想让它或多或少尖锐,我会在哪里进行更改