验证码识别笔记(二)
這是驗(yàn)證碼識(shí)別的第二篇,先看一下樣圖吧,就是下面那張。
看到這張圖片,直觀上就知道比第一篇中的要簡(jiǎn)單,這個(gè)“簡(jiǎn)單”用語(yǔ)言來(lái)描述,可以得到下面的幾條結(jié)論:
1. 圖片中的字符邊界比較清晰,并且單個(gè)字符的內(nèi)容比較單純;
2. 雖然字符間有粘連,但是綠色邊界圍住的白色區(qū)域沒有粘連,并且顏色一致,可以通過(guò)找連通分量的辦法把字符分離出來(lái)。
通過(guò)上面的分析,接下來(lái)的事就很簡(jiǎn)單了。我覺得編碼很簡(jiǎn)單,只看編碼不可能寫出好東西來(lái),只有領(lǐng)會(huì)思路,理解方法才能觸類旁通。
好了,下面就是接下來(lái)的步驟:
1. 使用合適的閾值,對(duì)圖片進(jìn)行二值化處理;
2. 使用BFS找出所有顏色為白色的連通分量;
3. 因?yàn)閳D片在二值化之后,底色為白色,所以上圖會(huì)找出5個(gè)連通分量,四個(gè)字符和一個(gè)整幅圖片去掉字符的分量;
下面四個(gè)就是從樣圖中找到的連通分量:
??????
4. 去掉過(guò)大的那個(gè)連通分量,如果留下的連通分量如果不等于四個(gè),則直接退出,如果等于四個(gè),繼續(xù)進(jìn)行算法;
注:這種情況是存在的,如果字符之間粘連區(qū)域過(guò)大,或者字符過(guò)小,一個(gè)字符被分割成兩個(gè)分量,但是因?yàn)轵?yàn)證碼識(shí)別的特殊性,所以容許有一定的錯(cuò)誤率存在,只要有成功的次數(shù)多余失敗次數(shù),這樣的算法就是可行的。
5. 將找到的連通分量和模板進(jìn)行匹配,找到匹配度最大的模板,返回對(duì)應(yīng)的字符。
模板的做法:
因?yàn)樵摼W(wǎng)站的驗(yàn)證碼字體比較單一,所以下載一定數(shù)量的驗(yàn)證碼圖片,覆蓋所有可能的字符種類,通過(guò)上面的方法,二值化之后找到所有的連通分量,將這些找到的連通分量進(jìn)行人工分類標(biāo)號(hào),最后得到可以用的模板。
找連通分量的代碼可以參考:GitHub
轉(zhuǎn)載于:https://www.cnblogs.com/flyingpeguin/p/3518155.html
總結(jié)
以上是生活随笔為你收集整理的验证码识别笔记(二)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: spring的总结
- 下一篇: CentOS-6.3安装使用MongoD