图像处理——第三篇 Java做的验证码识别

    技术2022-05-19  53

    近期忙,没有接着原来的写,今天过来看了下,发现很冷清,决定花点时间修饰一下。

    基础的东西写多了,没意思,也没观众,来个实在的:原 验证码识别过程详解。

    先上几个图:

    第一个图: 原始的验证码图

    第二个图:灰度直方图

    第三个图:红色直方图

     

    第四个图:绿色直方图

     

    第五个图:蓝色直方图

    第六个图:色调直方图

    第七个图:饱和度直方图

    第八个图:亮度直方图

     

     

     

    好了,基本的图上完了,看怎么处理哈:

    第一步:直接变成黑白图,在代码面板中输入 filter.blank();

    如下图,

     

    然后点击运行,再转到图像面板:图想变成黑白的了:

     

    黑白中有很多小黑点,要去掉所有小黑点,只需要转到脚本面板,输入 filter.close(new int[]{0,0,0,0},2,2); 选中这句话,点击 run

    进行图像处理中的闭运算,可以去掉很多小黑点,结果图如下:

    还有两个小黑点,很讨厌,可以用大一点的模版( 2 × 3 ,刚才是 2 × 2 )去把它去掉:

    filter.close(new int[] { 0, 0 ,0,0,0,0}, 2, 3); 结果如下:

     

     

    好了,现在已经是没有干扰的黑白图像了,就开始切吧:

    调用自己写的切分算法(按连通切分): filter.cut(); 可以生成 5 张图片:运行下面的代码,把每张图片显示了出来:

    List ll = filter.cut();

    for(BufferedImage img:ll){

             new ImageTest(img);

    }

    图片如下:

       

     

    对每一张图片 ( 例如最后那张 X) ,进行切空边,调用代码: filter.cutPadding();

     

    这样就差不多可以和原来的模版比,看和哪个字符最相似。模式匹配的部分,这里就步多说了,留到以后有机会再说。这里讲了图象的预处理与分割。


    最新回复(0)