Matlab图像处理——基于BP神经网络的车牌标识识别系统

1. 数据集介绍

中国交通标志数据集:

https://nlpr.ia.ac.cn/pal/trafficdata/detection.html

该数据集包含58类交通标志。

2. 数据处理

按照文件标签,将数据集划分了58类,如下:

对应的类别信息记录如下:

限速5km/h
限速15km/h
限速30km/h
限速40km/h
限速50km/h
限速60km/h
限速70km/h
限速80km/h
禁止左转和直行
禁止右转和直行
禁止直行
禁止左转
禁止左转和右转
禁止右转
禁止超车
禁止掉头
禁止停车
禁止鸣笛
解除40km/h限速
解除50km/h限速
直行或右转
直行
左转
左转或右转
右转
左侧行驶
右侧行驶
环岛行驶
一切机动车
可以鸣笛
非机动车形式
左掉头
前方施工
前方红绿灯
注意危险
注意行人
注意非机动车
注意儿童
向右急转弯
向左急转弯
下陡坡
上陡坡
慢行
右侧T形交叉
左侧T形交叉
村庄
反向弯路
无人看守铁路道口
施工
连续弯路
有人看守铁路道口
事故易发路段
停止让行
禁止通行
禁止停车
禁止驶入
减速让行
停车检查

3.特征提取

图像的Hu的七个不变矩

function inv_m7 = invariable_moment(in_image)
% 将输入的RGB图像转换为灰度图像
image=rgb2gray(in_image);
%将图像矩阵的数据类型转换成双精度型
image=double(image);
%%%=================计算 、 、 =========================
%计算灰度图像的零阶几何矩
m00=sum(sum(image));
m10=0;
m01=0;
[row,col]=size(image);
for i=1:rowfor j=1:colm10=m10+i*image(i,j);m01=m01+j*image(i,j);end
end
%%%=================计算 、 ================================
u10=m10/m00;
u01=m01/m00;
%%%=================计算图像的二阶几何矩、三阶几何矩============
m20 = 0;m02 = 0;m11 = 0;m30 = 0;m12 = 0;m21 = 0;m03 = 0;
for i=1:rowfor j=1:colm20=m20+i^2*image(i,j);m02=m02+j^2*image(i,j);m11=m11+i*j*image(i,j);m30=m30+i^3*image(i,j);m03=m03+j^3*image(i,j);m12=m12+i*j^2*image(i,j);m21=m21+i^2*j*image(i,j);end
end
%%%=================计算图像的二阶中心矩、三阶中心矩============
y00=m00;
y10=0;
y01=0;
y11=m11-u01*m10;
y20=m20-u10*m10;
y02=m02-u01*m01;
y30=m30-3*u10*m20+2*u10^2*m10;
y12=m12-2*u01*m11-u10*m02+2*u01^2*m10;
y21=m21-2*u10*m11-u01*m20+2*u10^2*m01;
y03=m03-3*u01*m02+2*u01^2*m01;
%%%=================计算图像的归格化中心矩====================
n20=y20/m00^2;
n02=y02/m00^2;
n11=y11/m00^2;
n30=y30/m00^2.5;
n03=y03/m00^2.5;
n12=y12/m00^2.5;
n21=y21/m00^2.5;
%%%=================计算图像的七个不变矩======================
h1 = n20 + n02;
h2 = (n20-n02)^2 + 4*(n11)^2;
h3 = (n30-3*n12)^2 + (3*n21-n03)^2;
h4 = (n30+n12)^2 + (n21+n03)^2;
h5 = (n30-3*n12)*(n30+n12)*((n30+n12)^2-3*(n21+n03)^2)+(3*n21-n03)*(n21+n03)*(3*(n30+n12)^2-(n21+n03)^2);
h6 = (n20-n02)*((n30+n12)^2-(n21+n03)^2)+4*n11*(n30+n12)*(n21+n03);
h7 = (3*n21-n03)*(n30+n12)*((n30+n12)^2-3*(n21+n03)^2)+(3*n12-n30)*(n21+n03)*(3*(n30+n12)^2-(n21+n03)^2);
inv_m7= [h1 h2 h3 h4 h5 h6 h7];
end

4. BP网络训练

P_train = datasets(1:3000,1:end-1)'; %训练集特征
T_train = datasets(1:3000,end)';    %训练集标签
P_test = datasets(3001:end,1:end-1)'; %测试集特征
T_test = datasets(3001:end,end)';    %测试集标签

4. 进行测试

交通标志识别

完整代码及数据集获取:Matlab图像处理——基于BP神经网络的车牌标识识别系统 (qq.com)

如果你想要进一步了解更多的相关知识,可以关注下面公众号联系~会不定期发布相关设计内容包括但不限于如下内容:信号处理、通信仿真、算法设计、matlab appdesigner,gui设计、simulink仿真......希望能帮到你!

5a8015ddde1e41418a38e958eb12ecbd.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/5609.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024 一带一路暨金砖国家技能发展与技术创新大赛【企业信息系统安全赛项】选拔赛样题

2024 一带一路暨金砖国家技能发展与技术创新大赛--企业信息系统安全赛项任务书 第一阶段: CTF 夺旗任务一 WEBCMS任务二 杂项 MISC任务三 Linux 应急响应分析任务四 Baby_PWN任务五 流量溯源 第二阶段: 企业网络安全配置与渗透需要2023环境私信博主&…

element-plus中使用el-switch时,用‘0,1’或者0,1来代替true,false绑定

介绍 switch 开关默认用 true, false来绑定的,但是在实际的项目中,有时候根据后端的接口返回,也可能会用字符串0 和 1 ,或者数字 0,1来代替; 具体实现如下 详情: 主要实现方式是通过使用el-switch组件里的 active-val…

企业计算机服务器中了rmallox勒索病毒怎么处理,rmallox勒索病毒处理建议

在网络技术不断发展的时代,网络在企业中的应用广泛,可以为企业带来更多的便利,大大提升了企业的生产效率,但网络作为虚拟世界,在为企业提供便利的同时,也为企业数据安全带来严重威胁。近期,云天…

mysql 删除数据,导致存在表空间碎片的解决方法

mysql删除数据,导致存在表空间碎片的解决方法 1.分区表2. 使用OPTIMIZE TABLE3. 定期重建表4. 监控和维护5. 考虑其他存储引擎或数据库系统:6. 调整删除策略: 删除大量数据,尤其是频繁发生的删除操作,确实可能导致表空…

ffmpeg命令行工具安装

1. root用户安装 #!/bin/bash sudo yum install epel-release -y#由于CentOS没有官方FFmpeg rpm软件包。但是,我们可以使用第三方YUM源(Nux Dextop)完成此工作。--外网 sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro…

【YOLO改进】换遍IoU损失函数之EIoU Loss(基于MMYOLO)

EIoU损失函数 设计原理 一、IoU的局限性 IoU(Intersection over Union)是一种常用于评估目标检测模型性能的指标,特别是在计算预测边界框与真实边界框之间的重叠程度时。然而,IoU存在一些局限性,尤其是当两个边界框…

[python趣味实战]----基于python代码实现浪漫爱心 დ

正文 01-效果演示 下图是代码运行之后的爱心显示结果: 下面的视频该爱心是动态效果,较为简洁,如果需要使用,可以进行完善,这里只是一个趣味实战,下面将对代码实现进行非常详细地描述: 浪漫爱心…

Java数据结构-模拟实现ArrayList

