验证码识别--type5
每一种验证码都是由人设计出来。在设计过程中,可能由于多个方面的原因,造成了这样或那样的可以被利用的漏洞。验证码识别,首先需要解决的问题就是发现这些漏洞--然后利用漏洞解决问题。
![](https://www.cnblogs.com/d7024330-c00a-43d1-95a4-304f144f860a_files/9.bmp)
![](https://www.cnblogs.com/d7024330-c00a-43d1-95a4-304f144f860a_files/0.bmp)
![](https://www.cnblogs.com/d7024330-c00a-43d1-95a4-304f144f860a_files/1.bmp)
![](https://www.cnblogs.com/d7024330-c00a-43d1-95a4-304f144f860a_files/2.bmp)
![](https://www.cnblogs.com/d7024330-c00a-43d1-95a4-304f144f860a_files/3.bmp)
![](https://www.cnblogs.com/d7024330-c00a-43d1-95a4-304f144f860a_files/4.bmp)
![](https://www.cnblogs.com/d7024330-c00a-43d1-95a4-304f144f860a_files/5.bmp)
![](https://www.cnblogs.com/d7024330-c00a-43d1-95a4-304f144f860a_files/6.bmp)
![](https://www.cnblogs.com/d7024330-c00a-43d1-95a4-304f144f860a_files/7.bmp)
![](https://www.cnblogs.com/d7024330-c00a-43d1-95a4-304f144f860a_files/8.bmp)
这个图片看上去很复杂,有空心字符、有粘连、有干扰线,但是为什么人在识别的时候不会出错?是因为主要字符是不同颜色的。而且设计者为了防止如果随机的话出现相近的颜色造成不能被识别的结果,于是选用了6种相互之间区别都比较大的颜色——并且只有这6种颜色。这就是切入口。
另一个方面,关于具体颜色的处理,我还真是弱项。如果过滤出特点的区域的颜色,是个问题。
一、判断相似颜色
![](https://images0.cnblogs.com/blog/508489/201505/101306199545367.png)
即使是非常相似的颜色,也会被认为是不相同的,直接用RGB相比较,是不科学的。
最好的办法是有那种可以拖动的条来做这个东西的,按时目前也是能够做出一些效果来的。
if (r<50 || g>50 ||b>50) 红
也包括
,镂空问题再考虑,我先把几个颜色分离出来,最好能够做出自动化的工具
![](https://images0.cnblogs.com/blog/508489/201505/101306204859037.jpg)
![](https://images0.cnblogs.com/blog/508489/201505/101306209549194.jpg)
首先是3元色
if (b<50 || g>50 ||r>50)
![](https://images0.cnblogs.com/blog/508489/201505/101306216269822.jpg)
![](https://images0.cnblogs.com/blog/508489/201505/101306213298380.png)
![](https://images0.cnblogs.com/blog/508489/201505/101306216269822.jpg)
![](https://images0.cnblogs.com/blog/508489/201505/101306220796751.jpg)
然后是混合色 if (g>50 ) 紫色
![](https://images0.cnblogs.com/blog/508489/201505/101306224382707.png)
橙色
![](https://images0.cnblogs.com/blog/508489/201505/101306227205622.jpg)
现在应该是摸索出一套方法出来,应该可以有所使用
如果采用ps的话,其效果的确是更好一点。但是问题在于这里的颜色容差如何来算
![](https://images0.cnblogs.com/blog/508489/201505/101306232519293.png)
通过带着问题来阅读,我修改代码
一方面,继续原有代码。对于三原色,采用盒式模型,而对于延伸的三色,采用球模型
![](https://images0.cnblogs.com/blog/508489/201505/101306237209450.png)
结果应该说是很好了。问题主要出现在空心字符哪里,还有字符粘连那里。
二方面,hsi应该 是更直观的
但是效果不好,不知道为什么。还是采用RGB模型.
最后,经过相关的处理,只能得到这样的结果
![](https://images0.cnblogs.com/blog/508489/201505/101306243766849.jpg)
下一步如何来做,一方面,还是需要通过先验知识--字的团块主要是在一起的。来做分析,把主要团块找出来,然后把这些缝隙连接起来。
做到目前这一步,非常关键的一个问题出现了:
图像分割要做到哪一步,才是可行的?此外,识别要到什么程度,才是有价值的。这几个问题都必须通过具体的识别的例子才能够得到结果。所以目前几个type的识别必须要继续再做一步。