文章内容:利用 MATLAB 对图像进行简单处理,包括图像的模糊、锐化、和直方图均衡化;对图像进行边缘检测;并对利用 MATLAB 对图像中的数字提取识别。

目录

  • 1 MATLAB 对图像进行简单处理
    • 1.1 模糊、锐化、和直方图均衡化
      • 1.1.1 代码
      • 1.1.2 运算结果
    • 1.2 边缘检测
      • 1.2.1 代码
      • 1.2.2 运算结果
  • 2 对图像中的数字提取识别---车牌简单识别
    • 2.1 对图像中的数字提取
      • 2.1.1 代码
      • 2.1.2 运算结果
    • 2.2 对图像中的数字识别
      • 2.2.1 代码
      • 2.2.2 识别结果
  • 3 总结

实验环境:MATLAB2020
MALTAB2020安装链接:https://mp.weixin.qq.com/s/Yo9VkjJnKB53qEgLb-Wvow

1 MATLAB 对图像进行简单处理

1.1 模糊、锐化、和直方图均衡化

1.1.1 代码

I=imread('E:\Desktop\课程\轨道信号与设备\DZYYT1011.JPG');
figure,imshow(I),title('原始图像');
I1=rgb2gray(I);
I1=imresize(I1,0.5);
figure,imshow(I1),title('灰度图像');
h=ones(5,5)/25;
I2=imfilter(I1,h);
figure,imshow(I2),title('模糊处理');
J=double(I1);
h1=fspecial('laplacian');
I3=filter2(h1,J);
figure,imshow(I3),title('锐化处理');
I4 = histeq(I1,256);
figure,imhist(I1),title('原图像直方图');
figure,imshow(I4),title('均衡化处理');
figure,imhist(I4),title('均衡化后直方图');

注意:代码第一行的文件目录是我使用的图片的位置,读者需要自己准备好图片并将代码中的目录改掉。

1.1.2 运算结果

  • 此为进行处理的原始图像:

  • 进行图像灰度化并把图像的大小进行调整为原来的一半,得到图像:

  • 对图像分别进行均值滤波器模糊、拉普拉斯算子锐化处理,得到的结果如下图:

  • 对图像进行直方图均衡化操作,得到的原始图像直方图、均衡化后的图像以及直方图如下所示:


1.2 边缘检测

1.2.1 代码

I=imread('E:\Desktop\课程\轨道信号与设备\DZYYT1011.JPG');
I1=rgb2gray(I);
I1=imresize(I1,0.5);
J=double(I1);
H=[0 1 0;1 -4 1;0 1 0];
J=conv2(J,H,'same');
J=double(I1)-J;
subplot(1,2,1);
imshow(I1),title('灰度图像');
subplot(1,2,2);
imshow(J),title('Laplace算子边缘检测');
G1 = [-1 -2 -1;0 0 0;1 2 1];
G2 = G1';
Iedge=I1;
I2x = filter2(G1,Iedge);
I2y = filter2(G2,Iedge);
I2=abs(I2x+I2y);
I22 = mat2gray(I2);
figure,imshow(mat2gray(abs(I2x))),title('水平方向边缘')
figure,imshow(mat2gray(abs(I2y))),title('垂直方向边缘')
figure,imshow(I22),title('合成边缘')
IFB=im2bw(I22,0.08);
figure,imshow(IFB),title('合成边缘二值图像')
[m n]=size(I22);
I2_edge=I22;
for i=1:m
for j=1:n
if I2_edge(i,j)>0.15
I2_edge(i,j)=1;
else if I2_edge(i,j)>0.06
I2_edge(i,j)=0.5;
end
end
end
end
figure,imshow(I2_edge),title('边缘增强后的图像');

1.2.2 运算结果

  • 可以得到Laplace算子处理得到的边缘:

  • 利用 Sobel 算子获得的图像的水平和垂直边缘。并得到两个方向的合成图像,它表示图像的综合边缘信息。





    从图中可以看出,图像用 Sobel 算子进行边缘增强后整个图像很暗,为了更清晰地表现图像的轮廓信息,对合成边缘中的边缘像素进行了增强处理,获得最后一幅所示边缘增强的结果,它由 4 个灰度级来表示。

