使用指定的 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。