matlab global rbfnet,基于RBF简单的matlab手写识别

GetFeature.m

%将图像分为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

本文同步分享在 博客“风翼冰舟”(CSDN)。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值