我正在寻求将工作流从MATLAB迁移到Python。我将做大量的大图像过滤,并立即遇到一个性能障碍。在MATLAB R2022a中,用10西格玛高斯滤波器对11587乘13744进行滤波需要少于2秒的时间:
tic, imgf=imgaussfilt(im,10); toc
Elapsed time is 1.792801 seconds.
我在scipy 1.8.0和skimage 0.19.1中尝试了同样的方法,两者都要慢得多:
%timeit scipy.ndimage.gaussian_filter(im, 10, truncate=2)
4.89 s ± 15.4 ms per lo
我有这张图像,它已经被脉冲(盐和胡椒)噪声严重模糊,我正在尝试使用中值滤波器过滤它。我能够过滤图片到一个稍微可读的状态,但我希望他们过滤到一个更清晰的图像。如何改进我的中值滤波器?
图片由(n,m,4)数组表示,灰度rgb值介于0(黑色)和1(白色)之间。我使用3x3矩阵作为中值滤波器,并在每条边缘周围给图像一个1像素宽的白色边框。
def medianFilter(image=np.ndarray):
for i in range(1,image.shape[0]):
for j in range(1,image.shape[1]):
square = np.arra