您当前的位置: 首页 >  tensorflow

Better Bench

暂无认证

  • 2浏览

    0关注

    695博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Tensorflow】图解tf.image.extract_patches的用法--提取图片特定区域

Better Bench 发布时间:2021-06-08 11:36:08 ,浏览量:2

目录
  • 1 引言
  • 2 图解
    • 2.1 Demo1
    • 2.2 Demo2

1 引言

(1)作用 提取图片中的一小块区域,也可以用于分割图片为多个子图片。类似卷积核提取特征,但不一样 (2)用法

tf.image.extract_patches(
    images,
    sizes,
    strides,
    rates,
    padding,
    name=None
)

参数:

  • images:图像矩阵,形状必须是[batch, in_rows, in_cols, depth]
  • sizes:patche大小,形状必须是:[1, size_rows, size_cols, 1]
  • strides:patche移动步长,形状必须是[1, stride_rows, stride_cols, 1]
  • rates:有些复杂,形状必须是[1, rate_rows, rate_cols, 1],表示隔几个像素点,取一个像素点,直到满足 sizes 。
  • padding:“VALID”或者“SAME”:
  • “VALID”:表示所取的patch区域必须完全包含在原始图像中.
  • "SAME"表示可以取超出原始图像的部分,这一部分进行0填充。
  • 返回值:返回4维tensor,数据类型与输入的 images 类型相同
2 图解 2.1 Demo1
# 生成一张10*10 的图片矩阵,数值范围是1-100
arr=tf.reshape(tf.range(1,101),[10,10])
print(arr.numpy())
print("-"*50)
arr=tf.reshape(arr,[1,10,10,1])
# 提取指定区域
res=tf.image.extract_patches(
				images=arr, 
				sizes=[1, 3, 3, 1], 
				strides=[1, 5, 5, 1], 
				rates=[1, 1, 1, 1], 
				padding='VALID')
print(res.numpy())

解析

  • sizes=[1, 3, 3, 1]:patche大小是3x3,表示要提取的区域是33 的矩阵,在图中对应红色33的方框
  • strides=[1, 5, 5, 1]:patche移动步长5x5。先是水平移动5个,水平移动到终点后,在垂直移动5个。在图中对应左方框水平移动了5步。垂直向下移动了5步
  • rates=[1, 1, 1, 1]:表示在红色方框中提取的步长是1 ,说白了就是每个元素都要提取。该参数决定了红色方框的大小。

在这里插入图片描述

2.2 Demo2
# 生成10*10的图片矩阵,数值范围是1-100
arr=tf.reshape(tf.range(1,101),[10,10])
print(arr.numpy())
print("-"*50)
arr=tf.reshape(arr,[1,10,10,1])
# 提取指定区域
res=tf.image.extract_patches(
					images=arr, 
					sizes=[1, 3, 3, 1], 
					strides=[1, 5, 5, 1], 
					rates=[1, 2, 2, 1], 
					padding='VALID')
print(res.numpy())

在这里插入图片描述 解析

  • sizes=[1, 3, 3, 1]:patch大小是3x3,表示要提取的区域是3*3 的矩阵
  • strides=[1, 5, 5, 1]:patche移动步长5x5。先是水平移动5个,水平移动到终点后,在垂直移动5个
  • rates=[1, 2, 2, 1]:表示patche中的每个元素间隔1个提取1个,也就是说sizes变成5。
关注
打赏
1665674626
查看更多评论
立即登录/注册

微信扫码登录

0.0382s