zoukankan      html  css  js  c++  java
  • 图像识别试验

    © 野比 2012

    欢迎大家和我讨论相关问题。

    代码在此(注意此版并非最终版)

    光学字符识别(OCR)是非常有用的技术。在验证码识别、车牌号识别、文字识别方面,基于字符的识别技术算是比较容易上手的了(相比图文识别)。

    闲来看到有朋友研究验证码识别,一时手痒,野比自己动手来做做验证码识别。当然,肯定只是简单的验证码。

    名为验证码,实际上并不限于,还可以识别车牌号、身份证号、门牌号等各种乱七八糟的内容。

    识别的流程很明确:

    1、预处理图像

    2、做y轴的投影

    3、分析直方图分区

    4、根据分区拆分图像为多个字符(很关键,拆得越好,后续识别率越高)

    5、丢弃空白或无效字符

    6、自动旋转字符(如果有倾斜),识别字符

    如果样本中个图像有粘连,则可能造成分区不准确。这种情况下,需要进行旋转,但是怎样自动旋转,是个难题。

    目前已可拆分出字符,下一步准备研究如何识别。(如果单个字符比较规范,可以利用现成的OCR控件)

    这里有一些例子。

    普通的验证码(毫无难度)

    带干扰的验证码

    较高强度干扰(目前使用的分区算法不能解决,需要更好的算法,比如动态阈值)

    CSDN的验证码(毫无压力)

    身份证号码

    车牌号

    补充个QQ验证码,用单一阈值方法,识别很困难,需要结合字符宽度进行判断

    这是单一阈值分区的结果(没有限制宽度),可以看到效果很差。

    继续研究如何优化分区算法,如何识别单个文字(可以考虑多重识别+样本训练)。

    附上太平洋网站验证码。

    有些粘连,但是可以通过固定字符宽度解决(宽度基本一致)

    参考这张图(获得整个宽度,然后除以字符数得到每个宽度,分别提取)

    二值化我用的Otsu算法,参考文献:"A threshold selection method from gray-level histograms", IEEE Trans. Systems, Man and Cybernetics 9(1), pp. 62–66, 1979

    关于验证码,这篇论文很不错,建议参考:"Text-based CAPTCHA Strengths and Weaknesses", ACM Computer and Communication security 2011 (CSS'2011)

    © 野比 2012

    改进的去污算法

    污损车牌号拆分字符

    Ref:

    二值化我用的Otsu算法,参考文献:"A threshold selection method from gray-level histograms", IEEE Trans. Systems, Man and Cybernetics 9(1), pp. 62–66, 1979

    关于验证码,这篇论文很不错,建议参考:"Text-based CAPTCHA Strengths and Weaknesses", ACM Computer and Communication security 2011 (CSS'2011)

  • 相关阅读:
    matlab curve fitting tool
    simulink model configuration parameter
    MATLAB小知识
    电源噪声与纹波
    各种“地”—— 各种“GND”
    一个不错的充电方案论坛:
    pre -regulator 前端稳压器
    LT4020替代方案
    power delivery功率输出
    LTC4020锂电池充电模块开发记录
  • 原文地址:https://www.cnblogs.com/xumaojun/p/8533097.html
Copyright © 2011-2022 走看看