首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证码图像的字符分割

验证码图像的字符分割
EN

Stack Overflow用户
提问于 2014-06-11 04:40:31
回答 3查看 3.1K关注 0票数 4

我正在尝试破解验证码图像,但我找不到分割字符的方法。

我有这样的图像:

我应用了一些过滤器和阈值,产生了这个图像:

现在我需要分割图像,以便在分类器中使用,例如SVM或ANN。

问题是有些字符是连接在一起的,我找不到一种方法来将它们分开。

更多图片示例:

有没有人有办法分割图像并获取字符?

EN

回答 3

Stack Overflow用户

发布于 2014-06-13 21:31:08

在我看来,你的字符有最大的笔画宽度。每当您发现水平的黑色像素行宽于此宽度时,就表示此处连接了两个字符。

所以

对于比斑点每行单个字符更宽的每个连接的斑点,_

  • 查找该行中比这些lines

的中心的X坐标更长的所有不间断的黑色像素水平线

  • __

代码语言:javascript
复制
- cluster the found X-coordinates
- split the block at the center of each cluster with more than N coordinates.
- (you can either simply split vertically, or try to fit a line through the points in the cluster)

票数 5
EN

Stack Overflow用户

发布于 2014-06-13 20:59:49

你的方法对我来说似乎太自下而上了。

字符的数量是恒定的,它们看起来是单间距的

因此,只需按宽度拆分图像,并确保检索到的特征是旋转/缩放不变的。

然后可以将其输入到ANN中。我不明白你为什么要分割角色。

票数 1
EN

Stack Overflow用户

发布于 2014-06-16 18:13:06

这是一个最小化问题。棘手的部分是选择正确的指标,并使其快速。

  1. 收集(手动)每个字符(字母或数字)的示例:每个字符至少有几个示例,由手工清理
  2. 解算验证码(手动)以获得适当数量的示例(数百个)。这给了你一个测试数据集。
  3. 给定一个图像,试着将它与示例字符的稍微失真的版本进行匹配。最佳匹配可以认为是图像中K1 *白色区域之和最小的匹配+ K2 *图像中的黑色区域+匹配中的白色+ K3 *字符的期望平均位置和方向与匹配中字符的位置和方向之间的距离+ K4 *字符的几何变形。这是要最小化的指标。
  4. 这是一个相当大的搜索空间:然而,由于字符的间距是相对规则的,你可以一次适合一个字符,所以从预期的平均位置开始,在字符的位置/失真上进行简单的梯度下降(对于每个可能的字符)将会找到一个很好的匹配,你可以选择最佳匹配作为你认为在那里的字符,然后移动到下一个字符。总共:6 x (26个字母+ 10个数字)梯度下降(大致)2个位置+1个倾斜+1个比例+1个拉伸维度。本质上,这将上面描述的最小化问题分解为一次匹配一个字符的问题,独立但顺序。然后掩蔽找到的匹配项并重复下一个(相邻的)预期位置,直到所有6个都有匹配项。根据您提供的示例,这将具有非常高的置信度,即正确答案的分数将比任何其他答案好得多(对于每个字符individually).

附言:这可能很有趣:https://code.google.com/p/captchacker/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24150431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档