寫了一個(gè)輸入和卷積核dim=2是一樣的(都是3)的卷積函數(shù),可以試試多加一個(gè)for循環(huán)變成三維卷積
為福清等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及福清網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、福清網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
def conv3D(image, filter):
'''
三維卷積
:param image: 輸入,shape為 [h,w,c], c=3
:param filter: ?卷積核,shape為 [x,y,z], z=3
:return:
'''
h, w, c = image.shape
x, y, z = filter.shape
height_new = h - x + 1 ?# 輸出 h
width_new = w - y + 1 ?# 輸出 w
image_new = np.zeros((height_new, width_new), dtype=np.float)
for i in range(height_new):
for j in range(width_new):
r = np.sum(image[i:i+x, j:j+x, 0] * filter[:,:,0])
g = np.sum(image[i:i+y, j:j+y, 1] * filter[:,:,1])
b = np.sum(image[i:i+z, j:j+z, 2] * filter[:,:,2])
image_new[i, j] = np.sum([r,g,b])
image_new = image_new.clip(0, 255)
image_new = np.rint(image_new).astype('uint8')
return image_new
上節(jié)詳細(xì)介紹了連續(xù)可積函數(shù)的卷積運(yùn)算,本節(jié)介紹在數(shù)字圖像處理中,常用的離散卷積
對于定義在整數(shù)域里面的兩個(gè)函數(shù)f[n]和g[n],g[n]的長度為M,其卷積運(yùn)算定義為:
通過上式可以看出, 離散卷積是:平移翻轉(zhuǎn)相乘再求和 。跟連續(xù)卷積相比,把積分運(yùn)算換成了相乘再求和。
我們明白離散卷積定義就好,在實(shí)際工程實(shí)現(xiàn)中,比如Python程序開發(fā)中,我們通常直接調(diào)用 numpy.convolve(a,?v,?mode='full') 來完成離散卷積運(yùn)算。
下節(jié)將繼續(xù)介紹《 AI數(shù)學(xué)基礎(chǔ)28-數(shù)字圖像卷積1(Image convolution) 》
全部用文件IO的話可以這樣: matlab把所有參數(shù)輸出到一個(gè)文件里,然后用system命令調(diào)python腳本。python腳本讀文件做計(jì)算結(jié)果再寫文件。最后matlab再讀文件得到結(jié)果。 假設(shè)python腳本的用法是: python xxx.py in.txt out.txt 則matlab調(diào)用命令...