实验三 传感器目标识别

news2024/11/18 13:55:26

【实验目的】

       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.coloradmin.cn/o/545999.html

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

相关文章

Kubernetes实战入门

文章目录 一、组件介绍(一)master主控节点(二)node工作节点 二、k8s核心概念(一)pod(二)controller(三)service 三、搭建k8s集群(一)基…

6.1 Python面向对象设计及应用

1 类和对象 对象是具有某些特性和功能的具体事物的抽象。每个对象都具有描述其特征的属性及附属于它的行为。如:一个人有姓名、性别、身高、体重等特征描述,也有走路、说话、学习、开车等行为。 每个对象都有一个类,类是创建对象实例的模板&…

基于springboot家具商城系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SpringBoot 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 开发软件:IDEA / Eclipse 是否Maven项目:是 前言 基于springboot家具商…

js数组排序的两种方法

1. 冒泡排序 原理&#xff1a;一次比较两个相邻的数&#xff0c;如果不符合规则互换位置&#xff0c;一次比较就能够将最大或最小的值放在数组最后一位继续对除【最后一位】之外的所有元素重复上述过程。 let arr [22,1,43,12,75,32]; for(let i 0; i < arr.length - 1;…

MySQL一条查询语句是怎么执行的?MySQL 的架构是什么样子?

先谈谈MySQL的架构&#xff0c;这样自然就搞清楚一条语句是怎么执行的了 首先&#xff0c;MySQL分为客户端&#xff0c;服务端&#xff0c;存储引擎 客户端&#xff1a; ● Java程序啊&#xff0c;可视化连接工具 Navicat啊等等&#xff0c;就是客户端&#xff1b; 服务端&…

Vivado 下 IP核 之ROM 读写

目录 Vivado 下 IP核 之ROM 读写 1、实验简介 2、ROM IP 核简介 3、ROM IP 核配置 3.1、创建 ROM 初始化文件 3.2、单端口 ROM 的配置 3.3、双端口 ROM 的配置 3.4、ROM IP 核的调用 &#xff08;1&#xff09;ROM 顶层模块代码 &#xff08;2&#xff09;ROM IP 核仿…

lua-5.3.6源码安装

参考博客有https://blog.csdn.net/m0_53157173/article/details/124653430和http://blog.chinaunix.net/uid-14824714-id-3125340.html。 https://www.lua.org/download.html下载网址。点击当前网址中的“download”超链接可以下载以前的版本。 cat /etc/redhat-release看一下…

408考研计算机之计算机组成与设计——计算机层次系统概述2

目录 一、 冯诺依曼机基本思想 二、计算机的功能部件 1、输出输入设备 2、存储器 3、运算器 4、控制器​​​​​​​ 三、指令执行过程的描述 一、 冯诺依曼机基本思想 首先&#xff0c;第一个问题&#xff0c;冯诺依曼是谁&#xff1f;小编第一次知道这个名字&#xff…

Qt将十二位整形十进制转换成十六进制,在转为ascii字符,并下发串口。在接受端完整还原这个十二位的十进制数。

可以按照以下步骤进行操作&#xff1a; 将十进制数123456789012转换成十六进制字符串&#xff1a; QString hexString QString("%1").arg(123456789012ull, 0, 16);其中&#xff0c;%1表示替换第1个参数&#xff0c;0表示输出的最小位数为0&#xff0c;16表示输出…

Capturing Omni-Range Context for Omnidirectional Segmentation总结笔记

Capturing Omni-Range Context for Omnidirectional Segmentation&#xff08;捕获全范围上下文进行全方位分割&#xff09; 目录 一、论文出发点 二、论文核心思想 三、论文工作中主要问题 四、方法论 五、实验 六、结论 一、论文出发点 大多数用于分析城市环境的分割…

springboot+swagger项目中,controller引入@NotEmpty等校验注解的问题

