Посмотреть на TensorFlow.org | Запускаем в Google Colab | Посмотреть исходный код на GitHub | Скачать блокнот |
Обзор
В компьютерном зрении выбранное цветовое пространство может существенно повлиять на производительность модели. В то время как RGB , является наиболее распространенным цветовым пространство, в manay ситуаций модели работает лучше при переключении на альтернативные цветовые пространства , такие как YUV , YCbCr , XYZ (CIE) , и т.д.
tensorflow-io пакет содержит список цветового APIs пространства преобразования , которые могут быть использованы для подготовки и увеличения данных изображения.
Настраивать
Установите необходимые пакеты и перезапустите среду выполнения.
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.jpgls -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 для уменьшения канала от 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' (яркостный), 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()



Посмотреть на TensorFlow.org
Запускаем в Google Colab
Посмотреть исходный код на GitHub
Скачать блокнот