কালার স্পেস রূপান্তর

TensorFlow.org এ দেখুন Google Colab-এ চালান GitHub-এ উৎস দেখুন নোটবুক ডাউনলোড করুন

ওভারভিউ

কম্পিউটার ভিশনে, নির্বাচিত রঙের স্থান মডেলটির কার্যকারিতা উল্লেখযোগ্য হতে পারে। যদিও RGB সবচেয়ে সাধারণ রং স্থান, Manay পরিস্থিতিতে মডেল সঞ্চালিত উত্তম যখন যেমন বিকল্প রঙ স্পেস স্যুইচ YUV , YCbCr , XYZ (CIE) , ইত্যাদি

tensorflow-io প্যাকেজ রঙ স্থান রূপান্তর API গুলি ইমেজ তথ্য প্রস্তুত ও বৃদ্ধির জন্য ব্যবহার করা যেতে পারে একটি তালিকা প্রদান করে।

সেটআপ

প্রয়োজনীয় প্যাকেজ ইনস্টল করুন এবং রানটাইম পুনরায় চালু করুন

pip install -q tensorflow-io

নমুনা ইমেজ ডাউনলোড করুন

এই টিউটোরিয়ালটিতে ব্যবহৃত ইমেজ উদাহরণ হচ্ছে হয় বরফ বিড়াল যদিও এটা কোন কোন JPEG ইমেজ দ্বারা প্রতিস্থাপিত করা যেতে পারে।

ইমেজ ডাউনলোড করুন যেমন স্থানীয় ডিস্কে সংরক্ষণ করতে হবে নিম্নলিখিত 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()

png

আরজিবিকে গ্রেস্কেলে রূপান্তর করুন

একটি 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'>

png

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'>

png

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'>

png

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'>

png

কি আরো আকর্ষণীয়, যদিও, যে হয় YCbCr মধ্যে পচে যেতে পারে Y' (Luma), 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()

png

png

png