呂 霽
(黎明職業(yè)大學(xué)信息與電子工程學(xué)院,福建 泉州 362000)
伴著21世紀(jì)的到來(lái),各項(xiàng)科學(xué)技術(shù)有了質(zhì)的飛躍,特別是在計(jì)算機(jī)科學(xué)領(lǐng)域的發(fā)展,而在這個(gè)領(lǐng)域中發(fā)展最快最為迅猛的一個(gè)學(xué)科便是計(jì)算機(jī)網(wǎng)絡(luò)技術(shù),不管是在科研或者是在民用商用都是最為活躍的。在實(shí)際的應(yīng)用過(guò)程中,卻有許多惡意的行為,例如:編寫惡意程序,機(jī)器人自動(dòng)登錄注冊(cè),群發(fā)信息和自動(dòng)回復(fù)等等。驗(yàn)證碼識(shí)別技術(shù)正是為了應(yīng)對(duì)這些特殊情況而誕生。驗(yàn)證碼識(shí)別技術(shù)的研究在國(guó)外進(jìn)行的比較早,而且在技術(shù)的各領(lǐng)域也取得了一定的成績(jī)。字符識(shí)別的研究最先是在俄國(guó),解決了當(dāng)時(shí)視覺障礙的難題。接下來(lái)的四十幾年時(shí)間不斷攻克技術(shù)難關(guān),研發(fā)出當(dāng)時(shí)全世界第一臺(tái)字符識(shí)別機(jī)器。上個(gè)世紀(jì)九十年代,在圖像技術(shù)、人工智能技術(shù)以及模式識(shí)別領(lǐng)域飛速發(fā)展的基礎(chǔ)上,誕生了復(fù)雜的字符識(shí)別系統(tǒng)。此時(shí),先進(jìn)的神經(jīng)網(wǎng)絡(luò)理論、自然語(yǔ)言處理技術(shù)、模糊集推理以及隱馬爾科夫模型被廣泛地應(yīng)用于實(shí)際過(guò)程中。我國(guó)的驗(yàn)證碼識(shí)別研究大概從80年代開始出現(xiàn),起步相對(duì)國(guó)外較晚,但最近幾年在CAPTCHA、驗(yàn)證碼識(shí)別、OCR識(shí)別方面,我國(guó)的研究發(fā)展迅速,從事相關(guān)方面研究的學(xué)者和專家也越來(lái)越多。
圖像預(yù)處理的對(duì)象是圖像,屬于初級(jí)圖像的范圍內(nèi),處理輸入的數(shù)據(jù)及輸出的數(shù)據(jù)。為了便于對(duì)圖像進(jìn)行分析,驗(yàn)證碼圖像預(yù)處理要對(duì)圖像數(shù)據(jù)有目的性的圖像增強(qiáng)。預(yù)處理是源頭是最重要的一個(gè)步驟,任務(wù)是把原始圖像經(jīng)過(guò)某種方式轉(zhuǎn)換為二值化圖像,去掉那些和類別不相關(guān)的因素,例如標(biāo)準(zhǔn)化位置及尺寸。整個(gè)過(guò)程分為三個(gè)步驟:灰度化、二值化、去噪,整個(gè)流程如圖1.1所示:
圖1.1 預(yù)處理流程圖
如何把色彩鮮艷光鮮亮麗的彩色圖像轉(zhuǎn)化為灰度圖像便是灰度化處理的過(guò)程。在這里采用的是RGB模型,假如RGB三個(gè)顏色值都一樣的話,那么它表示的顏色是黑白的,RGB的值便是灰度值。為了減少那些無(wú)謂的干擾,減小過(guò)程復(fù)雜度,縮短處理程序的時(shí)間,壓縮整個(gè)計(jì)算機(jī),通常把24位真彩色轉(zhuǎn)換成灰度圖像,因?yàn)橛脩粼趯?duì)字符識(shí)別的過(guò)程中經(jīng)常受到彩色驗(yàn)證碼圖像中各種顏色的刻意干擾,在轉(zhuǎn)換后的灰度圖像中我們可以獲得更多的圖像信息。
怎樣才能避免神經(jīng)網(wǎng)絡(luò)中學(xué)習(xí)樣本的干擾,使分割的效果實(shí)現(xiàn)最大化?這就是圖像處理的任務(wù),它將驗(yàn)證碼圖像的背景淡化,前景有效增強(qiáng)。那么最簡(jiǎn)單有效的辦法就是通過(guò)白色和黑色這兩種對(duì)比及其醒目的顏色才實(shí)現(xiàn),背景為灰度值255,既白色;自然前景色就是灰度值為0的黑色,這樣灰度值就被最小化為2級(jí),并且方便了以后處理數(shù)據(jù)的工作。局部閾值法、全局閾值法和動(dòng)態(tài)閾值法是二值化常用的三種方法。由于圖像的豐富多樣性使得簡(jiǎn)單的二值化算法并不具備通用性。盡管在圖像的二值化方便進(jìn)行了很多研究,目前都只是針對(duì)具體出現(xiàn)的問(wèn)題,在二值化理論研究方面還沒有找到通用的方法。使用驗(yàn)證碼的目的就是要增加圖像的辨別度,所以在生產(chǎn)驗(yàn)證碼時(shí)通常會(huì)添加噪聲線和噪點(diǎn)以影響驗(yàn)證碼的識(shí)別。在進(jìn)行驗(yàn)證碼識(shí)別的時(shí)候需要將這些添加的噪聲去掉。
下面介紹一種濾波的方法進(jìn)行去除噪聲。對(duì)于噪聲一般都是相對(duì)單獨(dú)的像素點(diǎn),而目標(biāo)字符區(qū)域一般都是有很多個(gè)相似組成的,而且在物理位置上也有一定的關(guān)聯(lián),考慮到這樣的特性,可以使用中值法來(lái)對(duì)圖像中的噪點(diǎn)進(jìn)行去除。如圖1.2所示:
圖1.2 去噪流程圖
字符分割將上一步驟二值化后的圖像中具有意義的各個(gè)字符分離出來(lái),用于下一個(gè)步驟設(shè)計(jì)識(shí)別算法對(duì)每一個(gè)字符進(jìn)行識(shí)別。字符分割的過(guò)程中包含兩個(gè)部分,一個(gè)是單個(gè)字符,另一個(gè)是字符區(qū)域。在對(duì)字符的分割方法中,通常采用對(duì)粘連字符進(jìn)行分割或非粘連字符分割算法者兩種方法的組合。
對(duì)非粘連字符驗(yàn)證碼的分割相對(duì)比較容易,可以采用基于投影分割法。在上一個(gè)步驟處理完畢之后,主要計(jì)算在X軸方向上,基于該方向的Y軸的黑色像素總數(shù)。如圖2.1所示,便是該方法的執(zhí)行過(guò)程圖樣,左圖為二值化原圖,右圖為基于投影分割算法的直方圖。
圖2.1 垂直投影直方圖分割算法
從結(jié)果中我們可以看到,雖然它可以輕松的將間隔比較明顯的字符驗(yàn)證碼有效地切開,但是當(dāng)遇到較為復(fù)雜的驗(yàn)證碼還存在著很大的局限性。利用上下輪廓是另一種基于投影方法的直方圖字符驗(yàn)證碼分割算法。這種算法的特點(diǎn)是采用字符的上下邊界來(lái)進(jìn)行差值投影,與垂直投影方法類似。如圖2.2展示了上下輪廓方法的直方圖圖樣,利用直方圖的波谷區(qū)域進(jìn)行字符串的分割。其中,左邊即原圖,右邊圖形是上下輪廓直方圖。
圖2.2 上下輪廓直方圖法
在字符分割技術(shù)中還有另外一種算法,連通域算法;除了處理噪聲之外,它還可以應(yīng)用于其他方面。根據(jù)種子的填充算法,選擇一個(gè)種子標(biāo)上標(biāo)記,并作為初始的種子點(diǎn),搜索驗(yàn)證碼圖像中那些未被標(biāo)記過(guò)的點(diǎn),直到所有的點(diǎn)都已被標(biāo)記,那么圖像中分離的區(qū)域就自動(dòng)被尋獲。
最后,結(jié)合前面所描述的兩種方法再加上尋找最短路徑算法來(lái)設(shè)計(jì)一個(gè)最為高效的字符分割法。首先利用連通域分割法分割出驗(yàn)證碼圖像的各個(gè)連通域,再利用連通域的數(shù)目和圖像上存在的字符個(gè)數(shù)的比較來(lái)判斷有多少個(gè)粘連字符,字符分割的范圍便得到確認(rèn),其中一些垂直投影沒有重合而且只是稍微粘連的字符,我們可以采用投影法最第二次的分割,那些又扭曲又黏貼的字符,只能采用最短路徑的方法做最后一次分割。
字符的識(shí)別其實(shí)就是將圖片進(jìn)行處理并還原回字符文本的過(guò)程。通常分為基于字符分割的識(shí)別(包括卷積神經(jīng)網(wǎng)絡(luò)、SVM、各種統(tǒng)計(jì)距的識(shí)別法)和模板匹配法識(shí)別。
這種識(shí)別方法的模板數(shù)量比較有限,但是制作簡(jiǎn)單,只要很短的時(shí)間我們便可以借助相應(yīng)的軟件為不能分割的驗(yàn)證碼制作模板。模板是利用字符特征的N維向量制作的,在實(shí)際匹配中的模板就是字符的點(diǎn)陣圖。經(jīng)過(guò)上面步驟分割后,便可以利用連通域的計(jì)算來(lái)匹配字符模板。用這種方法就避免了字符分割中的困難。它采用狄度相關(guān)的匹配,使用序貫相似性的檢測(cè)方法(SSDA)在驗(yàn)證碼圖像中尋找最佳的匹配點(diǎn)。
早在1986年,當(dāng)時(shí)的科學(xué)家便有了關(guān)于基于BP的神經(jīng)網(wǎng)絡(luò)的理論概念,并組織了相關(guān)的學(xué)習(xí)方法。半個(gè)世紀(jì)過(guò)去了,它成為現(xiàn)今最流行的神經(jīng)網(wǎng)絡(luò)模型中的一種。BP神經(jīng)網(wǎng)絡(luò)是一個(gè)循環(huán)的過(guò)程,是一種多層前饋網(wǎng)絡(luò),并且是按誤差逆?zhèn)鞑サ乃惴ú粩嘤?xùn)練的,它并不需要事先知道輸出結(jié)果和輸入信息之間有什么關(guān)系,通過(guò)反向傳播的數(shù)據(jù)來(lái)不斷地調(diào)整網(wǎng)絡(luò)的閾值和權(quán)值,利用最速下降法來(lái)訓(xùn)練樣本,將網(wǎng)絡(luò)誤差的平方和降到最低?;贐P的神經(jīng)網(wǎng)絡(luò)模型的拓?fù)浣Y(jié)構(gòu)由三個(gè)部分組成,既輸入層、輸出層和隱含層。輸出層得到的數(shù)據(jù)將被用來(lái)和實(shí)際情況做對(duì)比,如果有誤差,將返回神經(jīng)網(wǎng)絡(luò)重新調(diào)整,整個(gè)過(guò)程循環(huán)進(jìn)行到符合要求為止。如圖3.1所示為BP神經(jīng)網(wǎng)絡(luò)的完整結(jié)構(gòu)圖。
圖3.1 BP神經(jīng)網(wǎng)絡(luò)
基于BP神經(jīng)網(wǎng)絡(luò)的識(shí)別方法因其高效而準(zhǔn)確的識(shí)別過(guò)程,被大多數(shù)字符驗(yàn)證碼識(shí)別所采用。BP神經(jīng)網(wǎng)絡(luò)根據(jù)字符驗(yàn)證碼中所包含的三種形式:數(shù)字,小寫字母及大寫字母來(lái)設(shè)計(jì)對(duì)應(yīng)的三種子網(wǎng)網(wǎng)絡(luò),如圖3.2所示。
圖3.2 字符驗(yàn)證碼對(duì)應(yīng)神經(jīng)網(wǎng)絡(luò)子網(wǎng)網(wǎng)絡(luò)
子網(wǎng)網(wǎng)絡(luò)如圖所示,它是基于驗(yàn)證碼字符的特征,可以分為四個(gè)步驟:
(1)輸入信息由上而下順序傳播,從輸入層通向隱含層最后是輸出層;
(2)BP神經(jīng)網(wǎng)絡(luò)的結(jié)果與實(shí)際數(shù)據(jù)肯定是會(huì)有一定的誤差信號(hào)。誤差信號(hào)的消除需要對(duì)輸入層、隱含層和輸出層之間的誤差進(jìn)行反向傳播來(lái)逐層進(jìn)行修正,是一個(gè)節(jié)點(diǎn)之間連接權(quán)逆向的過(guò)程。
(3)是一個(gè)由誤差信號(hào)逆向傳播修正與網(wǎng)絡(luò)數(shù)據(jù)順序傳播反復(fù)交替進(jìn)行的,是記憶型的基于網(wǎng)絡(luò)的訓(xùn)練過(guò)程;
(4)誤差信息有一個(gè)極值,BP神經(jīng)網(wǎng)絡(luò)的全局誤差有一個(gè)趨向極值的收斂過(guò)程。
把分割后的二值化圖像輸入到學(xué)習(xí)訓(xùn)練完成后的BP神經(jīng)網(wǎng)絡(luò)中,便能準(zhǔn)確有效地識(shí)別出二值化圖像里面的字符,分析出實(shí)際結(jié)果。構(gòu)建合適的BP神經(jīng)網(wǎng)絡(luò),調(diào)整網(wǎng)絡(luò)學(xué)習(xí)訓(xùn)練的目的性,調(diào)整網(wǎng)絡(luò)中神經(jīng)單元的個(gè)數(shù),實(shí)現(xiàn)識(shí)別和記憶的不同復(fù)雜度,符合各種用戶的需求。
這里主要描述了驗(yàn)證碼識(shí)別過(guò)程的三個(gè)步驟,驗(yàn)證碼圖像預(yù)處理(灰度化、二值化和去噪),字符的分割以及字符的識(shí)別。對(duì)驗(yàn)證碼圖像的預(yù)處理也分為三個(gè)步驟,其中的關(guān)鍵因素是二值化和去噪的問(wèn)題。圖像的二值化一般采用局部閡值法和幾種全局閡值的方法,在大量的實(shí)際數(shù)據(jù)中發(fā)現(xiàn)全局閾值法中的迭代法和最大類間方差法在驗(yàn)證碼圖像的二值化處理中適應(yīng)性較強(qiáng)。根據(jù)不同驗(yàn)證碼的特點(diǎn),分別采用不同的處理方法進(jìn)行去噪,均實(shí)現(xiàn)了理想的效果。根據(jù)粘連字符和非粘連字符驗(yàn)證碼設(shè)計(jì)不同的分割字符方法。通過(guò)對(duì)結(jié)構(gòu)分析法和模板匹配法所做的分析,這兩種方法不具備一般的通用性,故本文主要討論基于BP的神經(jīng)網(wǎng)絡(luò)驗(yàn)證碼的識(shí)別方法。
目前,驗(yàn)證碼破解技術(shù)成功識(shí)別了互聯(lián)網(wǎng)上大部分的驗(yàn)證碼,里面不乏一些相對(duì)困難的驗(yàn)證碼。盡管如此,互聯(lián)網(wǎng)上仍有許多難以破解的驗(yàn)證碼,例如google的Gmail登陸界面上的驗(yàn)證碼等。故以本文研究為基礎(chǔ),尚有大量工作需要我們?nèi)ネ瓿伞?/p>
[1]張淑雅,趙一鳴,趙小宇等.認(rèn)證碼字符識(shí)別方法的研究[J].寧波大學(xué)學(xué)報(bào):理工版,2007
[2]坤燕昌,曾大海.淺析驗(yàn)證碼在B/S系統(tǒng)安全性中的應(yīng)用[J].西昌學(xué)院學(xué)報(bào),2005.l9(3):79-80
[3]徐海蘭,劉彥婷,楊磊.模式識(shí)別中三種字符識(shí)別的方法[J].北京廣播學(xué)院學(xué)報(bào),2005.l2(4):3,38
[4]賈少銳,李麗宏,安慶賓.BP神經(jīng)網(wǎng)絡(luò)算法在字符識(shí)別中的應(yīng)用[J].科技情報(bào)開發(fā)與經(jīng)濟(jì),2007.17(2):167-169
[5]王小波,王興芬.基于MODI的驗(yàn)證識(shí)別系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].背景信息科技大學(xué)學(xué)報(bào),2010.25(1):85-88
[6]朱邵文,陳光喜.一種簡(jiǎn)單的基于字符形狀的驗(yàn)證碼識(shí)別技術(shù)[J].桂林電子科技大學(xué)學(xué)報(bào),2010.30(1):59-62
河北能源職業(yè)技術(shù)學(xué)院學(xué)報(bào)2015年1期