tf.keras.ops.image.affine_transform
Применяет заданное преобразование (преобразования) к изображению (изображениям).
tf.keras.ops.image.affine_transform(
image,
transform,
interpolation='bilinear',
fill_mode='constant',
fill_value=0,
data_format='channels_last'
)
| Аргументы | |
|---|---|
image | Входное изображение или пакет изображений. Должно быть трёхмерным или четырёхмерным. |
transform | Матрица (матрицы) проективного преобразования. Вектор длины 8 или тензор размера N x 8. Если одна строка преобразования равна [a0, a1, a2, b0, b1, b2, c0, c1], то она отображает выходную точку (x, y) в преобразованную входную точку (x', y') = ((a0 x + a1 y + a2) / k, (b0 x + b1 y + b2) / k), где k = c0 x + c1 y + 1. Это преобразование является обратным по отношению к преобразованию, отображающему входные точки в выходные. Обратите внимание, что градиенты не распространяются обратно в параметры преобразования. Обратите внимание, что c0 и c1 действуют только при использовании бэкенда TensorFlow; при использовании других бэкендов они будут считаться 0. |
interpolation | Метод интерполяции. Доступны методы "nearest" и "bilinear". По умолчанию используется "bilinear". |
fill_mode | Точки за пределами входных данных заполняются в соответствии с заданным режимом. Доступны методы "constant", "nearest", "wrap" и "reflect". По умолчанию используется "constant".
|
fill_value | Значение для точек за пределами входных данных, если fill_mode="constant". По умолчанию используется 0. |
data_format | Строка: "channels_last" или "channels_first". Порядок измерений во входных данных. "channels_last" соответствует входным данным с формой (batch, height, width, channels), а "channels_first" — входным данным с формой (batch, channels, height, weight). По умолчанию используется значение image_data_format из файла конфигурации Keras по пути ~/.keras/keras.json. Если вы его не задавали, будет использоваться "channels_last". |
| Возвращает | |
|---|---|
| Изображение или пакет изображений с применённым аффинным преобразованием. |
Примеры:
x = np.random.random((2, 64, 80, 3)) # batch of 2 RGB images
transform = np.array(
[
[1.5, 0, -20, 0, 1.5, -16, 0, 0], # zoom
[1, 0, -20, 0, 1, -16, 0, 0], # translation
]
)
y = keras.ops.image.affine_transform(x, transform)
y.shape
(2, 64, 80, 3)x = np.random.random((64, 80, 3)) # single RGB image transform = np.array([1.0, 0.5, -20, 0.5, 1.0, -16, 0, 0]) # shear y = keras.ops.image.affine_transform(x, transform) y.shape (64, 80, 3)
x = np.random.random((2, 3, 64, 80)) # batch of 2 RGB images
transform = np.array(
[
[1.5, 0, -20, 0, 1.5, -16, 0, 0], # zoom
[1, 0, -20, 0, 1, -16, 0, 0], # translation
]
)
y = keras.ops.image.affine_transform(x, transform,
data_format="channels_first")
y.shape
(2, 3, 64, 80)
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/keras/ops/image/affine_transform