计算卷积的最快方法

2023-12-31

我必须对许多图像的每一行应用卷积滤波器。经典的是 1024x1024 像素的 360 度图像。在我的用例中,它是 720 张 560x600 像素的图像。

问题是我的代码比文章中宣传的慢得多。

我实现了朴素卷积,需要2m 30s。然后我使用 fftw 切换到 FFT。我使用了 Complex 2 Complex,在每个转换中过滤两行。我现在20多岁了。

问题是,对于经典条件,文章的广告时间大约为 10 秒,甚至更少。 所以我想请教这里的专家是否可以有更快的方法来计算卷积。

数值方法建议避免在 dft 中进行排序并相应地调整频域滤波器函数。但没有代码示例如何做到这一点。

也许我在复制数据方面浪费了时间。通过实数 2 实数变换,我不必将数据复制到复数值中。但无论如何我都必须用0来填充。

编辑:请参阅下面我自己的答案,以获取进度反馈和解决此问题的更多信息。

问题(精确重新表述):

我正在寻找一种算法或一段代码,将非常快速的卷积应用于离散非周期函数(512 到 2048 个值)。显然,离散时间傅立叶变换是正确的选择。不过,我想避免复杂的数据复制和转换,并避免蝶式重新排序。


FFT 是已知的最快的信号卷积技术,而 FFTW 是可用于计算 FFT 的最快的免费库。

获得最大性能的关键(在硬件之外……GPU 是一个很好的建议)是将信号填充到 2 的幂。使用 FFTW 时,在创建计划时使用“耐心”设置以获得最佳性能。您不太可能手动推出比 FFTW 提供的更快的实现(忘记 N.R.)。还要确保使用正向 1D FFT 的实数版本,而不是复数版本;如果可以的话,只使用单精度(浮点)。

如果 FFTW 不适合你,那么我会看看 Intel 的(非常实惠的)IPP 库。他们针对英特尔处理器手动调整了 FFT,并针对各种位深度的图像进行了优化。

