我正在尝试破解一个验证码图像,但我找不到一种分割字符的方法。
我有这个图像:
我应用了一些过滤器和二值化处理,结果得到了这张图片:
现在我需要将图像分割以便用于分类器,例如SVM或ANN。
问题是有些字符是连接在一起的,我找不到分离它们的方法。
更多图像示例:
有人有分割图像并获取字符的方法吗?
我正在尝试破解一个验证码图像,但我找不到一种分割字符的方法。
我有这个图像:
我应用了一些过滤器和二值化处理,结果得到了这张图片:
现在我需要将图像分割以便用于分类器,例如SVM或ANN。
问题是有些字符是连接在一起的,我找不到分离它们的方法。
更多图像示例:
有人有分割图像并获取字符的方法吗?
这是一个最小化问题。关键在于选择合适的度量标准,并使其快速。
手动收集每个字符(字母或数字)的示例:至少每个字符收集几个示例,并进行手动清理。
手动解决足够数量的示例(几百个)的验证码。这将为您提供测试数据集。
给定一张图片,尝试将其与略微扭曲的示例字符匹配。最佳匹配可以视为具有以下度量中黑色匹配中K1 *图像中白色区域的总和最小的那个:在匹配中是黑色的图像中的白色区域+ K2 *图像中的白色区域,在匹配中是黑色的区域+ K3 *字符的期望平均位置和方向与匹配中的位置和方向之间的距离+ K4 *字符的几何失真。 K1..K4的值是适当的权重,您可以通过优化测试数据集上的准确性来找到它们。
这是一个相当大的搜索空间:但由于字符的间距相对规则,因此您可以逐个字符拟合,因此从预期的平均位置开始,对每个可能的字符的位置/扭曲进行简单的梯度下降,以找到良好的匹配,然后您可以选择最佳匹配作为您认为存在的字符,然后继续下一个。总共:6×(26个字母+ 10个数字)梯度下降在(大约)2个位置+ 1个倾斜+ 1个比例+ 1个拉伸维度上进行。本质上,这将把上述最小化问题分解为逐个但顺序地匹配一个字符的问题。然后遮盖找到的匹配并重复下一个(相邻的)预期位置,直到您对所有6个都有匹配项。根据您提供的示例,这将具有非常高的置信度,即每个字符的正确答案的得分都比任何其他答案都要好。
附注:这可能很有趣:https://code.google.com/p/captchacker/