springboot项目 springbootswagger项目中&#xff0c;controller层如果使用对基本数据类型使用 NotEmpty Length 等校验注解&#xff0c;controller会获取不到值&#xff0c;加了RequestBody后可以获取到了&#xff0c;但是前端传值content-type必须是text/plain。所以建议con…

考研数据结构--树和二叉树(2)

文章目录 二叉树的遍历前序遍历中序遍历后序遍历层次遍历 不用栈的二叉树中序遍历算法Morris代码分析 二叉树的构造概述如何完成二叉树的构造**回顾****思考**各种遍历序列提供的信息二叉树遍历性质性质1性质2 线索化二叉树引入定义构造 堆堆的定义堆的性质堆的建立堆的元素插入…

GPT1解读:Improving Language Understanding by Generative Pre-Training

自然语言处理NLP是当代人工智能的关键领域&#xff0c;包含文本识别、智能问答等多个方向任务&#xff0c;通过监督学习方式一般需要大量带标签数据&#xff0c;而对某些特定任务&#xff0c;获取带标签数据成本非常高。GPT通过大量的未标记文本数据来学习一个通用预训练&#…

ZiKiT DICOM 存档(PACS)模态服务器 Crack

ZiKiT结合了DICOM存档&#xff08;PACS&#xff09;&#xff0c;模态工作列表服务器和HL7消息代理&#xff0c;它们共享相同的数据库并相互通信。 最新版本 – ZiKiT 2020 ZiKiT 提供动态映射规则和消息结构定义&#xff0c;同时保持合规性并遵守标准。该套件使非程序员能够在…

电动力学:电偶极辐射场

电磁辐射的产生条件 存在时变源&#xff08;时变的电荷源、时变的电流源&#xff0c;或时变的电磁场&#xff09;时变源的频率应足够高&#xff08;辐射系统的尺寸大小和电磁波波长差不多时&#xff0c;才有可能产生明显的辐射效应&#xff09;波源电路必须开放&#xff08;源电…

Android 如何获取有效的DeviceId

目录 前言官方唯一标识符建议使用广告 ID使用实例 ID 和 GUID不要使用 MAC 地址标识符特性常见用例和适用的标识符 解决方案DeviceIdANDROID_IDMac地址UUID补充 总结 前言 从 Android 10 开始&#xff0c;应用必须具有 READ_PRIVILEGED_PHONE_STATE 特许权限才能访问设备的不可…

新手建站:腾讯云轻量服务器安装宝塔镜像和使用方法

腾讯云轻量应用服务器宝塔面板怎么用&#xff1f;轻量应用服务器如何安装宝塔面板&#xff1f;在镜像中选择宝塔Linux面板腾讯云专享版&#xff0c;在轻量服务器防火墙中开启8888端口号&#xff0c;然后远程连接到轻量服务器执行宝塔面板账号密码查询命令&#xff0c;最后登录和…

Java内存模型介绍

Java作为一种面向对象的&#xff0c;跨平台语言&#xff0c;其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似&#xff0c;很多人会傻傻分不清楚。比如本文要讨论的JVM内存结构、Java内存模型和Java对象模型&#xff0c;这就是三个截然不同的概念&…

系列四、vue3 初始化项目(图形化界面方式)

一、启动UI界面 vue ui 二、创建项目 2.1、在此创建项目 2.2、创建新项目-详情配置 2.3、创建新项目-预设 2.4、创建新项目-功能 2.5、创建新项目-配置 2.6、运行项目 任务》serve》运行》启动app 2.7、首页 三、安装element-plus 3.1、步骤 ①、运行 vue ui 命令&#…

【C++初阶】想要编译器为你干活吗?来试试模板吧(模板初阶)

一.泛型编程 引入 我们之前都写过交换函数Swap&#xff0c;例如这样的&#xff1a; //交换两个整型 void Swap(int*x1, int *x2) {int tmp *x1;*x1 *x2;*x2 tmp;} 如果要交换其它的类型该怎么办呢&#xff1f; 那只能当个CV工程师了&#xff0c;然后再修修改改&#xff0c;…