Matlab 分离连接的线和形状
我想要一种方法和方法来分离连接的线路。这是我的照片 这是我想要的结果 我该如何解决这个问题?提前谢谢你Matlab 分离连接的线和形状,matlab,shape,image-recognition,overlapping,image-segmentation,Matlab,Shape,Image Recognition,Overlapping,Image Segmentation,我想要一种方法和方法来分离连接的线路。这是我的照片 这是我想要的结果 我该如何解决这个问题?提前谢谢你 诚恳地说,正如您所示,分水岭将是一个问题,它会对原始线产生多个分段。最初,分水岭适用于谷物,因为它们的形状不同,而在这里,如果线条没有全局凸面形状来造成良好的碎片,则最好使用具有一些约束的分水岭 最好尝试解决一个更简单的问题。想象一下,只有水平线和垂直线是可能的。因此,在这种情况下,它意味着通过切割短垂直线(通过在x-y梯度上投影测量长度)来分离水平长线。基本提示是使用这些线的坡度/坡度来
诚恳地说,正如您所示,分水岭将是一个问题,它会对原始线产生多个分段。最初,分水岭适用于谷物,因为它们的形状不同,而在这里,如果线条没有全局凸面形状来造成良好的碎片,则最好使用具有一些约束的分水岭 最好尝试解决一个更简单的问题。想象一下,只有水平线和垂直线是可能的。因此,在这种情况下,它意味着通过切割短垂直线(通过在x-y梯度上投影测量长度)来分离水平长线。基本提示是使用这些线的坡度/坡度来帮助决定在何处切割正交线。在更一般的情况下,问题需要测量或 一个更简单的解决方案(在编辑中)就是删除骨架中的连接点。 这会导致一些水平连接的线被分割,但我想这可以通过一些端点过滤来解决。这里有一个简单的尝试:
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]);
最终标记线组件。这需要进一步的端点预过滤和基于方向的过滤。应分离的轮廓部分基本上是与轮廓其余部分的方向不同的部分 我只能给你一个基本的方法来做这件事,没有具体的代码或函数,我怀疑这是最有效的,但因为这里没有太多的答案…这也是使用知识的问题和解决方案
希望这对一些人有所帮助我尝试了这种方法,使用连接组件集的距离函数上的分水岭将它们像和一样分开。下面是获得的一些结果……这种方法不适用于形状文本谢谢你的回答,我已经试过了,但我可以检测到所有分支点,我称之为bwmorph获取分支点。然后移除。然后获取线段的端点并计算角度。检测(pi/4和3pi/4)之间垂直大于水平的任何线段。这是获得的结果。但尽管我可以检测到所有分支点,也可以检测到所有连接线。这是获得的结果,我想最好使用线段之间的相对角度,而不是直接使用线段所包含的绝对角度。这可能会提供更高的稳健性。