相关疑难解决方法(0)

scipy.ndimage.interpolation.zoom使用类似最近邻居的算法进行缩减

在测试scipy的缩放功能时,我发现scailng-down数组的结果与最近邻算法类似,而不是平均.这极大地增加了噪声,并且对于许多应用而言通常是次优的.

是否存在不使用类似最近邻算法的替代方案,并在缩小尺寸时正确平均数组?虽然粗粒度适用于整数缩放因子,但我也需要非整数缩放因子.

测试用例:创建一个随机的100*M x 100*M阵列,对于M = 2..20将阵列缩小M系数的三种方式:

1)通过在MxM块中取平均值2)通过使用scipy的缩放比例因子1/M 3)获取a中的第一个点

得到的数组具有相同的平均值,相同的形状,但scipy的数组具有与最近邻居一样高的方差.为scipy.zoom采取不同的顺序并没有真正帮助.

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

mean1, mean2, var1, var2, var3  = [],[],[],[],[]
values = range(1,20)  # down-scaling factors

for M in values:
    N = 100  # size of an array 
    a = np.random.random((N*M,N*M))  # large array    

    b = np.reshape(a, (N, M, N, M))  
    b = np.mean(np.mean(b, axis=3), axis=1)
    assert b.shape == (N,N)  #coarsegrained array

    c = scipy.ndimage.interpolation.zoom(a, 1./M, order=3, prefilter = True) 
    assert c.shape == …
Run Code Online (Sandbox Code Playgroud)

python image-processing scipy

6
推荐指数
1
解决办法
4871
查看次数

标签 统计

image-processing ×1

python ×1

scipy ×1