# tf.image.image_gradients

<br />

|---|
| [![](https://www.tensorflow.org/images/GitHub-Mark-32px.png) View source on GitHub](https://github.com/tensorflow/tensorflow/blob/v2.13.1/tensorflow/python/ops/image_ops_impl.py#L4595-L4666) |

Returns image gradients (dy, dx) for each color channel.

#### View aliases


**Compat aliases for migration**

See
[Migration guide](https://www.tensorflow.org/guide/migrate) for
more details.

[`tf.compat.v1.image.image_gradients`](https://www.tensorflow.org/api_docs/python/tf/image/image_gradients)

<br />

    tf.image.image_gradients(
        image
    )

Both output tensors have the same shape as the input: \[batch_size, h, w,
d\]. The gradient values are organized so that \[I(x+1, y) - I(x, y)\] is in
location (x, y). That means that dy will always have zeros in the last row,
and dx will always have zeros in the last column.

<br />

<br />

<br />

| ## Usage Example ||
|---|---|
| <br /> BATCH_SIZE = 1 IMAGE_HEIGHT = 5 IMAGE_WIDTH = 5 CHANNELS = 1 image = tf.reshape(tf.range(IMAGE_HEIGHT * IMAGE_WIDTH * CHANNELS, delta=1, dtype=tf.float32), shape=(BATCH_SIZE, IMAGE_HEIGHT, IMAGE_WIDTH, CHANNELS)) dy, dx = tf.image.image_gradients(image) print(image[0, :,:,0]) tf.Tensor( [[ 0.  1.  2.  3.  4.] [ 5.  6.  7.  8.  9.] [10. 11. 12. 13. 14.] [15. 16. 17. 18. 19.] [20. 21. 22. 23. 24.]], shape=(5, 5), dtype=float32) print(dy[0, :,:,0]) tf.Tensor( [[5. 5. 5. 5. 5.] [5. 5. 5. 5. 5.] [5. 5. 5. 5. 5.] [5. 5. 5. 5. 5.] [0. 0. 0. 0. 0.]], shape=(5, 5), dtype=float32) print(dx[0, :,:,0]) tf.Tensor( [[1. 1. 1. 1. 0.] [1. 1. 1. 1. 0.] [1. 1. 1. 1. 0.] [1. 1. 1. 1. 0.] [1. 1. 1. 1. 0.]], shape=(5, 5), dtype=float32) <br /> ||

<br />

<br />

<br />

<br />

| ## Args ||
|---|---|
| `image` | Tensor with shape \[batch_size, h, w, d\]. |

<br />

<br />

<br />

<br />

| ## Returns ||
|---|---|
| Pair of tensors (dy, dx) holding the vertical and horizontal image gradients (1-step finite difference). ||

<br />

<br />

<br />

<br />

| ## Raises ||
|---|---|
| `ValueError` | If `image` is not a 4D tensor. |

<br />