首页
社区
课程
招聘
[讨论]某某程序答题简单分析
发表于: 2010-1-5 12:05 6089

[讨论]某某程序答题简单分析

2010-1-5 12:05
6089
最近在研究某程序的答题系统,题目形式是:带有字母和数字的图片,并给出4个候选答案,从中选出正确的一个。虽然没有噪点,但是字母和数字中加入了干扰线,并且被扭曲和变形,
而且字母之间连在一起,人眼识别有时都会错。
    
    图像识别啥的只是知道些名词,其它的一窍不通。只能先从建立数据库入手了。
      
    最开始我天真的认为图库在本地,从网络传来对应的图库的索引或ID之类的,同时可能这些索引被加密,在客户端进行变形扭曲的处理后形成最终的图片。用户选择其中一个答案后,服务
器判断答题是否正确。
    方法:如果是这样的话自己分析这个图片库,然后再建立个数据库来实现自动答题。
    结果:失败。虽然能得到图片和相应的4个候选答案,但是图片根本不在本地,而是从服务器传递过来的。
    
    图片在服务器,服务器可能是从它的图形库中取出对应的字母等图片,然后进行扭曲加干扰线等算法的处理。最后形成图片,传给客户端。
    
    虽然可以写个自动采集题库的功能,但是26个字母+10个数字,从中任意选出3个组合应该有 36*35*34种组合吧(排列组合没学好,可能是错的哦),再加上它每个字母字体不同,字形不同,
干扰线,扭曲变形,可能会超过上百万种可能。即使我写个软件能让它1天采集几万个题库估计也需要好几十天才能完成吧。更变态的是即使采集完了,那100多万个图片人工识别估计也大概需要
1年的时间吧。 哈哈,如果1年之后换题了。。。。。。。
 
    或者采用一个折中的方法,采集1万个左右的图片。然后从中切割出26个字母和10个数字的各种形状。形成数据库。当题目出来的时候,根据给出的4个候选答案,从图库中取出相应每一个字
母或数字的图片,从题目图片中查找与候选答案最相似的就为正确答案。如果采用这个方法,首先需要点图形识别之类的东西,而且要考虑识别的正确率。

    最后膜拜大牛weolar的“【公开源代码】完美、诛仙等游戏验证码答题反外挂系统的初级识别程序 ”
   
    下面是一副答题的图片:
     
     

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 335
活跃值: (55)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
请教大大们有啥好的方法
2010-1-5 12:06
0
雪    币: 364
活跃值: (152)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
3
你贴的这种图像看能不能这样:先得想办法把单个字符分割开(看你的测试图也许可以根据宽度大概分割一下即可),
再和事先保存好的样本进行相似度匹配。当然这个字体有些旋转,那么可以匹配的时候也进行多次旋转、再匹配;
取相似度最大值。多次测试后规定一个阙值做为是否匹配成功的标准。像图中的干扰线由于颜色不同,很容易就去掉了。
2010-1-5 14:14
0
雪    币: 1022
活跃值: (31)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
图像预处理-->边缘提取-->字符分割-->字符识别
2010-1-5 14:34
0
雪    币: 335
活跃值: (55)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
谢谢大牛weolar的回复哈

  确实啊,如果能够分割然后再与保存好的样本进行相似度的匹配,对于旋转的可以将样本旋转,
或者将分割出的图片旋转再进行相似度的比较, 因为给出备选答案,从备选答案中找出一个最相似
作为最佳答案。

   不过我发的图看起来还不是变形厉害的,它首先字体大小不同,有时甚至2个字会叠加在一起,稍后下班回家我会再贴上个更复杂的图上来。

   不过再怎样字体不同,应该通过某种算法大概分离出去的,毕竟它是个选择题。从给出的4个字母中找出最相似的一个。

   关键是对图像识别太不懂了,N年前曾经写个简单的数字识别程序,当时粗略的学了下,不过早忘光了,只能重新开始学学了。
2010-1-5 17:34
0
雪    币: 335
活跃值: (55)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
流程应该如您所说的,

但是对于我有很多难点:

1、图像预处理:去掉干扰线
   ---》干扰线不好去掉,首先它的位置不固定,有时贯穿整个图像,而有时只是从图像中间开始加入干扰线。有时是波浪线,有时又整体向上倾斜或者向下倾斜。我想不出好方法去掉。极易把有用的笔画去掉。

2、边缘提取
   -->可能首先二值化:根据直方图找出个最优阀值,或者干脆用个固定的阀值来进行。这步对我来说估计花费点时间应该是可以实现的。

3、字符分割
   -->对我比较难,因为他们有时连在一起,或者叠加,而且字形大小不确定。不知道怎样分割,如果有字体之间有空白就容易处理了。
2010-1-5 17:44
0
雪    币: 1022
活跃值: (31)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
1、干扰线是去不掉的,但可以去噪声等
2、二值话是不可少的
3、分不开就两个一起识别好了(大不了多提取几组特征)
2010-1-5 17:48
0
雪    币: 335
活跃值: (55)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
不知道这样是否可以:

   1、提取各种字母数字的样本
   2、将题目图片转换成黑白图像,就是二值图像,可能名词是错的,就是只有2色,0,或者1 黑或者白。
   3、然后根据备选答案从样本库中提取样本,直接在样本图片中搜索,看哪个答案相似度最大。
     比如对于U36这幅图片,它的4个备选答案是:
    1) UA6
      2) BA6
      3) U36
      4) UAD

     一般它都是以上形式的,就是说虽然从4个答案中选出正确的一个,但是每个字母是从2个中选择其一
比如对于字母U 是在 U和B中选出,对于数字3,是在A和3中选出,对于数字6,是在6和D中选出。

    对于第一个字符,我从样本库中提出所有的U和B的样本然后直接在题目图片中查找他们的相似度,不进行
分割题目图片了,也不去掉干扰线,就是找出最相近的,对于第一个字母,就从坐标0到可能第一个字母最大的位置这个范围找。

   其它的字母类似。

   不知这种方法是否可行。
2010-1-5 17:55
0
雪    币: 335
活跃值: (55)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
晕,“不进行
分割题目图片了,也不去掉干扰线,就是找出最相近的,对于第一个字母,就从坐标0到可能第一个字母最大的位置这个范围找。”

  貌似也是字符分割。就是统计每个字符可能的最大位置,进行分割。
2010-1-5 18:06
0
雪    币: 141
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
密切关注中
对验证码识别刚刚接触
还得消化消化
2010-4-28 21:42
0
雪    币: 260
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
qq幻想的答题,我这里有识别%75左右有些还是要手工答的 输错就死了。。
2010-5-12 00:00
0
游客
登录 | 注册 方可回帖
返回
//