观文有感 之 RoboMaster视觉教程(1)摄像头

闲来垂钓碧溪上。今天钓到一篇RM视觉摄像头的好文,记录一下笔记:

文章目录

  • 观文有感 之 RoboMaster视觉教程(1)摄像头
    • 一、摄像头参数
      • (一)卷帘曝光和全局曝光
      • (二)曝光
      • (三)Gamma矫正
      • (四)帧率与摄像头选型
    • 二、镜头
    • 三、滤光片

一、摄像头参数

摄像头是机器视觉中最重要的部分,选择一款成像质量好、稳定可靠的摄像头可以极大地减少识别算法设计的难度。主流的摄像头分为CMOS摄像头和CCD摄像头,一般CCD摄像头体积大造价高精度高,CMOS摄像头造价低,体积功耗等参数低于CCD。
摄像机主要具有以下几个参数:曝光方式(卷帘曝光、全局曝光),分辨率,最大帧率,快门速度,接口类型(usb2.0、usb3.0、GigE、CSI等),光谱响应类型(像元传感器对不同光波的敏感特性)

(一)卷帘曝光和全局曝光

通常我们在网上买到的摄像头都是卷帘曝光的,日常使用时很难看出这两种摄像头的区别,但是在对速度要求高的领域,这两种曝光方式的优劣就很明显了,尤其是对于廉价的卷帘曝光摄像头,果冻效应更加明显。除了果冻效应外,全局曝光的摄像头在低曝光时间的情况下颜色饱和度更高,在颜色方面全局曝光摄像头完爆卷帘曝光。

(二)曝光

在装甲识别中,曝光度是决定能否成功识别的关键因素。当我们拍摄能够自主发光的物体时,降低曝光时间可以减少环境光的影响。

(三)Gamma矫正

在降低装甲板的误识别率过程中,我们可以通过各种约束来过滤误匹配的情况,而更聪明的方法是识别装甲板中间的数字,但是当我们把摄像头的曝光调到很低(降低曝光时间可以减少环境光的影响,能够自主发光的区域无大影响,但是不能自主发光的区域会变模糊,甚至从视野中消失)的情况下数字就看不见了,这时候怎么办呢?一种不太容易想到的方法是提高摄像头的Gamma值,当Gamma提高时图像中亮度较低的区域的亮度会被提高,图像中被提高亮度的部分为灰色而红色部分的灯条没有明显变化,由于灰色的rgb值相同,所以只要将图片的两个通道相减就能够去除背景的干扰,若要识别红色只需要用红色通道减去蓝色通道。在找到灯条后框出数字区域给识别函数识别即可。

那么,摄像头的Gamma矫正究竟做了什么呢?其实就是将图像中的每一个像素点通过一个幂函数进行转换,幂函数指数的导数就是gamma值,函数图像如下:

从曲线中可以看到输入数值较小时,输出对输入的比值较大,由此可以提高图像暗处的亮度。

(四)帧率与摄像头选型

在RoboMaster比赛中,识别速度越快越好,所以摄像头帧率也是越高越好。但是,带宽的限制帧率和分辨率通常相互制约,帧率高,对应的分辨率就低。(分辨率是屏幕图像的精密度,指显示器所能显示的像素多少,由于屏幕上的点线面都是由像素组成的,显示器可显示的像素越多,画面就越精细,同样的屏幕区域内能显示的信息也越多,所以分辨率是一个非常重要的性能指标)

二、镜头

不同焦距的镜头所呈现的视角不一样,焦距越大,视角越窄。可以通过选择合适的镜头来提高图像的成像质量,在实测中战车枪管上使用6mm或8mm左右的镜头比较合适。

三、滤光片

由于装甲板只有红色和蓝色,所以识别时只需要把这两种光过滤出来即可,其实不用滤光片也可以,通过将图片由BGR色彩空间转换到HSV识别颜色,或者红蓝通道相减都可以达到过滤颜色的目的。而滤光片主要是用来配合黑白摄像头使用的(滤光片是用来选取所需辐射波段的光学器件,由塑料或玻璃片中加入特种染料制成,红色滤光片只能透过红光)

