详解TensorFlow的 tf.image.random_brightness 函数:随机改变图像亮度

  • Post category:Python

TensorFlow中的 tf.image.random_brightness 函数用于将图片的亮度随机调整,它可以用于数据增强等应用场景。

该函数的具体用法如下所示:

tf.image.random_brightness(image, max_delta, seed=None)

其中,参数意义如下:

  • image:待调整亮度的图片,类型为Tensor,形状为[height, width, channels]。
  • max_delta:最大的亮度变化值,类型为float,取值范围为[0,1],为0表示不进行亮度调整。
  • seed:随机种子,用于生成随机数,可选参数,用于控制每一次结果的可重复性。

该函数的返回值是一个形状和输入图片相同的Tensor类型的亮度变化后的图片。

下面来看一个简单的使用例子:

import tensorflow as tf
import matplotlib.pyplot as plt

image = tf.keras.preprocessing.image.load_img('cat.jpg')
image = tf.keras.preprocessing.image.img_to_array(image)

# 将图片类型转换为float32
image = tf.cast(image, tf.float32)

# 调整亮度
image = tf.image.random_brightness(image, max_delta=0.5)

# 显示处理后的图片
plt.imshow(tf.keras.preprocessing.image.array_to_img(image))
plt.show()

在这个例子中,我们先加载一张名为cat.jpg的图片,然后将其转换为Tensor类型,接着将图片类型转换为float32,最后使用 tf.image.random_brightness 调整亮度,并使用 matplotlib 显示处理后的图片。运行以上代码,我们可以获得一张随机调整亮度后的图片。

我们再来看一个更加具体的实例:

import tensorflow as tf
import matplotlib.pyplot as plt
from tensorflow.python.framework.ops import disable_eager_execution
disable_eager_execution()

image = tf.keras.preprocessing.image.load_img('cat.jpg')
image = tf.keras.preprocessing.image.img_to_array(image)

# 将图片类型转换为float32
image = tf.cast(image, tf.float32)

# 调整亮度
image1 = tf.image.random_brightness(image, max_delta=0.2, seed=1)
image2 = tf.image.random_brightness(image, max_delta=0.2, seed=2)

# 显示原图片及两张亮度随机调整后的图片
plt.subplot(131)
plt.imshow(tf.keras.preprocessing.image.array_to_img(image))
plt.subplot(132)
plt.imshow(tf.keras.preprocessing.image.array_to_img(image1))
plt.subplot(133)
plt.imshow(tf.keras.preprocessing.image.array_to_img(image2))
plt.show()

在这个例子中,我们同样加载一张名为cat.jpg的图片,并将其转换为Tensor类型,接着将图片类型转换为float32。然后我们使用seed参数生成两张亮度随机调整的图片,并使用 matplotlib 显示原图片和两张调整后的图片。由于调整亮度的种子不同,所以生成的两张调整后的图片也不同。