[英]What is the equivalent of matlab's smooth3 function in python?
我在python中找不到等效的matlab的smooth3。 如何在python中執行3d平滑?
最好為此使用scipy.ndimage
。 它具有大量功能,並且使您可以很好地控制內存使用情況(例如,您可以就地執行所有這些操作,而無需進行復制)。
等效於smooth3d
的默認過濾器為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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.