Bantuan melindungi Great Barrier Reef dengan TensorFlow pada Kaggle Bergabung Tantangan

Gambar Addons TensorFlow: Operasi

Lihat di TensorFlow.org Jalankan di Google Colab Lihat sumber di GitHub Unduh buku catatan

Gambaran

Notebook ini akan menunjukkan cara menggunakan beberapa operasi gambar di Addons TensorFlow.

Berikut adalah daftar operasi gambar yang akan Anda bahas dalam contoh ini:

Mempersiapkan

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

Siapkan dan Periksa Gambar

Unduh gambar

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

Periksa gambar

Ikon 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

Buat versi hitam putih

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

Mainkan dengan tfa.image

Penyaringan rata-rata

Mean filtering adalah teknik filtering, yang sering digunakan untuk menghilangkan noise dari sebuah gambar atau sinyal. Idenya adalah untuk menelusuri piksel gambar demi piksel dan menggantinya dengan nilai rata-rata piksel tetangga.

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

png

Memutar

Operasi ini memutar gambar yang diberikan oleh input sudut (dalam radian) oleh pengguna.

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

png

Mengubah

Operasi ini mengubah gambar yang diberikan berdasarkan vektor transformasi yang diberikan oleh pengguna.

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 acak di YIQ

Operasi ini mengubah skala warna dari gambar RGB yang diberikan ke YIQ tetapi di sini delta hue dan nilai saturasi dipilih secara acak dari rentang yang diberikan.

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

Sesuaikan HSV di YIQ

Operasi ini mengubah skala warna dari gambar RGB yang diberikan ke YIQ tetapi di sini alih-alih memilih secara acak, nilai delta hue dan saturasi adalah input dari pengguna.

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

Warp Gambar Padat

Operasi ini untuk warp non-linear dari setiap gambar yang ditentukan oleh bidang aliran vektor offset (di sini digunakan nilai acak misalnya).

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

Transformasi Jarak Euclidian

Operasi ini memperbarui nilai piksel dengan jarak euclidian dari piksel latar depan ke piksel latar belakang.

  • Catatan : Dibutuhkan hanya citra biner dan menghasilkan citra yang ditransformasi. Jika gambar yang berbeda diberikan, itu menghasilkan gambar dengan nilai tunggal
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