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:row
    for j=1:col
        m10=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:row
    for j=1:col
        m20=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

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
基于BP神经网络车牌识别是一种常见的图像识别技术,它可以通过训练神经网络来实现对车牌图像的自动识别。下面是一个基于BP神经网络车牌识别的简要介绍: 1. 数据准备:首先,需要准备一组包含车牌图像和对应标签(即车牌号码)的训练数据集。这些图像可以来自于不同的来源,如摄像头捕捉的实时图像或者已有的车牌图像数据库。 2. 特征提取:对于每个车牌图像,需要进行特征提取,将其转换为神经网络可以处理的数值形式。常用的特征提取方法包括灰度化、二值化、边缘检测等。 3. 网络设计:设计一个BP神经网络模型,用于训练和识别车牌图像。该网络通常包含输入层、隐藏层和输出层。输入层接收特征提取后的图像数据,隐藏层用于提取图像的高级特征,输出层用于输出识别结果。 4. 网络训练:使用准备好的训练数据集对BP神经网络进行训练。训练过程中,通过反向传播算法不断调整网络的权重和偏置,使得网络能够逐渐准确地识别车牌图像。 5. 网络测试与评估:使用另外一组测试数据对训练好的神经网络进行测试,并评估其识别准确率和性能指标,如精确度、召回率等。 6. 车牌识别:当网络训练完成后,可以将新的车牌图像输入到网络中进行识别。网络将输出一个预测结果,即识别出的车牌号码。 以上是基于BP神经网络车牌识别的简要介绍。如果你对其中的某个环节有更具体的问题,我可以为你提供更详细的解答。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MatpyMaster

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值