几位用户询问了numpy或scipy中图像卷积的速度或内存消耗[1,2,3,4]。从响应和使用Numpy的经验来看,我相信这可能是Matlab或IDL相比numpy的一个主要缺点。Python中最快的2D卷积或图像过滤器
到目前为止,所有答案都没有解决整体问题,所以这里是:“在Python中计算二维卷积的最快方法是什么?”常见的Python模块是公平的游戏:numpy,scipy和PIL(其他?)。为了进行具有挑战性的比较,我想提出以下规则:
- 输入矩阵分别为2048x2048和32x32。
- 单精度浮点或双精度浮点均可接受。
- 将输入矩阵转换为适当格式花费的时间不计算 - 仅仅是卷积步骤。
- 更换你的输出输入矩阵是可以接受的(没有任何Python库的支持吗?)
- 直接DLL调用普通C库是好的 - LAPACK的ScaLAPACK或
- PyCUDA是正确的。使用您的定制GPU硬件是不公平的。
“和您的输出更换输入矩阵是可以接受的(没有任何Python库的支持吗?)”对于它的价值,最numpy的和SciPy的功能做... – 2011-04-19 02:23:44
我没有看到任何提及在convolve的文档中:http://docs.scipy.org/doc/numpy/reference/generated/numpy.convolve.html我错过了什么吗? – 2011-04-19 15:49:26
它不支持numpy的convolve,但它是'scipy.ndimage.convolve'。 http://www.scipy.org/SciPyPackages/Ndimage此外,大多数numpy函数(例如'sqrt','mul','add')都会带出一个out参数。你可以使用'np.sqrt(x,x)'来就地使用sqrt。 – 2011-04-19 16:45:24