TensorFlow函数:tf.image.crop_and_resize
2018-05-23 11:53 更新
tf.image.crop_and_resize函数
tf.image.crop_and_resize(
image,
boxes,
box_ind,
crop_size,
method='bilinear',
extrapolation_value=0,
name=None
)
请参阅指南:图像操作>裁剪
从输入图像张量中提取crop(裁剪),并双线调整它们的大小(可能高宽比变化)到由crop_size指定的通用输出大小.这比从输入图像中提取固定大小切片并且不允许调整大小或宽高比变化的crop_to_bounding_box操作更普遍.
从输入image中返回一个crops张量,位于boxes的边界框位置处定义的位置处.裁剪后的框都是调整大小(双线性插值)为固定size = [crop_height, crop_width].结果是一个四维张量[num_boxes, crop_height, crop_width, depth].调整大小是角对齐.特别是,如果boxes = [[0, 0, 1, 1]],该方法将为使用 tf.image.resize_bilinear () 与 align_corners = True 提供相同的结果.
参数:
- image:一个Tensor,必须是下列类型之一:uint8,uint16,int8,int16,int32,int64,half,float32,float64,一个形状为[batch, image_height, image_width, depth]的四维张量,image_height和image_width需要为正值.
- boxes:一个类型为float32的Tensor,是形状为[num_boxes, 4]的二维张量.张量的第i行指定box_ind[i]图像中框的坐标,并且在标准化坐标中指定[y1, x1, y2, x2];标准化的坐标值y被映射到图像坐标y * (image_height - 1)处,从而标准化图像高度的[0, 1]间隔被映射到[0, image_height - 1]的图像高度坐标中.我们允许y1> y2,在这种情况下,采样的裁剪是原始图像的上下翻转版本.宽度维度的处理方式类似.[0, 1]范围之外的标准化坐标是允许的,在这种情况下,我们使用extrapolation_value外推输入图像值.
- box_ind:一个int32类型的Tensor;形状为[num_boxes]的1维张量,在[0, batch)中具有int32值.该box_ind[i]值指定第i个方框要引用的图像.
- crop_size:一个int32类型的Tensor;一个2个元素的一维张量,size = [crop_height, crop_width].所有裁剪的图像修补程序都调整为此大小.图像内容的宽高比不被保留;crop_height和crop_width需要为正值.
- method:可选的string,其来自:"bilinear";默认为"bilinear";指定插值方法的字符串.现在只支持“双线性(bilinear)”.
- extrapolation_value:可选的float,默认为0,用于推断的值(如果适用).
- name:操作的名称(可选).
返回值:
tf.image.crop_and_resize函数返回一个类型为float32的Tensor.