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 Not defterini indir

genel bakış

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

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

Kurmak

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

resimleri indir

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ü pikselinden piksel piksel geçmek 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) kadar döndürür.

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

png

dönüştürmek

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'ya 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, verilen bir RGB görüntüsünün renk ölçeğini YIQ'ya değiştirir, ancak burada rastgele seçim yapmak yerine delta hue 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ü Çarpması

Bu işlem, ofset vektörünün akış alanı tarafından belirtilen herhangi bir görüntünün doğrusal olmayan çarpıtılması 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 plan pikselinden arka plan pikseline olan öklid mesafesi ile günceller.

  • Not : Yalnızca ikili görüntü alır ve dönüştürülmüş görüntüyle 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