投影法分割字符 网上找到的

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

%计算车牌水平投影,并对水平投影进行峰谷分析

histcoll=sum(sbw2);

histrow=sum(sbw2');

figure;subplot(2,1,1);bar(histcoll);title('垂直投影(含边框)');

subplot(2,1,2),bar(histrow);title('水平投影(含边框)');

figure;subplot(2,1,1);bar(histrow);title('水平投影(含边框)');

subplot(2,1,2);imshow(sbw2);title('车牌二值子图');

%对水平投影进行投影分析

meanrow=mean(histrow);

minrow=min(histrow);

levelrow=(meanrow+minrow)/2;

count1=0;

l=1

for k=1:hight

if histrow(k)<=levelrow

count1=count1+1;

else

if countl>=l

markrow(l)=k; %上升点

markrow1(l)=countl; %谷宽度(下降点至下一个上升点)l=l+1;

end

count1=0;

end

end

markrow2=diff(markrow); %峰距离(上升点至下一个上升点)

[ml,nl]=size(markrow2);

nl=nl+1;

markrow(l)=hight;

markrow(l)=count1;

markrow2(nl)=markrow(l)-markrow(l-1);

l=0;

for k=1:nl

markrow3(k)=markrow(k+1)-markrow1(k+1); %下降点

markrow4(k)=markrow3(k)-markrow(k); %峰宽度(上升点至下降点)markrow5(k)=markrow3(k)-double(unit16(markrow4(k)/2)); %峰中心位置end

%去水平(上下)边框,获取字符高度

maxhight=max(markrow2);

findc=find(markrow2==maxhight);

rowtop=markrow(findc);

rowbot=markrow(findc+1)-markrow1(findc+1);

sbw2=sbw(rowtop:rowbot,:); %子图为(rowbot-rowtop+1)行

maxhight=rowbot-towtop+1; %字符高度(rowbot-rowtop+1)

%计算车牌垂直投影,去掉车牌垂直边框,获取车牌和字符平均宽度

histcol=sum(A); %计算垂直投影

figure,subplot(2,1,1),bar(histco l);title(‘垂直投影(去水平边框后)‘);

subplot(2,1,2),imshow(sbw2);

title([‘车牌字符高度:‘,int2str(maxhight)],’Color’,’r’)

meancol=mean(histcol);

mincol=min(histcol);

levelcol=(meancol+mincol)/4;

countl=0;

l=1;

for k=1:width

if histcol(k)<=levelcol

countl=countl+1;

else

if countl>=1

markcol(l)=k; %字符上升点

markcol1(l)=countl; %谷宽度(下降点至下一个上升点)

l=l+1;

end

count1=0;

end

end

markcol2=diff(markcol); %字符距离(上升点至下一个上升点)

[ml,nl]=size(markcol2);

nl=nl+1;

markcol(1)=width;

markcol1(1)=count1;

markcol2(nl)=markcol(1)-markcol(l-1);

%计算车牌上每个字符中心位置,计算最大字符宽度maxwidth

l=0;

for k=1:nl

markcol3(k)=markcol(k+1)-markcol1(k+1); %字符下降点

markcol4(k)=markcol3(k)-markcol(k); %字符宽度(上升点至下降点)

markcol5(k)=markcol3(k)-double(unit16(markcol4(k)/2)); %字符中心位置

end

markcol6=diff(markcol5); %字符中心距离(字符中心点至下一个字符中心点)maxs=max(markcol6); %查找最大值,即为第二个字符与第三个字符中心距离findmax=find(markcol6==maxs);

markcol6(findmax)=0; %将最大值清0

maxwidth=max(markcol6); %查找最大值,即为最大字符宽度

%提取分割字符,并变换为40*20的标准子图

l=1;

[m2,n2]=size(subcol);

figure;

相关文档
最新文档