我必须在许多图像的每一行应用卷积过滤器。经典的是360像素的1024x1024像素。在我的使用情况下,它是720图像560x600像素。最快的方法来计算卷积
问题是,我的代码比文章中公布的要慢得多。
我已经实现了朴素的卷积,它需要2m 30s。然后我使用fftw切换到FFT。我使用了复杂的2复数,在每次转换中过滤两行。我现在大约20多岁。
事情是文章广告大约10s甚至更少的经典条件。 所以我想问这里的专家是否有更快的方法来计算卷积。
数字配方建议避免在dft中完成排序并相应地调整频域滤波器功能。但是没有代码例子说明如何做到这一点。
也许我会在复制数据上失去时间。通过真正的2实数变换,我不必将数据复制到复数值中。不过无论如何我必须填充0。
编辑:请参阅我自己的回答下面的进度反馈和解决此问题的进一步信息。
问(精确再形成):
我正在寻找算法或一段代码到一个非常快速卷积应用于离散的非周期函数(512至2048的值)。显然,离散时间傅里叶变换是一条路。尽管如此,我想避免将数据复制和转换复杂化,并避免重新排序。
什么编程语言?什么广告文章? – 2009-10-10 19:45:17
C或C++。文章“使用GPU硬件的快速锥束CT图像重建 ”,严国瑞,田洁,朱寿平,戴亚康,秦成虎,X射线科学与技术杂志16(2008)225,IOS Press [http: //www.3dmed.net/paper/YanGR_XRay_Fast%20cone-beam%20CT%20image%20reconstruction%20using%20GPU%20hardware.pdf。在8800GTX(8MP)上播放的360张图像的播放时间为5.9秒,在512^3上播放,我使用的是280GTX(30MP)。 – chmike 2009-10-11 07:56:44
你的意思是你应用了2D图像上的一维内核?内核的大小是多少? – Royi 2017-08-04 22:01:11