高建清
(福建江夏學(xué)院 電子信息科學(xué)學(xué)院,福建 福州 350108)
一種彩色旋轉(zhuǎn)變形驗(yàn)證碼的識(shí)別方法
高建清
(福建江夏學(xué)院 電子信息科學(xué)學(xué)院,福建 福州 350108)
針對(duì)彩色旋轉(zhuǎn)變形驗(yàn)證碼提出了一種連通區(qū)域法和顏色空間法相結(jié)合的字符分割方法,并采用多分類支持向量機(jī)進(jìn)行識(shí)別。首先,對(duì)驗(yàn)證碼圖像進(jìn)行灰度化、二值化以及去除噪聲點(diǎn);接著,使用連通區(qū)域法分割字符,而對(duì)于重疊字符采用HSI模型的顏色空間法進(jìn)一步分割,分割后進(jìn)行歸一化處理;最后,通過(guò)支持向量機(jī)進(jìn)行識(shí)別實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明,支持向量機(jī)訓(xùn)練速度快,不需要大量的訓(xùn)練樣本,對(duì)旋轉(zhuǎn)和變形特征的驗(yàn)證碼具有很高的識(shí)別率,同時(shí)也說(shuō)明了該字符分割方法比其他方法更有效。
驗(yàn)證碼;彩色旋轉(zhuǎn)變形;字符分割;支持向量機(jī)
驗(yàn)證碼的設(shè)計(jì)主要是為了區(qū)分人類和計(jì)算機(jī),防止自動(dòng)化程序的惡意攻擊和作弊行為,廣泛應(yīng)用于系統(tǒng)的用戶注冊(cè)和登錄以及網(wǎng)絡(luò)投票等交互界面中。驗(yàn)證碼的識(shí)別技術(shù)研究,一方面可以促進(jìn)人工智能的發(fā)展,另一方面也可以發(fā)現(xiàn)驗(yàn)證碼存在的缺陷,改進(jìn)生成算法,提高安全性。
字符型的驗(yàn)證碼是最常見(jiàn)的一種驗(yàn)證碼,而分割和識(shí)別是驗(yàn)證碼識(shí)別的兩個(gè)重要環(huán)節(jié)[1-3]。隨著驗(yàn)證碼識(shí)別技術(shù)的不斷提高,為了增加驗(yàn)證碼的分割和識(shí)別難度,大多數(shù)驗(yàn)證碼都要對(duì)字符進(jìn)行粘連和變形處理。旋轉(zhuǎn)和變形特征的驗(yàn)證碼是一種目前比較常用的較難識(shí)別的驗(yàn)證碼,字符在旋轉(zhuǎn)之后會(huì)產(chǎn)生粘連和重疊,容易造成分割失敗,而字符的旋轉(zhuǎn)和變形也會(huì)增加識(shí)別難度。為了避免旋轉(zhuǎn)時(shí)引起的過(guò)度重疊使人眼也難以識(shí)別,一般會(huì)給字符加上不同顏色。針對(duì)這種類型的驗(yàn)證碼,本文提出了一種分割方法,并采用支持向量機(jī)進(jìn)行識(shí)別,達(dá)到了較高的識(shí)別率。
1.1分割前處理
本文實(shí)驗(yàn)采用的驗(yàn)證碼如圖1(a)所示,大小為131*41,背景有顏色,添加了一些雜點(diǎn)或短線條,字符顏色隨機(jī)變化,并且有漸變效果,字符形狀向左或者向右旋轉(zhuǎn)一定的角度,寬度和高度比例有變化,再加上水波紋扭曲效果。在分割之前,先進(jìn)行灰度化、二值化以及去噪處理?;叶然捎眉訖?quán)平均值法[4],效果如圖1(b)所示。二值化采用全局閾值法,選取灰度值150作為固定閾值,處理后的效果如圖1(c)所示。去噪處理,是通過(guò)統(tǒng)計(jì)連通區(qū)域的黑點(diǎn)數(shù),使用長(zhǎng)度閾值為15進(jìn)行去噪,如圖1(d)所示,圖像中的大部分的噪聲點(diǎn)已經(jīng)被去除掉了。
圖1 分割前處理
1.2字符分割
字符分割是預(yù)處理過(guò)程中較難的部分,分割的準(zhǔn)確性會(huì)直接影響到最后的識(shí)別效果。分割常用的算法有投影法、連通區(qū)域法[5]以及顏色空間法,由于本文的驗(yàn)證碼具有旋轉(zhuǎn)特征,會(huì)出現(xiàn)字符上下排列和重疊的情況,而且重疊時(shí)只有兩個(gè)字符,位置不固定,因此簡(jiǎn)單的水平或者垂直投影法不能有效的分割。如果直接采用顏色空間法,由于顏色有一定的漸變,分割時(shí)會(huì)產(chǎn)生很多噪點(diǎn),去除這些噪點(diǎn)又會(huì)使字形失真,影響識(shí)別效果。因此,先采用連通區(qū)域法可以正確地分割左右和上下排列的字符,而對(duì)于重疊的情況會(huì)被連通區(qū)域法分割到同一區(qū)域,再通過(guò)驗(yàn)證碼原圖的色彩信息,使用顏色空間法能更準(zhǔn)確的分割出重疊的字符,算法流程如圖2所示。
圖2 字符分割流程圖
連通區(qū)域分割法是通過(guò)掃描二值化后圖像中的第一個(gè)黑色像素點(diǎn),然后把8領(lǐng)域區(qū)域的黑色像素也加入該區(qū)域中,直到?jīng)]有相鄰的黑色像素點(diǎn),得到一個(gè)連通區(qū)域,接著繼續(xù)掃描未訪問(wèn)過(guò)的黑色像素點(diǎn),重復(fù)上述步驟,最后將得到各個(gè)獨(dú)立連通的區(qū)域。如果連通區(qū)域數(shù)小于4則對(duì)寬度最大的連通區(qū)域進(jìn)行顏色分割,如圖3(a)所示,字符“8”和“r”被準(zhǔn)確的分割出來(lái)了,而字符“e”和“A”重疊在一起,未能分割成功。
顏色空間分割法一般不采用RGB模型,因此在顏色分割之前,需要把原圖RGB模型轉(zhuǎn)為HSI模型[6]。HSI模型用色調(diào)、飽和度以及亮度來(lái)描述色彩,而亮度與色彩無(wú)關(guān),色調(diào)的轉(zhuǎn)換公式如下:
通過(guò)實(shí)驗(yàn)觀察,本文的驗(yàn)證碼的不同顏色在色調(diào)分量的差別較大,因此選用色調(diào)作為分割的依據(jù)。先把RGB各個(gè)分量分別除以分量總和,歸一化到[0,1],再通過(guò)式(1)計(jì)算出色調(diào)分量H的值。由于驗(yàn)證碼的色彩不是純色的,有一點(diǎn)的漸變,不能簡(jiǎn)單的以邊界起點(diǎn)的色調(diào)作為判斷依據(jù),否則如果起點(diǎn)是一個(gè)雜點(diǎn),那么會(huì)嚴(yán)重影響分割效果。字符的顏色應(yīng)該是在字符上分布最多的顏色,因此需要把待分割的連通區(qū)域的像素坐標(biāo)映射到原圖中,因?yàn)楸疚闹丿B時(shí)只有兩個(gè)字符,所以只需要統(tǒng)計(jì)出在原圖中HSI模型表示的色調(diào)分量重復(fù)最多的值,以該值作為基準(zhǔn),選定一個(gè)偏差值,在范圍內(nèi)的像素點(diǎn)歸到同一個(gè)區(qū)域中,剩下的作為另一個(gè)區(qū)域。由于最后識(shí)別還是要用二值化的圖像,所以要把分割后的區(qū)域的坐標(biāo)再映射到二值化的連通區(qū)域中,再一次去除噪聲點(diǎn),得到分割后的字符,并通過(guò)統(tǒng)計(jì)各自區(qū)域中的x坐標(biāo)的平均值來(lái)確定字符的排列順序,避免在色彩分割時(shí)局部筆畫(huà)的分割錯(cuò)誤引起位置錯(cuò)亂。如圖3(b)所示,使用偏差值10進(jìn)行顏色分割,字符 “A”被完整的分割出來(lái)了,字符“e”雖然有一點(diǎn)筆畫(huà)缺失,但是在識(shí)別時(shí)使用支持向量機(jī)可以克服這種小范圍的筆畫(huà)缺失對(duì)整體識(shí)別效果的影響。
1.3歸一化
分割后的字符大小不一致,而訓(xùn)練樣本的大小是固定的,因此需要把分割后的字符圖像歸一化為統(tǒng)一的大小。歸一化過(guò)程也就是對(duì)圖像進(jìn)行線性放大或者縮小,假設(shè)圖像x軸方和y軸方向縮放比率分別為fx和fy,那么新圖中的坐標(biāo)(x1,y1)對(duì)應(yīng)原圖點(diǎn)的x0=x1/fx,y0=y1/fy。本文采用歸一化的圖像長(zhǎng)寬為16*16,歸一化的效果如圖4所示。
圖3 字符分割
圖4 歸一化
2.1支持向量機(jī)
支持向量機(jī)[7](support vector machine,SVM)是一種監(jiān)督式學(xué)習(xí)的方法,主要應(yīng)用于統(tǒng)計(jì)分類和回歸分析。在線性不可分的情況下,可以通過(guò)核函數(shù),定義如下:
式(2)中,將輸入向量使用映射φ(·)映射到更高維的空間,建立一個(gè)最大間隔的超平面,從而把在平面上不容易分類的非線性數(shù)據(jù)區(qū)分開(kāi)來(lái)。由于支持向量機(jī)找到的極值解是全局最優(yōu)解,因此對(duì)未知樣本具有良好的泛化能力,已經(jīng)廣泛應(yīng)用于模式識(shí)別領(lǐng)域的字符識(shí)別、語(yǔ)音識(shí)別以及人臉識(shí)別等方面。
常用的核函數(shù)有線性核、多項(xiàng)式核、徑向基核以及Sigmoid核,它們的定義如下:
式(3)為線性核函數(shù),式(4)的多項(xiàng)式核函數(shù)具有良好的全局性質(zhì),式(5)的Gauss徑向基函數(shù)則是局部性強(qiáng)的核函數(shù),可以將原始空間映射為無(wú)窮空間,通過(guò)調(diào)控參數(shù)σ,具有相當(dāng)高的靈活性,而采用式(6)的Sigmoid核函數(shù)時(shí),支持向量機(jī)實(shí)現(xiàn)的就是一種多層感知器神經(jīng)網(wǎng)絡(luò)。本文用于識(shí)別驗(yàn)證碼的支持向量機(jī)使用的核函數(shù)為非線性的徑向基核。
2.2多分類支持向量機(jī)
支持向量機(jī)在最原始的形式只能對(duì)兩個(gè)分類進(jìn)行區(qū)分,但是在實(shí)際應(yīng)用中大部分是多類問(wèn)題,可以采用一對(duì)多分類法或者一對(duì)一分類法來(lái)解決[8]。一對(duì)多分類法,在訓(xùn)練時(shí)每一類要跟其余所有分類進(jìn)行比較,分類性能差,而且速度較慢。一對(duì)一分類法,需要對(duì)各個(gè)分類之間構(gòu)造分類函數(shù),分類函數(shù)的個(gè)數(shù)為n(n-1)/2。本文采用一對(duì)一分類法進(jìn)行驗(yàn)證碼的訓(xùn)練,驗(yàn)證碼的字符個(gè)數(shù)為52,那么需要1326個(gè)分類函數(shù)。
3.1實(shí)驗(yàn)數(shù)據(jù)
為了更快速的獲取驗(yàn)證碼樣本,使用C#版的驗(yàn)證碼程序來(lái)生成具有旋轉(zhuǎn)變形效果的驗(yàn)證碼。驗(yàn)證碼的字符包括數(shù)字、大寫(xiě)和小寫(xiě)字母,一般驗(yàn)證碼在設(shè)計(jì)時(shí)也會(huì)去掉一些字型過(guò)于相近的字符,例如“0oOjJiIlL1”這10個(gè)字符,剩下的一共有52個(gè)字符。如果通過(guò)分割驗(yàn)證碼來(lái)得到樣本,分割不準(zhǔn)確時(shí)會(huì)造成個(gè)別樣本偏差太大,需要再花時(shí)間進(jìn)行人工篩選,為了省去篩選環(huán)節(jié),本文直接通過(guò)設(shè)置字符個(gè)數(shù)為1來(lái)批量生成訓(xùn)練樣本,字符驗(yàn)證碼對(duì)應(yīng)的答案存入文件名中,文件名后面加上對(duì)應(yīng)的編號(hào)。生成測(cè)試樣本時(shí),字符數(shù)設(shè)置為4,隨機(jī)生成1100個(gè),對(duì)應(yīng)的答案也存入文件名中,便于識(shí)別結(jié)果的檢驗(yàn)。
3.2樣本訓(xùn)練與識(shí)別結(jié)果
采用C#語(yǔ)言實(shí)現(xiàn)的支持向量機(jī)的程序,在64位的Win7操作系統(tǒng)下進(jìn)行實(shí)驗(yàn)。經(jīng)過(guò)預(yù)處理后的驗(yàn)證碼是大小為16*16的二值圖像,訓(xùn)練前把像素值為0和255,轉(zhuǎn)化為1和0,然后把二維的像素值按照行順序轉(zhuǎn)為大小為256的一維的向量。在核函數(shù)的參數(shù)選擇方面,經(jīng)過(guò)多次實(shí)驗(yàn)Gauss核的σ為6.2時(shí)效果較好。驗(yàn)證識(shí)別結(jié)果時(shí)忽略大小寫(xiě),并同時(shí)對(duì)單個(gè)字符和整個(gè)驗(yàn)證碼的識(shí)別結(jié)果進(jìn)行校驗(yàn)。表1是使用52000和104000個(gè)訓(xùn)練樣本時(shí),采用Gauss核的識(shí)別結(jié)果,可見(jiàn)支持向量機(jī)在樣本量不是很大的情況下也已經(jīng)能達(dá)到較好的識(shí)別效果,而且訓(xùn)練時(shí)間都不是很長(zhǎng)。表2是采用Gauss核和104000個(gè)訓(xùn)練樣本,分別使用文獻(xiàn)[5]的連通區(qū)域分割法和本文分割方法的識(shí)別結(jié)果,使用本文方法識(shí)別的驗(yàn)證碼的個(gè)數(shù)增加了17個(gè),識(shí)別率從91%提高到了93%,可見(jiàn)連通區(qū)域法和顏色空間法相結(jié)合能更有效的識(shí)別有重疊的比較難分割的字符。
表1 樣本數(shù)量實(shí)驗(yàn)結(jié)果
表2 字符分割實(shí)驗(yàn)結(jié)果
3.3錯(cuò)誤分析
如果驗(yàn)證碼中重疊字符顏色又很接近,那么會(huì)造成分割失敗,導(dǎo)致無(wú)法識(shí)別,如圖5(a)所示,左邊驗(yàn)證碼的“n”和“y”,右邊驗(yàn)證碼的“p”和“a”,都無(wú)法正確的分割。有些字符變形后局部形狀接近另一個(gè)字符,那么也容易造成識(shí)別錯(cuò)誤,如圖5(b)所示,第一個(gè)驗(yàn)證碼的“q”變形后接近“g”,第二個(gè)驗(yàn)證碼的“x”旋轉(zhuǎn)后有“Y”的特征。
圖5 識(shí)別結(jié)果錯(cuò)誤的驗(yàn)證碼
在驗(yàn)證碼的預(yù)處理過(guò)程中,采用連通區(qū)域法和顏色空間法相結(jié)合的方法可以更有效的分割彩色的旋轉(zhuǎn)變形的驗(yàn)證碼,分割后的字符使用訓(xùn)練好的支持向量機(jī)進(jìn)行識(shí)別,識(shí)別率達(dá)到了93%。支持向量機(jī)的訓(xùn)練速度很快,而樣本數(shù)量對(duì)識(shí)別率的影響不是很大,在樣本量不多的情況下也能達(dá)到較好的效果。此外,本文也存在一些需要改進(jìn)的地方,在字符分割方面,對(duì)于顏色相近,并且重疊的字符無(wú)法正確的分割,而有些字符在能進(jìn)行有效的顏色分割之后,因?yàn)橹丿B嚴(yán)重,也會(huì)出現(xiàn)被挖空的現(xiàn)象,導(dǎo)致識(shí)別失敗,在字符識(shí)別方面,支持向量機(jī)雖然對(duì)大部分的旋轉(zhuǎn)和變形的字符都能正確的識(shí)別出來(lái),但對(duì)于變形嚴(yán)重和外形接近的字符還是會(huì)出現(xiàn)一些識(shí)別錯(cuò)誤。
[1]尹龍,尹東,張榮,等.一種扭曲粘連字符驗(yàn)證碼識(shí)別方法[J].模式識(shí)別與人工智能,2014(3):235-241.
[2]呂剛,郝平.基于神經(jīng)網(wǎng)絡(luò)的數(shù)字驗(yàn)證碼識(shí)別研究[J].浙江工業(yè)大學(xué)學(xué)報(bào),2010,38(4):433-436.
[3]李秋潔,茅耀斌,王執(zhí)銓.CAPTCHA技術(shù)研究綜述[J].計(jì)算機(jī)研究與發(fā)展,2012,49(3):469-480.
[4]張鵬,鐘俊,郭安明,等.設(shè)備監(jiān)控圖像預(yù)處理算法改進(jìn)及其FPGA實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2011,31(6):1706-1708.
[5]楊思發(fā).驗(yàn)證碼破解算法研究及實(shí)現(xiàn)[D].南京:南京理工大學(xué),2013.
[6]王建新,張有會(huì),王志巍,等.基于HSI顏色空間的單幅圖像去霧算法[J].計(jì)算機(jī)應(yīng)用,2014,34(10):2990-2995.
[7]汪海燕,黎建輝,楊風(fēng)雷.支持向量機(jī)理論及算法研究綜述[J].計(jì)算機(jī)應(yīng)用研究,2014,31(5):1281-1286.
[8]WESTON J.Multi-class support vector machines[J].Technical Report CSD-TR-98-04,1998,102(479):1-28.
(責(zé)任編輯:朱聯(lián)九)
A Recognition Method for Color Rotation Deformation CAPTCHA
GAO Jian-qing
(College of Electronic and Information Science,F(xiàn)ujian Jiangxia University,F(xiàn)uzhou 350108,China)
Aiming at the color rotation deformation CAPTCHA, a character segmentation method which combines the method of connected regions and color space was proposed, and a multi-class support vector machine was used to recognize. Firstly, the CAPTCHA image was grayscale, binarization and removing noise points. Then, the character was segmented by the connected region method, and the color space method with HSI model was used to further segment the overlapping characters, normalized processing after segmentation. At last, the recognition experiment was conducted by support vector machine. The experimental results show that the support vector machine is fast and does not require a large number of training samples, has a high recognition rate for the rotation and deformation characteristics CAPTCHA, and also show this character segmentation method is more effective than other methods.
CAPTCHA; color rotation deform; character segmentation; support vector machine
TP391.43
A
1673-4343(2016)04-0032-05
10.14098/j.cn35-1288/z.2016.04.006
2016-03-29
福建省教育廳科技項(xiàng)目(JB13190);福建江夏學(xué)院教育教學(xué)改革項(xiàng)目(J2014T002)
高建清,男,福建漳州人,講師。主要研究方向:模式識(shí)別與軟件工程。