Функция image.central_crop
Функция central_crop выполняет центральную обрезку
изображения или батча изображений. Первым параметром
функция принимает тензор изображения, вторым - долю
центральной части, которую нужно оставить. Обрезка
происходит симметрично относительно центра изображения
по высоте и ширине.
Синтаксис
tf.image.central_crop(image, central_fraction)
Пример
Давайте создадим двумерный тензор и обрежем
его центральную часть размером 0.5 от исходного размера:
import tensorflow as tf
t = tf.constant([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]])
res = tf.image.central_crop(t, 0.5)
print(res)
Результат выполнения кода:
tf.Tensor(
[[ 6 7]
[10 11]], shape=(2, 2), dtype=int32)
Пример
Давайте создадим трехмерный тензор, имитирующий изображение с тремя каналами, и обрежем его центральную часть:
import tensorflow as tf
t = tf.constant([
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]],
[[13, 14, 15], [16, 17, 18], [19, 20, 21], [22, 23, 24]],
[[25, 26, 27], [28, 29, 30], [31, 32, 33], [34, 35, 36]],
[[37, 38, 39], [40, 41, 42], [43, 44, 45], [46, 47, 48]]
])
res = tf.image.central_crop(t, 0.5)
print(res)
Результат выполнения кода:
tf.Tensor(
[[[16 17 18]
[19 20 21]]
[[28 29 30]
[31 32 33]]], shape=(2, 2, 3), dtype=int32)
Пример
Давайте создадим батч из двух изображений и обрежем центральную часть каждого из них:
import tensorflow as tf
t = tf.constant([
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]],
[[17, 18, 19, 20], [21, 22, 23, 24], [25, 26, 27, 28], [29, 30, 31, 32]]
])
res = tf.image.central_crop(t, 0.5)
print(res)
Результат выполнения кода:
tf.Tensor(
[[[ 6 7]
[10 11]]
[[22 23]
[26 27]]], shape=(2, 2, 2), dtype=int32)
Смотрите также
-
функцию
crop_to_bounding_box,
которая обрезает изображение по заданным границам -
функцию
resize_with_crop_or_pad,
которая изменяет размер изображения с обрезкой или дополнением -
функцию
pad_to_bounding_box,
которая дополняет изображение до заданных границ -
слой
CenterCrop,
который выполняет центральную обрезку на уровне слоя