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源創計劃”,歡迎正在閱讀的你也加入,一起分享。
總結
以上是生活随笔為你收集整理的matlab global rbfnet,基于RBF简单的matlab手写识别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: native react 图片多选_N-
- 下一篇: matlab人脸追踪,求大神帮助我这个菜