使用指定的 method
将 images
的大小调整为 size
。
用法
tf.image.resize(
images, size, method=ResizeMethod.BILINEAR, preserve_aspect_ratio=False,
antialias=False, name=None
)
参数
-
images
形状为[batch, height, width, channels]
的 4-D 张量或形状为[height, width, channels]
的 3-D 张量。 -
size
2 个元素的一维 int32 张量:new_height, new_width
。图像的新尺寸。 -
method
image.ResizeMethod
或等效字符串。默认为bilinear
。 -
preserve_aspect_ratio
是否保留纵横比。如果设置了此项,则images
将调整为适合size
的大小,同时保留原始图像的纵横比。如果size
大于image
的当前大小,则放大图像。默认为假。 -
antialias
对图像进行下采样时是否使用抗锯齿过滤器。 -
name
此操作的名称(可选)。
抛出
-
ValueError
如果images
的形状与此函数的形状参数不兼容 -
ValueError
如果size
的形状或类型无效。 -
ValueError
如果指定了不受支持的调整大小方法。
返回
-
如果
images
是 4-D,则形状为[batch, new_height, new_width, channels]
的 4-D 浮点张量。如果images
是 3-D,则形状为[new_height, new_width, channels]
的 3-D 浮点张量。
如果原始纵横比与 size
不同,调整大小的图像将失真。为避免失真,请参阅tf.image.resize_with_pad
。
image = tf.constant([
[1,0,0,0,0],
[0,1,0,0,0],
[0,0,1,0,0],
[0,0,0,1,0],
[0,0,0,0,1],
])
# Add "batch" and "channels" dimensions
image = image[tf.newaxis, ..., tf.newaxis]
image.shape.as_list() # [batch, height, width, channels]
[1, 5, 5, 1]
tf.image.resize(image, [3,5])[0,...,0].numpy()
array([[0.6666667, 0.3333333, 0. , 0. , 0. ],
[0. , 0. , 1. , 0. , 0. ],
[0. , 0. , 0. , 0.3333335, 0.6666665]],
dtype=float32)
它同样适用于单个图像而不是一批图像:
tf.image.resize(image[0], [3,5]).shape.as_list()
[3, 5, 1]
当antialias
为真时,采样滤波器将对输入图像进行抗锯齿以及插值。当使用抗锯齿对图像进行下采样时,采样滤波器内核被缩放,以便正确地对输入图像信号进行抗锯齿处理。 antialias
对图像进行上采样时无效:
a = tf.image.resize(image, [5,10])
b = tf.image.resize(image, [5,10], antialias=True)
tf.reduce_max(abs(a - b)).numpy()
0.0
method
参数需要来自 image.ResizeMethod
枚举或等效字符串的项目。选项包括:
bilinear
:双线性插值。如果antialias
为真,在下采样时成为半径为 1 的帽子/帐篷过滤器函数。lanczos3
:半径为 3 的 Lanczos 内核。高质量的实用滤波器,但可能有一些振铃,尤其是在合成图像上。lanczos5
:Lanczos 内核,半径为 5。Very-high-quality 过滤器,但可能有更强的振铃。bicubic
:键的三次插值。等效于Catmull-Rom 内核。质量相当好,比 Lanczos3Kernel 更快,尤其是在上采样时。gaussian
:半径为 3 的高斯核,sigma = 1.5 /3.0。nearest
:最近邻插值。antialias
与最近邻插值一起使用时无效。area
:使用区域插值进行抗锯齿重采样。antialias
与区域插值一起使用时无效;它总是抗锯齿。mitchellcubic
:Mitchell-Netravali 三次非插值滤波器。对于合成图像(尤其是那些缺乏适当预过滤的图像),振铃比 Keys 三次核少,但不那么锐利。
注意:在图像边附近,过滤内核可能部分位于图像边界之外。对于这些像素,只有图像内部的输入像素会被包含在滤波器总和中,并且输出值会被适当地归一化。
返回值的类型为 float32
,除非 method
是 ResizeMethod.NEAREST_NEIGHBOR
,否则返回 dtype 是 images
的dtype:
nn = tf.image.resize(image, [5,7], method='nearest')
nn[0,...,0].numpy()
array([[1, 0, 0, 0, 0, 0, 0],
[0, 1, 1, 0, 0, 0, 0],
[0, 0, 0, 1, 0, 0, 0],
[0, 0, 0, 0, 1, 1, 0],
[0, 0, 0, 0, 0, 0, 1]], dtype=int32)
使用 preserve_aspect_ratio=True
可以保留纵横比,因此 size
是每个维度的最大值:
max_10_20 = tf.image.resize(image, [10,20], preserve_aspect_ratio=True)
max_10_20.shape.as_list()
[1, 10, 10, 1]
相关用法
- Python tf.image.resize_with_crop_or_pad用法及代码示例
- Python tf.image.random_brightness用法及代码示例
- Python tf.image.random_contrast用法及代码示例
- Python tf.image.rot90用法及代码示例
- Python tf.image.random_hue用法及代码示例
- Python tf.image.random_saturation用法及代码示例
- Python tf.image.rgb_to_yiq用法及代码示例
- Python tf.image.random_jpeg_quality用法及代码示例
- Python tf.image.random_flip_up_down用法及代码示例
- Python tf.image.random_crop用法及代码示例
- Python tf.image.random_flip_left_right用法及代码示例
- Python tf.image.rgb_to_hsv用法及代码示例
- Python tf.image.rgb_to_grayscale用法及代码示例
- Python tf.image.pad_to_bounding_box用法及代码示例
- Python tf.image.adjust_hue用法及代码示例
- Python tf.image.flip_left_right用法及代码示例
- Python tf.image.convert_image_dtype用法及代码示例
- Python tf.image.stateless_random_flip_up_down用法及代码示例
- Python tf.image.extract_glimpse用法及代码示例
- Python tf.image.flip_up_down用法及代码示例
注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.image.resize。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。