粘粘字符”花式分割”___原理概述
粘连字符分割仍然是本系列文章讨论的主题,而研究的对象仍然是不含干扰弧线的粘连字符组成的验证码,这些验证码由数字和大小写英文字母组成,不过这次的算法与上一系列文章有本质的差异。这一系列文章的分割算法原理基于字符特征,将特征明显的字符优先提取或分割出来,逐一攻破,直到验证码中的字符全部为单一字符。本文先概要介绍本次分割算法的主要原理和初步的效果图。
本算法的灵感来源于文献《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”,根据这两条线之外和中间区域的特征来寻找合适的分割点。这一步暂未实现,我相信这一步实现后分割效果会有较大的提升,后续实现后会持续分享。
上述原理的具体的思路,实现方法以及实现代码后续文章会详解,敬请期待。
很喜欢你这系列的文章。你好,里面所说的论文我在网上找到一个奇奇怪怪的修改很多的版本,可否将正常版本发到我的邮箱。谢谢。277418464@qq.com
谢谢你的肯定。我发了两篇文献给你,请查收。
已收到,谢谢。我看了一下那篇英文论文,发觉基本是西电一个叫柳红刚的硕士毕业论文的英文版,《字符扭曲粘连验证码识别技术研究》,你有兴趣可以找来看看。
谢谢
FillConnectedArea(x, y, imageHeight, imageWidth, BinaryArray);出现Exception of type ‘System.StackOverflowException’ was thrown错误,请问是什么原因。