я делаю простой гаусс размытия, и так как я не мог сделать свертку работу SciPy, я сделал свой собственный:Мой гс фильтр слишком медленно
def Convolve(matr_, ker_):
output = matr_.astype(np.float64)
for x in range(len(matr_)):
for y in range(len(matr_[x])):
sum = 0
count = 0
width = int(len(ker_)/2)
for x_c in range(len(ker_)):
for y_c in range(len(ker_)):
x_index = x - x_c + width
y_index = y - y_c + width
if (x_index >= 0) and (x_index < len(matr_)) and (y_index >= 0) and (y_index < len(matr_[x])):
sum += ker_[x_c][y_c] * matr_[x_index][y_index]
count += ker_[x_c][y_c]
else:
#print("{0} -> {1}, {2} -> {3}".format(x, x_index, y, y_index))
pass
output[x][y] = sum/count
return output.astype(matr_.dtype)
Я также нормализуют пикселей здесь, так что они будут по-прежнему всегда подходит для matr_
. Но он работает очень медленно, для работы с изображением 1440x900 требуется примерно 20 секунд. Как это можно сделать, чтобы работать быстрее?
Вы можете использовать 'scipy.ndimage.gaussian_filter': http://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.gaussian_filter.html –
@WarrenWeckesser Я хочу попробовать написать собственное. – RomaValcer