Я пытаюсь реализовать простейший фильтр Гаусса в Python с PIL и Numpy.Все работает нормально, но очень медленно :( Не могу понять, как ускорить. Не могли бы вы помочь?
import os, sys
import Image, ImageEnhance
import numpy as np
if (len(sys.argv) > 1):
im = Image.open(sys.argv[1])
data = np.array(im.resize((200,200)))
out_data = np.array(data)
chs = len(data[0][0])
kernel = np.array([[1.,2,1],
[2,3,2],
[1,2,1]])
ctr = 1
kernel = kernel/np.sum(kernel)
for x in xrange(data.shape[0]):
for y in xrange(data.shape[1]):
for c in xrange(chs):
acc = 0
for i in xrange(kernel.shape[0]):
for j in xrange(kernel.shape[1]):
m = x + i - ctr
n = y + j - ctr
if (m >= 0 and n >= 0 and m < data.shape[0] and n < data.shape [1]):
acc += data[m][n][c]*kernel[i][j]
out_data[x][y][c] = acc
out = Image.new(im.mode, (data.shape[0], data.shape[1]))
out = Image.fromarray(out_data)
out.show()
else:
print "no file was passed"