我正在尝试为一个二进制矩阵创建一个过滤器,对于每个像素,如果附近两个元素中至少有一个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
。
例如:
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
,因为在垂直顶部,接下来的2点中没有1
。
我正在尝试通过以下内核使用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四次,但是我正在寻找一种优化方法。
有什么建议吗?