计算 img1 和 img2 之间的 SSIM 索引。
用法
tf.image.ssim(
img1, img2, max_val, filter_size=11, filter_sigma=1.5, k1=0.01, k2=0.03
)
参数
-
img1
第一个图像批次。形状为[batch, height, width, channels]
的 4-D 张量,只有正像素值。 -
img2
第二批图像。形状为[batch, height, width, channels]
的 4-D 张量,只有正像素值。 -
max_val
图像的动态范围(即最大值和最小值之间的差异)。 -
filter_size
默认值 11(高斯滤波器的大小)。 -
filter_sigma
默认值 1.5(高斯滤波器的宽度)。 -
k1
默认值 0.01 -
k2
默认值 0.03(对于较低的值,SSIM 对 K2 的敏感性较低,因此如果我们取 0 < K2 < 0.4 范围内的值会更好)。
返回
- 包含批量每个图像的 SSIM 值的张量。返回的 SSIM 值在 (-1, 1] 范围内,当像素值为非负时。返回一个形状为:broadcast(img1.shape[:-3], img2.shape[:-3]) 的张量。
此函数基于以下标准 SSIM 实现:Wang, Z.、Bovik, A. C.、Sheikh, H. R. 和 Simoncelli, E. P. (2004)。图像质量评估:从错误可见性到结构相似性。 IEEE 图像处理交易。
注意:真正的 SSIM 仅在灰度上定义。此函数不执行任何色彩空间变换。 (如果输入已经是 YUV,那么它将计算 YUV SSIM 平均值。)
细节:
- 使用宽度为 1.5 的 11x11 高斯滤波器。
- k1 = 0.01,k2 = 0.03,如原始论文中所述。
由于过滤器大小,图像大小必须至少为 11x11。
例子:
# Read images (of size 255 x 255) from file.
im1 = tf.image.decode_image(tf.io.read_file('path/to/im1.png'))
im2 = tf.image.decode_image(tf.io.read_file('path/to/im2.png'))
tf.shape(im1) # `img1.png` has 3 channels; shape is `(255, 255, 3)`
tf.shape(im2) # `img2.png` has 3 channels; shape is `(255, 255, 3)`
# Add an outer batch for each image.
im1 = tf.expand_dims(im1, axis=0)
im2 = tf.expand_dims(im2, axis=0)
# Compute SSIM over tf.uint8 Tensors.
ssim1 = tf.image.ssim(im1, im2, max_val=255, filter_size=11,
filter_sigma=1.5, k1=0.01, k2=0.03)
# Compute SSIM over tf.float32 Tensors.
im1 = tf.image.convert_image_dtype(im1, tf.float32)
im2 = tf.image.convert_image_dtype(im2, tf.float32)
ssim2 = tf.image.ssim(im1, im2, max_val=1.0, filter_size=11,
filter_sigma=1.5, k1=0.01, k2=0.03)
# ssim1 and ssim2 both have type tf.float32 and are almost equal.
相关用法
- Python tf.image.stateless_random_flip_up_down用法及代码示例
- Python tf.image.stateless_random_jpeg_quality用法及代码示例
- Python tf.image.stateless_random_hue用法及代码示例
- Python tf.image.stateless_random_crop用法及代码示例
- Python tf.image.stateless_random_contrast用法及代码示例
- Python tf.image.stateless_random_saturation用法及代码示例
- Python tf.image.sobel_edges用法及代码示例
- Python tf.image.stateless_random_flip_left_right用法及代码示例
- Python tf.image.sample_distorted_bounding_box用法及代码示例
- Python tf.image.stateless_random_brightness用法及代码示例
- Python tf.image.stateless_sample_distorted_bounding_box用法及代码示例
- Python tf.image.random_brightness用法及代码示例
- Python tf.image.pad_to_bounding_box用法及代码示例
- Python tf.image.adjust_hue用法及代码示例
- Python tf.image.random_contrast用法及代码示例
- Python tf.image.rot90用法及代码示例
- Python tf.image.random_hue用法及代码示例
- Python tf.image.flip_left_right用法及代码示例
- Python tf.image.convert_image_dtype用法及代码示例
- Python tf.image.random_saturation用法及代码示例
注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.image.ssim。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。