gpt4 book ai didi

opencv - 分割 - 分离接触对象

转载 作者:太空宇宙 更新时间:2023-11-03 21:09:09 28 4
gpt4 key购买 nike

我建立了一个系统来分割包含手写符号的二值图像并对它们进行分类(专门用于音乐)。我知道有商业应用程序可以执行此操作,但这是我尝试将其作为一个项目从头开始。

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

NoteSharp

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

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

Touching或者 Another Touching

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

我发现的东西:

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

可能有用的东西,在我进入兔子洞之前,我会很感激“去做”或“避免”投票。

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

最佳答案

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

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

  • 当 blob 对于单个符号来说太大时
    • 对于每个可能的符号
      • 在左上角、右上角、左下角、右下角取一个区域,并为符号设置正确的大小
      • 运行您对该地区的认可
      • 如果成功,去掉识别到的符号,其余重复

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


另一个想法:

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


另一种分离形状的想法:

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


备选方案 4:

在活页乐谱中,相同类型的符号往往会一起出现,例如同一行上的 # 后跟一个音符,或者以特定模式在行的开头出现多个 #。对于这种容易聚集在一起的符号,可能需要一个特殊的组合识别器。

(就此而言,您目前如何将符号与五线谱分开?)

关于opencv - 分割 - 分离接触对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23895640/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com