2 对图像中的数字提取识别—车牌简单识别

数字标识部位分割,通过像素位置定位出图像中的数字。

2.1 对图像中的数字提取

2.1.1 代码

I=imread('E:\Desktop\课程\轨道信号与设备\DZYYT1011.JPG');
I1=rgb2gray(I);
I1=imresize(I1,1);
figure,imshow(I1),title('灰度图像');
I2=im2bw(I1,graythresh(I1));
figure,imshow(I2),title('二值图像');
I3=I2(2294:2330,1859:1964);
I3=imresize(I3,10);
figure,imshow(I3),title('数字部分特征提取');
A=I3;ED_type='disk';
se=strel(ED_type,12);
I4=imclose(A,se);
figure,imshow(I4),title('闭运算的结果');
figure;
J1=I4(4:320,29:214);
J1=imresize(J1,[312,179]);
A=J1;ED_type='disk';
se=strel(ED_type,8);
A=imdilate(A,se);
subplot(1,5,1),imshow(A),title('第1个数字');
J2=I4(19:330,260:410);
J2=imresize(J2,[312,179]);
A=J2;ED_type='disk';
se=strel(ED_type,8);
A=imdilate(A,se);
subplot(1,5,2),imshow(A),title('第2个数字');
J3=I4(22:335,450:635);
J3=imresize(J3,[312,179]);
A=J3;ED_type='disk';
se=strel(ED_type,8);
A=imdilate(A,se);
subplot(1,5,3),imshow(A),title('第3个数字');
J4=I4(38:347,683:860);
J4=imresize(J4,[312,179]);
A=J4;ED_type='disk';
se=strel(ED_type,8);
A=imdilate(A,se);
subplot(1,5,4),imshow(A),title('第4个数字');
J5=I4(55:363,910:1050);
J5=imresize(J5,[312,179]);
A=J5;ED_type='disk';
se=strel(ED_type,8);
A=imdilate(A,se);
subplot(1,5,5),imshow(A),title('第5个数字');

注意:代码中的数字部分特征提取及分别对每个数字的提取时,选取的像素范围需要根据自己的图片中数字的像素位置进行修改。
比如代码中第7行的" I3=I2(2294:2330,1859:1964);"。
指数字部分 I3 在 I2 内的位置范围,其中的四个数据是由两组像素坐标组成,读者可以自己分析四个数据分别对应哪种坐标。

小技巧:在MATLAB生成的图像中可以直接查看某点的像素坐标
点击“数据提示”标志,在图像中点击即可查看该点的坐标。如下图:

2.1.2 运算结果

  • 通过计算,得到图像的灰度图和二值化图像如下图所示:

  • 对具有数字标示的部位进行分割的结果如下图:

  • 对数字部分区域进行闭运算得到的结果如下图:

  • 将每个字符分割出来,用二值化表示,对每个数字图像进行膨胀操作,以将修正数字区域的边界毛刺并画出分割的结果得到5个数字的图像如下图:

2.2 对图像中的数字识别

通过对每个提取的数字与模版进行相关运算,得到它们之间的相关系数,然后对数字进行判断识别。

实现不同字符的识别
提前准备好 0-9 十个数字的标准数字模板,寻找与拍摄图片中的数字字体相同的标准模板。
小技巧:可以在 Word 里寻找相似的字体,将数字打出来再放大截屏获取。

比如下面这样的模板:

2.2.1 代码

