图像识别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源码的主要内容,如果未能解决你的问题,请参考以下文章

基于PCA手写数字识别matlab 源码

基于PCA手写数字识别matlab 源码

手写数字识别基于matlab GUI知识库手写数字识别(写字板+图片)含Matlab源码 1227期

手写数字识别基于matlab GUI BP神经网络手写数字识别系统含Matlab源码 1639期

手写数字识别基于matlab GUI BP神经网络单个或连续手写数字识别系统含Matlab源码 2296期

手写数字识别基于matlab GUI BP神经网络单个或连续手写数字识别系统含Matlab源码 2296期