【发布时间】:2015-09-03 07:54:56
【问题描述】:
我有一个 MxN 矩阵和 PxQ 内核。我正在使用 4 个循环执行简单的卷积。我正在通过复制图像边界数据来单独处理边界情况。
我需要使用内核 PxQ 及其转置 QxP 对同一图像执行卷积。然后我必须简单地将两个输出图像相加。
问题是它需要很多时间,我需要优化它。分离内核并执行一维卷积似乎很困难,因为图像和内核都是非 squire 矩阵。我也不能使用任何库。内核是完全随机的,不属于任何预定义类型。
所以我想知道在使用内核执行的卷积中是否存在任何关系,然后在我可以利用的同一图像上使用它的转置。
或者还有什么我可以做的吗?
【问题讨论】:
-
如果你用 FFT 计算卷积,你可以节省一个 FFT。
-
但是根据 FFT 理论,如果卷积核超过 64 个点,就会有增益。如果内核较小怎么办? 5x5、8x6 等 ??
-
我不会相信任何提出这种说法的理论。如果您比较不同的 FFT 实现(卷积相同),最快的可能至少比最慢的快一个数量级。编写你自己的实现,它仍然会慢 10 倍(而且我不是在谈论 GPU 实现!)。它们可能都执行相同的算术运算,但在具有 SIMD、分支预测、多个缓存级别和每个线程多个执行管道的现代 CPU 上,这意味着很少。
标签: image-processing matrix computer-vision signal-processing convolution