В последнее время я занимался обработкой изображений и выбрал Python в качестве языка реализации.
Проблема
У меня есть два набора матриц, одна из которых является моей матрицей данных (которая содержит пиксельные значения изображения), а другая - матрицей ядра.Мое требование состоит в том, чтобы выполнить каждый элемент матрицы данных (исключая ребра) и вычислить определенное значение (используя матрицу ядра) и заменить исходное значение в матрице данных на вычисленное значение.
Объяснение
Я должен заменить каждый элемент суммой всех соседей, умноженной на элемент в матрице ядра.т. е. d[i][j] = d[i-1][j-1] * k[0][0] + d[i][j-1] * k[0][1]....+ d[i+1][j+1] * k[1][1]
, учитывая, что k является матрицей 3 x 3.
Мой фрагмент кода
data = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]
kernelMat = [[0, 1, 0], [1, -4, 1], [0, 1, 0]]
rowCount = len(data)
colCount = len(data[0])
for i in range(1, rowCount-1):
for j in range(1, colCount-1):
sum = 0
for x in range(0, 3):
for y in range(0, 3):
sum = sum + data[i+x-1][j+y-1] * kernelMat[x][y]
data[i][j] = sum
Expected output: [[1, 2, 3, 4],
[5, 0, 0, 8],
[9, 0, 0, 12],
[13, 14, 15, 16]] but returning different set of values.
Где я ошибаюсь? Я новичок в программированииизвините, если вопрос глупый.