B=imread('E:\Desktop\课程\轨道信号与设备\0.jpg');
B=rgb2gray(B);
B=imresize(im2bw(B,graythresh(B)),[312,179]);
K0=B;
B=imread('E:\Desktop\课程\轨道信号与设备\1.jpg');
B=rgb2gray(B);
B=imresize(im2bw(B,graythresh(B)),[312,179]);
K1=B;
B=imread(' E:\Desktop\课程\轨道信号与设备\2.jpg');
B=rgb2gray(B);
B=imresize(im2bw(B,graythresh(B)),[312,179]);
K2=B;
B=imread(' E:\Desktop\课程\轨道信号与设备\3.jpg');
B=rgb2gray(B);
B=imresize(im2bw(B,graythresh(B)),[312,179]);
K3=B;
B=imread(' E:\Desktop\课程\轨道信号与设备\4.jpg');
B=rgb2gray(B);
B=imresize(im2bw(B,graythresh(B)),[312,179]);
K4=B;
B=imread(' E:\Desktop\课程\轨道信号与设备\5.jpg');
B=rgb2gray(B);
B=imresize(im2bw(B,graythresh(B)),[312,179]);
K5=B;
B=imread(' E:\Desktop\课程\轨道信号与设备\6.jpg');
B=rgb2gray(B);
B=imresize(im2bw(B,graythresh(B)),[312,179]);
K6=B;
B=imread(' E:\Desktop\课程\轨道信号与设备\7.jpg');
B=rgb2gray(B);
B=imresize(im2bw(B,graythresh(B)),[312,179]);
K7=B;
B=imread(' E:\Desktop\课程\轨道信号与设备\8.jpg');
B=rgb2gray(B);
B=imresize(im2bw(B,graythresh(B)),[312,179]);
K8=B;
B=imread(' E:\Desktop\课程\轨道信号与设备\9.jpg');
B=rgb2gray(B);
B=imresize(im2bw(B,graythresh(B)),[312,179]);
K9=B;

2.2.2 识别结果

通过与模板逐个进行相关运算,比较出相关系数最大的字符,即可得到识别结果。

  • 进行相关运算的代码:
k=zeros(1,10);
k(1)=corr2(J1,K0);
k(2)=corr2(J1,K1);
k(3)=corr2(J1,K2);
k(4)=corr2(J1,K3);
k(5)=corr2(J1,K4);
k(6)=corr2(J1,K5);
k(7)=corr2(J1,K6);
k(8)=corr2(J1,K7);
k(9)=corr2(J1,K8);
k(10)=corr2(J1,K9);
m=max(k);
n=find(k==m)-1
  • 运算结果:

  • 相关系数结果比较:

    可以看出,对第一个数字 J1 与十个模版进行逐一进行相关运算,得到他们之间的相关系数数组 K,求出其中相关系数最大的数对应的 K 序号,就可以识别出图片中此数字是几。比如上述程序识别出第一个数字是 6。

  • 用同样的方法可以得到:

k=zeros(1,10);
k(1)=corr2(J2,K0);
k(2)=corr2(J2,K1);
k(3)=corr2(J2,K2);
k(4)=corr2(J2,K3);
k(5)=corr2(J2,K4);
k(6)=corr2(J2,K5);
k(7)=corr2(J2,K6);
k(8)=corr2(J2,K7);
k(9)=corr2(J2,K8);
k(10)=corr2(J2,K9);
m=max(k);
n=find(k==m)-1

运算结果:
相关系数结果比较:

所以第二个数字为 1。

  • 同理,我们可以识别出其他几个数字分别为:3、0、1。
    所以目标图像中的五个数字为:61301。

3 总结

对于图片中的其他字符,比如英文字母、汉字、或者其他符号的识别,其实与上面的数字提取识别大同小异。原理都是类似的,通过像素位置定位提取,再与模板进行相似比较。这样可能需要的模板更多,只适用于工作量比较小的情况,所以对与一些大工程识别,还需要更深入更复杂的解决方法,读者可以关注这方面的现况与发展,继续学习。
文章内容如有错误或疑问,敬请读者斧正。

