国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【MATLAB圖像處理實(shí)用案例詳解(16)】——利用概念神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)手寫體數(shù)字識(shí)別

這篇具有很好參考價(jià)值的文章主要介紹了【MATLAB圖像處理實(shí)用案例詳解(16)】——利用概念神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)手寫體數(shù)字識(shí)別。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、問題描述

手寫體數(shù)字屬于光學(xué)字符識(shí)別(Optical Character Recognition,OCR)的范疇,但分類的分別比光學(xué)字符識(shí)別少得多,主要只需識(shí)別共10個(gè)字符。

使用概率神經(jīng)網(wǎng)絡(luò)作為分類器,對(duì)64*64二值圖像表示的手寫數(shù)字進(jìn)行分類,所得的分類器對(duì)訓(xùn)練樣本能夠取得100%的正確率,訓(xùn)練時(shí)間短,比BP神經(jīng)網(wǎng)絡(luò)快若干個(gè)數(shù)量級(jí)。

二、概念神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)手寫體數(shù)字識(shí)別原理

第一步是對(duì)圖像進(jìn)行預(yù)處理
其次,將整張圖像分割為單個(gè)數(shù)字圖像,這也是數(shù)字識(shí)別的難點(diǎn)之一
對(duì)其進(jìn)行特征提取 。
選擇一個(gè)有效的分類器模型 。這里采用概率神經(jīng)網(wǎng)絡(luò)。
具體流程圖如下:
【MATLAB圖像處理實(shí)用案例詳解(16)】——利用概念神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)手寫體數(shù)字識(shí)別
樣本采用1000幅64*64的二值圖像。
概率神經(jīng)網(wǎng)絡(luò)的判定邊界接近于貝葉斯最佳判定面,網(wǎng)絡(luò)的計(jì)算流程與最大后驗(yàn)概率準(zhǔn)則極為類似。
測(cè)試的流程圖如下:
【MATLAB圖像處理實(shí)用案例詳解(16)】——利用概念神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)手寫體數(shù)字識(shí)別

三、算法步驟

3.1 數(shù)據(jù)輸入

1000章圖像被放在名為digital_pic的子目錄中,其中數(shù)字i的第j張圖像文件名為i_j.bmp,為三位寬度的整數(shù)。數(shù)據(jù)輸入封裝函數(shù)如下:

function I = getPicData()
% getPicData.m
% 讀取digital_pic目錄下的所有圖像
% output:
% I : 64 * 64 * 1000, 包含1000張64*64二值圖像

I = zeros(64,64,1000);
k = 1;

% 外層循環(huán):讀取不同數(shù)字的圖像
for i=1:10
    % 內(nèi)層循環(huán): 讀取同一數(shù)字的100張圖
    for j=1:100
        file = sprintf('digital_pic\\%d_%03d.bmp', i-1, j);
        I(:,:,k) = imread(file);
        
        % 圖像計(jì)數(shù)器
        k = k + 1;
    end
end

3.2 特征提取

進(jìn)行特征提取前進(jìn)行去噪處理。特征提取的函數(shù)為[Feature,bmp,flag]=getFeature(A),該函數(shù)接受一個(gè)64*64二值矩陣輸入,返回的Feature為長(zhǎng)度為14的特征向量。特征提取的封裝代碼如下:

function [Feature,bmp,flag]=getFeature(A)
% getFeature.m
% 提取64*64二值圖像的特征向量
% input:
% A: 64*64矩陣
% output:
% Feature: 長(zhǎng)度為14的特征向量
% bmp    : 圖像中的數(shù)字部分
% flag   : 標(biāo)志位,表示數(shù)字部分的寬高比

% 反色
A = ones(64) - A;

% 提取數(shù)字部分
[x, y] = find(A == 1);

% 截取圖像中的數(shù)字部分
A = A(min(x):max(x),min(y):max(y));  

% 計(jì)算寬高比和標(biāo)志位
flag = (max(y)-min(y)+1)/(max(x)-min(x)+1);
if flag < 0.5
    flag = 0;
elseif flag >=0.5 && flag <0.75
    flag = 1;
elseif flag >=0.75 && flag <1
    flag = 2;
else
    flag = 3;
end

