📄 all1026otherding.m
字号:
% tt2=cunna; figure(112),imshow(tt2),title('.....');
else
k=1 ;
end
end
j=j+1;
end
end
k12=tc;
k4=0;
%
figure(108),imshow(cunna),title('a3捺');
%%%%%%%%%%%%%%%%%%撇
if tc >1
for n2=1:(tc)
c1= hann(1,n2)+round(bb/4); %%%%%%%%%%%终点
c2=lien(1,n2)+round(bb/4);
for n1=(n2+1):tc
c3=abs( hanni(1,n1)-c1) ;
c4=abs( lienj(1,n1)-c2) ;
if (c3<=bb/4) && (c4<=bb/4)
ent1=hann(1,n2);
ent1j=lien(1,n2);
snt1=hanni(1,n1);
sntj1=lienj(1,n1);
tkk4=0;
while A(ent1+1,ent1j+1)>0&&(ent1<=snt1)&&(ent1j<=sntj1)
tkk4=tkk4+1;
ent1=ent1+1;
ent1j=ent1j+1;
end
if tkk4>2
k4=k4+1;
BBBB(1,k4)=n2;%%%%%%%%%%%终点相关联点
AAAA(1,k4)=n1;
end%%%%%%%%%%%起点
end
end
end
end
if tc >1
if k4 >0
for i=1:k4
cc1=BBBB(1,i);
cc2=AAAA(1,i);
shanp1=hann(1,cc1);%%%%撇的终止点作为补齐时的起始点
sliep1= lien(1,cc1);%%%%撇的终止点作为补齐时的起始点
ehanp1=hanni(1,cc2);%%%%撇的终止点作为补齐时的终点
eliep1= lienj(1,cc2);%%%%撇的终止点作为补齐时的终点
tck1=shanp1;
tck2= sliep1;
klon=0;
while A(tck1,tck2)>0 &&(tck1<=ehanp1)&&(tck2<=eliep1)
cunna(tck1,tck2)=255;
tck1=tck1+1;
tck2=tck2+1;
% klon=klon+1;
end
hann(1,cc1)=hann(1,cc2);%%%%终止点
lien(1,cc1)= lien(1,cc2);
hanni(1,cc2)=hanni(1,cc1);%%%%起始点
lienj(1,cc2)=lienj(1,cc1);
% longp2(1,cc1)=longp(1,cc1)+longp(1,cc2)+klon;
% longp2(1,cc2)=longp(1,cc1)+longp(1,cc2)+klon;
end
else
for i=1:tc
l1=hann(1,i)+1;
l2=lien(1,i)+1;
while A(l1,l2) >0
cunna(l1,l2)=255;
l1=l1+1;
l2=l2+1;
end
end
end
longn2= longn;
if k4 >0
for i=1:k4
cp1=BBBB(1,i);
cp2=AAAA(1,i);
hann(1,cp1)=hann(1,cp2); %%%%%%%%%终止点
lien(1,cp1)=lien(1,cp2);
hanni(1,cp2)=hanni(1,cp1);%%%%%%%%%%%起点
lienj(1,cp2)=lienj(1,cp1);
longn2(1,cp2)=longn(1,cp2)+longn(1,cp1)+round(bb/2);
longn2(1,cp1)=longn(1,cp2)+longn(1,cp1)+round(bb/2);
end
end
%
figure(110),imshow(cunna),title('a3捺');
%%%%%%%%%%%%%%%%%%撇
aaa=atl;%正侧的行边缘
dddd=0;
for kkkk=1:bb
for i=1:(m)
for j=1:(n-1)
t1=aaa(i,j);
if t1 >0
dddd=dddd+1;
else
if dddd>5
dddd=0;
if A(i,j) >5
aaa(i,j)=aaa(i,j-1);
end
else
dddd=0;
end
end
end
end
end
end
dddd=0;
for kkkk=1:bb
for i=1:(m)
for j=(n-1):-1:(2)
t1=aaa(i,j);
if t1>0
dddd=dddd+1;
else
if dddd>5
dddd=0;
if A(i,j) >5
aaa(i,j)=aaa(i,j+1);
end
else
dddd=0;
end
end
end
end
end
end
%%%%%%%%%%%滤波
dd=0;
for i=1:(m)
j=1;
while(j<=n)
t1=aaa(i,j);
if t1 >0
k9=j;
while aaa(i,k9)>0
dd=dd+1;
k9=k9+1;
if k9 > n
k9=k9-1;
break;
end
end
if dd < 9
for k8=dd:-1:1;
tttt=k9-k8;
aaa(i,k9-k8)=0;
end
j=j+dd-1;
dd=0;
else
j=j+dd-1;
end
dd=0;
end
j=j+1;
end
end
%%%%%%%%%%
for j=1:(n)
for i=1:(m)
pie1(i,j)=apie(i,j)-aaah(i,j)-aaa(i,j);
end
end
%figure(109),imshow(pie1),title('00');
cunpie=zeros(m,n);
pie=pie1;
tc=0;
for i=1:(m)
j=n;
while(j>=1)
t1=pie(i,j); kk9=j;
kk8=i;
if t1 >0
tb=0; cunpie(kk8,kk9)=t1;
[t3,kk8,kk9]=piepos(pie,kk8,kk9);
while t3>0&& kk9<n
cunpie(kk8,kk9)=t3;
pie(kk8,kk9)=0;
[t3,kk8,kk9]=piepos(pie,kk8,kk9);
cunpie(kk8,kk9)=t3;
tb=tb+1;
end
if ((double(kk8)-i)==0 && (j-double(kk9)) >10)||((double(kk8)-i)>10 && (j-double(kk9))==0)
for ss=i:kk8
for tt=j:-1:kk9
pie(ss,tt)=0;
cunpie(ss,tt)=0;
end
end
elseif (tb < 8&&tb >0) || (abs(double(kk9)-j)<=2||abs(double(kk8)-i)<=2 )
for ss=i:kk8
for tt=j:-1:kk9
pie(ss,tt)=0;
cunpie(ss,tt)=0;
end
end
elseif tb>=8
tc=tc+1;
hanp(1,tc)=kk8;liep(1,tc)=kk9; %%%%%%%%%%%终点
hanpi(1,tc)=i;liepj(1,tc)=j; %%%%%%%%%%%起点
longp(1,tc)=tb;
else
k=1 ;
end
end
j=j-1;
end
end
end
k13=tc;
k5=0;
figure(118),imshow(cunpie),title('撇');
if tc >1
for n2=1:(tc)
c1= hanp(1,n2)+round(bb/2); %%%%%%%%%%%终点
c2=abs(liep(1,n2)-round(bb/2));
for n1=(n2+1):tc
c3=abs( hanpi(1,n1)-c1) ;
c4=abs( liepj(1,n1)-c2) ;
if c3<=5 && c4<=5
if A(hanp(1,n2)+2,liep(1,n2)-2)>0
k5=k5+1;
BBBBp(1,k5)=n2;%%%%%%%%%%%撇的终点将撇的终点与撇的起点联系起来
AAAAp(1,k5)=n1;
end%%%%%%%%%%%撇的起点
end
end
end
end
longp2=longp;
if tc >1
if k5 >0
for i=1:k5
cc1=BBBBp(1,i);
cc2=AAAAp(1,i);
shanp1=hanp(1,cc1);%%%%撇的终止点作为补齐时的起始点
sliep1= liep(1,cc1);%%%%撇的终止点作为补齐时的起始点
ehanp1=hanpi(1,cc2);%%%%撇的终止点作为补齐时的终点
eliep1= liepj(1,cc2);%%%%撇的终止点作为补齐时的终点
tck1=shanp1;
tck2= sliep1;
klon=0;
while A(tck1,tck2)>0 &&(tck1<=ehanp1)&&(tck2>=eliep1)
cunpie(tck1,tck2)=255;
tck1=tck1+1;
tck2=tck2-1;
klon=klon+1;
end
hanp(1,cc1)=hanp(1,cc2);%%%%终止点
liep(1,cc1)=liep(1,cc2);
hanpi(1,cc2)=hanpi(1,cc1);%%%%起始点
liepj(1,cc2)=liepj(1,cc1);
% longp2(1,cc1)=longp(1,cc1)+longp(1,cc2)+klon;
% longp2(1,cc2)=longp(1,cc1)+longp(1,cc2)+klon;
end
else
for i=1:tc
l1=hanp(1,i)+1;
l2=liep(1,i)-1;
while A(l1,l2) >0
cunpie(l1,l2)=255;
l1=l1+1;
l2=l2-1;
end
end
end
for i=1:k5
cc1=BBBBp(1,i);
cc2=AAAAp(1,i);
hanp(1,cc1)=hanp(1,cc2);%%%%终止点
liep(1,cc1)=liep(1,cc2);
hanpi(1,cc2)=hanpi(1,cc1);%%%%起始点
liepj(1,cc2)=liepj(1,cc1);
longp2(1,cc1)=longp(1,cc1)+longp(1,cc2)+round(bb/2);
longp2(1,cc2)=longp(1,cc1)+longp(1,cc2)+round(bb/2);
end
%%%%%%%%%%%%%%%%%%撇 figure(118),imshow(cunpie),title('撇');
k12;
k13;
k6=0;
for i=1:k12
c1= hanni(1,i); %%%%%%%%%%%终点
c2=(lienj(1,i));
for j=(1):k13
c3=abs( hanp(1,j)-c1) ;
c4=abs( liep(1,j)-c2) ;
if c3<=4 && c4<=4
k6=k6+1;
BBBBnn(1,k6)=i;%%%%%%%%%%%终点
AAAApn(1,k6)=j;%%%%%%%%%%%起点
end
end
end
%figure(110),imshow(cunpie),title('撇');
%%%%%%%%%%%%%%%%%%%%%以下为撇与捺的滤波,主要是消除短捺及短撇!!!是否
for i=1:k6
jj=BBBBnn(1,i);
j2=AAAApn(1,i);
kk8=hanni(1,jj);
kk9=lienj(1,jj);
kk10=hanpi(1,j2);
kk11=liepj(1,j2);
cl3=hann(1,jj);
cl4=lien(1,jj);
lonpp=longp2(1,j2);
lonnn=longn2(1,jj);
t6=cunna(kk8,kk9);
t7=cunpie(kk10,kk11);
if (lonnn<lonpp)&&((lonnn<=bb))
while t6>0
[t6,cunna,kk8,kk9]=clrna(cunna,kk8,kk9);
end
elseif (lonnn>=lonpp)&&(lonpp<=bb)
while t7>0
[t7,cunpie,kk10,kk11]=clrpie(cunpie,kk10,kk11);
end
else
k=k+1;
end
end
figure(103),imshow(cunpie),title('撇');
figure(102),imshow(cunna),title('a3捺');
for i=1:m
for j=1:n
if double(ahen(i,j))>0
ahen(i,j)=255;
else
ahen(i,j)=0;
end
end
end
for i=1:m
for j=1:n
if double( alie(i,j))>0
alie(i,j)=255;
else
alie(i,j)=0;
end
end
end
for i=1:m
for j=1:n
if double(cunpie(i,j))>0
cunpie(i,j)=255;
else
cunpie(i,j)=0;
end
end
end
for j=1:n
if double(cunna(i,j))>0
cunna(i,j)=255;
else
cunna(i,j)=0;
end
end
end
for i=1:m
for j=1:n
all(i,j)=double(ahen(i,j))+double(cunna(i,j))+double(alie(i,j))+double(cunpie(i,j)); %所有边缘
end
end
figure(104),imshow(all),title('全字');
toc;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -