• 大小: 37KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-25
  • 语言: Matlab
  • 标签: MNIST  多特征  matlab  

资源简介

多特征 MNIST库 手写数字识别实现(matlab),采用粗网格特征和切割线划分进行学习识别,首先提取MNIST数据库60000个训练样本分别提取出两个特征,然后对10000个测试样本进行测试,计算和两个特征的距离进行判别,matlab 实现

资源截图

代码片段和文件信息

clear;
clc;
directory=uigetdir(‘‘‘亲,请选择测试图片路径‘);
ImageNum=10000;
numis=textread(‘test.txt‘‘%1d‘);  %numis 是正确的ImageNum个样本值
fid=fopen(‘log.txt‘‘w‘);
%读出77和66的特征值
fea66=load(‘features6.txt‘);
fea77=load(‘features7.txt‘);
estat=zeros(110);
h_w=waitbar(0‘请稍后,正在处理中>>>>>>>>‘);
for i=1:ImageNum
    featone=zeros(112);     %统计特征
    %读取图像并二值化
    impath=fullfile(directory[‘TestImage_‘ num2str(i‘%05d‘) ‘.bmp‘]);
    rawim=imread(impath);
    xx=find(rawim<155);
    rawim(xx)=0;
    x=find(rawim>=155);
    rawim(x)=255;
    bwim=im2bw(rawim0.5);%二值化
    
    %读出来的这个数真实值是多少?jud 保存之
    jud=numis(i);
    if jud==0       %如果是0,放在第十个
        jud=10;
    end
    %%%%%%%%%%%%%%% 特 征 一 %%%%%%%%%%%%%%%%%
    %提取特征---6+6个分割线上连续点个数
    old=1;        %表示上一个点值
    new=1;        %表示现在这个点的值
    count=0;      %记录发生了多少次变化
    for c=1:6           %提取横向特征
        xl=4*c;
        for d=1:28      %遍历纵向的28个点
            old=new;
            new=bwim(dxl);
            if(old~=new)        %如果发生颜色变化则记录
                count=count+1;
            end
        end
        featone(c)=featone(c)+count/2;  %第jud个数第c个特征
        count=0;
    end
    for c=1:6           %提取纵向特征    
        yl=4*c;
        for d=1:28
            old=new;
            new=bwim(yld);
            if(old~=new)
                count=count+1;
            end
        end
        featone(c+6)=featone(c+6)+count/2;
        count=0;
    end
    %%%%%%%%%%%%%%% 特 征 二 %%%%%%%%%%%%%%%%%
    %读取每个块的像素个数
    gridnum=zeros(149);        %保存49个块的黑色像素个数
    xbase=1;
    ybase=1;
    for yz=0:6
        for xz=0:6          %这两个是7*7的大块
            for ybase=1:4
                for xbase=1:4       %这两个是在4*4的小块内
                    if(bwim(yz*4+ybasexz*4+xbase)==0)  %如果是黑色像素
                        gridnum(yz*7+xz+1)=gridnum(yz*7+xz+1)+1;
                    end
                end
            end
        end
    end
    %归一化特征二
    sum=0;
    for c=1:49          
        sum=sum+gridnum(c);
    end
    numfea=zeros(149);
    for c=1:49
        numfea(c)=gridnum(c)/sum;
    end
    %%%%%%%%%%%% 计算特征一的距离 %%%%%%%%%%%%%%%
    dist66=zeros(110);             %dist(c) 代表与标准第c个数字的距离
    for c=1:10
        for d=1:12
            temp=featone(d)-fea66(cd);    %该数字第d块减去数字c第d块特征值
            dist66(c)=dist66(c)+temp^2;
        end
    end    
    %%%%%%%%%%%% 计算特征二的距离 %%%%%%%%%%%%%%%
    dist77=zeros(110);             %dist(c) 代表与标准第c个数字的距离
    for c=1:10
        for d=1:49
            temp=numfea(d)-fea77(cd);    %该数字第d块减去数字c第d块特征值
            dist77(c)=dist77(c)+temp^2;
        end
    end
    %%%%%%%%%% 融合两距离为一个距离 %%%%%%%%%%%%
    dist=zeros(110);
    k2=240;
    for c=1:10
        dist=k2*dist77+dist66;
    end
    %计算最小距离和对应的index
    [aindex]=min(dist);
    if index~=jud
        if jud==10
            temp=0;
        else
            temp=jud;
        end
        if index==10
            tempi=0;
        e

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        487  2011-11-13 16:28  reame.txt

     文件       1320  2011-11-12 19:40  twofeatures - 归一化特征值\features6.txt

     文件       5400  2011-11-13 21:11  twofeatures - 归一化特征值\features7.txt

     文件      42000  2011-11-15 19:04  twofeatures - 归一化特征值\log.txt

     文件    1072694  2011-11-15 19:05  twofeatures - 归一化特征值\ok.bmp

     文件       3271  2011-11-13 17:14  twofeatures - 归一化特征值\recognize.asv

     文件       3508  2011-11-15 19:03  twofeatures - 归一化特征值\recognize.m

     文件      20000  2011-11-10 21:32  twofeatures - 归一化特征值\test.txt

     文件       2578  2011-11-13 17:53  twofeatures - 归一化特征值\untitled.fig

     文件       4348  2011-11-13 17:53  twofeatures - 归一化特征值\untitled.png

     文件       3964  2011-11-14 09:19  twofeatures - 归一化特征值\untitled2.png

     文件       1451  2009-02-22 22:44  提取出 MNIST 内容\Matlab_Read_t10k_images_idx3.m

     文件       1241  2009-02-22 22:42  提取出 MNIST 内容\Matlab_Read_t10k_labels_idx1.m

     文件       1464  2009-02-22 22:44  提取出 MNIST 内容\Matlab_Read_train_images_idx3.m

     文件       1250  2009-02-22 22:42  提取出 MNIST 内容\Matlab_Read_train_labels_idx1.m

     目录          0  2011-11-15 19:05  twofeatures - 归一化特征值

     目录          0  2011-11-11 09:20  提取出 MNIST 内容

----------- ---------  ---------- -----  ----

              1164976                    17


评论

共有 条评论