MyArrayList顺序结构: 接口和MyArrayList重写接口 接口 接口中的方法是很多类通用的,所以可以写到接口中 public interface IList {public void add(int data) ;// 在 pos 位置新增元素public void add(int pos, int data);// 判定是否包含某个元素p…

踏上R语言之旅:解锁数据世界的神秘密码(三)

多元相关与回归分析及R使用 文章目录 多元相关与回归分析及R使用一.变量间的关系分析1.两变量线性相关系数的计算2.相关系数的假设检验 二.一元线性回归分析的R计算三、回归系数的假设检验总结 一.变量间的关系分析 变量间的关系及分析方法如下: 1.两变量线性相关…

LeetCode 727. 菱形

输入一个奇数 n n n,输出一个由 * 构成的 n n n阶实心菱形。 输入格式 一个奇数 n n n。 输出格式 输出一个由 * 构成的 n n n阶实心菱形。 具体格式参照输出样例。 数据范围 1 ≤ n ≤ 99 1≤n≤99 1≤n≤99 输入样例: 5输出样例: *…

JAVA的多态

在Java中,多态(Polymorphism)是面向对象编程的三大特性之一,它允许一个引用变量在运行时引用不同类的对象,并根据实际对象的类型来执行对应的方法。多态的存在增加了代码的灵活性和可扩展性。 多态的实现通常依赖于以下…

一文掌握python上下文管理器(with语句)

目录 一、上下文管理协议 二、with 语句 三、自定义上下文管理器 四、生成器上下文管理器 五、几个常用例子 1、自动关闭网络连接 2、临时更改目录 3、数据库事务管理 4、计时器上下文管理器 5、日志记录上下文管理器 6、资源锁定上下文管理器 7、临时修改环境变量…

windows远程访问树莓派ubuntu22.04 桌面 - NoMachine

通过nomachine 实现 windows 安装 nomachine 下载:链接:https://pan.baidu.com/s/10rGBREs-AnwRz7D7QbLQ1A?pwd8651 提取码:8651 安装:下一步 下一步 使用: 下一步 下一步 ubuntu 安装 nomachine服务 下载&#…

Java基础知识总结(81)

JUC容器 JUC基于非阻塞算法(Lock Free 无锁编程)提供了一组高并发的List、Set、Queue、Map容器。 JUC高并发容器是基于非阻塞算法实现的容器类,无锁编程算法主要通过CAS(Compare And Swap)volatile的组合实现&#x…

【C++程序员的自我修炼】string 库中常见的用法 (一)

唤起一天明月照我满怀冰雪浩荡百川流鲸饮未吞海 剑气已横秋 目录 string 库的简介 string 的一些小操作 构造函数的使用 拷贝构造的常规使用 指定拷贝内容的拷贝构造 拷贝字符串开始的前 n 个字符 用 n 个字符初始化 计算字符串的长度 string 的三种遍历方式 常规的for循环 op…

利用大型语言模型提升数字产品创新:提示,微调,检索增强生成和代理的应用

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

Linux基础part-6

一、Shell编程理论和运用 1、程序的编程风格和执行模式 编程风格(Programming Style) 过程式编程:以指令为中心,来进行写程序,数据服务于指令。(bash shell) C 以指令为中心,程序的逻辑由一系…

「笔试刷题」:字母收集

一、题目 描述 有一个 𝑛∗𝑚 的矩形方阵,每个格子上面写了一个小写字母。 小红站在矩形的左上角,她每次可以向右或者向下走,走到某个格子上就可以收集这个格子的字母。 小红非常喜欢 "love" 这四个字母。…

FFmpeg开发笔记(二十三)使用OBS Studio开启RTMP直播推流

OBS是一个开源的直播录制软件,英文全称叫做Open Broadcaster Software,广泛用于视频录制、实时直播等领域。OBS不但开源,而且跨平台,兼容Windows、Mac OS、Linux等操作系统。 OBS的官网是https://obsproject.com/,录制…

【报错处理】ib_write_bw执行遇到Couldn‘t listen to port 18515原因与解决办法?

要点 要点: ib默认使用18515端口 相关命令: netstat -tuln | grep 18515 ib_write_bw --help |grep port# server ib_write_bw --ib-devmlx5_1 --port88990 # client ib_write_bw --ib-devmlx5_0 1.1.1.1 --port88990现象: 根因&#xff…