python如何在二維圖像上進(jìn)行卷積
說明
1、對于二維矩陣,卷積時(shí)卷積核由左向右、由上向下滑動,對應(yīng)位置要求加權(quán)和。
2、一般圖片為RGB三通道,需要每個(gè)通道卷積,每個(gè)通道都是二維矩陣。灰度圖只有一個(gè)通道,直接卷起即可。
實(shí)例
defmy_conv2d(inputs:np.ndarray,kernel:np.ndarray):
#計(jì)算需要填充的行列數(shù)目,這里假定mode為“same”
#一般卷積核的hw都是奇數(shù),這里實(shí)現(xiàn)方式也是基于奇數(shù)尺寸的卷積核
h,w=inputs.shape
kernel=kernel[::-1,...][...,::-1]#卷積的定義,必須旋轉(zhuǎn)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在二維圖像上進(jìn)行卷積的方法,希望對大家有所幫助。更多Python學(xué)習(xí)教程請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。