Visualizza su TensorFlow.org | Esegui in Google Colab | Visualizza l'origine su GitHub | Scarica quaderno |
Panoramica
Nella visione artificiale, lo spazio colore selezionato potrebbe avere una resa significativa del modello. Mentre RGB è più spazio colore comune, in situazioni Manay del modello esegue meglio quando si passa a spazi colore alternativi come YUV , YCbCr , XYZ (CIE) , etc.
Il tensorflow-io pacchetto fornisce un elenco di conversione spazio-colore API che possono essere usati per preparare e aumentare i dati di immagine.
Impostare
Installa i pacchetti richiesti e riavvia il runtime
pip install -q tensorflow-io
Scarica l'immagine di esempio
L'esempio immagine utilizzata in questo tutorial è un gatto in mezzo alla neve , anche se potrebbe essere sostituito da qualsiasi immagine JPEG.
Di seguito si scarica l'immagine e salvarla sul disco locale come 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
utilizzo
Leggi file immagine
Lettura e decodifica l'immagine in un uint8 Tensor di forma (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'>
L'immagine può essere visualizzata da:
import matplotlib.pyplot as plt
plt.figure()
plt.imshow(image)
plt.axis('off')
plt.show()

Converti RGB in scala di grigi
Un RGB dell'immagine può essere convertita in Grayscale per ridurre il canale da 3 a 1 con 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'>

Converti RGB in BGR
Alcuni software immagine e la fotocamera manufacturors potrebbero preferire BGR , che può essere ottenuto attraverso 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'>

Converti RGB in CIE XYZ
CIE XYZ (o CIE 1931 XYZ è uno spazio colore comune utilizzato in molti programmi di elaborazione delle immagini. La seguente è la conversione da RGB a CIE XYZ attraverso tfio.experimental.color.rgb_to_xyz . Nota tfio.experimental.color.rgb_to_xyz assume ingresso virgola mobile nell'intervallo [0, 1] è necessaria così ulteriore pretrattamento:
# 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'>

Converti RGB in YCbCr
Infine, YCbCr è lo spazio colore predefinito in molti sistemi video. Conversione in YCbCr potrebbe essere fatto attraverso 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'>

Ciò che è più interessante, però, è che YCbCr potrebbe essere scomposto in Y' (luma), Cb (blu-differenza chroma) e Cr (rosso-differenza chroma) componenti tra riporto componente informazioni percettivamente significative:
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()



Visualizza su TensorFlow.org
Esegui in Google Colab
Visualizza l'origine su GitHub
Scarica quaderno