【问题标题】:Segmentation - Separating Touching Objects分割 - 分离触摸对象
【发布时间】:2014-07-16 17:36:12
【问题描述】:

我已经构建了一个系统来分割包含手写符号的二进制图像并对其进行分类(特别是对于音乐)。我知道有商业应用程序可以做到这一点,但这是我试图将它作为一个项目从头开始。

为简单起见,假设我的整个图像中有两个元素:

我已经构建了一些东西,可以将图像分割成区域并将它们分类。这在大多数情况下都可以正常工作。

但是,有时元素会发生接触,这时我的分类器就会崩溃。例如:

将两者分开的最佳方法是什么?我已经做了很多研究,但我认为我缺乏领域知识可能会让我失望!

我发现的东西:

  • 模板匹配效果不好,符号是手写的
  • 细化/侵蚀也不起作用,尤其是当两个锐角(右上方)重叠时,因为它们退化太多。
  • 分水岭填充实际上不适用于两个复杂的形状

可能会奏效的事情,在我进入兔子洞之前,我会很感激“去做”或“避免”投票。

  • 滑动不同大小的窗口 L->R 并尝试对其进行分类。选择具有最高正分类置信度的窗口和位置。
  • 进行投影(水平和垂直)并在最小值处“剪切”图像(这将是相应轴上最薄的位置

【问题讨论】:

    标签: opencv image-processing machine-learning image-segmentation


    【解决方案1】:

    在我看来这是一个非常困难的问题,而且我没有一个好的通用解决方案。尤其是多个连接#的情况会很难解决。

    在您的特定情况下,我会尝试以下方法,假设通常不超过两个或三个符号聚集在一起:

    • 当 blob 对于单个符号来说太大时
      • 对于每个可能的符号
        • 在左上角、右上角、左下角、右下角取一个区域,并使用正确的符号大小
        • 对该地区进行识别
        • 如果成功,删除识别符号,其余部分重复

    这不是一个非常复杂的解决方案,它的效果在很大程度上取决于您的特定字符识别


    另一个想法:

    如果您的大多数形状往往有细的垂直线段,您可以通过probabilistic Hough transform 识别这些线段,并使用找到的垂直线段作为识别的起点,只要一个 blob 包含多个符号.


    分离形状的另一个想法:

    在距离 blob 边界具有给定最小距离的最大 convexity defect 处拆分 blob。警告:这最适合凸形,可能根本不适用于您的 # 标志


    备选方案 4:

    在乐谱中,相同类型的符号往往会一起出现,例如 # 后跟一个音符出现在同一行,或者多个 # 在行首以特定模式出现。为这些倾向于聚集在一起的符号设置一个特殊的组合识别器可能是值得的。

    (关于那个注释,您目前如何将符号与五线谱分开?)

    【讨论】:

    • 很好的答案,需要考虑很多,谢谢。如果/当我确定哪个效果最好时,我会尝试并记得报告。回复:五线谱,我读了几篇论文,有很多很好的方法,但是现在我通过在平板电脑上绘制输入来绕过这个问题,分层在线条上,这样我就可以在处理中使用原始符号层。我知道这意味着我也可以在客户端做一些聪明的事情,分别保存不同的笔画和区域,从而消除以后对分割的需要,但计划最终会转移到可能有五线谱的其他输入法。
    猜你喜欢
    • 2019-09-25
    • 2021-04-09
    • 2015-07-16
    • 2015-05-06
    • 2021-10-18
    • 2020-06-14
    • 2020-02-11
    • 2012-07-29
    相关资源
    最近更新 更多