简单验证码识别(matlab)
验证码识别, matlab
昨天晚上一个朋友给我发了一些验证码的图片,希望能有一个自动识别的程序。
1474529971027.jpg
我看了看这些样本,发现都是很规则的印刷体数字,而且还没有角度旋转,所以我就直接使用数字的面积和周长两个特征量来进行检测,发现效果还是蛮不错的。
在实验中,主要问题是‘6’和‘9’两个数字的面积和周长都是完全一样的,所以这时候我又添加了一个重心的特征。
有些蛋疼的是数字‘4’和‘0’竟然面积是一样的。。。所以只好再引入椭圆离心率特征来判别。
图像也没有怎么预处理,就是简单的阈值化,再使用ostu分割。
具体代码如下
d=dir('*.jpeg'); %读jpeg文件
%% 预设模板,每一行对应一个数字
FD=[56,35.3137084989848,0.651415462867714;
45,41.6568542494924,0.928960924132855;
47,53.4558441227157,0.873324561446361;
54,57.4558441227157,0.842543936832893;
52,35.3137084989848,0.773979329527851;
57,56.9705627484771,0.8288087326485