مشاهده در TensorFlow.org | در Google Colab اجرا شود | مشاهده منبع در GitHub | دانلود دفترچه یادداشت |
بررسی اجمالی
در بینایی کامپیوتر، فضای رنگی انتخاب شده می تواند عملکرد قابل توجهی از مدل داشته باشد. در حالی که RGB
بیشترین فضا رنگ مشترک، در شرایط manay انجام مدل بهتر است در هنگام تعویض به فضاهای رنگ های جایگزین مانند YUV
، YCbCr
، XYZ (CIE)
، و غیره
tensorflow-io
بسته یک لیست از تبدیل فضای رنگی رابط های برنامه کاربردی است که می تواند مورد استفاده قرار گیرد برای آماده سازی و تقویت داده های تصویر را فراهم می کند.
برپایی
بسته های مورد نیاز را نصب کنید و زمان اجرا را مجددا راه اندازی کنید
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()
RGB را به Grayscale تبدیل کنید
RGB
تصویر را می توان به تبدیل Grayscale
به منظور کاهش کانال 3-1 با 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
یک فضای رنگی رایج مورد استفاده در بسیاری از برنامه های پردازش تصویر است. موارد زیر تبدیل RGB به است 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'
(LUMA)، Cb
(رنگی آبی تفاوت) و Cr
(رنگی قرمز تفاوت) با هر حمل جزء اطلاعات ادراکی معنی دار:
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()