En este artículo, volveremos a muestrear una array NumPy que representa una imagen. Para esto, estamos usando el paquete scipy. El paquete Scipy viene con el método ndimage.zoom() que hace exactamente esto por nosotros al hacer zoom en una array NumPy usando la interpolación spline de un orden dado. El valor predeterminado es el orden 3 (también conocido como cúbico).
Para entradas que contengan componentes imaginarios, scipy. ndimage.zoom, amplía los componentes reales e imaginarios de forma independiente.
Sintaxis: scipy.ndimage.zoom(entrada, zoom, salida=Ninguno, orden=3, modo=’constante’, cval=0.0, prefiltro=Verdadero, *, grid_mode=Falso)
Parámetros:
- Entrada : Define el ndarray
- zoom : toma tanto una secuencia como un solo número, si es un solo número, significa aplicar zoom con el mismo valor en todos los ejes, si se proporciona una secuencia, se aplica en el orden dado a x, y, z, etc.
- Salida : por defecto se creará la salida del mismo tipo de entrada.
- Orden : valor de interpolación de spline, debe oscilar entre [0,5] inclusive.
- Modo** : uno de los parámetros más importantes que decide cómo debe ocurrir la interpolación más allá de los píxeles de contorno, puede tomar valores de esta lista [‘reflejar’, ‘constante’, ‘más cercano’, ‘espejo’, ‘envolver’].
- prefiltro : toma un valor booleano y determina si la array de entrada debe prefiltrarse con un filtro spline antes de la interpolación o no.
Devoluciones : entrada ampliada estándar.
Ejemplos
Para realizar nuestras tareas de zoom, primero crearemos un ndarray como se indica a continuación:
Python3
import numpy as np import scipy.ndimage ndarray = np.array([[11, 12, 13, 14], [21, 22, 23, 24], [31, 32, 33, 34], [41, 42, 43, 44]]) print(ndarray)
Producción:
[[11 12 13 14] [21 22 23 24] [31 32 33 34] [41 42 43 44]]
Ejemplo 1: En este ejemplo, pasaremos
- ndarray como array de entrada
- zoom: 2 (zoom con el valor)
- orden: 0 (interpolación spline)
como order = 0 y zoom = 2, por lo que el zoom se realiza en el eje con el mismo valor.
Python3
print(scipy.ndimage.zoom( ndarray, 2, order = 0))
Producción:
[[11 11 12 12 13 13 14 14] [11 11 12 12 13 13 14 14] [21 21 22 22 23 23 24 24] [21 21 22 22 23 23 24 24] [31 31 32 32 33 33 34 34] [31 31 32 32 33 33 34 34] [41 41 42 42 43 43 44 44] [41 41 42 42 43 43 44 44]]
Ejemplo 2: En este ejemplo, pasaremos
- ndarray como array de entrada
- zoom : 2 (zoom con el valor)
- orden: 1 (interpolación spline)
como orden = 1 y zoom = 2, entonces, el zoom se realiza en el eje con el valor + eje, es decir; valor+4.
Python3
print(scipy.ndimage.zoom( ndarray, 2, order = 1))
Producción:
[[11 11 12 12 13 13 14 14] [15 16 16 17 17 17 18 18] [20 20 20 21 21 22 22 23] [24 24 25 25 26 26 26 27] [28 29 29 29 30 30 31 31] [32 33 33 34 34 35 35 35] [37 37 38 38 38 39 39 40] [41 41 42 42 43 43 44 44]]
Ejemplo 3: en el caso de imágenes multibanda, generalmente no queremos interpolar a lo largo del eje z para agregar nuevas bandas a las imágenes y, por lo tanto, debemos pasar una secuencia en lugar de un solo número para el parámetro del factor de zoom. .
Python3
import numpy as np import scipy.ndimage ndarray = np.array([[[11, 12, 13, 14], [21, 22, 23, 24]], [[31, 32, 33, 34], [41, 42, 43, 44]]]) print(ndarray) print(scipy.ndimage.zoom(ndarray, 1).shape)
Producción:
[[[11 12 13 14] [21 22 23 24]] [[31 32 33 34] [41 42 43 44]]] (2, 2, 4)
Ejemplo 4:
Python3
import numpy as np import scipy.ndimage ndarray = np.array([[[11, 12, 13, 14], [21, 22, 23, 24]], [[31, 32, 33, 34], [41, 42, 43, 44]]]) print(scipy.ndimage.zoom(ndarray, (2, 2, 4)))
Producción:
[[[11 11 11 11 12 12 12 12 13 13 13 13 14 14 14 14] [14 14 14 14 14 15 15 15 15 15 16 16 16 16 17 17] [18 18 19 19 19 19 20 20 20 20 20 21 21 21 21 21] [21 21 21 21 22 22 22 22 23 23 23 23 24 24 24 24]] [[16 16 16 17 17 17 17 18 18 18 18 18 19 19 19 19] [19 19 19 19 20 20 20 20 20 21 21 21 21 22 22 22] [24 24 24 24 24 25 25 25 25 25 26 26 26 26 27 27] [26 26 26 27 27 27 27 28 28 28 28 28 29 29 29 29]] [[26 26 26 26 27 27 27 27 27 28 28 28 28 29 29 29] [28 28 29 29 29 29 30 30 30 30 30 31 31 31 31 31] [33 33 33 34 34 34 34 35 35 35 35 35 36 36 36 36] [36 36 36 36 37 37 37 37 37 38 38 38 38 39 39 39]] [[31 31 31 31 32 32 32 32 33 33 33 33 34 34 34 34] [34 34 34 34 34 35 35 35 35 35 36 36 36 36 37 37] [38 38 39 39 39 39 40 40 40 40 40 41 41 41 41 41] [41 41 41 41 42 42 42 42 43 43 43 43 44 44 44 44]]]
Publicación traducida automáticamente
Artículo escrito por deepanshu_rustagi y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA