博客
关于我
【手写数字识别】基于matlab知识库手写体数字识别【含Matlab源码 311期】
阅读量:159 次
发布时间:2019-02-27

本文共 3635 字,大约阅读时间需要 12 分钟。

一、简介

基于matlab的知识库的手写体数字识别。首先,读入手写数字图片进行图像归一化处理,统一尺寸,默认为24X24图像块,并通过ostu算法进行二值化;其次,对二值化图像进行图像细等形态学操作,并按照算法要求特征提取;最后,载入模版矩阵进行比对,选用欧氏距离测度,得到识别结果。

二、源代码

clc; clear all; close all;load Data.mat;[FileName,PathName,FilterIndex] = uigetfile({   '*.jpg;*.tif;*.png;*.gif', ...    '所有图像文件';...    '*.*','所有文件' },'载入数字图像',...    '.\\images\\手写数字\\t0.jpg');if isequal(FileName, 0) || isequal(PathName, 0)    return;endfileName = fullfile(PathName, FileName);I = imread(fileName);flag = 1;I1 = Normalize_Img(I);bw1 = Bw_Img(I1);bw2 = Thin_Img(bw1);bw = bw2;sz = size(bw);[r, c] = find(bw==1);rect = [min(c) min(r) max(c)-min(c) max(r)-min(r)];vs = rect(1)+rect(3)*[5/12 1/2 7/12];hs = rect(2)+rect(4)*[1/3 1/2 2/3];pt1 = [rect(1:2); rect(1:2)+rect(3:4)];pt2 = [rect(1)+rect(3) rect(2); rect(1) rect(2)+rect(4)];k1 = (pt1(1,2)-pt1(2,2)) / (pt1(1,1)-pt1(2,1));x1 = 1:sz(2);y1 = k1*(x1-pt1(1,1)) + pt1(1,2);k2 = (pt2(1,2)-pt2(2,2)) / (pt2(1,1)-pt2(2,1));x2 = 1:sz(2);y2 = k2*(x2-pt2(1,1)) + pt2(1,2);if flag    figure('Name', '数字识别', 'NumberTitle', 'Off', 'Units', 'Normalized', 'Position', [0.2 0.45 0.5 0.3]);    subplot(2, 2, 1); imshow(I, []); title('原图像', 'FontWeight', 'Bold');    subplot(2, 2, 2); imshow(I1, []); title('归一化图像', 'FontWeight', 'Bold');    hold on;    h = rectangle('Position', [rect(1:2)-1 rect(3:4)+2], 'EdgeColor', 'r', 'LineWidth', 2);    xlabel('数字区域标记');    subplot(2, 2, 3); imshow(bw1, []); title('二值化图像', 'FontWeight', 'Bold');    subplot(2, 2, 4); imshow(bw, [], 'Border', 'Loose'); title('细化图像', 'FontWeight', 'Bold');    hold on;    h = [];    for i = 1 : length(hs)        h = [h plot([1 sz(2)], [hs(i) hs(i)], 'r-')];    end    for i = 1 : length(vs)        h = [h plot([vs(i) vs(i)], [1 sz(1)], 'g-')];    end    h = [h plot(x1, y1, 'y-')];    h = [h plot(x2, y2, 'm-')];    legend([h(1) h(4) h(7) h(8)], {   '水平线', '竖直线', '左对角线', '右对角线'}, 'Location', 'BestOutside');    hold off;endfunction num = Main_Process(I, flag)if nargin < 2    flag = 1;endI1 = Normalize_Img(I);bw1 = Bw_Img(I1);bw2 = Thin_Img(bw1);bw = bw2;sz = size(bw);[r, c] = find(bw==1);rect = [min(c) min(r) max(c)-min(c) max(r)-min(r)];vs = rect(1)+rect(3)*[5/12 1/2 7/12];hs = rect(2)+rect(4)*[1/3 1/2 2/3];pt1 = [rect(1:2); rect(1:2)+rect(3:4)];pt2 = [rect(1)+rect(3) rect(2); rect(1) rect(2)+rect(4)];k1 = (pt1(1,2)-pt1(2,2)) / (pt1(1,1)-pt1(2,1));x1 = 1:sz(2);y1 = k1*(x1-pt1(1,1)) + pt1(1,2);k2 = (pt2(1,2)-pt2(2,2)) / (pt2(1,1)-pt2(2,1));x2 = 1:sz(2);y2 = k2*(x2-pt2(1,1)) + pt2(1,2);if flag    figure('Name', '数字识别', 'NumberTitle', 'Off', 'Units', 'Normalized', 'Position', [0.2 0.45 0.5 0.3]);    subplot(2, 2, 1); imshow(I, []); title('原图像', 'FontWeight', 'Bold');    subplot(2, 2, 2); imshow(I1, []); title('归一化图像', 'FontWeight', 'Bold');    hold on;    h = rectangle('Position', [rect(1:2)-1 rect(3:4)+2], 'EdgeColor', 'r', 'LineWidth', 2);    legend(h, '数字区域标记', 'Location', 'BestOutside');   'FontWeight', 'Bold');    hold on;    h = [];    for i = 1 : length(hs)        h = [h plot([1 sz(2)], [hs(i) hs(i)], 'r-')];    end    for i = 1 : length(vs)        h = [h plot([vs(i) vs(i)], [1 sz(1)], 'g-')];    end    h = [h plot(x1, y1, 'y-')];    h = [h plot(x2, y2, 'm-')];    legend([h(1) h(4) h(7) h(8)], {   '水平线', '竖直线', '左对角线', '右对角线'}, 'Location', 'BestOutside');    hold off;endv{   1} = [1:sz(2); repmat(hs(1), 1, sz(2))]';v{   2} = [1:sz(2); repmat(hs(2), 1, sz(2))]';v{   3} = [1:sz(2); repmat(hs(3), 1, sz(2))]';v{   4} = [repmat(vs(1), 1, sz(1)); 1:sz(1)]';v{   5} = [repmat(vs(2), 1, sz(1)); 1:sz(1)]';v{   6} = [repmat(vs(3), 1, sz(1)); 1:sz(1)]';v{   7} = [x1; y1]';v{   8} = [x2; y2]';

