TensorFlow.org पर देखें | Google Colab में चलाएं | GitHub पर स्रोत देखें | नोटबुक डाउनलोड करें |
अवलोकन
यह नोटबुक प्रदर्शित करेगी कि TensorFlow Addons में कुछ छवि संचालन का उपयोग कैसे करें।
इस उदाहरण में आप जिन इमेज ऑपरेशंस को कवर करेंगे, उनकी सूची यहां दी गई है:
सेट अप
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
छवियों का निरीक्षण करें
टेंसरफ्लो आइकन
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)
YIQ . में रैंडम HSV
यह ऑपरेशन किसी दी गई 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)
YIQ में HSV समायोजित करें
यह ऑपरेशन किसी दी गई आरजीबी छवि के रंग पैमाने को वाईआईक्यू में बदल देता है लेकिन यहां यादृच्छिक रूप से चुनने के बजाय, डेल्टा ह्यू और संतृप्ति मान इनपुट होते हैं जो उपयोगकर्ता बनाते हैं।
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')