¿Cómo volver a muestrear la array NumPy que representa una imagen?

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *