Algorithm 具有4个已知邻域的细化/骨架化算法

Algorithm 具有4个已知邻域的细化/骨架化算法,algorithm,image-processing,Algorithm,Image Processing,我正在寻找一种细化/骨架化算法,如果我只知道4个邻居而不是8个邻居,该算法就可以工作。 从我能找到的所有算法中,我假设我了解对角邻域 那么,如果我只知道上、右、下、左邻域,有人知道细化算法也可以工作吗 结果应该是这样的: 这些不是我想要的: 形状应保持如第一个示例所示我建议使用8邻域算法之一,但为对角单元格提供虚拟信息,或修改算法中考虑邻域的部分 因为你对你所关注的事物种类不太具体,所以很难提出具体的建议。大多数算法将包含如下部分: for n in neighbours: do stuf

我正在寻找一种细化/骨架化算法,如果我只知道4个邻居而不是8个邻居,该算法就可以工作。 从我能找到的所有算法中,我假设我了解对角邻域

那么,如果我只知道上、右、下、左邻域,有人知道细化算法也可以工作吗

结果应该是这样的:

这些不是我想要的:
形状应保持如第一个示例所示

我建议使用8邻域算法之一,但为对角单元格提供虚拟信息,或修改算法中考虑邻域的部分

因为你对你所关注的事物种类不太具体,所以很难提出具体的建议。大多数算法将包含如下部分:

for n in neighbours:
  do stuff
在这种情况下,您需要编辑邻居


其他人将应用某种掩码或内核函数。编辑该内核。

我确信有几种标准方法,但是“删除与一个白单元格或几个白单元格相邻的所有黑单元格,最多用4步BFS(仅使用空白)划分”又如何呢?此算法的7-10次迭代可能会解决您的问题。我不确定我是否理解正确。我无意中发现这一部分“或几个白细胞被最多4步BFS分割”。如何防止第一个示例中的结尾被删除?这不是一个好主意(至少需要开发),我已经尝试过了,结果很糟糕,我的另一个BFS+A*想法也失败了。最好是了解8个邻居,而不是4个…顺便说一句,mb你应该先尝试获取4个邻居的信息,然后获取他们的邻居的信息,这些邻居通过对角线与起始单元格相邻。你会得到关于8个邻居的信息,而不是4.BTW2,mb。一般情况下,你不应该解决这个问题。如果你对英文字母感兴趣,那么设计专门为他们工作的smth可能会更容易。