Paul
中心空间 http://centerspace.net软件

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算卷积的最快方法 的相关文章

  • 归一化互相关的基础知识

    我正在尝试使用范数校正2 归一化互相关 http en wikipedia org wiki Cross correlation Normalized cross correlation 来自 MATLAB 用于计算发育中胚胎中移动形状的速
  • 检查图像中是否有太薄的区域

    我正在尝试验证雕刻机的黑白图像 更多的是剪贴画图像 不是照片 我需要考虑的主要事情之一是区域的大小 或线条的宽度 因为机器无法处理太细的线条 所以我需要找到比给定阈值更细的区域 以此图为例 竖琴的琴弦可能太细而无法雕刻 我正在阅读有关 Ma
  • Matlab颜色检测

    我试图一致地检测同一场景的图像之间的某种颜色 这个想法是根据颜色配置文件识别一组对象 因此 例如 如果给我一个带有绿色球的场景 并且我选择绿色作为我的调色板的一部分 我想要一个具有反映它检测到球的矩阵的函数 任何人都可以为这个项目推荐一些
  • minAreaRect OpenCV 返回的裁剪矩形 [Python]

    minAreaRectOpenCV 中返回一个旋转的矩形 如何裁剪矩形内图像的这部分 boxPoints返回旋转矩形的角点的坐标 以便可以通过循环框内的点来访问像素 但是在 Python 中是否有更快的裁剪方法 EDIT See code在
  • setImageCompressionQuality 与 setCompressionQuality 之间有什么区别 - Imagick

    我在Imagick中找到了两种设置图像压缩质量的方法 A 设置图像压缩质量 B 设置压缩质量 所以我想知道哪一个是最好的以及为什么在以下条件下 我读到了setCompressionQuality方法仅适用于新图像 我正在尝试压缩文件 jpe
  • Python 或 C 语言中的 Matlab / Octave bwdist()

    有谁知道 Matlab Octave bwdist 函数的 Python 替代品 此函数返回给定矩阵的每个单元格到最近的非零单元格的欧几里得距离 我看到了一个 Octave C 实现 一个纯 Matlab 实现 我想知道是否有人必须用 AN
  • 如何使用 opencv python 计算乐高积木上的孔数?

    我正在开发我的 python 项目 我需要计算每个乐高积木组件中有多少个孔 我将从输入 json 文件中获取有关需要计算哪个程序集的信息 如下所示 img 001 red 0 blue 2 white 1 grey 1 yellow 1 r
  • Numpy 过滤器平滑零区域

    我有一个 0 及更大整数的 2D numpy 数组 其中值代表区域标签 例如 array 9 9 9 0 0 0 0 1 1 1 9 9 9 9 0 7 1 1 1 1 9 9 9 9 0 2 2 1 1 1 9 9 9 8 0 2 2 1
  • 如何使用 zbar 获取图像上检测到的二维码的 x、y 位置?

    我在下图的两个二维码中编码了数字1639 可下载 here https i stack imgur com c0FVK jpg 我打印了它 拍了一张照片并尝试检测它 import zbar from PIL import Image sca
  • 如何用python创建透明的径向渐变?

    我正在尝试创建一个渐变到清晰背景的径向渐变 我的目标是创建这个渐变并将其作为背景粘贴到另一个图像 到目前为止 我已经能够创建圆形渐变 但它不透明 我在 stackoverflow 中找到了以下代码 imgsize 650 650 image
  • 帮助我理解FFT函数(Matlab)

    1 除了负频率之外 FFT 函数提供的最小频率是多少 是零吗 2 如果它为零 我们如何在对数刻度上绘制零 3 结果总是对称的 或者只是看起来是对称的 4 如果我使用abs fft y 来比较2个信号 我是否会失去一些准确性 1 除了负频率之
  • 在骨架图像中查找线 OpenCV python

    我有以下图片 我想找到一些线来进行一些计算 平均长度等 我尝试使用HoughLinesP 但它找不到线 我能怎么做 这是我的代码 sk skeleton mask rows cols sk shape imgOut np zeros row
  • Blob 的簇生长

    考虑以下来自 Mathworks 的图像 我已经用标签标记了斑点 L num bwlabel I 如何迭代连接所有斑点 即从一个斑点开始 找到离它最近的一个 考虑最左边的两个斑点 可以从一个斑点的许多点绘制许多条线来连接到另一个斑点blob
  • 是否可以将 ppm 文件从 p3 转换为 p6 或使用pillow lib 打开 ppm p3 文件

    是否可以将 ppm 文件从 p3 转换为 p6 或使用pillow lib 打开并读取 ppm p3 文件 我实际上有 ppm p3 文件 并尝试使用pillow lib 将它们转换为 jpg 但不幸的是 它不读取 p3 文件 只读取 p6
  • Python绕相机轴旋转图像

    假设我有一个图像 是在对某些原始图像应用单应性变换 H 后获得的 未显示原始图像 将单应性 H 应用于原始图像的结果是该图像 我想围绕合适的轴 可能是相机所在的位置 如果有的话 将此图像旋转 30 度以获得此图像 如果我不知道相机参数 如何
  • 使用缩略图器,我可以制作具有相同高度和宽度的缩略图,无论图像大小如何

    In 缩略图器 http code google com p thumbnailator 我正在制作缩略图 如果图像大小是 400 300 并且如果我执行以下操作 Thumbnails of new File original jpg si
  • 为什么这个基本的 imagejpeg() resizer 返回黑色图像?

    EDIT 感谢您的所有回答 特别是 Mailerdaimon 他注意到我没有在imagecopyresampled功能 我不再得到黑色图像 但我仍然得到一些黑色部分 所以我认为我的比例公式应该更新 如果我上传横向图像 新图像的高度小于 17
  • 有没有办法降低 scipy/numpy 精度以减少内存消耗?

    在我的 64 位 Debian Lenny 系统 4GByte RAM 4GByte 交换分区 上 我可以成功执行以下操作 v array 10000 random 512 512 512 dtype np int16 f fftn v 但
  • Alpha 混合可消除图像中的接缝

    我缝合了两张图像 但在最终图像中存在可见的接缝 我正在尝试使用阿尔法混合去除那条接缝 我知道 Alpha 混合是使用cvAddweight 函数 但在此函数参数是两个图像 alpha beta gamma和目的地 我正在服用gamma 0
  • 在matlab中融合2个以上的图像

    在 MATLAB 中 如何融合两个以上的图像 例如 我想要做什么imfuse但对于超过 2 个图像 使用两张图像 这是我的代码 A imread file1 jpg B imread file2 jpg C imfuse A B blend

