Свертка матрицы Python без использования функций numpy.convolve или scipy

Мне нужно написать матричную свертку без использования встроенных функций. Я беру изображение и поворачиваю его в оттенки серого, а затем я должен передать матрицу фильтра над ним. Одна из фильтрующих матриц, которую я должен использовать, – это:

[[-1,0,1], [-1,0,1], [-1,0,1]] 

Я понимаю, как работают свертки, я просто не понимаю, как применять свертку с кодом. Вот код, который я использую, чтобы получить массив greyscale:

 import numpy from scipy import misc mylist = [] for i in myfile: mylist.append(i) for i in mylist: q = i print(q) image = misc.imread(q[0:-1]) threshold() image = misc.imread('image1.png') def averageArr(pixel): #make the pixel color values more realistic return 0.299*pixel[:,:,0] + 0.587*pixel[:,:,1] + 0.114*pixel[:,:,2] def threshold(): picture = averageArr(image) for i in range(0,picture.shape[0]): #begin thresholding for j in range(0,picture.shape[1]): myList.append(i,j) misc.imsave('image1.png') #save the image file 

Я беру значения из функции и добавляю их в список, а затем я должен перебирать список, но я не уверен, как это сделать. Я могу использовать scipy и numpy для чтения и компоновки матрицы, но фактическая функция свертки должна быть записана.