Después de de esta larga búsqueda de información pudimos solucionar esta problema que presentan algunos los lectores. Te ofrecemos la respuesta y esperamos que resulte de mucha ayuda.
Redimensionar images
para size
usando el especificado method
.
tf.image.resize( images, size, method=ResizeMethod.BILINEAR, preserve_aspect_ratio=False, antialias=False, name=None)
Las imágenes redimensionadas se distorsionarán si su relación de aspecto original no es la misma que size
. Para evitar distorsiones ver tf.image.resize_with_pad
.
image = tf.constant([[1,0,0,0,0],[0,1,0,0,0],[0,0,1,0,0],[0,0,0,1,0],[0,0,0,0,1],])# Add "batch" and "channels" dimensions image = image[tf.newaxis,..., tf.newaxis] image.shape.as_list()# [batch, height, width, channels][1,5,5,1] tf.image.resize(image,[3,5])[0,...,0].numpy() array([[0.6666667,0.3333333,0.,0.,0.],[0.,0.,1.,0.,0.],[0.,0.,0.,0.3333335,0.6666665]], dtype=float32)
Funciona igualmente bien con una sola imagen en lugar de un lote de imágenes:
tf.image.resize(image[0],[3,5]).shape.as_list()[3,5,1]
Cuando antialias
es true, el filtro de muestreo suavizará la imagen de entrada e interpolará. Al reducir la resolución de una imagen con suavizado el núcleo del filtro de muestreo se escala para suavizar adecuadamente la señal de imagen de entrada. antialias
no tiene ningún efecto al realizar un muestreo superior de una imagen:
a = tf.image.resize(image,[5,10]) b = tf.image.resize(image,[5,10], antialias=True) tf.reduce_max(abs(a - b)).numpy()0.0
los method
argumento espera un elemento del image.ResizeMethod
enum, o el string equivalente. Las opciones son:
bilinear
: Interpolación bilineal. Siantialias
es true, se convierte en una función de filtro de sombrero / tienda con radio 1 al reducir la resolución.lanczos3
: Kernel de Lanczos con radio 3. Filtro práctico de alta calidad, pero puede tener algún timbre, especialmente en imágenes sintéticas.lanczos5
: Kernel de Lanczos con radio 5. Filtro de muy alta calidad pero puede tener un timbre más fuerte.bicubic
: Interpolante cúbico de llaves. Equivalente al kernel de Catmull-Rom. Razonablemente buena calidad y más rápido que Lanczos3Kernel, particularmente cuando se realiza un muestreo superior.gaussian
: Kernel gaussiano con radio 3, sigma = 1,5 / 3,0.nearest
: Interpolación del vecino más cercano.antialias
no tiene ningún efecto cuando se utiliza con la interpolación de vecino más cercano.area
: Remuestreo suavizado con interpolación de áreas.antialias
no tiene ningún efecto cuando se usa con interpolación de área; siempre suaviza.mitchellcubic
: Filtro no interpolante cúbico Mitchell-Netravali. Para imágenes sintéticas (especialmente aquellas que carecen de un prefiltrado adecuado), menos timbre que el núcleo cúbico de Keys pero menos nítido.
Nota: Cerca de los bordes de la imagen, el núcleo de filtrado puede estar parcialmente fuera de los límites de la imagen. Para estos píxeles, solo los píxeles de entrada dentro de la imagen se incluirán en la suma del filtro y el valor de salida se normalizará adecuadamente.
El valor de retorno tiene tipo float32
, a menos que el method
es ResizeMethod.NEAREST_NEIGHBOR
, entonces el dtype de retorno es el dtype de images
:
nn = tf.image.resize(image,[5,7], method='nearest') nn[0,...,0].numpy() array([[1,0,0,0,0,0,0],[0,1,1,0,0,0,0],[0,0,0,1,0,0,0],[0,0,0,0,1,1,0],[0,0,0,0,0,0,1]], dtype=int32)
Con preserve_aspect_ratio=True
, la relación de aspecto se conserva, por lo que size
es el máximo para cada dimensión:
max_10_20 = tf.image.resize(image,[10,20], preserve_aspect_ratio=True) max_10_20.shape.as_list()[1,10,10,1]
Args | |
---|---|
images |
Tensor de forma 4-D [batch, height, width, channels] o tensor de forma tridimensional [height, width, channels] . |
size |
Un tensor 1-D int32 de 2 elementos: new_height, new_width . El nuevo tamaño de las imágenes. |
method |
Un image.ResizeMethod , o string equivalente. Predeterminado a bilinear . |
preserve_aspect_ratio |
Ya sea para conservar la relación de aspecto. Si esto está configurado, entonces images se cambiará de tamaño a un tamaño que se ajuste size conservando la relación de aspecto de la imagen original. Amplía la imagen si size es más grande que el tamaño actual del image . El valor predeterminado es Falso. |
antialias |
Si se debe utilizar un filtro anti-aliasing al reducir el muestreo de una imagen. |
name |
Un nombre para esta operación (opcional). |
Eleva | |
---|---|
ValueError |
si la forma de images es incompatible con los argumentos de forma para esta función |
ValueError |
si size tiene una forma o tipo no válido. |
ValueError |
si se especifica un método de cambio de tamaño no admitido. |
Devoluciones | |
---|---|
Si images era 4-D, un tensor de forma flotante 4-D [batch, new_height, new_width, channels] . Si images era 3-D, un tensor de forma flotante 3-D [new_height, new_width, channels] . |