说明
1、对于二维矩阵,卷积时卷积核由左向右、由上向下滑动,对应位置要求加权和。
2、一般图片为RGB三通道,需要每个通道卷积,每个通道都是二维矩阵。灰度图只有一个通道,直接卷起即可。
实例
defmy_conv2d(inputs:np.ndarray,kernel:np.ndarray): #计算需要填充的行列数目,这里假定mode为“same” #一般卷积核的hw都是奇数,这里实现方式也是基于奇数尺寸的卷积核 h,w=inputs.shape kernel=kernel[::-1,...][...,::-1]#卷积的定义,必须旋转180度 h1,w1=kernel.shape h_pad=(h1-1)//2 w_pad=(w1-1)//2 inputs=np.pad(inputs,pad_width=[(h_pad,h_pad),(w_pad,w_pad)],mode="constant",constant_values=0) outputs=np.zeros(shape=(h,w)) foriinrange(h):#行号 forjinrange(w):#列号 outputs[i,j]=np.sum(np.multiply(inputs[i:i+h1,j:j+w1],kernel)) returnoutputs
以上就是python在二维图像上进行卷积的方法,希望对大家有所帮助。更多Python学习指路:Python基础教程