基于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

  • 6
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风翼冰舟

额~~~CSDN还能打赏了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值