什么是图像识别?图像识别的方法。(基于matlab的)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是图像识别?图像识别的方法。(基于matlab的)相关的知识,希望对你有一定的参考价值。
基于matlab的图像识别算法。老师问:什么是图像识别?图像识别的方法有哪些。请问怎么回答。
什么是图像识别?这个问题如果乍一问出,很多人可能都会愣一下,但一细想,便能说出很多很多的应用场景,想什么二维码啊,人脸识别啊,网站识图啊之类的。那么又有多少人去真正了解过这项技术呢?今天就让我给您简单介绍一下吧!计算机识别一张图时会将其转化为数字,通过「训练」计算机可以知道这些数字代表的含义,但早期图像识别技术还不够发达,识别很容易因图像发生微小的变化而失灵。
得益于上世纪80年代提出的卷积神经网络(简称CNN)算法,图像识别技术得到了质的飞跃。要进行图像识别,我们首先依然需要提取图像的特征,提取图像特征也即对其进行数据化分析,这一过程中需要借助的数学方法称为卷积。
以一个最简单的一维图形C为例,计算机在识别任何图像之前都需要将其转化为数字,如下那么计算机是如何做到仅凭那些数字就认出原图像的呢?这里就需要借助「卷积核」进行卷积运算,提取「图像」(即图右的数字化“图像”)的特征。卷积核类似于计算机最初将图像转化成的数字方块,但卷积核一般都是3×3或5×5的方块,3×3方块中有三个方块是有值的(即值为1),卷积核是计算机在学习的过程中,根据所得数据调节卷积核,卷积核可以有很多个。有了卷积核,我们就能通过在图形数字方块与卷积核之间做卷积运算,计算并得到特征图。
第一步卷积完成,得到初步的特征图。之后通过「池化」与「激活」,对特征图进行简化,也即对特征图中有特征部分(即有值部分)进行放大,这一步显然是为精准识别图形特征服务的。
要识别的图形越复杂,特征图得越精准,因此需要多次卷积、池化与激活。经过上述这些步骤,我们可以得到图像在各平面与维度中的特征,也可以得到轮廓、颜色等方面的特征。我们把这些特征信息接入计算机进行训练,就能判断这些众多特征图代表的图形是什么了。
当我们把那些特征信息/数据传输到计算机上,让它通过不断的「机器学习」,不断自行调整卷积核和参数,最终就能分辨出物体。这也是为什么,我们戴着口罩或眼睛,或者盖住一些脸部器官也能被机器所识别,这还是因为计算机早就收集到了我们足够多的面部特征。
科技融入生活,是我们大家都非常喜闻乐见的事情,同时,科技也改变了许多我们的工作生活方式,当然也有不少的科学技术是因为时代的背景应运而生,就好像在疫情期间出现的各种“数字哨兵”人脸识别健康码一体式设备。而汉玛智慧作为人脸识别设备和解决方案的生产厂家,也希望和大家一起努力,让更方便的科技为我们的生活增添色彩! 参考技术A http://search.ilovematlab.cn/f/discuz?mod=forum&formhash=3e8de430&srchtype=title&srhfid=216&srhlocality=forum%3A%3Aindex&sId=8585553&ts=1393895570&cuId=0&cuName=&gId=7&agId=0&egIds=&fmSign=&ugSign7=&sign=219ef8d0b29b1b0156653d8427cc8b43&charset=utf-8&source=discuz&fId=0&q=%E5%9B%BE%E5%83%8F%E8%AF%86%E5%88%AB&srchtxt=%E5%9B%BE%E5%83%8F%E8%AF%86%E5%88%AB&searchsubmit=true
去matlab中文论坛上看看
别在这里坐等别人喂你。 参考技术B 你这是现场老师在问问题吗?还是自己借本书看看比较好。
发票识别基于图像形态学处理的发票数字识别的MATLAB仿真
1.软件版本
matlab2021a
2.部分核心代码
clc;
clear;
close all;
warning off;
addpath 'func\\'
alpha = 0.9;
LL = 3;
%下面的参数需要做略微调整
% 1 :33
% 2 :48
% 3 :28
% 4 :31
% 5 :32
% 6 :32
% 7 :29
% 8 :26
% 9 :25
% 10 :44
% 11 :49
% 12 :54
% 13 :54
% 14 :48
LEN = 48;
%%
%读取发票图片
%数据格式一
SEL= 1;
I0 = imread('TICKET\\14.png');
figure;
subplot(221);
imshow(I0);
title('原始图像');
%%
%数字提取
%区域定位
[I1,I2,I3,I4] = func_area_find(I0,alpha);
subplot(222);
imshow(I2,[]);
title('待检测区域定位后图像');
subplot(223);
imshow(I3,[]);
title('待检测区域定位后图像灰度图');
%分区域进行二值化
subplot(224);
imshow(I4,[]);
title('分区域进行二值化');
%提取需要检测的车号,日期,上车时间1,3,4行
[Car_Num,DATE,DONE_Num] = func_position(I4,I2);
figure;
subplot(311);
imshow(Car_Num,[]);
title('车号');
subplot(312);
imshow(DATE,[]);
title('日期');
subplot(313);
imshow(DONE_Num,[]);
title('上车时间');
%将字符字母数字进行分割
[Car_Nums,DATEs,DONE_Nums] = func_segment(Car_Num,DATE,DONE_Num,LEN,LL);
%%
%数字识别
%二值
[Car_Nums1,DATEs1,DONE_Nums1] = func_im2bw(Car_Nums,DATEs,DONE_Nums);
[Car_Nums2,DATEs2,DONE_Nums2] = func_im2bw2(Car_Nums1,DATEs1,DONE_Nums1,SEL);
%识别
OUT1 = func_reg(Car_Nums2);
OUT2 = func_reg(DATEs2);
OUT3 = func_reg(DONE_Nums2);
OUT1
OUT2
OUT3
OUT1 = OUT1;
OUT2 = OUT2;
OUT3 = OUT3;
%保存
fid = fopen('save.txt','wt');
for i = 1:3
for j = 1:length(OUTi)
tmps = cell2mat(OUTi(j));
fprintf(fid,'%c ',tmps);
end
fprintf(fid,'\\n\\n');
end
fclose(fid);
3.操作步骤与仿真结论
对于任何发票图片,对进行分割,识别,并提取3行数据 (车号,日期,上车时间)并输出。为方便起见,车号统一为6位数字字母组合,日期输出为月日年的8位数字,上车时间为4位数字。准确率:在照片清晰情况下,能保证能输出正确,有点倾斜和模糊的情况下能保持80%或能展示即可。
这里,数字定位的仿真效果如下所示:
这里,数字提取的仿真效果如下所示:
这里,目标数字分割效果如下所示:
这里,数字字母识别效果如下所示:
4.参考文献
[1]王佳. 发票印刷体数字识别方法的研究[J]. 2016.
A09-38
5.完整源码获得方式
方式1:微信或者QQ联系博主
方式2:订阅MATLAB/FPGA教程,免费获得教程案例以及任意2份完整源码
以上是关于什么是图像识别?图像识别的方法。(基于matlab的)的主要内容,如果未能解决你的问题,请参考以下文章