粘連字元分割初探

2022-07-25 11:24:13 字數 1362 閱讀 9410

學習驗證碼快乙個星期了,終於把樣本集切出來了,現在問題是如何切粘連字元,現在將自己的學習過程記錄下來;

第一部分:

下面很大一部分**感謝原作者。

我們知道,對於不黏連的字元,直接用掃瞄線分割法就可以,就是看哪乙個豎條上沒有文字畫素,則這個豎條就是兩個字元間的空白部分;

當然,對於不黏連的字元,cfs演算法效果也很好,它主要是利用連通域進行劃分;

還有cfs4d的方法,他只掃瞄上下左右4個畫素來判斷是否為種子的連通域;

而cfs則是將他周圍的8個畫素來判斷的。

對於每次字元大小和數量都一樣的驗證碼還可以用平均分割法,也就是直接先把中間的文字部分整體切出來,然後按寬度平均分成幾份,這種方式對字元粘連比較多用其他方式不好分割的驗證碼很有用

對於有少許粘連但是只是在字元邊角的地方重疊幾個畫素的驗證碼,可以用垂直畫素直方圖的統計方法分割。就是對每乙個豎條,統計該豎條上出現的畫素數(當然,前提要是二值化的圖)

還有滴水演算法;

上半部分是垂直畫素直方圖的一種直觀展示,假如寬度為100畫素,則把切割為100個1畫素的豎線,下面的紅色部分為當前x座標上所有黑色畫素的總和。這麼一來可以很容易的通過直方圖的波峰波谷把4個字母分割開。的下半部分是掃瞄線分隔法,因為干擾線和字元旋轉的存在,只有m和5直接才出現了連續的空白部分。

除了垂直畫素直方圖,還可以從不同的角度進行斜線方向的畫素數投影,這種方式對於每次全體字元都隨機向乙個角度旋轉的驗證碼效果很好。

另外對於彩色的驗證碼,還可以用顏色分割

作為驗證碼識別裡的難點,分割字元還有很多種演算法,包括筆畫分析曲線角度分析等等,不過即便如此,對粘連的比較厲害的字元還是很難成功的

還原隨機旋轉的字元一般採用的是旋轉卡殼演算法:

此演算法非常簡單,對一張左右各旋轉30度的範圍,每次1度,旋轉後用掃瞄線法判斷字元的寬度,對於標準的長方形字型,在完全垂直的時候肯定是寬度最窄的。嗯?納尼?上面的圖是中間的最窄?好像的確是這樣,不過只要每次旋轉後的結果都一樣,對於識別率不會有影響。

扭曲還原的演算法比較蛋疼,效果也不怎麼樣(其實我不會),不過如果識別演算法好的話,對扭曲的字元只要人能認出來,識別率也可以達到接近人類的水準。

第二部分:

銳化 & 平滑:  影象平滑往往使影象中的邊界、輪廓變得模糊,為了減少這類不利效果的影響,這就需要利用影象銳化技術,使影象的邊緣變的清晰。影象銳化處理的目的是為了使影象的邊緣、輪廓線以及影象的細節變的清晰。

題外話:

今天編碼的時候有很多細節問題,處理不好,一上手就開始碼字,編完一編譯才發現很多序號問題不對,然後各種修改,原本清晰地**被改的面目全非,哎,豈是乙個心累能表達的,教訓:以後編碼之前要好好思考一下,細節的處理,最好可以寫個大概的框架出來,這樣避免很多細節問題惡化,甚至影響整體思路。

halcon粘連字元分割 粘連字元分割初探

學習驗證碼快乙個星期了,終於把樣本集切出來了,現在問題是如何切粘連字元,現在將自己的學習過程記錄下來 第一部分 我們知道,對於不黏連的字元,直接用掃瞄線分割法就可以,就是看哪乙個豎條上沒有文字畫素,則這個豎條就是兩個字元間的空白部分 當然,對於不黏連的字元,cfs演算法效果也很好,它主要是利用連通域...

藥片粘連物體的分割

將藥片分割,統計藥片數量。不能使用模板匹配。先看一下要處理的原圖 第一部分 select shape connectedregions1 selectedregions,area rectangularity and 100,0.5 700,1 dilation circle selectedreg...

Halcon 分割粘連區域(分水嶺演算法)

read image image,f 培訓 halcon培訓 2.jpg rgb1 to gray image,grayimage 平滑去噪 mean image grayimage,imagemean,3,3 get image size imagemean,width,height 擷取中心ro...