مشاهده در 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)
یک نسخه سیاه و سفید بسازید
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')
بازی با tfa.image
یعنی فیلتر کردن
فیلتر میانگین یک تکنیک فیلترینگ است که اغلب برای حذف نویز از یک تصویر یا سیگنال استفاده می شود. ایده این است که پیکسل به پیکسل تصویر را اجرا کنیم و آن را با مقادیر متوسط پیکسل های همسایه جایگزین کنیم.
mean = tfa.image.mean_filter2d(img, filter_shape=11)
_ = plt.imshow(mean)
چرخش
این عملیات تصویر داده شده را با زاویه (به رادیان) ورودی توسط کاربر می چرخاند.
rotate = tfa.image.rotate(img, tf.constant(np.pi/8))
_ = plt.imshow(rotate)
تبدیل
این عملیات تصویر داده شده را بر اساس بردار تبدیل داده شده توسط کاربر تبدیل می کند.
transform = tfa.image.transform(img, [1.0, 1.0, -250, 0.0, 1.0, 0.0, 0.0, 0.0])
_ = plt.imshow(transform)
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)
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)
پیچ و تاب تصویر متراکم
این عملیات برای چرخش غیر خطی هر تصویری است که توسط میدان جریان بردار افست مشخص شده است (برای مثال در اینجا از مقادیر تصادفی استفاده می شود).
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)
تبدیل فاصله اقلیدینی
این عملیات مقدار پیکسل را با فاصله اقلیدین از پیکسل پیش زمینه تا پس زمینه به روز می کند.
- توجه: فقط تصویر باینری می گیرد و منجر به تبدیل تصویر می شود. اگر تصویر دیگری داده شود، تصویری با مقدار واحد ایجاد می شود
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')