np.pad()用于卷积网络中对图片进行填充

有一张RGB的图像,我们要在这个图像的周围加上填充元素,使得这个图像不会再卷积操作后导致边缘信息丢失和图像尺寸的减小。

为此,我们需要padding操作,numpy库中对这个进行了封装numpy.pad()函数:

对一个一维数组来说:

但是我们的图像至少是二维的(灰度图),我们要在这样的格式下进行填充,就需要理解到图像在空间位置上的脑补图:

 

 

在参数传递中,我们只需要计算每一纬度的(x,z)轴的二维数组就好了,在np.pad的实参中,arr3d是原矩阵,((0,0),(1,1),(1,1))中的第一个元组是y轴,第二个元组是z轴,第三个元组是x轴。亲测确实是这样的。

 

 

同样对于一个加入了样本集的批处理padding操作的时候我们的操作也是这样子的:

这是我们定义的批处理padding函数;

我们的x和pad值是:

(4,3,3,2)代表的意思就是:我传入了4个样本,这每一个样本的构造是:3维的RGB图像中:每一维R,G,B中是有3*2的矩阵构造的,也就是3x2个像素点。

所以按照我们一开始的解释来说,对于样本数目我们不需要处理,也就是np.pad方法中第一个(0,0)代表是样本的数目。

对于y轴我们不需要处理,x和z轴我们填充pad个数值为0的数,这里的constant_values关键字可以没有,没有的话默认就是0,我在这里只不过是为了记录pad方法的具体参数。

我们如何去取上述4个样本的元素?

如果我们想取出第2个样本的G颜色的像素矩阵,那么就是x[1,1]如果我们想取第2个样本的RGB所有的像素矩阵:x[1].

x矩阵

 

 

x[1],x[1,1]矩阵

 

2019-3-24更正

在上面我记录的(4,3,3,2)表示随机生成的意思要按照图片的定义来走,这里的4确实是样本数,但是通道数这里是2,因为读取一个64x64像素的RGB照片的时候,他的ndarray是(64,64,3)所以随机生成的数要大致按照图片的格式走。 

上面的照片就是正确的取出一个3x3的单通道的矩阵。

 

这里还记录一个问题,图像的灰度图也是一个2维矩阵,只不过这里的灰度图是有一个根据RGB的换算的格式去算的,一个RGB图片的基本单元是像素,每一个像素是有RGB三个通道的值组合而成的,那么得到了RGB三个通道的矩阵后如何得到一个彩色图像的?

这里我看了下RGB转化为灰度图的格式:

Grey = 0.299*R + 0.587*G + 0.114*B

那么我假定一个像素的真实色彩是有RGB公式得到的一个值,这个值对应了五花八门的颜色的一种。假设是否成立有时间再讨论。

 

 

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值