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

📄 all1025ding.m

📁 一个用matlab编写的 关于笔画提取的仿真试验程序
💻 M
📖 第 1 页 / 共 2 页
字号:
end
end
 cunna=zeros(m,n);
 na=na1;tc=0;
 for  i=1:(m)
     j=1;
    while(j<=n)
        t1=na(i,j);
        kk8=i;kk10=i;
         kk9=j;kk11=j;
        if  t1 >0 
            tb=1; cunna(kk8,kk9)=t1;
          [t2,kk8,kk9]=napos2(na,kk8,kk9);
        while t2>0 && kk9<n
          cunna(kk8,kk9)=t2; na(kk8,kk9)=0;
         [t2,kk8,kk9]=napos2(na,kk8,kk9);
        cunna(kk8,kk9)=t2;
         na(kk8,kk9)=0;
       tb=tb+1;
         end
             if ((double(kk8)-i)==0 && (double(kk9)-j) >10)||((double(kk8)-i)>10 && (double(kk9)-j)==0)
                   for ss=i:kk8
                       for tt=j:kk9
                           na(ss,tt)=0;
                           cunna(ss,tt)=0;
                       end
                   end
               elseif  (abs(double(kk9)-j)<=1||abs(double(kk8)-i)<=1)||(tb <8&& tb>0)
                   for ss=i:kk8
                       for tt=j:kk9
                           na(ss,tt)=0;
                           cunna(ss,tt)=0;
                       end
                   end 
               
           elseif tb>=8
            tc=tc+1;
            hann(1,tc)=kk8;lien(1,tc)=kk9;
            hanni(1,tc)=i;lienj(1,tc)=j;  longn(1,tc)=tb;
             
          %  tt2=cunna; figure(112),imshow(tt2),title('.....');  
        else
       
         k=1 ;
     end
            end
            j=j+1;  
      end
  end
k12=tc;
  k4=0;
   if tc >1
          for n2=1:(tc) 
             c1= hann(1,n2)+round(bb/2);  %%%%%%%%%%%终点
              c2=lien(1,n2)+round(bb/2);
              for n1=(n2+1):tc
            c3=abs( hanni(1,n1)-c1) ;
             c4=abs( lienj(1,n1)-c2) ;
             if (c3<=bb/2) && (c4<=bb/2) 
                k4=k4+1;
                 BBBB(1,k4)=n2;%%%%%%%%%%%终点相关联点
                 AAAA(1,k4)=n1;%%%%%%%%%%%起点
            end
              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(108),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:(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)<=1||abs(double(kk8)-i)<=1 )
                   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;

   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<=bb/2 && c4<=bb/2
                k5=k5+1;
                 BBBBp(1,k5)=n2;%%%%%%%%%%%终点
                 AAAAp(1,k5)=n1;%%%%%%%%%%%起点
            end
              end
          end
      end
       longp2=longp;
      for i=1:k5
         
          cc1=BBBBp(1,i);
          cc2=AAAAp(1,i);
           hanp(1,cc1)=hanp(1,cc2);%%%%终止点
           liep(1,cc1)=hanp(1,cc2);
            hanpi(1,cc2)=hanpi(1,cc1);%%%%起始点
            liepj(1,cc2)=hanpi(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
        
   %%%%%%%%%%%%%%%%%%撇
   
  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);bb
        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 + -