4

我正在尝试在手绘图中检测对象和文本。

我的目标是能够将这样的东西“解析”一个对象结构以供进一步处理。我的第一个目标是检测文本、线条和框(箭头等......不重要(现在;))

我可以做膨胀、腐蚀、大津阈值、反转等,很容易得到这样的东西

我需要一些指导的是接下来的步骤。我有几个想法:

  1. 轮廓分析
  2. 使用 UNIPEN 的 OCR
  3. 边缘检测

轮廓分析

我一直在阅读 CodeProject 上的“C# 中图像识别的轮廓分析”,这可能是识别框等的好方法。但我的问题是框是连接的,因此不会形成单独的对象以与模板匹配。因此,如果这是一种可行的方法,我需要一些建议。

使用 UNIPEN 的 OCR

我想使用 UNIPEN(参见 CodeProject 上的“使用多神经网络的大型模式识别系统”)来识别手写字母,然后从图像中“删除”它们,只留下方框和线条。

边缘检测 另一种方法是检测所有的线和角,并以此推断图像所包含的框和线。在这种情况下,关于如何拉直线条并找到 90 度角的想法会很有帮助。

一般来说,我认为我只需要一些关于应用哪种策略的指示,而不是代码示例(尽管它会很棒;))

4

1 回答 1

2

我将尝试回答有关轮廓分析和它们之间的线条。

如果您需要将互连的盒子变成单独的对象,这很容易实现:

  1. 用形态闭合来闭合盒子边缘的间隙
  2. 执行连接组件标记并寻找紧凑对象(例如,其区域接近其边界框区域的对象)

你会得到盒子的内部。这些可以是椭圆形或矩形或您在常见图表中可能找到的任何形状,轮廓分析可以告诉您是哪一个。封闭的背景区域可能会出现问题(例如,示例图中的 ABC 链接之间的空间)。您可以根据它们的边界框与多个其他对象的边界框重叠的标准来消除这些。

现在用 HoughLinesP 找到线段。如果一个段在某个对象边缘的一定距离内结束或开始,您可以假设它连接到该对象。

作为补充,您可以通过检查端点附近线段的宽度轮廓来尝试检测任一侧的箭头端点。

这是一个有趣的问题,我会试着记住它,并把它交给我的学生,让他们咬紧牙关。

于 2013-08-20T14:50:23.843 回答