基于matlab车辆距离识别

联系作者:微信:1075933062

需求:先提供数据库,数据库中存放多张车辆的照片,并且每个车辆的照片标出对应对的距离,然后根据车牌的尺寸实现车牌尺寸与距离之间的拟合

难点分析:

如何实现每个车牌的位置?主要是因为车子的距离有远有近,所以需要算法具有足够的鲁棒性

下面是两个极端的车牌图像:

近距离的车牌:

 远距离的车牌:

 对于这种办法没有太好兼容的方法,只能选择人为缩小ROI,或者自动降低ROI,下面选择基于外部干涉的训练方法,即,处理数据时每个图片,人为进行相对应的裁剪。

然后对数据识别后,在一个文件中记录下列数据

 然后对产生的数据进行相关拟合,当然这里的拟合可以使用 matlab 进行相关的拟合也可以使用 神经网络进行学习

下面以多项式拟合为例:

将数据导出来然后作图会发现成一个对应的关系:

 可以看见车牌的宽度&高度和距离之间存在一个相对应的关系,到这里基本已经结束了

就可以通过他们之间的关系进行神经网络的训练

然后生成一个神经网络出来

但是其实想说另外一种方法,就是w 和距离L之间一定存在着某种关系

而且h和L之间也存在着一种关系,这种关系从图上来看不是线性的关系,所以说他是非线性的关系

那其实可以使用多项式拟合的方法,将w 和L的关系找到,然后同过w 来预测距离

其实这里面w比较更准确一些,因为拍照高度不同或车牌的高度不同就会导致h相差比较大,误差也会比较大。

由于数据不好导致拟合效果不好

所以后面需要调整数据

单目视觉车辆测距的 Matlab 代码主要包括以下几个步骤: 1. 读取图像文件 ```matlab img = imread('image.jpg'); ``` 2. 提取车道线 可以使用 Canny 边缘检测算法或者 Hough 变换提取车道线。 ```matlab edges = edge(rgb2gray(img),'Canny'); [H,theta,rho] = hough(edges); P = houghpeaks(H,5,'threshold',ceil(0.3*max(H(:)))); lines = houghlines(edges,theta,rho,P,'FillGap',20,'MinLength',100); ``` 3. 计算车辆与车道线的距离 计算车辆与车道线的距离可以使用图像的透视变换,将车道线从图像平面映射到实际道路平面上,然后计算车辆与车道线的垂直距离。 ```matlab % 定义车道线的四个顶点 src = [lines(1).point1; lines(1).point2; lines(2).point1; lines(2).point2]; % 定义车道线在实际道路平面上的四个顶点 dst = [0,0; 3.7,0; 3.7,1.3; 0,1.3]; % 计算透视变换矩阵 tform = fitgeotrans(src,dst,'projective'); % 应用透视变换 road = imwarp(img,tform); % 取出车道线的部分 lane = road(1:round(size(road,1)/2),:,:); % 将车道线转换为灰度图 gray_lane = rgb2gray(lane); % 使用 Canny 边缘检测算法提取车道线的边缘 edges_lane = edge(gray_lane,'Canny'); % 计算车辆与车道线的距离 d = mean(nonzeros(edges_lane(:,round(size(edges_lane,2)/2)))); ``` 4. 显示结果 ```matlab imshow(img); hold on; plot([lines(1).point1(1), lines(1).point2(1)], [lines(1).point1(2), lines(1).point2(2)], 'LineWidth', 2, 'Color', 'green'); plot([lines(2).point1(1), lines(2).point2(1)], [lines(2).point1(2), lines(2).point2(2)], 'LineWidth', 2, 'Color', 'green'); text(10, 20, ['Distance: ', num2str(d), ' pixels'], 'Color', 'red', 'FontSize', 14); hold off; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值