一、获取代码方式

获取代码方式1:
完整代码已上传我的资源: 【手写数字识别】基于matlab PCA手写数字识别【含Matlab源码 309期】

获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

备注:订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、PCA算法简介

PCA算法是基于图像重构的方法进行图像特征识别的。内有训练样本、多个测试图片以及文档说明。
识别步骤:
① 选择训练样本
② 计算样本平均数字特征,数字特征空间
③ 读取待识别数字,进行连通分量分割,确定需要识别数字个数
④ 通过判别式进行分类

三、部分源代码

clear all
clc
close all% 选择训练数据、测试数据路径(即目录TrainData和TestData)
TrainDatabasePath = uigetdir('D:\Program Files\MATLAB\R2007b\work', '选择[训练数据]路径' );
TestDatabasePath = uigetdir('D:\Program Files\MATLAB\R2007b\work', '选择[测试数据]路径');prompt = {'输入测试图像名字(1、2):'};
dlg_title = 'PCA识别输入';
num_lines= 1;
def = {'1'};TestImage  = inputdlg(prompt,dlg_title,num_lines,def);
TestImage = strcat(TestDatabasePath,'\',char(TestImage),'.jpg');
im = imread(TestImage);T = CreateDatabase(TrainDatabasePath);%创建测试数据库
[m, A, EigenPos] = PCA(T);
OutputName = Recognition(TestImage, m, A, EigenPos);%识别输出匹配图像SelectedImage = strcat(TrainDatabasePath,'\',OutputName);
SelectedImage = imread(SelectedImage);imshow(im)
title('测试图像');
figure,imshow(SelectedImage);
title('等价图像');
unction OutputName = Recognition(TestImage, m, A, EigenPos)
% 识别操作:比较两图像,通过将图像映射到特征空间,并测量两者间的欧式距离
% 参数:TestImage 输入测试图像路径
%       m   (M*Nx1) 训练数据库的均值
%      EigenPos   (M*Nx(P-1)) 训练数据的协方差矩阵特征向量
%       A     (M*NxP) 居中的图像向量矩阵
% 返回:OutputName  训练数据库中被识别出来的图像名字            % 所有居中的图像通过乘以Eigenfaces来进行映射,每一副图的映射向量将是对应的特征向量
ProjectedImages = [];
Train_Number = size(EigenPos,2);
for i = 1 : Train_Numbertemp = EigenPos'*A(:,i); %居中的图像映射ProjectedImages = [ProjectedImages temp];
end% 从测试图像中提取出PCA特征
InputImage = imread(TestImage);
temp = InputImage(:,:,1);[irow icol] = size(temp);
Difference = double(InImage)-m; % 居中的测试图像
ProjectedTestImage = EigenPos'*Difference; % 测试图像特征向量% 计算被映射的测试图像与所有居中的训练图像投影之间的欧式距离
% 设定测度图像与训练数据库中相应图像有最小距离
Euc_dist = [];
for i = 1 : Train_Numberq = ProjectedImages(:,i);temp = ( norm( ProjectedTestImage - q ) )^2;Euc_dist = [Euc_dist temp];
end

四、运行结果

五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
[4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015.

【手写数字识别】基于matlab PCA手写数字识别【含Matlab源码 309期】相关推荐

  1. 【Matlab人脸识别】人脸实时检测与跟踪【含GUI源码 673期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]人脸实时检测与跟踪[含GUI源码 673期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟逸凡,柳益君 ...

  2. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  3. 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  4. 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...

  5. 【Matlab身份证识别】身份证号码识别【含GUI源码 014期】

    一.代码运行视频(哔哩哔哩) [Matlab身份证识别]身份证号码识别[含GUI源码 014期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  6. 【Matlab人脸识别】KL变换人脸识别【含GUI源码 859期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]KL变换人脸识别[含GUI源码 859期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  7. 【Matlab指纹识别】指纹识别门禁系统【含GUI源码 1692期】

    一.代码运行视频(哔哩哔哩) [Matlab指纹识别]指纹识别门禁系统[含GUI源码 1692期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余继 ...

  8. 【Matlab指纹识别】指纹识别匹配门禁系统【含GUI源码 587期】

    一.代码运行视频(哔哩哔哩) [Matlab指纹识别]指纹识别匹配门禁系统[含GUI源码 587期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  9. 【Matlab水果识别】苹果质量检测及分级系统(带面板)【含GUI源码 1613期】

    一.代码运行视频(哔哩哔哩) [Matlab水果识别]苹果质量检测及分级系统(带面板)[含GUI源码 1613期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1 ...

  10. 【Matlab车牌识别】停车计费系统【含GUI源码 735期】

    一.代码运行视频(哔哩哔哩) [Matlab车牌识别]停车计费系统[含GUI源码 735期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MATLA ...

最新文章

  1. asp.net oracle优化,[转]ASP.NET性能优化
  2. 每天睡4小时上7门课
  3. python需要编译器吗_是否需要“使用严格”的Python编译器?
  4. 在Fedora 20下创建桌面快捷方式:
  5. 陕西2021高考成绩在哪查询,2021陕西高考成绩查询入口
  6. java paint调用,求教 如何调用这个paint
  7. Kubernetes-PersistentVolume(PV)介绍(八)
  8. 关于特殊的LCS问题的优化
  9. 学习Android 应注意的十个问题
  10. python实现用户登录界面代码_python编辑用户登入界面的实现代码
  11. 【PAT】1105 Spiral Matrix(柳婼的思想详细解读)
  12. 操作系统(四)---MS-DOS微软磁盘操作系统
  13. 唱响艾泽拉斯_情感篇
  14. gps校正 android,通过GPS时间同步Android设备?
  15. 电脑开机没反应怎么办?
  16. 这些软件测试面试真题你见过吗?
  17. swing重写右上角叉号
  18. 如何在ArcGIS中利用谷歌高程进行坡度分析
  19. 瓜子二手车实习笔试SQL
  20. 【Unity3D Shader编程】之十一 深入理解Unity5中的Standard Shader(三)屏幕像素化特效的实现

热门文章

  1. angularjs(显示和隐身) 依赖注入
  2. 《JavaScript设计模式》读书笔记模板方法模式
  3. Python学习总结之一 -- 基础篇
  4. 【日常】ICS的lab7攻略和最近生活的吐槽
  5. 构建Flex应用的10大误区
  6. 七月算法机器学习 9 推荐系统与应用
  7. 传智播客 C/C++学习笔记 在向指针所指空间copy数值,要分配内存
  8. 190220每日一句
  9. Python安装时0x80070642问题解决
  10. Atitit webdav应用场景 提升效率 小型数据管理 目录 1.1. 显示datalist 1 1.2. Ajax填充数据 1 1.3. 编辑数据 2 1.1.显示datalist