【圖像識別】RBF手寫數(shù)字識別matlab源碼
?一、簡介
RBF神將網(wǎng)絡(luò)是一種三層神經(jīng)網(wǎng)絡(luò),其包括輸入層、隱層、輸出層。從輸入空間到隱層空間的變換是非線性的,而從隱層空間到輸出層空間變換是線性的。流圖如下:

RBF網(wǎng)絡(luò)的基本思想是:用RBF作為隱單元的“基”構(gòu)成隱含層空間,這樣就可以將輸入矢量直接映射到隱空間,而不需要通過權(quán)連接。當(dāng)RBF的中心點(diǎn)確定以后,這種映射關(guān)系也就確定了。而隱含層空間到輸出空間的映射是線性的,即網(wǎng)絡(luò)的輸出是隱單元輸出的線性加權(quán)和,此處的權(quán)即為網(wǎng)絡(luò)可調(diào)參數(shù)。其中,隱含層的作用是把向量從低維度的p映射到高維度的h,這樣低維度線性不可分的情況到高維度就可以變得線性可分了,主要就是核函數(shù)的思想。這樣,網(wǎng)絡(luò)由輸入到輸出的映射是非線性的,而網(wǎng)絡(luò)輸出對可調(diào)參數(shù)而言卻又是線性的。網(wǎng)絡(luò)的權(quán)就可由線性方程組直接解出,從而大大加快學(xué)習(xí)速度并避免局部極小問題。

2 RBF神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)問題

?二、源代碼
clear
clc
I=imread('sample3.bmp');
A=GetFeature(I);
%將圖像分為25塊,計(jì)算每一塊的空白部分所占比例
function data=GetFeature(I)
[row,col]=find(I==0); ? ? ? ? ? ? ? ? ? ? ? ?%返回?cái)?shù)字的上下左右的邊界
I=I(min(row):max(row),min(col):max(col)); ? ?%截取手寫數(shù)字圖像,使其緊包含數(shù)字邊界,不包含多余的空白
imwrite(I,'您手寫的字.bmp','bmp'); ? ? ? ? ?%保存截取后的手寫數(shù)字圖像
[row,col]=size(I);
r=fix(row/5); %為分25塊做準(zhǔn)備
c=fix(col/5);
sum=0; %計(jì)算空白塊數(shù)目
k=1;
feature=[];
for i=1:r:5*r ?%先從行開始計(jì)算
? ? for j=1:c:5*c ?%保持行不變,先計(jì)算列
? ? ? ? for m=i:i+r-1
? ? ? ? ? ? for n=j:j+c-1
? ? ? ? ? ? ? ? if I(m,n)==0
? ? ? ? ? ? ? ? ? ? sum=sum+1; ?%每一塊空白的像素塊的數(shù)目
? ? ? ? ? ? ? ? end
? ? ? ? ? ? end
? ? ? ? end
? ? ? ? data(k)=sum/(r*c); ?%第k個(gè)特征分量,即第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
?三、運(yùn)行結(jié)果
?
