Функция extract_glimpse
Функция extract_glimpse извлекает один или несколько прямоугольных фрагментов из входного тензора изображения. Первым параметром передается тензор изображения формы [batch, height, width, channels]. Вторым параметром передается тензор смещений формы [batch, num_glimpses, 2], где последняя размерность задает координаты x и y. Третьим параметром передается размер извлекаемого фрагмента [glimpse_height, glimpse_width]. Параметр centered определяет, интерпретируются ли смещения как центр фрагмента. Параметр normalized указывает, заданы ли координаты в нормализованном диапазоне от -1 до 1. Параметр uniform_noise управляет добавлением равномерного шума при выборке.
Синтаксис
tf.image.extract_glimpse(
input,
size,
offsets,
centered=True,
normalized=True,
uniform_noise=True,
name=None
)
Пример
Давайте извлечем фрагмент размером 2 на 2 из изображения, задав смещение в нормализованных координатах:
import tensorflow as tf
image = tf.constant([[[[1], [2], [3]],
[[4], [5], [6]],
[[7], [8], [9]]]], dtype=tf.float32)
offsets = tf.constant([[[0.0, 0.0]]], dtype=tf.float32)
res = tf.image.extract_glimpse(image, [2, 2], offsets)
print(res)
Результат выполнения кода:
tf.Tensor(
[[[[1.]
[2.]]
[[4.]
[5.]]]], shape=(1, 2, 2, 1), dtype=float32)
Пример
Давайте извлечем фрагмент с координатами, заданными в пикселях, отключив нормализацию:
import tensorflow as tf
image = tf.constant([[[[1], [2], [3]],
[[4], [5], [6]],
[[7], [8], [9]]]], dtype=tf.float32)
offsets = tf.constant([[[1.0, 1.0]]], dtype=tf.float32)
res = tf.image.extract_glimpse(
image, [2, 2], offsets, normalized=False
)
print(res)
Результат выполнения кода:
tf.Tensor(
[[[[1.]
[2.]]
[[4.]
[5.]]]], shape=(1, 2, 2, 1), dtype=float32)
Пример
Давайте извлечем два фрагмента из одного изображения:
import tensorflow as tf
image = tf.constant([[[[1], [2], [3]],
[[4], [5], [6]],
[[7], [8], [9]]]], dtype=tf.float32)
offsets = tf.constant([[[0.0, 0.0], [0.5, 0.5]]], dtype=tf.float32)
res = tf.image.extract_glimpse(image, [2, 2], offsets)
print(res)
Результат выполнения кода:
tf.Tensor(
[[[[1.]
[2.]]
[[4.]
[5.]]]
[[[2.]
[3.]]
[[5.]
[6.]]]], shape=(1, 2, 2, 2), dtype=float32)
Смотрите также
-
функцию
crop_to_bounding_box,
которая обрезает изображение до заданных границ -
функцию
central_crop,
которая вырезает центральную часть изображения -
функцию
resize,
которая изменяет размер изображения -
функцию
pad_to_bounding_box,
которая дополняет изображение до заданных границ