实验三 传感器目标识别

news/2024/7/21 4:08:28 标签: matlab, 图像处理, 计算机视觉

【实验目的】

       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

    下面程序使用抛物线车道边界模型识别图像中的车道线

 

在下面表格区域内放置实验中所使用到的原始图像及识别结果图像:

原始图像

交通标志牌识别结果


http://www.niftyadmin.cn/n/341215.html

相关文章

浅谈 KingbaseES 和 SQLServer 中的 instead of 触发器

本文基于Kingbase和SqlServer的INSTEAD OF 触发器主要功能特点进行对比浅析,同时针对SqlServer 的INSTEAD OF 触发器提出了多种kingbase环境的等价代码方案。 一,SqlServer 的INSTEAD OF 触发器 它通常用来替换触发动作的。 1,其中一个显著特…

【Leetcode -561.数组拆分 -566.重塑矩阵】

Leetcode Leetcode -561.数组拆分Leetcode -566.重塑矩阵 Leetcode -561.数组拆分 题目:给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如(a1, b1), (a2, b2), …, (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大。 返…

vue3。 Cannot use JSX unless the ‘–jsx’ flag is provided. ts(17004)

react用tsx或者jsx很常见,也有配套的配置 那如果是vue呢? 默认是没问题的,可是我用了jsdoc,并开启了checkjs,然后vscode就爆红了 谷歌,百度,一个晚上 查到的答案: 推荐我新增tsco…

基于Freertos的ESP-IDF开发——5.使用按键[不带消抖、带消抖、长按短按识别]

基于Freertos的ESP-IDF开发——5.使用按键[不带消抖、带消抖、长按短按识别] 0. 前言1. 确定GPIO引脚2. 触发函数(不带消抖)3. 触发函数(带消抖)4. 长按和短按识别5.其他FreeRtos文章 0. 前言 这一节我们来学习使用按键操作。包括带消抖和不带消抖。 由于之前已经学习过FreeR…

Redis系统学习篇-02

目录 redis进阶使用 redis作为数据库、缓存的区别 缓存常见问题、面试回答思路 redis的持久化 参考文档(redis.net.cn):Redis 教程_redis教程 系统学习01篇,总结起来就是,可以把redis想象成一个key/value的hashmap,只不过val…

FFmpeg命令实战(上)

标题 1.FFmpeg命令行环境搭建2.ffmpeg,ffplay和ffprobe的区别3.ffmpeg处理流程4.ffmpeg命令分类查询5.ffplay播放控制6.ffplay命令选项 1.FFmpeg命令行环境搭建 1.到达FFmpeg的github,选择下载需要的版本,这里以windows举例。 这里有两个压缩包,ffmpeg-master-lat…

web缓存Squid代理服务

缓存网页对象,减少重复请求 squid代理服务器,主要提供缓存加速,应用层过滤控制的功能 代理工作机制 1.代替客户机向网站请求数据,从而可以隐藏用户的真实ip地址 2.将获得的网页数据(静态web元素)保存到缓…

跟我学c++中级篇——模板嵌套中的依赖限定

一、模板应用的几种情况 在模板的开发中,经常会遇到一些比较少见的用法,特别是本身对模板开发应用比较少的,可能看到这些用法头就有些蒙圈。这种情况在模板嵌套中比较常见,本篇就是把这些比较少见的用法分析一下,结合…