分割 - 分离接触的物体

3
我已经开发了一个系统,用于分割包含手写符号的二进制图像并对它们进行分类(具体是针对音乐)。我知道有商业应用程序可以做到这一点,但作为一个项目,我正在尝试从头开始实现它。
为了简单起见,让我们假设整个图像中只有两个元素:
音符 和 升降号
我已经构建了一个可以将图像分割成区域并对其进行分类的工具。这在大多数情况下运行良好。
然而,有时候元素会触碰到一起,此时我的分类器就崩溃了。例如:
两个元素触碰在一起
有什么最好的方法来分开这两个元素?我已经做了很多研究,但我认为我在这里缺乏领域知识!
我找到以下几点:
模板匹配不适用,因为符号是手写的 细化/侵蚀也不太可行,特别是在两个升降号(右上方)重叠在一起时,它们会被磨损得太厉害。 分水岭填充在两个复杂形状上也不太可行
这些可能起作用的方法,我希望在深入探索之前得到"可以尝试"或"避免"的投票。
滑动窗口,将它们从左往右滑动,并尝试分类。选择置信度最高的窗口和位置。 取投影(水平和垂直方向)并在最小值处“切”图像(这将是各自轴上最细的地方)。
1个回答

2
这对我来说似乎是一个非常困难的问题,我没有一个好的通用解决方案。特别是多个连接的 # 的情况将会很难解决。
在您的特定情况下,我建议尝试以下方法,假设通常不会有超过两三个符号聚集在一起:
当一个 blob 太大以至于无法识别单个符号时:
- 对于每个可能的符号 - 取出正确大小的左上角、右上角、左下角、右下角区域 - 对该区域运行您的识别程序 - 如果成功,则删除已识别的符号,继续为其余符号重复此过程
这不是一个非常复杂的解决方案,它的有效性强烈依赖于您特定的字符识别程序。
另一个想法:
如果您的大多数形状倾向于具有细长的垂直线段,则可以通过概率霍夫变换识别这些线段,并在一个斑点包含多个符号时将找到的垂直线段用作识别的起始点。
另一个分离形状的想法:在距离 blob 边界的最大凸性缺陷处将其分割。注意:这对凸形状效果最佳,而对于你的 # 符号可能根本不可行。
备选方案4:
在乐谱中,相同类型的符号通常会一起出现,例如#后跟同一行上的一个音符,或者在某种模式下在行首有多个#。因此,为这些倾向于聚集在一起的符号设计一个特殊的组合识别器可能是值得的。
(顺便问一句,您目前是如何将符号与谱线分开的?)

很棒的答案,让我有很多思考的地方,谢谢。如果/当我弄清楚哪个方法最好时,我会尝试记得回报。关于五线谱,我读了几篇论文,有很多好的方法,但是现在我通过在平板电脑上绘制输入并将其分层覆盖在线条上来避免这个问题。这样我就可以在处理中只使用原始符号层。我知道这意味着我也可以在客户端智能地保存不同的笔画和区域,从而消除后期分割的需要,但计划最终是转移到其他可能具有五线谱的输入方法。 - Pete Hamilton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接