Esta página foi traduzida pela API Cloud Translation.
Switch to English

Imagem de complementos do TensorFlow: Operações

Ver em TensorFlow.org Executar no Google Colab Ver fonte no GitHub Download do caderno

Visão geral

Este notebook demonstrará como usar algumas operações de imagem nos complementos do TensorFlow.

Aqui está a lista de operações de imagem que abordaremos neste exemplo:

Configuração

 import tensorflow as tf
import numpy as np
import tensorflow_addons as tfa
import matplotlib.pyplot as plt
 
TensorFlow 2.x selected.

Preparar e inspecionar imagens

Faça o download das imagens

 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 1us/step

Inspecione as imagens

Ícone 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

Faça uma versão em preto e branco

 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

Brincar com tfa.image

Filtragem média

A filtragem média é uma técnica de filtragem, que é frequentemente usada para remover o ruído de uma imagem ou sinal. A idéia é percorrer a imagem pixel por pixel e substituí-la pelos valores médios dos pixels vizinhos.

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

png

Rodar

Esta operação gira a imagem fornecida pelo ângulo (em radianos) inserido pelo usuário.

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

png

Transformar

Esta operação transforma a imagem fornecida com base no vetor de transformação fornecido pelo usuário.

 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 aleatório no YIQ

Essa operação altera a escala de cores de uma determinada imagem RGB para YIQ, mas aqui os valores delta de matiz e saturação são escolhidos aleatoriamente no intervalo especificado.

 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 no YIQ

Esta operação altera a escala de cores de uma determinada imagem RGB para YIQ, mas aqui, em vez de escolher aleatoriamente, os valores de matiz delta e saturação são entradas do usuário.

 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

Densidade de imagem densa

Esta operação é para distorção não linear de qualquer imagem especificada pelo campo de fluxo do vetor de deslocamento (aqui são utilizados valores aleatórios, por exemplo).

 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

Transformação à Distância Euclidiana

Esta operação atualiza o valor do pixel com a distância euclidiana do pixel em primeiro plano até o segundo plano.

  • Nota: Leva apenas uma imagem binária e resulta em uma imagem transformada. Se uma imagem diferente for fornecida, ela resultará em uma imagem com valor único
 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