一、驗證碼的基本知識
1. 驗證碼的主要目的是強制人機互動來抵禦機器自動化攻擊的。
2. 大部分的驗證碼設計者并不得要領,不了解圖像處理,機器視覺,模式識别,人工智能的基本概念。
3. 利用驗證碼,可以發财,當然要犯罪:比如招商銀行密碼隻有6位,驗證碼形同虛設,計算機很快就能破解一個有錢的賬戶,很多帳戶是可以網上交易的。
4. 也有設計的比較好的,比如Yahoo,Google,Microsoft等。而國内Tencent的中文驗證碼雖然難,但算不上好。
二、人工智能,模式識别,機器視覺,圖像處理的基本知識
1)主要流程:
比如我們要從一副圖檔中,識别出驗證碼;比如我們要從一副圖檔中,檢測并識别出一張人臉。 大概有哪些步驟呢?
1.圖像采集:驗證碼呢,就直接通過HTTP抓HTML,然後分析出圖檔的url,然後下載下傳儲存就可以了。 如果是人臉檢測識别,一般要通過視屏采集裝置,采集回來,通過A/D轉操作,存為數字圖檔或者視訊頻。
2.預處理:檢測是正确的圖像格式,轉換到合适的格式,壓縮,剪切出ROI,去除噪音,灰階化,轉換色彩空間這些。
3.檢測:車牌檢測識别系統要先找到車牌的大概位置,人臉檢測系統要找出圖檔中所有的人臉(包括疑似人臉);驗證碼識别呢,主要是找出文字所在的主要區域。
4.前處理:人臉檢測和識别,會對人臉在識别前作一些校正,比如面内面外的旋轉,扭曲等。我這裡的驗證碼識别,“一般”要做文字的切割
5.訓練:通過各種模式識别,機器學習算法,來挑選和訓練合适數量的訓練集。不是訓練的樣本越多越好。過學習,泛化能力差的問題可能在這裡出現。這一步不是必須的,有些識别算法是不需要訓練的。
6.識别:輸入待識别的處理後的圖檔,轉換成分類器需要的輸入格式,然後通過輸出的類和置信度,來判斷大概可能是哪個字母。識别本質上就是分類。
2)關鍵概念:
圖像處理:一般指針對數字圖像的某種數學處理。比如投影,鈍化,銳化,細化,邊緣檢測,二值化,壓縮,各種資料變換等等。
1.二值化:一般圖檔都是彩色的,按照逼真程度,可能很多級别。為了降低計算複雜度,友善後續的處理,如果在不損失關鍵資訊的情況下,能将圖檔處理成黑白兩種顔色,那就最好不過了。
2.細化:找出圖像的骨架,圖像線條可能是很寬的,通過細化将寬度将為1,某些地方可能大于1。不同的細化算法,可能有不同的差異,比如是否更靠近線條中間,比如是否保持聯通行等。
3.邊緣檢測:主要是了解邊緣的概念。邊緣實際上是圖像中圖像像素屬性變化劇烈的地方。可能通過一個固定的門限值來判斷,也可能是自适應的。門限可能是圖像全局的,也可能是局部的。不能說那個就一定好,不過大部分時候,自适應的局部的門限可能要好點。被分析的,可能是顔色,也可能是灰階圖像的灰階。
機器視覺:利用計算機來模式實作人的視覺。 比如物體檢測,定位,識别。按照對圖像了解的層次的差别,分高階和低階的了解。
模式識别:對事物或者現象的某種表示方式(數值,文字,我們這裡主要想說的是數值),通過一些處理和分析,來描述,歸類,了解,解釋這些事物,現象及其某種抽象。
人工智能:這種概念比較寬,上面這些都屬于人工智能這個大的方向。簡單點不要過分學院派的了解就是,把人類的很“智能”的東西給模拟出來協助生物的人來處理問題,特别是在計算機裡面。