रंग अंतरिक्ष रूपांतरण

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()

पीएनजी

पीएनजी

पीएनजी