我想要一种分离连接线的方法和方法。这是我的形象
这是我想要的结果
我该如何解决这个问题?提前谢谢!
此致
答案 0 :(得分:0)
分水岭将是一个问题,因为您已经证明它会产生原始线的多个分段。最初的分水岭由于它们的convex shapes而对谷物起作用,而在线条的情况下,没有全局凸起的形状导致良好的碎片化,使用具有一些约束的分水岭将是好的。
尝试解决问题的简单版本会很好。想象一下,只有水平和垂直线可能。因此,在这种情况下,它意味着通过切割短垂直线(通过在x-y梯度上投影测量的长度)来分离水平长线。基本提示是使用这些线的渐变/斜率来帮助确定切割位置 - 正交线。在更一般的情况下,问题需要local curvature或geodesic distance。
更简单的解决方案(在编辑中)只是删除您拥有的骨架中的连接点。 这会导致一些水平连接的线路被分段,但我想这可以通过一些端点过滤来解决。一个简单的尝试:
J = imread('input.png');
B = bwmorph(J,'branchpoints');
L = bwlabel((J>0).*(~B),8); %removing the branch points from the skeleton
Label = label2rgb(bwlabel((J>0).*(~B),8),'jet',[0 0 0]);
最终标记的行组件。这需要进一步的终点预滤波,基于方向的滤波。
答案 1 :(得分:0)
应分离的轮廓部分基本上是与轮廓其余部分方向不同的部分。
我只能给你一个没有特定代码或功能的基本方法,我怀疑它是最有效的,但是因为这里没有太多的答案......这也是使用问题的知识和解决方案......
希望这有助于一些