【问题标题】:Recognizing striked out handwritten words识别被删除的手写单词
【发布时间】:2010-12-03 06:33:48
【问题描述】:

我正在 Visual Studio 平台上进行手写识别和相关工作,并使用 openCV 库。输入采用二进制扫描的 .tif 图像的形式。

目前,我遇到了一个障碍,试图找出一种方法来识别被删除的单词,就像你使用直线/曲线删除(取消)单词一样。我不会做单个字符识别,因为这会浪费计算能力。

有没有办法以替代方式识别此类事件?

以下是我想到的两个想法,但我不确定 - 1> 使用像 这样的掩码,这将有助于找到所有水平线......但这将是一个非常大的假设。线条可以是波浪形的,可以是任何方向的。

2> 骨架化输入并寻找交叉点。这会给我很多交叉点 - 包括那些由于用于删除单词的线而发生的交叉点。使用一些近似值,如最小二乘等。我可以得到一条近似线。但问题是在许多地方都可能出现交叉路口——例如。 'b' 等 2 个交叉点。

有什么建议吗?

【问题讨论】:

  • 带有线条的波浪文本,嗯?试图击败验证码? :)

标签: image-processing opencv pattern-matching


【解决方案1】:

您是否考虑过使用Hough transform 来检测罢工线?

这是一个illustration of the use of hough transform in handwriting,它将让您直观地了解该方法:

您可以使用openCV 快速测试它。该函数名为cvHoughLines2

【讨论】:

    【解决方案2】:

    为什么不处理轮廓?您可以利用 Poly (Ten-Chin) 近似并仅分析链重建产生的少数向量。如果您想做更多,则使用混合金字塔/轮廓方案,以获得具有不同细节级别的向量近似值,从粗略分辨率到最精细。

    当您获得“合理”数量的独特片段时停止细化,应用归一化(参见 Moments - Hu's Moments)来制作样本指纹,最后采用强大的分类系统。

    我建议您查看 OpenCV 套件的 ML(机器学习)部分,以便更好地参考后面的部分。对于栅格数据,Haar 的小波 + 隐马尔可夫模型效果很好,对于矢量,也许你可以使用一些不太难设置的东西(SOM、KNN、KMeans)。

    【讨论】:

      【解决方案3】:

      我会选择单个字符识别。这可能会浪费计算能力,但可以提供最好的结果。只需找到一种从字符识别中获取值的方法,该值表明该字符被识别得有多好,然后为非字符的事物找到一个阈值。我认为取消会以某种方式破坏字符,从而识别将无法找到某些东西,也许你可以使用这个事实来找到被取消的字符。为了改善结果,在文本的同一区域寻找许多识别不佳的字符,通常会取消整个单词,因此识别不好的结果会聚集在一起。

      如果你的表现最终很糟糕,你可以随时回来改进算法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-02
        • 2012-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-15
        相关资源
        最近更新 更多