本發(fā)明屬于互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種驗證碼樣本收集方法及系統(tǒng)。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,各種需要進行登入的應(yīng)用服務(wù)系統(tǒng),如論壇、郵箱、微博、投票系統(tǒng)等等,如雨后春筍般出現(xiàn)。
一般而言,為了規(guī)避或者降低常見的安全風險,如惡意注冊、暴力破解密碼、自動發(fā)表廣告貼等情況,通常會在登入的同時要求使用者輸入與隨機產(chǎn)生的驗證碼一致的驗證碼信息,以便驗證使用者的合法性。但是惡意軟件的發(fā)展日新月異,甚至已逐漸具有基本的圖形辨識能力,進而能夠自動辨識及輸入驗證碼,所以目前常對驗證碼進行變形、變色、噪聲干擾等技術(shù)手段來增加辨識困難度。
在對現(xiàn)有技術(shù)的研究和實踐過程中,本發(fā)明的發(fā)明人發(fā)現(xiàn),對驗證碼進行變形、變色、噪聲干擾等相對地也增加使用者的辨識困難度,對于一些本來就不易辨識的字符,如字母“q”與數(shù)字“9”、字母“o”與數(shù)字“0”等,更增加不少辨識困難度,因此現(xiàn)有技術(shù)中具有驗證碼的辨識性不佳的問題。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于提供一種驗證碼樣本收集方法及系統(tǒng),旨在提高驗證碼被識別難度,增強驗證碼的辨識性。
為解決上述技術(shù)問題,本發(fā)明實施例提供以下技術(shù)方案:
一種驗證碼樣本收集方法,其中包括:
獲取原始樣本圖像,所述原始樣本圖像中包含手寫字體數(shù)據(jù);
根據(jù)第一預(yù)設(shè)規(guī)則對所述原始樣本圖像進行預(yù)處理;
根據(jù)預(yù)處理后的樣本圖像確定包含所述手寫字體數(shù)據(jù)的區(qū)域,以及確定所述手寫字體數(shù)據(jù)的邊框范圍;
根據(jù)所述邊框范圍以及所述手寫字體數(shù)據(jù)的區(qū)域,對預(yù)處理后的樣本圖像上相應(yīng)的區(qū)域進行切割,得到手寫字體圖像;
根據(jù)切割后得到的手寫字體圖像確定出驗證碼樣本。
為解決上述技術(shù)問題,本發(fā)明實施例還提供以下技術(shù)方案:
一種驗證碼樣本收集系統(tǒng),其中包括:
獲取單元,用于獲取原始樣本圖像,所述原始樣本圖像中包含手寫字體數(shù)據(jù);
預(yù)處理單元,用于根據(jù)第一預(yù)設(shè)規(guī)則對所述原始樣本圖像進行預(yù)處理;
第一確定單元,用于根據(jù)預(yù)處理后的樣本圖像確定包含所述手寫字體數(shù)據(jù)的區(qū)域,以及確定所述手寫字體數(shù)據(jù)的邊框范圍;
切割單元,用于根據(jù)所述邊框范圍以及所述手寫字體數(shù)據(jù)的區(qū)域,對預(yù)處理后的樣本圖像上相應(yīng)的區(qū)域進行切割,得到手寫字體圖像;
第二確定單元,用于根據(jù)切割后得到的手寫字體圖像確定出驗證碼樣本。
相對于現(xiàn)有技術(shù),本實施例,首先,原始樣本圖像中包含手寫字體數(shù)據(jù),并利用該原始樣本圖像作為直接輸入,然后對該原始樣本圖像進行預(yù)處理,并確定樣本圖像中包含該手寫字體數(shù)據(jù)的區(qū)域,以及確定手寫字體數(shù)據(jù)的邊框范圍,且根據(jù)邊框范圍以及手寫字體數(shù)據(jù)的區(qū)域,對樣本圖像上相應(yīng)的區(qū)域進行切割,得到手寫字體圖像,從而可以得到驗證碼系統(tǒng)需要的字體文件樣本,也就是說,本發(fā)明實施例利用手寫字體得到驗證碼系統(tǒng)需要的字體文件,不僅可以提高驗證碼被識別難度,增強辨識性,而且自動處理、切割以及制作字體文件的過程也大大節(jié)約了字體收集的時間。
附圖說明
下面結(jié)合附圖,通過對本發(fā)明的具體實施方式詳細描述,將使本發(fā)明的技術(shù)方案及其它有益效果顯而易見。
圖1a是本發(fā)明實施例提供的驗證碼樣本收集系統(tǒng)的場景示意圖;
圖1b是本發(fā)明第一實施例提供的驗證碼樣本收集方法的流程示意圖;
圖2a為本發(fā)明第二實施例提供的驗證碼樣本收集方法的流程示意圖;
圖2b至圖2k為本發(fā)明第二實施例提供驗證碼樣本收集結(jié)果示意圖;
圖3為本發(fā)明第三實施例提供的驗證碼樣本收集系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施方式
請參照圖式,其中相同的組件符號代表相同的組件,本發(fā)明的原理是以實施在一適當?shù)倪\算環(huán)境中來舉例說明。以下的說明是基于所例示的本發(fā)明具體實施例,其不應(yīng)被視為限制本發(fā)明未在此詳述的其它具體實施例。
在以下的說明中,本發(fā)明的具體實施例將參考由一部或多部計算機所執(zhí)行的步驟及符號來說明,除非另有述明。因此,這些步驟及操作將有數(shù)次提到由計算機執(zhí)行,本文所指的計算機執(zhí)行包括了由代表了以一結(jié)構(gòu)化型式中的數(shù)據(jù)的電子信號的計算機處理單元的操作。此操作轉(zhuǎn)換該數(shù)據(jù)或?qū)⑵渚S持在該計算機的內(nèi)存系統(tǒng)中的位置處,其可重新配置或另外以本領(lǐng)域測試人員所熟知的方式來改變該計算機的運作。該數(shù)據(jù)所維持的數(shù)據(jù)結(jié)構(gòu)為該內(nèi)存的實體位置,其具有由該數(shù)據(jù)格式所定義的特定特性。但是,本發(fā)明原理以上述文字來說明,其并不代表為一種限制,本領(lǐng)域測試人員將可了解到以下所述的多種步驟及操作亦可實施在硬件當中。
本文所使用的術(shù)語「模塊」可看做為在該運算系統(tǒng)上執(zhí)行的軟件對象。本文所述的不同組件、模塊、引擎及服務(wù)可看做為在該運算系統(tǒng)上的實施對象。而本文所述的裝置及方法優(yōu)選的以軟件的方式進行實施,當然也可在硬件上進行實施,均在本發(fā)明保護范圍之內(nèi)。
本發(fā)明實施例提供一種驗證碼樣本收集方法及系統(tǒng)。
參見圖1a,該圖為本發(fā)明實施例所提供的驗證碼樣本收集系統(tǒng)的場景示意圖,該驗證碼樣本收集系統(tǒng)具體可以集成在服務(wù)器等設(shè)備中,主要用于接收從用戶終端發(fā)送過來的包含手寫字體數(shù)據(jù)的原始樣本圖像,其后根據(jù)第一預(yù)設(shè)規(guī)則對該原始樣本圖像進行預(yù)處理,并根據(jù)處理后的結(jié)果確定出包含該手寫字體數(shù)據(jù)的區(qū)域,以及確定該手寫字體數(shù)據(jù)的邊框范圍,從而根據(jù)邊框范圍和該區(qū)域,在樣本圖像上相應(yīng)的區(qū)域進行切割,得到手寫字體圖像,最終確定出驗證碼樣本。
比如,預(yù)處理操作可以包括將圖像縮小以及進行模糊處理等,利用拉普拉斯算子或sobel算子或canny算子等確定手寫字體數(shù)據(jù)的區(qū)域,通過閾值處理、膨脹處理、連通區(qū)域檢測等確定手寫字體數(shù)據(jù)的邊框范圍,從而可以基于此對在樣本圖像上相應(yīng)的區(qū)域進行切割、反色處理等,得到手寫字體圖像;該手寫字體圖像可用于生成驗證碼,用戶在登入應(yīng)用服務(wù)系統(tǒng)的同時,應(yīng)用服務(wù)系統(tǒng)會從該手寫字體圖像中選取圖像隨機產(chǎn)生驗證碼,以作為驗證碼信息,由于是利用手寫字體得到驗證碼系統(tǒng)需要的字體文件,因此可以提高驗證碼被識別難度。
以下將分別進行詳細說明。
第一實施例
在本實施例中,將從驗證碼樣本收集系統(tǒng)的角度進行描述,該驗證碼樣本收集系統(tǒng)具體可以集成在服務(wù)器等設(shè)備中。
一種驗證碼樣本收集方法,包括:獲取原始樣本圖像,該原始樣本圖像中包含手寫字體數(shù)據(jù);根據(jù)第一預(yù)設(shè)規(guī)則對該原始樣本圖像進行預(yù)處理;根據(jù)預(yù)處理后的樣本圖像確定包含該手寫字體數(shù)據(jù)的區(qū)域,以及確定該手寫字體數(shù)據(jù)的邊框范圍;根據(jù)該邊框范圍以及該手寫字體數(shù)據(jù)的區(qū)域,對預(yù)處理后的樣本圖像上相應(yīng)的區(qū)域進行切割,得到手寫字體圖像;根據(jù)切割后得到的手寫字體圖像確定出驗證碼樣本。
請參閱圖1b,圖1b是本發(fā)明第一實施例提供的驗證碼樣本收集方法的流程示意圖。該方法包括:
在步驟S101中,獲取原始樣本圖像,該原始樣本圖像中包含手寫字體數(shù)據(jù)。
在步驟S102中,根據(jù)第一預(yù)設(shè)規(guī)則對該原始樣本圖像進行預(yù)處理。
其中,所述步驟S101與步驟S102可具體為:
可以理解的是,該原始樣本圖像中包含了用戶手寫的并按一定規(guī)則進行排列的字體文件,比如用戶將數(shù)字按照0-9的順序、字母按照a-z、A-Z的順序等書寫到紙上,使用相機等拍攝到原圖,并將其作為驗證碼樣本收集系統(tǒng)的直接輸入。
驗證碼樣本收集系統(tǒng)接收到該包含手寫字體數(shù)據(jù)的原始樣本圖像后,可根據(jù)第一預(yù)設(shè)規(guī)則對該原始樣本圖像進行預(yù)處理,比如,對該原始樣本圖像進行預(yù)處理可具體如下:
1、將該原始樣本圖像按照預(yù)設(shè)比例進行縮小,得到縮小后的樣本圖像;
2、對該縮小后的樣本圖像進行模糊處理,得到模糊處理后的樣本圖像。
可以理解的是,將原始樣本圖像按照預(yù)設(shè)比例進行縮小可以大大的減少了系統(tǒng)處理數(shù)據(jù)的計算量,也提高了計算處理效率,按比例縮小后對該樣本圖像進行模糊處理可以濾除該樣本圖像中的高頻噪聲。
容易想到的是,上述第一預(yù)設(shè)規(guī)則以及預(yù)設(shè)比例等均可按照用戶需求或具體場景預(yù)先設(shè)置在驗證碼樣本收集系統(tǒng)中,此處不作具體限定。
在步驟S103中,根據(jù)預(yù)處理后的樣本圖像確定包含手寫字體數(shù)據(jù)的區(qū)域,以及確定手寫字體數(shù)據(jù)的邊框范圍。
比如,根據(jù)預(yù)處理后的樣本圖像確定包含所述手寫字體數(shù)據(jù)的區(qū)域,可以具體如下:
a、利用預(yù)設(shè)的邊緣提取算法對預(yù)處理后的樣本圖像進行處理,以確定包含所述手寫字體數(shù)據(jù)的區(qū)域;
可以理解的是,上述邊緣提取算法可按照用戶需求或具體場景預(yù)先設(shè)置在驗證碼樣本收集系統(tǒng)中,包括拉普拉斯算子或者索貝爾sobel算子或者canny算子等,此處不作具體限定。
基于對樣本圖像的預(yù)處理包括對樣本圖像的縮小處理以及樣本圖像的模糊處理,該步驟a可具體為:利用拉普拉斯算子、或者索貝爾sobel算子、或者canny算子對模糊處理后的樣本圖像進行處理。
進一步的,比如,根據(jù)預(yù)處理后的樣本圖像確定手寫字體數(shù)據(jù)的邊框范圍,可以具體如下:
b、利用預(yù)設(shè)的邊界調(diào)整算法對預(yù)處理后的樣本圖像進行處理,并對邊界調(diào)整算法處理后的樣本圖像進行連通區(qū)域檢測,以確定手寫字體數(shù)據(jù)的邊框范圍。
可以理解的是,上述邊界調(diào)整算法可按照用戶需求或具體場景預(yù)先設(shè)置在驗證碼樣本收集系統(tǒng)中,可包括膨脹算法、腐蝕算法等,此處不作具體限定。
優(yōu)選的,比如,在步驟a之后,還可以包括:
c、根據(jù)第二預(yù)設(shè)規(guī)則對邊緣提取算法處理后的樣本圖像進行噪聲處理;
基于此,噪聲處理后,步驟b可以具體為:利用預(yù)設(shè)的邊界調(diào)整算法對噪聲處理后的樣本圖像進行處理,并對邊界調(diào)整算法處理后的樣本圖像進行連通區(qū)域檢測,以確定所述手寫字體數(shù)據(jù)的邊框范圍。
更進一步的,在本發(fā)明一種實現(xiàn)方式中,步驟c可以具體包括:對邊緣提取算法處理(如拉普拉斯算子處理)后的樣本圖像進行閾值處理,以得到僅有純黑和純白兩種顏色的樣本圖像,并對閾值處理后的樣本圖像做開運算。
基于此,開運算處理后,步驟b可以具體為:按照預(yù)設(shè)膨脹模板對開運算后的樣本圖像做膨脹處理,對膨脹處理后的樣本圖像進行連通區(qū)域檢測,以確定所述手寫字體數(shù)據(jù)的邊框范圍。
在本發(fā)明另一種實現(xiàn)方式中,步驟c可以具體包括:對邊緣提取算法處理后的樣本圖像進行閾值處理,以得到僅有純黑和純白兩種顏色的樣本圖像,將閾值處理后的樣本圖像進行反色處理,并對反色處理后的樣本圖像做閉運算。
基于此,閉運算處理后,步驟b可以具體為:按照預(yù)設(shè)腐蝕模板對閉運算后的樣本圖像做腐蝕處理,對腐蝕處理后的樣本圖像進行連通區(qū)域檢測,以確定所述手寫字體數(shù)據(jù)的邊框范圍。
可以理解的是,膨脹是將與物體接觸的所有背景點合并到該物體中,使邊界向外部擴張的過程,可以用來填補物體中的空洞;腐蝕是一種消除邊界點,使邊界向內(nèi)部收縮的過程,可以用來消除小且無意義的物體。
在步驟S104中,根據(jù)邊框范圍以及手寫字體數(shù)據(jù)的區(qū)域,對預(yù)處理后的樣本圖像上相應(yīng)的區(qū)域進行切割,得到手寫字體圖像。
在步驟S105中,根據(jù)切割后得到的手寫字體圖像確定出驗證碼樣本。
其中,所述步驟S104與步驟S105可具體為:
也就是說,根據(jù)邊框范圍以及手寫字體數(shù)據(jù)的區(qū)域,對噪聲處理后的樣本圖像上相應(yīng)的區(qū)域進行切割,得到手寫字體圖像,進一步的,可以是根據(jù)邊框范圍以及手寫字體數(shù)據(jù)的區(qū)域,對閾值處理后的樣本圖像上相應(yīng)的區(qū)域進行切割,從而得到手寫字體圖像。
進一步的,比如,如果之前是按照預(yù)設(shè)膨脹模板對開運算后的樣本圖像做膨脹處理,從而得到手寫字體圖像的,則將切割后得到的手寫字體圖像進行反色處理,并利用預(yù)設(shè)形態(tài)學(xué)膨脹算法調(diào)整手寫字體圖像的字體粗細,收集經(jīng)過字體粗細調(diào)整后的手寫字體圖像,并將收集的手寫字體圖像確定為驗證碼樣本。
又比如,如果之前是按照預(yù)設(shè)腐蝕模板對閉運算后的樣本圖像做腐蝕處理,從而得到手寫字體圖像的,則直接通過預(yù)設(shè)形態(tài)學(xué)膨脹算法調(diào)整手寫字體圖像的字體粗細,收集經(jīng)過字體粗細調(diào)整后的手寫字體圖像,并將收集的手寫字體圖像確定為驗證碼樣本。
由上述可知,本實施例提供的驗證碼樣本收集方法,首先,原始樣本圖像中包含手寫字體數(shù)據(jù),并利用該原始樣本圖像作為直接輸入,然后對該原始樣本圖像進行預(yù)處理,并確定樣本圖像中包含該手寫字體數(shù)據(jù)的區(qū)域,以及確定手寫字體數(shù)據(jù)的邊框范圍,且根據(jù)邊框范圍以及手寫字體數(shù)據(jù)的區(qū)域,對樣本 圖像上相應(yīng)的區(qū)域進行切割,得到手寫字體圖像,從而可以得到驗證碼系統(tǒng)需要的字體文件樣本,也就是說,本發(fā)明實施例利用手寫字體得到驗證碼系統(tǒng)需要的字體文件,不僅可以提高驗證碼被識別難度,增強辨識性,而且自動處理、切割以及制作字體文件的過程也大大節(jié)約了字體收集的時間。
第二實施例
根據(jù)第一實施例所描述的方法,以下將舉例作進一步詳細說明。
首先,用戶按照預(yù)設(shè)的順序?qū)⒆帜笖?shù)字等書寫到紙上,并使用相機拍攝得到原圖。其次,驗證碼樣本收集系統(tǒng),用于將含有手寫字體的圖片中的字母和數(shù)字進行自動去噪、調(diào)整大小以及切割等制作成手寫字體圖片,以作為驗證碼樣本。以下將進行詳細說明。
請參閱圖2a,圖2a為本發(fā)明第二實施例提供的驗證碼樣本收集方法的流程示意圖。該方法包括:
在步驟S201中,獲取原始樣本圖像,該原始樣本圖像中包含手寫字體數(shù)據(jù)。
在步驟S202中,將該原始樣本圖像按照預(yù)設(shè)比例進行縮小,得到縮小后的樣本圖像。
在步驟S203中,對縮小后的樣本圖像進行模糊處理,得到模糊處理后的樣本圖像。
其中,所述步驟S201至步驟S203可具體為:
比如,首先,用戶按照0-9、a-z、A-Z的順序?qū)⒆帜笖?shù)字等書寫到紙上,并使用相機拍攝得到原圖,可參考圖2b,為含有手寫字體數(shù)據(jù)的原始樣本圖像;其后,將該原始樣本圖像輸入至驗證碼樣本收集系統(tǒng)進行處理。
接著,驗證碼樣本收集系統(tǒng)接收到該包含手寫字體數(shù)據(jù)的原始樣本圖像后,可根據(jù)第一預(yù)設(shè)規(guī)則對該原始樣本圖像進行預(yù)處理,比如可具體如下:
將該原始樣本圖像的寬度縮小至1000,其高度等比例縮小,以減少計算量, 同時也提高了系統(tǒng)的計算處理效率;其后,對縮小后的樣本圖像做模糊處理,顧名思義是將樣本圖像模糊化,圖像模糊的實質(zhì)就是圖像受到平均運算或積分運算,故可使用如高斯模糊或者均值濾波器等,設(shè)置好模糊的像素,實現(xiàn)圖像模糊處理,從而可以濾除高頻噪聲,可一并參考圖2c,為模糊處理后得到的樣本圖像示意。
容易想到的是,預(yù)設(shè)比例以及模糊處理的方式等均可按照用戶需求或具體場景預(yù)先設(shè)置在驗證碼樣本收集系統(tǒng)中,此處舉例不構(gòu)成對本發(fā)明的限定。
在步驟S204中,使用拉普拉斯算子對模糊處理后的樣本圖像進行處理,確定包含手寫字體數(shù)據(jù)的區(qū)域。
可以理解的是,使用拉普拉斯算子對樣本圖像進行處理,可以提取變化率高的區(qū)域,其中,變化率高的區(qū)域可認為是包含所述手寫字體數(shù)據(jù)的區(qū)域,如圖2d所示,為拉普拉斯算子處理后得到的樣本圖像示意。
其中,拉普拉斯算子基于二階微分計算,是最簡單的各向同性微分算子,具有旋轉(zhuǎn)不變性。一個二維圖像函數(shù)的拉普拉斯變換是各向同性的二階導(dǎo)數(shù),可定義為:
優(yōu)選的,為了更適合于數(shù)字圖像處理,還可以將其表示為離散形式;通過拉普拉斯算子可以檢查出圖像中各個方向上變化率的大小,而圖像中變化較大的區(qū)域一般集中在邊緣,此算子可用二次微分正峰和負峰之間的過零點來確定邊緣線的位置,故拉普拉斯算子常用于邊緣提取,本實施例可以利用拉普拉斯算子突出顯示手寫字體的區(qū)域。
容易想到的是,本實施例中拉普拉斯算子也可以替換為索貝爾sobel算子或者canny算子等邊緣提取算法,對模糊處理后的樣本圖像進行處理,此處舉例不構(gòu)成對本發(fā)明的限定。
在步驟S205中,對拉普拉斯算子處理后的樣本圖像進行閾值處理,以得到僅有純黑和純白兩種顏色的樣本圖像。
在步驟S206中,對閾值處理后的樣本圖像做開運算。
在步驟S207中,按照預(yù)設(shè)膨脹模板對開運算后的樣本圖像做膨脹處理。
其中,所述步驟S205至步驟S207可具體為:
比如,閾值處理可具體如下:
若設(shè)定樣本圖像的像素點的亮度大于該預(yù)設(shè)閾值,則閾值結(jié)果為純白,反之,設(shè)定小于該預(yù)設(shè)閾值設(shè)置為純黑。由于樣本圖像中文字與紙張的對比度很高,使得二階導(dǎo)數(shù)值也很高,因此此處使用接近純白的值即可達到僅有純黑和純白兩種顏色的效果;并且由于后續(xù)會對噪聲的單獨處理,此處閾值的選取范圍可以較大,實際測試結(jié)果可優(yōu)選在[230-250]之間,此處舉例不作具體限定;如圖2e所示,為閾值處理后得到的僅有純黑和純白兩種顏色的樣本圖像示意。
其后,對閾值處理后的樣本圖像做開運算,其中,開運算通常用來消除小對象物、在纖細點處分離物體、平滑較大物體的邊界的同時并不明顯改變其面積。通常是在需要去除小顆粒噪聲,以及斷開目標物之間粘連時使用,本實施例中,對閾值處理后的樣本圖像做開運算可以濾除個別噪聲點,如圖2f所示,為做開運算后得到的樣本圖像示意。
進一步的,開運算后,對樣本圖像做膨脹處理,其作用是將斷開的目標物進行接續(xù),本實施例中,膨脹模板為豎向的直線,作用是使字母“i”與“j”的點與下面的部分粘連起來,如圖2g所示,為膨脹處理后得到的樣本圖像示意。
在步驟S208中,對膨脹處理后的樣本圖像進行連通區(qū)域檢測,以確定手寫字體數(shù)據(jù)的邊框范圍。
對膨脹后的圖像做連通區(qū)域檢測,即可找到每個字母以及數(shù)字的上下左右邊框范圍,比如,連通區(qū)域檢測可具體如下:
首先逐行逐列查找樣本圖像,找到一個白色的像素,將此白色像素加入待搜索像素集,然后從待搜索像素集中選取一個像素,將其從待搜索像素集中刪除,然后判斷該像素是不是當前連通區(qū)域的最上、最下、最左和最右的點,如果是,更新當前連通區(qū)域?qū)?yīng)的最上、最下、最左和最右的位置,然后將此像 素置為黑色,然后判斷此像素的上下左右四個像素是否為白色,如果是就將其加入待搜索像素集,然后再從待搜索像素集中取出一個像素,并重復(fù)上面處理流程,直到待搜索集中沒有像素為止,一個連通區(qū)域的上下左右就確定了,然后繼續(xù)逐行逐列查找下一個白色像素并重復(fù)上面步驟,直到圖像中沒有白色的像素為止,這樣所有的連通區(qū)域就找到了。
在步驟S209中,根據(jù)該邊框范圍以及手寫字體數(shù)據(jù)的區(qū)域,對閾值處理后的樣本圖像上相應(yīng)的區(qū)域進行切割,并進行反色處理,得到切割后的手寫字體圖像。
也就是說,利用步驟S208得到的邊框范圍以及步驟S204確定的包含手寫字體數(shù)據(jù)的區(qū)域,對步驟S205得到的樣本圖像中相應(yīng)的區(qū)域進行切割,切割下來在做反色處理,從而可以得到切割后并進行反色處理的手寫字體圖像,如圖2h所示,為切割后的手寫字體圖像的示意。
需要說明的是,由于手寫的字體都是按順序排列的,因此切割手寫字體圖像時可以對切割區(qū)域按從上至下、從左至右的順序進行排序,以確定切割后的圖像與字母、數(shù)字的對應(yīng)關(guān)系,便于加以標簽識別。
在步驟S210中,通過預(yù)設(shè)形態(tài)學(xué)膨脹算法調(diào)整手寫字體圖像的字體粗細。
在步驟S211中,收集經(jīng)過字體粗細調(diào)整后的手寫字體圖像,并將收集的手寫字體圖像確定為驗證碼樣本。
其中,所述步驟S210和步驟S211可具體為:
也就是說,對于得到的結(jié)果可以使用形態(tài)學(xué)膨脹算法使其變粗,通過調(diào)整參數(shù)來控制字母的粗細,比如,如圖2i所示,為切割后的手寫字體圖像加粗3個像素的結(jié)果示意,如圖2j所示,為切割后的手寫字體圖像加粗6個像素的結(jié)果示意,如圖2k所示,為切割后的手寫字體圖像加粗9個像素的結(jié)果示意。
然后,收集如上經(jīng)過字體粗細調(diào)整后的手寫字體圖像,并將收集的手寫字體圖像確定為驗證碼樣本,比如,用戶在登入應(yīng)用服務(wù)系統(tǒng)的同時,系統(tǒng)會從該驗證碼樣本中選取圖片隨機產(chǎn)生驗證碼,以作為驗證碼信息,便于驗證使用 者的合法性,由于是利用手寫字體得到驗證碼系統(tǒng)需要的字體文件,因此可以提高驗證碼被識別難度。
其中,形態(tài)學(xué)算法是將數(shù)學(xué)形態(tài)學(xué)做為工具從圖像中提取對于表達和描述區(qū)域形狀有用的圖像分量的算法,比如邊界、骨架以及凸殼等等。本文中使用到的形態(tài)學(xué)算法有四種:膨脹算法、腐蝕算法、開運算、閉運算,其中,膨脹算法是將與物體接觸的所有背景點合并到該物體中,使邊界向外部擴張的過程,可以用來填補物體中的空洞;腐蝕算法是一種消除邊界點,使邊界向內(nèi)部收縮的過程,可以用來消除小且無意義的物體;開運算是在需要去除小顆粒噪聲,以及斷開目標物之間粘連時使用;閉運算通常是用來填充目標內(nèi)細小空洞,連接斷開的鄰近目標,平滑其邊界的同時并不明顯改變其面積,可根據(jù)具體情況進行選用。
可以理解的是,在某些實施方式中,步驟S206與步驟S206處理前可將樣本圖像進行反色處理,并將步驟S206中的開運算替換成閉運算,步驟S207的膨脹運算換成腐蝕運算,也可以得到反色的結(jié)果,其后樣本圖像進行切割,得到切割后并進行反色處理的手寫字體圖像,如圖2h所示,為切割后的手寫字體圖像的示意。
由上述可知,本實施例提供的驗證碼樣本收集方法,首先,原始樣本圖像中包含手寫字體數(shù)據(jù),并利用該原始樣本圖像作為直接輸入,然后對該原始樣本圖像進行預(yù)處理,并確定樣本圖像中包含該手寫字體數(shù)據(jù)的區(qū)域,以及確定手寫字體數(shù)據(jù)的邊框范圍,且根據(jù)邊框范圍以及手寫字體數(shù)據(jù)的區(qū)域,對樣本圖像上相應(yīng)的區(qū)域進行切割,得到手寫字體圖像,從而可以得到驗證碼系統(tǒng)需要的字體文件樣本,也就是說,本發(fā)明實施例利用手寫字體得到驗證碼系統(tǒng)需要的字體文件,不僅可以提高驗證碼被識別難度,增強辨識性,而且自動處理、切割以及制作字體文件的過程也大大節(jié)約了字體收集的時間。
第三實施例
為便于更好的實施本發(fā)明實施例提供的驗證碼樣本收集方法,本發(fā)明實施例還提供一種基于上述驗證碼樣本收集方法的系統(tǒng)。其中名詞的含義與上述網(wǎng)絡(luò)資源的排重的方法中相同,具體實現(xiàn)細節(jié)可以參考方法實施例中的說明。
請參閱圖3,圖3為本發(fā)明實施例提供的驗證碼樣本收集系統(tǒng)的結(jié)構(gòu)示意圖,本發(fā)明驗證碼樣本收集系統(tǒng)可以包括獲取單元301、預(yù)處理單元302、第一確定單元303、切割單元304以及第二確定單元305。
其中獲取單元301,用于獲取原始樣本圖像,所述原始樣本圖像中包含手寫字體數(shù)據(jù);預(yù)處理單元302,用于根據(jù)第一預(yù)設(shè)規(guī)則對所述原始樣本圖像進行預(yù)處理。
可以理解的是,該原始樣本圖像中包含了用戶手寫的并按一定規(guī)則進行排列的字體文件,比如用戶將數(shù)字按照0-9的順序、字母按照a-z、A-Z的順序等書寫到紙上,使用相機等拍攝到原圖,并將其作為驗證碼樣本收集系統(tǒng)的直接輸入。
獲取單元301接收到該包含手寫字體數(shù)據(jù)的原始樣本圖像后,預(yù)處理單元302可根據(jù)第一預(yù)設(shè)規(guī)則對該原始樣本圖像進行預(yù)處理,比如,預(yù)處理單元302可以包括:
縮小子單元,用于將所述原始樣本圖像按照預(yù)設(shè)比例進行縮小,得到縮小后的樣本圖像;
模糊處理子單元,用于對所述縮小后的樣本圖像進行模糊處理,得到模糊處理后的樣本圖像。
可以理解的是,將原始樣本圖像按照預(yù)設(shè)比例進行縮小可以大大的減少了系統(tǒng)處理數(shù)據(jù)的計算量,也提高了計算處理效率,按比例縮小后對該樣本圖像進行模糊處理可以濾除該樣本圖像中的高頻噪聲。
容易想到的是,上述第一預(yù)設(shè)規(guī)則以及預(yù)設(shè)比例等均可按照用戶需求或具體場景預(yù)先設(shè)置在驗證碼樣本收集系統(tǒng)中,此處不作具體限定。
第一確定單元303,用于根據(jù)預(yù)處理后的樣本圖像確定包含所述手寫字體 數(shù)據(jù)的區(qū)域,以及確定所述手寫字體數(shù)據(jù)的邊框范圍。
比如,第一確定單元303根據(jù)預(yù)處理后的樣本圖像確定包含所述手寫字體數(shù)據(jù)的區(qū)域,可以具體如下:
該第一確定單元303可以包括:
第一確定子單元,用于利用預(yù)設(shè)的邊緣提取算法對預(yù)處理后的樣本圖像進行處理,以確定包含所述手寫字體數(shù)據(jù)的區(qū)域;
可以理解的是,上述邊緣提取算法可按照用戶需求或具體場景預(yù)先設(shè)置在驗證碼樣本收集系統(tǒng)中,包括拉普拉斯算子或者索貝爾sobel算子或者canny算子等,此處不作具體限定。
基于對樣本圖像的預(yù)處理包括對樣本圖像的縮小處理以及樣本圖像的模糊處理,則第一確定子單元可以具體用于:利用拉普拉斯算子、或者索貝爾sobel算子、或者canny算子對所述模糊處理后的樣本圖像進行處理,以確定包含所述手寫字體數(shù)據(jù)的區(qū)域。
進一步的,比如,第一確定單元303根據(jù)預(yù)處理后的樣本圖像確定手寫字體數(shù)據(jù)的邊框范圍,可以具體如下:
該第一確定單元303還可以包括:
第二確定子單元,用于利用預(yù)設(shè)的邊界調(diào)整算法對預(yù)處理后的樣本圖像進行處理,并對邊界調(diào)整算法處理后的樣本圖像進行連通區(qū)域檢測,以確定手寫字體數(shù)據(jù)的邊框范圍。
可以理解的是,上述邊界調(diào)整算法可按照用戶需求或具體場景預(yù)先設(shè)置在驗證碼樣本收集系統(tǒng)中,可包括膨脹算法、腐蝕算法等,此處不作具體限定。
優(yōu)選的,比如,所述系統(tǒng)還可以包括:
噪聲處理單元,用于根據(jù)第二預(yù)設(shè)規(guī)則對邊緣提取算法處理后的樣本圖像進行噪聲處理;
基于此,噪聲處理后,第二確定子單元可以具體用于:利用預(yù)設(shè)的邊界調(diào)整算法對噪聲處理后的樣本圖像進行處理,并對邊界調(diào)整算法處理后的樣本圖 像進行連通區(qū)域檢測,以確定手寫字體數(shù)據(jù)的邊框范圍。
更進一步的,在本發(fā)明一種實現(xiàn)方式中,噪聲處理單元可以具體用于:對邊緣提取算法處理后的樣本圖像進行閾值處理,以得到僅有純黑和純白兩種顏色的樣本圖像,并對閾值處理后的樣本圖像做開運算。
基于此,開運算處理后,第二確定子單元具體用于:按照預(yù)設(shè)膨脹模板對開運算后的樣本圖像做膨脹處理,對膨脹處理后的樣本圖像進行連通區(qū)域檢測,以確定手寫字體數(shù)據(jù)的邊框范圍。
在本發(fā)明另一種實現(xiàn)方式中,噪聲處理單元可以具體用于:對邊緣提取算法處理后的樣本圖像進行閾值處理,以得到僅有純黑和純白兩種顏色的樣本圖像,將閾值處理后的樣本圖像進行反色處理,并對反色處理后的樣本圖像做閉運算。
基于此,閉運算處理后,第二確定子單元可以具體用于:按照預(yù)設(shè)腐蝕模板對閉運算后的樣本圖像做腐蝕處理,對腐蝕處理后的樣本圖像進行連通區(qū)域檢測,以確定所述手寫字體數(shù)據(jù)的邊框范圍。
可以理解的是,膨脹是將與物體接觸的所有背景點合并到該物體中,使邊界向外部擴張的過程,可以用來填補物體中的空洞;腐蝕是一種消除邊界點,使邊界向內(nèi)部收縮的過程,可以用來消除小且無意義的物體。
切割單元304,用于根據(jù)所述邊框范圍以及所述手寫字體數(shù)據(jù)的區(qū)域,對預(yù)處理后的樣本圖像上相應(yīng)的區(qū)域進行切割,得到手寫字體圖像;第二確定單元305,用于根據(jù)切割后得到的手寫字體圖像確定出驗證碼樣本。
也就是說,根據(jù)以上實施方式可知,切割單元304可以具體用于:根據(jù)邊框范圍以及手寫字體數(shù)據(jù)的區(qū)域,對噪聲處理后的樣本圖像上相應(yīng)的區(qū)域進行切割,得到手寫字體圖像。進一步的,可以是根據(jù)邊框范圍以及手寫字體數(shù)據(jù)的區(qū)域,對閾值處理后的樣本圖像上相應(yīng)的區(qū)域進行切割,從而得到手寫字體圖像。
比如,如果之前是按照預(yù)設(shè)膨脹模板對開運算后的樣本圖像做膨脹處理, 從而得到手寫字體圖像的,則該第二確定單元可以具體用于:將切割后得到的手寫字體圖像進行反色處理,通過預(yù)設(shè)形態(tài)學(xué)膨脹算法調(diào)整手寫字體圖像的字體粗細,收集經(jīng)過字體粗細調(diào)整后的手寫字體圖像,并將收集的手寫字體圖像確定為驗證碼樣本。
又比如,如果之前是按照預(yù)設(shè)腐蝕模板對閉運算后的樣本圖像做腐蝕處理,從而得到手寫字體圖像的,則第二確定單元具體用于:直接通過預(yù)設(shè)形態(tài)學(xué)膨脹算法調(diào)整手寫字體圖像的字體粗細,收集經(jīng)過字體粗細調(diào)整后的手寫字體圖像,并將收集的手寫字體圖像確定為驗證碼樣本。
具體實施時,以上各個單元可以作為獨立的實體來實現(xiàn),也可以進行任意組合,作為同一或若干個實體來實現(xiàn),以上各個單元的具體實施可參見前面的方法實施例,在此不再贅述。
該驗證碼樣本收集系統(tǒng)具體可以集成在服務(wù)器等設(shè)備中。
由上述可知,本實施例提供的驗證碼樣本收集系統(tǒng),原始樣本圖像中包含手寫字體數(shù)據(jù),并利用該原始樣本圖像作為直接輸入,然后對該原始樣本圖像進行預(yù)處理,并確定樣本圖像中包含該手寫字體數(shù)據(jù)的區(qū)域,以及確定手寫字體數(shù)據(jù)的邊框范圍,且根據(jù)邊框范圍以及手寫字體數(shù)據(jù)的區(qū)域,對樣本圖像上相應(yīng)的區(qū)域進行切割,得到手寫字體圖像,從而可以得到驗證碼系統(tǒng)需要的字體文件樣本,也就是說,本發(fā)明實施例利用手寫字體得到驗證碼系統(tǒng)需要的字體文件,不僅可以提高驗證碼被識別難度,增強辨識性,而且自動處理、切割以及制作字體文件的過程也大大節(jié)約了字體收集的時間。
在上述實施例中,對各個實施例的描述都各有側(cè)重,某個實施例中沒有詳述的部分,可以參見上文針對驗證碼樣本收集方法的詳細描述,此處不再贅述。
本發(fā)明實施例提供的所述驗證碼樣本收集系統(tǒng),譬如為計算機、平板電腦、具有觸摸功能的手機等等,所述驗證碼樣本收集系統(tǒng)與上文實施例中的驗證碼樣本收集方法屬于同一構(gòu)思,在所述驗證碼樣本收集系統(tǒng)上可以運行所述驗證碼樣本收集方法實施例中提供的任一方法,其具體實現(xiàn)過程詳見所述驗證碼樣 本收集方法實施例,此處不再贅述。
需要說明的是,對本發(fā)明所述驗證碼樣本收集方法而言,本領(lǐng)域普通測試人員可以理解實現(xiàn)本發(fā)明實施例所述驗證碼樣本收集方法的全部或部分流程,是可以通過計算機程序來控制相關(guān)的硬件來完成,所述計算機程序可存儲于一計算機可讀取存儲介質(zhì)中,如存儲在終端的存儲器中,并被該終端內(nèi)的至少一個處理器執(zhí)行,在執(zhí)行過程中可包括如所述驗證碼樣本收集方法的實施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲器(ROM,Read Only Memory)、隨機存取記憶體(RAM,Random Access Memory)等。
對本發(fā)明實施例的所述驗證碼樣本收集系統(tǒng)而言,其各功能模塊可以集成在一個處理芯片中,也可以是各個模塊單獨物理存在,也可以兩個或兩個以上模塊集成在一個模塊中。上述集成的模塊既可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,也可以存儲在一個計算機可讀取存儲介質(zhì)中,所述存儲介質(zhì)譬如為只讀存儲器,磁盤或光盤等。
以上對本發(fā)明實施例所提供的一種驗證碼樣本收集方法及系統(tǒng)進行了詳細介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。