TensorFlow.org'da görüntüleyin | Google Colab'da çalıştırın | Kaynağı GitHub'da görüntüleyin | Not defterini indir |
genel bakış
Bilgisayarla görmede, seçilen renk uzayı, modelin performansına önemli ölçüde sahip olabilir. Birlikte RGB
modeli gerçekleştirir daha manay durumlarda en çok renk alanı olduğu gibi, alternatif renk uzayı geçildiğinde YUV
, YCbCr
, XYZ (CIE)
, vs.
tensorflow-io
paket görüntü verilerini hazırlayıp güçlendirmek için kullanılabilir renk alanı dönüşüm API'ler bir listesini sağlar.
Kurmak
Gerekli Paketleri kurun ve çalışma zamanını yeniden başlatın
pip install -q tensorflow-io
Örnek resmi indirin
Bu eğitimde kullanılan görüntü örneği olan karda kedi herhangi JPEG görüntüleri yerini olabilir gerçi.
Görüntüyü indirmek ve yerel diske kaydeder aşağıdaki 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
kullanım
Resim Dosyasını Oku
Okuma ve görüntüyü deşifre uint8
şeklinin tensör (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'>
Görüntü şu şekilde görüntülenebilir:
import matplotlib.pyplot as plt
plt.figure()
plt.imshow(image)
plt.axis('off')
plt.show()
RGB'yi Gri Tonlamaya Dönüştür
Bir RGB
görüntü dönüştürülebilir Grayscale
ile 1: 3 ile bir kanal azaltma 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'yi BGR'ye dönüştür
Bazı resim yazılım ve kamera manufacturors tercih edebilirsiniz BGR
yoluyla elde edilebilir, 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'yi CIE XYZ'ye Dönüştür
CIE XYZ
(veya CIE 1931 XYZ
birçok görüntü işleme programlarında kullanılan yaygın bir renk alanıdır. Aşağıdaki RGB dönüşüm CIE XYZ
aracılığıyla tfio.experimental.color.rgb_to_xyz
. Not tfio.experimental.color.rgb_to_xyz
kayan nokta girişi varsayar aralığında [0, 1]
nedenle ek bir ön işleme tabi:
# 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'yi YCbCr'ye Dönüştür
Son olarak, YCbCr
birçok video sistemlerinde varsayılan renk alanıdır. Dönüştürülüyor YCbCr
yoluyla yapılabilir 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'>
Ne olsa, yani daha ilginç YCbCr
ayrılabilirdi Y'
(luma), Cb
(mavi-fark kroma) ve Cr
(kırmızı-fark kroma) her bir bileşen taşıma algısal anlamlı bilgiler ile bileşenler:
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()