5、對腐蝕膨脹后的圖像進行Y方向上的區域選定,限定區域后的圖像如圖所示: 掃描方法:中間往兩邊掃
?
縱向掃描后的圖像與原圖像的對照,如圖8所示:
?
6、對腐蝕膨脹后的圖像進行X方向上的區域選定,限定區域后的圖像如圖9所示: 掃描方法:兩邊往中間掃
?
縱向掃描后的圖像與原圖像的對照,如圖所示:
?
7. 調用i8=(iiXY~=1),使背景為黑色(0),字符為白色(1),便于后期處理。 背景交換后的圖像如圖11所示:
8. 調用自定義函數(字符獲取函數)i9=getchar(i8),得到圖像如圖所示:
9、調用自定義的字符獲取函數對圖像進行字符切割,并把切割的字符裝入一維陣列,切割 過程如圖12所示:
10.調用以下代碼,可將陣列word中的字符顯示出來,如圖13所示:
?
? ? ? ? for j=1:cnum %cnum為統計的字符個數
? ? ? ? subplot(5,8,j),imshow(word{j}),title(int2str(j)); %顯示字符?
? ? ? end
?可以看到,字符寬度不一致
?
11. 調用以下代碼,將字符規格化,便于識別: for j=1:cnum word{j}=imresize(word{j},[40 40]); %字符規格化成40×40的 end 得到規格化之后的字符如圖14所示:
12. 調用以下代碼創建字符集:
code=char(‘由于作者水平有限書中難免存在缺點和疏漏之處懇請讀批評指正,。’);
將創建的字符集保存在一個文件夾里面,以供匹配時候調用,如圖15所示:
?
13. 字符匹配采用模板匹配算法:將現有字符逐個與模板字符相減,認為相減誤差最小的現 有字符與該模板字符匹配。
?
也就是說,字符A與模板字符T1更相似,我們可以認為字符集中的字符T2就是字符A。 經模板匹配,可得字符信息如下: 由于讀者書評有限書中難免存在缺點和紕漏之處,懇請讀者批評指正。 效果如圖16所示:
?
14、調用以下代碼,將字符放入newtxt.txt文本:
new=[‘newtxt’,‘.txt’]; c=fopen(new,‘a+’); fprintf(c,‘%s ’,Code(1:cnum)); fclose(c); newtxt.txt文本內容如圖17所示:
?
總結
1、算法具有局限性。對于左右結構的字符(如:川)容易造成誤識別,“川”字將會被識別成三部分。當圖片中文字有一定傾斜角度時,這將造成識別困難。
2、模板匹配效率低。對于處理大小為m×m的字符,假設有n個模板字符,則識別一個字符至
少需要m×m×n×2次運算,由于漢字有近萬個,這將使得運算量十分巨大!此次字符識 別一共花了2.838秒。
3、伸縮范圍比較小。對于受污染的圖片,轉換成二值圖像將使字符與污染源混合在一起。
對于具體的圖片,需反復選擇合適的thresh進行二值化處理,甚至在處理之前必須進行各種濾波。
評論
查看更多