【MATLAB图像处理实用案例详解(16)】——利用概念神经网络实现手写体数字识别
目录
- 一、问题描述
- 二、概念神经网络实现手写体数字识别原理
- 三、算法步骤
- 3.1 数据输入
- 3.2 特征提取
- 3.3 模型训练
- 3.4 测试
- 四、运行结果
一、问题描述
手写体数字属于光学字符识别(Optical Character Recognition,OCR)的范畴,但分类的分别比光学字符识别少得多,主要只需识别共10个字符。
使用概率神经网络作为分类器,对64*64二值图像表示的手写数字进行分类,所得的分类器对训练样本能够取得100%的正确率,训练时间短,比BP神经网络快若干个数量级。
二、概念神经网络实现手写体数字识别原理
第一步是对图像进行预处理
其次,将整张图像分割为单个数字图像,这也是数字识别的难点之一
对其进行特征提取 。
选择一个有效的分类器模型 。这里采用概率神经网络。
具体流程图如下:

样本采用1000幅64*64的二值图像。
概率神经网络的判定边界接近于贝叶斯最佳判定面,网络的计算流程与最大后验概率准则极为类似。
测试的流程图如下:

三、算法步骤
3.1 数据输入
1000章图像被放在名为digital_pic的子目录中,其中数字i的第j张图像文件名为i_j.bmp,为三位宽度的整数。数据输入封装函数如下:
function I = getPicData()
% getPicData.m
% 读取digital_pic目录下的所有图像
% output:
% I : 64 * 64 * 1000, 包含1000张64*64二值图像I = zeros(64,64,1000);
k = 1;% 外层循环:读取不同数字的图像
for i=1:10% 内层循环: 读取同一数字的100张图for j=1:100file = sprintf('digital_pic\\%d_%03d.bmp', i-1, j);I(:,:,k) = imread(file);% 图像计数器k = k + 1;end
end
3.2 特征提取
进行特征提取前进行去噪处理。特征提取的函数为[Feature,bmp,flag]=getFeature(A),该函数接受一个64*64二值矩阵输入,返回的Feature为长度为14的特征向量。特征提取的封装代码如下:
function [Feature,bmp,flag]=getFeature(A)
% getFeature.m
% 提取64*64二值图像的特征向量
% input:
% A: 64*64矩阵
% output:
% Feature: 长度为14的特征向量
% bmp : 图像中的数字部分
% flag : 标志位,表示数字部分的宽高比% 反色
A = ones(64) - A;% 提取数字部分
[x, y] = find(A == 1);% 截取图像中的数字部分
A = A(min(x):max(x),min(y):max(y)); % 计算宽高比和标志位
flag = (max(y)-min(y)+1)/(max(x)-min(x)+1);
if flag < 0.5flag = 0;
elseif flag >=0.5 && flag <0.75flag = 1;
elseif flag >=0.75 && flag <1flag = 2;
elseflag = 3;
end% 重新放大,将长或宽调整为64
rate = 64 / max(size(A));
% 调整尺寸
A = imresize(A,rate);
[x,y] = size(A);% 不足64的部分用零填充
if x ~= 64A = [zeros(ceil((64-x)/2)-1,y);A;zeros(floor((64-x)/2)+1,y)];
end;
if y ~= 64A = [zeros(64,ceil((64-y)/2)-1),A,zeros(64,floor((64-y)/2)+1)];
end%% 三条竖线与数字字符的交点个数 F(1)~F(3)
% 1/2 竖线交点数量
Vc = 32;
F(1) = sum(A(:,Vc));% 1/4 竖线交点数量
Vc = round(64/4);
F(2) = sum(A(:,Vc));% 3/4 竖线交点数量
Vc = round(64*3/4);
F(3) = sum(A(:,Vc));%% 三条横线与数字字符的交点个数 F(4)~F(6)
% 1/2 水平线交点数量
Hc = 32;
F(4) = sum(A(Hc,:));% 1/3 水平线处交点数量,
Hc = round(64/3);
F(5) = sum(A(Hc,:));% 2/3水平线处交点数量
Hc = round(2*64/3);
F(6) = sum(A(Hc,:));%% 两条对角线的交点数量
% 主对角线交点数,
F(7) = sum(diag(A));% 次对角线交点数
F(8) = sum(diag(rot90(A)));%% 小方块% 右下角1/2小方块中的所有点
t = A(33:64,33:64);
F(9) = sum(t(:))/10;% 左上角1/2小方块中的所有点
t = A(1:32,1:32);
F(10) = sum(t(:))/10;% 左下角方块中的所有点
t = A(1:32,33:64);
F(11) = sum(t(:))/10;% 右上角方块中的所有点
t = A(33:64,1:32);
F(12) = sum(t(:))/10;% 垂直方向1/3~2/3部分的所有像素点
t = A(1:64,17:48);
F(13) = sum(t(:))/20;% 水平方向1/3~2/3部分的所有像素点
t = A(17:48,1:64);
F(14) = sum(t(:))/20;Feature = F';
bmp = A;
3.3 模型训练
使用newpnn函数创建概率神经网络:
net = newpnn(x, ind2vec(label'));
3.4 测试
测试时,首先使用原有训练数据进行测试,再对读入的图像添加一定强度的噪声,观察算法的抗干扰性能:
I1 = I;
% 椒盐噪声的强度
nois = 0.2;
fea0 = zeros(14, 1000);
for i=1:1000tmp(:,:,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);
% 测试
tlab0 = net(fea);
tlab = vec2ind(tlab0);% 计算噪声干扰下的正确率
rat = sum(tlab' == label) / length(tlab);
fprintf('带噪声的训练样本测试正确率为\n %d%%\n', round(rat*100));
四、运行结果
训练过程如下:

可以发现,训练过程比BP神经网络快很多。
如果需要源代码,可以参考资源:https://download.csdn.net/download/didi_ya/87739029。
制作不易,如果对你有所帮助,记得点个赞哟~
相关文章:
【MATLAB图像处理实用案例详解(16)】——利用概念神经网络实现手写体数字识别
目录 一、问题描述二、概念神经网络实现手写体数字识别原理三、算法步骤3.1 数据输入3.2 特征提取3.3 模型训练3.4 测试 四、运行结果 一、问题描述 手写体数字属于光学字符识别(Optical Character Recognition,OCR)的范畴,但分类…...
数据库管理-第六十九期 另一种累(20230422)
数据库管理 2023-04-22 第六十九期 另一种累1 国产数据库沟通2 问题3 我的建议总结 第六十九期 另一种累 Oracle 23c的相关内容先缓缓,有些数据库管理相关的还是得正式版发布后才好去做实验。这周相较于之前那种割接较多的累还有点不一样,这周陪着客户交…...
Cesium入门之六:Cesium加载影像图层(ArcGIS、Bing、Mapbox、高德地图、腾讯地图、天地图等各类影像图)
Cesium加载影像图层 一、ImageryLayer类常用属性常用方法 二、ImageryLayerCollection类常用属性常用方法 三、ImageryProvider类常用属性常用方法 四、ImageryProvider子类1. ArcGisMapServerImageryProvider加载ArcGIS地图服务 2. BingMapsImageryProvider加载BingMap地图服务…...
Redis系列--redis持久化
一、为什么需要持久化 redis本身运行时数据保存在内存中,如果不进行持久化,那么在redis出现非正常原因宕机或者关闭redis的进程或者关闭计算机后数据肯定被会操作系统从内存中清掉。当然,redis本身默认采用了一种持久化方式,即RD…...
在外Windows远程连接MongoDB数据库【无公网IP】
文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 转载自远程内网穿透的文章:公网远…...
学网络安全怎么挖漏洞?怎么渗透?
前言 有不少阅读过我文章的伙伴都知道,我从事网络安全行业已经好几年,积累了丰富的经验和技能。在这段时间里,我参与了多个实际项目的规划和实施,成功防范了各种网络攻击和漏洞利用,提高了安全防护水平。 也有很多小…...
KL散度和交叉熵的对比介绍
KL散度(Kullback-Leibler Divergence)和交叉熵(Cross Entropy)是在机器学习中广泛使用的概念。这两者都用于比较两个概率分布之间的相似性,但在一些方面,它们也有所不同。本文将对KL散度和交叉熵的详细解释…...
浪涌保护器:保护电子设备免受雷击侵害
引言: 随着电子设备在现代生活和工业领域的普及和广泛应用,雷击对电子设备的损害成为一个严重的问题。浪涌保护器作为一种重要的防雷设备,发挥着至关重要的作用。本文将介绍浪涌保护器的防雷作用、行业应用,并重点介绍浪涌保护器…...
js绘制的红心
看腻歪了粒子特效的红心,今天给各位整个线条的,效果图如下: 表白显圣神器,你值得拥有,代码如下: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"…...
十、Feign客户端
目录 1、在springcloud-order项目中引入Feign客户端的依赖 2、在server-order服务的启动类中添加注解EnableFeignClients 3、使用FeignClient注解声明Feign客户端需要调用的远程接口 3.1、server-pay服务提供远程接口Controller 3.2、server-member服务提供远程接口Contro…...
登录appuploader
转载:登录appuploader 常规使用登录方法 双击appuploader.exe 启动appuploader 点击底部的未登录,弹出登录框 在登录框内输入apple开发者账号 如果没有apple开发者账号,只是普通的apple账号,请勾选上未支付688 然后软件会提示…...
都别吹牛逼了,2个英语指令简单评测便知ChatGPT、博弈Ai、文心一言、通义千问、讯飞星火真实水平
一、博弈Ai:GPT3.5版 演示:https://chat.bo-e.com/ 1、充当英语发言助手 评分:10分 总结:完整满足了指令需求 2、充当英汉互译器 评分:8分 总结:基本满足了我的指令需求。但是有点啰嗦,扣…...
使用Spring Boot快速搭建项目:减少配置,提升开发效率
使用Spring Boot快速搭建项目:减少配置,提升开发效率 一、Spring Boot简介1 Spring Boot的起源2 Spring Boot的核心特点3 Spring Boot的优势 二、Spring Boot快速搭建项目1 Spring Boot的项目搭建方式使用Spring Initializr创建项目使用Spring Boot CLI创…...
(2)数码管
LED数码管:数码管是一种简单、廉价的显示器,是由多个发光二极管封装在一起组成"8"字器件 51单片机是共阴极连接 74HC245这个芯片有什么作用呢?解:这个芯片被称之为双向数据缓冲器这个芯片的作用,用来进行数据缓冲(提高驱…...
赫夫曼树和赫夫曼编码详解
目录 何为赫夫曼树? 赫夫曼树算法 赫夫曼编码 编程实现赫夫曼树 编程实现赫夫曼编码 编程实现WPL 总代码及分析 何为赫夫曼树? 树的路径长度:从树根到每一结点的路径长度之和 结点的带权路径长度:从树根到该结点的路径长度…...
unity UGUI系统梳理 -交互组件
概述 unity 中的交互组件可用于处理交互,例如鼠标或触摸事件以及使用键盘或控制器进行的交互 1、按钮 (Button) Button详解 2、开关 (Toggle) Background:背景图片,控制toggle组件的背景颜色改变,从而展示此物体是否被选中的…...
HTTP第15讲——HTTP的连接管理
短连接 HTTP 协议最初(0.9/1.0)是个非常简单的协议,通信过程也采用了简单的“请求 - 应答”方式。 它底层的数据传输基于 TCP/IP,每次发送请求前需要先与服务器建立连接,收到响应报文后会立即关闭连接。 因为客户端与…...
深度剖析Mybatis-plus Injector SQL注入器
背景 在项目中需要同时操作Sql Server 以及 MySQL 数据库,可能平时直接使用 BaseMapper中提供的方法习惯 了,不用的话总感觉影响开发效率,但是两个数据库的SQL语法稍微有点差别,有些暴露的方法并不能直接使用,所以便想…...
【Mysql实战】使用存储过程和计算同比环比
背景 同环比,是基本的数据分析方法。在各类调研表中屡见不鲜,如果人工向前追溯统计数据,可想而知工作量是非常大的。 标题复制10行,并且每行大于10个字符【源码解析】SpringBoot接口参数【Mysql实战】使用存储过程和计算同比环比…...
ChatGPT的前世今生,到如今AI领域的竞争格局,本文带你一路回看!
73年前,“机器思维”的概念第一次被计算机科学之父艾伦图灵(Alan Turing)提出,从此,通过图灵测试成为了人类在AI领域为之奋斗的里程碑目标。 73年后的今天,在AI历经了数十年的不断进化、迭代后,…...
Metashape空三优化:关键参数解析与实战调优指南
1. Metashape空三处理的核心参数解析 空三(空中三角测量)是摄影测量中的关键步骤,它直接决定了后续建模和测绘成果的精度。在Metashape中,有几个核心参数会显著影响空三的质量和效率。这些参数看起来可能有些复杂,但理…...
AI时代效率革命:揭秘商业大模型如何重塑中小企业运营与管理新范式
在数字化转型浪潮席卷全球的今天,人工智能已不再是遥不可及的未来科技,而是决定企业生存与竞争力的核心引擎。尤其对于资源有限、人力成本敏感的中小企业而言,如何借助AI实现降本增效、突破经营瓶颈,成为关乎未来发展的重要课题。…...
LangChain4j聊天记忆存储怎么选?Redis、MySQL、MongoDB、向量库全方案对比与选型指南
LangChain4j聊天记忆存储架构选型指南:从Redis到向量库的深度对比 当构建基于LangChain4j的AI对话系统时,聊天记忆存储方案的选择直接影响着用户体验、系统性能和长期可扩展性。作为架构师,我们需要在内存缓存、关系型数据库、文档数据库和向…...
《深度解析QClaw同步架构:为什么它比所有云盘都快10倍》
绝大多数人对跨设备同步的理解还停留在文件传输的层面,认为只要能把一个文件从A电脑传到B电脑就叫同步。但真正的工作同步远不止于此,它应该包括你未完成的任务队列、上下文记忆、技能配置、甚至是你和AI助手之间形成的独特工作默契。QClaw 2.0带来的本地P2P状态快照机制,第…...
光刻胶选购指南:如何根据线宽需求选择I-line/DUV/EUV(附参数对比表)
光刻胶技术选型全景指南:从I-line到EUV的精准决策框架 在半导体制造的光刻工艺中,光刻胶的选择直接影响着芯片的良率和性能。面对从成熟制程到先进节点的多样化需求,工程师们常常需要在I-line、DUV和EUV三种主流光刻胶技术之间做出关键决策。…...
扫地机器人全场景测试实战:从实验室仿真到真实家庭环境的闭环验证
1. 为什么需要全场景测试? 家里有扫地机器人的朋友应该都遇到过这种情况:明明在店里演示时避障灵敏的机器,到家后却总卡在拖鞋堆里;实验室数据标注"续航120分钟"的机型,实际清扫80平米户型就得回充两次。问…...
基于 Patroni + etcd + HAProxy 的 PostgreSQL 高可用集群实战指南
1. 为什么需要PostgreSQL高可用集群? 数据库作为现代应用的核心组件,其稳定性直接影响整个系统的可靠性。想象一下电商大促时数据库突然宕机,或者医院系统因数据库故障无法挂号——这些场景对业务连续性要求极高。传统的主从复制方案需要人工…...
如何3分钟内免费获取全球气象数据?CDS API完整教程
如何3分钟内免费获取全球气象数据?CDS API完整教程 【免费下载链接】cdsapi Python API to access the Copernicus Climate Data Store (CDS) 项目地址: https://gitcode.com/gh_mirrors/cd/cdsapi 想象一下,你是一位气候研究员,需要…...
终极SketchUp STL插件指南:3D打印模型转换快速上手教程
终极SketchUp STL插件指南:3D打印模型转换快速上手教程 【免费下载链接】sketchup-stl A SketchUp Ruby Extension that adds STL (STereoLithography) file format import and export. 项目地址: https://gitcode.com/gh_mirrors/sk/sketchup-stl 你是否曾为…...
让万物互联更简单:物联网设备iPaaS系统集成解决方案
物联网设备集成面临严峻挑战,根据Eseye 2025年报告,76%的企业因硬件盲点导致项目受阻,35%因连接不稳定增加成本与损失效率。数据迫切证明,需通过iPaaS实现统一集成,打通数据壁垒、保障安全合规,释放物联网潜…...
