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
我强烈建议为此使用openCV。但是原则上,您几乎可以直接使用wiki-article on kernel convolution上的“伪代码”来创建自己的函数。。。
原则上,这应该能做到(但我还没有测试过…)
我希望这对你有帮助。
你有scipy的ndimage,它允许你用convolve进行N维卷积:
我知道你说过你想避免神经病。。。但我建议你不要这样做。Scipy在很多方面都很棒。如果要在windows上安装,请尝试Anaconda Distribution,它已经安装了scipy。
Anaconda是一个多平台的python发行版,它预装了所有必要的库(包括许多科学计算库),以及安装新库的工具,如
pip
或conda
。不,他们不会付钱给我做广告,但会让你的多平台生活更轻松。相关问题 更多 >
编程相关推荐