2017-04-12 73 views

回答

1

爲了這個目的,我強烈推薦使用openCV。但是原則上,你幾乎可以直接使用「僞代碼」的wiki-article on kernel convolution創建自己的功能...

ks = (kl-1)/2 ## kernels usually square with odd number of rows/columns 
kl = len(kernel) 
imx = len(matrix) 
imy = len(matrix[0]) 
for i in range(imx): 
    for j in range(imy): 
    acc = 0 
    for ki in range(kl): ##kernel is the matrix to be used 
     for kj in range(kl): 
     if 0 <= i-ks <= kl: ## make sure you don't get out of bound error 
      acc = acc + (matrix[i-ks+ki][j-ks+kj] * kernel[ki][kj]) 
    matrix[i][j] = acc 

此原則上應做的伎倆(但我還沒有測試它... )

我希望這是有幫助的。

1

你SciPy的的ndimage它允許你用convolve進行N維卷積:

from scipy.ndimage import convolve 
convolve(data, kernel) 

我知道你說你想避免SciPy的......但我會建議反對。 Scipy在很多方面都很棒。如果你想在Windows上安裝它,請嘗試Anaconda Distribution,它已安裝scipy。

Anaconda是一個多平臺的python發行版,其中包含預裝的所有基本庫(包括大量科學計算庫)以及諸如pipconda之類的工具來安裝新的庫。不,他們不付錢給我做廣告:/但讓你的多平臺生活更容易。

+0

感謝您的建議,但SciPy方法不太可行,因爲我開發的是被其他人使用,所以我更喜歡簡單的方法來安裝任何先決條件,'pip install [package]'是一個衆所周知的方法,需要人們使用是合理的,但安裝Anaconda Distribution之類的東西是另一種球類遊戲。 – EquipDev

+0

@EquipDev Scipy被認爲是Python核心包之一。也許python不是你的語言。在沒有scipy/numpy的情況下使用python進行數據分析就像使用沒有工具箱的matlab。 –