新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于FPGA的脱机手写体汉字识别系统

基于FPGA的脱机手写体汉字识别系统

作者:时间:2014-11-08来源:网络收藏

  2.4仿真识别结果(以数字测试)

本文引用地址:http://www.eepw.com.cn/article/265048.htm

  附:

  (部分matlab主要程序代码)

  主程序:main.m

  clear

  clc

  global X; %图像特征矩阵

  global S; %样本特征矩阵

  sample_training; %训练样本

  E=imread('6_1.jpg'); %待识别图像读入

  %A=gca;

  imshow(E);%axis(A);

  initial(E);

  i=0;j=0;d=0;

  Dm=zeros(10,15);

  for i=1:10

  for j=1:15

  Dm(i,j)=abs(S(i,j)-X(1,j));

  end

  end

  D=sum(Dm,2);

  Position=find(D==min(D));

  % i=Position;

  if Position==10

  Position=0;

  else break;

  end

  set(handles.edit1,'String',Position);

  预处理程序:initial.m

  function initial(RGB)

  GRAY=rgb2gray(RGB);

  %高斯滤波

  g=fspecial('gaussian',3,3);

  GRAY1=imfilter(GRAY,g);

  %切割图像

  BW=im2bw(GRAY1);

  [m,n]=size(BW);

  %竖直投影

  I1=sum(BW);

  L=max(I1);

  L1=L-2;

  x1=0;x2=0;k=0;

  for k=1:m

  if I1(k)

  x1=k;break;

  else

  k=k+1;

  end

  end

  for k=x1:m

  if I1(k)>L1

  x2=k;break;

  else

  k=k+1;

  end

  end

  %水平投影

  BW1=BW';

  I2=sum(BW1);

  L=max(I2);

  L2=L-2;

  y1=0;y2=0;k=0;

  for k=1:n

  if I2(k)

  y1=k;break;

  else

  k=k+1;

  end

  end

  for k=y1:n

  if I2(k)>L2

  y2=k;break;

  else

  k=k+1;

  end

  end

  %行,子切分

  BW2=BW(y1:y2,x1:x2);

  %图像归一化

  NOR=imresize(BW2,[120 90]);

  %特征提取

  X=zeros(1,15);

  X(1)=bwarea(NOR(1:40,1:30))/10800;

  X(2)=bwarea(NOR(1:40,31:60))/10800;

  X(3)=bwarea(NOR(1:40,61:90))/10800;

  X(4)=bwarea(NOR(41:80,1:30))/10800;

  X(5)=bwarea(NOR(41:80,31:60))/10800;

  X(6)=bwarea(NOR(41:80,61:90))/10800;

  X(7)=bwarea(NOR(81:120,1:30))/10800;

  X(8)=bwarea(NOR(81:120,31:60))/10800;

  X(9)=bwarea(NOR(81:120,61:90))/10800;

  X(10)=X(1)+X(2)+X(3);

  X(11)=X(4)+X(5)+X(6);

  X(12)=X(7)+X(8)+X(9);

  X(13)=X(1)+X(4)+X(7);

  X(14)=X(2)+X(5)+X(8);

  X(15)=X(3)+X(6)+X(9);

fpga相关文章:fpga是什么


绝对值编码器相关文章:绝对值编码器原理
全息投影相关文章:全息投影原理

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