דף זה תורגם על ידי Cloud Translation API.
Switch to English

תמונה של תוספות TensorFlow: פעולות

צפה ב- TensorFlow.org הפעל בגוגל קולאב צפה במקור ב- 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