字符定位與字符分割

Abstract字符串識別最重要的是字符串定位以及字符串分割。例如做車牌識別,車牌字符定位和分割是最難的部分。對於一張字符串的圖像,首先必須要定位出字符串的邊界,然後分別對字符串進行單個切割,單個分割出來的字符再做識別。 下面就介紹字符串定位和字符串分割的方法。

1. 字符串定位
下面先看一幅手寫字圖片


我們需要做的是找出整個字符的邊界然後對圖片進行切割。
對於一張M×N 大小的圖片I,我們先對圖片進行二值化處理。一張圖片可以看成一個矩陣,這樣這個矩陣裏面的數字不是1就是0。我們需要對這個矩陣進行行掃描和列掃描。對於列掃描和行掃描統計一行或者一列中1的個數分別有如下公式:
colA=Mj=1Ij
rowA=Ni=1Ii
這樣就統計出每一列或者每一行的1的個數。下圖爲統計圖:

這下我們可以定義出左邊界、右邊界、上邊界、下邊界。這樣就可以切割出字符串的邊界如下圖所示:


xfenge.m

function [ix,iy]=xfenge(goal1)
[m,n]=size(goal1);
ix(m)=0;
xx=0;j=1;
for  x=1:m
    for y=1:n
        if goal1(x,y)==1;
            xx=1;
        end
    end
    if xx==1
        ix(j)=x;
        j=j+1;
    end
end
ix=ix(1);


iy(m)=0;
xx=0;j=1;
for  x=m:-1:1
    for y=n:-1:1
        if goal1(x,y)==1;
            xx=1;
        end
    end
    if xx==1
        iy(j)=x;
        j=j+1;
    end
end
iy=iy(1);

yfenge.m

function [jx,jy]=yfenge(goal1)
[m,n]=size(goal1);
jx(m)=0;
xx=0;j=1;
for  y=1:n
    for x=1:m
        if goal1(x,y)==1;
            xx=1;
        end
    end
    if xx==1
        jx(j)=y;
        j=j+1;
    end
end
jx=jx(1);


jy(m)=0;
xx=0;j=1;
for  y=n:-1:1
    for x=m:-1:1
        if goal1(x,y)==1;
            xx=1;
        end
    end
    if xx==1
        jy(j)=y;
        j=j+1;
    end
end
jy=jy(1);

2. 字符分割
對於字符分割我們只看X方向,對於X我們可以看到很多斷點,如下所示


我們可以統計出斷點的位置來對不同字符進行分割,兩個段點之間能進行確定一個字符。當然這個只是針對未粘連的字符,但是對於粘連字符斷點可以設置一個小的閾值來當做斷點。這個需要根據實際處理的字符串來判斷。下面給出結果和代碼:

I=imread('24.jpg');
figure(1)
imshow(I)
I=rgb2gray(I);
I=1-im2bw(I);
[ix1,iy1]=xfenge(I);
[jx1,jy1]=yfenge(I);
goal=I(ix1:iy1,jx1:jy1);
goal=[zeros(size(goal,1),2) goal zeros(size(goal,1),2)];
a=sum(goal);
label=find(a>0);
summ=0;
j=1;
for i=1:length(label)-1
    if (label(i+1)-label(i))>1
        KK(j)=label(i);
        JJ(j)=label(i+1);
        summ=summ+1;
        j=j+1;
    end
end
%figure(2)
JJ=[3 JJ];
KK=[KK size(goal,2)-2];
summ=summ+1;
figure(2)
for i=1:summ
    subplot(1,summ,i);
    II=goal(:,JJ(i)-2:KK(i)+2);
    II=imresize(II,[25,18]);
    imshow(II);
    hold on
end

車牌等字符串定位分割也可以採用類似的方法。

發佈了59 篇原創文章 · 獲贊 60 · 訪問量 46萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章