资源简介
基于fisher 的手写数字识别程序 可以实现手写数字的识别
代码片段和文件信息
clear;
clc;
bmp=imread(‘test.bmp‘‘bmp‘);
gray=rgb2gray(bmp);
bw=im2bw(gray0.5); %transfer to black and white
rate(1:10)=0;
[heightwidthd]=size(bw); % find the height/width/dimension of the bw picture
[xy]=find(bw==0); %0 represent black pixel
Xmin = min(x);
Xmax = max(x);
Ymin = min(y);
Ymax = max(y);
W = Xmax-Xmin;
H = Ymax-Ymin;
dw = floor(W/10)+1;
dh = floor(H/10)+1;
% find the characteristic matrix
matrix=zeros(10);
for i=[Xmin:Xmax]
for j=[Ymin:Ymax]
if bw(ij)==0
matrix(floor((i-Xmin)/dw)+1floor((j-Ymin)/dh)+1)=1;
end
end
end
matrix=matrix‘;
% find the characteristic vector
charavetor=reshape(matrix‘1001);
raw_data0=[]; % Nx100矩阵 每一行都是一个样品
file_id=fopen(‘0.txt‘‘rb‘);
while feof(file_id) == 0
[row_array ele_count] = fread(file_id 100);
if ele_count < 100 % elecount < 100代表数据不够,已经到了文件的结尾
break ;
else
% 将100x1的row_array转置一下,变为1x100的矩阵
row_array = row_array‘ ;
% 然后,将row_array追加到raw_data中
raw_data0 = [raw_data0; row_array] ;
end
end
fclose(file_id);
raw_data0=raw_data0-48;
[m_data0n_data]=size(raw_data0); %获得特征文件的样品数
uAvg0=sum(raw_data01)/m_data0;
Sw0=zeros(100100);
for i=[1:m_data0]
Sw0=Sw0+((raw_data0(i))‘-uAvg0‘)*((raw_data0(i))‘-uAvg0‘)‘;
end
raw_data1=[]; % Nx100矩阵 每一行都是一个样品
file_id=fopen(‘1.txt‘‘rb‘);
while feof(file_id) == 0
[row_array ele_count] = fread(file_id 100);
if ele_count < 100 % elecount < 100代表数据不够,已经到了文件的结尾
break ;
else
% 将100x1的row_array转置一下,变为1x100的矩阵
row_array = row_array‘ ;
% 然后,将row_array追加到raw_data中
raw_data1 = [raw_data1; row_array] ;
end
end
fclose(file_id);
raw_data1=raw_data1-48;
[m_data1n_data]=size(raw_data1); %获得特征文件的样品数
uAvg1=sum(raw_data11)/m_data1;
Sw1=zeros(100100);
for i=[1:m_data1]
Sw1=Sw1+(raw_data1(i)‘-uAvg1‘)*(raw_data1(i)‘-uAvg1‘)‘;
end
raw_data2=[]; % Nx100矩阵 每一行都是一个样品
file_id=fopen(‘2.txt‘‘rb‘);
while feof(file_id) == 0
[row_array ele_count] = fread(file_id 100);
if ele_count < 100 % elecount < 100代表数据不够,已经到了文件的结尾
break ;
else
% 将100x1的row_array转置一下,变为1x100的矩阵
row_array = row_array‘ ;
% 然后,将row_array追加到raw_data中
raw_data2 = [raw_data2; row_array] ;
end
end
fclose(file_id);
raw_data2=raw_data2-48;
[m_data2n_data]=size(raw_data2); %获得特征文件的样品数
uAvg2=sum(raw_data21)/m_data2;
Sw2=zeros(100100);
for i=[1:m_data2]
Sw2=Sw2+(raw_data2(i)‘-uAvg2‘)*(raw_data2(i)‘-uAvg2‘)‘;
end
raw_data3=[]; % Nx100矩阵 每一行都是一个样品
file_id=fopen(‘3.txt‘‘rb‘);
while feof(file_id) == 0
[row_array ele_count] = fread(file_id 100);
if ele_count < 100 % elecount < 100代表数据不够,已经到了文件的结尾
break ;
else
% 将100x1的row_array转置一下,变为1x100的矩阵
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
....... 1400 2012-04-30 15:55 7.txt
....... 1800 2012-04-30 19:42 8.txt
....... 1900 2012-04-30 19:23 9.txt
文件 16421 2012-05-31 17:46 FisherNumRegc.m
文件 468214 2012-05-30 22:11 test.bmp
....... 1600 2012-04-30 15:36 0.txt
....... 2100 2012-04-30 19:40 1.txt
....... 1800 2012-04-30 20:49 2.txt
....... 2100 2012-04-30 19:38 3.txt
....... 1800 2012-04-30 19:24 4.txt
....... 2000 2012-04-30 21:08 5.txt
....... 1800 2012-04-30 21:09 6.txt
----------- --------- ---------- ----- ----
502935 12
- 上一篇:DSP程序编写和调试的常见问题
- 下一篇:教材管理系统教材管理系统
评论
共有 条评论