数字图像分类识别系统 - README
项目介绍
本系统是一个基于 MATLAB 环境开发的数字图像分类识别平台。该系统通过集成图像处理技术与深度学习算法,实现对 0 到 9 十个阿拉伯数字的手写/模拟图像进行自动识别。系统完整覆盖了数据集生成、图像预处理、特征提取、模型训练、分类判别及结果评估的全流程,为数字识别任务提供了一套闭环的解决方案。
功能特性
- 自动化数据生成:系统内置模拟数据生成模块,能够自动创建包含 100 幅带有随机噪声和位移的数字图像,确保系统在无外部数据集时也能独立运行。
- 完善的图像预处理:集成了灰度化、基于 Otsu 法的二值化分割、形态学去噪(闭运算)以及统一比例的重采样(归一化)技术。
- 稳健的特征建模:将空间图像信息转化为规律的特征向量,通过 16x16 像素点的分布信息构建 256 维的特征空间。
- 智能化分类模型:采用反向传播(BP)神经网络,通过模式识别网络进行多轮迭代学习,建立精确的标签映射。
- 多维度性能评估:提供系统整体准确率、各数字类别独立准确率,并通过混淆矩阵直观展示误判分布。
- 结果可视化:支持测试集结果的图形化展示,直观对比真实标签与预测标签。
主要实现逻辑与流程- 数据集初始化与划分
系统首先生成 100 幅模拟数字图像。通过设置随机数种子保证实验的可重复性。将总数据集按 70% 的比例划分为训练集,用于优化神经网络权重;剩余 30% 作为测试集,用于验证模型的泛化能力。
- 图像预处理流程
对输入的每一幅图像顺序执行以下操作:
- 颜色空间转换:判断并确保图像处于灰度模式。
- 自动阈值分割:利用 graythresh 函数计算全局阈值,将图像转化为黑白二值图像。
- 形态学处理:使用半径为 1 的圆盘状结构元素进行闭运算,填充数字内部可能存在的孔洞,增强特征连通性。
- 尺寸归一化:将所有图像调整为 16x16 像素,消除原始图像大小差异带来的干扰。
- 特征向量提取
将完成预处理的二值化图像矩阵展开为一行长度为 256 的双精度浮点数向量。该特征向量直接代表了数字在空间中的像素分布情况,作为神经网络的输入输入层数据。
- BP 神经网络训练
- 网络构建:创建一个包含 50 个隐藏层节点的模式识别神经网络。
- 标签处理:将 0-9 的原始数字标签转换为 One-hot 编码格式,以适配多分类任务。
- 模型优化:设置训练步数为 500 次,目标误差为 1e-5,通过训练集数据不断调整网络连接权值,直至模型收敛。
- 分类判别与统计
将测试集输入训练好的模型,获取预测输出。通过寻找输出向量中的最大值索引,重新转换为 0-9 的数字标签。系统通过逐一对比预测值与真实值,计算整体正确率。
- 结果可视化展示
- 混淆矩阵:绘制热力图形式的混淆矩阵,纵轴为真实标签,横轴为预测标签,方格内的数值代表样本数量。
- 样本比对照:在可视化窗口中随机展示部分测试集样本及其处理后的二值图像,并在标题中标注预测结果是否正确。
关键算法说明- Otsu (大津法):一种自适应的阈值确定算法,通过最大化类间方差,自动寻找背景与前景的最佳分割点。
- 形态学闭运算:先膨胀后腐蚀的过程,能够平滑图像轮廓、连接细窄的间断并填充微小虚影,提升特征稳定性。
- BP 神经网络 (Backpropagation):核心算法利用梯度下降法通过反向传播调整权值,是当前最成熟的浅层神经网络分类器,适合处理非线性映射问题。
系统要求- 软件环境:MATLAB 2018b 或更高版本。
- 必备工具箱:
- Image Processing Toolbox (图像处理工具箱)
- Deep Learning Toolbox (深度学习工具箱/原神经网络工具箱)
- Statistics and Machine Learning Toolbox (统计与机器学习工具箱)
使用方法
- 启动 MATLAB 软件。
- 将系统相关的所有函数脚本置于同一个当前工作目录下。
- 在命令行窗口直接调用主函数或点击运行按钮。
- 系统将依次在命令行窗口输出:初始化状态、网络训练进度、整体准确率报告、各数字细分准确率。
- 等待训练完成后,系统会自动弹出可视化窗口,展示混淆矩阵和图像识别结果对比图。