我有网络的图片,如下图所示,我的目标是通过处理这些图像获得网络的骨架。
我的方法分为两个步骤,首先我使用局部阈值或 Otsu 方法将灰度图像转换为二值图像,然后使用中值滤波器(python 函数 medfilt)。结果如下所示。
然后,我使用细化算法来提取网络的骨架。这是我实施 Zhang-Suen 细化算法的结果。
考虑到第一张图片的质量,我很确定可以做得比这更好。因此,我有两个问题:
1) 拍摄最后一张图像,您将如何去除所有与脊垂直的小线和小间隙,即人工制品?
2)您实际上建议我在上述步骤(转换为二进制图像和细化)中使用什么算法?
我主要在python中工作。
您对 ZS 算法的实现是错误的。正确的输出应该是:
在这里您可以看到叠加在原始二进制图像上的输出:
移除小分支需要更多的努力,并且不是完全现成的,但基本上你可以用它的长度标记连接点和端点之间的每个部分,并修剪那些太短的部分。然后你也可以考虑“主要”方向而不是在那个方向修剪。