粘粘字符”花式分割”___原理概述

   粘连字符分割仍然是本系列文章讨论的主题,而研究的对象仍然是不含干扰弧线的粘连字符组成的验证码,这些验证码由数字和大小写英文字母组成,不过这次的算法与上一系列文章有本质的差异。这一系列文章的分割算法原理基于字符特征,将特征明显的字符优先提取或分割出来,逐一攻破,直到验证码中的字符全部为单一字符。本文先概要介绍本次分割算法的主要原理和初步的效果图。

   本算法的灵感来源于文献《The Robustness of “Connecting Characters Together” CAPTCHAs》,感谢原作者。感兴趣的读者朋友们可以各显神通去找到该文献,找不到的可以去求助于全国图书馆咨询联盟。为规避某些风险,本站不提供下载,请各位读者理解并支持,非常感谢。
   下图中的四线三格的线条是否似曾相识?是的,我们小时候用的拼音本就是这幅模样。

   回到主题,我们先来看图中用红色线条标示出的字符,它们都有一个共同的特征:均包含一个封闭区域间,在本系列文章中将其命名为loop。对于我们的研究对象而言,我们可以根据loop的左右极点来将含loop的字符提取出来。那么怎样才能得到loop的区域和左右极点呢?我们需要用的Color filling来将除了loop区域的背景进行填充,但是loop区域必须确保其认为白色或某个独有的颜色。得到loop的区域后,我们会根据一系列的规则来将含loop的字符提取出来,此部分我们称之为loop Principle,目前暂时实现了这一步,效果图如下,不算太理想,但是分割效果可以与上一系列的文章媲美。


   纵观我们的研究对象,有的验证码只要根据loop Principle就可以将四个字符完全分割开;而有的验证码被loop Principle后,会变成两部分或者三部分,也有的则巍然不动,对于这些含两个以上字符的部分,我们要用到“拼音本特征”。我们主要用到拼音本的“四线三格”中的“Mean line”和”base line”。根据一定的规则,对验证码图像绘制出“Mean line”和”base line”,根据这两条线之外和中间区域的特征来寻找合适的分割点。这一步暂未实现,我相信这一步实现后分割效果会有较大的提升,后续实现后会持续分享。

   上述原理的具体的思路,实现方法以及实现代码后续文章会详解,敬请期待。

Comments

  1. By 小龙

    回复

  2. By live

    回复

    • By 小龙

      回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Fork me on GitHub