在python中matlab的smooth3函数相当于什么?

时间:2013-09-19 18:15:28

标签: python matlab numpy

我无法在python中找到相当于matlab的smooth3。你如何在python中执行3D平滑?

1 个答案:

答案 0 :(得分:1)

最好使用scipy.ndimage。它具有大量功能,并且可以很好地控制内存使用(例如,您可以就地执行所有这些操作,而无需复制)。

smooth3d的默认过滤器的等效值为scipy.ndimage.uniform_filter(data, 3)(“3”是过滤器的大小.3是matlab的默认值。)

相当于smooth3(data, 'gaussian')将是scipy.ndimage.gaussian_filter(data, 3)

请注意scipy.ndimage的函数适用于任何维度数据。我将在下面展示一个2D示例,以便于可视化,但函数调用对于1D,3D,4D,10D等都是相同的。

import numpy as np
import scipy.ndimage as ndimage
import matplotlib.pyplot as plt

raw_data = np.random.random((30,30))

fig, axes = plt.subplots(ncols=3)

axes[0].imshow(raw_data, interpolation='nearest')
axes[0].set(title='Raw Data', xticks=[], yticks=[])

axes[1].imshow(ndimage.uniform_filter(raw_data, 3), interpolation='nearest')
axes[1].set(title='Uniform Filter', xticks=[], yticks=[])

axes[2].imshow(ndimage.gaussian_filter(raw_data, 3), interpolation='nearest')
axes[2].set(title='Gaussian Filter', xticks=[], yticks=[])

fig.tight_layout()
plt.show()

enter image description here