TensorFlow.org पर देखें | Google Colab में चलाएं | GitHub पर स्रोत देखें | नोटबुक डाउनलोड करें |
अवलोकन
कंप्यूटर विज़न में, चयनित रंग स्थान में मॉडल का महत्वपूर्ण प्रदर्शन हो सकता है। जबकि RGB
सबसे आम रंग अंतरिक्ष, manay स्थितियों में मॉडल प्रदर्शन बेहतर है जब इस तरह के रूप में वैकल्पिक रंग रिक्त स्थान का उपयोग करने जा YUV
, YCbCr
, XYZ (CIE)
, आदि
tensorflow-io
पैकेज रंग स्थान रूपांतरण एपीआई कि छवि डेटा तैयार करने और बढ़ाने के लिए इस्तेमाल किया जा सकता की एक सूची प्रदान करता है।
सेट अप
आवश्यक पैकेज स्थापित करें, और रनटाइम को पुनरारंभ करें
pip install -q tensorflow-io
नमूना छवि डाउनलोड करें
इस ट्यूटोरियल में प्रयोग किया जाता छवि उदाहरण एक है बर्फ में बिल्ली , हालांकि यह किसी भी जेपीईजी छवियों द्वारा प्रतिस्थापित किया जा सकता है।
छवि डाउनलोड करने और के रूप में स्थानीय डिस्क को बचा लेगा निम्नलिखित sample.jpg
:
curl -o sample.jpg -L https://storage.googleapis.com/download.tensorflow.org/example_images/320px-Felis_catus-cat_on_snow.jpg
ls -ls sample.jpg
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 17858 100 17858 0 0 235k 0 --:--:-- --:--:-- --:--:-- 235k 20 -rw-rw-r-- 1 kbuilder kokoro 17858 Oct 27 16:33 sample.jpg
प्रयोग
छवि फ़ाइल पढ़ें
पढ़ें और एक में चित्र को डीकोड uint8
आकार के टेन्सर (213, 320, 3)
import tensorflow as tf
import tensorflow_io as tfio
image = tf.image.decode_jpeg(tf.io.read_file('sample.jpg'))
print(image.shape, image.dtype)
(213, 320, 3) <dtype: 'uint8'>
छवि द्वारा प्रदर्शित किया जा सकता है:
import matplotlib.pyplot as plt
plt.figure()
plt.imshow(image)
plt.axis('off')
plt.show()
RGB को ग्रेस्केल में बदलें
एक RGB
छवि के लिए परिवर्तित किया जा सकता Grayscale
साथ 1 से 3 से चैनल को कम करने के tfio.experimental.color.rgb_to_grayscale
:
grayscale = tfio.experimental.color.rgb_to_grayscale(image)
print(grayscale.shape, grayscale.dtype)
# use tf.squeeze to remove last channel for plt.imshow to display:
plt.figure()
plt.imshow(tf.squeeze(grayscale, axis=-1), cmap='gray')
plt.axis('off')
plt.show()
(213, 320, 1) <dtype: 'uint8'>
RGB को BGR में बदलें
कुछ छवि सॉफ्टवेयर और कैमरा manufacturors पसंद कर सकते हैं BGR
, जिसके माध्यम से प्राप्त किया जा सकता tfio.experimental.color.rgb_to_bgr
:
bgr = tfio.experimental.color.rgb_to_bgr(image)
print(bgr.shape, bgr.dtype)
plt.figure()
plt.imshow(bgr)
plt.axis('off')
plt.show()
(213, 320, 3) <dtype: 'uint8'>
RGB को CIE XYZ में बदलें
CIE XYZ
(या CIE 1931 XYZ
एक आम रंग कई इमेज प्रोसेसिंग कार्यक्रमों में इस्तेमाल जगह नहीं है। निम्नलिखित के लिए आरजीबी से रूपांतरण है CIE XYZ
के माध्यम से tfio.experimental.color.rgb_to_xyz
। नोट tfio.experimental.color.rgb_to_xyz
चल बिन्दु इनपुट मान लिया गया है की सीमा में [0, 1]
इसलिए अतिरिक्त पूर्व प्रसंस्करण की जरूरत है:
# convert to float32
image_float32 = tf.cast(image, tf.float32) / 255.0
xyz_float32 = tfio.experimental.color.rgb_to_xyz(image_float32)
# convert back uint8
xyz = tf.cast(xyz_float32 * 255.0, tf.uint8)
print(xyz.shape, xyz.dtype)
plt.figure()
plt.imshow(xyz)
plt.axis('off')
plt.show()
(213, 320, 3) <dtype: 'uint8'>
RGB को YCbCr में बदलें
अंत में, YCbCr
कई वीडियो सिस्टम में डिफ़ॉल्ट रंग की जगह है। में कनवर्ट कर रहा YCbCr
के माध्यम से किया जा सकता है tfio.experimental.color.rgb_to_ycbcr
:
ycbcr = tfio.experimental.color.rgb_to_ycbcr(image)
print(ycbcr.shape, ycbcr.dtype)
plt.figure()
plt.imshow(ycbcr, cmap='gray')
plt.axis('off')
plt.show()
(213, 320, 3) <dtype: 'uint8'>
क्या और अधिक दिलचस्प है, हालांकि, वह यह है कि YCbCr
में विघटित किया जा सकता है Y'
(लुमा), Cb
(नीली अंतर क्रोमा), और Cr
(लाल अंतर क्रोमा) प्रत्येक घटक कैरी perceptually सार्थक जानकारी के साथ घटक:
y, cb, cr = ycbcr[:,:,0], ycbcr[:,:,1], ycbcr[:,:,2]
# Y' component
plt.figure()
plt.imshow(y, cmap='gray')
plt.axis('off')
plt.show()
# Cb component
plt.figure()
plt.imshow(cb, cmap='gray')
plt.axis('off')
plt.show()
# Cr component
plt.figure()
plt.imshow(cr, cmap='gray')
plt.axis('off')
plt.show()