¡Reserva! Google I / O regresa del 18 al 20 de mayo Regístrese ahora
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Imagen de complementos de TensorFlow: Operaciones

Ver en TensorFlow.org Ejecutar en Google Colab Ver fuente en GitHub Descargar cuaderno

Visión general

Este cuaderno demostrará cómo usar algunas operaciones de imagen en los complementos de TensorFlow.

Aquí está la lista de operaciones de imágenes que cubrirá en este ejemplo:

Preparar

pip install -q -U tensorflow-addons
import tensorflow as tf
import numpy as np
import tensorflow_addons as tfa
import matplotlib.pyplot as plt

Preparar e inspeccionar imágenes

Descarga las imagenes

img_path = tf.keras.utils.get_file('tensorflow.png','https://tensorflow.org/images/tf_logo.png')
Downloading data from https://tensorflow.org/images/tf_logo.png
40960/39781 [==============================] - 0s 3us/step

Inspecciona las imágenes

Icono de TensorFlow

img_raw = tf.io.read_file(img_path)
img = tf.io.decode_image(img_raw)
img = tf.image.convert_image_dtype(img, tf.float32)
img = tf.image.resize(img, [500,500])

plt.title("TensorFlow Logo with shape {}".format(img.shape))
_ = plt.imshow(img)

png

Haz una versión en blanco y negro

bw_img = 1.0 - tf.image.rgb_to_grayscale(img)

plt.title("Mask image with shape {}".format(bw_img.shape))
_ = plt.imshow(bw_img[...,0], cmap='gray')

png

Juega con tfa.image

Filtrado medio

El filtrado medio es una técnica de filtrado que se utiliza a menudo para eliminar el ruido de una imagen o señal. La idea es recorrer la imagen píxel a píxel y reemplazarla con los valores medios de los píxeles vecinos.

mean = tfa.image.mean_filter2d(img, filter_shape=11)
_ = plt.imshow(mean)

png

Girar

Esta operación rota la imagen dada por el ángulo (en radianes) introducido por el usuario.

rotate = tfa.image.rotate(img, tf.constant(np.pi/8))
_ = plt.imshow(rotate)

png

Transformar

Esta operación transforma la imagen dada en base al vector de transformación proporcionado por el usuario.

transform = tfa.image.transform(img, [1.0, 1.0, -250, 0.0, 1.0, 0.0, 0.0, 0.0])
_ = plt.imshow(transform)

png

HSV aleatorio en YIQ

Esta operación cambia la escala de color de una imagen RGB dada a YIQ, pero aquí los valores de saturación y tono delta se seleccionan aleatoriamente del rango dado.

delta = 0.5
lower_saturation = 0.1
upper_saturation = 0.9
lower_value = 0.2
upper_value = 0.8
rand_hsvinyiq = tfa.image.random_hsv_in_yiq(img, delta, lower_saturation, upper_saturation, lower_value, upper_value)
_ = plt.imshow(rand_hsvinyiq)

png

Ajustar HSV en YIQ

Esta operación cambia la escala de color de una imagen RGB dada a YIQ, pero aquí, en lugar de elegir aleatoriamente, los valores de saturación y tono delta son entradas del usuario.

delta = 0.5
saturation = 0.3
value = 0.6
adj_hsvinyiq = tfa.image.adjust_hsv_in_yiq(img, delta, saturation, value)
_ = plt.imshow(adj_hsvinyiq)

png

Deformación de imagen densa

Esta operación es para la deformación no lineal de cualquier imagen especificada por el campo de flujo del vector de compensación (aquí se utilizan valores aleatorios, por ejemplo).

input_img = tf.image.convert_image_dtype(tf.expand_dims(img, 0), tf.dtypes.float32)

flow_shape = [1, input_img.shape[1], input_img.shape[2], 2]
init_flows = np.float32(np.random.normal(size=flow_shape) * 2.0)
dense_img_warp = tfa.image.dense_image_warp(input_img, init_flows)
dense_img_warp = tf.squeeze(dense_img_warp, 0)
_ = plt.imshow(dense_img_warp)

png

Transformada de distancia euclidiana

Esta operación actualiza el valor del píxel con la distancia euclidiana desde el píxel del primer plano al del fondo.

  • Nota: Solo toma una imagen binaria y da como resultado una imagen transformada. Si se proporciona una imagen diferente, el resultado es una imagen con un solo valor
gray = tf.image.convert_image_dtype(bw_img,tf.uint8)
# The op expects a batch of images, so add a batch dimension
gray = tf.expand_dims(gray, 0)
eucid = tfa.image.euclidean_dist_transform(gray)
eucid = tf.squeeze(eucid, (0, -1))
_ = plt.imshow(eucid, cmap='gray')

png