zoukankan      html  css  js  c++  java
  • 新生活......

      搬到老校区两天了,宿舍的同学都很棒,虽然小黑屋很小,但是大家在一起觉得很惬意,今天在实验室呆了一天,觉得时间真的过得很快,觉得自己还有很多不会,应该用在实验室的时间加紧赶上,用师姐的一句话吧,生活还是需要梦想的。和旁边的师姐沟通,慢慢来学习,还不晚欧。

      今天的收获:

      0.对于不同的验证码有不同的处理方法,但是整合的方法还不太会

      1.灰度化,就是对于一副彩色的图片,对于每一个像素,都是有R,G,B三个分量来各自分配比例调和出来的。

        RGB彩色图像可以看成是由3副单色的灰度图像构成的,可以直接取RGB通道中的任一个通道得到灰度化图像,如clip_image014,前提是图像中目标          像素的亮度信息主要分布在B通道上,否则灰度化结果将是亮度信息的大量丢失。灰度图像又叫亮度图像.

             但是要对彩图灰度化时,有4种方法:

        1.1 GRAY=R*0.11+G*0.59+B*0.3    

        1.2 GRAY=MAX(R,G,B)

        1.3 GRAY=MIN(R,G,B)

        1.4 算数平均值

      2.中值滤波,主要是针对椒盐噪点的,用一个3*3的滤波窗口对每一个像素滑动,它将每一象素点的灰度值设置为该点某邻域窗口内的所有象素点灰度值的中值。将该方法重复2-3次,图片已经比较稳定了。

      3.RGB图,灰度图,黑白图,二值化图:

        3.1 RGB图:就是生活中的彩图;每个像素有24位,就是R:8bit,  G:8bit,   B:8bit

        3.2 灰度图:每一个点的R=G=B=GRAY, 每个像素有8位,256个灰度级(2^8)

        3.3 黑白图:只是视觉上的有黑白两色的图;

        3.4 二值化图:就是每一个像素只有1bit,就是两个灰度级的图

      4.验证码识别的基本方法:截图,二值化、中值滤波去噪、分割、紧缩重排(让高矮统一)、字库特征匹配识别

      5.图片二值化的方法汇总(这里参考http://blog.csdn.net/jia20003/article/details/8074627)

        5.1 该方法非常简单,对RGB彩色图像灰度化以后,扫描图像的每个像素值,值小于127的将像素值设为0(黑色),值大于等于127的像素值设为255(白                      色)。该方法的好处是计算量少速度快。缺点更多首先阈值为127没有任何理由可以解释,其次完全不考虑图像的像素分布情况与像素值特征。可以说该                  方法是史最弱智的二值处理方法一点也不为过。

        5.2最常见的二值处理方法是计算像素的平均值K,扫描图像的每个像素值如像素值大于K像素值设为255(白色),值小于等于K像素值设为0(黑色)。该方法                  相比方法一,阈值的选取稍微有点智商,可以解释。但是使用平均值作为二值化阈值同样有个致命的缺点,可能导致部分对象像素或者背景像素丢失。                  二值化结果不能真实反映源图像信息。

        5.3使用直方图方法来寻找二值化阈值,直方图是图像的重要特质,直方图方法选择二值化阈值主要是发现图像的两个最高的峰,然后在阈值取值在两个峰之                   间的峰谷最低处。该方法相对前面两种方法而言稍微精准一点点。结果也更让人可以接受。

        5.4 使用近似一维Means方法寻找二值化阈值,该方法的大致步骤如下:代码见链接

                            1.      一个初始化阈值T,可以自己设置或者根据随机方法生成。

                            2.      根据阈值图每个像素数据P(n,m)分为对象像素数据G1与背景像素数据G2。(n为

                                     行,m为列)

                            3.      G1的平均值是m1, G2的平均值是m2

                            4.      一个新的阈值T’ = (m1 + m2)/2

                            5.      回到第二步,用新的阈值继续分像素数据为对象与北京像素数据,继续2~4步,

                                     直到计算出来的新阈值等于上一次阈值。

      6.一些去噪滤波方法:一种是频率域,一种是空间域

        eg:均值滤波,中值滤波,维纳滤波,图像小波域滤波

                参考:http://wenku.baidu.com/linkurl=9V3jrEyUJJeV6IS_aqM04CkOpD_h27iMA1InhqIEBTKVWbij4g3tbFSPs_dVtINj0bF7XzGtQvq8Ea9K66sa-ZD9sTV0ASgVrqxzqieQsI3

      7.一段有用的二值化代码:

    def Binarized(Picture):
        Pixels = Picture.load()
        (Width, Height) = Picture.size
      
        Threshold = 80    # 阈值
      
        for i in xrange(Width):
            for j in xrange(Height):
                if Pixels[i, j] > Threshold: # 大于阈值的置为背景色,否则置为前景色(文字的颜色)
                    Pixels[i, j] = BACKCOLOR
                else:
                    Pixels[i, j] = TEXTCOLOR
        return Picture
    

      8.python中的image对象的所有方法见http://hereson.iteye.com/blog/2224334

      9.简单的分割方法包括等距分割、积分投影分割、交叉点分割、求连通区等。

      10.python中的一些图像数组操作,参考http://www.2cto.com/kf/201601/487884.html

      11.python很注重缩进,出现unexpected indent就是缩进的问题

        还有一些常见问题 见http://www.oschina.net/question/89964_62779

      12.有一篇好博文,明天继续研究    http://drops.wooyun.org/tips/4550

      人要有梦想,但也不能被现实打败。晚安,博客园。

  • 相关阅读:
    Go语言环境配置 Sublime Text + GoSublime+ gocode + MarGo组合
    Java中string拼接,StringBuilder,StringBuffer和+
    java调优随记-java对象大小
    java调优随记-堆和栈
    java中一直说一个汉字使用两个字节,原来是不准确的
    kv存储对抗关系型数据库
    记一篇
    变态的静态资源缓存与更新
    git add shh public key
    hashmap 的最优访问
  • 原文地址:https://www.cnblogs.com/soulmate1023/p/5335057.html
Copyright © 2011-2022 走看看