图像识别RBF手写数字识别matlab源码
Posted Matlab走起
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像识别RBF手写数字识别matlab源码相关的知识,希望对你有一定的参考价值。
一、简介
RBF神将网络是一种三层神经网络,其包括输入层、隐层、输出层。从输入空间到隐层空间的变换是非线性的,而从隐层空间到输出层空间变换是线性的。流图如下:
RBF网络的基本思想是:用RBF作为隐单元的“基”构成隐含层空间,这样就可以将输入矢量直接映射到隐空间,而不需要通过权连接。当RBF的中心点确定以后,这种映射关系也就确定了。而隐含层空间到输出空间的映射是线性的,即网络的输出是隐单元输出的线性加权和,此处的权即为网络可调参数。其中,隐含层的作用是把向量从低维度的p映射到高维度的h,这样低维度线性不可分的情况到高维度就可以变得线性可分了,主要就是核函数的思想。这样,网络由输入到输出的映射是非线性的,而网络输出对可调参数而言却又是线性的。网络的权就可由线性方程组直接解出,从而大大加快学习速度并避免局部极小问题。
2 RBF神经网络的学习问题
二、源代码
clear
clc
I=imread('sample3.bmp');
A=GetFeature(I);
%将图像分为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
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
三、运行结果
四、备注
完整代码或者仿真咨询添加QQ1575304183
以上是关于图像识别RBF手写数字识别matlab源码的主要内容,如果未能解决你的问题,请参考以下文章
手写数字识别基于matlab GUI知识库手写数字识别(写字板+图片)含Matlab源码 1227期
手写数字识别基于matlab GUI BP神经网络手写数字识别系统含Matlab源码 1639期