تصویر افزودنی های TensorFlow: عملیات

مشاهده در TensorFlow.org در Google Colab اجرا شود مشاهده منبع در GitHub دانلود دفترچه یادداشت

بررسی اجمالی

این نوت بوک نحوه استفاده از برخی عملیات تصویر را در افزونه های TensorFlow نشان می دهد.

در اینجا لیستی از عملیات تصویری که در این مثال پوشش خواهید داد، آمده است:

برپایی

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

تصاویر را آماده و بررسی کنید

تصاویر را دانلود کنید

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

تصاویر را بررسی کنید

نماد 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

یک نسخه سیاه و سفید بسازید

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

بازی با tfa.image

یعنی فیلتر کردن

فیلتر میانگین یک تکنیک فیلترینگ است که اغلب برای حذف نویز از یک تصویر یا سیگنال استفاده می شود. ایده این است که پیکسل به پیکسل تصویر را اجرا کنیم و آن را با مقادیر متوسط ​​پیکسل های همسایه جایگزین کنیم.

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

png

چرخش

این عملیات تصویر داده شده را با زاویه (به رادیان) ورودی توسط کاربر می چرخاند.

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

png

تبدیل

این عملیات تصویر داده شده را بر اساس بردار تبدیل داده شده توسط کاربر تبدیل می کند.

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 تصادفی در YIQ

این عملیات مقیاس رنگ یک تصویر RGB داده شده را به YIQ تغییر می دهد، اما در اینجا مقادیر رنگ دلتا و اشباع به طور تصادفی از محدوده داده شده انتخاب می شوند.

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

HSV را در YIQ تنظیم کنید

این عملیات مقیاس رنگ یک تصویر RGB داده شده را به YIQ تغییر می دهد، اما در اینجا به جای انتخاب تصادفی، مقادیر رنگ دلتا و اشباع ورودی از کاربر است.

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

پیچ و تاب تصویر متراکم

این عملیات برای چرخش غیر خطی هر تصویری است که توسط میدان جریان بردار افست مشخص شده است (برای مثال در اینجا از مقادیر تصادفی استفاده می شود).

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

تبدیل فاصله اقلیدینی

این عملیات مقدار پیکسل را با فاصله اقلیدین از پیکسل پیش زمینه تا پس زمینه به روز می کند.

  • توجه: فقط تصویر باینری می گیرد و منجر به تبدیل تصویر می شود. اگر تصویر دیگری داده شود، تصویری با مقدار واحد ایجاد می شود
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