Equalization 层

[源代码]

Equalization

keras.layers.Equalization(value_range=(0, 255), bins=256, data_format=None, **kwargs)

用于对图像通道进行直方图均衡化的预处理层。

直方图均衡化是一种通过有效扩展最常见强度值来调整图像强度以增强对比度的技术。此层按通道对均衡化进行应用,这可以提高图像细节的可视性。

此层可用于灰度图像和彩色图像,对每个颜色通道独立执行均衡化。在推理时,均衡化将一致地应用。

注意:该层可以在 tf.datagrain 管道中使用(无论您使用的是哪个后端),且是安全的。

参数

  • value_range: 可选的 2 个浮点数列表/元组,用于指定输入数据的下限和上限。默认为 [0, 255]。如果输入图像已被缩放,请使用适当的范围(例如 [0.0, 1.0])。均衡化将缩放到此范围,并且输出值将相应地进行裁剪。
  • bins: 指定用于均衡化的直方图 bin 数的整数。默认为 256,适用于 8 位图像。较大的值可以提供更精细的强度重分布。

输入形状

3D(未批处理)或 4D(已批处理)张量,形状为:(..., height, width, channels),采用 "channels_last" 格式;或者 (..., channels, height, width),采用 "channels_first" 格式。

输出形状

3D(未批处理)或 4D(已批处理)张量,形状为:(..., target_height, target_width, channels),或者 (..., channels, target_height, target_width),采用 "channels_first" 格式。

示例

# Create an equalization layer for standard 8-bit images
equalizer = keras.layers.Equalization()

# An image with uneven intensity distribution
image = [...] # your input image

# Apply histogram equalization
equalized_image = equalizer(image)

# For images with custom value range
custom_equalizer = keras.layers.Equalization(
    value_range=[0.0, 1.0],  # for normalized images
    bins=128  # fewer bins for more subtle equalization
)
custom_equalized = custom_equalizer(normalized_image)