随机推荐

  • 如何将 Json.NET 中缺失的属性反序列化为默认值?

    我有一个用 DataContract 和 DataMember 属性注释的类 部分成员被标记为DataMember IsRequired true 当我通过 Json NET 线路序列化实例时 所需的对象成员具有 null 值 那么它们的序
  • 请解释一下这个 Javascript 闭包练习 [重复]

    这个问题在这里已经有答案了 我是一个 javascript 菜鸟 试图理解下面的闭包练习 现在 我知道结果是 122 任何人都可以引导我一步步完成这个过程 什么被传递到什么 以便我能够理解闭包是如何工作的 var hidden myster
  • Android TTS 文本长度超过 4k 字符无法播放

    我在用TextToSpeech有时会播放一些长文本 我注意到从那以后Android 4 1 2如果文本长度超过 4000 个字符 则不会播放 我没有收到任何错误 但文本不会播放 直到现在我才能够重现这个Android 4 1 2 三星 Ga
  • maven - 当单元测试花费太长时间时构建失败

    我的项目中有很多用 JUnit 和 TestNG 编写的单元测试 构建过程基于带有surefire插件的maven 当至少一个单元测试花费太多秒时 是否有任何方法 插件使 Maven 构建失败 我知道有一些插件在 TeamCity Jenk
  • 在 Python 代码中参数化 MySQL IN 子句

    我正在看这个类似的问题 参数化 SQL IN 子句 https stackoverflow com questions 337704 parameterize an sql in clause但解决方案不是使用Python 所以我不得不提出
  • 使用委托的新实例取消注册事件

    EventHandler a new EventHandler control RegionChanged EventHandler b new EventHandler control RegionChanged if a b Conso
  • Python 2:集合和列表的“in”关键字的不同含义

    考虑这个片段 class SomeClass object def init self someattribute somevalue self someattribute someattribute def eq self other r
  • 创建条件图 python [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我只想绘制小于或等于某个数字 假设为 15 的值 我可以在数据帧的一列中找到这些值 如果这些值不小于或等于 15 我不想绘制它们 你能帮我找
  • django用户模型和自定义主键字段

    默认情况下 Django 在每个名为 的模型上创建一个主键字段 id 具有一种类型AutoField 在我的模型上 我将覆盖它以使用自定义UUIDField使用 作为主键primary key 属性 我也想要User模型中django co
  • 在CPU密集型任务上使用await关键字与Task.Wait()方法有什么区别?

    会是什么机械的之间的区别 async void LongIOBoundWorkWithSomeCPUBoundWorkAsWellAsync await Task Run CPUBoundWork Do IO bound work awai
  • 如何更改分类 x 轴的绘图顺序

    我得到了一个数据框 如下所示 df Time of Day Season value Day Shoulder 30 581606 Day Summer 25 865560 Day Winter 42 644530 Evening Shou
  • python,在 tkinter 中显示图像的函数?

    我想创建一个 tkinter 窗口并显示 lena 图片 我得到了一个可以工作的代码 但我不知道如何用它来创建一个函数 code import numpy import cv2 from Tkinter import from PIL im
  • HTML 选择下拉列表

    我想要一个使用选择 选项标签的下拉列表 但是当它第一次出现时我希望它有一个信息 例如 请选择一个名称 然后用户单击下拉列表并从中选择可用选项 我尝试将 请选择一个名称 作为选项 但用户将能够选择此 这不是我想要的 我需要使用 javascr
  • Xcode:运行 XC 单元测试时模块名称“”不是有效标识符

    尝试使用我设置的 CocoaPods 运行 XCTestSDWebImage 我只能看到这个错误 如下所示 有什么建议么 0 错误 模块名称 不是有效的标识符 命令 Applications Xcode8 3 1 app Contents
  • 以理智、安全、高效的方式复制文件

    我寻找一种复制文件 二进制或文本 的好方法 我已经写了几个示例 每个人都可以工作 但我想听听经验丰富的程序员的意见 我缺少好的例子并寻找一种与 C 一起使用的方法 ANSI C WAY include
  • 媒体查询不起作用

    有谁知道为什么我的媒体查询代码不起作用 div class box div box background color red width 100 height 50px media only screen and max device wi
  • 在 Ubuntu 16.04 上运行简单的 .Net Core MVC 应用程序时出现内部服务器错误

    我在 Ubuntu 上使用 Net core 1 0 运行简单的 hello world 应用程序时遇到内部服务器错误 我确信我错过了一些简单的东西 但无法弄清楚它是什么 它一直在工作 直到我更换return Content Hello w
  • ReferenceError:WebAssembly 未定义

    我在应用程序中使用 t test Node js 模块 由于更新 我尝试使用更新版本 电子邮件受保护 cdn cgi l email protection 当模块开始计算数据时出现错误 ReferenceError WebAssembly
  • 从 ConcurrentDictionary 中安全删除列表映射[重复]

    这个问题在这里已经有答案了 我有一个 ConcurrentDictionary 它将简单类型映射到列表 var dict new ConcurrentDictionary
  • 计算卷积的最快方法

    我必须对许多图像的每一行应用卷积滤波器 经典的是 1024x1024 像素的 360 度图像 在我的用例中 它是 720 张 560x600 像素的图像 问题是我的代码比文章中宣传的慢得多 我实现了朴素卷积 需要2m 30s 然后我使用 f