一種字符扭曲粘連的圖形驗證碼識別方法
【技術領域】
[0001] 本發(fā)明屬于圖像識別技術領域,更為具體地講,涉及一種字符扭曲粘連的圖形驗 證碼識別方法。
【背景技術】
[0002] 驗證碼(CAPTCHA)是"CompletelyAutomatedPublicTuringtesttotell ComputersandHumansApart"(全自動區(qū)分計算機和人類的圖靈測試)的縮寫,是一種區(qū) 分用戶是計算機還是人的公共全自動程序。研究驗證碼識別技術則是人工智能的范疇,通 過對驗證碼識別技術的研究,使機器能夠達到人眼的識別效果,這對于人工智能的發(fā)展具 有很大的推動作用。同時從事大數(shù)據(jù)分析的科研機構和科研人員需要獲取網(wǎng)上大量的數(shù)據(jù) 以進行科學研究,然而驗證碼的存在阻礙了數(shù)據(jù)的順利獲取,驗證碼識別技術的發(fā)展有利 于擺脫這種困境,從而推動大數(shù)據(jù)分析相關技術的發(fā)展。
[0003] 驗證碼的種類比較多,主要有基于圖像模式,基于文本模式和基于語音模式三種。 而最廣泛使用的是基于文本模式的驗證碼。它通過對驗證碼中的文本字符進行扭曲,變形 以及增加噪音來阻止驗證碼中的文本內(nèi)容被機器人程序通過模式識別的方式進行識別。基 于文本模式的驗證碼最初只由包含簡單的數(shù)字的圖片組成。文本中的字符沒有扭曲變形 等,字符沒有背景圖片和噪音。但是這種驗證碼沒有存在多久就被機器人程序自動識別。自 從驗證碼出現(xiàn),識別技術和反識別技術就競相競賽。一方面,由于識別技術發(fā)展,推動驗證 碼越來越復雜,以至于出現(xiàn)人眼難以識別的驗證碼。另一方面,出于各方面的需求,驗證碼 的識別技術也越來越成熟,成為了推動圖形學和圖像處理技術發(fā)展的一股重要的力量。
[0004] 驗證碼識別的瓶頸在于字符的分割,隨著手寫體識別技術的不斷發(fā)展,很多算法 對于單字符識別準確度都達到了90%以上,我們知道手寫體的扭曲有很大的隨機性,這和 驗證碼如出一轍,所以這些技術可以直接用于驗證碼單字符的識別,單字符識別算法中,比 較成熟且準確率較高的有BP神經(jīng)網(wǎng)絡,卷積神經(jīng)網(wǎng)絡,支持向量機等。如果我們能找到一種 算法將相互粘連的字符準確的分開,則驗證碼識別準確率將得到質(zhì)的提升。但遺憾的是,至 今沒能找到一種通用的算法可以將粘連的字符準確分開,多年來研究人員提出了很多字符 分割算法,比如顏色填充法,投影直方圖分割法,基于背景的細化算法,滴水算法。但效果都 不理想。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的目的就為了解決字符粘連的驗證碼識別。由于字符切割的效果不好,我 們提出一種基于滑動窗口的驗證碼識別算法。
[0006] 本發(fā)明的驗證碼識別算法,包括以下步驟:
[0007] 1.獲取一定量的驗證碼圖片,人工將這些驗證碼圖片中的單個字符分割出來(識 別的時候不需要分割),并放入文件夾,相同的字符放入相同的文件夾,文件夾以字符的名 字命名。這樣便得到了模板字符集。
[0008] 2.對于待識別的驗證碼,首先將其轉(zhuǎn)換為灰度圖,并除去圖片邊緣空白的部分,然 后用大津算法提取圖片的前景,并將圖片像素二值化。
[0009] 3.假設驗證碼中有N個字符,我們先從左右向識別前LN72」個字符,首先識別第一 個字符,方法是遍歷每種字符的模板字符集,讓每張模板字符圖片在待識別驗證碼圖片上 的一定范圍內(nèi)滑動,每滑動一個位置,計算模板圖片與滑動窗口區(qū)域的相似度。找出相似度 最高時對應的模板圖片,并記錄第一個字符匹配每類字符時相似度的最大值及對應的滑動 窗口的位置。將各類字符相似度的最大值進行排序,取出相似度最高的前K種匹配,并將這K 種匹配的匹配狀態(tài)記錄下來。
[0010] 4.從左往右匹配時,對于前面字符匹配的K種匹配狀態(tài)的每種匹配狀態(tài),分別以其 為起點匹配驗證碼的下一個字符,匹配方法與第一個字符相似,同樣保存K種匹配狀態(tài),根 據(jù)乘法原理,可得到前N/2個字符的KLN/2」種匹配方式。
[0011] 5.然后從右向左匹配,先匹配最后一個字符,方法與匹配第一個字符類似,得到最 相似的K種匹配字符。并將這K種匹配的匹配狀態(tài)記錄下來。
[0012] 6.從右向左匹配時,對于前面字符匹配的K種匹配狀態(tài)的每種匹配狀態(tài)分別以其 為起點匹配驗證碼的下一個字符。每種起始狀態(tài)保存K種最優(yōu)的匹配。根據(jù)乘法原理,可得 至IJ后N- / 2」個字符的kn-~:」種匹配方式。
[0013] 7.為了將匹配誤差降到最低,采用左右字符輪流匹配的方式,即從最左邊開始匹 配第一個字符,然后從右邊開始匹配最后一個字符,再從左邊開始匹配第二個字符,再從右 邊開始匹配倒數(shù)第二個字符,以此類推,直到所有字符匹配完畢。
[0014] 8.經(jīng)過前面的處理,我們可得到待識別驗證碼圖片N個字符對應的相似度最高的 KN種匹配方式。對于每一種匹配方式,計算N個模板字符圖片與整個驗證碼圖片的相似度。 最終將得到相似度最高的匹配方式作為驗證碼識別的最終結果。
【附圖說明】
[0015] 圖1是本發(fā)明所涉及的驗證碼識別方法的流程圖;
[0016] 圖2為驗證碼原始圖像;
[0017]圖3為灰度化并切除白邊后圖像;
[0018] 圖4為放大后的第一個字符匹配示意圖;
[0019] 圖5為放大后的第二個字符匹配示意圖。
【具體實施方式】
[0020] 下面結合附圖對本發(fā)明的【具體實施方式】進行描述,以便本領域的技術人員更好地 理解本發(fā)明。需要特別提醒注意的是,在以下的描述中,當已知功能和設計的詳細描述也許 會淡化本發(fā)明的主要內(nèi)容時,這些描述在這里將被忽略。
[0021] 1.獲取一定量的驗證碼圖片,本實施例中要識別的驗證碼圖片中的字符是字母或 數(shù)字,共需識別四個字符。人工將這些驗證碼圖片中的單個字符分割出來(識別的時候不需 要分割),并放入文件夾,相同字符的模板圖片放入相同的文件夾,文件夾以字符的名字命 名,比如a,b,c..1,2,3...,由于驗證碼不區(qū)分大小寫,所以同一個字母的大、小寫模板放在 同一個文件夾中,這樣便得到了 36個字符的模板圖片集。
[0022] 2.待識別驗證碼圖片為三通道彩色圖像,為了便于處理,采用以下步驟將驗證碼 圖片進行二值化處理。
[0023] 2 · 1首先將其按公式Gray=R*0 · 299+G*0 · 587+Β*0 · 114轉(zhuǎn)換為灰度圖,然后在待識 別驗證碼圖片上通過橫向掃描和豎向掃描得到驗證碼圖片的最小外接矩形后去除矩形外 圖片邊緣空白部分。原始圖像及灰度化并切除白邊后的圖像見說明書附圖圖2、圖3.
[0024] 2.2再采用大津法提取圖片的前景,并將圖片像素二值化。對于圖像I(x,y),前景 (即目標)和背景的分割閾值記作T。由于驗證碼圖片背景為白色,灰度值較大,故灰度小于T 的為前景,灰度大于T的為背景。屬于前景的像素點數(shù)占整幅圖像的比例記為ω〇,其平均灰 度W,背景像素點數(shù)占整幅圖像的比例為ωι,其平均灰度為&。圖像的總平均灰度記為μ,