重新采样2D numpy数组

时间:2016-12-21 13:40:13

标签: python numpy scipy

我有一个大小为(3,2)的二维数组,我必须使用最近邻,线性和双三次插值方法重新对此进行采样,以使大小变为(4,3)

我正在使用 Python numpyscipy

如何实现输入数组的重采样?

1 个答案:

答案 0 :(得分:1)

有一个很好的使用卷积here重新采样的教程。

对于整数因子放大:

import numpy
import scipy
from scipy import ndimage, signal

# Scale factor
factor = 2

# Input image
a = numpy.arange(16).reshape((4,4))

# Empty image enlarged by scale factor
b = numpy.zeros((a.shape[0]*factor, a.shape[0]*factor))

# Fill the new array with the original values
b[::factor,::factor] = a

# Define the convolution kernel
kernel_1d = scipy.signal.boxcar(factor)
kernel_2d = numpy.outer(kernel_1d, kernel_1d)

# Apply the kernel by convolution, seperately in each axis
c = scipy.signal.convolve(b, kernel_2d, mode="valid")

请注意,每个轴的因子可能不同,您也可以在每个轴上顺序应用卷积。双线性和双立方的核也在链接中显示,双线性插值利用三角信号(scipy.signal.triang),双三次是一个分段函数。

您还应该注意插值图像的哪个部分有效;沿着边缘没有足够的内核支持。

就卫星图像而言,双三次插值是三者的最佳选择。

相关问题