Google I / O'daki önemli notları, ürün oturumlarını, atölyeleri ve daha fazlasını izleyin Oynatma listesine bakın

TensorFlow Eklentileri Resmi: İşlemler

TensorFlow.org'da görüntüleyin Google Colab'da çalıştırın Kaynağı GitHub'da görüntüleyin Defteri indirin

Genel Bakış

Bu defter, TensorFlow Eklentilerindeki bazı görüntü işlemlerinin nasıl kullanılacağını gösterecektir.

İşte bu örnekte ele alacağınız görüntü işlemlerinin listesi:

Kurulum

pip install -q -U tensorflow-addons
import tensorflow as tf
import numpy as np
import tensorflow_addons as tfa
import matplotlib.pyplot as plt

Görüntüleri Hazırlayın ve İnceleyin

Görüntüleri indirin

img_path = tf.keras.utils.get_file('tensorflow.png','https://tensorflow.org/images/tf_logo.png')
Downloading data from https://tensorflow.org/images/tf_logo.png
40960/39781 [==============================] - 0s 3us/step

Görüntüleri inceleyin

TensorFlow Simgesi

img_raw = tf.io.read_file(img_path)
img = tf.io.decode_image(img_raw)
img = tf.image.convert_image_dtype(img, tf.float32)
img = tf.image.resize(img, [500,500])

plt.title("TensorFlow Logo with shape {}".format(img.shape))
_ = plt.imshow(img)

png

Siyah beyaz bir versiyon yapın

bw_img = 1.0 - tf.image.rgb_to_grayscale(img)

plt.title("Mask image with shape {}".format(bw_img.shape))
_ = plt.imshow(bw_img[...,0], cmap='gray')

png

Tfa.image ile oynayın

Ortalama filtreleme

Ortalama filtreleme, genellikle bir görüntü veya sinyalden gürültüyü gidermek için kullanılan bir filtreleme tekniğidir. Buradaki fikir, görüntüyü piksel piksel ilerletmek ve onu komşu piksellerin ortalama değerleriyle değiştirmektir.

mean = tfa.image.mean_filter2d(img, filter_shape=11)
_ = plt.imshow(mean)

png

Döndür

Bu işlem, verilen görüntüyü kullanıcı tarafından girilen açı (radyan cinsinden) ile döndürür.

rotate = tfa.image.rotate(img, tf.constant(np.pi/8))
_ = plt.imshow(rotate)

png

Dönüştürme

Bu işlem, verilen görüntüyü kullanıcı tarafından verilen dönüştürme vektörü temelinde dönüştürür.

transform = tfa.image.transform(img, [1.0, 1.0, -250, 0.0, 1.0, 0.0, 0.0, 0.0])
_ = plt.imshow(transform)

png

YIQ'da rastgele HSV

Bu işlem, belirli bir RGB görüntüsünün renk ölçeğini YIQ olarak değiştirir, ancak burada delta tonu ve doygunluk değerleri verilen aralıktan rastgele seçilir.

delta = 0.5
lower_saturation = 0.1
upper_saturation = 0.9
lower_value = 0.2
upper_value = 0.8
rand_hsvinyiq = tfa.image.random_hsv_in_yiq(img, delta, lower_saturation, upper_saturation, lower_value, upper_value)
_ = plt.imshow(rand_hsvinyiq)

png

YIQ'da HSV'yi ayarlayın

Bu işlem, belirli bir RGB görüntüsünün renk ölçeğini YIQ olarak değiştirir, ancak burada rastgele seçmek yerine delta tonu ve doygunluk değerleri kullanıcıdan girdilerdir.

delta = 0.5
saturation = 0.3
value = 0.6
adj_hsvinyiq = tfa.image.adjust_hsv_in_yiq(img, delta, saturation, value)
_ = plt.imshow(adj_hsvinyiq)

png

Yoğun Görüntü Bükülme

Bu işlem, ofset vektörünün akış alanı tarafından belirtilen herhangi bir görüntünün doğrusal olmayan çarpıtması içindir (burada örneğin rastgele değerler kullanılmıştır).

input_img = tf.image.convert_image_dtype(tf.expand_dims(img, 0), tf.dtypes.float32)

flow_shape = [1, input_img.shape[1], input_img.shape[2], 2]
init_flows = np.float32(np.random.normal(size=flow_shape) * 2.0)
dense_img_warp = tfa.image.dense_image_warp(input_img, init_flows)
dense_img_warp = tf.squeeze(dense_img_warp, 0)
_ = plt.imshow(dense_img_warp)

png

Öklid Uzaklık Dönüşümü

Bu işlem, piksel değerini ön plandaki pikselden arkaplan olana olan öklid mesafesi ile günceller.

  • Not: Yalnızca ikili görüntü alır ve dönüştürülmüş görüntü ile sonuçlanır. Farklı bir görüntü verilirse, tek değerli bir görüntü ile sonuçlanır
gray = tf.image.convert_image_dtype(bw_img,tf.uint8)
# The op expects a batch of images, so add a batch dimension
gray = tf.expand_dims(gray, 0)
eucid = tfa.image.euclidean_dist_transform(gray)
eucid = tf.squeeze(eucid, (0, -1))
_ = plt.imshow(eucid, cmap='gray')

png