tf.image.per_image_standardization

Linearly scales each image in image to have mean 0 and variance 1.

Used in the notebooks

Used in the tutorials

For each 3-D image x in image, computes (x - mean) / adjusted_stddev, where

  • mean is the average of all values in x
  • adjusted_stddev = max(stddev, 1.0/sqrt(N)) is capped away from 0 to protect against division by 0 when handling uniform images
    • N is the number of elements in x
    • stddev is the standard deviation of all values in x

Example Usage:

image = tf.constant(np.arange(1, 13, dtype=np.int32), shape=[2, 2, 3]) image # 3-D tensor <tf.Tensor: shape=(2, 2, 3), dtype=int32, numpy= array([[[ 1, 2, 3],  [ 4, 5, 6]],  [[ 7, 8, 9],  [10, 11, 12]]], dtype=int32)> new_image = tf.image.per_image_standardization(image) new_image # 3-D tensor with mean ~= 0 and variance ~= 1 <tf.Tensor: shape=(2, 2, 3), dtype=float32, numpy= array([[[-1.593255 , -1.3035723 , -1.0138896 ],  [-0.7242068 , -0.4345241 , -0.14484136]],  [[ 0.14484136, 0.4345241 , 0.7242068 ],  [ 1.0138896 , 1.3035723 , 1.593255 ]]], dtype=float32)>

image An n-D Tensor with at least 3 dimensions, the last 3 of which are the dimensions of each image.

A Tensor with the same shape as image and its dtype is float32.

ValueError The shape of image has fewer than 3 dimensions.