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 | Входное изображение или пакет изображений. Должно быть 3D или 4D. |
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