-圖像變灰
-圖像去噪(如圖像二值化)
-切斷畫面
-提取特征
-培訓
但這種方法是切圖,破解驗證碼的重點和難點在於能否成功分割字符。
本文介紹的算法不需要圖像切割或機器訓練。這種方法就是模板匹配:將待識別的文本剪成模板,與待識別圖像中的模板進行匹配。
本文將分為兩個部分:
第壹部分介紹了模板匹配的基本概念和壹種模板匹配的實現算法:快速歸壹化互相關匹配算法;
第二部分是具體的例子。
模板匹配是在圖像中尋找目標的方法之壹,其目的是在圖像中找到與模板圖像最相似的區域。
模板匹配的壹般過程如下:通過在輸入圖像上滑動圖像塊,將實際圖像塊與輸入圖像進行匹配。
假設我們有壹個100x100的輸入圖像和壹個10x10的模板圖像。搜索過程如下:
從輸入圖像的左上角(0,0)開始,從(0,0)到(10,10)剪切壹個臨時圖像;
臨時圖像與模板之間的相似度c通過某種方法獲得,並存儲在相似度矩陣中(矩陣大小為91x 91);
將輸入圖像的臨時圖像從(0,1)剪切到(10,11),比較並記錄在相似度矩陣中;
重復以上步驟,直到到達輸入圖像的右下角。
最後得到壹個相似矩陣,求矩陣中的最大值或最小值。對應於最大值(最小值)的臨時圖像是與模板最相似的圖像。
在步驟b中,有許多方法來尋找模板和圖像之間的相似性,如平均絕對差算法(MAD)、絕對誤差和算法(SAD)、誤差平方和算法(SSD)和歸壹化互相關算法(NCC)。本文采用歸壹化互相關算法。
什麽是歸壹化互相關?
幾何上,當空間中兩個向量同向平行時,歸壹化互相關系數為1,這意味著兩個向量最相似;當它們方向相反平行時,歸壹化互相關系數為-1,當它們垂直時,表示它們最不相似(用三個相互垂直的向量表示整個空間也是壹樣,不包含彼此的信息,相關系數為0)。有壹定角度時,在(-1,1)。是不是類似余弦函數,cos (0) = 1,cos (pi/2) = 0,cos (pi) =-1?就像這樣,相關系數可以看作是兩個向量夾角的余弦函數。
在數學中,余弦函數是這樣計算的。假設兩個N維向量x和y對應的坐標分別為(x1,x2,… xn)和(y1,y2,…yn),則:
(如果想了解更多,請參考參考文獻2。)
但是,這是壹維的,所以我們需要在模板匹配中增加另壹維度(請參考Ref。具體算法為3)。簡單說說Ref的內容。3:如果直接計算二維相似度,計算復雜度會很高。參考文獻。3、采用快速傅裏葉變換和積分圖像快速算法降低計算復雜度。
接下來我們來看壹個具體的應用。
模板匹配身份驗證碼的具體步驟如下:
1.找出圖片中所有可能的字符,制作模板集。
2.圖像灰度化
3.圖像去噪(二值化)
4.模板匹配
5.匹配結果的優化
要識別的圖片如下,以圖片中文字的識別為例:
為了從圖像中找到與模板最匹配的部分,模板圖像是預先從圖像圖像中切下的部分。使用python模塊skimage中的match_template方法,match_template方法使用快速歸壹化互相關算法2。
遍歷模板圖像集,並將其與圖像進行匹配。如果dist大於閾值h,則認為圖像中存在該模板,否則不存在,繼續匹配下壹個模板,直到遍歷完所有模板。
以模板‘賈’為例。圖像尺寸為40x260,模板尺寸為27x27。結果是壹個大小為(14,234)的矩陣,也就是上面提到的相似度矩陣。矩陣中的數值屬於[-1,1],結果中找到最大值的對應位置是和。(詳見參考文獻4。)
但這是壹個很好的情況,因為匹配時遍歷所有的模板,壹張圖片中出現的模板數量是有限的。例如,數字“四”在圖片中不存在。這時,這些沒有出現在圖片中的模板要按照壹定的規則去除:程序中使用dist變量過濾匹配結果,如果dist變量大於某個值,則認為該模板在圖像中不存在。
在最終的result_list中,可能還會有壹些圖片中不存在的或者匹配不準確的模板。比如數字‘壹’在模板中不存在,但還是可以匹配的,因為數字‘二’可以匹配到‘壹’,需要進壹步優化。優化的方法有很多,比如當兩個匹配的模板過於接近時選擇較大的模板,剩下的留給讀者去考慮。
深度學習識別驗證碼怎麽用後面會介紹,敬請期待~
參考資料:
blogs.com/beer/p/5672678.html
/blog/2065 438+03/03/cosine _ similarity . html
J.P. Lewis,“快速歸壹化互相關”,工業光魔。
http://sci kit-image . org/docsjinhqin/dev/auto _ examples/plot _ template . html
作者簡介:李惠(點融剛),畢業於電子科技大學點融學院,現就職於點融成都數據部,壹個對壹切新鮮事物充滿好奇,對舞蹈毫無抵抗力的活力女青年。