專(zhuān)利名稱(chēng):一種驗(yàn)證碼識(shí)別方法
技術(shù)領(lǐng)域:
本發(fā)明涉及圖像處理技術(shù)領(lǐng)域,具體涉及一種有干擾點(diǎn)和背景色的驗(yàn)證碼識(shí)別方法。
背景技術(shù):
驗(yàn)證碼(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自動(dòng)區(qū)分計(jì)算機(jī)和人類(lèi)的圖靈測(cè)試)的縮寫(xiě),是一種用 于區(qū)分計(jì)算機(jī)和人的公共全自動(dòng)程序。驗(yàn)證碼一般通過(guò)將一串隨機(jī)產(chǎn)生的數(shù)字或符號(hào),生 成一幅圖片,圖片里加上一些干擾元素,例如干擾點(diǎn),由用戶(hù)肉眼識(shí)別其中的驗(yàn)證碼信息, 輸入表單提交網(wǎng)站驗(yàn)證,驗(yàn)證成功后才能使用某項(xiàng)功能。因此通過(guò)驗(yàn)證碼可以防止惡意破 解密碼、刷票、論壇灌水,有效防止某個(gè)黑客對(duì)某一個(gè)特定功能用特定程序暴力破解方式進(jìn) 行不斷的登陸嘗試,提高網(wǎng)站的安全性。實(shí)際開(kāi)發(fā)網(wǎng)站系統(tǒng)中基于安全性考慮必須要引入 驗(yàn)證碼,但驗(yàn)證碼的引入?yún)s阻礙測(cè)試人員利用自動(dòng)化測(cè)試工具對(duì)系統(tǒng)進(jìn)行自動(dòng)化測(cè)試工 作,現(xiàn)有技術(shù)的自動(dòng)化測(cè)試工具大多采用0CR(0ptical Character Recognition,光學(xué)字符 識(shí)別)技術(shù),只能對(duì)無(wú)干擾雜色、白色背景、深色字體等簡(jiǎn)單驗(yàn)證碼進(jìn)行自動(dòng)識(shí)別,而在實(shí) 際網(wǎng)站系統(tǒng)開(kāi)發(fā)中都會(huì)采用具有一定干擾點(diǎn)、不同顏色背景的驗(yàn)證碼,現(xiàn)有技術(shù)自動(dòng)化測(cè) 試工具的驗(yàn)證碼識(shí)別方法亟待改進(jìn)。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題是提供一種驗(yàn)證碼識(shí)別方法,克服現(xiàn)有技術(shù)自動(dòng)化測(cè)試 工具驗(yàn)證碼識(shí)別方法無(wú)法對(duì)有干擾點(diǎn)和背景色的驗(yàn)證碼進(jìn)行識(shí)別的缺陷。本發(fā)明為解決上述技術(shù)問(wèn)題所采用的技術(shù)方案為一種驗(yàn)證碼識(shí)別方法,包括步驟Al、將驗(yàn)證碼圖像數(shù)據(jù)加載到內(nèi)存中;A2、對(duì)所述驗(yàn)證碼圖像進(jìn)行二值化處理,得到二值化圖像數(shù)據(jù);A3、對(duì)所述二值化圖像數(shù)據(jù)進(jìn)行取反處理,得到取反圖像數(shù)據(jù);A4、對(duì)所述取反圖像數(shù)據(jù)進(jìn)行去除邊框處理,得到無(wú)邊框圖像數(shù)據(jù);A5、對(duì)所述無(wú)邊框圖像數(shù)據(jù)進(jìn)行去除干擾點(diǎn)處理,得到最終圖像數(shù)據(jù);A6、調(diào)用OCR識(shí)別程序?qū)λ鲎罱K圖像數(shù)據(jù)進(jìn)行字符識(shí)別。所述的驗(yàn)證碼識(shí)別方法,其中所述步驟A2包括步驟按照灰度變換公式Y(jié) = 0. 3*R+0. 59*G+0. 11*B確定灰度變換矩陣,其中R、G、B的取值范圍為0到255的正整數(shù)。所述的驗(yàn)證碼識(shí)別方法,其中所述步驟A2包括步驟根據(jù)公式
ηm = f(x ; y))/n
Issl確定二值化閥值,其中m為二值化閥值,f為輸入圖像,η為所有像素的數(shù)目,f (X, y)為坐標(biāo)(x,y)處像素點(diǎn)的灰度值。
所述的驗(yàn)證碼識(shí)別方法,其中所述步驟A3包括步驟按照取反變換公式Y(jié) =-1*R+_1*G+-1*B確定取反變換矩陣,其中R、G、B的取值范圍為0到255的正整數(shù)。所述的驗(yàn)證碼識(shí)別方法,其中所述步驟A4包括步驟通過(guò)在指定寬度的矩形區(qū)域 填充白色像素點(diǎn)數(shù)據(jù)對(duì)所述取反圖像數(shù)據(jù)進(jìn)行去除邊框處理。所述的驗(yàn)證碼識(shí)別方法,其中所述步驟A5包括步驟對(duì)所述無(wú)邊框圖像數(shù)據(jù)的每 一個(gè)像素點(diǎn)數(shù)據(jù)進(jìn)行遍歷,判斷其四周是否都為白色像素點(diǎn)數(shù)據(jù),如果是則將該像素點(diǎn)數(shù) 據(jù)改為白色像素點(diǎn)數(shù)據(jù)。本發(fā)明的有益效果本發(fā)明驗(yàn)證碼識(shí)別方法通過(guò)對(duì)有干擾點(diǎn)和背景色的驗(yàn)證碼進(jìn) 行正確識(shí)別,確保了自動(dòng)化測(cè)試流程的順利進(jìn)行,提高了自動(dòng)化測(cè)試的工作效率。
本發(fā)明包括如下附圖圖1為本發(fā)明驗(yàn)證碼識(shí)別方法流程圖;圖2為本發(fā)明實(shí)施例驗(yàn)證碼圖像;圖3為本發(fā)明實(shí)施例二值化處理后的驗(yàn)證碼圖像;圖4為本發(fā)明實(shí)施例取反處理后的驗(yàn)證碼圖像;圖5為本發(fā)明實(shí)施例去除邊框處理后的驗(yàn)證碼圖像;圖6為本發(fā)明實(shí)施例去除干擾點(diǎn)處理后的驗(yàn)證碼圖像。
具體實(shí)施例方式下面根據(jù)附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)說(shuō)明如圖1所示,本發(fā)明驗(yàn)證碼識(shí)別方法,包括步驟Al、將驗(yàn)證碼圖像數(shù)據(jù)加載到內(nèi)存中;A2、對(duì)所述驗(yàn)證碼圖像進(jìn)行二值化處理,得到二值化圖像數(shù)據(jù);A3、對(duì)所述二值化圖像數(shù)據(jù)進(jìn)行取反處理,得到取反圖像數(shù)據(jù);A4、對(duì)所述取反圖像數(shù)據(jù)進(jìn)行去除邊框處理,得到無(wú)邊框圖像數(shù)據(jù);A5、對(duì)所述無(wú)邊框圖像數(shù)據(jù)進(jìn)行去除干擾點(diǎn)處理,得到最終圖像數(shù)據(jù);A6、調(diào)用OCR識(shí)別程序?qū)λ鲎罱K圖像數(shù)據(jù)進(jìn)行字符識(shí)別。(1)加載驗(yàn)證碼圖像輸入驗(yàn)證碼圖片地址,通過(guò)DownLoadlmage函數(shù),下載驗(yàn)證碼圖片流數(shù)據(jù),并保存 到 Windows 中 GDI+(Graphics Device Interface 的縮寫(xiě),是圖形設(shè)備接口的意思)TImage 類(lèi)的一個(gè)CodeImage變量中,下載的驗(yàn)證碼原圖如圖2所示。根據(jù)OTI+描述TImage存儲(chǔ) 原理圖像按每個(gè)像素的顏色都存儲(chǔ)為32位的數(shù)紅色(R)、綠色(G)、藍(lán)色(B)和透明度(A) 各占8位。顏色矢量采用4元組形式(紅色、綠色、藍(lán)色、alpha)。例如,顏色矢量(0,255, 0,255)表示一種沒(méi)有紅色和藍(lán)色但綠色達(dá)到最大亮度的不透明顏色。顏色矢量可以旋轉(zhuǎn)和 縮放等線性變換,而GDI+中為了實(shí)現(xiàn)顏色矢量的平移等非線性變換,約定一個(gè)5 X 5矩陣應(yīng) 用任何組合形式的線性變換和平移。(2)圖像二值化處理驗(yàn)證碼的原圖是一個(gè)黑色背景、紫色邊框、紅色文字和雜色干擾點(diǎn)的彩色圖片,需要先變成灰度圖像,GDI+函數(shù)中已經(jīng)提供顏色變換功能,但需要定義灰度變換矩陣,按照 顏色空間原理中灰度變換公式Y(jié) = 0. 3*R+0. 59*G+0. 11*B (其中R、G、B的取值范圍為0 255)得到灰度變換矩陣如下
float [] [JGrayMX = {根據(jù)上面變換矩陣,調(diào)用OTI+中的灰度變換方法進(jìn)行處理圖像,⑶1+灰度變換原 理為對(duì)圖像每一個(gè)像素點(diǎn)的顏色矢量進(jìn)行線性變換(即為乘法運(yùn)算的累積和),得到新的 像素點(diǎn),形成變換后灰度圖像。根據(jù)上面的得到的灰度圖像,需要設(shè)定閥值進(jìn)行二值化處理,此例采用平均灰度 值法計(jì)算二值化閥值,所用公式如下其中m為二值化閥值,f為輸入圖像,η為所有像素的數(shù)目,f(x,y)為坐標(biāo)(x,y) 處像素點(diǎn)的灰度值。此例子中計(jì)算閥值為20。根據(jù)圖像二值化算法,像素點(diǎn)的灰度值高于20的像素設(shè)置為1,即顏色矢量為 (255,255,255,255),低于20的像素設(shè)置為0,即顏色矢量為(0,0,0, 255)。利用GDI+中圖 像處理函數(shù),按照設(shè)置灰度變換矩陣和閥值參數(shù),得到的二值化圖像如圖3所示。(3)圖像取反色處理根據(jù)(2)中得到的二值化圖像,還是存在黑色背景,因此需要進(jìn)行圖像取反處理; 對(duì)二值化圖像取反其實(shí)就將黑、白色像素點(diǎn)互換處理,按照顏色空間原理中取反變換公式Y(jié) =-1*R+_1*G+-1*B(其中R、G、B的取值范圍為0 255)得到取反變換矩陣如下float [] [] InvertMX = {new float [] {_1,0,0,0,0},new float [] {0,-1,0,0,0},new float [] {0,0,-1,0,0},new float [] {0,0,0,1,0},new float[] {1,1,1,0,1}};根據(jù)上面的變換矩陣,對(duì)圖像每一個(gè)像素點(diǎn)的顏色矢量進(jìn)行線性變換(即為乘法 運(yùn)算的累積和),得到新的像素點(diǎn),形成變換后的取反圖像如圖4所示。(4)去除圖像邊框去除圖像邊框算法比較簡(jiǎn)單,主要通過(guò)設(shè)置圖像四周要去除的像素寬度,通過(guò) Graphics類(lèi)的FillRectangle函數(shù)將四周指定寬度的矩形區(qū)域填充成白色像素即可。本例 子中將上、下、左、右去除的像素寬度都設(shè)置為2,去除邊框后的圖像如圖5所示。(5)去干擾點(diǎn)處理由于一個(gè)圖片是有一個(gè)一個(gè)像素點(diǎn)組成的,而對(duì)于Windows下的位圖一個(gè)像素點(diǎn)
new float [] {0. 3f, 0. 3f, 0. 3f,0,0}, new float 口 {0. 59f,0. 59f,0. 59f,0,0}, new float口 {0. llf,0. llf,0. llf,0,0}, new float口 {0,0,0,1,0},
new float[]{0,0,0,1,0}};四周最多有8個(gè)像素點(diǎn),而對(duì)于圖片中的字符像素一般都是連接的像素點(diǎn)。根據(jù)這個(gè)特性 可以將四周都為白色像素點(diǎn)的像素點(diǎn),認(rèn)定為干擾像素點(diǎn)。因此去除干擾點(diǎn)算法為加載步 驟(4)處理后的圖像到Bitmap位圖對(duì)象中,通過(guò)遍歷圖像的每一個(gè)像素,并判斷其四周是 否都為白色像素點(diǎn),如果是將其改為白色像素點(diǎn)。去除干擾點(diǎn)處理后的圖像如圖6所示。(6)調(diào)用 OCR 識(shí)別 API加載OCR識(shí)別庫(kù)文件,調(diào)用圖像識(shí)別API函數(shù)對(duì)步驟(5)處理后的圖像進(jìn)行識(shí)別, 得到字符串“UWDF”,完成對(duì)驗(yàn)證碼的自動(dòng)識(shí)別。有干擾點(diǎn)和背景色的驗(yàn)證碼都可以參照此 實(shí)例實(shí)現(xiàn)識(shí)別。利用本發(fā)明提出的方案,可以開(kāi)發(fā)驗(yàn)證碼圖像處理的DLL (Dynamic Link Library,動(dòng)態(tài)鏈接庫(kù))庫(kù)文件,負(fù)責(zé)對(duì)驗(yàn)證碼圖像進(jìn)行識(shí)別前的處理工作;而自動(dòng)化測(cè)試 人員可以通過(guò)QTP (QuickTest Professional的簡(jiǎn)稱(chēng),一種自動(dòng)測(cè)試工具)本身的擴(kuò)展編程 功能,調(diào)用驗(yàn)證碼圖像處理的DLL和OCR的API,完成自動(dòng)測(cè)試過(guò)程中對(duì)待測(cè)試網(wǎng)站驗(yàn)證碼 的自動(dòng)識(shí)別,確保自動(dòng)化測(cè)試流程的順利進(jìn)行。本領(lǐng)域技術(shù)人員不脫離本發(fā)明的實(shí)質(zhì)和精神,可以有多種變形方案實(shí)現(xiàn)本發(fā)明, 以上所述僅為本發(fā)明較佳可行的實(shí)施例而已,并非因此局限本發(fā)明的權(quán)利范圍,凡運(yùn)用本 發(fā)明說(shuō)明書(shū)及附圖內(nèi)容所作的等效結(jié)構(gòu)變化,均包含于本發(fā)明的權(quán)利范圍之內(nèi)。
權(quán)利要求
一種驗(yàn)證碼識(shí)別方法,其特征在于,包括步驟A1、將驗(yàn)證碼圖像數(shù)據(jù)加載到內(nèi)存中;A2、對(duì)所述驗(yàn)證碼圖像進(jìn)行二值化處理,得到二值化圖像數(shù)據(jù);A3、對(duì)所述二值化圖像數(shù)據(jù)進(jìn)行取反處理,得到取反圖像數(shù)據(jù);A4、對(duì)所述取反圖像數(shù)據(jù)進(jìn)行去除邊框處理,得到無(wú)邊框圖像數(shù)據(jù);A5、對(duì)所述無(wú)邊框圖像數(shù)據(jù)進(jìn)行去除干擾點(diǎn)處理,得到最終圖像數(shù)據(jù);A6、調(diào)用OCR識(shí)別程序?qū)λ鲎罱K圖像數(shù)據(jù)進(jìn)行字符識(shí)別。
2.根據(jù)權(quán)利要求1所述的驗(yàn)證碼識(shí)別方法,其特征在于,所述步驟A2包括步驟按照 灰度變換公式Y(jié) = O. 3*R+0. 59*G+0. 11*B確定灰度變換矩陣,其中R、G、B的取值范圍為0 到255的正整數(shù)。
3.根據(jù)權(quán)利要求2所述的驗(yàn)證碼識(shí)別方法,其特征在于,所述步驟A2包括步驟根據(jù) 公式
4.根據(jù)權(quán)利要求3所述的驗(yàn)證碼識(shí)別方法,其特征在于,所述步驟A3包括步驟按照 取反變換公式Y(jié) = -1*R+_1*G+-1*B確定取反變換矩陣,其中R、G、B的取值范圍為0到255 的正整數(shù)。
5.根據(jù)權(quán)利要求4所述的驗(yàn)證碼識(shí)別方法,其特征在于,所述步驟A4包括步驟通過(guò) 在指定寬度的矩形區(qū)域填充白色像素點(diǎn)數(shù)據(jù)對(duì)所述取反圖像數(shù)據(jù)進(jìn)行去除邊框處理。
6.根據(jù)權(quán)利要求5所述的驗(yàn)證碼識(shí)別方法,其特征在于,所述步驟A5包括步驟對(duì)所 述無(wú)邊框圖像數(shù)據(jù)的每一個(gè)像素點(diǎn)數(shù)據(jù)進(jìn)行遍歷,判斷其四周是否都為白色像素點(diǎn)數(shù)據(jù), 如果是則將該像素點(diǎn)數(shù)據(jù)改為白色像素點(diǎn)數(shù)據(jù)。
全文摘要
本發(fā)明公開(kāi)了一種驗(yàn)證碼識(shí)別方法,包括步驟A1、將驗(yàn)證碼圖像數(shù)據(jù)加載到內(nèi)存中;A2、對(duì)所述驗(yàn)證碼圖像進(jìn)行二值化處理,得到二值化圖像數(shù)據(jù);A3、對(duì)所述二值化圖像數(shù)據(jù)進(jìn)行取反處理,得到取反圖像數(shù)據(jù);A4、對(duì)所述取反圖像數(shù)據(jù)進(jìn)行去除邊框處理,得到無(wú)邊框圖像數(shù)據(jù);A5、對(duì)所述無(wú)邊框圖像數(shù)據(jù)進(jìn)行去除干擾點(diǎn)處理,得到最終圖像數(shù)據(jù);A6、調(diào)用OCR識(shí)別程序?qū)λ鲎罱K圖像數(shù)據(jù)進(jìn)行字符識(shí)別。本發(fā)明驗(yàn)證碼識(shí)別方法通過(guò)對(duì)有干擾點(diǎn)和背景色的驗(yàn)證碼進(jìn)行正確識(shí)別,確保了自動(dòng)化測(cè)試流程的順利進(jìn)行,提高了自動(dòng)化測(cè)試的工作效率。
文檔編號(hào)G06K9/60GK101944177SQ20101026853
公開(kāi)日2011年1月12日 申請(qǐng)日期2010年8月30日 優(yōu)先權(quán)日2010年8月30日
發(fā)明者劉國(guó)炯, 張代軍 申請(qǐng)人:深圳市多贏軟件技術(shù)有限公司