基于RBF简单的matlab手写识别
2015-10-25 20:38
190 查看
GetFeature.m
rbftest.m
test.m
相关数据库与代码下载地址:http://pan.baidu.com/s/1c0oH7l2
%将图像分为25块,计算每一块的空白部分所占比例 function data=GetFeature(I) [row,col]=find(I==0); %返回数字的上下左右的边界 I=I(min(row):max(row),min(col):max(col)); %截取手写数字图像,使其紧包含数字边界,不包含多余的空白 imwrite(I,'您手写的字.bmp','bmp'); %保存截取后的手写数字图像 [row,col]=size(I); r=fix(row/5); %为分25块做准备 c=fix(col/5); sum=0; %计算空白块数目 k=1; feature=[]; for i=1:r:5*r %先从行开始计算 for j=1:c:5*c %保持行不变,先计算列 for m=i:i+r-1 for n=j:j+c-1 if I(m,n)==0 sum=sum+1; %每一块空白的像素块的数目 end end end data(k)=sum/(r*c); %第k个特征分量,即第k块的空白率,k最大为25 sum=0; k=k+1; end end data=data'; %将当前手写数字的特征向量由行向量变为列向量 end
rbftest.m
function y = rbfnettest( sample ) load template pattern; c=0; for i=1:10 for j=1:210 c=c+1; p(:,c)=pattern(i).feature(:,j); end end tc(:,1:210)=0; tc(:,211:420)=1; tc(:,421:630)=2; tc(:,631:840)=3; tc(:,841:1050)=4; tc(:,1051:1260)=5; tc(:,1261:1470)=6; tc(:,1471:1680)=7; tc(:,1681:1890)=8; tc(:,1891:2100)=9; tc=tc/10; t=tc; SPREAD=1; rbfnet=newrbe(p,t,SPREAD); t=sim(rbfnet,sample); t=t*10; y=round(t); end
test.m
clear clc I=imread('sample3.bmp'); A=GetFeature(I); Y=rbfnettest(A)
相关数据库与代码下载地址:http://pan.baidu.com/s/1c0oH7l2
相关文章推荐
- matlab与c++混合编程
- matlab R2014a添加路径
- 图像处理函数详解——imadjust
- matlab实现线性对比度展宽
- MATLAB新的统计数据类型Table
- 基于j2ee+matlab的尝试
- Matlab中的高斯卷积滤波矩阵
- matlab的plot
- matlab 读多个文件夹(有名字规律)中的文件名字保存到txt中
- MATLAB中如何删除全零行或者列
- matlab 将一堆文件名读到一个文本里面windows版本里
- Debug mexFunction of matlab using gdb
- matlab实现k-means聚类
- MATLAB生成可执行文件(.exe文件)
- matlab与C#混合编程
- 今天MATLAB2015B安装界面
- Science上论文——Clustering by fast search and find of density peaks中人脸实验的复现
- matlab 有约束与无约束优化求解 optimization
- Matlab 并行编程——CUDA
- 面向对象Matlab编程小demo