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

📄 weight_abstractperiphery.m

📁 给出两个加权特征
💻 M
字号:
function P = Weight_AbstractPeriphery(im)
%加权粗外围特征
%从文字四边框各向对边扫描,计算最初与文字笔划相碰的非文字部分的面积和全部面积之比作为一次粗外围特征Pi(i =1,…,4n)
%再将第二次文字线相碰的非文字部分面积和全部面积之比作为二次粗外围特征 Pi(i =1,…,4n ),形成8n维的特征向量 
Im= im(:,:,1);
% [NumRows,NumCols] = size(Im);
Im = not(Im);
% imshow(Im);
N=64;
w=[0 0.25 0.5 0.75 1 0.75 0.5 0.25 0];
% WPFL1=zeros(1,8);
% WPFR1=zeros(1,8);
% WPFU1=zeros(1,8);
% WPFD1=zeros(1,8);
% WPFL2=zeros(1,8);
% WPFR2=zeros(1,8);
% WPFU2=zeros(1,8);
% WPFD2=zeros(1,8);
%%左--右方向
for i=1:8
    I=8*(i-1)+4;
LengthL1(1:8)=0;
LengthR1(1:8)=0;
LengthL2(1:8)=0;
LengthR2(1:8)=0;
    for k=-3:4
          IndexLeft = not(Im(I+k,1:N-1)).*Im(I+k,2:N);
          IndexRight = not(Im(I+k,2:N)).*Im(I+k,1:N-1);
              PosL  = find(IndexLeft==1);
              PosR = find(IndexRight ==1);
%从左到右第一次遇到黑像素
if(size(PosL,2)>=1)
                  LengthL1(k+4) = PosL(1);
              else
                  LengthL1(k+4) = 64;
end
%从右到左第一次遇到黑像素
if(size(PosR,2)>=1)
                 LengthR1(k+4) = 64-PosR(end); 
              else
                 LengthR1(k+4) = 64;
end
%第二次遇到黑像素
              if(size(PosL,2)>=2)
                  LengthL2(k+4) = PosL(2);
              else
                  LengthL2(k+4) = 64;
              end
              if(size(PosR,2)>=2)
                  LengthR2(k+4) = 64-PosR(end-1);
              else
                  LengthR2(k+4)=64;
              end
    end
 WPFL1(i)= sum(w(1:8).*LengthL1);
 WPFR1(i)= sum(w(1:8).*LengthR1);
 WPFL2(i)= sum(w(1:8).*LengthL2);
 WPFR2(i)= sum(w(1:8).*LengthR2);
end
%上--下方向
for i=1:8
LengthU1(1:8)=0;
LengthD1(1:8)=0;
LengthU2(1:8)=0;
LengthD2(1:8)=0;
    J=8*(i-1)+4;
    for k=-3:4
          IndexUp =(not(Im(1:N-1,J+k)).*Im(2:N,J+k))';
          IndexDown =(not(Im(2:N,J+k)).*Im(1:N-1,J+k))';
              PosU = find(IndexUp==1);
              PosD = find(IndexDown==1);
%从上到下第一次遇到黑像素
if(size(PosU,2)>=1)
                  LengthU1(k+4) = PosU(1);
              else
                  LengthU1(k+4) = 64;
end
%从下到上第一次遇到黑像素
if(size(PosD,2)>=1)
                 LengthD1(k+4) = 64-PosD(end); 
              else
                 LengthD1(k+4) = 64;
end
%第二次遇到黑像素
              if(size(PosU,2)>=2)
                  LengthU2(k+4) = PosU(2);
              else
                  LengthL2(k+4) = 64;
              end
              if(size(PosD,2)>=2)
                  LengthD2(k+4) = 64-PosD(end);
              else
                  LengthD2(k+4) = 64;
              end
    end
 WPFU1(i)= sum(w(1:8).*LengthU1);
 WPFD1(i)= sum(w(1:8).*LengthD1); 
 WPFU2(i)= sum(w(1:8).*LengthU2);
 WPFD2(i)= sum(w(1:8).*LengthD2);
end
 P=horzcat(WPFL1,WPFR1,WPFU1,WPFD1,WPFL2,WPFR2,WPFU2,WPFD2);
P=P/(N*N);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -