方阵遍历将具有相同值的相邻像元分组

时间:2018-06-28 16:04:30

标签: python algorithm matrix traversal pseudocode

给出如下示例方阵(0,1):

os.remove(os.path.join(filepath, file))

期望输出将是具有等于1的值的单元格的组数。上述矩阵的输出为:

0 1 1 0 0 0
0 0 1 0 0 1
0 0 0 1 0 1
1 0 0 0 0 1
0 1 0 0 0 1
1 0 0 1 0 0

我当前的算法如下:

Group #1: (0,1), (0,2), (1,2), (2,3)
Group #2: (1,5), (2,5), (3,5), (4,5)
Group #3: (3,0), (4,1), (5,0)
Group #4: (5,3)

但是随后,我陷入了如何将for i = 0, i < matrix.dimension, i++ for j = 0, j < matrix.dimension, j++ if (i,j),(i,j+1),(i,j-1),(i-1,j),(i-1,j+1),(i-1,j-1),(i+1,j),(i+1,j+1),(i+1,j-1) = 1 push all pairs of i, j = 1 into a group (2,3)分成两组的问题,因为如果我遍历单元格{{1},它们仍然在(2,5)的范围内} 例如。感谢您的帮助。提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以将此矩阵可视化为图形。因此,在每个坐标(x,y)处,该点都与其他8个点相连,即

(x+1, y)(x+1,y-1)(x+1,y+1)(x,y+1)(x,y-1)(x-1,y)(x-1,y+1)(x-1,y-1)

因此,您的点(x,y)将连接到上述8点。现在您已经准备好了一张图。

现在在此图上运行DFS,您可以轻松地找到将相同值分组在一起的一组坐标。

希望这会有所帮助!