Я пытаюсь создать фильтр для двоичной матрицы, где для каждого пикселя будет 1
, если есть хотя бы одно значение 1
в около двух элементов во всех направлениях : по горизонтали влево, по горизонтали вправо, по вертикали сверху и по вертикали снизу .
например:
\/
0 0 0 0 0
0 0 1 0 0
> 0 1 x 1 0 <
0 0 0 0 0
0 0 1 0 0
/\
x станет 1
, потому что в горизонтальном левом, горизонтальном правом, вертикальном верхнем и вертикальном нижнем значениях 1
для следующих 2 вокруг этой точки.
например:
0 0 0 0 0
0 0 0 0 0
0 1 x 1 0
0 0 0 0 0
0 0 1 0 0
x станет 0
, потому что для вертикали вершины нет 1
в следующих 2 точках.
Я пытаюсь использовать scipy.signal.convolve2d
, используя это ядро:
0 0 1 0 0
0 0 1 0 0
1 1 0 1 1
0 0 1 0 0
0 0 1 0 0
но это не имеет смысла, потому что если результат> = 4 не нужен, есть точки 1
в каждом направлении.
Я на самом деле использую convolve2d четыре раза, но я ищу оптимизацию.
Есть предложения?