Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

TensorFlow Addons Bild: Operationen

Ansicht auf TensorFlow.org Quelle auf GitHub anzeigen Notizbuch herunterladen

Überblick

Dieses Notizbuch zeigt, wie einige Bildoperationen in TensorFlow-Addons verwendet werden.

Hier ist die Liste der Bildoperationen, die Sie in diesem Beispiel behandeln werden:

Konfiguration

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

Bilder vorbereiten und untersuchen

Laden Sie die Bilder herunter

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

Überprüfen Sie die Bilder

TensorFlow-Symbol

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

Machen Sie eine Schwarz-Weiß-Version

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

Spielen Sie mit tfa.image

Mittlere Filterung

Die mittlere Filterung ist eine Filtertechnik, die häufig verwendet wird, um Rauschen aus einem Bild oder Signal zu entfernen. Die Idee ist, das Bild Pixel für Pixel zu durchlaufen und es durch die Durchschnittswerte benachbarter Pixel zu ersetzen.

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

png

Drehen

Diese Operation dreht das gegebene Bild um den vom Benutzer eingegebenen Winkel (im Bogenmaß).

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

png

Verwandeln

Diese Operation transformiert das gegebene Bild auf der Basis des vom Benutzer gegebenen Transformationsvektors.

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

png

Zufälliger HSV in YIQ

Diese Operation ändert die Farbskala eines gegebenen RGB-Bildes in YIQ, aber hier werden Delta-Farbton- und Sättigungswerte zufällig aus dem gegebenen Bereich ausgewählt.

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

Stellen Sie den HSV in YIQ ein

Diese Operation ändert die Farbskala eines bestimmten RGB-Bildes in YIQ, aber hier werden anstelle einer zufälligen Auswahl Delta-Farbton- und Sättigungswerte vom Benutzer eingegeben.

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

Dichte Bildverzerrung

Diese Operation ist für eine nichtlineare Verzerrung eines Bildes vorgesehen, das durch das Flussfeld des Versatzvektors spezifiziert ist (hier werden beispielsweise Zufallswerte verwendet).

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

Euklidische Distanztransformation

Diese Operation aktualisiert den Pixelwert mit dem euklidischen Abstand vom Vordergrundpixel zum Hintergrundpixel.

  • Hinweis: Es wird nur ein Binärbild aufgenommen und ein transformiertes Bild erstellt. Wenn ein anderes Bild angegeben wird, ergibt sich ein Bild mit einem einzigen Wert
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