验证码图像的字符分割

时间:2014-06-10 20:40:31

标签: image-processing machine-learning artificial-intelligence captcha image-segmentation

我试图破解CAPTCHA图片,但我找不到分割角色的方法。

我有这个图片: enter image description here

我应用了一些过滤器和阈值处理产生了这张图片:enter image description here

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

问题在于某些角色已连接,我无法找到将它们分开的方法。

更多图片示例:

enter image description here

enter image description here

enter image description here

有没有人有分割图像并获取角色的方法?

3 个答案:

答案 0 :(得分:3)

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

所以

  • 表示每个连接的blob比单个字符宽
    • 表示该blob的每一行
      • 查找此行中长度超过MAX_STROKE_WIDTH的所有黑色像素水平线
      • 注意这些线条中心的X坐标
    • 对找到的X坐标进行聚类
    • 将每个群集中心的块拆分为N个以上的坐标。
    • (您可以直接拆分,也可以尝试通过群集中的点插入一条线)

答案 1 :(得分:1)

你的方法对我来说似乎太自下而上了 字符数是恒定的,它们似乎是单行间距的 因此,只需按宽度分割图像,并确保您检索的特征是旋转/比例不变的 然后可以将其输入ANN。我不明白为什么你要分割角色。

答案 2 :(得分:1)

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

  1. 收集(手动)每个字符(字母或数字)的示例:每个字符的至少几个示例,手工清理

  2. 解决验证码(手动)以获得大量示例(几百个)。这为您提供了测试数据集。

  3. 给定图像,尝试将其与示例字符的稍微扭曲版本匹配。最佳匹配可以被认为是图像中具有最小K1 *白色区域的一个匹配的图像中匹配的黑色+ + K2 *黑色区域的图像中匹配为白色+ K3 *预期平均位置之间的距离和字符的方向以及匹配中字符的位置和方向+ K4 *字符的几何失真。这是最小化的指标。值K1..K4是合适的权重,您可以通过优化测试数据集的准确度找到它们。

  4. 这是一个相当大的搜索空间:但是,由于字符间距相对规则,一次可以容纳一个字符,因此字符的位置/失真会有一个简单的渐变下降(对于每个字符)可能的角色)从预期的平均位置开始会找到一个很好的匹配,你可以选择最佳匹配作为你认为存在的角色,然后转到下一个。总计:6 x(26个字母+10个数字)梯度下降(大致)2个位置+ 1个倾斜+ 1个刻度+ 1个拉伸尺寸。本质上,这将上述最小化问题分解为一次匹配一个字符,独立但顺序地匹配的问题。然后掩盖找到的匹配并重复下一个(相邻的)预期位置,直到你有所有匹配的6个为止。根据你提供的例子,这将具有很高的置信度,即正确答案的分数将比任何其他答案(分别针对每个角色)。

  5. P.S。这可能很有趣:https://code.google.com/p/captchacker/