图像识别,单独的线条

时间:2013-01-27 13:45:10

标签: java image image-processing

我需要将线条彼此分开,并为每个图形制作一个坐标数组。问题是(参见图中的红色圆圈部分)一些图形重叠,我不知道如何编写一个程序,找到这个重叠并将它们分开。 (现在我们认为线条只相互接触而不是交叉。)

Squiggly lines

@Rethunk我做了变薄并得到了这个结果。 after thinning

1 个答案:

答案 0 :(得分:1)

如果你知道线条最初是分开的,你可以跟踪它们从左到右。对于每条线,顶部和底部y坐标逐渐变化,而x坐标增加。对于您向右移动的每个像素,您可以从平均y坐标开始,然后上下移动以找到每条线的新的顶部和底部y坐标。

当两条线接触时,它们的顶部和底部y坐标将是相同的。这可以通过比较彼此相邻的线的坐标来检测。因此,比方说,第4行和第5行在某一点重叠。对于这些线,您知道哪一条线是较高的线(4)和较低的线(5)。让我们说yTopOverlap = 130和yBottomOverlap = 160.我们可以划分两条线之间的像素。在这种情况下,为第4行制作yTop 130和yBottom 145,为第5行制作yTop 146和yBottom 160.当线条再次分开时,不再需要修改它们的y坐标。