2D свертка путем разрушения маски

Есть ли способ выполнить свертку двух матриц (изображение и маску), разбив маску на 2 меньших порции и объединив результат двух сверток, чтобы получить исходный результат свертки одной маски?

2

Решение

Да, из-за линейности свертки, вы можете разбить вещи как:

I * M = I * (M1 + M2) = I * M1 + I * M2

где M — исходная маска, а M1 и M2 — два меньших фрагмента.

Например, М может быть

M = [ 1 1 2
2 1 3
2 1 8 ]

а также

M1 = [ 0 0 0
0 1 3
0 1 8 ]

M2 = [ 1 1 2
2 0 0
2 0 0 ]

Просто будьте осторожны, что если вы сделаете это, и вы хотите представить M1 как меньший,

M1 = [ 1 3
1 8 ]

что вы должны выровнять их должным образом, прежде чем добавлять их обратно вместе.

1

Другие решения

Других решений пока нет …