⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 all1026otherding.m

📁 一个用matlab编写的 关于笔画提取的仿真试验程序
💻 M
📖 第 1 页 / 共 2 页
字号:
          %            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 + -