如何对代表图像的NumPy数组进行重采样
在这篇文章中,我们将对一个代表图像的NumPy数组进行重采样。为此,我们将使用scipy包。Scipy包中有ndimage.zoom()方法,该方法通过使用给定阶数的样条插值来放大NumPy数组,为我们完成这一任务。默认是阶数3(又称立方)。
对于含有虚数成分的输入,scipy.ndimage.zoom,独立缩放实数和虚数成分。
语法: scipy.ndimage.zoom(input, zoom, output=None, order=3, mode=’constant’, cval=0.0, prefilter=True, *, grid_mode=False)
参数:
- input:它定义了ndarray
- zoom:它需要一个序列或一个单一的数字,如果是一个单一的数字,它意味着在所有轴上应用相同的缩放值,如果提供了一个序列,那么就按照给定的顺序应用到x、y、z…等。
- output:默认情况下,将创建与输入相同类型的输出。
- order:花键插值,其范围必须在[0,5]之间,包括在内。
- mode:最重要的参数之一,它决定了插值必须发生在边界像素之外,它可以从这个列表中取值[‘反射’, ‘恒定’, ‘最近’, ‘镜像’, ‘包裹’]。
- prefilter : 取布尔值,决定输入数组在插值前是否要用花键滤波器进行预过滤。
返回 : 缩放输入的数组。
示例
为了完成我们的缩放任务,我们将首先创建一个ndarray,如下所述。
输出:
例子1:在这个例子中,我们将通过
- ndarray作为输入阵列
- zoom: 2 (zoom with the value)
- order: 0 (spline interpolation)
order=0,zoom=2,因此,缩放是在具有相同数值的轴上进行的。
输出:
例子2:在这个例子中,我们将通过
- ndarray作为输入阵列
- zoom: 2 (用数值缩放)
- order : 1 (花键插值)
因为order =1,zoom=2,所以,缩放是在值+轴的轴上进行的,即;值+4。
输出:
例子3:在多波段图像的情况下,我们通常不希望沿Z轴插值来创建添加到图像中的新波段,因此我们应该为缩放系数参数传递一个序列而不是一个单一的数字。
输出:
示例 4:
输出: