C#实现验证码中粘连字符分割(八)

   在《C#实现验证码中粘连字符分割(七)》中提及,粘字符分割的代码进行了更新。

   不论如何,粘连字符分割的关键是有正确的谷点。本次代码更新时,更新了谷点的标准,同时获取上谷点与下谷点,然后再进行过滤。个人认为比较严谨的谷点过滤方案应该是上下谷点协同过滤,例如(1)上下谷点在宽度方向上的像素差在3个或5个以内优先作为谷点,(2)满足条件(1)后,在上谷点与下谷点中取较深的谷点作为最终的谷点。“较深”指的是谷点与领域在高度方向上的差距较大的点。

   首先针对对目前的现状,我曾做过如下一些尝试:
   (1)按照前面我所说的方案对谷点进行人工过滤,过滤后,小部分图片可以得到较完美的分割效果,但大部分图片分割后仍然有缺陷。
   (2)前面第1点的结论显示目前谷点查找的并不准确。我也尝试过直接在二值化的原图像上用同样的方案去寻找上下谷点,然后用同样的方法过滤,发现分割结果会更加恶劣。

   基于以上原因,本次更新的谷点过滤方案并未按照上述方案执行。
   目前使用的谷点过滤方案仍然比较简单粗暴。以4个字符的图片为例,我需要从众多谷点中确定3个有效谷点。基本原则是优先确定左侧谷点与右侧谷点。以1/8的图片宽度为基准,将谷点按其宽度值从小到大的顺序排列,从最小的谷点开始判断其与左侧边界的距离,第一个满足距离值大于基准值的点作为左侧谷点。然后按谷点从大到小的顺序进行判断,从最大的谷点开始判断其与右侧边界的距离,第一个满足距离值大于基准值的点作为右侧谷点。若两侧谷点确定后,只剩一个谷点,那么该谷点直接晋升为中间谷点,若有多个谷点,则直接取平均后作为中间谷点。

   粘连字符分割不易,倾斜的粘连字符分割更不易。

C#实现验证码中粘连字符分割(一)

C#实现验证码中粘连字符分割(二)

C#实现验证码中粘连字符分割(三)

C#实现验证码中粘连字符分割(四)

C#实现验证码中粘连字符分割(五)

C#实现验证码中粘连字符分割(六)

C#实现验证码中粘连字符分割(七)

C#实现验证码中粘连字符分割(八)

验证码粘连字符分割经验谈

发表评论

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

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

Fork me on GitHub