資源簡介
多特征 MNIST庫 手寫數(shù)字識別實(shí)現(xiàn)(matlab),采用粗網(wǎng)格特征和切割線劃分進(jìn)行學(xué)習(xí)識別,首先提取MNIST數(shù)據(jù)庫60000個訓(xùn)練樣本分別提取出兩個特征,然后對10000個測試樣本進(jìn)行測試,計算和兩個特征的距離進(jìn)行判別,matlab 實(shí)現(xiàn)

代碼片段和文件信息
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);?????%統(tǒng)計特征
????%讀取圖像并二值化
????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);%二值化
????
????%讀出來的這個數(shù)真實(shí)值是多少?jud?保存之
????jud=numis(i);
????if?jud==0???????%如果是0,放在第十個
????????jud=10;
????end
????%%%%%%%%%%%%%%%?特?征?一?%%%%%%%%%%%%%%%%%
????%提取特征---6+6個分割線上連續(xù)點(diǎn)個數(shù)
????old=1;????????%表示上一個點(diǎn)值
????new=1;????????%表示現(xiàn)在這個點(diǎn)的值
????count=0;??????%記錄發(fā)生了多少次變化
????for?c=1:6???????????%提取橫向特征
????????xl=4*c;
????????for?d=1:28??????%遍歷縱向的28個點(diǎn)
????????????old=new;
????????????new=bwim(dxl);
????????????if(old~=new)????????%如果發(fā)生顏色變化則記錄
????????????????count=count+1;
????????????end
????????end
????????featone(c)=featone(c)+count/2;??%第jud個數(shù)第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
????%%%%%%%%%%%%%%%?特?征?二?%%%%%%%%%%%%%%%%%
????%讀取每個塊的像素個數(shù)
????gridnum=zeros(149);????????%保存49個塊的黑色像素個數(shù)
????xbase=1;
????ybase=1;
????for?yz=0:6
????????for?xz=0:6??????????%這兩個是7*7的大塊
????????????for?ybase=1:4
????????????????for?xbase=1:4???????%這兩個是在4*4的小塊內(nèi)
????????????????????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)?代表與標(biāo)準(zhǔn)第c個數(shù)字的距離
????for?c=1:10
????????for?d=1:12
????????????temp=featone(d)-fea66(cd);????%該數(shù)字第d塊減去數(shù)字c第d塊特征值
????????????dist66(c)=dist66(c)+temp^2;
????????end
????end????
????%%%%%%%%%%%%?計算特征二的距離?%%%%%%%%%%%%%%%
????dist77=zeros(110);?????????????%dist(c)?代表與標(biāo)準(zhǔn)第c個數(shù)字的距離
????for?c=1:10
????????for?d=1:49
????????????temp=numfea(d)-fea77(cd);????%該數(shù)字第d塊減去數(shù)字c第d塊特征值
????????????dist77(c)=dist77(c)+temp^2;
????????end
????end
????%%%%%%%%%%?融合兩距離為一個距離?%%%%%%%%%%%%
????dist=zeros(110);
????k2=240;
????for?c=1:10
????????dist=k2*dist77+dist66;
????end
????%計算最小距離和對應(yīng)的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?-?歸一化特征值\unti
?????文件???????4348??2011-11-13?17:53??twofeatures?-?歸一化特征值\unti
?????文件???????3964??2011-11-14?09:19??twofeatures?-?歸一化特征值\unti
?????文件???????1451??2009-02-22?22:44??提取出?MNIST?內(nèi)容\Matlab_Read_t10k_images_idx3.m
?????文件???????1241??2009-02-22?22:42??提取出?MNIST?內(nèi)容\Matlab_Read_t10k_labels_idx1.m
?????文件???????1464??2009-02-22?22:44??提取出?MNIST?內(nèi)容\Matlab_Read_train_images_idx3.m
?????文件???????1250??2009-02-22?22:42??提取出?MNIST?內(nèi)容\Matlab_Read_train_labels_idx1.m
?????目錄??????????0??2011-11-15?19:05??twofeatures?-?歸一化特征值
?????目錄??????????0??2011-11-11?09:20??提取出?MNIST?內(nèi)容
-----------?---------??----------?-----??----
??????????????1164976????????????????????17
評論
共有 條評論