2.1.1 摄像头
摄像头
更多内容,请关注:
github:https://github.com/gotonote/Autopilot-Notes.git
摄像头是目前自动驾驶车中应用和研究最广泛的传感器,其采集图像的过程最接近人类视觉系统。基于图像的物体检测和识别技术已经相当成熟,随着近几年深度学习的发展,基于深度学习的视觉感知算法已大量应用于实际生活和生产中,在某些任务上甚至已经超越人类水平。在自动驾驶车上,一般会安装多个摄像头,兼顾不同的视角和任务。
一、原理
摄像头模组利用透镜成像的原理,光线透过相机镜头后,被感光元器件捕获,通过感光芯片及相关电路来记录和传输图像信号的,如图1所示。
二、分类
(一)按摄像头的个数,分为单目摄像头、双目摄像头和多目摄像头。
1.单目摄像头
由单个相机组成,结构简单,成本低、便于标定和识别,但无法测量准确的距离。
2.双目摄像头
双目摄像头由两个摄像头组成,由于两个摄像头之间的基线距离已知,可以估算出空间距离,但配置与标定复杂,计算量相对单目相机大,通常需要GPU/FPGA加速。
3.多目摄像头
三个或以上摄像头,不同焦距摄像头的集合(解决频繁变焦,不同距离识别清晰度)。
(二) 按照摄像头的焦距,分为长焦摄像头和短焦摄像头。
1. 长焦摄像头
长焦摄像头看的距离远,在拍摄远处的景象的时候更加清晰。在自动驾驶车中,长焦摄像头用于感知远处的交通状况、红绿灯等。
2.短焦摄像头
短焦摄像头主要用于感知近处的物体,视野范围比长焦宽。障碍物识别、车道线检测和场景分割等多个任务都需要用到短焦摄像头,往往车上会集成多个短焦摄像头,覆盖整个车的视野范围。
(三)按照类型划分,除了最常见的摄像头之外,还有事件摄像头、全景摄像头、深度摄像头和红外摄像头等新型相机。
1. 事件摄像头(Event Camera)
事件摄像头中的每个像素独立响应亮度的变化,通过捕捉亮度变化成像,因此对运动物体捕捉效果非常好,并且不受曝光时间限制,成像速度非常快。普通摄像头在高速运动状态下会出现运动模糊,而事件相机则很好的解决了这个问题。目前事件摄像头的主要限制是像素大小和图像分辨率,例如DAVIS240型号的事件摄像头像素大小只有18.5x18.5µm,分辨率为240x180。如图2所示,分别是普通摄像头和事件摄像头拍摄到晚上有行人在汽车前奔跑的画面,可以看到普通摄像头出现了明显的曝光不足和运动模糊,而事件摄像头则很清晰。
2.全景摄像头(Omnidirectional Camera)
全景相机有360°的采集视野,解决了单个相机视野范围不足的问题。全景相机通过2枚或者4枚鱼眼镜头进行拍摄,然后把拍摄好的照片拼接起来,组成全景照片。全景照片技术已经非常成熟,已经应用在VR看房等场景,对导航,定位和地图制图都很有帮助。如图3所示全景照片的边缘畸变非常严重,需要算法处理之后才能正常显示。
3.深度摄像头(Range Camera)
深度摄像头能够获取环境的深度和颜色信息,目前有3种深度测距方法:结构光测距、飞行时间法和双目视觉测距。深度相机能够探测的距离非常有限,因此主要还是应用在室内场景的三维重建,如图4所示。
4.红外摄像头(Infrared Camera)
如图5所示,红外摄像头通过热成像原理对行人进行检测,目前在自动驾驶中还没有大规模应用。
(三) 参数指标
摄像头主要有以下5个参数指标。
1.像素:
摄像头像素越高,分辨率也越高,图像也就越清晰。
2.焦距:
焦距足够大,在拍摄比较远的物体时才足够清晰。
3.视场角:
视场角决定了摄像头能够看到的视野范围,广角的镜头所拍摄的视野范围更大。
4.帧率:
帧率越高,表示单位时间内拍摄的照片越多,拍摄速度越快。
5.信噪比:
信噪比越高表明产生的杂波信号越少,图像信号质量越好,单位为DB。
(四)应用
摄像头的成本低、成像像素高、刷新频率快,因此被大量应用于智能车。摄像头可以获取颜色信息,可以用于红绿灯检测、交通标志识别、场景分割等。相比于激光雷达或毫米波雷达,摄像头可以获取更远距离的信息,更早的感知环境状况,因此摄像头常应用于智能驾驶的环境感知任务中。为了获取足够的视野自动驾驶车一般会配备多个摄像头,为保证多个摄像头的拍摄时间一致,摄像头有一个触发器(Trigger),用于控制信号同时触发多个摄像头,如图7为特斯拉自动驾驶方案。
摄像头作为被动型感光设备,对光照的变化十分敏感。在强光、黑夜、雨雪、大雾等能见度低或在快速移动的情况下,获取的画质质量大幅降低。
相关文章:

2.1.1 摄像头
摄像头 更多内容,请关注: github:https://github.com/gotonote/Autopilot-Notes.git 摄像头是目前自动驾驶车中应用和研究最广泛的传感器,其采集图像的过程最接近人类视觉系统。基于图像的物体检测和识别技术已经相当成熟&#…...

linux安装mysql8且初始化表名忽略大小写
mysql8下载地址 MySQL8.0安装步骤 1、把安装包上传到linux系统,解压、重命名并移动到/usr/local/目录: cd ~ tar -xvf mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz mv mysql-8.0.32-linux-glibc2.12-x86_64/ mysql80/ mv mysql80/ /usr/local/2、在M…...
Java-长字符串加密
引言: 在数据安全领域,加密技术是保护信息不被未授权访问的重要手段。特别是在处理长字符串时,如何保证加密后的数据既安全又高效,是一个值得探讨的话题。本文将介绍几种常见的加密算法,并展示如何在Java中实现这些算法…...

使用pytest单元测试框架执行单元测试
Pytest 是一个功能强大且灵活的 Python 单元测试框架,它使编写、组织和运行测试变得更加简单。以下是 Pytest 的一些主要特点和优点: 简单易用:Pytest 提供了简洁而直观的语法,使编写测试用例变得非常容易。它支持使用 assert 语…...
Flutter 中 DraggableScrollableSheet 的属性介绍与使用
在 Flutter 中,DraggableScrollableSheet 是一个非常有用的小部件,它允许用户通过手势来拖动一个可滚动的区域,通常被用作底部弹出式面板或者随手势拖动的控件。本文将介绍 DraggableScrollableSheet 的属性以及如何在 Flutter 中使用它。 D…...

分库分表面试必背
一,背景 随着互联网的普及,使用人数和场景爆炸式增长,现在随便一个应用系统都可能达到数百万千万甚至更大数量级的数据。大量的数据带来了新的挑战,怎么快速完成增删改查的业务,是应用服务开发者最头痛的问题。面对这个…...
14个常见的Java课程设计/毕业设计合集(源码+文档)
从网上整理收集了14个常见的java系统设计源码,可以用于课程作业或者毕业设计。 1.基于java的家政预约网站系统 平台采用B/S结构,后端采用主流的Springboot框架进行开发,前端采用主流的Vue.js进行开发。 整个平台包括前台和后台两个部分。 …...
如何用 docker 部署程序?
如何用 docker 部署程序?这个问题有点笼统。 如果是MySQL、Redis这些,只需要拉取镜像,然后设置必要的配置,最终创建并运行实例即可。 如果你的应用是一个Java应用程序,使用Docker来部署它会涉及到Java特有的一些考虑…...
5G固定无线接入(FWA)
固定无线接入(FWA) 固定无线接入(Fixed Wireless Access)是使用两个固定点之间的无线电链路提供无线宽带的过程。换句话说,固定无线是一种为家庭或企业提供无线互联网接入的方式,无需铺设光纤和电缆来提供最…...

Unity ScreenPointToRay 获取到的坐标不准确
👾奇奇怪怪的 🥙问题描述🥪解决方案🍿验证代码 🥙问题描述 使用:Camera.main.ScreenPointToRay 将鼠标坐标转换成射线,然后通过:Physics.Raycast 获取到射线碰撞到的坐标࿰…...

AJAXJSON入门篇
AJAX&JSON 概念:AJAX(Asynchronous JavaScript And XML):异步的JavaScript和XML AJAX作用: 与服务器进行数据交换:通过AJAX可以给服务器发送请求,并获取服务器响应的数据 使用了AJAX和服务器进行通信,就可以使用H…...

代码随想录算法训练营29期|day54 任务以及具体安排
第九章 动态规划part11 123.买卖股票的最佳时机III // 版本一 class Solution {public int maxProfit(int[] prices) {int len prices.length;// 边界判断, 题目中 length > 1, 所以可省去if (prices.length 0) return 0;/** 定义 5 种状态:* 0: 没有操作, 1: 第一次买入…...
文件操作相关工具类
目录 1. 文件上传工具类 -- FileUploadUtils 2. 文件处理工具类 -- FileUtils 3. 媒体类型工具类 -- MimeTypeUtils 1. 文件上传工具类 -- FileUploadUtils /*** 文件上传工具类**/ public class FileUploadUtils {private static final Logger log LoggerFactory.ge…...

Spring源码:手写SpringIOC
文章目录 一、分析二、实现1、版本1:实现Bean注入IOC容器,并从容器中获取1)定义BeanDefinition2)定义BeanDefinition实现类3)定义BeanDefinitionRegistry4)定义Beanfactory5)定义默认Beanfactor…...

【软件设计师】程序猿需掌握的技能——数据流图
作为一个程序员,不仅要具备高水平的程序编码能力,还要是熟练掌握软件设计的方法和技术,具有一定的软件设计能力,一般包括软件分析设计图(常见的有数据流图,程序流程图,系统流程图,E-…...
17.3.1 像素处理
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 17.3.1 像素处理 C#处理图像,主要使用到Bitmap 类的 GetPixel方法和SetPixel方法。 Bitmap.GetPixel 方法:…...

白话微机:8.解释FPGA以及一些考研面试问题
一. 前言(更新世界观) 在“微机世界”,普通的城市(单片机)里,人又有一个别的名字叫做“数据”,人有0有1;人们也有住房,这些住房在这个世界叫做“存储器”;地上有路,这些路…...
Kubernetes基础(十八)-k8s存储对象Persistent Volume
1 什么是Persistent Volume? 在容器化应用中,Pod的生命周期是短暂的,当Pod终止时,其中的数据通常也会被销毁。为了解决这个问题,Kubernetes引入了Persistent Volume(PV)的概念。PV是集群中的一…...
用linux命令将文本格式文件转换为csv文件
文章目录 前言例: 总结 前言 用到linux命令awk 使用 awk 命令来将文本文件转换为 CSV 格式。假设你有一个以空格或制表符分隔的文本文件,以下是将其转换为 CSV 格式的命令: awk BEGIN { OFS"," } { print $1, $2, $3 } input.txt > outpu…...
C++中的binary_search函数详解
C中的std::binary_search函数详解 在C标准模板库(STL)中,std::binary_search是一个非常有用的函数,它可以在一个已排序的序列中查找一个特定的元素。这个函数的使用非常直观,但是了解其工作原理和一些注意事项可以帮助…...

C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...