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