大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
有一张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的矩阵构造的,也就是3×2个像素点。
所以按照我们一开始的解释来说,对于样本数目我们不需要处理,也就是np.pad方法中第一个(0,0)代表是样本的数目。
对于y轴我们不需要处理,x和z轴我们填充pad个数值为0的数,这里的constant_values关键字可以没有,没有的话默认就是0,我在这里只不过是为了记录pad方法的具体参数。
我们如何去取上述4个样本的元素?
如果我们想取出第2个样本的G颜色的像素矩阵,那么就是x[1,1]如果我们想取第2个样本的RGB所有的像素矩阵:x[1].
2019-3-24更正
在上面我记录的(4,3,3,2)表示随机生成的意思要按照图片的定义来走,这里的4确实是样本数,但是通道数这里是2,因为读取一个64×64像素的RGB照片的时候,他的ndarray是(64,64,3)所以随机生成的数要大致按照图片的格式走。
上面的照片就是正确的取出一个3×3的单通道的矩阵。
这里还记录一个问题,图像的灰度图也是一个2维矩阵,只不过这里的灰度图是有一个根据RGB的换算的格式去算的,一个RGB图片的基本单元是像素,每一个像素是有RGB三个通道的值组合而成的,那么得到了RGB三个通道的矩阵后如何得到一个彩色图像的?
这里我看了下RGB转化为灰度图的格式:
Grey = 0.299*R + 0.587*G + 0.114*B
那么我假定一个像素的真实色彩是有RGB公式得到的一个值,这个值对应了五花八门的颜色的一种。假设是否成立有时间再讨论。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/170275.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...