![]() | ![]() | ![]() |
Ü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)
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')
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)
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)
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)
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)
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)
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)
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')