百度貼吧的驗(yàn)證碼如下圖所示
http://tieba.baidu.com/f?kw=Discuz&ie=utf-8&fr=wwwt#sub
驗(yàn)證碼地址:
刷新一下就會(huì)變成新的字符。
搗鼓了一兩天的時(shí)間,對(duì)于手動(dòng)分割好的單個(gè)字符的識(shí)別準(zhǔn)確率倒是不低,不過(guò)始終沒能很好的解決粘連字符的分割問(wèn)題,后來(lái)就放下了。
這兩天一同學(xué)讓幫忙破解一網(wǎng)站的驗(yàn)證碼,瞅了下是比較傳統(tǒng)的數(shù)字驗(yàn)證碼,而且無(wú)粘連、扭曲、傾斜,于是就開始著手破解了。
要識(shí)別的驗(yàn)證碼如下圖所示:
從上面的驗(yàn)證碼可以看出,破解的工作無(wú)需考慮字符的分割問(wèn)題,而只需將精力花在背景的去除上。乍一看,每個(gè)字符周圍的背景雜點(diǎn)都跟字符的顏色很接近,看上去不太容易過(guò)濾調(diào)背景雜點(diǎn)而只保留字符本身,實(shí)際上做起來(lái)也不容易。起初考慮過(guò)幾種閾值化處理操作,可處理后的結(jié)果一點(diǎn)也不理想。幾次嘗試失敗之后,考慮到此種驗(yàn)證碼主要是在前景與背景的顏色上做文章,于是我打算分析驗(yàn)證碼的顏色分布直方圖,看能不能找出突破口。由于每個(gè)字符周圍的雜點(diǎn)顏色跟該字符的顏色相關(guān),而與其他字符的顏色無(wú)關(guān),所以我接下來(lái)的顏色直方圖的分析都只是針對(duì)分割后的單個(gè)字符。
就拿舉例吧,分割后的每個(gè)字符所對(duì)應(yīng)的顏色直方圖如下圖所示:
↓↓
↓↓
↓↓
↓↓
畫出每個(gè)字符的顏色分布直方圖之后,一眼便看出了驗(yàn)證碼背后存在某種規(guī)律。進(jìn)一步分析可得知,直方圖左側(cè)孤立的小塊區(qū)域正是字符本身的顏色,而右側(cè)的大塊區(qū)域則全是背景雜色,因此只要我們得出直方圖左側(cè)塊的顏色范圍,便可去除非字符本身的雜點(diǎn),至于這個(gè)范圍的獲取想必不會(huì)有人會(huì)認(rèn)為是難事。
去除背景并進(jìn)行圖像二值化后就會(huì)得到下圖所示的字符圖片:
-> -> -> ->
接下來(lái)要做的事情便是識(shí)別這些無(wú)背景雜點(diǎn)的二值圖像字符,方法有很多,我用的是機(jī)器學(xué)習(xí)的方法,背景去除成功的情況下的識(shí)別率基本接近于100%。