RoboMaster视觉教程(1)摄像头相关推荐

  1. RoboMaster视觉教程(6)目标位置解算(PnP求解目标与摄像头间的相对位置)

    RoboMaster视觉教程(6)目标位置解算(PnP求解目标与摄像头间的相对位置) 概览 算法原理 solvePnP的使用流程 实验:测量二维码相对于摄像头的位置 RoboMaster视觉程序中的位 ...

  2. RoboMaster视觉教程(5)目标位置解算(通过像素点获取转角)

    RoboMaster视觉教程(5)目标位置解算(通过像素点获取转角) 概览 直接使用像素坐标的缺陷 摄像头标定 根据小孔成像原理得到需要的转角 角度测量验证 概览 在识别到目标后,有一个很重要的问题: ...

  3. RoboMaster视觉教程(8)串口通讯

    RoboMaster视觉教程(8)串口通讯 概览 DJI开源代码串口部分 东南大学开源代码串口部分 Qt编写串口助手 概览 这几天一直在做一个小车打算做好了再往下写的,但是由于我两年没写stm32的程 ...

  4. RoboMaster视觉教程(4)装甲板识别算法

    RoboMaster视觉教程(4)装甲板识别算法 概览 下面是一些资料链接,篇篇经典! 装甲板识别 test_sentry.cpp 分析一下装甲板 识别函数 int ArmorDetector::de ...

  5. RoboMaster视觉教程(2)妙算(Nvidia Tegra K1)系统配置

    RoboMaster视觉教程(2)妙算(Nvidia Tegra K1)系统配置 概览 妙算资料链接汇总 妙算系统重置/克隆/恢复 妙算安装系统后要做的事 妙算通过网线直连电脑并共享电脑网络 妙算远程 ...

  6. RoboMaster视觉教程(3)视觉识别程序整体框架

    RoboMaster 视觉教程(3)视觉识别程序框架 概览 多线程 除了多线程,还可使用多进程 接下来以东南大学的开源程序为例讲一下他们的整体架构 下面进入正题 项目配置文件概览 ImgProdCon ...

  7. RoboMaster视觉教程(7)风车能量机关识别

    RoboMaster视觉教程(7)风车能量机关识别 今年的能量机关在识别的难度上降低了,难在怎么打中.能量机关我只写了识别部分,因为没有道具可以做测试,焊灯条的同学焊的千辛万苦也没焊出可以用的灯条.当 ...

  8. RoboMaster视觉教程(9)风车能量机关识别2

    RoboMaster视觉教程(9)风车能量机关识别2 之前说能量机关的教程有很多了打算不写了,但是总有同学来问,想了想还是写一下吧. 风车能量机关我只做了识别,因为准备分区赛的时候没有实物可以测试就一 ...

  9. videocapture 保存图片_RoboMaster视觉教程OpenCV(二)读取视频图像与转换

    RoboMaster视觉教程OpenCV(二)读取视频图像与转换 在Robomaster比赛中,读取视频或者图像是极其重要的.因为我们需要在热身赛的时候用摄像头保存一段视频或者图片.之后根据视频中的光 ...

最新文章

  1. python语言基础汇总
  2. 图灵计算机模型意义,图灵机有什么意义_学习图灵机模型中遇到的问题
  3. java学习(150):文本缓冲流
  4. 数字信号处理实验(三):离散时间傅里叶变换
  5. [教程]centos下设置网卡
  6. 从java中安装webolgc_Javaweb| 文件下载
  7. java服务器端socket,java 服务器端socket
  8. 遇到 java.io.EOFException 异常的解决办法
  9. 快速突破面试算法之字符串表篇
  10. 《零秒工作》的一些总结
  11. 组态王通过Modbus TCP与ESP32通讯
  12. JGJ254-2011 建筑施工竹脚手架安全技术规范 免费下载
  13. Python 日历模块 calendar
  14. 阿里云ECS服务器配置全攻略
  15. 【Linux】命令别名与历史命令(alise\history)
  16. 计算机在化学中的应用总结感悟,计算机在化学中的应用实践总结报告
  17. mycat原理及分表分库入门
  18. VMW15虚拟机安装macOS
  19. win7资源管理器从计算机开始,Win7系统资源管理器在哪里?
  20. Foundation5(十五)

热门文章

  1. Unity 物理系统:Rigidbody(刚体)
  2. 服务器网卡驱动如何修复,阿信博客-deepin装好系统后无法识别网卡问题修复-安装网卡驱动...
  3. Latex之subfloat表格跨页问题
  4. 关于java 上传的音频或视频文件获取时长及视频封面
  5. 什么才是真正的架构设计?(一)
  6. Mybatis无法查询中文
  7. c语言字符的计数器,如何用C语言编写计数器.docx
  8. 排序算法 | 冒泡算法的图解、实现、复杂度和稳定性分析与优化
  9. 如何查看域名解析生效
  10. Docker的Container简介