寻找网格岛的外边缘

Posted

技术标签:

【中文标题】寻找网格岛的外边缘【英文标题】:Finding outer edge of grid islands 【发布时间】:2014-10-28 21:44:38 【问题描述】:

我正在尝试计算网格上岛屿的外边缘。每个网格图块有 4 个构成角的顶点,我想按顺时针方向计算边缘,以便对其进行排序。

我的网格是一个二维字节数组byte[,] grid,我可以很容易地找到相邻的图块,但是我正在努力寻找找到岛屿边缘的解决方案。

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

在这张图片中,红点代表顶点,绿线代表我要查找的位。

有人知道如何实现这一点吗?

谢谢,C。

【问题讨论】:

【参考方案1】:

基本上是这样的:

1) 检查每个方格是否已填满

2) 如果已满,检查邻居

3) 对于每个空闲的邻居,将线添加到这个正方形和邻居之间的列表中

您最终会得到一个列表,其中包含作为单独部分的完整边框。现在你需要用这个列表玩多米诺骨牌,这样你就可以得到所有岛屿的边界作为单独的有序列表,最后一块应该完全适合第一个。然后你甚至可以通过将相同方向的线段相加来对列表进行一些清理。

【讨论】:

这绝对是正确的方向,我正在收集每个“岛”外边缘的有序列表。通过将同一方向的行相加来清理列表的想法非常棒。【参考方案2】:

如果在x 方向上的1y 方向上的1 内有零,则基本上一个顶点位于边上。所以对于顶点[a,b],您需要检查从[a-1,b-1][a+1,b+1] 的每个顶点。注意顶点何时位于边缘,例如 [0,b][a,maxy]

【讨论】:

以上是关于寻找网格岛的外边缘的主要内容,如果未能解决你的问题,请参考以下文章

你如何告诉神经网络的层去寻找/寻找特定的特征,比如眼睛和边缘?

使用 Canny 在倾斜图像中寻找边缘

网格上二维正方形的非分离矩形边缘覆盖

利用Halcon寻找出边缘突出的部分

使用 OpenCV 和 Python 准确寻找水域边缘

寻找外链的一些技巧独家