MATLAB 数字图像处理---车牌简单识别【亲测有效】相关推荐

  1. 数字图像处理——车牌识别(matlab)

    本次大报告利用MATLAB函数功能,设计和实现了一个车牌识别系统.车牌识别系统的基本原理为:将手机拍摄到的包含车辆牌照的图像输入到计算机中进行预处理,再对牌照进行搜索.检测.定位,并分割出包含牌照字符 ...

  2. 《精通Matlab数字图像处理与识别》一6.2 傅立叶变换基础知识

    本节书摘来自异步社区<精通Matlab数字图像处理与识别>一书中的第6章,第6.2节,作者 张铮 , 倪红霞 , 苑春苗 , 杨立红,更多章节内容可以访问云栖社区"异步社区&qu ...

  3. 精通Matlab数字图像处理与识别nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;

    文章目录 1. 数字图像处理与识别 1.1数字图像 1.2 数字图像处理与识别 1.3 数字图像处理的预备知识 1.4 基本的图像操作 2. MATLAB基础 2.1 常用命令 2.2 矩阵 2.3 ...

  4. matlab对于处理数字图像的优点,学习MATLAB数字图像处理经验谈

    学习MATLAB数字图像处理经验谈 学习数字图像处理经验谈 (赵小川) 一.面向应用:层层分解.抓住要点 我们学习数字图像处理的最终目的还是应用,不管是用它来研制产品还是研发项目抑或是研究课题,都要用 ...

  5. MATLAB数字图像处理系统-形状分类

    MATLAB数字图像处理系统-形状分类 摘 要 数字图像处理是一门新兴技术,随着计算机硬件的发展,数字图像的实时处理已经成为可能,由于数字图像处理的各种算法的出现,使得其处理速度越来越快,能更好的为人 ...

  6. 基于数字图像处理的杂草识别

    一.课题介绍 杂草同农田作物争夺阳光和养分,严重影响了农作物的生长.为了达到除草的目的,人们开始喷洒大量的除草剂来进行除草.可是却忽略了除草剂的不当使用给人.畜以及环境造成的危害.本文从实际应用出发, ...

  7. Arduino安装与配置ESP8266开发板(超简单,亲测有效)

    文章目录 前言 一.下载Arduino 二. ESP8266环境配置(超简单,亲测有效) 三.下载验证 总结 前言 由于要上数字信号处理课程,需要安装Arduino,并在Arduino中配置ESP82 ...

  8. MATLAB数字图像处理(一)

    了解MATLAB数字图像处理 MATLAB全称是Matrix Laboratory (矩阵实验室) ,数字图像是以数字方式存储的图像.将图像在空间上离散.量化存储每一个离散位置的信息就可以得到简单的数 ...

  9. matlab空域滤波,MATLAB数字图像处理基本操作及空域滤波

    MATLAB数字图像处理基本操作及空域滤波 实验一 MATLAB 数字图像处理基本操作及空域滤波实验目的1.了解有关数字图像处理的基本概念,熟悉Matlab软件中关于数字图像处理的基本命令,掌握利用M ...

最新文章

  1. 自定义通知与系统通知的学习(详解)
  2. 动态规划:求最大公共子串
  3. 网络编程7_ multiprocessing类-管道.数据共享, 信号量,事件,进程池
  4. Android之webview与js交互
  5. 致力微商_致力于自己。 致力于公益组织。
  6. Mysql中DATE_SUB 使用方法结合查询一天内,一周内,一月内的信息实例讲解
  7. Python MySQL创建表
  8. 7 FI配置-财务会计-定义字段状态变式(总账科目组)
  9. 【Java 多线程】互斥锁,自旋锁和读写锁
  10. UE3 Light Functions (光照函数)
  11. 程序员写简历时不要犯这种低级的错误!
  12. 对是否要用Linux的思考
  13. spring框架_Spring框架
  14. 2018.10.24
  15. 《C#高级编程》笔记系列--点滴记录(持续更新中……)
  16. android开发实例学习笔记之简易相册的实现
  17. 偏门赚钱日赚1000,这个创业项目我本来不想说的....
  18. airpods二代圆点按钮是啥_AirPods 2 使用技巧(基础篇)| 如何分辨两代 AirPods?
  19. andriod—Application
  20. 2022年全球与中国低压陶瓷电容器行业发展趋势及投资战略分析报告

热门文章

  1. 滴滴官网图片切换效果
  2. 基于QT的滴滴网约车订单数据可视化分析
  3. python远程连接mysql数据库_python远程连接MySQL数据库
  4. 第二届 IstioCon 演讲议题正在征集中
  5. JavaSE学习(黑马程序员徐磊老师)day01
  6. 曼珠沙华——三途河畔的接引之花(一)
  7. 【Rust日报】 2019-04-07
  8. 【linux系列】统计Linux系统缺页的次数
  9. Oracle中的统计数量
  10. python证书微软认证费用_微软认证有哪些?费用多少?