我对528 x 528 x 128图像堆栈的每个切片(即128个切片)进行了高斯平滑处理,并且运行速度非常快(这是使用3 x 3大小的小型滤镜内核)的。我并没有真正安排时间,但不到2秒。
我对此功能如何在“幕后”工作非常感兴趣,因为我正在尝试编写某种看起来像卷积的快速邻居计数器。我在自己的此功能中使用了所有奇特的魔术,例如stride_tricks
和np.einsum
,但是,它仍然非常慢,对于同一图像堆栈大约5分钟,还是3x3内核。因此,我想看看skimage中使用的过滤器实现。
我试图在Github上找到skimage.filters.gaussian
的源代码。这个函数使我无处不在,因为高斯函数使用scipy.ndimage.filters
中的gaussian_filter,而这个函数又使用了另一个函数,依此类推。
我最接近真实来源的是scipy.ndimage.filters.correlate1d
。该函数返回一个名为_nd_image.correlate1d
的函数,但是我在任何地方都找不到该源!
如果您知道源的位置,非常感谢您的分享! 另外,如果您知道为什么为什么这个过滤器是如此之快,即它使用了哪些特殊技巧,那么我很乐意得知。