% 重新放大,將長(zhǎng)或?qū)捳{(diào)整為64
rate = 64 / max(size(A));
% 調(diào)整尺寸
A = imresize(A,rate);  
[x,y] = size(A);

% 不足64的部分用零填充
if x ~= 64
    A = [zeros(ceil((64-x)/2)-1,y);A;zeros(floor((64-x)/2)+1,y)];
end;
if y ~= 64
    A = [zeros(64,ceil((64-y)/2)-1),A,zeros(64,floor((64-y)/2)+1)];
end

%% 三條豎線與數(shù)字字符的交點(diǎn)個(gè)數(shù)  F(1)~F(3)
% 1/2 豎線交點(diǎn)數(shù)量
Vc = 32;
F(1) = sum(A(:,Vc));

% 1/4 豎線交點(diǎn)數(shù)量
Vc = round(64/4);
F(2) = sum(A(:,Vc));

% 3/4 豎線交點(diǎn)數(shù)量
Vc = round(64*3/4);
F(3) = sum(A(:,Vc));

%% 三條橫線與數(shù)字字符的交點(diǎn)個(gè)數(shù) F(4)~F(6)
% 1/2 水平線交點(diǎn)數(shù)量
Hc = 32;
F(4) = sum(A(Hc,:));

% 1/3 水平線處交點(diǎn)數(shù)量,
Hc = round(64/3);
F(5) = sum(A(Hc,:));
 
% 2/3水平線處交點(diǎn)數(shù)量
Hc = round(2*64/3);
F(6) = sum(A(Hc,:));
 
%% 兩條對(duì)角線的交點(diǎn)數(shù)量
% 主對(duì)角線交點(diǎn)數(shù),
F(7) = sum(diag(A));

% 次對(duì)角線交點(diǎn)數(shù)
F(8) = sum(diag(rot90(A)));

%% 小方塊

% 右下角1/2小方塊中的所有點(diǎn)
t = A(33:64,33:64);
F(9) = sum(t(:))/10;

% 左上角1/2小方塊中的所有點(diǎn)
t = A(1:32,1:32);
F(10) = sum(t(:))/10;

% 左下角方塊中的所有點(diǎn)
t = A(1:32,33:64);
F(11) = sum(t(:))/10;

% 右上角方塊中的所有點(diǎn)
t = A(33:64,1:32);
F(12) = sum(t(:))/10;

% 垂直方向1/3~2/3部分的所有像素點(diǎn)
t = A(1:64,17:48);
F(13) = sum(t(:))/20;

% 水平方向1/3~2/3部分的所有像素點(diǎn)
t = A(17:48,1:64);
F(14) = sum(t(:))/20;

Feature = F';
bmp = A;

3.3 模型訓(xùn)練

使用newpnn函數(shù)創(chuàng)建概率神經(jīng)網(wǎng)絡(luò):

net = newpnn(x, ind2vec(label'));

3.4 測(cè)試

測(cè)試時(shí),首先使用原有訓(xùn)練數(shù)據(jù)進(jìn)行測(cè)試,再對(duì)讀入的圖像添加一定強(qiáng)度的噪聲,觀察算法的抗干擾性能:

I1 = I;
% 椒鹽噪聲的強(qiáng)度
nois = 0.2;
fea0 = zeros(14, 1000);
for i=1:1000
    tmp(:,:,i) = I1(:,:,i);
    % 添加噪聲
    tmpn(:,:,i) =  imnoise(double(tmp(:,:,i)),'salt & pepper', nois);
%     tmpn(:,:,i) =  imnoise(double(tmp(:,:,i)),'gaussian',0, 0.1);
    % 中值濾波
    tmpt = medfilt2(tmpn(:,:,i),[3,3]);
    % 提取特征向量
    t = getFeature(tmpt);
    fea0(:,i) = t(:);
end

% 歸一化
fea = mapminmax('apply',fea0, se);
% 測(cè)試
tlab0 = net(fea);
tlab = vec2ind(tlab0);

% 計(jì)算噪聲干擾下的正確率
rat = sum(tlab' == label) / length(tlab);
fprintf('帶噪聲的訓(xùn)練樣本測(cè)試正確率為\n  %d%%\n', round(rat*100));

四、運(yùn)行結(jié)果

訓(xùn)練過程如下:
【MATLAB圖像處理實(shí)用案例詳解(16)】——利用概念神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)手寫體數(shù)字識(shí)別
可以發(fā)現(xiàn),訓(xùn)練過程比BP神經(jīng)網(wǎng)絡(luò)快很多。


如果需要源代碼,可以參考資源:https://download.csdn.net/download/didi_ya/87739029。
制作不易,如果對(duì)你有所幫助,記得點(diǎn)個(gè)贊喲~文章來源地址http://www.zghlxwxcb.cn/news/detail-457750.html

到了這里,關(guān)于【MATLAB圖像處理實(shí)用案例詳解(16)】——利用概念神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)手寫體數(shù)字識(shí)別的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包