【实验目的】
1、了解环境感知传感器目标识别的目的和方法, 掌握MATLAB中的目标检测方法。
2、了解MATLAB的目标检测器和检测函数,掌握车辆识别、行人识别、交通标志识别和道路识别等目标识别方法。
【实验性质】
验证性实验。
【实验要求】
MATLAB 2020a及以上
【实验内容】
1、使用MATLAB的车辆检测器和检测函数,对图像中的车辆进行识别。
2、使用MATLAB的行人检测器和检测函数,对图像中的行人进行识别。
3、使用MATLAB的目标检测器和检测函数,对图像中的交通标志进行识别。
4、使用MATLAB的道路检测函数,对图像中的车道线进行识别。
【实验准备】
对于没有安装MATLAB环境的机器,可以在浏览器中使用MATLAB web版。
【实验步骤】
1、车辆识别
车辆识别的方法有下面几种方法:
(1)基于视觉传感器的车辆识别
(2)基于毫米波雷达的车辆识别
(3)基于视觉传感器和毫米波雷达融合的车辆识别
(4)基于激光雷达的车辆识别
MATLAB中提供了车辆检测器及检测函数,用于识别车辆。
(1)ACF车辆检测器
ACF(Aggregate Channel Features)聚合通道特征是将多个通道特征结合到一起形成一种聚合特征,结合多通道特征包含的信息,能够高效描述车辆特征。
vehicleDetectorACF为基于聚合通道特征(ACF)的车辆检测器,其调用方式如下:
detector = vehicleDetectorACF(modelName);
其中,modelName为模型名称,detector为车辆检测器
完善下面的matlab程序:
detector= _________________ vehicleDetectorACF('font-rear-view');________________; %定义车辆检测器 I=imread('____c1.png____________'); %读取图像文件 [bboxes,scores]=detect(detector,I); I=insertObjectAnnotation(I,'rectangle',bboxes,scores,'FontSize',30); _____imshow(I)______________; %显示检测结果 |
在下面表格区域内放置实验中所使用到的原始图像及识别结果图像:
原始图像 |
ACF算法车辆识别结果 |
(2)RCNN车辆检测器
RCNN(Region-based Convolutional Neural Networks)是一种结合区域提名(Region Proposal)和卷积神经网络(CNN)的目标检测方法。
vehicleDetectorFasterRCNN为基于RCNN的车辆检测函数,其调用方式如下:
detector = vehicleDetectorFasterRCNN(modelName);
其中,modelName为模型名称,模型名称为全视图(Full-View)模型,即使用的训练图像是车辆的前、后、左、右侧的图像;detector为RCNN车辆检测器。
完善下面的程序,并在MATLAB命令窗口中输入以下程序。
fasterRCNN=____vehicleDetectorFasterRCNN(‘full-view’);___ _____; I=imread('___c1.jpg___________'); [bboxes,scores]=detect(fasterRCNN,I); I=insertObjectAnnotation(I,'rectangle',bboxes,scores,'FontSize',40); imshow(I);_____________; |
%定义RCNN车辆检测器 %读取图像文件 %检测车辆 %将检测结果标注到图像 %显示检测结果 |
在下面表格区域内放置实验中所使用到的原始图像及识别结果图像:
原始图像 |
RCNN算法车辆识别结果 |
2、行人识别
MATLAB中提供了行人识别检测器及检测函数,用于行人识别。
(1)ACF行人检测器
peopleDetectorACF为基于聚合通道特征(ACF)的行人检测器函数,调用方式如下:
detector = peopleDetectorACF (modelName);
其中,modelName为模型名称,detector为ACF行人检测器。
在MATLAB命令窗口中输入以下程序,或在其它编辑器中编写后粘贴到MATLAB命令窗口,运行前需要将原始图像另存为下面代码中的原始图像文件。
、
bboxes为检测到的目标位置,scores为检测置信度分数,I为输入图像。
在下面表格区域内放置实验中所使用到的原始图像及识别结果图像:
原始图像 |
ACF行人识别算法识别结果 |
(2)基于HOG特征行人检测
vision.PeopleDetector为基于HOG特征行人检测的函数,其调用方式如下:
detector = vision.peopleDetector (modelName);
detector = vision.peopleDetector (Name, Value);
其中,modelName为模型名称,Name和Value用于设置属性,detector为行人检测器。
在MATLAB命令窗口中输入以下程序,或在其它编辑器中编写后粘贴到MATLAB命令窗口,运行前需要将原始图像另存为下面代码中的原始图像文件。
bboxes为检测到的目标位置,scores为检测置信度分数,I为输入图像。
在下面表格区域内放置实验中所使用到的原始图像及识别结果图像:
原始图像 |
HOG行人识别算法识别结果 |
3、交通标志识别
MATLAB中没有专门的检测函数,需要通过训练目标检测器进行各种交通标志的检测。
(1)ACF目标检测器
trainACFObjectDetector为训练ACF目标检测器的函数,其调用方式如下:
detector = trainACFObjectDetector (trainingData);
detector = trainACFObjectDetector (trainingData , Name, Value);
其中,trainingData为地面真实训练数据(图像),Name和Value为指定的附加选项,detector为ACF目标检测器。
在MATLAB命令窗口中输入以下程序:
在下面表格区域内放置实验中所使用到的原始图像及识别结果图像:
原始图像 |
交通标志牌识别结果 |
4、道路识别
道路识别可使用视觉传感器和激光雷达,通过视觉传感器检测出车道线,提供车辆在当前车道中的位置;而激光雷达把真实的道路转换为汽车识别的道路。
MATLAB中提供了多个道路识别检测函数:
(1)检测灰度图像中车道——segmentLaneMarkerRidge
(2)抛物线车道边界模型——parabolicLaneBoundary
(3)使用抛物线模型寻找车道线边界——findParabolicLaneBoundaries
(4)三次方车道边界模型——cubicLaneBoundaryModel
(5)使用三次方模型寻找车道线边界——findCubicLaneBoundaries
(6)求车道边界坐标值——computerBoundaryModel
(7)在图像中插入车道边界——insertLaneBoundary
下面程序使用抛物线车道边界模型识别图像中的车道线
在下面表格区域内放置实验中所使用到的原始图像及识别结果图像:
原始图像 |
交通标志牌识别结果 |