三、运行结果

在这里插入图片描述

四、备注

完整代码或者代写添加QQ 1564658423

转载地址:http://lwqf.baihongyu.com/

你可能感兴趣的文章
nacos服务注册流程
查看>>
Nacos服务部署安装
查看>>
nacos本地可以,上服务器报错
查看>>
Nacos注册Dubbo(2.7.x)以及namespace配置
查看>>
Nacos注册中心有几种调用方式?
查看>>
nacos注册失败,Feign调用失败,feign无法注入成我们的bean对象
查看>>
nacos源码 nacos注册中心1.4.x 源码 nacos源码如何下载 nacos 客户端源码下载地址 nacos discovery下载地址(一)
查看>>
nacos源码 nacos注册中心1.4.x 源码 spring cloud alibaba 的discovery做了什么 nacos客户端是如何启动的(二)
查看>>
nacos源码 nacos注册中心1.4.x 源码 如何注册服务 发送请求,nacos clinet客户端心跳 nacos 注册中心客户端如何发送的心跳 (三)
查看>>
Nacos源码分析:心跳机制、健康检查、服务发现、AP集群
查看>>
nacos看这一篇文章就够了
查看>>
Nacos简介、下载与配置持久化到Mysql
查看>>
Nacos简介和控制台服务安装
查看>>
Nacos管理界面详细介绍
查看>>
Nacos编译报错NacosException: endpoint is blank
查看>>
nacos自动刷新配置
查看>>
nacos运行报错问题之一
查看>>
Nacos部署中的一些常见问题汇总
查看>>
NACOS部署,微服务框架之NACOS-单机、集群方式部署
查看>>
Nacos配置Mysql数据库
查看>>