新生活......

  搬到老校區兩天了,宿舍的同窗都很棒,雖然小黑屋很小,可是你們在一塊兒以爲很愜意,今天在實驗室呆了一天,以爲時間真的過得很快,以爲本身還有不少不會,應該用在實驗室的時間加緊遇上,用師姐的一句話吧,生活仍是須要夢想的。和旁邊的師姐溝通,慢慢來學習,還不晚歐。html

  今天的收穫:python

  0.對於不一樣的驗證碼有不一樣的處理方法,可是整合的方法還不太會數組

  1.灰度化,就是對於一副彩色的圖片,對於每個像素,都是有R,G,B三個份量來各自分配比例調和出來的。學習

    RGB彩色圖像能夠當作是由3副單色的灰度圖像構成的,能夠直接取RGB通道中的任一個通道獲得灰度化圖像,如clip_image014,前提是圖像中目標          像素的亮度信息主要分佈在B通道上,不然灰度化結果將是亮度信息的大量丟失。灰度圖像又叫亮度圖像.url

         可是要對彩圖灰度化時,有4種方法:spa

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

    1.2 GRAY=MAX(R,G,B)htm

    1.3 GRAY=MIN(R,G,B)對象

    1.4 算數平均值blog

  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

 

  人要有夢想,但也不能被現實戰勝。晚安,博客園。

相關文章
相關標籤/搜索